From 22207e646b504c269c0484e1883fa8b9de5a80c8 Mon Sep 17 00:00:00 2001 From: Pritam Banerjee Date: Sat, 15 Oct 2016 14:40:20 -0700 Subject: [PATCH 001/399] BAEL 317: Setting up EJB EJB Client and EJB Remote --- ejb/ejb-client/pom.xml | 28 +++++++ .../com/baeldung/ejb/client/EJBClient.java | 71 ++++++++++++++++ .../resources/jboss-ejb-client.properties | 8 ++ .../baeldung/ejb/setup/test/EJBSetupTest.java | 16 ++++ ejb/ejb-remote/pom.xml | 25 ++++++ .../com/baeldung/ejb/tutorial/HelloWorld.java | 8 ++ .../baeldung/ejb/tutorial/HelloWorldBean.java | 18 ++++ .../src/main/resources/META-INF/ejb-jar.xml | 7 ++ ejb/pom.xml | 83 +++++++++++++++++++ 9 files changed, 264 insertions(+) create mode 100755 ejb/ejb-client/pom.xml create mode 100755 ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java create mode 100755 ejb/ejb-client/src/main/resources/jboss-ejb-client.properties create mode 100755 ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java create mode 100755 ejb/ejb-remote/pom.xml create mode 100755 ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java create mode 100755 ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java create mode 100755 ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml create mode 100755 ejb/pom.xml diff --git a/ejb/ejb-client/pom.xml b/ejb/ejb-client/pom.xml new file mode 100755 index 0000000000..d1d245ba6d --- /dev/null +++ b/ejb/ejb-client/pom.xml @@ -0,0 +1,28 @@ + + + 4.0.0 + + com.baeldung.ejb + ejb + 1.0-SNAPSHOT + + ejb-client + EJB3 Client Maven + EJB3 Client Maven + + + + org.wildfly + wildfly-ejb-client-bom + pom + import + + + com.baeldung.ejb + ejb-remote + ejb + + + + \ No newline at end of file diff --git a/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java b/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java new file mode 100755 index 0000000000..5426bbdc81 --- /dev/null +++ b/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java @@ -0,0 +1,71 @@ +package com.baeldung.ejb.client; + +import java.util.Properties; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +import com.baeldung.ejb.tutorial.HelloWorld; + +public class EJBClient { + + public EJBClient() { + } + + private Context context = null; + + public String getEJBRemoteMessage() { + EJBClient main = new EJBClient(); + try { + // 1. Obtaining Context + main.createInitialContext(); + // 2. Generate JNDI Lookup name and caste + HelloWorld helloWorld = main.lookup(); + return helloWorld.getHelloWorld(); + } catch (NamingException e) { + e.printStackTrace(); + return ""; + } finally { + try { + main.closeContext(); + } catch (NamingException e) { + e.printStackTrace(); + } + } + } + + public HelloWorld lookup() throws NamingException { + + // The app name is the EAR name of the deployed EJB without .ear suffix. + // Since we haven't deployed the application as a .ear, the app name for + // us will be an empty string + final String appName = ""; + final String moduleName = "remote"; + final String distinctName = ""; + final String beanName = "HelloWorld"; + final String viewClassName = HelloWorld.class.getName(); + final String toLookup = "ejb:" + appName + "/" + moduleName + + "/" + distinctName + "/" + beanName + "!" + viewClassName; + return (HelloWorld) context.lookup(toLookup); + } + + public void createInitialContext() throws NamingException { + Properties prop = new Properties(); + prop.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); + prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); + prop.put(Context.PROVIDER_URL, "http-remoting://127.0.0.1:8080"); + prop.put(Context.SECURITY_PRINCIPAL, "pritamtest"); + prop.put(Context.SECURITY_CREDENTIALS, "iamtheki9g"); + prop.put("jboss.naming.client.ejb.context", false); + + context = new InitialContext(prop); + } + + public void closeContext() throws NamingException { + if (context != null) { + context.close(); + } + } + +} diff --git a/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties b/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties new file mode 100755 index 0000000000..e17d8ba17e --- /dev/null +++ b/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties @@ -0,0 +1,8 @@ +remote.connections=default +remote.connection.default.host=127.0.0.1 +remote.connection.default.port=8080 +remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false +remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false +remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS=${host.auth:JBOSS-LOCAL-USER} +remote.connection.default.username=pritamtest +remote.connection.default.password=iamtheki9g \ No newline at end of file diff --git a/ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java b/ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java new file mode 100755 index 0000000000..1a8165cee6 --- /dev/null +++ b/ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java @@ -0,0 +1,16 @@ +package com.baeldung.ejb.setup.test; + +import static org.junit.Assert.*; +import org.junit.Test; +import com.baeldung.ejb.client.EJBClient; +import com.baeldung.ejb.tutorial.HelloWorldBean; + +public class EJBSetupTest { + + @Test + public void testEJBClient() { + EJBClient ejbClient = new EJBClient(); + HelloWorldBean bean = new HelloWorldBean(); + assertEquals(bean.getHelloWorld(), ejbClient.getEJBRemoteMessage()); + } +} diff --git a/ejb/ejb-remote/pom.xml b/ejb/ejb-remote/pom.xml new file mode 100755 index 0000000000..14c02edd0e --- /dev/null +++ b/ejb/ejb-remote/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + com.baeldung.ejb + ejb + 1.0-SNAPSHOT + + ejb-remote + ejb + + ejb-remote + + + org.jboss.spec.javax.ejb + jboss-ejb-api_3.2_spec + provided + + + + + ejb-remote + + \ No newline at end of file diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java new file mode 100755 index 0000000000..79684de1a8 --- /dev/null +++ b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java @@ -0,0 +1,8 @@ +package com.baeldung.ejb.tutorial; + +import javax.ejb.Remote; + +@Remote +public interface HelloWorld { + String getHelloWorld(); +} diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java new file mode 100755 index 0000000000..6c5ee34afe --- /dev/null +++ b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java @@ -0,0 +1,18 @@ +package com.baeldung.ejb.tutorial; + +import javax.annotation.Resource; +import javax.ejb.SessionContext; +import javax.ejb.Stateless; + +@Stateless(name = "HelloWorld") +public class HelloWorldBean implements HelloWorld { + + @Resource + private SessionContext context; + + @Override + public String getHelloWorld() { + return "Welcome to EJB Tutorial!"; + } + +} diff --git a/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml b/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml new file mode 100755 index 0000000000..d6c2200198 --- /dev/null +++ b/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml @@ -0,0 +1,7 @@ + + + remote + + diff --git a/ejb/pom.xml b/ejb/pom.xml new file mode 100755 index 0000000000..49ddc694e9 --- /dev/null +++ b/ejb/pom.xml @@ -0,0 +1,83 @@ + + + 4.0.0 + com.baeldung.ejb + ejb + 1.0-SNAPSHOT + pom + ejb + EJB Tutorial + + + + jboss-public-repository-group + JBoss Public Maven Repository Group + http://repository.jboss.org/nexus/content/groups/public/ + default + + true + never + + + true + never + + + + + + + + com.baeldung.ejb + ejb-remote + 1.0-SNAPSHOT + ejb + + + + org.jboss.spec + jboss-javaee-7.0 + 1.0.1.Final + pom + import + + + + org.wildfly + wildfly-ejb-client-bom + 10.1.0.Final + pom + import + + + + + + + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + maven-ejb-plugin + 2.4 + + 3.2 + + + + + + + + ejb-remote + ejb-client + + \ No newline at end of file From 66b618d99de96a53c69170aab5b4dc3352c34a13 Mon Sep 17 00:00:00 2001 From: tschiman Date: Mon, 24 Oct 2016 20:13:27 -0600 Subject: [PATCH 002/399] Changing config to user properties to set up security --- .../bootstrap/config/ConfigApplication.java | 6 ++--- .../bootstrap/config/SecurityConfig.java | 22 ++++--------------- .../src/main/resources/application.properties | 5 ++++- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java index 847c86f881..c51819dfe5 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java @@ -9,7 +9,7 @@ import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableConfigServer @EnableEurekaClient public class ConfigApplication { - public static void main(String[] args) { - SpringApplication.run(ConfigApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(ConfigApplication.class, args); + } } diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index 315ab8b543..914efe8160 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -1,8 +1,6 @@ package com.baeldung.spring.cloud.bootstrap.config; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @@ -11,20 +9,8 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ - auth.inMemoryAuthentication().withUser("configUser").password("configPassword").roles("SYSTEM"); - } - - @Override - protected void configure(HttpSecurity http) throws Exception { - http - .authorizeRequests() - .anyRequest().hasRole("SYSTEM") - .and() - .httpBasic() - .and() - .csrf() - .disable(); - } + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests().anyRequest().hasRole("SYSTEM").and().httpBasic().and().csrf().disable(); + } } diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties index 6c47d001f4..5b905929a9 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties @@ -5,4 +5,7 @@ spring.cloud.config.server.git.uri=file:///${user.home}/application-config eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ +security.user.name=configUser +security.user.password=configPassword +security.user.role=SYSTEM \ No newline at end of file From bad9a35061a799fd06a86e33748e7f14f20fc919 Mon Sep 17 00:00:00 2001 From: tschiman Date: Mon, 24 Oct 2016 20:40:06 -0600 Subject: [PATCH 003/399] Modify formatting. --- .../discovery/DiscoveryApplication.java | 6 +- .../bootstrap/discovery/SecurityConfig.java | 68 +++++++------------ .../bootstrap/gateway/GatewayApplication.java | 32 ++++----- .../bootstrap/gateway/SecurityConfig.java | 32 +++------ .../resource/ResourceApplication.java | 42 ++++++------ .../bootstrap/resource/SecurityConfig.java | 26 ++----- 6 files changed, 76 insertions(+), 130 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java index 32bcdc90b6..4ac445b083 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java @@ -7,7 +7,7 @@ import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class DiscoveryApplication { - public static void main(String[] args) { - SpringApplication.run(DiscoveryApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(DiscoveryApplication.class, args); + } } diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index 3c874bf581..0d03d159a0 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -15,52 +15,30 @@ import org.springframework.security.config.http.SessionCreationPolicy; @Order(1) public class SecurityConfig extends WebSecurityConfigurerAdapter { - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ - auth.inMemoryAuthentication().withUser("discUser").password("discPassword").roles("SYSTEM"); - } - - @Override - protected void configure(HttpSecurity http) throws Exception { - http - .sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.ALWAYS) - .and() - .requestMatchers() - .antMatchers("/eureka/**") - .and() - .authorizeRequests() - .antMatchers("/eureka/**").hasRole("SYSTEM") - .anyRequest().denyAll() - .and() - .httpBasic() - .and() - .csrf() - .disable(); - } - - @Configuration - //no order tag means this is the last security filter to be evaluated - public static class AdminSecurityConfig extends WebSecurityConfigurerAdapter { - - @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - auth.inMemoryAuthentication(); + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication().withUser("discUser").password("discPassword").roles("SYSTEM"); } - @Override protected void configure(HttpSecurity http) throws Exception { - http - .sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.NEVER) - .and() - .httpBasic() - .disable() - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN") - .antMatchers("/info","/health").authenticated() - .anyRequest().denyAll() - .and() - .csrf() - .disable(); + @Override + protected void configure(HttpSecurity http) throws Exception { + http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.ALWAYS).and().requestMatchers().antMatchers("/eureka/**").and().authorizeRequests().antMatchers("/eureka/**").hasRole("SYSTEM").anyRequest().denyAll().and().httpBasic().and() + .csrf().disable(); + } + + @Configuration + //no order tag means this is the last security filter to be evaluated + public static class AdminSecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication(); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and().httpBasic().disable().authorizeRequests().antMatchers(HttpMethod.GET, "/").hasRole("ADMIN").antMatchers("/info", "/health").authenticated().anyRequest() + .denyAll().and().csrf().disable(); + } } - } } diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java index a3d2df5357..b5ae1e4e7b 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java @@ -18,23 +18,23 @@ import java.util.List; @EnableZuulProxy @EnableEurekaClient public class GatewayApplication { - public static void main(String[] args) { - SpringApplication.run(GatewayApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(GatewayApplication.class, args); + } - @Autowired(required = false) - private List configurations = new ArrayList<>(); + @Autowired(required = false) + private List configurations = new ArrayList<>(); - @Bean - @LoadBalanced RestTemplate restTemplate(){ - return new RestTemplate(); - } + @Bean + @LoadBalanced + RestTemplate restTemplate() { + return new RestTemplate(); + } - - @Bean - public SpringClientFactory springClientFactory() { - SpringClientFactory factory = new SpringClientFactory(); - factory.setConfigurations(this.configurations); - return factory; - } + @Bean + public SpringClientFactory springClientFactory() { + SpringClientFactory factory = new SpringClientFactory(); + factory.setConfigurations(this.configurations); + return factory; + } } diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java index 0b8923391f..e83933feb0 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java @@ -11,28 +11,14 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - auth.inMemoryAuthentication() - .withUser("user").password("password").roles("USER") - .and() - .withUser("admin").password("admin").roles("ADMIN"); - } + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication().withUser("user").password("password").roles("USER").and().withUser("admin").password("admin").roles("ADMIN"); + } - @Override - protected void configure(HttpSecurity http) throws Exception { - http - .authorizeRequests() - .antMatchers("/resource/hello/cloud").permitAll() - .antMatchers("/eureka/**").hasRole("ADMIN") - .anyRequest().authenticated() - .and() - .formLogin() - .and() - .logout().permitAll() - .logoutSuccessUrl("/resource/hello/cloud").permitAll() - .and() - .csrf() - .disable(); - } + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests().antMatchers("/resource/hello/cloud").permitAll().antMatchers("/eureka/**").hasRole("ADMIN").anyRequest().authenticated().and().formLogin().and().logout().permitAll().logoutSuccessUrl("/resource/hello/cloud").permitAll() + .and().csrf().disable(); + } } diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java index e12d43f46b..accef18a14 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java @@ -11,31 +11,31 @@ import org.springframework.web.bind.annotation.RestController; @EnableEurekaClient @RestController public class ResourceApplication { - public static void main(String[] args) { - SpringApplication.run(ResourceApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(ResourceApplication.class, args); + } - @Value("${resource.returnString}") - private String returnString; + @Value("${resource.returnString}") + private String returnString; - @Value("${resource.user.returnString}") - private String userReturnString; + @Value("${resource.user.returnString}") + private String userReturnString; - @Value("${resource.admin.returnString}") - private String adminReturnString; + @Value("${resource.admin.returnString}") + private String adminReturnString; - @RequestMapping("/hello/cloud") - public String getString() { - return returnString; - } + @RequestMapping("/hello/cloud") + public String getString() { + return returnString; + } - @RequestMapping("/hello/user") - public String getUserString() { - return userReturnString; - } + @RequestMapping("/hello/user") + public String getUserString() { + return userReturnString; + } - @RequestMapping("/hello/admin") - public String getAdminString() { - return adminReturnString; - } + @RequestMapping("/hello/admin") + public String getAdminString() { + return adminReturnString; + } } diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java index 66d154dafb..8cea8cf080 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java @@ -1,8 +1,6 @@ package com.baeldung.spring.cloud.bootstrap.resource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @@ -11,24 +9,8 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { - @Autowired - public void configureGlobal1(AuthenticationManagerBuilder auth) throws Exception { - //try in memory auth with no users to support the case that this will allow for users that are logged in to go anywhere - auth.inMemoryAuthentication(); - } - - @Override - protected void configure(HttpSecurity http) throws Exception { - http - .httpBasic() - .disable() - .authorizeRequests() - .antMatchers("/hello/cloud").permitAll() - .antMatchers("/hello/user").hasAnyRole("USER", "ADMIN") - .antMatchers("/hello/admin").hasRole("ADMIN") - .anyRequest().authenticated() - .and() - .csrf() - .disable(); - } + @Override + protected void configure(HttpSecurity http) throws Exception { + http.httpBasic().disable().authorizeRequests().antMatchers("/hello/cloud").permitAll().antMatchers("/hello/user").hasAnyRole("USER", "ADMIN").antMatchers("/hello/admin").hasRole("ADMIN").anyRequest().authenticated().and().csrf().disable(); + } } From 8cfe4cc39f68042981a47fcedb9688a32375177a Mon Sep 17 00:00:00 2001 From: tschiman Date: Mon, 24 Oct 2016 20:42:52 -0600 Subject: [PATCH 004/399] Modify formatting. --- .../config/src/main/resources/application.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties index 5b905929a9..e97a6a4094 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties @@ -6,6 +6,7 @@ spring.cloud.config.server.git.uri=file:///${user.home}/application-config eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ +#Security User Config security.user.name=configUser security.user.password=configPassword security.user.role=SYSTEM \ No newline at end of file From 52def2bf97134bf4c39f7696738cce3864e94f05 Mon Sep 17 00:00:00 2001 From: tschiman Date: Mon, 24 Oct 2016 20:46:02 -0600 Subject: [PATCH 005/399] Modify formatting. --- .../spring/cloud/bootstrap/config/SecurityConfig.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index 914efe8160..f008dff90e 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -11,6 +11,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - http.authorizeRequests().anyRequest().hasRole("SYSTEM").and().httpBasic().and().csrf().disable(); + http + .authorizeRequests().anyRequest().hasRole("SYSTEM").and() + .httpBasic().and() + .csrf().disable(); } } From 3e7760f047761dd1f433a4f96fb8a8ac2a35b951 Mon Sep 17 00:00:00 2001 From: tschiman Date: Mon, 24 Oct 2016 20:49:43 -0600 Subject: [PATCH 006/399] Modify formatting. --- .../bootstrap/discovery/SecurityConfig.java | 18 +++++++++++++++--- .../bootstrap/gateway/SecurityConfig.java | 15 ++++++++++++--- .../bootstrap/resource/SecurityConfig.java | 9 ++++++++- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index 0d03d159a0..a55508b1e7 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -22,7 +22,13 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.ALWAYS).and().requestMatchers().antMatchers("/eureka/**").and().authorizeRequests().antMatchers("/eureka/**").hasRole("SYSTEM").anyRequest().denyAll().and().httpBasic().and() + http + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.ALWAYS).and() + .requestMatchers().antMatchers("/eureka/**").and() + .authorizeRequests() + .antMatchers("/eureka/**").hasRole("SYSTEM") + .anyRequest().denyAll().and() + .httpBasic().and() .csrf().disable(); } @@ -37,8 +43,14 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and().httpBasic().disable().authorizeRequests().antMatchers(HttpMethod.GET, "/").hasRole("ADMIN").antMatchers("/info", "/health").authenticated().anyRequest() - .denyAll().and().csrf().disable(); + http + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and() + .httpBasic().disable() + .authorizeRequests() + .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN") + .antMatchers("/info", "/health").authenticated() + .anyRequest().denyAll().and() + .csrf().disable(); } } } diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java index e83933feb0..417b61d238 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java @@ -13,12 +13,21 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - auth.inMemoryAuthentication().withUser("user").password("password").roles("USER").and().withUser("admin").password("admin").roles("ADMIN"); + auth.inMemoryAuthentication() + .withUser("user").password("password").roles("USER").and() + .withUser("admin").password("admin").roles("ADMIN"); } @Override protected void configure(HttpSecurity http) throws Exception { - http.authorizeRequests().antMatchers("/resource/hello/cloud").permitAll().antMatchers("/eureka/**").hasRole("ADMIN").anyRequest().authenticated().and().formLogin().and().logout().permitAll().logoutSuccessUrl("/resource/hello/cloud").permitAll() - .and().csrf().disable(); + http + .authorizeRequests() + .antMatchers("/resource/hello/cloud").permitAll() + .antMatchers("/eureka/**").hasRole("ADMIN") + .anyRequest().authenticated().and() + .formLogin().and() + .logout().permitAll() + .logoutSuccessUrl("/resource/hello/cloud").permitAll().and() + .csrf().disable(); } } diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java index 8cea8cf080..813956676e 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java @@ -11,6 +11,13 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - http.httpBasic().disable().authorizeRequests().antMatchers("/hello/cloud").permitAll().antMatchers("/hello/user").hasAnyRole("USER", "ADMIN").antMatchers("/hello/admin").hasRole("ADMIN").anyRequest().authenticated().and().csrf().disable(); + http + .httpBasic().disable() + .authorizeRequests() + .antMatchers("/hello/cloud").permitAll() + .antMatchers("/hello/user").hasAnyRole("USER", "ADMIN") + .antMatchers("/hello/admin").hasRole("ADMIN") + .anyRequest().authenticated().and() + .csrf().disable(); } } From b48cf1e1cedeef1ec413133557273ef078a5a90a Mon Sep 17 00:00:00 2001 From: tschiman Date: Mon, 24 Oct 2016 20:49:58 -0600 Subject: [PATCH 007/399] Modify formatting. --- .../config/src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties index e97a6a4094..212586f0ea 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties @@ -6,7 +6,7 @@ spring.cloud.config.server.git.uri=file:///${user.home}/application-config eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ -#Security User Config + security.user.name=configUser security.user.password=configPassword security.user.role=SYSTEM \ No newline at end of file From e6b8446dd314980011cfcb4b03545f9d4502be3f Mon Sep 17 00:00:00 2001 From: tschiman Date: Mon, 24 Oct 2016 21:26:14 -0600 Subject: [PATCH 008/399] Modify formatting. --- .../bootstrap/discovery/SecurityConfig.java | 5 -- .../filter/SessionSavingZuulPreFilter.java | 48 +++++++++---------- 2 files changed, 24 insertions(+), 29 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index a55508b1e7..b8cb66e3e4 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -36,11 +36,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { //no order tag means this is the last security filter to be evaluated public static class AdminSecurityConfig extends WebSecurityConfigurerAdapter { - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - auth.inMemoryAuthentication(); - } - @Override protected void configure(HttpSecurity http) throws Exception { http diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/filter/SessionSavingZuulPreFilter.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/filter/SessionSavingZuulPreFilter.java index 9a2b5bab74..1c90ba2e12 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/filter/SessionSavingZuulPreFilter.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/filter/SessionSavingZuulPreFilter.java @@ -14,34 +14,34 @@ import javax.servlet.http.HttpSession; @Component public class SessionSavingZuulPreFilter extends ZuulFilter { - private Logger log = LoggerFactory.getLogger(this.getClass()); + private Logger log = LoggerFactory.getLogger(this.getClass()); - @Autowired - private SessionRepository repository; + @Autowired + private SessionRepository repository; - @Override public boolean shouldFilter() { - return true; - } + @Override + public boolean shouldFilter() { + return true; + } - @Override - public Object run() { - RequestContext context = RequestContext.getCurrentContext(); + @Override + public Object run() { + RequestContext context = RequestContext.getCurrentContext(); + HttpSession httpSession = context.getRequest().getSession(); + Session session = repository.getSession(httpSession.getId()); - HttpSession httpSession = context.getRequest().getSession(); - Session session = repository.getSession(httpSession.getId()); + context.addZuulRequestHeader("Cookie", "SESSION=" + httpSession.getId()); + log.info("ZuulPreFilter session proxy: {}", session.getId()); + return null; + } - context.addZuulRequestHeader("Cookie", "SESSION=" + httpSession.getId()); + @Override + public String filterType() { + return "pre"; + } - log.info("ZuulPreFilter session proxy: {}", session.getId()); - - return null; - } - - @Override public String filterType() { - return "pre"; - } - - @Override public int filterOrder() { - return 0; - } + @Override + public int filterOrder() { + return 0; + } } From b61b82cd2a31831c43df1993d36997c762e21907 Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Fri, 28 Oct 2016 14:32:20 +0700 Subject: [PATCH 009/399] Change text/xml to application/xml --- .../cxf/jaxrs/implementation/CourseRepository.java | 2 +- .../cxf/jaxrs/implementation/ServiceLiveTest.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java index a2fd6be435..4a826b664d 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java @@ -8,7 +8,7 @@ import java.util.List; import java.util.Map; @Path("baeldung") -@Produces("text/xml") +@Produces("application/xml") public class CourseRepository { private Map courses = new HashMap<>(); diff --git a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java index 29c34ae16b..cf7af5070a 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java @@ -39,7 +39,7 @@ public class ServiceLiveTest { final HttpPut httpPut = new HttpPut(BASE_URL + "3"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("non_existent_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); - httpPut.setHeader("Content-Type", "text/xml"); + httpPut.setHeader("Content-Type", "application/xml"); final HttpResponse response = client.execute(httpPut); assertEquals(404, response.getStatusLine().getStatusCode()); @@ -50,7 +50,7 @@ public class ServiceLiveTest { final HttpPut httpPut = new HttpPut(BASE_URL + "1"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("unchanged_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); - httpPut.setHeader("Content-Type", "text/xml"); + httpPut.setHeader("Content-Type", "application/xml"); final HttpResponse response = client.execute(httpPut); assertEquals(304, response.getStatusLine().getStatusCode()); @@ -61,7 +61,7 @@ public class ServiceLiveTest { final HttpPut httpPut = new HttpPut(BASE_URL + "2"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("changed_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); - httpPut.setHeader("Content-Type", "text/xml"); + httpPut.setHeader("Content-Type", "application/xml"); final HttpResponse response = client.execute(httpPut); assertEquals(200, response.getStatusLine().getStatusCode()); @@ -76,7 +76,7 @@ public class ServiceLiveTest { final HttpPost httpPost = new HttpPost(BASE_URL + "1/students"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("conflict_student.xml"); httpPost.setEntity(new InputStreamEntity(resourceStream)); - httpPost.setHeader("Content-Type", "text/xml"); + httpPost.setHeader("Content-Type", "application/xml"); final HttpResponse response = client.execute(httpPost); assertEquals(409, response.getStatusLine().getStatusCode()); @@ -87,7 +87,7 @@ public class ServiceLiveTest { final HttpPost httpPost = new HttpPost(BASE_URL + "2/students"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("created_student.xml"); httpPost.setEntity(new InputStreamEntity(resourceStream)); - httpPost.setHeader("Content-Type", "text/xml"); + httpPost.setHeader("Content-Type", "application/xml"); final HttpResponse response = client.execute(httpPost); assertEquals(200, response.getStatusLine().getStatusCode()); From f66494192ca6068147bbd2068a97a3bcdb691f5f Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Sun, 30 Oct 2016 21:30:18 +0700 Subject: [PATCH 010/399] Revert "Change text/xml to application/xml" This reverts commit b61b82cd2a31831c43df1993d36997c762e21907. --- .../cxf/jaxrs/implementation/CourseRepository.java | 2 +- .../cxf/jaxrs/implementation/ServiceLiveTest.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java index 4a826b664d..a2fd6be435 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/main/java/com/baeldung/cxf/jaxrs/implementation/CourseRepository.java @@ -8,7 +8,7 @@ import java.util.List; import java.util.Map; @Path("baeldung") -@Produces("application/xml") +@Produces("text/xml") public class CourseRepository { private Map courses = new HashMap<>(); diff --git a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java index cf7af5070a..29c34ae16b 100644 --- a/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java +++ b/apache-cxf/cxf-jaxrs-implementation/src/test/java/com/baeldung/cxf/jaxrs/implementation/ServiceLiveTest.java @@ -39,7 +39,7 @@ public class ServiceLiveTest { final HttpPut httpPut = new HttpPut(BASE_URL + "3"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("non_existent_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); - httpPut.setHeader("Content-Type", "application/xml"); + httpPut.setHeader("Content-Type", "text/xml"); final HttpResponse response = client.execute(httpPut); assertEquals(404, response.getStatusLine().getStatusCode()); @@ -50,7 +50,7 @@ public class ServiceLiveTest { final HttpPut httpPut = new HttpPut(BASE_URL + "1"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("unchanged_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); - httpPut.setHeader("Content-Type", "application/xml"); + httpPut.setHeader("Content-Type", "text/xml"); final HttpResponse response = client.execute(httpPut); assertEquals(304, response.getStatusLine().getStatusCode()); @@ -61,7 +61,7 @@ public class ServiceLiveTest { final HttpPut httpPut = new HttpPut(BASE_URL + "2"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("changed_course.xml"); httpPut.setEntity(new InputStreamEntity(resourceStream)); - httpPut.setHeader("Content-Type", "application/xml"); + httpPut.setHeader("Content-Type", "text/xml"); final HttpResponse response = client.execute(httpPut); assertEquals(200, response.getStatusLine().getStatusCode()); @@ -76,7 +76,7 @@ public class ServiceLiveTest { final HttpPost httpPost = new HttpPost(BASE_URL + "1/students"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("conflict_student.xml"); httpPost.setEntity(new InputStreamEntity(resourceStream)); - httpPost.setHeader("Content-Type", "application/xml"); + httpPost.setHeader("Content-Type", "text/xml"); final HttpResponse response = client.execute(httpPost); assertEquals(409, response.getStatusLine().getStatusCode()); @@ -87,7 +87,7 @@ public class ServiceLiveTest { final HttpPost httpPost = new HttpPost(BASE_URL + "2/students"); final InputStream resourceStream = this.getClass().getClassLoader().getResourceAsStream("created_student.xml"); httpPost.setEntity(new InputStreamEntity(resourceStream)); - httpPost.setHeader("Content-Type", "application/xml"); + httpPost.setHeader("Content-Type", "text/xml"); final HttpResponse response = client.execute(httpPost); assertEquals(200, response.getStatusLine().getStatusCode()); From 945bb5673238795846127d9090c8c789c0abfea9 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Wed, 2 Nov 2016 19:27:44 +0100 Subject: [PATCH 011/399] PDF to X --- pdf/.gitignore | 1 + pdf/pom.xml | 100 ++++++++++++++++++ .../com/baeldung/pdf/PDF2HTMLExample.java | 49 +++++++++ .../com/baeldung/pdf/PDF2ImageExample.java | 38 +++++++ .../com/baeldung/pdf/PDF2TextExample.java | 65 ++++++++++++ .../com/baeldung/pdf/PDF2WordExample.java | 61 +++++++++++ pdf/src/main/resources/pdf.pdf | Bin 0 -> 829637 bytes pdf/src/output/pdf.docx | Bin 0 -> 7017 bytes pom.xml | 9 +- 9 files changed, 319 insertions(+), 4 deletions(-) create mode 100644 pdf/.gitignore create mode 100644 pdf/pom.xml create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java create mode 100644 pdf/src/main/resources/pdf.pdf create mode 100644 pdf/src/output/pdf.docx diff --git a/pdf/.gitignore b/pdf/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/pdf/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/pdf/pom.xml b/pdf/pom.xml new file mode 100644 index 0000000000..078a364e77 --- /dev/null +++ b/pdf/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + pdf + pdf + http://maven.apache.org + + + UTF-8 + 3.5.1 + + + + + junit + junit + 3.8.1 + test + + + + org.apache.pdfbox + pdfbox + 2.0.3 + + + + org.apache.pdfbox + pdfbox-tools + 2.0.3 + + + + net.sf.cssbox + pdf2dom + 1.6 + + + + com.itextpdf + itextpdf + 5.5.10 + + + + org.apache.poi + poi + 3.15 + + + + org.apache.poi + poi-ooxml + 3.15 + + + + org.apache.poi + poi-scratchpad + 3.15 + + + + org.apache.xmlgraphics + batik-transcoder + 1.8 + + + + + pdf + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + + diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java new file mode 100644 index 0000000000..72877a465a --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java @@ -0,0 +1,49 @@ +package com.baeldung.pdf; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.Writer; + +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.fit.pdfdom.PDFDomTree; + +public class PDF2HTMLExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateHTMLFromPDF(FILENAME); + } catch (IOException | ParserConfigurationException e) { + e.printStackTrace(); + } + } + + private static void generateHTMLFromPDF(String filename) throws ParserConfigurationException, IOException { + System.out.println("Creating HTML file from a PDF file: " + filename); + PDDocument pdf = null; + try { + // load the PDF file using PDFBox + pdf = PDDocument.load(new File(filename)); + // create the DOM parser + PDFDomTree parser = new PDFDomTree(); + // parse the file and get the DOM Document + Writer output = new PrintWriter("src/output/pdf.html", "utf-8"); + parser.writeText(pdf, output); + output.close(); + } finally { + if (pdf != null) { + try { + pdf.close(); + } catch (IOException e) { + System.err.println("Error: " + e.getMessage()); + } + } + } + System.out.println("Done."); + } + +} diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java new file mode 100644 index 0000000000..4cfaea26b9 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java @@ -0,0 +1,38 @@ +package com.baeldung.pdf; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.ImageType; +import org.apache.pdfbox.rendering.PDFRenderer; +import org.apache.pdfbox.tools.imageio.ImageIOUtil; + +public class PDF2ImageExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateImageFromPDF(FILENAME, "png"); + generateImageFromPDF(FILENAME, "jpeg"); + generateImageFromPDF(FILENAME, "gif"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void generateImageFromPDF(String filename, String extension) throws IOException { + System.out.println("Creating " + extension + " image from a PDF file: " + filename); + PDDocument document = PDDocument.load(new File(filename)); + PDFRenderer pdfRenderer = new PDFRenderer(document); + for (int page = 0; page < document.getNumberOfPages(); ++page) { + System.out.println("Page number: " + (page + 1) + " is being rendered"); + BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); + ImageIOUtil.writeImage(bim, "src/output/pdf" + "-" + (page + 1) + "." + extension, 300); + } + document.close(); + System.out.println("Done."); + } +} diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java new file mode 100644 index 0000000000..eafdc07560 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java @@ -0,0 +1,65 @@ +package com.baeldung.pdf; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; + +import org.apache.pdfbox.cos.COSDocument; +import org.apache.pdfbox.io.RandomAccessFile; +import org.apache.pdfbox.pdfparser.PDFParser; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.text.PDFTextStripper; + +public class PDF2TextExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateTxtFromPDF(FILENAME); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void generateTxtFromPDF(String filename) throws IOException { + System.out.println("Parsing text from PDF file " + filename); + String parsedText = null; + PDFTextStripper pdfStripper; + PDDocument pdDoc = null; + COSDocument cosDoc = null; + + File f = new File(filename); + PDFParser parser = new PDFParser(new RandomAccessFile(f, "r")); + + try { + parser.parse(); + cosDoc = parser.getDocument(); + pdfStripper = new PDFTextStripper(); + pdDoc = new PDDocument(cosDoc); + parsedText = pdfStripper.getText(pdDoc); + } catch (Exception e) { + System.err.println("An exception occured in parsing the PDF Document."); + e.printStackTrace(); + try { + if (cosDoc != null) + cosDoc.close(); + if (pdDoc != null) + pdDoc.close(); + } catch (Exception e1) { + e.printStackTrace(); + } + } + System.out.println("Writing PDF text to output text file"); + try { + PrintWriter pw = new PrintWriter("src/output/pdf.txt"); + pw.print(parsedText); + pw.close(); + } catch (Exception e) { + System.out.println("An exception occured in writing the pdf text to file."); + e.printStackTrace(); + } + System.out.println("Done."); + } + +} diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java new file mode 100644 index 0000000000..6777ea9c45 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java @@ -0,0 +1,61 @@ +package com.baeldung.pdf; + +import java.io.FileOutputStream; +import java.io.IOException; + +import org.apache.poi.xwpf.usermodel.BreakType; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; + +import com.itextpdf.text.pdf.PdfReader; +import com.itextpdf.text.pdf.parser.PdfReaderContentParser; +import com.itextpdf.text.pdf.parser.SimpleTextExtractionStrategy; +import com.itextpdf.text.pdf.parser.TextExtractionStrategy; + +public class PDF2WordExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateDocFromPDF(FILENAME); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void generateDocFromPDF(String filename) throws IOException { + System.out.println("Creating a docx file from a PDF file: " + filename); + // Create the word document + XWPFDocument doc = new XWPFDocument(); + + // Open the pdf file + String pdf = filename; + PdfReader reader = new PdfReader(pdf); + PdfReaderContentParser parser = new PdfReaderContentParser(reader); + + // Read the PDF page by page + for (int i = 1; i <= reader.getNumberOfPages(); i++) { + TextExtractionStrategy strategy = parser.processContent(i, new SimpleTextExtractionStrategy()); + // Extract the text + String text = strategy.getResultantText(); + // Create a new paragraph in the word document, adding the extracted + // text + XWPFParagraph p = doc.createParagraph(); + XWPFRun run = p.createRun(); + run.setText(text); + // Adding a page break + run.addBreak(BreakType.PAGE); + } + // Write the word document + FileOutputStream out = new FileOutputStream("src/output/pdf.docx"); + doc.write(out); + // Close all open files + out.close(); + reader.close(); + doc.close(); + System.out.println("Done."); + } + +} diff --git a/pdf/src/main/resources/pdf.pdf b/pdf/src/main/resources/pdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f45d226b39874bc6e8db65fde28713f2a7d26140 GIT binary patch literal 829637 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®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Ǖ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 N~?8 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%0AB!iNESYgNe__3Msr45VWL=-{_2Fs3lK9A|6rz zIl4?9BeA)TUqch-rLA^>LQ}rUCP@uj-$Z_%8So+DMw{W?R=iXF)o3#u{#~gcs3Bj_ z-y=7_bCWuqi{E_*et#ySbCw$%lRwRNhB4xaW^H}jxf7cmY57qyl|(GpqaTg(^C z=<}&68a!>Ri-1UhC%~+*t>{TRYXtt_ovNaa7sKiplWi4K%lsc3uss3csjF))uqD>k z?Bv1I-Wu(DAghi8K(1nNjS`B-+;nw0C@XrbM8VJWb{zE8+_DAMq{*TiRy`WV>sBNh_BJ4!Sri|w^>xalZCu!|z` zu)fy9nN}KL*KFy@opaAbJkE~~bI~KdWFQ6>T|Nw81=w=OEbeexVf7N1DTbPL*6$@q zsQD6BdNO%^k;!nV_YFs=KD5#*i%Lx!gUY9H%Kw!teLso~|27b00yV=Gk87 znV!+bYv3G+xBOp2VW6dm`AEZ=) zUE^C?^li)6W-wgd4a65Oh8cP4TdIsNujw;*DBR6qoblLf_bEV6SZf{ zwYF7YZKJt%Yi@0`TZ_RDt+jQn1_^U*lQReM?IVfUXXmQcY4vH#TwGdht&_7$6Nf`U z?wJKLUj*6%fHt3B5-OgtvFn%!$A@b8U2OShjkxw?%@E^R1aVfc6+xak z$01@18>~K#R|-?b!#v#`#`|KP-dof4e&?m$+ZGs9O+s^ZQW(d3VwuAJ%E+eD93+bksg*+PpB0B=t=e%o^ZNSy1?oq8C}R_l8! zSALI@b%pnu@K}?G9RG-9^#+JF!?8NKsH4sh55?~x?CE0#7joqVb07rk_2R6W+h+?n zvcv(zXM=15scJE0sIUD2sW1wN@&;fv57v~8YOWLINbwIswIP4Lmh4x}i7FuREOt#!5~n#)8TxaUga?R}79rlrq|0wfXbaK(3M6rD zAcWDo3Efv+8E)rRCEz&}!ozfx7t~i*ftbt6RNs-o6VWAfVWtR-dyk&*Zu#b}Im|s@ zU6&>(vg1>Jkd1ef8n{mjzrO(ZftZS|=EF(#RpSi!4i1fVfpv`?-1 zVriTiCS4zsG+`1cM4D>*`)Yed4t{Wf9}=;+wMyh#UzLDq+7|+1WXac&(+J4OcQlgB z&t3gAqQ5Xd1;j$UX!F0Mr$j9P5odoZ24P7ZLXan+zY!w);brdX^r^8D_C*P`5n&zo zi5gmo2hykHkU}2MM&$4j=3*Kkf&!VUWr(gJRmW~FWLSo~h8#FT*kuh8WD%R$*O|^> z?9TdmC=xoz{-P|mn@Pv1t1)3tV}GKtWcx|I=AmwY6?Vn?0w19f6{|<$Dkj>fW9RC) z$6*fyo+obP1_QW+d1*~t@WroLjb4P3^&_3il9QFy&PTj&31teggFrkn0$|1d z+g}Wta9ob2Ooog<{!rbFo=-{$kkx5+KyC zq!y)GW&Bq3B?}9)0F5Wjf>=Z$cY4XhScIdqj8#0aYjWZ;w3W0hzwt;{m=J`khk!JZ z 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 ES(SnXdZlm8qET27{O6_*0b*(rumqV}wnm+PNW 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

|OY8gR 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 SqRYEPa?ABg$W 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

u>JIlhLYmhyvG-XA~m+f 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%0DN{cys*|NNeV_q1ZZQsqEM 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

cw=BK#cIT;%FASEen=V-Z3B*Z+_48H_*J?%?6 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

Oe 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

1>+6K=>?RJPu$ze1!WYEgVa-m@2sSH6A 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 HE$06R$PiZp literal 0 HcmV?d00001 diff --git a/pdf/src/output/pdf.docx b/pdf/src/output/pdf.docx new file mode 100644 index 0000000000000000000000000000000000000000..78178706f658093045f820525e02d57782532378 GIT binary patch literal 7017 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 82aa022269..ef24531698 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,5 @@ - + + 4.0.0 com.baeldung parent-modules @@ -143,6 +143,7 @@ xml xmlunit2 xstream - + pdf + - + \ No newline at end of file From 1150cbd406dcb62738a28abde5e480d624fa4935 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Wed, 2 Nov 2016 19:27:44 +0100 Subject: [PATCH 012/399] PDF to X --- pdf/.gitignore | 1 + pdf/pom.xml | 100 ++++++++++++++++++ .../com/baeldung/pdf/PDF2HTMLExample.java | 49 +++++++++ .../com/baeldung/pdf/PDF2ImageExample.java | 38 +++++++ .../com/baeldung/pdf/PDF2TextExample.java | 65 ++++++++++++ .../com/baeldung/pdf/PDF2WordExample.java | 61 +++++++++++ pdf/src/main/resources/pdf.pdf | Bin 0 -> 829637 bytes pom.xml | 9 +- 8 files changed, 319 insertions(+), 4 deletions(-) create mode 100644 pdf/.gitignore create mode 100644 pdf/pom.xml create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java create mode 100644 pdf/src/main/resources/pdf.pdf diff --git a/pdf/.gitignore b/pdf/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/pdf/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/pdf/pom.xml b/pdf/pom.xml new file mode 100644 index 0000000000..078a364e77 --- /dev/null +++ b/pdf/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + pdf + pdf + http://maven.apache.org + + + UTF-8 + 3.5.1 + + + + + junit + junit + 3.8.1 + test + + + + org.apache.pdfbox + pdfbox + 2.0.3 + + + + org.apache.pdfbox + pdfbox-tools + 2.0.3 + + + + net.sf.cssbox + pdf2dom + 1.6 + + + + com.itextpdf + itextpdf + 5.5.10 + + + + org.apache.poi + poi + 3.15 + + + + org.apache.poi + poi-ooxml + 3.15 + + + + org.apache.poi + poi-scratchpad + 3.15 + + + + org.apache.xmlgraphics + batik-transcoder + 1.8 + + + + + pdf + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + + diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java new file mode 100644 index 0000000000..72877a465a --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java @@ -0,0 +1,49 @@ +package com.baeldung.pdf; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.Writer; + +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.fit.pdfdom.PDFDomTree; + +public class PDF2HTMLExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateHTMLFromPDF(FILENAME); + } catch (IOException | ParserConfigurationException e) { + e.printStackTrace(); + } + } + + private static void generateHTMLFromPDF(String filename) throws ParserConfigurationException, IOException { + System.out.println("Creating HTML file from a PDF file: " + filename); + PDDocument pdf = null; + try { + // load the PDF file using PDFBox + pdf = PDDocument.load(new File(filename)); + // create the DOM parser + PDFDomTree parser = new PDFDomTree(); + // parse the file and get the DOM Document + Writer output = new PrintWriter("src/output/pdf.html", "utf-8"); + parser.writeText(pdf, output); + output.close(); + } finally { + if (pdf != null) { + try { + pdf.close(); + } catch (IOException e) { + System.err.println("Error: " + e.getMessage()); + } + } + } + System.out.println("Done."); + } + +} diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java new file mode 100644 index 0000000000..4cfaea26b9 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java @@ -0,0 +1,38 @@ +package com.baeldung.pdf; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.ImageType; +import org.apache.pdfbox.rendering.PDFRenderer; +import org.apache.pdfbox.tools.imageio.ImageIOUtil; + +public class PDF2ImageExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateImageFromPDF(FILENAME, "png"); + generateImageFromPDF(FILENAME, "jpeg"); + generateImageFromPDF(FILENAME, "gif"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void generateImageFromPDF(String filename, String extension) throws IOException { + System.out.println("Creating " + extension + " image from a PDF file: " + filename); + PDDocument document = PDDocument.load(new File(filename)); + PDFRenderer pdfRenderer = new PDFRenderer(document); + for (int page = 0; page < document.getNumberOfPages(); ++page) { + System.out.println("Page number: " + (page + 1) + " is being rendered"); + BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); + ImageIOUtil.writeImage(bim, "src/output/pdf" + "-" + (page + 1) + "." + extension, 300); + } + document.close(); + System.out.println("Done."); + } +} diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java new file mode 100644 index 0000000000..eafdc07560 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java @@ -0,0 +1,65 @@ +package com.baeldung.pdf; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; + +import org.apache.pdfbox.cos.COSDocument; +import org.apache.pdfbox.io.RandomAccessFile; +import org.apache.pdfbox.pdfparser.PDFParser; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.text.PDFTextStripper; + +public class PDF2TextExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateTxtFromPDF(FILENAME); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void generateTxtFromPDF(String filename) throws IOException { + System.out.println("Parsing text from PDF file " + filename); + String parsedText = null; + PDFTextStripper pdfStripper; + PDDocument pdDoc = null; + COSDocument cosDoc = null; + + File f = new File(filename); + PDFParser parser = new PDFParser(new RandomAccessFile(f, "r")); + + try { + parser.parse(); + cosDoc = parser.getDocument(); + pdfStripper = new PDFTextStripper(); + pdDoc = new PDDocument(cosDoc); + parsedText = pdfStripper.getText(pdDoc); + } catch (Exception e) { + System.err.println("An exception occured in parsing the PDF Document."); + e.printStackTrace(); + try { + if (cosDoc != null) + cosDoc.close(); + if (pdDoc != null) + pdDoc.close(); + } catch (Exception e1) { + e.printStackTrace(); + } + } + System.out.println("Writing PDF text to output text file"); + try { + PrintWriter pw = new PrintWriter("src/output/pdf.txt"); + pw.print(parsedText); + pw.close(); + } catch (Exception e) { + System.out.println("An exception occured in writing the pdf text to file."); + e.printStackTrace(); + } + System.out.println("Done."); + } + +} diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java new file mode 100644 index 0000000000..6777ea9c45 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java @@ -0,0 +1,61 @@ +package com.baeldung.pdf; + +import java.io.FileOutputStream; +import java.io.IOException; + +import org.apache.poi.xwpf.usermodel.BreakType; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; + +import com.itextpdf.text.pdf.PdfReader; +import com.itextpdf.text.pdf.parser.PdfReaderContentParser; +import com.itextpdf.text.pdf.parser.SimpleTextExtractionStrategy; +import com.itextpdf.text.pdf.parser.TextExtractionStrategy; + +public class PDF2WordExample { + + private static final String FILENAME = "src/main/resources/pdf.pdf"; + + public static void main(String[] args) { + try { + generateDocFromPDF(FILENAME); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static void generateDocFromPDF(String filename) throws IOException { + System.out.println("Creating a docx file from a PDF file: " + filename); + // Create the word document + XWPFDocument doc = new XWPFDocument(); + + // Open the pdf file + String pdf = filename; + PdfReader reader = new PdfReader(pdf); + PdfReaderContentParser parser = new PdfReaderContentParser(reader); + + // Read the PDF page by page + for (int i = 1; i <= reader.getNumberOfPages(); i++) { + TextExtractionStrategy strategy = parser.processContent(i, new SimpleTextExtractionStrategy()); + // Extract the text + String text = strategy.getResultantText(); + // Create a new paragraph in the word document, adding the extracted + // text + XWPFParagraph p = doc.createParagraph(); + XWPFRun run = p.createRun(); + run.setText(text); + // Adding a page break + run.addBreak(BreakType.PAGE); + } + // Write the word document + FileOutputStream out = new FileOutputStream("src/output/pdf.docx"); + doc.write(out); + // Close all open files + out.close(); + reader.close(); + doc.close(); + System.out.println("Done."); + } + +} diff --git a/pdf/src/main/resources/pdf.pdf b/pdf/src/main/resources/pdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f45d226b39874bc6e8db65fde28713f2a7d26140 GIT binary patch literal 829637 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®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Ǖ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 N~?8 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%0AB!iNESYgNe__3Msr45VWL=-{_2Fs3lK9A|6rz zIl4?9BeA)TUqch-rLA^>LQ}rUCP@uj-$Z_%8So+DMw{W?R=iXF)o3#u{#~gcs3Bj_ z-y=7_bCWuqi{E_*et#ySbCw$%lRwRNhB4xaW^H}jxf7cmY57qyl|(GpqaTg(^C z=<}&68a!>Ri-1UhC%~+*t>{TRYXtt_ovNaa7sKiplWi4K%lsc3uss3csjF))uqD>k z?Bv1I-Wu(DAghi8K(1nNjS`B-+;nw0C@XrbM8VJWb{zE8+_DAMq{*TiRy`WV>sBNh_BJ4!Sri|w^>xalZCu!|z` zu)fy9nN}KL*KFy@opaAbJkE~~bI~KdWFQ6>T|Nw81=w=OEbeexVf7N1DTbPL*6$@q zsQD6BdNO%^k;!nV_YFs=KD5#*i%Lx!gUY9H%Kw!teLso~|27b00yV=Gk87 znV!+bYv3G+xBOp2VW6dm`AEZ=) zUE^C?^li)6W-wgd4a65Oh8cP4TdIsNujw;*DBR6qoblLf_bEV6SZf{ zwYF7YZKJt%Yi@0`TZ_RDt+jQn1_^U*lQReM?IVfUXXmQcY4vH#TwGdht&_7$6Nf`U z?wJKLUj*6%fHt3B5-OgtvFn%!$A@b8U2OShjkxw?%@E^R1aVfc6+xak z$01@18>~K#R|-?b!#v#`#`|KP-dof4e&?m$+ZGs9O+s^ZQW(d3VwuAJ%E+eD93+bksg*+PpB0B=t=e%o^ZNSy1?oq8C}R_l8! zSALI@b%pnu@K}?G9RG-9^#+JF!?8NKsH4sh55?~x?CE0#7joqVb07rk_2R6W+h+?n zvcv(zXM=15scJE0sIUD2sW1wN@&;fv57v~8YOWLINbwIswIP4Lmh4x}i7FuREOt#!5~n#)8TxaUga?R}79rlrq|0wfXbaK(3M6rD zAcWDo3Efv+8E)rRCEz&}!ozfx7t~i*ftbt6RNs-o6VWAfVWtR-dyk&*Zu#b}Im|s@ zU6&>(vg1>Jkd1ef8n{mjzrO(ZftZS|=EF(#RpSi!4i1fVfpv`?-1 zVriTiCS4zsG+`1cM4D>*`)Yed4t{Wf9}=;+wMyh#UzLDq+7|+1WXac&(+J4OcQlgB z&t3gAqQ5Xd1;j$UX!F0Mr$j9P5odoZ24P7ZLXan+zY!w);brdX^r^8D_C*P`5n&zo zi5gmo2hykHkU}2MM&$4j=3*Kkf&!VUWr(gJRmW~FWLSo~h8#FT*kuh8WD%R$*O|^> z?9TdmC=xoz{-P|mn@Pv1t1)3tV}GKtWcx|I=AmwY6?Vn?0w19f6{|<$Dkj>fW9RC) z$6*fyo+obP1_QW+d1*~t@WroLjb4P3^&_3il9QFy&PTj&31teggFrkn0$|1d z+g}Wta9ob2Ooog<{!rbFo=-{$kkx5+KyC zq!y)GW&Bq3B?}9)0F5Wjf>=Z$cY4XhScIdqj8#0aYjWZ;w3W0hzwt;{m=J`khk!JZ z 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 ES(SnXdZlm8qET27{O6_*0b*(rumqV}wnm+PNW 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

|OY8gR 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 SqRYEPa?ABg$W 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

u>JIlhLYmhyvG-XA~m+f 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%0DN{cys*|NNeV_q1ZZQsqEM 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

cw=BK#cIT;%FASEen=V-Z3B*Z+_48H_*J?%?6 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

Oe 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

1>+6K=>?RJPu$ze1!WYEgVa-m@2sSH6A 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 HE$06R$PiZp literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 82aa022269..ef24531698 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,5 @@ - + + 4.0.0 com.baeldung parent-modules @@ -143,6 +143,7 @@ xml xmlunit2 xstream - + pdf + - + \ No newline at end of file From db79d31308c9e13e0cb1230410f4dd9622875cc4 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Wed, 2 Nov 2016 19:29:22 +0100 Subject: [PATCH 013/399] Remove created doc --- pdf/src/output/pdf.docx | Bin 7017 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pdf/src/output/pdf.docx diff --git a/pdf/src/output/pdf.docx b/pdf/src/output/pdf.docx deleted file mode 100644 index 78178706f658093045f820525e02d57782532378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7017 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 From c4f9a6e12099f680de0734718be72be9ab9f263d Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Thu, 3 Nov 2016 11:59:14 +0100 Subject: [PATCH 014/399] Code fixes and cleanup for PDF module --- .../com/baeldung/pdf/PDF2HTMLExample.java | 18 ++------ .../com/baeldung/pdf/PDF2ImageExample.java | 3 -- .../com/baeldung/pdf/PDF2TextExample.java | 43 +++++++------------ .../com/baeldung/pdf/PDF2WordExample.java | 11 ----- 4 files changed, 19 insertions(+), 56 deletions(-) diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java index 72877a465a..14e886e23b 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java @@ -23,27 +23,17 @@ public class PDF2HTMLExample { } private static void generateHTMLFromPDF(String filename) throws ParserConfigurationException, IOException { - System.out.println("Creating HTML file from a PDF file: " + filename); - PDDocument pdf = null; try { - // load the PDF file using PDFBox - pdf = PDDocument.load(new File(filename)); - // create the DOM parser + PDDocument pdf = PDDocument.load(new File(filename)); PDFDomTree parser = new PDFDomTree(); - // parse the file and get the DOM Document Writer output = new PrintWriter("src/output/pdf.html", "utf-8"); parser.writeText(pdf, output); output.close(); - } finally { if (pdf != null) { - try { - pdf.close(); - } catch (IOException e) { - System.err.println("Error: " + e.getMessage()); - } + pdf.close(); } + } catch (IOException e) { + e.printStackTrace(); } - System.out.println("Done."); } - } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java index 4cfaea26b9..d7587dfc17 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java @@ -24,15 +24,12 @@ public class PDF2ImageExample { } private static void generateImageFromPDF(String filename, String extension) throws IOException { - System.out.println("Creating " + extension + " image from a PDF file: " + filename); PDDocument document = PDDocument.load(new File(filename)); PDFRenderer pdfRenderer = new PDFRenderer(document); for (int page = 0; page < document.getNumberOfPages(); ++page) { - System.out.println("Page number: " + (page + 1) + " is being rendered"); BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); ImageIOUtil.writeImage(bim, "src/output/pdf" + "-" + (page + 1) + "." + extension, 300); } document.close(); - System.out.println("Done."); } } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java index eafdc07560..e4fb29dfaa 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java @@ -23,43 +23,30 @@ public class PDF2TextExample { } private static void generateTxtFromPDF(String filename) throws IOException { - System.out.println("Parsing text from PDF file " + filename); - String parsedText = null; - PDFTextStripper pdfStripper; - PDDocument pdDoc = null; - COSDocument cosDoc = null; - - File f = new File(filename); - PDFParser parser = new PDFParser(new RandomAccessFile(f, "r")); - try { + File f = new File(filename); + String parsedText; + PDFParser parser = new PDFParser(new RandomAccessFile(f, "r")); parser.parse(); - cosDoc = parser.getDocument(); - pdfStripper = new PDFTextStripper(); - pdDoc = new PDDocument(cosDoc); + + COSDocument cosDoc = parser.getDocument(); + + PDFTextStripper pdfStripper = new PDFTextStripper(); + PDDocument pdDoc = new PDDocument(cosDoc); + parsedText = pdfStripper.getText(pdDoc); - } catch (Exception e) { - System.err.println("An exception occured in parsing the PDF Document."); - e.printStackTrace(); - try { - if (cosDoc != null) - cosDoc.close(); - if (pdDoc != null) - pdDoc.close(); - } catch (Exception e1) { - e.printStackTrace(); - } - } - System.out.println("Writing PDF text to output text file"); - try { + + if (cosDoc != null) + cosDoc.close(); + if (pdDoc != null) + pdDoc.close(); + PrintWriter pw = new PrintWriter("src/output/pdf.txt"); pw.print(parsedText); pw.close(); } catch (Exception e) { - System.out.println("An exception occured in writing the pdf text to file."); e.printStackTrace(); } - System.out.println("Done."); } } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java index 6777ea9c45..1f416592ef 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2WordExample.java @@ -26,36 +26,25 @@ public class PDF2WordExample { } private static void generateDocFromPDF(String filename) throws IOException { - System.out.println("Creating a docx file from a PDF file: " + filename); - // Create the word document XWPFDocument doc = new XWPFDocument(); - // Open the pdf file String pdf = filename; PdfReader reader = new PdfReader(pdf); PdfReaderContentParser parser = new PdfReaderContentParser(reader); - // Read the PDF page by page for (int i = 1; i <= reader.getNumberOfPages(); i++) { TextExtractionStrategy strategy = parser.processContent(i, new SimpleTextExtractionStrategy()); - // Extract the text String text = strategy.getResultantText(); - // Create a new paragraph in the word document, adding the extracted - // text XWPFParagraph p = doc.createParagraph(); XWPFRun run = p.createRun(); run.setText(text); - // Adding a page break run.addBreak(BreakType.PAGE); } - // Write the word document FileOutputStream out = new FileOutputStream("src/output/pdf.docx"); doc.write(out); - // Close all open files out.close(); reader.close(); doc.close(); - System.out.println("Done."); } } From 8957668308ccf8897bb40bfd9aca1dfa19ab508d Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Fri, 4 Nov 2016 22:23:17 +0100 Subject: [PATCH 015/399] Fix web.xml in spring-mvc-web-vs-initializer project --- spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml index 9bebc263be..5c7a0b52d4 100644 --- a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml @@ -9,11 +9,11 @@ org.springframework.web.servlet.DispatcherServlet - 1 contextConfigLocation classpath*:mvc-configuration.xml + 1 From 0d047b1c4035621f5e3b6205039aeaa7f9f1caa2 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Fri, 4 Nov 2016 22:42:20 +0100 Subject: [PATCH 016/399] Rollback web.xml --- spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml index 5c7a0b52d4..9bebc263be 100644 --- a/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-web-vs-initializer/src/main/webapp/WEB-INF/web.xml @@ -9,11 +9,11 @@ org.springframework.web.servlet.DispatcherServlet + 1 contextConfigLocation classpath*:mvc-configuration.xml - 1 From 8564e482e4c6a6a2a925d536e341acae64509ec8 Mon Sep 17 00:00:00 2001 From: tschiman Date: Sat, 5 Nov 2016 09:57:39 -0600 Subject: [PATCH 017/399] BAEL-89 Adding spring session tutorial code. --- pom.xml | 1 + spring-session/jetty-ex/pom.xml | 71 +++++++++++++++++++ .../session/tomcatex/JettyWebApplication.java | 19 +++++ .../session/tomcatex/SecurityConfig.java | 22 ++++++ .../session/tomcatex/SessionConfig.java | 17 +++++ .../src/main/resources/application.properties | 4 ++ spring-session/pom.xml | 20 ++++++ spring-session/tomcat-ex/pom.xml | 71 +++++++++++++++++++ .../session/tomcatex/SecurityConfig.java | 32 +++++++++ .../session/tomcatex/SessionConfig.java | 10 +++ .../tomcatex/TomcatWebApplication.java | 29 ++++++++ .../src/main/resources/application.properties | 2 + 12 files changed, 298 insertions(+) create mode 100644 spring-session/jetty-ex/pom.xml create mode 100644 spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java create mode 100644 spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java create mode 100644 spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java create mode 100644 spring-session/jetty-ex/src/main/resources/application.properties create mode 100644 spring-session/pom.xml create mode 100644 spring-session/tomcat-ex/pom.xml create mode 100644 spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java create mode 100644 spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java create mode 100644 spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java create mode 100644 spring-session/tomcat-ex/src/main/resources/application.properties diff --git a/pom.xml b/pom.xml index eee9f07ab9..466e2fe939 100644 --- a/pom.xml +++ b/pom.xml @@ -122,6 +122,7 @@ spring-thymeleaf spring-zuul spring-mvc-velocity + spring-session jsf xml diff --git a/spring-session/jetty-ex/pom.xml b/spring-session/jetty-ex/pom.xml new file mode 100644 index 0000000000..339821b5fe --- /dev/null +++ b/spring-session/jetty-ex/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + com.baeldung + jetty-ex + 1.0.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 1.4.0.RELEASE + + + + + + org.springframework.boot + spring-boot-starter-jetty + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.session + spring-session + 1.2.1.RELEASE + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + + + org.springframework.cloud + spring-cloud-dependencies + Brixton.RELEASE + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java new file mode 100644 index 0000000000..0da6316560 --- /dev/null +++ b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java @@ -0,0 +1,19 @@ +package com.baeldung.spring.session.tomcatex; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class JettyWebApplication { + public static void main(String[] args) { + SpringApplication.run(JettyWebApplication.class, args); + } + + @RequestMapping + public String helloJetty() { + return "hello Jetty"; + } +} diff --git a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java new file mode 100644 index 0000000000..3cd2e5e3ca --- /dev/null +++ b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java @@ -0,0 +1,22 @@ +package com.baeldung.spring.session.tomcatex; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; + +@Configuration +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.NEVER) + .and() + .authorizeRequests().anyRequest().hasRole("ADMIN").and() + .httpBasic().disable(); + } +} diff --git a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java new file mode 100644 index 0000000000..59fdefe30b --- /dev/null +++ b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java @@ -0,0 +1,17 @@ +package com.baeldung.spring.session.tomcatex; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; +import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; +import org.springframework.session.web.http.HeaderHttpSessionStrategy; +import org.springframework.session.web.http.HttpSessionStrategy; + +@Configuration +@EnableRedisHttpSession +public class SessionConfig extends AbstractHttpSessionApplicationInitializer { + @Bean + public HttpSessionStrategy httpSessionStrategy() { + return new HeaderHttpSessionStrategy(); + } +} diff --git a/spring-session/jetty-ex/src/main/resources/application.properties b/spring-session/jetty-ex/src/main/resources/application.properties new file mode 100644 index 0000000000..902de4e45f --- /dev/null +++ b/spring-session/jetty-ex/src/main/resources/application.properties @@ -0,0 +1,4 @@ +server.port=8081 + +spring.redis.host=localhost +spring.redis.port=6379 \ No newline at end of file diff --git a/spring-session/pom.xml b/spring-session/pom.xml new file mode 100644 index 0000000000..1e4bec0014 --- /dev/null +++ b/spring-session/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + spring-session + 1.0.0-SNAPSHOT + + + jetty-ex + tomcat-ex + + \ No newline at end of file diff --git a/spring-session/tomcat-ex/pom.xml b/spring-session/tomcat-ex/pom.xml new file mode 100644 index 0000000000..aed49df5e3 --- /dev/null +++ b/spring-session/tomcat-ex/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + com.baeldung + tomcat-ex + 1.0.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 1.4.0.RELEASE + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.cloud + spring-cloud-starter-zuul + + + org.springframework.session + spring-session + 1.2.1.RELEASE + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + + + org.springframework.cloud + spring-cloud-dependencies + Brixton.RELEASE + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java new file mode 100644 index 0000000000..2af111fe08 --- /dev/null +++ b/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.session.tomcatex; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication() + .withUser("user").password("password").roles("USER").and() + .withUser("admin").password("password").roles("ADMIN"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .httpBasic().and() +// .csrf().disable() + .authorizeRequests() + .antMatchers("/").permitAll() + .antMatchers("/tomcat").hasRole("USER") + .antMatchers("/tomcat/admin").hasRole("ADMIN") + .anyRequest().authenticated(); + } +} diff --git a/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java b/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java new file mode 100644 index 0000000000..5afac6cb6b --- /dev/null +++ b/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java @@ -0,0 +1,10 @@ +package com.baeldung.spring.session.tomcatex; + +import org.springframework.context.annotation.Configuration; +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; +import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; + +@Configuration +@EnableRedisHttpSession +public class SessionConfig extends AbstractHttpSessionApplicationInitializer { +} diff --git a/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java b/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java new file mode 100644 index 0000000000..417aaddf29 --- /dev/null +++ b/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java @@ -0,0 +1,29 @@ +package com.baeldung.spring.session.tomcatex; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class TomcatWebApplication { + public static void main(String[] args) { + SpringApplication.run(TomcatWebApplication.class, args); + } + + @RequestMapping + public String helloDefault() { + return "hello default"; + } + + @RequestMapping("/tomcat") + public String helloTomcat() { + return "hello tomcat"; + } + + @RequestMapping("/tomcat/admin") + public String helloTomcatAdmin() { + return "hello tomcat admin"; + } +} diff --git a/spring-session/tomcat-ex/src/main/resources/application.properties b/spring-session/tomcat-ex/src/main/resources/application.properties new file mode 100644 index 0000000000..49886b3b70 --- /dev/null +++ b/spring-session/tomcat-ex/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.redis.host=localhost +spring.redis.port=6379 \ No newline at end of file From dd2885085952dc6c3058e1570f0cb5f8eaf4c0a4 Mon Sep 17 00:00:00 2001 From: tschiman Date: Sat, 5 Nov 2016 10:28:46 -0600 Subject: [PATCH 018/399] BAEL-89 remove apring zuul dependency --- spring-session/tomcat-ex/pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spring-session/tomcat-ex/pom.xml b/spring-session/tomcat-ex/pom.xml index aed49df5e3..243413b213 100644 --- a/spring-session/tomcat-ex/pom.xml +++ b/spring-session/tomcat-ex/pom.xml @@ -24,10 +24,6 @@ org.springframework.boot spring-boot-starter-security - - org.springframework.cloud - spring-cloud-starter-zuul - org.springframework.session spring-session From 77c5ffbe872392e808d4f738cb98e57f508df7c4 Mon Sep 17 00:00:00 2001 From: tschiman Date: Sat, 5 Nov 2016 10:35:46 -0600 Subject: [PATCH 019/399] BAEL-89 remove csrf disable --- .../com/baeldung/spring/session/tomcatex/SecurityConfig.java | 3 +-- .../com/baeldung/spring/session/tomcatex/SecurityConfig.java | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java index 3cd2e5e3ca..ef779718cd 100644 --- a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java +++ b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java @@ -16,7 +16,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.NEVER) .and() - .authorizeRequests().anyRequest().hasRole("ADMIN").and() - .httpBasic().disable(); + .authorizeRequests().anyRequest().hasRole("ADMIN").and(); } } diff --git a/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java index 2af111fe08..91cd749c4c 100644 --- a/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java +++ b/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java @@ -22,7 +22,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { protected void configure(HttpSecurity http) throws Exception { http .httpBasic().and() -// .csrf().disable() .authorizeRequests() .antMatchers("/").permitAll() .antMatchers("/tomcat").hasRole("USER") From 134c4ca455886dd727e6983bb6eef2b8d22f893f Mon Sep 17 00:00:00 2001 From: tschiman Date: Sat, 5 Nov 2016 10:52:45 -0600 Subject: [PATCH 020/399] BAEL-89 remove csrf disable --- .../com/baeldung/spring/session/tomcatex/SecurityConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java index ef779718cd..202cad27e6 100644 --- a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java +++ b/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java @@ -16,6 +16,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.NEVER) .and() - .authorizeRequests().anyRequest().hasRole("ADMIN").and(); + .authorizeRequests().anyRequest().hasRole("ADMIN"); } } From 9332eb5210acb925a7f49106a57615e47da147bc Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Sat, 5 Nov 2016 21:58:25 +0100 Subject: [PATCH 021/399] Fixes to PDF article --- pdf/pom.xml | 18 ---------- .../com/baeldung/pdf/PDF2HTMLExample.java | 18 ++++------ .../com/baeldung/pdf/PDF2TextExample.java | 36 +++++++++---------- 3 files changed, 23 insertions(+), 49 deletions(-) diff --git a/pdf/pom.xml b/pdf/pom.xml index 078a364e77..be1e9822e2 100644 --- a/pdf/pom.xml +++ b/pdf/pom.xml @@ -24,49 +24,31 @@ 3.8.1 test - - - org.apache.pdfbox - pdfbox - 2.0.3 - - org.apache.pdfbox pdfbox-tools 2.0.3 - net.sf.cssbox pdf2dom 1.6 - com.itextpdf itextpdf 5.5.10 - org.apache.poi poi 3.15 - - - org.apache.poi - poi-ooxml - 3.15 - - org.apache.poi poi-scratchpad 3.15 - org.apache.xmlgraphics batik-transcoder diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java index 14e886e23b..0d38208bab 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java @@ -23,17 +23,13 @@ public class PDF2HTMLExample { } private static void generateHTMLFromPDF(String filename) throws ParserConfigurationException, IOException { - try { - PDDocument pdf = PDDocument.load(new File(filename)); - PDFDomTree parser = new PDFDomTree(); - Writer output = new PrintWriter("src/output/pdf.html", "utf-8"); - parser.writeText(pdf, output); - output.close(); - if (pdf != null) { - pdf.close(); - } - } catch (IOException e) { - e.printStackTrace(); + PDDocument pdf = PDDocument.load(new File(filename)); + PDFDomTree parser = new PDFDomTree(); + Writer output = new PrintWriter("src/output/pdf.html", "utf-8"); + parser.writeText(pdf, output); + output.close(); + if (pdf != null) { + pdf.close(); } } } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java index e4fb29dfaa..c5880a4e91 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java @@ -23,30 +23,26 @@ public class PDF2TextExample { } private static void generateTxtFromPDF(String filename) throws IOException { - try { - File f = new File(filename); - String parsedText; - PDFParser parser = new PDFParser(new RandomAccessFile(f, "r")); - parser.parse(); + File f = new File(filename); + String parsedText; + PDFParser parser = new PDFParser(new RandomAccessFile(f, "r")); + parser.parse(); - COSDocument cosDoc = parser.getDocument(); + COSDocument cosDoc = parser.getDocument(); - PDFTextStripper pdfStripper = new PDFTextStripper(); - PDDocument pdDoc = new PDDocument(cosDoc); + PDFTextStripper pdfStripper = new PDFTextStripper(); + PDDocument pdDoc = new PDDocument(cosDoc); - parsedText = pdfStripper.getText(pdDoc); + parsedText = pdfStripper.getText(pdDoc); - if (cosDoc != null) - cosDoc.close(); - if (pdDoc != null) - pdDoc.close(); - - PrintWriter pw = new PrintWriter("src/output/pdf.txt"); - pw.print(parsedText); - pw.close(); - } catch (Exception e) { - e.printStackTrace(); - } + if (cosDoc != null) + cosDoc.close(); + if (pdDoc != null) + pdDoc.close(); + + PrintWriter pw = new PrintWriter("src/output/pdf.txt"); + pw.print(parsedText); + pw.close(); } } From f5f771d1365f13b4a4fc794494ea1a9c9bb4f923 Mon Sep 17 00:00:00 2001 From: tschiman Date: Sat, 5 Nov 2016 20:35:52 -0600 Subject: [PATCH 022/399] BAEL-89 modifying the module names and changing the dependencies to be in line with what we would get from start.spring.io --- spring-session/{jetty-ex => jetty-session-demo}/pom.xml | 6 +++--- .../spring/session/tomcatex/JettyWebApplication.java | 5 +++++ .../baeldung/spring/session/tomcatex/SecurityConfig.java | 0 .../com/baeldung/spring/session/tomcatex/SessionConfig.java | 0 .../src/main/resources/application.properties | 0 spring-session/pom.xml | 4 ++-- spring-session/{tomcat-ex => tomcat-session-demo}/pom.xml | 5 ++--- .../baeldung/spring/session/tomcatex/SecurityConfig.java | 0 .../com/baeldung/spring/session/tomcatex/SessionConfig.java | 0 .../spring/session/tomcatex/TomcatWebApplication.java | 0 .../src/main/resources/application.properties | 0 11 files changed, 12 insertions(+), 8 deletions(-) rename spring-session/{jetty-ex => jetty-session-demo}/pom.xml (97%) rename spring-session/{jetty-ex => jetty-session-demo}/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java (85%) rename spring-session/{jetty-ex => jetty-session-demo}/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java (100%) rename spring-session/{jetty-ex => jetty-session-demo}/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java (100%) rename spring-session/{jetty-ex => jetty-session-demo}/src/main/resources/application.properties (100%) rename spring-session/{tomcat-ex => tomcat-session-demo}/pom.xml (97%) rename spring-session/{tomcat-ex => tomcat-session-demo}/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java (100%) rename spring-session/{tomcat-ex => tomcat-session-demo}/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java (100%) rename spring-session/{tomcat-ex => tomcat-session-demo}/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java (100%) rename spring-session/{tomcat-ex => tomcat-session-demo}/src/main/resources/application.properties (100%) diff --git a/spring-session/jetty-ex/pom.xml b/spring-session/jetty-session-demo/pom.xml similarity index 97% rename from spring-session/jetty-ex/pom.xml rename to spring-session/jetty-session-demo/pom.xml index 339821b5fe..717506fbce 100644 --- a/spring-session/jetty-ex/pom.xml +++ b/spring-session/jetty-session-demo/pom.xml @@ -20,9 +20,10 @@ org.springframework.boot spring-boot-starter-jetty + org.springframework.boot - spring-boot-starter-web + spring-boot-starter-data-redis org.springframework.boot @@ -31,11 +32,10 @@ org.springframework.session spring-session - 1.2.1.RELEASE org.springframework.boot - spring-boot-starter-data-redis + spring-boot-starter-web diff --git a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java similarity index 85% rename from spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java rename to spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java index 0da6316560..2cdc5f99af 100644 --- a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java +++ b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java @@ -16,4 +16,9 @@ public class JettyWebApplication { public String helloJetty() { return "hello Jetty"; } + + @RequestMapping("/test") + public String lksjdf() { + return ""; + } } diff --git a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java similarity index 100% rename from spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java rename to spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java diff --git a/spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java similarity index 100% rename from spring-session/jetty-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java rename to spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java diff --git a/spring-session/jetty-ex/src/main/resources/application.properties b/spring-session/jetty-session-demo/src/main/resources/application.properties similarity index 100% rename from spring-session/jetty-ex/src/main/resources/application.properties rename to spring-session/jetty-session-demo/src/main/resources/application.properties diff --git a/spring-session/pom.xml b/spring-session/pom.xml index 1e4bec0014..74561edc59 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -14,7 +14,7 @@ 1.0.0-SNAPSHOT - jetty-ex - tomcat-ex + jetty-session-demo + tomcat-session-demo \ No newline at end of file diff --git a/spring-session/tomcat-ex/pom.xml b/spring-session/tomcat-session-demo/pom.xml similarity index 97% rename from spring-session/tomcat-ex/pom.xml rename to spring-session/tomcat-session-demo/pom.xml index 243413b213..cade029ac8 100644 --- a/spring-session/tomcat-ex/pom.xml +++ b/spring-session/tomcat-session-demo/pom.xml @@ -18,7 +18,7 @@ org.springframework.boot - spring-boot-starter-web + spring-boot-starter-data-redis org.springframework.boot @@ -27,11 +27,10 @@ org.springframework.session spring-session - 1.2.1.RELEASE org.springframework.boot - spring-boot-starter-data-redis + spring-boot-starter-web diff --git a/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java similarity index 100% rename from spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java rename to spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java diff --git a/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java similarity index 100% rename from spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java rename to spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java diff --git a/spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java similarity index 100% rename from spring-session/tomcat-ex/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java rename to spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java diff --git a/spring-session/tomcat-ex/src/main/resources/application.properties b/spring-session/tomcat-session-demo/src/main/resources/application.properties similarity index 100% rename from spring-session/tomcat-ex/src/main/resources/application.properties rename to spring-session/tomcat-session-demo/src/main/resources/application.properties From 9689d4656a78cf14dfe51e288d107b026d5fa867 Mon Sep 17 00:00:00 2001 From: tschiman Date: Sat, 5 Nov 2016 20:38:21 -0600 Subject: [PATCH 023/399] BAEL-89 modifying the maven sub project names --- spring-session/jetty-session-demo/pom.xml | 2 +- spring-session/tomcat-session-demo/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-session/jetty-session-demo/pom.xml b/spring-session/jetty-session-demo/pom.xml index 717506fbce..86a8596862 100644 --- a/spring-session/jetty-session-demo/pom.xml +++ b/spring-session/jetty-session-demo/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.baeldung - jetty-ex + jetty-session-demo 1.0.0-SNAPSHOT diff --git a/spring-session/tomcat-session-demo/pom.xml b/spring-session/tomcat-session-demo/pom.xml index cade029ac8..805d7bec25 100644 --- a/spring-session/tomcat-session-demo/pom.xml +++ b/spring-session/tomcat-session-demo/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.baeldung - tomcat-ex + tomcat-session-demo 1.0.0-SNAPSHOT From bde1d12e822e5db5ab198f7d12145717ff0d5ad2 Mon Sep 17 00:00:00 2001 From: Pritam Banerjee Date: Mon, 7 Nov 2016 02:06:51 -0800 Subject: [PATCH 024/399] Updated Wildfly configurations and changed the files: ejb pom and ejb-remote.pom --- ejb/ejb-remote/pom.xml | 18 ++++++++++++++++-- ejb/pom.xml | 4 ++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ejb/ejb-remote/pom.xml b/ejb/ejb-remote/pom.xml index 14c02edd0e..3661fa5b2c 100755 --- a/ejb/ejb-remote/pom.xml +++ b/ejb/ejb-remote/pom.xml @@ -10,7 +10,7 @@ ejb-remote ejb - ejb-remote + org.jboss.spec.javax.ejb @@ -20,6 +20,20 @@ - ejb-remote + + + org.wildfly.plugins + wildfly-maven-plugin + 1.1.0.Alpha5 + + 127.0.0.1 + 9990 + pritamtest + iamtheki9g + ${build.finalName}.jar + + + + \ No newline at end of file diff --git a/ejb/pom.xml b/ejb/pom.xml index 49ddc694e9..5c54cdcf72 100755 --- a/ejb/pom.xml +++ b/ejb/pom.xml @@ -60,8 +60,8 @@ maven-compiler-plugin 3.1 - 1.7 - 1.7 + 1.8 + 1.8 From 9187dbd3624e7ccab95c6e1ab3830634c7677271 Mon Sep 17 00:00:00 2001 From: Ante Pocedulic Date: Tue, 8 Nov 2016 13:36:17 +0100 Subject: [PATCH 025/399] - added new camel example - added new camel context for junit test --- .../baeldung/camel/file/FileProcessor.java | 20 ++++++ .../com/baeldung/camel/file/FileRouter.java | 15 ++++ .../src/main/resources/camel-context-test.xml | 14 ++++ .../src/main/resources/camel-context.xml | 48 ++++++------- .../file/processor/FileProcessorTest.java | 68 +++++++++++++++++++ 5 files changed, 141 insertions(+), 24 deletions(-) create mode 100644 spring-apache-camel/src/main/java/com/baeldung/camel/file/FileProcessor.java create mode 100644 spring-apache-camel/src/main/java/com/baeldung/camel/file/FileRouter.java create mode 100644 spring-apache-camel/src/main/resources/camel-context-test.xml create mode 100644 spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java diff --git a/spring-apache-camel/src/main/java/com/baeldung/camel/file/FileProcessor.java b/spring-apache-camel/src/main/java/com/baeldung/camel/file/FileProcessor.java new file mode 100644 index 0000000000..1ea2cad188 --- /dev/null +++ b/spring-apache-camel/src/main/java/com/baeldung/camel/file/FileProcessor.java @@ -0,0 +1,20 @@ +package com.baeldung.camel.file; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.apache.camel.Exchange; +import org.apache.camel.Processor; + +public class FileProcessor implements Processor { + + public void process(Exchange exchange) throws Exception { + String originalFileName = (String) exchange.getIn().getHeader(Exchange.FILE_NAME, String.class); + + Date date = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); + String changedFileName = dateFormat.format(date) + originalFileName; + exchange.getIn().setHeader(Exchange.FILE_NAME, changedFileName); + } + +} diff --git a/spring-apache-camel/src/main/java/com/baeldung/camel/file/FileRouter.java b/spring-apache-camel/src/main/java/com/baeldung/camel/file/FileRouter.java new file mode 100644 index 0000000000..5216c9a595 --- /dev/null +++ b/spring-apache-camel/src/main/java/com/baeldung/camel/file/FileRouter.java @@ -0,0 +1,15 @@ +package com.baeldung.camel.file; + +import org.apache.camel.builder.RouteBuilder; + +public class FileRouter extends RouteBuilder { + + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER = "src/test/destination-folder"; + + @Override + public void configure() throws Exception { + from("file://" + SOURCE_FOLDER + "?delete=true").process(new FileProcessor()).to("file://" + DESTINATION_FOLDER); + } + +} diff --git a/spring-apache-camel/src/main/resources/camel-context-test.xml b/spring-apache-camel/src/main/resources/camel-context-test.xml new file mode 100644 index 0000000000..e6435db9e5 --- /dev/null +++ b/spring-apache-camel/src/main/resources/camel-context-test.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/spring-apache-camel/src/main/resources/camel-context.xml b/spring-apache-camel/src/main/resources/camel-context.xml index 0c10e0ecef..63ef406fdf 100644 --- a/spring-apache-camel/src/main/resources/camel-context.xml +++ b/spring-apache-camel/src/main/resources/camel-context.xml @@ -1,39 +1,39 @@ - + - + - - + + - - + + - - + + - - - ${body.toLowerCase()} - + + + ${body.toLowerCase()} + - - + + - - - .......... File content conversion completed .......... - - + + + .......... File content conversion completed .......... + + - + - + - + \ No newline at end of file diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java new file mode 100644 index 0000000000..3d63f614e0 --- /dev/null +++ b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java @@ -0,0 +1,68 @@ +package org.apache.camel.file.processor; + +import java.io.File; + +import org.apache.camel.CamelContext; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.DefaultCamelContext; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.baeldung.camel.file.FileProcessor; + + +public class FileProcessorTest { + + private static final long DURATION_MILIS = 10000; + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER = "src/test/destination-folder"; + + @Before + public void setUp() throws Exception { + File sourceFolder = new File(SOURCE_FOLDER); + File destinationFolder = new File(DESTINATION_FOLDER); + + cleanFolder(sourceFolder); + cleanFolder(destinationFolder); + + sourceFolder.mkdirs(); + File file1 = new File(SOURCE_FOLDER + "/File1.txt"); + File file2 = new File(SOURCE_FOLDER + "/File2.txt"); + file1.createNewFile(); + file2.createNewFile(); + } + + private void cleanFolder(File folder) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile()) { + file.delete(); + } + } + } + } + + @Test + public void moveFolderContentJavaDSLTest() throws Exception { + final CamelContext camelContext = new DefaultCamelContext(); + camelContext.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("file://" + SOURCE_FOLDER + "?delete=true").process(new FileProcessor()).to("file://" + DESTINATION_FOLDER); + } + }); + camelContext.start(); + Thread.sleep(DURATION_MILIS); + camelContext.stop(); + } + + @Test + public void moveFolderContentSpringDSLTest() throws InterruptedException { + ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-test.xml"); + Thread.sleep(DURATION_MILIS); + applicationContext.close(); + + } +} \ No newline at end of file From 1d692a99c4cb12cbbb3c369ff6442e5713cdb384 Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Thu, 10 Nov 2016 05:21:00 +0700 Subject: [PATCH 026/399] Apache CXF Aegis data bindings --- apache-cxf/cxf-aegis/pom.xml | 20 ++++ .../java/com/baeldung/cxf/aegis/Course.java | 42 +++++++++ .../com/baeldung/cxf/aegis/CourseRepo.java | 11 +++ .../baeldung/cxf/aegis/CourseRepoImpl.java | 34 +++++++ .../com/baeldung/cxf/aegis/Course.aegis.xml | 5 + .../baeldung/cxf/aegis/CourseRepo.aegis.xml | 5 + .../com/baeldung/cxf/aegis/BaeldungTest.java | 93 +++++++++++++++++++ apache-cxf/pom.xml | 1 + 8 files changed, 211 insertions(+) create mode 100644 apache-cxf/cxf-aegis/pom.xml create mode 100644 apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/Course.java create mode 100644 apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/CourseRepo.java create mode 100644 apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/CourseRepoImpl.java create mode 100644 apache-cxf/cxf-aegis/src/main/resources/com/baeldung/cxf/aegis/Course.aegis.xml create mode 100644 apache-cxf/cxf-aegis/src/main/resources/com/baeldung/cxf/aegis/CourseRepo.aegis.xml create mode 100644 apache-cxf/cxf-aegis/src/test/java/com/baeldung/cxf/aegis/BaeldungTest.java diff --git a/apache-cxf/cxf-aegis/pom.xml b/apache-cxf/cxf-aegis/pom.xml new file mode 100644 index 0000000000..b436b03305 --- /dev/null +++ b/apache-cxf/cxf-aegis/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + cxf-aegis + + com.baeldung + apache-cxf + 0.0.1-SNAPSHOT + + + 3.1.8 + + + + org.apache.cxf + cxf-rt-databinding-aegis + ${cxf.version} + + + diff --git a/apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/Course.java b/apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/Course.java new file mode 100644 index 0000000000..b8004f1ba7 --- /dev/null +++ b/apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/Course.java @@ -0,0 +1,42 @@ +package com.baeldung.cxf.aegis; + +import java.util.Date; + +public class Course { + private int id; + private String name; + private String instructor; + private Date enrolmentDate; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getInstructor() { + return instructor; + } + + public void setInstructor(String instructor) { + this.instructor = instructor; + } + + public Date getEnrolmentDate() { + return enrolmentDate; + } + + public void setEnrolmentDate(Date enrolmentDate) { + this.enrolmentDate = enrolmentDate; + } +} \ No newline at end of file diff --git a/apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/CourseRepo.java b/apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/CourseRepo.java new file mode 100644 index 0000000000..a125fb1f85 --- /dev/null +++ b/apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/CourseRepo.java @@ -0,0 +1,11 @@ +package com.baeldung.cxf.aegis; + +import java.util.Map; + +public interface CourseRepo { + String getGreeting(); + void setGreeting(String greeting); + Map getCourses(); + void setCourses(Map courses); + void addCourse(Course course); +} \ No newline at end of file diff --git a/apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/CourseRepoImpl.java b/apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/CourseRepoImpl.java new file mode 100644 index 0000000000..e483feed58 --- /dev/null +++ b/apache-cxf/cxf-aegis/src/main/java/com/baeldung/cxf/aegis/CourseRepoImpl.java @@ -0,0 +1,34 @@ +package com.baeldung.cxf.aegis; + +import java.util.HashMap; +import java.util.Map; + +public class CourseRepoImpl implements CourseRepo { + private String greeting; + private Map courses = new HashMap<>(); + + @Override + public String getGreeting() { + return greeting; + } + + @Override + public void setGreeting(String greeting) { + this.greeting = greeting; + } + + @Override + public Map getCourses() { + return courses; + } + + @Override + public void setCourses(Map courses) { + this.courses = courses; + } + + @Override + public void addCourse(Course course) { + courses.put(course.getId(), course); + } +} \ No newline at end of file diff --git a/apache-cxf/cxf-aegis/src/main/resources/com/baeldung/cxf/aegis/Course.aegis.xml b/apache-cxf/cxf-aegis/src/main/resources/com/baeldung/cxf/aegis/Course.aegis.xml new file mode 100644 index 0000000000..53c6c2fc45 --- /dev/null +++ b/apache-cxf/cxf-aegis/src/main/resources/com/baeldung/cxf/aegis/Course.aegis.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apache-cxf/cxf-aegis/src/main/resources/com/baeldung/cxf/aegis/CourseRepo.aegis.xml b/apache-cxf/cxf-aegis/src/main/resources/com/baeldung/cxf/aegis/CourseRepo.aegis.xml new file mode 100644 index 0000000000..7e13678b51 --- /dev/null +++ b/apache-cxf/cxf-aegis/src/main/resources/com/baeldung/cxf/aegis/CourseRepo.aegis.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apache-cxf/cxf-aegis/src/test/java/com/baeldung/cxf/aegis/BaeldungTest.java b/apache-cxf/cxf-aegis/src/test/java/com/baeldung/cxf/aegis/BaeldungTest.java new file mode 100644 index 0000000000..559de037a9 --- /dev/null +++ b/apache-cxf/cxf-aegis/src/test/java/com/baeldung/cxf/aegis/BaeldungTest.java @@ -0,0 +1,93 @@ +package com.baeldung.cxf.aegis; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import org.junit.Test; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.lang.reflect.Type; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +import org.apache.cxf.aegis.AegisContext; +import org.apache.cxf.aegis.AegisReader; +import org.apache.cxf.aegis.AegisWriter; +import org.apache.cxf.aegis.type.AegisType; + +public class BaeldungTest { + private AegisContext context; + private String fileName = "baeldung.xml"; + + @Test + public void whenMarshalingAndUnmarshalingCourseRepo_thenCorrect() throws Exception { + initializeContext(); + CourseRepo inputRepo = initCourseRepo(); + marshalCourseRepo(inputRepo); + CourseRepo outputRepo = unmarshalCourseRepo(); + Course restCourse = outputRepo.getCourses().get(1); + Course securityCourse = outputRepo.getCourses().get(2); + assertEquals("Welcome to Beldung!", outputRepo.getGreeting()); + assertEquals("REST with Spring", restCourse.getName()); + assertEquals(new Date(1234567890000L), restCourse.getEnrolmentDate()); + assertNull(restCourse.getInstructor()); + assertEquals("Learn Spring Security", securityCourse.getName()); + assertEquals(new Date(1456789000000L), securityCourse.getEnrolmentDate()); + assertNull(securityCourse.getInstructor()); + } + + private void initializeContext() { + context = new AegisContext(); + Set rootClasses = new HashSet(); + rootClasses.add(CourseRepo.class); + context.setRootClasses(rootClasses); + Map, String> beanImplementationMap = new HashMap<>(); + beanImplementationMap.put(CourseRepoImpl.class, "CourseRepo"); + context.setBeanImplementationMap(beanImplementationMap); + context.setWriteXsiTypes(true); + context.initialize(); + } + + private CourseRepoImpl initCourseRepo() { + Course restCourse = new Course(); + restCourse.setId(1); + restCourse.setName("REST with Spring"); + restCourse.setInstructor("Eugen"); + restCourse.setEnrolmentDate(new Date(1234567890000L)); + Course securityCourse = new Course(); + securityCourse.setId(2); + securityCourse.setName("Learn Spring Security"); + securityCourse.setInstructor("Eugen"); + securityCourse.setEnrolmentDate(new Date(1456789000000L)); + CourseRepoImpl courseRepo = new CourseRepoImpl(); + courseRepo.setGreeting("Welcome to Beldung!"); + courseRepo.addCourse(restCourse); + courseRepo.addCourse(securityCourse); + return courseRepo; + } + + private void marshalCourseRepo(CourseRepo courseRepo) throws Exception { + AegisWriter writer = context.createXMLStreamWriter(); + AegisType aegisType = context.getTypeMapping().getType(CourseRepo.class); + XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(new FileOutputStream(fileName)); + writer.write(courseRepo, new QName("http://aegis.cxf.baeldung.com", "baeldung"), false, xmlWriter, aegisType); + xmlWriter.close(); + } + + private CourseRepo unmarshalCourseRepo() throws Exception { + AegisReader reader = context.createXMLStreamReader(); + XMLStreamReader xmlReader = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream(fileName)); + CourseRepo courseRepo = (CourseRepo) reader.read(xmlReader, context.getTypeMapping().getType(CourseRepo.class)); + xmlReader.close(); + return courseRepo; + } +} \ No newline at end of file diff --git a/apache-cxf/pom.xml b/apache-cxf/pom.xml index af7949bb6c..b382ee6506 100644 --- a/apache-cxf/pom.xml +++ b/apache-cxf/pom.xml @@ -9,6 +9,7 @@ cxf-introduction cxf-spring cxf-jaxrs-implementation + cxf-aegis From e29e33dbe63f8602daded4da0d40fcf945d2681f Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Fri, 11 Nov 2016 14:16:24 +0530 Subject: [PATCH 027/399] Added BeanFactory sample in spring-core --- spring-core/.gitignore | 2 +- .../BeanFactoryWithClassPathResource.java | 16 +++++++++++ .../com/baeldung/beanfactory/Employee.java | 28 +++++++++++++++++++ .../com/baeldung/beanfactory/spring-app.xml | 11 ++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java create mode 100644 spring-core/src/main/java/com/baeldung/beanfactory/Employee.java create mode 100644 spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml diff --git a/spring-core/.gitignore b/spring-core/.gitignore index 6531dfc93f..08259abdaf 100644 --- a/spring-core/.gitignore +++ b/spring-core/.gitignore @@ -5,8 +5,8 @@ RemoteSystemsTempFiles/ bin/ .metadata/ docs/*.autosave -docs/*.autosave .recommenders/ build/ .gradle/ .DS_Store +.idea/ \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java new file mode 100644 index 0000000000..aff425a87b --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java @@ -0,0 +1,16 @@ +package com.baeldung.beanfactory; + +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.xml.XmlBeanFactory; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; + +public class BeanFactoryWithClassPathResource { + + public void createBeanFactory() { + + Resource res = new ClassPathResource("spring-app.xml"); + BeanFactory factory = new XmlBeanFactory(res); + Employee emp = (Employee) factory.getBean("employee"); + } +} diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/Employee.java b/spring-core/src/main/java/com/baeldung/beanfactory/Employee.java new file mode 100644 index 0000000000..bd7c7a5dc7 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beanfactory/Employee.java @@ -0,0 +1,28 @@ +package com.baeldung.beanfactory; + +public class Employee { + + private String name; + private int age; + + public Employee(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } +} diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml b/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml new file mode 100644 index 0000000000..5bdc3e601a --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file From e425d8bf01a52b013c25172f13cab43e836bb323 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Fri, 11 Nov 2016 14:16:24 +0530 Subject: [PATCH 028/399] Added BeanFactory sample in spring-core --- spring-core/.gitignore | 2 +- .../BeanFactoryWithClassPathResource.java | 16 +++++++++++ .../com/baeldung/beanfactory/Employee.java | 28 +++++++++++++++++++ .../com/baeldung/beanfactory/spring-app.xml | 11 ++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java create mode 100644 spring-core/src/main/java/com/baeldung/beanfactory/Employee.java create mode 100644 spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml diff --git a/spring-core/.gitignore b/spring-core/.gitignore index 6531dfc93f..08259abdaf 100644 --- a/spring-core/.gitignore +++ b/spring-core/.gitignore @@ -5,8 +5,8 @@ RemoteSystemsTempFiles/ bin/ .metadata/ docs/*.autosave -docs/*.autosave .recommenders/ build/ .gradle/ .DS_Store +.idea/ \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java new file mode 100644 index 0000000000..aff425a87b --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java @@ -0,0 +1,16 @@ +package com.baeldung.beanfactory; + +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.xml.XmlBeanFactory; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; + +public class BeanFactoryWithClassPathResource { + + public void createBeanFactory() { + + Resource res = new ClassPathResource("spring-app.xml"); + BeanFactory factory = new XmlBeanFactory(res); + Employee emp = (Employee) factory.getBean("employee"); + } +} diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/Employee.java b/spring-core/src/main/java/com/baeldung/beanfactory/Employee.java new file mode 100644 index 0000000000..bd7c7a5dc7 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beanfactory/Employee.java @@ -0,0 +1,28 @@ +package com.baeldung.beanfactory; + +public class Employee { + + private String name; + private int age; + + public Employee(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } +} diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml b/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml new file mode 100644 index 0000000000..5bdc3e601a --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file From de948bc4ab9a7b87afe1ba5f6e51265af69936b7 Mon Sep 17 00:00:00 2001 From: mujah Date: Sat, 12 Nov 2016 12:21:46 +0800 Subject: [PATCH 029/399] maven profile changes, model class change --- spring-data-solr/pom.xml | 172 +++++++++++------- .../spring/data/solr/model/Product.java | 21 --- .../solr/repository/ProductRepository.java | 10 +- .../resources/solr-named-queries.properties | 2 +- .../ProductRepositoryIntegrationTest.java | 57 ++---- 5 files changed, 130 insertions(+), 132 deletions(-) diff --git a/spring-data-solr/pom.xml b/spring-data-solr/pom.xml index bd48a53d06..6724c56add 100644 --- a/spring-data-solr/pom.xml +++ b/spring-data-solr/pom.xml @@ -1,69 +1,107 @@ - - 4.0.0 - com.baeldung - spring-data-solr - 0.0.1-SNAPSHOT - jar - spring-data-solr - - - - UTF-8 - 4.2.5.RELEASE - 2.19.1 - 2.0.4.RELEASE - - - - - org.springframework - spring-core - ${spring.version} - - - org.springframework.data - spring-data-solr - ${spring-data-solr} - - - org.springframework - spring-context - ${spring.version} - - - log4j - log4j - 1.2.16 - - - junit - junit - 4.12 - test - - - org.springframework - spring-test - ${spring.version} - test - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - **/*IntegrationTest.java - - - - - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + 4.0.0 + com.baeldung + spring-data-solr + 0.0.1-SNAPSHOT + jar + spring-data-solr + + + + UTF-8 + 4.2.5.RELEASE + 2.19.1 + 2.0.4.RELEASE + + + + + org.springframework + spring-core + ${spring.version} + + + org.springframework.data + spring-data-solr + ${spring-data-solr} + + + org.springframework + spring-context + ${spring.version} + + + log4j + log4j + 1.2.16 + + + junit + junit + 4.12 + test + + + org.springframework + spring-test + ${spring.version} + test + + + + + + + maven-compiler-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/model/Product.java b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/model/Product.java index 7cd0890718..466af54191 100644 --- a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/model/Product.java +++ b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/model/Product.java @@ -14,11 +14,6 @@ public class Product { @Indexed(name = "name", type = "string") private String name; - @Indexed(name = "category", type = "string") - private String category; - - @Indexed(name = "description", type = "string") - private String description; public String getId() { return id; @@ -36,20 +31,4 @@ public class Product { this.name = name; } - public String getCategory() { - return category; - } - - public void setCategory(String category) { - this.category = category; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - } diff --git a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java index 01ec1fb909..d016e46f52 100644 --- a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java +++ b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java @@ -11,12 +11,12 @@ import com.baeldung.spring.data.solr.model.Product; public interface ProductRepository extends SolrCrudRepository { - public List findByName(String name); + public List findByName(String name); - @Query("name:*?0* OR category:*?0* OR description:*?0*") - public Page findByCustomQuery(String searchTerm, Pageable pageable); + @Query("name:*?0* OR description:*?0*") + public Page findByCustomQuery(String searchTerm, Pageable pageable); - @Query(name = "Product.findByNamedQuery") - public Page findByNamedQuery(String searchTerm, Pageable pageable); + @Query(name = "Product.findByNamedQuery") + public Page findByNamedQuery(String searchTerm, Pageable pageable); } diff --git a/spring-data-solr/src/main/resources/solr-named-queries.properties b/spring-data-solr/src/main/resources/solr-named-queries.properties index cec59cbebd..ed3f9a534a 100644 --- a/spring-data-solr/src/main/resources/solr-named-queries.properties +++ b/spring-data-solr/src/main/resources/solr-named-queries.properties @@ -1 +1 @@ -Product.findByNamedQuery=name:*?0* OR category:*?0* OR description:*?0* \ No newline at end of file +Product.findByNamedQuery=name:*?0* OR description:*?0* \ No newline at end of file diff --git a/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java b/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java index 74d94ef91c..815a188c06 100644 --- a/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java +++ b/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java @@ -35,8 +35,6 @@ public class ProductRepositoryIntegrationTest { final Product product = new Product(); product.setId("P000089998"); product.setName("Desk"); - product.setCategory("Furniture"); - product.setDescription("New Desk"); productRepository.save(product); final Product retrievedProduct = productRepository.findOne(product.getId()); assertEquals(product.getId(), retrievedProduct.getId()); @@ -47,15 +45,14 @@ public class ProductRepositoryIntegrationTest { final Product product = new Product(); product.setId("P0001"); product.setName("T-Shirt"); - product.setCategory("Kitchen"); - product.setDescription("New T-Shirt"); + productRepository.save(product); - product.setCategory("Clothes"); + product.setName("Shirt"); productRepository.save(product); final Product retrievedProduct = productRepository.findOne(product.getId()); - assertEquals(product.getCategory(), retrievedProduct.getCategory()); + assertEquals(product.getName(), retrievedProduct.getName()); } @Test @@ -63,8 +60,6 @@ public class ProductRepositoryIntegrationTest { final Product product = new Product(); product.setId("P0001"); product.setName("Desk"); - product.setCategory("Furniture"); - product.setDescription("New Desk"); productRepository.save(product); productRepository.delete(product); @@ -79,8 +74,6 @@ public class ProductRepositoryIntegrationTest { Product phone = new Product(); phone.setId("P0001"); phone.setName("Phone"); - phone.setCategory("Electronics"); - phone.setDescription("New Phone"); productRepository.save(phone); List retrievedProducts = productRepository.findByName("Phone"); @@ -89,26 +82,20 @@ public class ProductRepositoryIntegrationTest { @Test public void whenSearchingProductsByQuery_thenAllMatchingProductsShouldAvialble() throws Exception { - final Product phone = new Product(); - phone.setId("P0001"); - phone.setName("Smart Phone"); - phone.setCategory("Electronics"); - phone.setDescription("New Item"); - productRepository.save(phone); - - final Product phoneCover = new Product(); - phoneCover.setId("P0002"); - phoneCover.setName("Cover"); - phoneCover.setCategory("Phone"); - phoneCover.setDescription("New Product"); - productRepository.save(phoneCover); - - final Product wirelessCharger = new Product(); - wirelessCharger.setId("P0003"); - wirelessCharger.setName("Charging Cable"); - wirelessCharger.setCategory("Cable"); - wirelessCharger.setDescription("Wireless Charger for Phone"); - productRepository.save(wirelessCharger); + final Product phone = new Product(); + phone.setId("P0001"); + phone.setName("Smart Phone"); + productRepository.save(phone); + + final Product phoneCover = new Product(); + phoneCover.setId("P0002"); + phoneCover.setName("Phone Cover"); + productRepository.save(phoneCover); + + final Product wirelessCharger = new Product(); + wirelessCharger.setId("P0003"); + wirelessCharger.setName("Phone Charging Cable"); + productRepository.save(wirelessCharger); Page result = productRepository.findByCustomQuery("Phone", new PageRequest(0, 10)); assertEquals(3, result.getNumberOfElements()); @@ -119,22 +106,16 @@ public class ProductRepositoryIntegrationTest { final Product phone = new Product(); phone.setId("P0001"); phone.setName("Smart Phone"); - phone.setCategory("Electronics"); - phone.setDescription("New Item"); productRepository.save(phone); final Product phoneCover = new Product(); phoneCover.setId("P0002"); - phoneCover.setName("Cover"); - phoneCover.setCategory("Phone"); - phoneCover.setDescription("New Product"); + phoneCover.setName("Phone Cover"); productRepository.save(phoneCover); final Product wirelessCharger = new Product(); wirelessCharger.setId("P0003"); - wirelessCharger.setName("Charging Cable"); - wirelessCharger.setCategory("Cable"); - wirelessCharger.setDescription("Wireless Charger for Phone"); + wirelessCharger.setName("Phone Charging Cable"); productRepository.save(wirelessCharger); Page result = productRepository.findByNamedQuery("one", new PageRequest(0, 10)); From 26864e2897a255e6582a17a09fbe62091feaad46 Mon Sep 17 00:00:00 2001 From: mujah Date: Sat, 12 Nov 2016 12:32:30 +0800 Subject: [PATCH 030/399] query changes --- .../baeldung/spring/data/solr/repository/ProductRepository.java | 2 +- .../src/main/resources/solr-named-queries.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java index d016e46f52..0ab1418a1d 100644 --- a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java +++ b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java @@ -13,7 +13,7 @@ public interface ProductRepository extends SolrCrudRepository { public List findByName(String name); - @Query("name:*?0* OR description:*?0*") + @Query("id:*?0* OR name:*?0*") public Page findByCustomQuery(String searchTerm, Pageable pageable); @Query(name = "Product.findByNamedQuery") diff --git a/spring-data-solr/src/main/resources/solr-named-queries.properties b/spring-data-solr/src/main/resources/solr-named-queries.properties index ed3f9a534a..c00b5bace9 100644 --- a/spring-data-solr/src/main/resources/solr-named-queries.properties +++ b/spring-data-solr/src/main/resources/solr-named-queries.properties @@ -1 +1 @@ -Product.findByNamedQuery=name:*?0* OR description:*?0* \ No newline at end of file +Product.findByNamedQuery=id:*?0* OR name:*?0* \ No newline at end of file From 8ccfd201e6be15a6fbbfd972c2f9c2c27eec4489 Mon Sep 17 00:00:00 2001 From: mujah Date: Sat, 12 Nov 2016 12:35:55 +0800 Subject: [PATCH 031/399] formatting --- .../spring/data/solr/config/SolrConfig.java | 16 +- .../ProductRepositoryIntegrationTest.java | 202 +++++++++--------- 2 files changed, 109 insertions(+), 109 deletions(-) diff --git a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/config/SolrConfig.java b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/config/SolrConfig.java index 1fe1e5468b..73f5b36d45 100644 --- a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/config/SolrConfig.java +++ b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/config/SolrConfig.java @@ -13,13 +13,13 @@ import org.springframework.data.solr.repository.config.EnableSolrRepositories; @ComponentScan public class SolrConfig { - @Bean - public SolrClient solrClient() { - return new HttpSolrClient("http://localhost:8983/solr"); - } + @Bean + public SolrClient solrClient() { + return new HttpSolrClient("http://localhost:8983/solr"); + } - @Bean - public SolrTemplate solrTemplate(SolrClient client) throws Exception { - return new SolrTemplate(client); - } + @Bean + public SolrTemplate solrTemplate(SolrClient client) throws Exception { + return new SolrTemplate(client); + } } diff --git a/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java b/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java index 815a188c06..1335e82392 100644 --- a/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java +++ b/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java @@ -21,105 +21,105 @@ import com.baeldung.spring.data.solr.repository.ProductRepository; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = SolrConfig.class) public class ProductRepositoryIntegrationTest { - - @Autowired - private ProductRepository productRepository; - - @Before - public void clearSolrData() { - productRepository.deleteAll(); - } - - @Test - public void whenSavingProduct_thenAvailableOnRetrieval() throws Exception { - final Product product = new Product(); - product.setId("P000089998"); - product.setName("Desk"); - productRepository.save(product); - final Product retrievedProduct = productRepository.findOne(product.getId()); - assertEquals(product.getId(), retrievedProduct.getId()); - } - - @Test - public void whenUpdatingProduct_thenChangeAvailableOnRetrieval() throws Exception { - final Product product = new Product(); - product.setId("P0001"); - product.setName("T-Shirt"); - - productRepository.save(product); - - product.setName("Shirt"); - productRepository.save(product); - - final Product retrievedProduct = productRepository.findOne(product.getId()); - assertEquals(product.getName(), retrievedProduct.getName()); - } - - @Test - public void whenDeletingProduct_thenNotAvailableOnRetrieval() throws Exception { - final Product product = new Product(); - product.setId("P0001"); - product.setName("Desk"); - productRepository.save(product); - - productRepository.delete(product); - - Product retrievedProduct = productRepository.findOne(product.getId()); - assertNull(retrievedProduct); - - } - - @Test - public void whenFindByName_thenAvailableOnRetrieval() throws Exception { - Product phone = new Product(); - phone.setId("P0001"); - phone.setName("Phone"); - productRepository.save(phone); - - List retrievedProducts = productRepository.findByName("Phone"); - assertEquals(phone.getId(), retrievedProducts.get(0).getId()); - } - - @Test - public void whenSearchingProductsByQuery_thenAllMatchingProductsShouldAvialble() throws Exception { - final Product phone = new Product(); - phone.setId("P0001"); - phone.setName("Smart Phone"); - productRepository.save(phone); - - final Product phoneCover = new Product(); - phoneCover.setId("P0002"); - phoneCover.setName("Phone Cover"); - productRepository.save(phoneCover); - - final Product wirelessCharger = new Product(); - wirelessCharger.setId("P0003"); - wirelessCharger.setName("Phone Charging Cable"); - productRepository.save(wirelessCharger); - - Page result = productRepository.findByCustomQuery("Phone", new PageRequest(0, 10)); - assertEquals(3, result.getNumberOfElements()); - } - - @Test - public void whenSearchingProductsByNamedQuery_thenAllMatchingProductsShouldAvialble() throws Exception { - final Product phone = new Product(); - phone.setId("P0001"); - phone.setName("Smart Phone"); - productRepository.save(phone); - - final Product phoneCover = new Product(); - phoneCover.setId("P0002"); - phoneCover.setName("Phone Cover"); - productRepository.save(phoneCover); - - final Product wirelessCharger = new Product(); - wirelessCharger.setId("P0003"); - wirelessCharger.setName("Phone Charging Cable"); - productRepository.save(wirelessCharger); - - Page result = productRepository.findByNamedQuery("one", new PageRequest(0, 10)); - assertEquals(3, result.getNumberOfElements()); - } - + + @Autowired + private ProductRepository productRepository; + + @Before + public void clearSolrData() { + productRepository.deleteAll(); + } + + @Test + public void whenSavingProduct_thenAvailableOnRetrieval() throws Exception { + final Product product = new Product(); + product.setId("P000089998"); + product.setName("Desk"); + productRepository.save(product); + final Product retrievedProduct = productRepository.findOne(product.getId()); + assertEquals(product.getId(), retrievedProduct.getId()); + } + + @Test + public void whenUpdatingProduct_thenChangeAvailableOnRetrieval() throws Exception { + final Product product = new Product(); + product.setId("P0001"); + product.setName("T-Shirt"); + + productRepository.save(product); + + product.setName("Shirt"); + productRepository.save(product); + + final Product retrievedProduct = productRepository.findOne(product.getId()); + assertEquals(product.getName(), retrievedProduct.getName()); + } + + @Test + public void whenDeletingProduct_thenNotAvailableOnRetrieval() throws Exception { + final Product product = new Product(); + product.setId("P0001"); + product.setName("Desk"); + productRepository.save(product); + + productRepository.delete(product); + + Product retrievedProduct = productRepository.findOne(product.getId()); + assertNull(retrievedProduct); + + } + + @Test + public void whenFindByName_thenAvailableOnRetrieval() throws Exception { + Product phone = new Product(); + phone.setId("P0001"); + phone.setName("Phone"); + productRepository.save(phone); + + List retrievedProducts = productRepository.findByName("Phone"); + assertEquals(phone.getId(), retrievedProducts.get(0).getId()); + } + + @Test + public void whenSearchingProductsByQuery_thenAllMatchingProductsShouldAvialble() throws Exception { + final Product phone = new Product(); + phone.setId("P0001"); + phone.setName("Smart Phone"); + productRepository.save(phone); + + final Product phoneCover = new Product(); + phoneCover.setId("P0002"); + phoneCover.setName("Phone Cover"); + productRepository.save(phoneCover); + + final Product wirelessCharger = new Product(); + wirelessCharger.setId("P0003"); + wirelessCharger.setName("Phone Charging Cable"); + productRepository.save(wirelessCharger); + + Page result = productRepository.findByCustomQuery("Phone", new PageRequest(0, 10)); + assertEquals(3, result.getNumberOfElements()); + } + + @Test + public void whenSearchingProductsByNamedQuery_thenAllMatchingProductsShouldAvialble() throws Exception { + final Product phone = new Product(); + phone.setId("P0001"); + phone.setName("Smart Phone"); + productRepository.save(phone); + + final Product phoneCover = new Product(); + phoneCover.setId("P0002"); + phoneCover.setName("Phone Cover"); + productRepository.save(phoneCover); + + final Product wirelessCharger = new Product(); + wirelessCharger.setId("P0003"); + wirelessCharger.setName("Phone Charging Cable"); + productRepository.save(wirelessCharger); + + Page result = productRepository.findByNamedQuery("one", new PageRequest(0, 10)); + assertEquals(3, result.getNumberOfElements()); + } + } From 58e704a0b873a965d7c9062e6b37a9c8f4265b5b Mon Sep 17 00:00:00 2001 From: tschiman Date: Sat, 12 Nov 2016 09:30:44 -0700 Subject: [PATCH 032/399] BAEL-89 Spring session breaking out the controller and changing the formatting to be in line with the baeldung standard. --- .../session/tomcatex/JettyWebApplication.java | 13 ---------- .../session/tomcatex/TestController.java | 15 +++++++++++ .../session/tomcatex/TestController.java | 26 +++++++++++++++++++ .../tomcatex/TomcatWebApplication.java | 18 ------------- 4 files changed, 41 insertions(+), 31 deletions(-) create mode 100644 spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java create mode 100644 spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java index 7bbc776eaa..947abc2dff 100644 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java +++ b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/JettyWebApplication.java @@ -2,23 +2,10 @@ package com.baeldung.spring.session.tomcatex; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; @SpringBootApplication -@RestController public class JettyWebApplication { public static void main(String[] args) { SpringApplication.run(JettyWebApplication.class, args); } - - @RequestMapping - public String helloJetty() { - return "hello Jetty"; - } - - @RequestMapping("/test") - public String lksjdf() { - return ""; - } } diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java new file mode 100644 index 0000000000..6350a68041 --- /dev/null +++ b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java @@ -0,0 +1,15 @@ +package com.baeldung.spring.session.tomcatex; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Created by tschi on 11/12/2016. + */ +@RestController +public class TestController { + @RequestMapping + public String helloJetty() { + return "hello Jetty"; + } +} diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java new file mode 100644 index 0000000000..c84204c6ee --- /dev/null +++ b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java @@ -0,0 +1,26 @@ +package com.baeldung.spring.session.tomcatex; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Created by tschi on 11/12/2016. + */ +@RestController +public class TestController { + + @RequestMapping + public String helloDefault() { + return "hello default"; + } + + @RequestMapping("/tomcat") + public String helloTomcat() { + return "hello tomcat"; + } + + @RequestMapping("/tomcat/admin") + public String helloTomcatAdmin() { + return "hello tomcat admin"; + } +} diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java index 58c6b807ec..fb4e059dd1 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java +++ b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java @@ -2,28 +2,10 @@ package com.baeldung.spring.session.tomcatex; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; @SpringBootApplication -@RestController public class TomcatWebApplication { public static void main(String[] args) { SpringApplication.run(TomcatWebApplication.class, args); } - - @RequestMapping - public String helloDefault() { - return "hello default"; - } - - @RequestMapping("/tomcat") - public String helloTomcat() { - return "hello tomcat"; - } - - @RequestMapping("/tomcat/admin") - public String helloTomcatAdmin() { - return "hello tomcat admin"; - } } From 94bfcd3b265fece6483ebfe5926d2966ba4223d1 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Sat, 12 Nov 2016 22:15:57 +0100 Subject: [PATCH 033/399] Merge with main eugen branch --- .../com/baeldung/hexToAscii/HexToAscii.java | 46 +++++ .../equalshashcode/entities/ComplexClass.java | 63 ++++++ .../entities/PrimitiveClass.java | 54 +++++ .../equalshashcode/entities/Rectangle.java | 58 ++++++ .../equalshashcode/entities/Shape.java | 7 + .../equalshashcode/entities/Square.java | 58 ++++++ .../executable/ExecutableMavenJar.java | 11 + .../interfaces/NetworkInterfaceTest.java | 122 +++++++++++ .../java/com/baeldung/java/nio2/PathTest.java | 195 ++++++++++++++++++ .../front/controller/filters/AuditFilter.java | 25 +++ .../filters/VisitorCounterFilter.java | 23 +++ enterprise-patterns/pom.xml | 35 ++++ 12 files changed, 697 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java create mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java create mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java create mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java create mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java create mode 100644 core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java create mode 100644 core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java create mode 100644 core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/PathTest.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java create mode 100644 enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java create mode 100644 enterprise-patterns/pom.xml diff --git a/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java b/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java new file mode 100644 index 0000000000..2a3c4b109e --- /dev/null +++ b/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java @@ -0,0 +1,46 @@ +package com.baeldung.hexToAscii; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class HexToAscii { + + @Test + public static void whenHexToAscii() { + String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; + String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; + + assertEquals(asciiString, hexToAscii(hexEquivalent)); + } + + @Test + public static void whenAsciiToHex() { + String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; + String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; + + assertEquals(hexEquivalent, asciiToHex(asciiString)); + } + + // + + private static String asciiToHex(String asciiStr) { + char[] chars = asciiStr.toCharArray(); + StringBuilder hex = new StringBuilder(); + for (char ch : chars) { + hex.append(Integer.toHexString((int) ch)); + } + + return hex.toString(); + } + + private static String hexToAscii(String hexStr) { + StringBuilder output = new StringBuilder(""); + for (int i = 0; i < hexStr.length(); i += 2) { + String str = hexStr.substring(i, i + 2); + output.append((char) Integer.parseInt(str, 16)); + } + return output.toString(); + } + +} diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java new file mode 100644 index 0000000000..6329f41252 --- /dev/null +++ b/core-java/src/main/java/org/baeldung/equalshashcode/entities/ComplexClass.java @@ -0,0 +1,63 @@ +package org.baeldung.equalshashcode.entities; + +import java.util.List; +import java.util.Set; + +public class ComplexClass { + + private List genericList; + private Set integerSet; + + public ComplexClass(List genericArrayList, Set integerHashSet) { + super(); + this.genericList = genericArrayList; + this.integerSet = integerHashSet; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((genericList == null) ? 0 : genericList.hashCode()); + result = prime * result + ((integerSet == null) ? 0 : integerSet.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof ComplexClass)) + return false; + ComplexClass other = (ComplexClass) obj; + if (genericList == null) { + if (other.genericList != null) + return false; + } else if (!genericList.equals(other.genericList)) + return false; + if (integerSet == null) { + if (other.integerSet != null) + return false; + } else if (!integerSet.equals(other.integerSet)) + return false; + return true; + } + + protected List getGenericList() { + return genericList; + } + + protected void setGenericArrayList(List genericList) { + this.genericList = genericList; + } + + protected Set getIntegerSet() { + return integerSet; + } + + protected void setIntegerSet(Set integerSet) { + this.integerSet = integerSet; + } +} diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java new file mode 100644 index 0000000000..ebe005688c --- /dev/null +++ b/core-java/src/main/java/org/baeldung/equalshashcode/entities/PrimitiveClass.java @@ -0,0 +1,54 @@ +package org.baeldung.equalshashcode.entities; + +public class PrimitiveClass { + + private boolean primitiveBoolean; + private int primitiveInt; + + public PrimitiveClass(boolean primitiveBoolean, int primitiveInt) { + super(); + this.primitiveBoolean = primitiveBoolean; + this.primitiveInt = primitiveInt; + } + + protected boolean isPrimitiveBoolean() { + return primitiveBoolean; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (primitiveBoolean ? 1231 : 1237); + result = prime * result + primitiveInt; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + PrimitiveClass other = (PrimitiveClass) obj; + if (primitiveBoolean != other.primitiveBoolean) + return false; + if (primitiveInt != other.primitiveInt) + return false; + return true; + } + + protected void setPrimitiveBoolean(boolean primitiveBoolean) { + this.primitiveBoolean = primitiveBoolean; + } + + protected int getPrimitiveInt() { + return primitiveInt; + } + + protected void setPrimitiveInt(int primitiveInt) { + this.primitiveInt = primitiveInt; + } +} diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java new file mode 100644 index 0000000000..1e1423f0b3 --- /dev/null +++ b/core-java/src/main/java/org/baeldung/equalshashcode/entities/Rectangle.java @@ -0,0 +1,58 @@ +package org.baeldung.equalshashcode.entities; + +public class Rectangle extends Shape { + private double width; + private double length; + + public Rectangle(double width, double length) { + this.width = width; + this.length = length; + } + + @Override + public double area() { + return width * length; + } + + @Override + public double perimeter() { + return 2 * (width + length); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + long temp; + temp = Double.doubleToLongBits(length); + result = prime * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(width); + result = prime * result + (int) (temp ^ (temp >>> 32)); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Rectangle other = (Rectangle) obj; + if (Double.doubleToLongBits(length) != Double.doubleToLongBits(other.length)) + return false; + if (Double.doubleToLongBits(width) != Double.doubleToLongBits(other.width)) + return false; + return true; + } + + protected double getWidth() { + return width; + } + + protected double getLength() { + return length; + } + +} \ No newline at end of file diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java new file mode 100644 index 0000000000..3bfc81da8f --- /dev/null +++ b/core-java/src/main/java/org/baeldung/equalshashcode/entities/Shape.java @@ -0,0 +1,7 @@ +package org.baeldung.equalshashcode.entities; + +public abstract class Shape { + public abstract double area(); + + public abstract double perimeter(); +} diff --git a/core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java b/core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java new file mode 100644 index 0000000000..f11e34f0ba --- /dev/null +++ b/core-java/src/main/java/org/baeldung/equalshashcode/entities/Square.java @@ -0,0 +1,58 @@ +package org.baeldung.equalshashcode.entities; + +import java.awt.Color; + +public class Square extends Rectangle { + + Color color; + + public Square(double width, Color color) { + super(width, width); + this.color = color; + } + + /* (non-Javadoc) + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((color == null) ? 0 : color.hashCode()); + return result; + } + + /* (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof Square)) { + return false; + } + Square other = (Square) obj; + if (color == null) { + if (other.color != null) { + return false; + } + } else if (!color.equals(other.color)) { + return false; + } + return true; + } + + protected Color getColor() { + return color; + } + + protected void setColor(Color color) { + this.color = color; + } + +} diff --git a/core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java b/core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java new file mode 100644 index 0000000000..09344902b7 --- /dev/null +++ b/core-java/src/main/java/org/baeldung/executable/ExecutableMavenJar.java @@ -0,0 +1,11 @@ +package org.baeldung.executable; + +import javax.swing.JOptionPane; + +public class ExecutableMavenJar { + + public static void main(String[] args) { + JOptionPane.showMessageDialog(null, "It worked!", "Executable Jar with Maven", 1); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java b/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java new file mode 100644 index 0000000000..4a8ef57b8f --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java @@ -0,0 +1,122 @@ +package com.baeldung.java.networking.interfaces; + +import static org.junit.Assert.*; + +import java.net.InetAddress; +import java.net.InterfaceAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; +import java.util.Enumeration; +import java.util.List; + +import org.junit.Test; + +public class NetworkInterfaceTest { + @Test + public void givenName_whenReturnsNetworkInterface_thenCorrect() throws SocketException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertNotNull(nif); + } + + @Test + public void givenInExistentName_whenReturnsNull_thenCorrect() throws SocketException { + NetworkInterface nif = NetworkInterface.getByName("inexistent_name"); + assertNull(nif); + } + + @Test + public void givenIP_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + byte[] ip = new byte[] { 127, 0, 0, 1 }; + NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getByAddress(ip)); + assertNotNull(nif); + } + + @Test + public void givenHostName_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getByName("localhost")); + assertNotNull(nif); + } + + @Test + public void givenLocalHost_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()); + assertNotNull(nif); + } + + @Test + public void givenLoopBack_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getLoopbackAddress()); + assertNotNull(nif); + } + + @Test + public void givenIndex_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByIndex(0); + assertNotNull(nif); + } + + @Test + public void givenInterface_whenReturnsInetAddresses_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + Enumeration addressEnum = nif.getInetAddresses(); + InetAddress address = addressEnum.nextElement(); + assertEquals("127.0.0.1", address.getHostAddress()); + } + + @Test + public void givenInterface_whenReturnsInterfaceAddresses_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + + List addressEnum = nif.getInterfaceAddresses(); + InterfaceAddress address = addressEnum.get(0); + InetAddress localAddress = address.getAddress(); + InetAddress broadCastAddress = address.getBroadcast(); + assertEquals("127.0.0.1", localAddress.getHostAddress()); + assertEquals("127.255.255.255", broadCastAddress.getHostAddress()); + } + + @Test + public void givenInterface_whenChecksIfLoopback_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertTrue(nif.isLoopback()); + } + + @Test + public void givenInterface_whenChecksIfUp_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertTrue(nif.isUp()); + } + + @Test + public void givenInterface_whenChecksIfPointToPoint_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertFalse(nif.isPointToPoint()); + } + + @Test + public void givenInterface_whenChecksIfVirtual_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertFalse(nif.isVirtual()); + } + + @Test + public void givenInterface_whenChecksMulticastSupport_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + assertTrue(nif.supportsMulticast()); + } + + @Test + public void givenInterface_whenGetsMacAddress_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("lo"); + byte[] bytes = nif.getHardwareAddress(); + assertNotNull(bytes); + } + + @Test + public void givenInterface_whenGetsMTU_thenCorrect() throws SocketException, UnknownHostException { + NetworkInterface nif = NetworkInterface.getByName("net0"); + int mtu = nif.getMTU(); + assertEquals(1500, mtu); + } +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java b/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java new file mode 100644 index 0000000000..004aeb3deb --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java @@ -0,0 +1,195 @@ +package com.baeldung.java.nio2; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.net.URI; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Date; + +import org.junit.Test; + +public class PathTest { + + private static final String HOME = System.getProperty("user.home"); + + // creating a path + @Test + public void givenPathString_whenCreatesPathObject_thenCorrect() { + Path p = Paths.get("/articles/baeldung"); + assertEquals("\\articles\\baeldung", p.toString()); + + } + + @Test + public void givenPathParts_whenCreatesPathObject_thenCorrect() { + Path p = Paths.get("/articles", "baeldung"); + assertEquals("\\articles\\baeldung", p.toString()); + + } + + // retrieving path info + @Test + public void givenPath_whenRetrievesFileName_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals("logs", p.getFileName().toString()); + } + + @Test + public void givenPath_whenRetrievesNameByIndex_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals("articles", p.getName(0).toString()); + assertEquals("baeldung", p.getName(1).toString()); + assertEquals("logs", p.getName(2).toString()); + } + + @Test + public void givenPath_whenCountsParts_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals(3, p.getNameCount()); + } + + @Test + public void givenPath_whenCanRetrieveSubsequenceByIndex_thenCorrect() { + Path p = Paths.get("/articles/baeldung/logs"); + assertEquals("articles", p.subpath(0, 1).toString()); + assertEquals("articles\\baeldung", p.subpath(0, 2).toString()); + assertEquals("articles\\baeldung\\logs", p.subpath(0, 3).toString()); + assertEquals("baeldung", p.subpath(1, 2).toString()); + assertEquals("baeldung\\logs", p.subpath(1, 3).toString()); + assertEquals("logs", p.subpath(2, 3).toString()); + } + + @Test + public void givenPath_whenRetrievesParent_thenCorrect() { + Path p1 = Paths.get("/articles/baeldung/logs"); + Path p2 = Paths.get("/articles/baeldung"); + Path p3 = Paths.get("/articles"); + Path p4 = Paths.get("/"); + + assertEquals("\\articles\\baeldung", p1.getParent().toString()); + assertEquals("\\articles", p2.getParent().toString()); + assertEquals("\\", p3.getParent().toString()); + assertEquals(null, p4.getParent()); + } + + @Test + public void givenPath_whenRetrievesRoot_thenCorrect() { + Path p1 = Paths.get("/articles/baeldung/logs"); + Path p2 = Paths.get("c:/articles/baeldung/logs"); + + assertEquals("\\", p1.getRoot().toString()); + assertEquals("c:\\", p2.getRoot().toString()); + } + + // removing redundancies from path + @Test + public void givenPath_whenRemovesRedundancies_thenCorrect1() { + Path p = Paths.get("/home/./baeldung/articles"); + p = p.normalize(); + assertEquals("\\home\\baeldung\\articles", p.toString()); + } + + @Test + public void givenPath_whenRemovesRedundancies_thenCorrect2() { + Path p = Paths.get("/home/baeldung/../articles"); + p = p.normalize(); + assertEquals("\\home\\articles", p.toString()); + } + + // converting a path + @Test + public void givenPath_whenConvertsToBrowseablePath_thenCorrect() { + Path p = Paths.get("/home/baeldung/articles.html"); + URI uri = p.toUri(); + assertEquals("file:///E:/home/baeldung/articles.html", uri.toString()); + } + + @Test + public void givenPath_whenConvertsToAbsolutePath_thenCorrect() { + Path p = Paths.get("/home/baeldung/articles.html"); + assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); + } + + @Test + public void givenAbsolutePath_whenRetainsAsAbsolute_thenCorrect() { + Path p = Paths.get("E:\\home\\baeldung\\articles.html"); + assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); + } + + @Test + public void givenExistingPath_whenGetsRealPathToFile_thenCorrect() throws IOException { + Path p = Paths.get(HOME); + assertEquals(HOME, p.toRealPath().toString()); + } + + @Test(expected = NoSuchFileException.class) + public void givenInExistentPath_whenFailsToConvert_thenCorrect() throws IOException { + Path p = Paths.get("E:\\home\\baeldung\\articles.html"); + + p.toRealPath(); + } + + // joining paths + @Test + public void givenTwoPaths_whenJoinsAndResolves_thenCorrect() throws IOException { + Path p = Paths.get("/baeldung/articles"); + assertEquals("\\baeldung\\articles\\java", p.resolve("java").toString()); + } + + @Test + public void givenAbsolutePath_whenResolutionRetainsIt_thenCorrect() throws IOException { + Path p = Paths.get("/baeldung/articles"); + assertEquals("C:\\baeldung\\articles\\java", p.resolve("C:\\baeldung\\articles\\java").toString()); + } + + @Test + public void givenPathWithRoot_whenResolutionRetainsIt_thenCorrect2() throws IOException { + Path p = Paths.get("/baeldung/articles"); + assertEquals("\\java", p.resolve("/java").toString()); + } + + // creating a path between 2 paths + @Test + public void givenSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { + Path p1 = Paths.get("articles"); + Path p2 = Paths.get("authors"); + assertEquals("..\\authors", p1.relativize(p2).toString()); + assertEquals("..\\articles", p2.relativize(p1).toString()); + } + + @Test + public void givenNonSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { + Path p1 = Paths.get("/baeldung"); + Path p2 = Paths.get("/baeldung/authors/articles"); + assertEquals("authors\\articles", p1.relativize(p2).toString()); + assertEquals("..\\..", p2.relativize(p1).toString()); + } + + // comparing 2 paths + @Test + public void givenTwoPaths_whenTestsEquality_thenCorrect() throws IOException { + Path p1 = Paths.get("/baeldung/articles"); + Path p2 = Paths.get("/baeldung/articles"); + Path p3 = Paths.get("/baeldung/authors"); + + assertTrue(p1.equals(p2)); + assertFalse(p1.equals(p3)); + } + + @Test + public void givenPath_whenInspectsStart_thenCorrect() { + Path p1 = Paths.get("/baeldung/articles"); + assertTrue(p1.startsWith("/baeldung")); + } + + @Test + public void givenPath_whenInspectsEnd_thenCorrect() { + Path p1 = Paths.get("/baeldung/articles"); + assertTrue(p1.endsWith("articles")); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java new file mode 100644 index 0000000000..d24c0a94b3 --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/AuditFilter.java @@ -0,0 +1,25 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class AuditFilter extends BaseFilter { + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + HttpSession session = httpServletRequest.getSession(false); + if (session != null && session.getAttribute("username") != null) { + request.setAttribute("username", session.getAttribute("username")); + } + chain.doFilter(request, response); + } +} diff --git a/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java new file mode 100644 index 0000000000..0ae7cd73fd --- /dev/null +++ b/enterprise-patterns/intercepting-filter-pattern/src/main/java/com/baeldung/enterprise/patterns/front/controller/filters/VisitorCounterFilter.java @@ -0,0 +1,23 @@ +package com.baeldung.enterprise.patterns.front.controller.filters; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import java.io.IOException; + +@WebFilter(servletNames = "front-controller") +public class VisitorCounterFilter extends BaseFilter { + private int counter; + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, + FilterChain chain + ) throws IOException, ServletException { + request.setAttribute("counter", ++counter); + chain.doFilter(request, response); + } +} diff --git a/enterprise-patterns/pom.xml b/enterprise-patterns/pom.xml new file mode 100644 index 0000000000..036a61c44a --- /dev/null +++ b/enterprise-patterns/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + com.baeldung.enterprise.patterns + enterprise-patterns-parent + pom + + spring-dispatcher-servlet + + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + + + From 9b0aa76e7e42726826217cb2197914a1774a444a Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Sat, 12 Nov 2016 23:11:46 +0100 Subject: [PATCH 034/399] Junit 5 --- junit5/{REDAME.md => README.md} | 0 junit5/pom.xml | 120 +++++++----------- .../test/java/com/baeldung/AssertionTest.java | 29 +++++ .../java/com/baeldung/AssumptionTest.java | 8 +- .../test/java/com/baeldung/ExceptionTest.java | 30 +++-- .../src/test/java/com/baeldung/FirstTest.java | 6 +- .../com/baeldung/JUnit5NewFeaturesTest.java | 50 ++++++++ .../src/test/java/com/baeldung/LiveTest.java | 38 ++++++ .../test/java/com/baeldung/NestedTest.java | 8 +- .../test/java/com/baeldung/StringUtils.java | 11 ++ .../test/java/com/baeldung/TaggedTest.java | 6 +- .../java/com/baeldung/suites/AllTests.java | 8 ++ 12 files changed, 217 insertions(+), 97 deletions(-) rename junit5/{REDAME.md => README.md} (100%) create mode 100644 junit5/src/test/java/com/baeldung/AssertionTest.java create mode 100644 junit5/src/test/java/com/baeldung/JUnit5NewFeaturesTest.java create mode 100644 junit5/src/test/java/com/baeldung/LiveTest.java create mode 100644 junit5/src/test/java/com/baeldung/StringUtils.java create mode 100644 junit5/src/test/java/com/baeldung/suites/AllTests.java diff --git a/junit5/REDAME.md b/junit5/README.md similarity index 100% rename from junit5/REDAME.md rename to junit5/README.md diff --git a/junit5/pom.xml b/junit5/pom.xml index 5a2ea61668..84d64e7b42 100644 --- a/junit5/pom.xml +++ b/junit5/pom.xml @@ -1,83 +1,53 @@ - - 4.0.0 + + 4.0.0 - com.baeldung - junit5 - 1.0-SNAPSHOT + com.baeldung + junit5 + 1.0-SNAPSHOT - junit5 - Intro to JUnit 5 + junit5 + Intro to JUnit 5 - - UTF-8 - 1.8 - - 5.0.0-SNAPSHOT - + + UTF-8 + 1.8 + 5.0.0-M2 + 1.0.0-M2 + - - - snapshots-repo - https://oss.sonatype.org/content/repositories/snapshots - - false - - - - always - true - - - + + + + maven-compiler-plugin + 3.1 + + ${java.version} + ${java.version} + + + + maven-surefire-plugin + 2.19 + + + org.junit.platform + junit-platform-surefire-provider + ${junit.platform.version} + + + + + - - - snapshots-repo - https://oss.sonatype.org/content/repositories/snapshots - - false - - - - always - true - - - + + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + test + - - - - maven-compiler-plugin - 3.1 - - ${java.version} - ${java.version} - - - - maven-surefire-plugin - 2.19 - - - org.junit - surefire-junit5 - ${junit.gen5.version} - - - - - - - - - org.junit - junit5-api - ${junit.gen5.version} - test - - + \ No newline at end of file diff --git a/junit5/src/test/java/com/baeldung/AssertionTest.java b/junit5/src/test/java/com/baeldung/AssertionTest.java new file mode 100644 index 0000000000..70297b9073 --- /dev/null +++ b/junit5/src/test/java/com/baeldung/AssertionTest.java @@ -0,0 +1,29 @@ +package com.baeldung; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.expectThrows; + +import org.junit.jupiter.api.Test; + +public class AssertionTest { + + @Test + public void testConvertToDoubleThrowException() { + String age = "eighteen"; + expectThrows(NumberFormatException.class, () -> { + convertToInt(age); + }); + + assertThrows(NumberFormatException.class, () -> { + convertToInt(age); + }); + } + + private static Integer convertToInt(String str) { + if (str == null) { + return null; + } + return Integer.valueOf(str); + } + +} diff --git a/junit5/src/test/java/com/baeldung/AssumptionTest.java b/junit5/src/test/java/com/baeldung/AssumptionTest.java index e4c2b56124..f6f288e8a7 100644 --- a/junit5/src/test/java/com/baeldung/AssumptionTest.java +++ b/junit5/src/test/java/com/baeldung/AssumptionTest.java @@ -1,9 +1,11 @@ package com.baeldung; -import org.junit.gen5.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assumptions.assumeFalse; +import static org.junit.jupiter.api.Assumptions.assumeTrue; +import static org.junit.jupiter.api.Assumptions.assumingThat; -import static org.junit.gen5.api.Assertions.assertEquals; -import static org.junit.gen5.api.Assumptions.*; +import org.junit.jupiter.api.Test; public class AssumptionTest { diff --git a/junit5/src/test/java/com/baeldung/ExceptionTest.java b/junit5/src/test/java/com/baeldung/ExceptionTest.java index 5c30ad5b44..b32f9344b7 100644 --- a/junit5/src/test/java/com/baeldung/ExceptionTest.java +++ b/junit5/src/test/java/com/baeldung/ExceptionTest.java @@ -1,18 +1,26 @@ package com.baeldung; -import org.junit.gen5.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.expectThrows; -import static org.junit.gen5.api.Assertions.assertEquals; -import static org.junit.gen5.api.Assertions.expectThrows; +import org.junit.jupiter.api.Test; public class ExceptionTest { - @Test - void shouldThrowException() { - Throwable exception = expectThrows(UnsupportedOperationException.class, - () -> { - throw new UnsupportedOperationException("Not supported"); - }); - assertEquals(exception.getMessage(), "Not supported"); - } + @Test + void shouldThrowException() { + Throwable exception = expectThrows(UnsupportedOperationException.class, () -> { + throw new UnsupportedOperationException("Not supported"); + }); + assertEquals(exception.getMessage(), "Not supported"); + } + + @Test + public void convertToIntNullParameterAssertThrows() { + String str = null; + assertThrows(IllegalArgumentException.class, () -> { + Integer.valueOf(str); + }); + } } diff --git a/junit5/src/test/java/com/baeldung/FirstTest.java b/junit5/src/test/java/com/baeldung/FirstTest.java index 3306dc01f9..817d8b36de 100644 --- a/junit5/src/test/java/com/baeldung/FirstTest.java +++ b/junit5/src/test/java/com/baeldung/FirstTest.java @@ -1,12 +1,12 @@ package com.baeldung; -import org.junit.gen5.api.Disabled; -import org.junit.gen5.api.Test; +import static org.junit.jupiter.api.Assertions.*; import java.util.Arrays; import java.util.List; -import static org.junit.gen5.api.Assertions.*; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; class FirstTest { diff --git a/junit5/src/test/java/com/baeldung/JUnit5NewFeaturesTest.java b/junit5/src/test/java/com/baeldung/JUnit5NewFeaturesTest.java new file mode 100644 index 0000000000..6c790a7c8e --- /dev/null +++ b/junit5/src/test/java/com/baeldung/JUnit5NewFeaturesTest.java @@ -0,0 +1,50 @@ +package com.baeldung; + +import java.util.logging.Logger; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +//@RunWith(JUnitPlatform.class) +public class JUnit5NewFeaturesTest { + + private static final Logger log = Logger.getLogger(JUnit5NewFeaturesTest.class.getName()); + + @BeforeAll + static void setup() { + log.info("@BeforeAll - executes once before all test methods in this class"); + } + + @BeforeEach + void init() { + log.info("@BeforeEach - executes before each test method in this class"); + } + + @DisplayName("Single test successful") + @Test + void testSingleSuccessTest() { + log.info("Success"); + + } + + @Test + @Disabled("Not implemented yet.") + void testShowSomething() { + } + + @AfterEach + void tearDown() { + log.info("@AfterEach - executed after each test method."); + } + + @AfterAll + static void done() { + log.info("@AfterAll - executed after all test methods."); + } + +} diff --git a/junit5/src/test/java/com/baeldung/LiveTest.java b/junit5/src/test/java/com/baeldung/LiveTest.java new file mode 100644 index 0000000000..e0e267da0b --- /dev/null +++ b/junit5/src/test/java/com/baeldung/LiveTest.java @@ -0,0 +1,38 @@ +package com.baeldung; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; + +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; + +public class LiveTest { + + private List in = new ArrayList<>(Arrays.asList("Hello", "Yes", "No")); + private List out = new ArrayList<>(Arrays.asList("Cześć", "Tak", "Nie")); + + @TestFactory + public Stream translateDynamicTestsFromStream() { + + return in.stream().map(word -> DynamicTest.dynamicTest("Test translate " + word, () -> { + int id = in.indexOf(word); + assertEquals(out.get(id), translate(word)); + })); + } + + private String translate(String word) { + if ("Hello".equalsIgnoreCase(word)) { + return "Cześć"; + } else if ("Yes".equalsIgnoreCase(word)) { + return "Tak"; + } else if ("No".equalsIgnoreCase(word)) { + return "Nie"; + } + return "Error"; + } + +} diff --git a/junit5/src/test/java/com/baeldung/NestedTest.java b/junit5/src/test/java/com/baeldung/NestedTest.java index 3fbe4f8644..b1c873e258 100644 --- a/junit5/src/test/java/com/baeldung/NestedTest.java +++ b/junit5/src/test/java/com/baeldung/NestedTest.java @@ -1,10 +1,14 @@ package com.baeldung; -import org.junit.gen5.api.*; - import java.util.EmptyStackException; import java.util.Stack; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + public class NestedTest { Stack stack; boolean isRun = false; diff --git a/junit5/src/test/java/com/baeldung/StringUtils.java b/junit5/src/test/java/com/baeldung/StringUtils.java new file mode 100644 index 0000000000..c1852113bc --- /dev/null +++ b/junit5/src/test/java/com/baeldung/StringUtils.java @@ -0,0 +1,11 @@ +package com.baeldung; + +public final class StringUtils { + + public static Double convertToDouble(String str) { + if (str == null) { + return null; + } + return Double.valueOf(str); + } +} diff --git a/junit5/src/test/java/com/baeldung/TaggedTest.java b/junit5/src/test/java/com/baeldung/TaggedTest.java index dbc82f4022..fa3a500240 100644 --- a/junit5/src/test/java/com/baeldung/TaggedTest.java +++ b/junit5/src/test/java/com/baeldung/TaggedTest.java @@ -1,9 +1,9 @@ package com.baeldung; -import org.junit.gen5.api.Tag; -import org.junit.gen5.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.gen5.api.Assertions.assertEquals; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; @Tag("Test case") public class TaggedTest { diff --git a/junit5/src/test/java/com/baeldung/suites/AllTests.java b/junit5/src/test/java/com/baeldung/suites/AllTests.java new file mode 100644 index 0000000000..24af1e733b --- /dev/null +++ b/junit5/src/test/java/com/baeldung/suites/AllTests.java @@ -0,0 +1,8 @@ +package com.baeldung.suites; + +//@RunWith(JUnitPlatform.class) +//@SelectPackages("com.baeldung") +//@SelectClasses({AssertionTest.class, AssumptionTest.class, ExceptionTest.class}) +public class AllTests { + +} From e356d283256c45a67ec5b81003b21c5d97f49d31 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Sun, 13 Nov 2016 09:57:45 +0100 Subject: [PATCH 035/399] Fix name of test and modifier --- junit5/src/test/java/com/baeldung/ExceptionTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/junit5/src/test/java/com/baeldung/ExceptionTest.java b/junit5/src/test/java/com/baeldung/ExceptionTest.java index b32f9344b7..31a6dff657 100644 --- a/junit5/src/test/java/com/baeldung/ExceptionTest.java +++ b/junit5/src/test/java/com/baeldung/ExceptionTest.java @@ -17,7 +17,7 @@ public class ExceptionTest { } @Test - public void convertToIntNullParameterAssertThrows() { + void assertThrowsException() { String str = null; assertThrows(IllegalArgumentException.class, () -> { Integer.valueOf(str); From 046b23685e3fcff325491ef06f33c5c7f36448a0 Mon Sep 17 00:00:00 2001 From: mujah Date: Sun, 13 Nov 2016 23:40:17 +0800 Subject: [PATCH 036/399] formatting changes --- spring-data-solr/pom.xml | 102 +++++------ .../spring/data/solr/config/SolrConfig.java | 16 +- .../spring/data/solr/model/Product.java | 15 +- .../solr/repository/ProductRepository.java | 10 +- .../ProductRepositoryIntegrationTest.java | 158 +++++++++--------- 5 files changed, 150 insertions(+), 151 deletions(-) diff --git a/spring-data-solr/pom.xml b/spring-data-solr/pom.xml index 6724c56add..ea9b282f66 100644 --- a/spring-data-solr/pom.xml +++ b/spring-data-solr/pom.xml @@ -1,55 +1,55 @@ - - 4.0.0 - com.baeldung - spring-data-solr - 0.0.1-SNAPSHOT - jar - spring-data-solr - - - - UTF-8 - 4.2.5.RELEASE - 2.19.1 - 2.0.4.RELEASE - - - - - org.springframework - spring-core - ${spring.version} - - - org.springframework.data - spring-data-solr - ${spring-data-solr} - - - org.springframework - spring-context - ${spring.version} - - - log4j - log4j - 1.2.16 - - - junit - junit - 4.12 - test - - - org.springframework - spring-test - ${spring.version} - test - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + 4.0.0 + com.baeldung + spring-data-solr + 0.0.1-SNAPSHOT + jar + spring-data-solr + + + + UTF-8 + 4.2.5.RELEASE + 2.19.1 + 2.0.4.RELEASE + + + + + org.springframework + spring-core + ${spring.version} + + + org.springframework.data + spring-data-solr + ${spring-data-solr} + + + org.springframework + spring-context + ${spring.version} + + + log4j + log4j + 1.2.16 + + + junit + junit + 4.12 + test + + + org.springframework + spring-test + ${spring.version} + test + + diff --git a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/config/SolrConfig.java b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/config/SolrConfig.java index 73f5b36d45..1fe1e5468b 100644 --- a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/config/SolrConfig.java +++ b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/config/SolrConfig.java @@ -13,13 +13,13 @@ import org.springframework.data.solr.repository.config.EnableSolrRepositories; @ComponentScan public class SolrConfig { - @Bean - public SolrClient solrClient() { - return new HttpSolrClient("http://localhost:8983/solr"); - } + @Bean + public SolrClient solrClient() { + return new HttpSolrClient("http://localhost:8983/solr"); + } - @Bean - public SolrTemplate solrTemplate(SolrClient client) throws Exception { - return new SolrTemplate(client); - } + @Bean + public SolrTemplate solrTemplate(SolrClient client) throws Exception { + return new SolrTemplate(client); + } } diff --git a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/model/Product.java b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/model/Product.java index 466af54191..5286f53309 100644 --- a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/model/Product.java +++ b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/model/Product.java @@ -6,29 +6,28 @@ import org.springframework.data.solr.core.mapping.SolrDocument; @SolrDocument(solrCoreName = "product") public class Product { - + @Id @Indexed(name = "id", type = "string") private String id; - + @Indexed(name = "name", type = "string") private String name; - - + public String getId() { return id; } - + public void setId(String id) { this.id = id; } - + public String getName() { return name; } - + public void setName(String name) { this.name = name; } - + } diff --git a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java index 0ab1418a1d..5649cd7888 100644 --- a/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java +++ b/spring-data-solr/src/main/java/com/baeldung/spring/data/solr/repository/ProductRepository.java @@ -11,12 +11,12 @@ import com.baeldung.spring.data.solr.model.Product; public interface ProductRepository extends SolrCrudRepository { - public List findByName(String name); + public List findByName(String name); - @Query("id:*?0* OR name:*?0*") - public Page findByCustomQuery(String searchTerm, Pageable pageable); + @Query("id:*?0* OR name:*?0*") + public Page findByCustomQuery(String searchTerm, Pageable pageable); - @Query(name = "Product.findByNamedQuery") - public Page findByNamedQuery(String searchTerm, Pageable pageable); + @Query(name = "Product.findByNamedQuery") + public Page findByNamedQuery(String searchTerm, Pageable pageable); } diff --git a/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java b/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java index 1335e82392..a3765a74ec 100644 --- a/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java +++ b/spring-data-solr/src/test/java/com/baeldung/spring/data/solr/repo/ProductRepositoryIntegrationTest.java @@ -22,104 +22,104 @@ import com.baeldung.spring.data.solr.repository.ProductRepository; @ContextConfiguration(classes = SolrConfig.class) public class ProductRepositoryIntegrationTest { - @Autowired - private ProductRepository productRepository; + @Autowired + private ProductRepository productRepository; - @Before - public void clearSolrData() { - productRepository.deleteAll(); - } + @Before + public void clearSolrData() { + productRepository.deleteAll(); + } - @Test - public void whenSavingProduct_thenAvailableOnRetrieval() throws Exception { - final Product product = new Product(); - product.setId("P000089998"); - product.setName("Desk"); - productRepository.save(product); - final Product retrievedProduct = productRepository.findOne(product.getId()); - assertEquals(product.getId(), retrievedProduct.getId()); - } + @Test + public void whenSavingProduct_thenAvailableOnRetrieval() throws Exception { + final Product product = new Product(); + product.setId("P000089998"); + product.setName("Desk"); + productRepository.save(product); + final Product retrievedProduct = productRepository.findOne(product.getId()); + assertEquals(product.getId(), retrievedProduct.getId()); + } - @Test - public void whenUpdatingProduct_thenChangeAvailableOnRetrieval() throws Exception { - final Product product = new Product(); - product.setId("P0001"); - product.setName("T-Shirt"); + @Test + public void whenUpdatingProduct_thenChangeAvailableOnRetrieval() throws Exception { + final Product product = new Product(); + product.setId("P0001"); + product.setName("T-Shirt"); - productRepository.save(product); + productRepository.save(product); - product.setName("Shirt"); - productRepository.save(product); + product.setName("Shirt"); + productRepository.save(product); - final Product retrievedProduct = productRepository.findOne(product.getId()); - assertEquals(product.getName(), retrievedProduct.getName()); - } + final Product retrievedProduct = productRepository.findOne(product.getId()); + assertEquals(product.getName(), retrievedProduct.getName()); + } - @Test - public void whenDeletingProduct_thenNotAvailableOnRetrieval() throws Exception { - final Product product = new Product(); - product.setId("P0001"); - product.setName("Desk"); - productRepository.save(product); + @Test + public void whenDeletingProduct_thenNotAvailableOnRetrieval() throws Exception { + final Product product = new Product(); + product.setId("P0001"); + product.setName("Desk"); + productRepository.save(product); - productRepository.delete(product); + productRepository.delete(product); - Product retrievedProduct = productRepository.findOne(product.getId()); - assertNull(retrievedProduct); + Product retrievedProduct = productRepository.findOne(product.getId()); + assertNull(retrievedProduct); - } + } - @Test - public void whenFindByName_thenAvailableOnRetrieval() throws Exception { - Product phone = new Product(); - phone.setId("P0001"); - phone.setName("Phone"); - productRepository.save(phone); + @Test + public void whenFindByName_thenAvailableOnRetrieval() throws Exception { + Product phone = new Product(); + phone.setId("P0001"); + phone.setName("Phone"); + productRepository.save(phone); - List retrievedProducts = productRepository.findByName("Phone"); - assertEquals(phone.getId(), retrievedProducts.get(0).getId()); - } + List retrievedProducts = productRepository.findByName("Phone"); + assertEquals(phone.getId(), retrievedProducts.get(0).getId()); + } - @Test - public void whenSearchingProductsByQuery_thenAllMatchingProductsShouldAvialble() throws Exception { - final Product phone = new Product(); - phone.setId("P0001"); - phone.setName("Smart Phone"); - productRepository.save(phone); + @Test + public void whenSearchingProductsByQuery_thenAllMatchingProductsShouldAvialble() throws Exception { + final Product phone = new Product(); + phone.setId("P0001"); + phone.setName("Smart Phone"); + productRepository.save(phone); - final Product phoneCover = new Product(); - phoneCover.setId("P0002"); - phoneCover.setName("Phone Cover"); - productRepository.save(phoneCover); + final Product phoneCover = new Product(); + phoneCover.setId("P0002"); + phoneCover.setName("Phone Cover"); + productRepository.save(phoneCover); - final Product wirelessCharger = new Product(); - wirelessCharger.setId("P0003"); - wirelessCharger.setName("Phone Charging Cable"); - productRepository.save(wirelessCharger); + final Product wirelessCharger = new Product(); + wirelessCharger.setId("P0003"); + wirelessCharger.setName("Phone Charging Cable"); + productRepository.save(wirelessCharger); - Page result = productRepository.findByCustomQuery("Phone", new PageRequest(0, 10)); - assertEquals(3, result.getNumberOfElements()); - } + Page result = productRepository.findByCustomQuery("Phone", new PageRequest(0, 10)); + assertEquals(3, result.getNumberOfElements()); + } - @Test - public void whenSearchingProductsByNamedQuery_thenAllMatchingProductsShouldAvialble() throws Exception { - final Product phone = new Product(); - phone.setId("P0001"); - phone.setName("Smart Phone"); - productRepository.save(phone); + @Test + public void whenSearchingProductsByNamedQuery_thenAllMatchingProductsShouldAvialble() throws Exception { + final Product phone = new Product(); + phone.setId("P0001"); + phone.setName("Smart Phone"); + productRepository.save(phone); - final Product phoneCover = new Product(); - phoneCover.setId("P0002"); - phoneCover.setName("Phone Cover"); - productRepository.save(phoneCover); + final Product phoneCover = new Product(); + phoneCover.setId("P0002"); + phoneCover.setName("Phone Cover"); + productRepository.save(phoneCover); - final Product wirelessCharger = new Product(); - wirelessCharger.setId("P0003"); - wirelessCharger.setName("Phone Charging Cable"); - productRepository.save(wirelessCharger); + final Product wirelessCharger = new Product(); + wirelessCharger.setId("P0003"); + wirelessCharger.setName("Phone Charging Cable"); + productRepository.save(wirelessCharger); - Page result = productRepository.findByNamedQuery("one", new PageRequest(0, 10)); - assertEquals(3, result.getNumberOfElements()); - } + Page result = productRepository.findByNamedQuery("one", new PageRequest(0, 10)); + assertEquals(3, result.getNumberOfElements()); + } } From dd6946585f5212c1bc6461360496e436c24c2a0c Mon Sep 17 00:00:00 2001 From: Diane Duan Date: Mon, 14 Nov 2016 14:53:12 +0800 Subject: [PATCH 037/399] core-java Properties class demos --- .../baeldung/properties/DefaultListDemo.java | 23 ++++++++ .../com/baeldung/properties/LoadDemo.java | 26 +++++++++ .../baeldung/properties/OperationsDemo.java | 57 +++++++++++++++++++ .../com/baeldung/properties/StoreDemo.java | 30 ++++++++++ core-java/src/main/resources/app.properties | 3 + core-java/src/main/resources/catalog | 3 + .../src/main/resources/default.properties | 4 ++ core-java/src/main/resources/icons.xml | 8 +++ 8 files changed, 154 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/properties/DefaultListDemo.java create mode 100644 core-java/src/main/java/com/baeldung/properties/LoadDemo.java create mode 100644 core-java/src/main/java/com/baeldung/properties/OperationsDemo.java create mode 100644 core-java/src/main/java/com/baeldung/properties/StoreDemo.java create mode 100644 core-java/src/main/resources/app.properties create mode 100644 core-java/src/main/resources/catalog create mode 100644 core-java/src/main/resources/default.properties create mode 100644 core-java/src/main/resources/icons.xml diff --git a/core-java/src/main/java/com/baeldung/properties/DefaultListDemo.java b/core-java/src/main/java/com/baeldung/properties/DefaultListDemo.java new file mode 100644 index 0000000000..758bd2a71b --- /dev/null +++ b/core-java/src/main/java/com/baeldung/properties/DefaultListDemo.java @@ -0,0 +1,23 @@ +package com.baeldung.properties; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Properties; + +public class DefaultListDemo { + public static void main(String[] args) throws IOException { + String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String defaultConfigPath = rootPath + "default.properties"; + String appConfigPath = rootPath + "app.properties"; + + Properties defaultProps = new Properties(); + defaultProps.load(new FileInputStream(defaultConfigPath)); + + Properties appProps = new Properties(defaultProps); + appProps.load(new FileInputStream(appConfigPath)); + + System.out.println(appProps.getProperty("name")); + System.out.println(appProps.getProperty("version")); + System.out.println(appProps.getProperty("site")); + } +} diff --git a/core-java/src/main/java/com/baeldung/properties/LoadDemo.java b/core-java/src/main/java/com/baeldung/properties/LoadDemo.java new file mode 100644 index 0000000000..3a75113b79 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/properties/LoadDemo.java @@ -0,0 +1,26 @@ +package com.baeldung.properties; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Properties; + +public class LoadDemo { + public static void main(String[] args) throws IOException { + String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String appConfigPath = rootPath + "app.properties"; + String catalogConfigPath = rootPath + "catalog"; + String iconConfigPath = rootPath + "icons.xml"; + + // load from properties file which use .properties as the suffix + Properties appProps = new Properties(); + appProps.load(new FileInputStream(appConfigPath)); + + // load from properties file which not use .properties as the suffix + Properties catalogProps = new Properties(); + catalogProps.load(new FileInputStream(catalogConfigPath)); + + // load from XML file + Properties iconProps = new Properties(); + iconProps.loadFromXML(new FileInputStream(iconConfigPath)); + } +} diff --git a/core-java/src/main/java/com/baeldung/properties/OperationsDemo.java b/core-java/src/main/java/com/baeldung/properties/OperationsDemo.java new file mode 100644 index 0000000000..c33caf877c --- /dev/null +++ b/core-java/src/main/java/com/baeldung/properties/OperationsDemo.java @@ -0,0 +1,57 @@ +package com.baeldung.properties; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Enumeration; +import java.util.Properties; + +public class OperationsDemo { + public static void main(String[] args) throws IOException { + String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String appConfigPath = rootPath + "app.properties"; + Properties appProps = new Properties(); + appProps.load(new FileInputStream(appConfigPath)); + + // retrieve values + String appVersion = appProps.getProperty("version"); + String appName = appProps.getProperty("name", "defaultName"); + String appGroup = appProps.getProperty("group", "baeldung"); + String appDownloadAddr = appProps.getProperty("downloadAddr"); + System.out.println(appVersion); + System.out.println(appName); + System.out.println(appGroup); + System.out.println(appDownloadAddr); + + // set values + appProps.setProperty("name", "NewAppName"); + appProps.setProperty("downloadAddr", "www.baeldung.com/downloads"); + appName = appProps.getProperty("name"); + appDownloadAddr = appProps.getProperty("downloadAddr"); + System.out.println("new app name: " + appName); + System.out.println("new app downloadAddr: " + appDownloadAddr); + + // remove a key-value pair + System.out.println("before removal, version is: " + appProps.getProperty("version")); + appProps.remove("version"); + System.out.println("after removal, version is: " + appProps.getProperty("version")); + + // list all key-value pairs + appProps.list(System.out); + + // get an enumeration of all values + Enumeration valueEnumeration = appProps.elements(); + while (valueEnumeration.hasMoreElements()) { + System.out.println(valueEnumeration.nextElement()); + } + + // get an enumeration of all keys + Enumeration keyEnumeration = appProps.keys(); + while (keyEnumeration.hasMoreElements()) { + System.out.println(keyEnumeration.nextElement()); + } + + // get the count of key-value pairs + int size = appProps.size(); + System.out.println(size); + } +} diff --git a/core-java/src/main/java/com/baeldung/properties/StoreDemo.java b/core-java/src/main/java/com/baeldung/properties/StoreDemo.java new file mode 100644 index 0000000000..e8a7892c40 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/properties/StoreDemo.java @@ -0,0 +1,30 @@ +package com.baeldung.properties; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Properties; + +public class StoreDemo { + public static void main(String[] args) throws IOException { + String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String appConfigPath = rootPath + "app.properties"; + + // load the original properties + Properties appProps = new Properties(); + appProps.load(new FileInputStream(appConfigPath)); + + // update property list + appProps.setProperty("name", "NewAppName"); + appProps.setProperty("downloadAddr", "www.baeldung.com/downloads"); + + // store new property list in properties file + String newAppConfigPropertiesFile = rootPath + "newApp.properties"; + appProps.store(new FileWriter(newAppConfigPropertiesFile), "store to properties file"); + + // store new property list in XML file + String newAppConfigXmlFile = rootPath + "newApp.xml"; + appProps.storeToXML(new FileOutputStream(newAppConfigXmlFile), "store to xml file"); + } +} diff --git a/core-java/src/main/resources/app.properties b/core-java/src/main/resources/app.properties new file mode 100644 index 0000000000..ff6174ec2a --- /dev/null +++ b/core-java/src/main/resources/app.properties @@ -0,0 +1,3 @@ +version=1.0 +name=TestApp +date=2016-11-12 \ No newline at end of file diff --git a/core-java/src/main/resources/catalog b/core-java/src/main/resources/catalog new file mode 100644 index 0000000000..488513d0ce --- /dev/null +++ b/core-java/src/main/resources/catalog @@ -0,0 +1,3 @@ +c1=files +c2=images +c3=videos \ No newline at end of file diff --git a/core-java/src/main/resources/default.properties b/core-java/src/main/resources/default.properties new file mode 100644 index 0000000000..df1bab371c --- /dev/null +++ b/core-java/src/main/resources/default.properties @@ -0,0 +1,4 @@ +site=www.google.com +name=DefaultAppName +topic=Properties +category=core-java \ No newline at end of file diff --git a/core-java/src/main/resources/icons.xml b/core-java/src/main/resources/icons.xml new file mode 100644 index 0000000000..0db7b2699a --- /dev/null +++ b/core-java/src/main/resources/icons.xml @@ -0,0 +1,8 @@ + + + + xml example + icon1.jpg + icon2.jpg + icon3.jpg + \ No newline at end of file From 6a9806479572bd2fed55ad37073614fdcb8638c1 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Mon, 14 Nov 2016 12:32:51 +0100 Subject: [PATCH 038/399] X to PDF conversions --- pdf/pom.xml | 6 +-- .../com/baeldung/pdf/PDF2HTMLExample.java | 23 ++++++-- .../com/baeldung/pdf/PDF2ImageExample.java | 45 ++++++++++++---- .../com/baeldung/pdf/PDF2TextExample.java | 42 +++++++++++++-- pdf/src/main/resources/html.html | 52 +++++++++++++++++++ pdf/src/main/resources/txt.txt | 3 ++ 6 files changed, 153 insertions(+), 18 deletions(-) create mode 100644 pdf/src/main/resources/html.html create mode 100644 pdf/src/main/resources/txt.txt diff --git a/pdf/pom.xml b/pdf/pom.xml index 311265880d..c6404c6b30 100644 --- a/pdf/pom.xml +++ b/pdf/pom.xml @@ -40,9 +40,9 @@ 5.5.10 - org.apache.poi - poi - 3.15 + com.itextpdf.tool + xmlworker + 5.5.10 org.apache.poi diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java index 0d38208bab..1fdf07a05f 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2HTMLExample.java @@ -1,6 +1,8 @@ package com.baeldung.pdf; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.Writer; @@ -10,14 +12,21 @@ import javax.xml.parsers.ParserConfigurationException; import org.apache.pdfbox.pdmodel.PDDocument; import org.fit.pdfdom.PDFDomTree; +import com.itextpdf.text.Document; +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.pdf.PdfWriter; +import com.itextpdf.tool.xml.XMLWorkerHelper; + public class PDF2HTMLExample { - private static final String FILENAME = "src/main/resources/pdf.pdf"; + private static final String PDF = "src/main/resources/pdf.pdf"; + private static final String HTML = "src/main/resources/html.html"; public static void main(String[] args) { try { - generateHTMLFromPDF(FILENAME); - } catch (IOException | ParserConfigurationException e) { + generateHTMLFromPDF(PDF); + generatePDFFromHTML(HTML); + } catch (IOException | ParserConfigurationException | DocumentException e) { e.printStackTrace(); } } @@ -32,4 +41,12 @@ public class PDF2HTMLExample { pdf.close(); } } + + private static void generatePDFFromHTML(String filename) throws ParserConfigurationException, IOException, DocumentException { + Document document = new Document(); + PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("src/output/html.pdf")); + document.open(); + XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(filename)); + document.close(); + } } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java index 00778d16c1..69f5d9731f 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2ImageExample.java @@ -1,24 +1,36 @@ package com.baeldung.pdf; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; + import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.pdfbox.tools.imageio.ImageIOUtil; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; +import com.itextpdf.text.BadElementException; +import com.itextpdf.text.Document; +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.Image; +import com.itextpdf.text.pdf.PdfWriter; public class PDF2ImageExample { - private static final String FILENAME = "src/main/resources/pdf.pdf"; - + private static final String PDF = "src/main/resources/pdf.pdf"; + private static final String JPG = "http://cdn2.baeldung.netdna-cdn.com/wp-content/uploads/2016/05/baeldung-rest-widget-main-1.2.0"; + private static final String GIF = "https://media.giphy.com/media/l3V0x6kdXUW9M4ONq/giphy"; + public static void main(String[] args) { try { - generateImageFromPDF(FILENAME, "png"); - generateImageFromPDF(FILENAME, "jpeg"); - generateImageFromPDF(FILENAME, "gif"); - } catch (IOException e) { + generateImageFromPDF(PDF, "png"); + generateImageFromPDF(PDF, "jpeg"); + generateImageFromPDF(PDF, "gif"); + generatePDFFromImage(JPG, "jpg"); + generatePDFFromImage(GIF, "gif"); + } catch (IOException | DocumentException e) { e.printStackTrace(); } } @@ -32,4 +44,19 @@ public class PDF2ImageExample { } document.close(); } + + private static void generatePDFFromImage(String filename, String extension) + throws IOException, BadElementException, DocumentException { + Document document = new Document(); + String input = filename + "." + extension; + String output = "src/output/" + extension + ".pdf"; + FileOutputStream fos = new FileOutputStream(output); + PdfWriter writer = PdfWriter.getInstance(document, fos); + writer.open(); + document.open(); + document.add(Image.getInstance((new URL(input)))); + document.close(); + writer.close(); + } + } diff --git a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java index c5880a4e91..7965152234 100644 --- a/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java +++ b/pdf/src/main/java/com/baeldung/pdf/PDF2TextExample.java @@ -1,6 +1,9 @@ package com.baeldung.pdf; +import java.io.BufferedReader; import java.io.File; +import java.io.FileOutputStream; +import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; @@ -10,14 +13,24 @@ import org.apache.pdfbox.pdfparser.PDFParser; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; +import com.itextpdf.text.Document; +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.Element; +import com.itextpdf.text.Font; +import com.itextpdf.text.PageSize; +import com.itextpdf.text.Paragraph; +import com.itextpdf.text.pdf.PdfWriter; + public class PDF2TextExample { - private static final String FILENAME = "src/main/resources/pdf.pdf"; + private static final String PDF = "src/main/resources/pdf.pdf"; + private static final String TXT = "src/main/resources/txt.txt"; public static void main(String[] args) { try { - generateTxtFromPDF(FILENAME); - } catch (IOException e) { + generateTxtFromPDF(PDF); + generatePDFFromTxt(TXT); + } catch (IOException | DocumentException e) { e.printStackTrace(); } } @@ -45,4 +58,27 @@ public class PDF2TextExample { pw.close(); } + private static void generatePDFFromTxt(String filename) throws IOException, DocumentException { + Document pdfDoc = new Document(PageSize.A4); + PdfWriter.getInstance(pdfDoc, new FileOutputStream("src/output/txt.pdf")) + .setPdfVersion(PdfWriter.PDF_VERSION_1_7); + pdfDoc.open(); + + Font myfont = new Font(); + myfont.setStyle(Font.NORMAL); + myfont.setSize(11); + pdfDoc.add(new Paragraph("\n")); + + BufferedReader br = new BufferedReader(new FileReader(filename)); + String strLine; + while ((strLine = br.readLine()) != null) { + Paragraph para = new Paragraph(strLine + "\n", myfont); + para.setAlignment(Element.ALIGN_JUSTIFIED); + pdfDoc.add(para); + } + + pdfDoc.close(); + br.close(); + } + } diff --git a/pdf/src/main/resources/html.html b/pdf/src/main/resources/html.html new file mode 100644 index 0000000000..f272912c87 --- /dev/null +++ b/pdf/src/main/resources/html.html @@ -0,0 +1,52 @@ + + + + +A very simple webpage + + +

A very simple webpage. This is an "h1" level header.

+ +

This is a level h2 header.

+ +
This is a level h6 header. Pretty small!
+ +

This is a standard paragraph.

+ +

Now I've aligned it in the center of the screen.

+ +

Now aligned to the right

+ +

Bold text

+ +

Strongly emphasized text Can you tell the difference vs. bold?

+ +

Italics

+ +

Emphasized text Just like Italics!

+ +

How about a nice ordered list!

+
    +
  1. This little piggy went to market
  2. +
  3. This little piggy went to SB228 class
  4. +
  5. This little piggy went to an expensive restaurant in Downtown Palo Alto
  6. +
  7. This little piggy ate too much at Indian Buffet.
  8. +
  9. This little piggy got lost
  10. +
+ +

Unordered list

+
    +
  • First element
  • +
  • Second element
  • +
  • Third element
  • +
+ + +

And finally, how about some

Links? + +

Remember, you can view the HTMl code from this or any other page by using the "View Page Source" command of your browser.

+ + + + + diff --git a/pdf/src/main/resources/txt.txt b/pdf/src/main/resources/txt.txt new file mode 100644 index 0000000000..de0c36ae75 --- /dev/null +++ b/pdf/src/main/resources/txt.txt @@ -0,0 +1,3 @@ +Test +Text + Test TEST \ No newline at end of file From 3a83664f3067245e6d9416db44b21d9c41702aca Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Mon, 14 Nov 2016 12:48:07 +0100 Subject: [PATCH 039/399] Fix error with html file for conversions --- pdf/src/main/resources/html.html | 1 + 1 file changed, 1 insertion(+) diff --git a/pdf/src/main/resources/html.html b/pdf/src/main/resources/html.html index f272912c87..d3072c056c 100644 --- a/pdf/src/main/resources/html.html +++ b/pdf/src/main/resources/html.html @@ -5,6 +5,7 @@ A very simple webpage +

A very simple webpage. This is an "h1" level header.

This is a level h2 header.

From 40841f93e5a1562c274e9a7792b05ecc610a4f06 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Mon, 14 Nov 2016 20:22:24 +0530 Subject: [PATCH 040/399] Added Test for BeanFactory methods --- spring-core/pom.xml | 5 +++++ .../BeanFactoryWithClassPathResource.java | 19 +++++++++++++++++-- .../com/baeldung/beanfactory/spring-app.xml | 2 ++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/spring-core/pom.xml b/spring-core/pom.xml index 9b94ba7b35..9b6addf0f4 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -50,6 +50,11 @@ javax.inject 1
+ + junit + junit + 4.12 + diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java index aff425a87b..bb9309f394 100644 --- a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java +++ b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java @@ -1,16 +1,31 @@ package com.baeldung.beanfactory; +import org.junit.Test; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + public class BeanFactoryWithClassPathResource { + Resource res = new ClassPathResource("spring-app.xml"); + BeanFactory factory = new XmlBeanFactory(res); + + @Test public void createBeanFactory() { - Resource res = new ClassPathResource("spring-app.xml"); - BeanFactory factory = new XmlBeanFactory(res); Employee emp = (Employee) factory.getBean("employee"); + + assertFalse(factory.isSingleton("employee")); + + assertTrue(factory.getBean("employee") instanceof Employee); + + assertTrue(factory.isTypeMatch("employee", Employee.class)); + + //we have empalias as an alias for employee + assertTrue(factory.getAliases("employee").length > 0); } } diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml b/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml index 5bdc3e601a..7b3d4f29ed 100644 --- a/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml +++ b/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml @@ -8,4 +8,6 @@ + + \ No newline at end of file From e2608793bfbdef223f57ca62787308711a3a3289 Mon Sep 17 00:00:00 2001 From: Ante Pocedulic Date: Mon, 14 Nov 2016 19:43:29 +0100 Subject: [PATCH 041/399] - junit version in pom.xml is updated to the last one --- spring-apache-camel/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-apache-camel/pom.xml b/spring-apache-camel/pom.xml index fbea9b779d..973e3aafb1 100644 --- a/spring-apache-camel/pom.xml +++ b/spring-apache-camel/pom.xml @@ -12,7 +12,7 @@ 2.16.1 4.2.4.RELEASE 1.7 - 4.1 + 4.12 From d33c3868bcbb42163db7edae2955fae16e296e00 Mon Sep 17 00:00:00 2001 From: Ante Pocedulic Date: Mon, 14 Nov 2016 19:52:48 +0100 Subject: [PATCH 042/399] - changed names of jUnit tests due to Baeldung name convenction --- spring-apache-camel/pom.xml | 22 +++++++++++++++---- ...java => FileProcessorIntegrationTest.java} | 2 +- .../{AppTest.java => AppIntegrationTest.java} | 2 +- 3 files changed, 20 insertions(+), 6 deletions(-) rename spring-apache-camel/src/test/java/org/apache/camel/file/processor/{FileProcessorTest.java => FileProcessorIntegrationTest.java} (97%) rename spring-apache-camel/src/test/java/org/apache/camel/main/{AppTest.java => AppIntegrationTest.java} (95%) diff --git a/spring-apache-camel/pom.xml b/spring-apache-camel/pom.xml index 973e3aafb1..1e08a977c7 100644 --- a/spring-apache-camel/pom.xml +++ b/spring-apache-camel/pom.xml @@ -16,20 +16,20 @@ - + junit junit ${junit.version} test - + org.apache.camel camel-core ${env.camel.version} - + org.apache.camel camel-spring @@ -49,7 +49,7 @@ - + @@ -62,6 +62,20 @@ ${java.version} + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + + + + + + diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorIntegrationTest.java similarity index 97% rename from spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java rename to spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorIntegrationTest.java index 3d63f614e0..e73ad1e4a4 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java +++ b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorIntegrationTest.java @@ -12,7 +12,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext; import com.baeldung.camel.file.FileProcessor; -public class FileProcessorTest { +public class FileProcessorIntegrationTest { private static final long DURATION_MILIS = 10000; private static final String SOURCE_FOLDER = "src/test/source-folder"; diff --git a/spring-apache-camel/src/test/java/org/apache/camel/main/AppTest.java b/spring-apache-camel/src/test/java/org/apache/camel/main/AppIntegrationTest.java similarity index 95% rename from spring-apache-camel/src/test/java/org/apache/camel/main/AppTest.java rename to spring-apache-camel/src/test/java/org/apache/camel/main/AppIntegrationTest.java index 87b20369f3..fc7fa9653b 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/main/AppTest.java +++ b/spring-apache-camel/src/test/java/org/apache/camel/main/AppIntegrationTest.java @@ -15,7 +15,7 @@ import java.nio.channels.FileChannel; import java.nio.file.Files; import java.nio.file.Paths; -public class AppTest extends TestCase { +public class AppIntegrationTest extends TestCase { private static final String FILE_NAME = "file.txt"; private static final String SAMPLE_INPUT_DIR = "src/test/data/sampleInputFile/"; From d2e52b4368c49d4072daed7d32157adecc5f4faa Mon Sep 17 00:00:00 2001 From: Diane Duan Date: Tue, 15 Nov 2016 12:37:17 +0800 Subject: [PATCH 043/399] add unit tests --- .../baeldung/properties/OperationsDemo.java | 57 ----------- .../com/baeldung/properties/StoreDemo.java | 30 ------ .../PropertiesDefaultListTest.java} | 17 +++- .../properties/PropertiesLoadTest.java} | 14 ++- .../properties/PropertiesOperationsTest.java | 97 +++++++++++++++++++ .../properties/PropertiesStoreTest.java | 51 ++++++++++ .../{main => test}/resources/app.properties | 0 .../src/{main => test}/resources/catalog | 0 .../resources/default.properties | 0 .../src/{main => test}/resources/icons.xml | 0 10 files changed, 170 insertions(+), 96 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/properties/OperationsDemo.java delete mode 100644 core-java/src/main/java/com/baeldung/properties/StoreDemo.java rename core-java/src/{main/java/com/baeldung/properties/DefaultListDemo.java => test/java/com/baeldung/properties/PropertiesDefaultListTest.java} (55%) rename core-java/src/{main/java/com/baeldung/properties/LoadDemo.java => test/java/com/baeldung/properties/PropertiesLoadTest.java} (74%) create mode 100644 core-java/src/test/java/com/baeldung/properties/PropertiesOperationsTest.java create mode 100644 core-java/src/test/java/com/baeldung/properties/PropertiesStoreTest.java rename core-java/src/{main => test}/resources/app.properties (100%) rename core-java/src/{main => test}/resources/catalog (100%) rename core-java/src/{main => test}/resources/default.properties (100%) rename core-java/src/{main => test}/resources/icons.xml (100%) diff --git a/core-java/src/main/java/com/baeldung/properties/OperationsDemo.java b/core-java/src/main/java/com/baeldung/properties/OperationsDemo.java deleted file mode 100644 index c33caf877c..0000000000 --- a/core-java/src/main/java/com/baeldung/properties/OperationsDemo.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.baeldung.properties; - -import java.io.FileInputStream; -import java.io.IOException; -import java.util.Enumeration; -import java.util.Properties; - -public class OperationsDemo { - public static void main(String[] args) throws IOException { - String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - String appConfigPath = rootPath + "app.properties"; - Properties appProps = new Properties(); - appProps.load(new FileInputStream(appConfigPath)); - - // retrieve values - String appVersion = appProps.getProperty("version"); - String appName = appProps.getProperty("name", "defaultName"); - String appGroup = appProps.getProperty("group", "baeldung"); - String appDownloadAddr = appProps.getProperty("downloadAddr"); - System.out.println(appVersion); - System.out.println(appName); - System.out.println(appGroup); - System.out.println(appDownloadAddr); - - // set values - appProps.setProperty("name", "NewAppName"); - appProps.setProperty("downloadAddr", "www.baeldung.com/downloads"); - appName = appProps.getProperty("name"); - appDownloadAddr = appProps.getProperty("downloadAddr"); - System.out.println("new app name: " + appName); - System.out.println("new app downloadAddr: " + appDownloadAddr); - - // remove a key-value pair - System.out.println("before removal, version is: " + appProps.getProperty("version")); - appProps.remove("version"); - System.out.println("after removal, version is: " + appProps.getProperty("version")); - - // list all key-value pairs - appProps.list(System.out); - - // get an enumeration of all values - Enumeration valueEnumeration = appProps.elements(); - while (valueEnumeration.hasMoreElements()) { - System.out.println(valueEnumeration.nextElement()); - } - - // get an enumeration of all keys - Enumeration keyEnumeration = appProps.keys(); - while (keyEnumeration.hasMoreElements()) { - System.out.println(keyEnumeration.nextElement()); - } - - // get the count of key-value pairs - int size = appProps.size(); - System.out.println(size); - } -} diff --git a/core-java/src/main/java/com/baeldung/properties/StoreDemo.java b/core-java/src/main/java/com/baeldung/properties/StoreDemo.java deleted file mode 100644 index e8a7892c40..0000000000 --- a/core-java/src/main/java/com/baeldung/properties/StoreDemo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.properties; - -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Properties; - -public class StoreDemo { - public static void main(String[] args) throws IOException { - String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - String appConfigPath = rootPath + "app.properties"; - - // load the original properties - Properties appProps = new Properties(); - appProps.load(new FileInputStream(appConfigPath)); - - // update property list - appProps.setProperty("name", "NewAppName"); - appProps.setProperty("downloadAddr", "www.baeldung.com/downloads"); - - // store new property list in properties file - String newAppConfigPropertiesFile = rootPath + "newApp.properties"; - appProps.store(new FileWriter(newAppConfigPropertiesFile), "store to properties file"); - - // store new property list in XML file - String newAppConfigXmlFile = rootPath + "newApp.xml"; - appProps.storeToXML(new FileOutputStream(newAppConfigXmlFile), "store to xml file"); - } -} diff --git a/core-java/src/main/java/com/baeldung/properties/DefaultListDemo.java b/core-java/src/test/java/com/baeldung/properties/PropertiesDefaultListTest.java similarity index 55% rename from core-java/src/main/java/com/baeldung/properties/DefaultListDemo.java rename to core-java/src/test/java/com/baeldung/properties/PropertiesDefaultListTest.java index 758bd2a71b..704bb19759 100644 --- a/core-java/src/main/java/com/baeldung/properties/DefaultListDemo.java +++ b/core-java/src/test/java/com/baeldung/properties/PropertiesDefaultListTest.java @@ -1,11 +1,18 @@ package com.baeldung.properties; +import org.junit.Test; + import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; -public class DefaultListDemo { - public static void main(String[] args) throws IOException { +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +public class PropertiesDefaultListTest { + @Test + public void testDefaultList() throws IOException { String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); String defaultConfigPath = rootPath + "default.properties"; String appConfigPath = rootPath + "app.properties"; @@ -16,8 +23,8 @@ public class DefaultListDemo { Properties appProps = new Properties(defaultProps); appProps.load(new FileInputStream(appConfigPath)); - System.out.println(appProps.getProperty("name")); - System.out.println(appProps.getProperty("version")); - System.out.println(appProps.getProperty("site")); + assertThat(appProps.getProperty("name"), equalTo("TestApp")); + assertThat(appProps.getProperty("version"), equalTo("1.0")); + assertThat(appProps.getProperty("site"), equalTo("www.google.com")); } } diff --git a/core-java/src/main/java/com/baeldung/properties/LoadDemo.java b/core-java/src/test/java/com/baeldung/properties/PropertiesLoadTest.java similarity index 74% rename from core-java/src/main/java/com/baeldung/properties/LoadDemo.java rename to core-java/src/test/java/com/baeldung/properties/PropertiesLoadTest.java index 3a75113b79..bcf386bd0f 100644 --- a/core-java/src/main/java/com/baeldung/properties/LoadDemo.java +++ b/core-java/src/test/java/com/baeldung/properties/PropertiesLoadTest.java @@ -1,15 +1,17 @@ package com.baeldung.properties; +import org.junit.Test; + import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; -public class LoadDemo { - public static void main(String[] args) throws IOException { +public class PropertiesLoadTest { + @Test + public void testLoadFromPropertiesFiles() throws IOException { String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); String appConfigPath = rootPath + "app.properties"; String catalogConfigPath = rootPath + "catalog"; - String iconConfigPath = rootPath + "icons.xml"; // load from properties file which use .properties as the suffix Properties appProps = new Properties(); @@ -18,8 +20,12 @@ public class LoadDemo { // load from properties file which not use .properties as the suffix Properties catalogProps = new Properties(); catalogProps.load(new FileInputStream(catalogConfigPath)); + } - // load from XML file + @Test + public void testLoadFromXmlFile() throws IOException { + String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String iconConfigPath = rootPath + "icons.xml"; Properties iconProps = new Properties(); iconProps.loadFromXML(new FileInputStream(iconConfigPath)); } diff --git a/core-java/src/test/java/com/baeldung/properties/PropertiesOperationsTest.java b/core-java/src/test/java/com/baeldung/properties/PropertiesOperationsTest.java new file mode 100644 index 0000000000..20aa64c385 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/properties/PropertiesOperationsTest.java @@ -0,0 +1,97 @@ +package com.baeldung.properties; + +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import org.junit.Before; +import org.junit.Test; +import org.testng.annotations.BeforeClass; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Enumeration; +import java.util.List; +import java.util.Properties; +import java.util.Set; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +public class PropertiesOperationsTest { + private Properties appProps; + + @Before + public void beforeClass() throws IOException { + String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String appConfigPath = rootPath + "app.properties"; + appProps = new Properties(); + appProps.load(new FileInputStream(appConfigPath)); + } + + @Test + public void testGetProperties() { + String appVersion = appProps.getProperty("version"); + String appName = appProps.getProperty("name", "defaultName"); + String appGroup = appProps.getProperty("group", "baeldung"); + String appDownloadAddr = appProps.getProperty("downloadAddr"); + + assertThat(appVersion, equalTo("1.0")); + assertThat(appName, equalTo("TestApp")); + assertThat(appGroup, equalTo("baeldung")); + assertThat(appDownloadAddr, equalTo(null)); + } + + @Test + public void testSetProperties() { + appProps.setProperty("name", "NewAppName"); + appProps.setProperty("downloadAddr", "www.baeldung.com/downloads"); + + String appName = appProps.getProperty("name"); + String appDownloadAddr = appProps.getProperty("downloadAddr"); + + assertThat(appName, equalTo("NewAppName")); + assertThat(appDownloadAddr, equalTo("www.baeldung.com/downloads")); + } + + @Test + public void testRemoveProperties() { + String versionBeforeRemoval = appProps.getProperty("version"); + assertThat(versionBeforeRemoval, equalTo("1.0")); + + appProps.remove("version"); + + String versionAfterRemoval = appProps.getProperty("version"); + assertThat(versionAfterRemoval, equalTo(null)); + } + + @Test + public void testGetEnumerationOfValues() { + Enumeration valueEnumeration = appProps.elements(); + List values = Lists.newArrayList(); + while (valueEnumeration.hasMoreElements()) { + String val = String.valueOf(valueEnumeration.nextElement()); + values.add(val); + } + assertArrayEquals(new String[] {"1.0", "2016-11-12", "TestApp"}, values.toArray()); + } + + @Test + public void testGetEnumerationOfKeys() { + Enumeration keyEnumeration = appProps.keys(); + List keys = Lists.newArrayList(); + while (keyEnumeration.hasMoreElements()) { + String key = String.valueOf(keyEnumeration.nextElement()); + keys.add(key); + } + assertArrayEquals(new String[] {"version", "date", "name"}, keys.toArray()); + } + + @Test + public void testGetSize() { + int size = appProps.size(); + assertThat(size, equalTo(3)); + } +} diff --git a/core-java/src/test/java/com/baeldung/properties/PropertiesStoreTest.java b/core-java/src/test/java/com/baeldung/properties/PropertiesStoreTest.java new file mode 100644 index 0000000000..582fdb3808 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/properties/PropertiesStoreTest.java @@ -0,0 +1,51 @@ +package com.baeldung.properties; + +import org.junit.Before; +import org.junit.Test; +import org.testng.annotations.BeforeClass; + +import java.io.*; +import java.util.Properties; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +public class PropertiesStoreTest { + private static Properties appProps = new Properties(); + + @Before + public void before() throws IOException { + String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String appConfigPath = rootPath + "app.properties"; + + // load the original properties + appProps.load(new FileInputStream(appConfigPath)); + + // update property list + appProps.setProperty("name", "NewAppName"); + appProps.setProperty("downloadAddr", "www.baeldung.com/downloads"); + } + + @Test + public void testStoreToPropertiesFile() throws IOException { + String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String newAppConfigPropertiesFile = rootPath + "newApp.properties"; + appProps.store(new FileWriter(newAppConfigPropertiesFile), "store to properties file"); + + + Properties verifyProps = new Properties(); + verifyProps.load(new FileInputStream(newAppConfigPropertiesFile)); + assertThat(verifyProps.getProperty("name"), equalTo("NewAppName")); + } + + @Test + public void testStoreToXmlFile() throws IOException { + String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); + String newAppConfigXmlFile = rootPath + "newApp.xml"; + appProps.storeToXML(new FileOutputStream(newAppConfigXmlFile), "store to xml file"); + + Properties verifyProps = new Properties(); + verifyProps.loadFromXML(new FileInputStream(newAppConfigXmlFile)); + assertThat(verifyProps.getProperty("downloadAddr"), equalTo("www.baeldung.com/downloads")); + } +} diff --git a/core-java/src/main/resources/app.properties b/core-java/src/test/resources/app.properties similarity index 100% rename from core-java/src/main/resources/app.properties rename to core-java/src/test/resources/app.properties diff --git a/core-java/src/main/resources/catalog b/core-java/src/test/resources/catalog similarity index 100% rename from core-java/src/main/resources/catalog rename to core-java/src/test/resources/catalog diff --git a/core-java/src/main/resources/default.properties b/core-java/src/test/resources/default.properties similarity index 100% rename from core-java/src/main/resources/default.properties rename to core-java/src/test/resources/default.properties diff --git a/core-java/src/main/resources/icons.xml b/core-java/src/test/resources/icons.xml similarity index 100% rename from core-java/src/main/resources/icons.xml rename to core-java/src/test/resources/icons.xml From 3c254fad0bef21108675dbd2fa4f45c59a3049e8 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Tue, 15 Nov 2016 07:04:56 +0100 Subject: [PATCH 044/399] BAEL-80 - file copy java config --- .../com/baeldung/samples/FileCopyConfig.java | 72 +++++++++++++++++++ .../src/main/resources/log4j.xml | 28 ++++++++ .../com/baeldung/samples/FileCopyTest.java | 14 ++-- 3 files changed, 104 insertions(+), 10 deletions(-) create mode 100644 spring-integration/src/main/java/com/baeldung/samples/FileCopyConfig.java create mode 100644 spring-integration/src/main/resources/log4j.xml diff --git a/spring-integration/src/main/java/com/baeldung/samples/FileCopyConfig.java b/spring-integration/src/main/java/com/baeldung/samples/FileCopyConfig.java new file mode 100644 index 0000000000..e7cf43e902 --- /dev/null +++ b/spring-integration/src/main/java/com/baeldung/samples/FileCopyConfig.java @@ -0,0 +1,72 @@ +package com.baeldung.samples; + +import java.io.File; +import java.util.Scanner; + +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.integration.annotation.InboundChannelAdapter; +import org.springframework.integration.annotation.Poller; +import org.springframework.integration.annotation.ServiceActivator; +import org.springframework.integration.channel.DirectChannel; +import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.core.MessageSource; +import org.springframework.integration.file.FileReadingMessageSource; +import org.springframework.integration.file.FileWritingMessageHandler; +import org.springframework.integration.file.filters.SimplePatternFileListFilter; +import org.springframework.integration.file.support.FileExistsMode; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.MessageHandler; + +@Configuration +@EnableIntegration +public class FileCopyConfig { + + public final String INPUT_DIR = "source"; + public final String OUTPUT_DIR = "target"; + public final String FILE_PATTERN = ".jpg"; + + @Bean + public MessageChannel fileChannel() { + return new DirectChannel(); + } + + @Bean + @InboundChannelAdapter(value = "fileChannel", poller = @Poller(fixedDelay = "10000")) + public MessageSource fileReadingMessageSource() { + FileReadingMessageSource sourceReader = new FileReadingMessageSource(); + sourceReader.setDirectory(new File(INPUT_DIR)); + sourceReader.setFilter(new SimplePatternFileListFilter(FILE_PATTERN)); + return sourceReader; + } + + @Bean + @ServiceActivator(inputChannel = "fileChannel") + public MessageHandler fileWritingMessageHandler() { + FileWritingMessageHandler handler = new FileWritingMessageHandler(new File(OUTPUT_DIR)); + handler.setFileExistsMode(FileExistsMode.REPLACE); + return handler; + } + + public static void main(final String... args) { + final AbstractApplicationContext context = new AnnotationConfigApplicationContext(FileCopyConfig.class.getCanonicalName()); + context.registerShutdownHook(); + final Scanner scanner = new Scanner(System.in); + System.out.print("Please enter a string and press : "); + while (true) { + final String input = scanner.nextLine(); + if ("q".equals(input.trim())) { + context.close(); + scanner.close(); + break; + } + } + System.exit(0); + } + +} + + + diff --git a/spring-integration/src/main/resources/log4j.xml b/spring-integration/src/main/resources/log4j.xml new file mode 100644 index 0000000000..cfa93a8037 --- /dev/null +++ b/spring-integration/src/main/resources/log4j.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java b/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java index 96e5a98f41..567d181972 100644 --- a/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java +++ b/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java @@ -17,11 +17,10 @@ package com.baeldung.samples; import org.apache.log4j.Logger; import org.junit.Test; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; -import java.util.Scanner; - /** * Starts the Spring Context and will initialize the Spring Integration routes. @@ -35,15 +34,10 @@ public final class FileCopyTest { private static final Logger LOGGER = Logger.getLogger(FileCopyTest.class); @Test - public void test() throws InterruptedException { - - - final AbstractApplicationContext context = - new ClassPathXmlApplicationContext("classpath:META-INF/spring/integration/spring-integration-file-copy-context.xml"); - + public void whenFileCopyConfiguration_thanFileCopiedSuccessfully() throws InterruptedException { + final AbstractApplicationContext context = new AnnotationConfigApplicationContext(FileCopyConfig.class.getCanonicalName()); + context.registerShutdownHook(); Thread.sleep(5000); - - } @Test From 62d58599c5dc9fc4b4ed309d3340362bd4801f17 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Tue, 15 Nov 2016 21:23:04 +0100 Subject: [PATCH 045/399] BAEL-89 - removing @RestController from application classes --- .../com/baeldung/spring/session/jettyex/JettyWebApplication.java | 1 - .../baeldung/spring/session/tomcatex/TomcatWebApplication.java | 1 - 2 files changed, 2 deletions(-) diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java index 41503c3d9e..f692d0ff23 100644 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java +++ b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java @@ -5,7 +5,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication -@RestController public class JettyWebApplication { public static void main(String[] args) { SpringApplication.run(JettyWebApplication.class, args); diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java index 683a4a1f15..b7e26027d8 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java +++ b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java @@ -6,7 +6,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication -@RestController public class TomcatWebApplication { public static void main(String[] args) { SpringApplication.run(TomcatWebApplication.class, args); From efc24501236ab94540c7a70a6a9d964923136314 Mon Sep 17 00:00:00 2001 From: Pritam Banerjee Date: Sat, 15 Oct 2016 23:40:20 +0200 Subject: [PATCH 046/399] BAEL 317: Setting up EJB EJB Client and EJB Remote --- ejb/ejb-client/pom.xml | 28 +++++++ .../com/baeldung/ejb/client/EJBClient.java | 71 ++++++++++++++++ .../resources/jboss-ejb-client.properties | 8 ++ .../baeldung/ejb/setup/test/EJBSetupTest.java | 16 ++++ ejb/ejb-remote/pom.xml | 25 ++++++ .../com/baeldung/ejb/tutorial/HelloWorld.java | 8 ++ .../baeldung/ejb/tutorial/HelloWorldBean.java | 18 ++++ .../src/main/resources/META-INF/ejb-jar.xml | 7 ++ ejb/pom.xml | 83 +++++++++++++++++++ 9 files changed, 264 insertions(+) create mode 100644 ejb/ejb-client/pom.xml create mode 100644 ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java create mode 100644 ejb/ejb-client/src/main/resources/jboss-ejb-client.properties create mode 100644 ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java create mode 100644 ejb/ejb-remote/pom.xml create mode 100644 ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java create mode 100644 ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java create mode 100644 ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml create mode 100644 ejb/pom.xml diff --git a/ejb/ejb-client/pom.xml b/ejb/ejb-client/pom.xml new file mode 100644 index 0000000000..d1d245ba6d --- /dev/null +++ b/ejb/ejb-client/pom.xml @@ -0,0 +1,28 @@ + + + 4.0.0 + + com.baeldung.ejb + ejb + 1.0-SNAPSHOT + + ejb-client + EJB3 Client Maven + EJB3 Client Maven + + + + org.wildfly + wildfly-ejb-client-bom + pom + import + + + com.baeldung.ejb + ejb-remote + ejb + + + + \ No newline at end of file diff --git a/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java b/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java new file mode 100644 index 0000000000..5426bbdc81 --- /dev/null +++ b/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java @@ -0,0 +1,71 @@ +package com.baeldung.ejb.client; + +import java.util.Properties; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +import com.baeldung.ejb.tutorial.HelloWorld; + +public class EJBClient { + + public EJBClient() { + } + + private Context context = null; + + public String getEJBRemoteMessage() { + EJBClient main = new EJBClient(); + try { + // 1. Obtaining Context + main.createInitialContext(); + // 2. Generate JNDI Lookup name and caste + HelloWorld helloWorld = main.lookup(); + return helloWorld.getHelloWorld(); + } catch (NamingException e) { + e.printStackTrace(); + return ""; + } finally { + try { + main.closeContext(); + } catch (NamingException e) { + e.printStackTrace(); + } + } + } + + public HelloWorld lookup() throws NamingException { + + // The app name is the EAR name of the deployed EJB without .ear suffix. + // Since we haven't deployed the application as a .ear, the app name for + // us will be an empty string + final String appName = ""; + final String moduleName = "remote"; + final String distinctName = ""; + final String beanName = "HelloWorld"; + final String viewClassName = HelloWorld.class.getName(); + final String toLookup = "ejb:" + appName + "/" + moduleName + + "/" + distinctName + "/" + beanName + "!" + viewClassName; + return (HelloWorld) context.lookup(toLookup); + } + + public void createInitialContext() throws NamingException { + Properties prop = new Properties(); + prop.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); + prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); + prop.put(Context.PROVIDER_URL, "http-remoting://127.0.0.1:8080"); + prop.put(Context.SECURITY_PRINCIPAL, "pritamtest"); + prop.put(Context.SECURITY_CREDENTIALS, "iamtheki9g"); + prop.put("jboss.naming.client.ejb.context", false); + + context = new InitialContext(prop); + } + + public void closeContext() throws NamingException { + if (context != null) { + context.close(); + } + } + +} diff --git a/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties b/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties new file mode 100644 index 0000000000..e17d8ba17e --- /dev/null +++ b/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties @@ -0,0 +1,8 @@ +remote.connections=default +remote.connection.default.host=127.0.0.1 +remote.connection.default.port=8080 +remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false +remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false +remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS=${host.auth:JBOSS-LOCAL-USER} +remote.connection.default.username=pritamtest +remote.connection.default.password=iamtheki9g \ No newline at end of file diff --git a/ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java b/ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java new file mode 100644 index 0000000000..1a8165cee6 --- /dev/null +++ b/ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java @@ -0,0 +1,16 @@ +package com.baeldung.ejb.setup.test; + +import static org.junit.Assert.*; +import org.junit.Test; +import com.baeldung.ejb.client.EJBClient; +import com.baeldung.ejb.tutorial.HelloWorldBean; + +public class EJBSetupTest { + + @Test + public void testEJBClient() { + EJBClient ejbClient = new EJBClient(); + HelloWorldBean bean = new HelloWorldBean(); + assertEquals(bean.getHelloWorld(), ejbClient.getEJBRemoteMessage()); + } +} diff --git a/ejb/ejb-remote/pom.xml b/ejb/ejb-remote/pom.xml new file mode 100644 index 0000000000..14c02edd0e --- /dev/null +++ b/ejb/ejb-remote/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + com.baeldung.ejb + ejb + 1.0-SNAPSHOT + + ejb-remote + ejb + + ejb-remote + + + org.jboss.spec.javax.ejb + jboss-ejb-api_3.2_spec + provided + + + + + ejb-remote + + \ No newline at end of file diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java new file mode 100644 index 0000000000..79684de1a8 --- /dev/null +++ b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java @@ -0,0 +1,8 @@ +package com.baeldung.ejb.tutorial; + +import javax.ejb.Remote; + +@Remote +public interface HelloWorld { + String getHelloWorld(); +} diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java new file mode 100644 index 0000000000..6c5ee34afe --- /dev/null +++ b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java @@ -0,0 +1,18 @@ +package com.baeldung.ejb.tutorial; + +import javax.annotation.Resource; +import javax.ejb.SessionContext; +import javax.ejb.Stateless; + +@Stateless(name = "HelloWorld") +public class HelloWorldBean implements HelloWorld { + + @Resource + private SessionContext context; + + @Override + public String getHelloWorld() { + return "Welcome to EJB Tutorial!"; + } + +} diff --git a/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml b/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml new file mode 100644 index 0000000000..d6c2200198 --- /dev/null +++ b/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml @@ -0,0 +1,7 @@ + + + remote + + diff --git a/ejb/pom.xml b/ejb/pom.xml new file mode 100644 index 0000000000..49ddc694e9 --- /dev/null +++ b/ejb/pom.xml @@ -0,0 +1,83 @@ + + + 4.0.0 + com.baeldung.ejb + ejb + 1.0-SNAPSHOT + pom + ejb + EJB Tutorial + + + + jboss-public-repository-group + JBoss Public Maven Repository Group + http://repository.jboss.org/nexus/content/groups/public/ + default + + true + never + + + true + never + + + + + + + + com.baeldung.ejb + ejb-remote + 1.0-SNAPSHOT + ejb + + + + org.jboss.spec + jboss-javaee-7.0 + 1.0.1.Final + pom + import + + + + org.wildfly + wildfly-ejb-client-bom + 10.1.0.Final + pom + import + + + + + + + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + maven-ejb-plugin + 2.4 + + 3.2 + + + + + + + + ejb-remote + ejb-client + + \ No newline at end of file From 35ee1b89bbce2df2517d066d9e166da011a1a9df Mon Sep 17 00:00:00 2001 From: Pritam Banerjee Date: Mon, 7 Nov 2016 11:06:51 +0100 Subject: [PATCH 047/399] BAEL-317 - Updated Wildfly configurations and changed the files --- ejb/ejb-remote/pom.xml | 18 ++++++++++++++++-- ejb/pom.xml | 4 ++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ejb/ejb-remote/pom.xml b/ejb/ejb-remote/pom.xml index 14c02edd0e..3661fa5b2c 100644 --- a/ejb/ejb-remote/pom.xml +++ b/ejb/ejb-remote/pom.xml @@ -10,7 +10,7 @@ ejb-remote ejb - ejb-remote + org.jboss.spec.javax.ejb @@ -20,6 +20,20 @@ - ejb-remote + + + org.wildfly.plugins + wildfly-maven-plugin + 1.1.0.Alpha5 + + 127.0.0.1 + 9990 + pritamtest + iamtheki9g + ${build.finalName}.jar + + + + \ No newline at end of file diff --git a/ejb/pom.xml b/ejb/pom.xml index 49ddc694e9..5c54cdcf72 100644 --- a/ejb/pom.xml +++ b/ejb/pom.xml @@ -60,8 +60,8 @@ maven-compiler-plugin 3.1 - 1.7 - 1.7 + 1.8 + 1.8 From 89ebafc9a6c92d6df5beb6dcfcf312f85266d038 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Wed, 16 Nov 2016 08:29:47 +0530 Subject: [PATCH 048/399] Added assertions. --- .../beanfactory/BeanFactoryWithClassPathResource.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java index bb9309f394..a3bdbba848 100644 --- a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java +++ b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java @@ -11,21 +11,16 @@ import static org.junit.Assert.assertTrue; public class BeanFactoryWithClassPathResource { - Resource res = new ClassPathResource("spring-app.xml"); - BeanFactory factory = new XmlBeanFactory(res); - @Test public void createBeanFactory() { + Resource res = new ClassPathResource("spring-app.xml"); + BeanFactory factory = new XmlBeanFactory(res); Employee emp = (Employee) factory.getBean("employee"); assertFalse(factory.isSingleton("employee")); - assertTrue(factory.getBean("employee") instanceof Employee); - assertTrue(factory.isTypeMatch("employee", Employee.class)); - - //we have empalias as an alias for employee assertTrue(factory.getAliases("employee").length > 0); } } From 0262d2728f4b2cfcee4b74f6ed44fa09f6f06970 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 16 Nov 2016 07:21:01 +0100 Subject: [PATCH 049/399] BAEL-317 - Added junit and surefire, updated the authentication info so that it fits the article --- ejb/ejb-client/pom.xml | 72 +++++++++++++------ .../com/baeldung/ejb/client/EJBClient.java | 4 +- .../resources/jboss-ejb-client.properties | 4 +- ejb/ejb-remote/pom.xml | 4 +- .../baeldung/ejb/tutorial/HelloWorldBean.java | 5 -- 5 files changed, 55 insertions(+), 34 deletions(-) diff --git a/ejb/ejb-client/pom.xml b/ejb/ejb-client/pom.xml index d1d245ba6d..772e4056d3 100644 --- a/ejb/ejb-client/pom.xml +++ b/ejb/ejb-client/pom.xml @@ -1,28 +1,54 @@ - 4.0.0 - - com.baeldung.ejb - ejb - 1.0-SNAPSHOT - - ejb-client - EJB3 Client Maven - EJB3 Client Maven + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + 4.0.0 + + com.baeldung.ejb + ejb + 1.0-SNAPSHOT + + ejb-client + EJB3 Client Maven + EJB3 Client Maven + + 4.12 + 2.19.1 + + + + + org.wildfly + wildfly-ejb-client-bom + pom + import + + + com.baeldung.ejb + ejb-remote + ejb + + + + junit + junit + ${junit.version} + test + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*EJBSetupTest.java + + + + + - - - org.wildfly - wildfly-ejb-client-bom - pom - import - - - com.baeldung.ejb - ejb-remote - ejb - - \ No newline at end of file diff --git a/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java b/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java index 5426bbdc81..08286d580e 100644 --- a/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java +++ b/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java @@ -55,8 +55,8 @@ public class EJBClient { prop.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); prop.put(Context.PROVIDER_URL, "http-remoting://127.0.0.1:8080"); - prop.put(Context.SECURITY_PRINCIPAL, "pritamtest"); - prop.put(Context.SECURITY_CREDENTIALS, "iamtheki9g"); + prop.put(Context.SECURITY_PRINCIPAL, "testUser"); + prop.put(Context.SECURITY_CREDENTIALS, "admin1234!"); prop.put("jboss.naming.client.ejb.context", false); context = new InitialContext(prop); diff --git a/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties b/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties index e17d8ba17e..077cd7583f 100644 --- a/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties +++ b/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties @@ -4,5 +4,5 @@ remote.connection.default.port=8080 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS=${host.auth:JBOSS-LOCAL-USER} -remote.connection.default.username=pritamtest -remote.connection.default.password=iamtheki9g \ No newline at end of file +remote.connection.default.username=testUser +remote.connection.default.password=admin1234! \ No newline at end of file diff --git a/ejb/ejb-remote/pom.xml b/ejb/ejb-remote/pom.xml index 3661fa5b2c..65bfc6dbec 100644 --- a/ejb/ejb-remote/pom.xml +++ b/ejb/ejb-remote/pom.xml @@ -28,8 +28,8 @@ 127.0.0.1 9990 - pritamtest - iamtheki9g + testUser + admin1234! ${build.finalName}.jar diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java index 6c5ee34afe..4b88747e6a 100644 --- a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java +++ b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java @@ -1,15 +1,10 @@ package com.baeldung.ejb.tutorial; -import javax.annotation.Resource; -import javax.ejb.SessionContext; import javax.ejb.Stateless; @Stateless(name = "HelloWorld") public class HelloWorldBean implements HelloWorld { - @Resource - private SessionContext context; - @Override public String getHelloWorld() { return "Welcome to EJB Tutorial!"; From 69427b6cad4754f435f92a17b3a197d953a8aa47 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 16 Nov 2016 07:28:35 +0100 Subject: [PATCH 050/399] BAEL-317 Adding JUnit and surefire plugin, updating auth info to fit the article --- ejb/ejb-client/pom.xml | 0 .../src/main/java/com/baeldung/ejb/client/EJBClient.java | 0 ejb/ejb-client/src/main/resources/jboss-ejb-client.properties | 0 .../src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java | 0 ejb/ejb-remote/pom.xml | 0 .../src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java | 0 .../src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java | 0 ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml | 0 ejb/pom.xml | 0 9 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 ejb/ejb-client/pom.xml mode change 100644 => 100755 ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java mode change 100644 => 100755 ejb/ejb-client/src/main/resources/jboss-ejb-client.properties mode change 100644 => 100755 ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java mode change 100644 => 100755 ejb/ejb-remote/pom.xml mode change 100644 => 100755 ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java mode change 100644 => 100755 ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java mode change 100644 => 100755 ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml mode change 100644 => 100755 ejb/pom.xml diff --git a/ejb/ejb-client/pom.xml b/ejb/ejb-client/pom.xml old mode 100644 new mode 100755 diff --git a/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java b/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java old mode 100644 new mode 100755 diff --git a/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties b/ejb/ejb-client/src/main/resources/jboss-ejb-client.properties old mode 100644 new mode 100755 diff --git a/ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java b/ejb/ejb-client/src/test/java/com/baeldung/ejb/setup/test/EJBSetupTest.java old mode 100644 new mode 100755 diff --git a/ejb/ejb-remote/pom.xml b/ejb/ejb-remote/pom.xml old mode 100644 new mode 100755 diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorld.java old mode 100644 new mode 100755 diff --git a/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/tutorial/HelloWorldBean.java old mode 100644 new mode 100755 diff --git a/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml b/ejb/ejb-remote/src/main/resources/META-INF/ejb-jar.xml old mode 100644 new mode 100755 diff --git a/ejb/pom.xml b/ejb/pom.xml old mode 100644 new mode 100755 From 4681d3d1728512bc22650b1fc107efcbed45ceef Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 16 Nov 2016 07:44:56 +0100 Subject: [PATCH 051/399] BAEL-80 - Adding wildcard to filename --- .../src/main/java/com/baeldung/samples/FileCopyConfig.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-integration/src/main/java/com/baeldung/samples/FileCopyConfig.java b/spring-integration/src/main/java/com/baeldung/samples/FileCopyConfig.java index e7cf43e902..aec2ae8858 100644 --- a/spring-integration/src/main/java/com/baeldung/samples/FileCopyConfig.java +++ b/spring-integration/src/main/java/com/baeldung/samples/FileCopyConfig.java @@ -26,7 +26,7 @@ public class FileCopyConfig { public final String INPUT_DIR = "source"; public final String OUTPUT_DIR = "target"; - public final String FILE_PATTERN = ".jpg"; + public final String FILE_PATTERN = "*.jpg"; @Bean public MessageChannel fileChannel() { @@ -47,11 +47,12 @@ public class FileCopyConfig { public MessageHandler fileWritingMessageHandler() { FileWritingMessageHandler handler = new FileWritingMessageHandler(new File(OUTPUT_DIR)); handler.setFileExistsMode(FileExistsMode.REPLACE); + handler.setExpectReply(false); return handler; } public static void main(final String... args) { - final AbstractApplicationContext context = new AnnotationConfigApplicationContext(FileCopyConfig.class.getCanonicalName()); + final AbstractApplicationContext context = new AnnotationConfigApplicationContext(FileCopyConfig.class); context.registerShutdownHook(); final Scanner scanner = new Scanner(System.in); System.out.print("Please enter a string and press : "); From b1d5ae8c3c8ebadf15c093827243a477ecc11efd Mon Sep 17 00:00:00 2001 From: Pritam Banerjee Date: Tue, 15 Nov 2016 23:04:08 -0800 Subject: [PATCH 052/399] setup ejb --- ejb/ejb-remote/pom.xml | 11 ++++++----- ejb/pom.xml | 9 ++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ejb/ejb-remote/pom.xml b/ejb/ejb-remote/pom.xml index 3661fa5b2c..9f0b07c0e3 100755 --- a/ejb/ejb-remote/pom.xml +++ b/ejb/ejb-remote/pom.xml @@ -12,11 +12,12 @@ - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.2_spec - provided - + + javax + javaee-api + 7.0 + provided + diff --git a/ejb/pom.xml b/ejb/pom.xml index 5c54cdcf72..8176de7936 100755 --- a/ejb/pom.xml +++ b/ejb/pom.xml @@ -36,11 +36,10 @@ - org.jboss.spec - jboss-javaee-7.0 - 1.0.1.Final - pom - import + javax + javaee-api + 7.0 + provided From 5e0f94f883fb5288c3eb35035c08ed2986954b08 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Wed, 16 Nov 2016 14:09:46 +0530 Subject: [PATCH 053/399] Updated junit dependency in pom, named test method meaningful --- spring-core/pom.xml | 6 ------ .../beanfactory/BeanFactoryWithClassPathResource.java | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/spring-core/pom.xml b/spring-core/pom.xml index 9b6addf0f4..a2e306a61f 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -14,12 +14,6 @@ - - junit - junit - 4.11 - test - org.mockito mockito-all diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java index a3bdbba848..3a7682641e 100644 --- a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java +++ b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java @@ -12,7 +12,7 @@ import static org.junit.Assert.assertTrue; public class BeanFactoryWithClassPathResource { @Test - public void createBeanFactory() { + public void createBeanFactoryAndCheckEmployeeBean() { Resource res = new ClassPathResource("spring-app.xml"); BeanFactory factory = new XmlBeanFactory(res); From 9305e79806d9676d1cb7984ae145407655108eff Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Wed, 16 Nov 2016 09:50:36 +0100 Subject: [PATCH 054/399] Remove empty line --- .../baeldung/beanfactory/BeanFactoryWithClassPathResource.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java index 3a7682641e..be7ebdeb9c 100644 --- a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java +++ b/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java @@ -13,7 +13,6 @@ public class BeanFactoryWithClassPathResource { @Test public void createBeanFactoryAndCheckEmployeeBean() { - Resource res = new ClassPathResource("spring-app.xml"); BeanFactory factory = new XmlBeanFactory(res); Employee emp = (Employee) factory.getBean("employee"); From b74ce5914b9b352b6aec4fdb5397c3766b02dee3 Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Wed, 16 Nov 2016 09:55:16 +0100 Subject: [PATCH 055/399] Fix BAEL-454 and move test to actual tests --- spring-core/pom.xml | 1 + .../beanfactory/BeanFactoryWithClassPathResourceTest.java} | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) rename spring-core/src/{main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java => test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceTest.java} (94%) diff --git a/spring-core/pom.xml b/spring-core/pom.xml index a2e306a61f..798a717d01 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -48,6 +48,7 @@ junit junit 4.12 + test diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java b/spring-core/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceTest.java similarity index 94% rename from spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java rename to spring-core/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceTest.java index be7ebdeb9c..b3402903c1 100644 --- a/spring-core/src/main/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResource.java +++ b/spring-core/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceTest.java @@ -9,7 +9,7 @@ import org.springframework.core.io.Resource; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -public class BeanFactoryWithClassPathResource { +public class BeanFactoryWithClassPathResourceTest { @Test public void createBeanFactoryAndCheckEmployeeBean() { From 506bfb9b216fc127a2f8cf89d5f5ab2f1c894b25 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 16 Nov 2016 10:15:20 +0100 Subject: [PATCH 056/399] closeOverlay refactor --- .../com/baeldung/selenium/SeleniumExample.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java index dd309cec79..a9e0ccfb4a 100644 --- a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java +++ b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java @@ -1,14 +1,13 @@ package main.java.com.baeldung.selenium; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.concurrent.TimeUnit; - import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; +import java.util.List; +import java.util.concurrent.TimeUnit; + public class SeleniumExample { private WebDriver webDriver; @@ -38,12 +37,11 @@ public class SeleniumExample { private void closeOverlay() { List webElementList = webDriver.findElements(By.tagName("a")); - try { - if (webElementList != null && !webElementList.isEmpty()) { - webElementList.stream().filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))).findAny().orElseThrow(NoSuchElementException::new).click(); - } - } catch (NoSuchElementException exception) { - exception.printStackTrace(); + if (webElementList != null) { + webElementList.stream() + .filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))) + .findAny() + .ifPresent(WebElement::click); } } From 082ae7b0da38b9005b578b94ee19ffa55e72b5d8 Mon Sep 17 00:00:00 2001 From: mujah Date: Wed, 16 Nov 2016 21:39:13 +0800 Subject: [PATCH 057/399] xml formatting --- spring-data-solr/pom.xml | 114 +++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/spring-data-solr/pom.xml b/spring-data-solr/pom.xml index ea9b282f66..ec6eb7bf46 100644 --- a/spring-data-solr/pom.xml +++ b/spring-data-solr/pom.xml @@ -1,21 +1,21 @@ - + 4.0.0 com.baeldung spring-data-solr 0.0.1-SNAPSHOT jar spring-data-solr - - + + UTF-8 4.2.5.RELEASE 2.19.1 2.0.4.RELEASE - + org.springframework @@ -51,57 +51,57 @@ - - - - maven-compiler-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - **/*IntegrationTest.java - **/*LiveTest.java - - - - - + + + + maven-compiler-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - - + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + \ No newline at end of file From 3ed183ee6e9e2da88be6259ebe6c7735d50f9e9d Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 16 Nov 2016 15:08:24 +0100 Subject: [PATCH 058/399] Add missing README.md --- javaxval/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 javaxval/README.md diff --git a/javaxval/README.md b/javaxval/README.md new file mode 100644 index 0000000000..b5001789f1 --- /dev/null +++ b/javaxval/README.md @@ -0,0 +1,9 @@ +========= + +## Java Bean Validation Examples + +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + +### Relevant Articles: +- [Java Bean Validation Basics](http://www.baeldung.com/javax-validation) From 63bb0809f7fcedf350767e0a7e8e4ec2b9ed5e2a Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 16 Nov 2016 15:30:30 +0100 Subject: [PATCH 059/399] Add missing property --- spring-apache-camel/pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-apache-camel/pom.xml b/spring-apache-camel/pom.xml index 1e08a977c7..6cd4f136e0 100644 --- a/spring-apache-camel/pom.xml +++ b/spring-apache-camel/pom.xml @@ -11,6 +11,7 @@ 2.16.1 4.2.4.RELEASE + 2.19.1 1.7 4.12 @@ -78,4 +79,6 @@ + + From 697956e003cd486061ff51828ba934ecc16b0e57 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 16 Nov 2016 17:09:19 +0200 Subject: [PATCH 060/399] Remove duplicated file --- .../com/baeldung/hexToAscii/HexToAscii.java | 46 ------------------- 1 file changed, 46 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java diff --git a/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java b/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java deleted file mode 100644 index 2a3c4b109e..0000000000 --- a/core-java/src/main/java/com/baeldung/hexToAscii/HexToAscii.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.baeldung.hexToAscii; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - -public class HexToAscii { - - @Test - public static void whenHexToAscii() { - String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; - String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; - - assertEquals(asciiString, hexToAscii(hexEquivalent)); - } - - @Test - public static void whenAsciiToHex() { - String asciiString = "http://www.baeldung.com/jackson-serialize-dates"; - String hexEquivalent = "687474703a2f2f7777772e6261656c64756e672e636f6d2f6a61636b736f6e2d73657269616c697a652d6461746573"; - - assertEquals(hexEquivalent, asciiToHex(asciiString)); - } - - // - - private static String asciiToHex(String asciiStr) { - char[] chars = asciiStr.toCharArray(); - StringBuilder hex = new StringBuilder(); - for (char ch : chars) { - hex.append(Integer.toHexString((int) ch)); - } - - return hex.toString(); - } - - private static String hexToAscii(String hexStr) { - StringBuilder output = new StringBuilder(""); - for (int i = 0; i < hexStr.length(); i += 2) { - String str = hexStr.substring(i, i + 2); - output.append((char) Integer.parseInt(str, 16)); - } - return output.toString(); - } - -} From 024b3df483c29a9c2f470d7f5fa15d895eb22e3c Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 16 Nov 2016 17:26:39 +0200 Subject: [PATCH 061/399] Rename test --- .../interfaces/NetworkInterfaceTest.java | 122 ------------------ 1 file changed, 122 deletions(-) delete mode 100644 core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java diff --git a/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java b/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java deleted file mode 100644 index 4a8ef57b8f..0000000000 --- a/core-java/src/test/java/com/baeldung/java/networking/interfaces/NetworkInterfaceTest.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.baeldung.java.networking.interfaces; - -import static org.junit.Assert.*; - -import java.net.InetAddress; -import java.net.InterfaceAddress; -import java.net.NetworkInterface; -import java.net.SocketException; -import java.net.UnknownHostException; -import java.util.Enumeration; -import java.util.List; - -import org.junit.Test; - -public class NetworkInterfaceTest { - @Test - public void givenName_whenReturnsNetworkInterface_thenCorrect() throws SocketException { - NetworkInterface nif = NetworkInterface.getByName("lo"); - assertNotNull(nif); - } - - @Test - public void givenInExistentName_whenReturnsNull_thenCorrect() throws SocketException { - NetworkInterface nif = NetworkInterface.getByName("inexistent_name"); - assertNull(nif); - } - - @Test - public void givenIP_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { - byte[] ip = new byte[] { 127, 0, 0, 1 }; - NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getByAddress(ip)); - assertNotNull(nif); - } - - @Test - public void givenHostName_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getByName("localhost")); - assertNotNull(nif); - } - - @Test - public void givenLocalHost_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()); - assertNotNull(nif); - } - - @Test - public void givenLoopBack_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByInetAddress(InetAddress.getLoopbackAddress()); - assertNotNull(nif); - } - - @Test - public void givenIndex_whenReturnsNetworkInterface_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByIndex(0); - assertNotNull(nif); - } - - @Test - public void givenInterface_whenReturnsInetAddresses_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("lo"); - Enumeration addressEnum = nif.getInetAddresses(); - InetAddress address = addressEnum.nextElement(); - assertEquals("127.0.0.1", address.getHostAddress()); - } - - @Test - public void givenInterface_whenReturnsInterfaceAddresses_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("lo"); - - List addressEnum = nif.getInterfaceAddresses(); - InterfaceAddress address = addressEnum.get(0); - InetAddress localAddress = address.getAddress(); - InetAddress broadCastAddress = address.getBroadcast(); - assertEquals("127.0.0.1", localAddress.getHostAddress()); - assertEquals("127.255.255.255", broadCastAddress.getHostAddress()); - } - - @Test - public void givenInterface_whenChecksIfLoopback_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("lo"); - assertTrue(nif.isLoopback()); - } - - @Test - public void givenInterface_whenChecksIfUp_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("lo"); - assertTrue(nif.isUp()); - } - - @Test - public void givenInterface_whenChecksIfPointToPoint_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("lo"); - assertFalse(nif.isPointToPoint()); - } - - @Test - public void givenInterface_whenChecksIfVirtual_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("lo"); - assertFalse(nif.isVirtual()); - } - - @Test - public void givenInterface_whenChecksMulticastSupport_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("lo"); - assertTrue(nif.supportsMulticast()); - } - - @Test - public void givenInterface_whenGetsMacAddress_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("lo"); - byte[] bytes = nif.getHardwareAddress(); - assertNotNull(bytes); - } - - @Test - public void givenInterface_whenGetsMTU_thenCorrect() throws SocketException, UnknownHostException { - NetworkInterface nif = NetworkInterface.getByName("net0"); - int mtu = nif.getMTU(); - assertEquals(1500, mtu); - } -} From b14bae204d169dca900fbdbd6764f6cbcaa20bea Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 16 Nov 2016 17:27:15 +0200 Subject: [PATCH 062/399] Remove PathTest --- .../java/com/baeldung/java/nio2/PathTest.java | 195 ------------------ 1 file changed, 195 deletions(-) delete mode 100644 core-java/src/test/java/com/baeldung/java/nio2/PathTest.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java b/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java deleted file mode 100644 index 004aeb3deb..0000000000 --- a/core-java/src/test/java/com/baeldung/java/nio2/PathTest.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.baeldung.java.nio2; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.net.URI; -import java.nio.file.NoSuchFileException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Date; - -import org.junit.Test; - -public class PathTest { - - private static final String HOME = System.getProperty("user.home"); - - // creating a path - @Test - public void givenPathString_whenCreatesPathObject_thenCorrect() { - Path p = Paths.get("/articles/baeldung"); - assertEquals("\\articles\\baeldung", p.toString()); - - } - - @Test - public void givenPathParts_whenCreatesPathObject_thenCorrect() { - Path p = Paths.get("/articles", "baeldung"); - assertEquals("\\articles\\baeldung", p.toString()); - - } - - // retrieving path info - @Test - public void givenPath_whenRetrievesFileName_thenCorrect() { - Path p = Paths.get("/articles/baeldung/logs"); - assertEquals("logs", p.getFileName().toString()); - } - - @Test - public void givenPath_whenRetrievesNameByIndex_thenCorrect() { - Path p = Paths.get("/articles/baeldung/logs"); - assertEquals("articles", p.getName(0).toString()); - assertEquals("baeldung", p.getName(1).toString()); - assertEquals("logs", p.getName(2).toString()); - } - - @Test - public void givenPath_whenCountsParts_thenCorrect() { - Path p = Paths.get("/articles/baeldung/logs"); - assertEquals(3, p.getNameCount()); - } - - @Test - public void givenPath_whenCanRetrieveSubsequenceByIndex_thenCorrect() { - Path p = Paths.get("/articles/baeldung/logs"); - assertEquals("articles", p.subpath(0, 1).toString()); - assertEquals("articles\\baeldung", p.subpath(0, 2).toString()); - assertEquals("articles\\baeldung\\logs", p.subpath(0, 3).toString()); - assertEquals("baeldung", p.subpath(1, 2).toString()); - assertEquals("baeldung\\logs", p.subpath(1, 3).toString()); - assertEquals("logs", p.subpath(2, 3).toString()); - } - - @Test - public void givenPath_whenRetrievesParent_thenCorrect() { - Path p1 = Paths.get("/articles/baeldung/logs"); - Path p2 = Paths.get("/articles/baeldung"); - Path p3 = Paths.get("/articles"); - Path p4 = Paths.get("/"); - - assertEquals("\\articles\\baeldung", p1.getParent().toString()); - assertEquals("\\articles", p2.getParent().toString()); - assertEquals("\\", p3.getParent().toString()); - assertEquals(null, p4.getParent()); - } - - @Test - public void givenPath_whenRetrievesRoot_thenCorrect() { - Path p1 = Paths.get("/articles/baeldung/logs"); - Path p2 = Paths.get("c:/articles/baeldung/logs"); - - assertEquals("\\", p1.getRoot().toString()); - assertEquals("c:\\", p2.getRoot().toString()); - } - - // removing redundancies from path - @Test - public void givenPath_whenRemovesRedundancies_thenCorrect1() { - Path p = Paths.get("/home/./baeldung/articles"); - p = p.normalize(); - assertEquals("\\home\\baeldung\\articles", p.toString()); - } - - @Test - public void givenPath_whenRemovesRedundancies_thenCorrect2() { - Path p = Paths.get("/home/baeldung/../articles"); - p = p.normalize(); - assertEquals("\\home\\articles", p.toString()); - } - - // converting a path - @Test - public void givenPath_whenConvertsToBrowseablePath_thenCorrect() { - Path p = Paths.get("/home/baeldung/articles.html"); - URI uri = p.toUri(); - assertEquals("file:///E:/home/baeldung/articles.html", uri.toString()); - } - - @Test - public void givenPath_whenConvertsToAbsolutePath_thenCorrect() { - Path p = Paths.get("/home/baeldung/articles.html"); - assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); - } - - @Test - public void givenAbsolutePath_whenRetainsAsAbsolute_thenCorrect() { - Path p = Paths.get("E:\\home\\baeldung\\articles.html"); - assertEquals("E:\\home\\baeldung\\articles.html", p.toAbsolutePath().toString()); - } - - @Test - public void givenExistingPath_whenGetsRealPathToFile_thenCorrect() throws IOException { - Path p = Paths.get(HOME); - assertEquals(HOME, p.toRealPath().toString()); - } - - @Test(expected = NoSuchFileException.class) - public void givenInExistentPath_whenFailsToConvert_thenCorrect() throws IOException { - Path p = Paths.get("E:\\home\\baeldung\\articles.html"); - - p.toRealPath(); - } - - // joining paths - @Test - public void givenTwoPaths_whenJoinsAndResolves_thenCorrect() throws IOException { - Path p = Paths.get("/baeldung/articles"); - assertEquals("\\baeldung\\articles\\java", p.resolve("java").toString()); - } - - @Test - public void givenAbsolutePath_whenResolutionRetainsIt_thenCorrect() throws IOException { - Path p = Paths.get("/baeldung/articles"); - assertEquals("C:\\baeldung\\articles\\java", p.resolve("C:\\baeldung\\articles\\java").toString()); - } - - @Test - public void givenPathWithRoot_whenResolutionRetainsIt_thenCorrect2() throws IOException { - Path p = Paths.get("/baeldung/articles"); - assertEquals("\\java", p.resolve("/java").toString()); - } - - // creating a path between 2 paths - @Test - public void givenSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { - Path p1 = Paths.get("articles"); - Path p2 = Paths.get("authors"); - assertEquals("..\\authors", p1.relativize(p2).toString()); - assertEquals("..\\articles", p2.relativize(p1).toString()); - } - - @Test - public void givenNonSiblingPaths_whenCreatesPathToOther_thenCorrect() throws IOException { - Path p1 = Paths.get("/baeldung"); - Path p2 = Paths.get("/baeldung/authors/articles"); - assertEquals("authors\\articles", p1.relativize(p2).toString()); - assertEquals("..\\..", p2.relativize(p1).toString()); - } - - // comparing 2 paths - @Test - public void givenTwoPaths_whenTestsEquality_thenCorrect() throws IOException { - Path p1 = Paths.get("/baeldung/articles"); - Path p2 = Paths.get("/baeldung/articles"); - Path p3 = Paths.get("/baeldung/authors"); - - assertTrue(p1.equals(p2)); - assertFalse(p1.equals(p3)); - } - - @Test - public void givenPath_whenInspectsStart_thenCorrect() { - Path p1 = Paths.get("/baeldung/articles"); - assertTrue(p1.startsWith("/baeldung")); - } - - @Test - public void givenPath_whenInspectsEnd_thenCorrect() { - Path p1 = Paths.get("/baeldung/articles"); - assertTrue(p1.endsWith("articles")); - } -} From be5ac17249c3b9fcf848975b21c66a9c6c95f049 Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Wed, 16 Nov 2016 19:56:38 +0100 Subject: [PATCH 063/399] fix tests --- .../beanfactory/BeanFactoryWithClassPathResourceTest.java | 4 ++-- .../spring-app.xml => test/resources/beanfactory-example.xml} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename spring-core/src/{main/java/com/baeldung/beanfactory/spring-app.xml => test/resources/beanfactory-example.xml} (100%) diff --git a/spring-core/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceTest.java b/spring-core/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceTest.java index b3402903c1..80123a1bee 100644 --- a/spring-core/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceTest.java +++ b/spring-core/src/test/java/com/baeldung/beanfactory/BeanFactoryWithClassPathResourceTest.java @@ -13,11 +13,11 @@ public class BeanFactoryWithClassPathResourceTest { @Test public void createBeanFactoryAndCheckEmployeeBean() { - Resource res = new ClassPathResource("spring-app.xml"); + Resource res = new ClassPathResource("beanfactory-example.xml"); BeanFactory factory = new XmlBeanFactory(res); Employee emp = (Employee) factory.getBean("employee"); - assertFalse(factory.isSingleton("employee")); + assertTrue(factory.isSingleton("employee")); assertTrue(factory.getBean("employee") instanceof Employee); assertTrue(factory.isTypeMatch("employee", Employee.class)); assertTrue(factory.getAliases("employee").length > 0); diff --git a/spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml b/spring-core/src/test/resources/beanfactory-example.xml similarity index 100% rename from spring-core/src/main/java/com/baeldung/beanfactory/spring-app.xml rename to spring-core/src/test/resources/beanfactory-example.xml From 75a0274fe8c9949c325fc7572986b581d3a174fe Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 17 Nov 2016 07:46:38 +0200 Subject: [PATCH 064/399] Refactor SeleniumExample --- .../src/main/java/com/baeldung/selenium/SeleniumExample.java | 1 + 1 file changed, 1 insertion(+) diff --git a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java index a9e0ccfb4a..b97f66e9dd 100644 --- a/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java +++ b/selenium-junit-testng/src/main/java/com/baeldung/selenium/SeleniumExample.java @@ -40,6 +40,7 @@ public class SeleniumExample { if (webElementList != null) { webElementList.stream() .filter(webElement -> "Close".equalsIgnoreCase(webElement.getAttribute("title"))) + .filter(WebElement::isDisplayed) .findAny() .ifPresent(WebElement::click); } From 7e0bf584a1dedab7e9d038c20e1f22a8299d7891 Mon Sep 17 00:00:00 2001 From: oreva Date: Thu, 17 Nov 2016 13:36:07 +0200 Subject: [PATCH 065/399] Java-based configuration implemented. --- .../CustomWebSecurityConfigurerAdapter.java | 17 -------- .../spring/SecSecurityConfigJava.java | 40 +++++++++++++++++++ ...yConfig.java => SecSecurityConfigXML.java} | 10 ++--- 3 files changed, 45 insertions(+), 22 deletions(-) delete mode 100644 spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java create mode 100644 spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigJava.java rename spring-security-basic-auth/src/main/java/org/baeldung/spring/{SecSecurityConfig.java => SecSecurityConfigXML.java} (56%) diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java deleted file mode 100644 index 468c99cb2a..0000000000 --- a/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung.security.filter.configuration; - -import org.baeldung.security.filter.CustomFilter; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; - -@Configuration -public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - http.addFilterAfter(new CustomFilter(), BasicAuthenticationFilter.class); - } - -} diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigJava.java b/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigJava.java new file mode 100644 index 0000000000..8e88c3f099 --- /dev/null +++ b/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigJava.java @@ -0,0 +1,40 @@ +package org.baeldung.spring; + +import org.baeldung.security.basic.MyBasicAuthenticationEntryPoint; +import org.baeldung.security.filter.CustomFilter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; + +@Configuration +@EnableWebSecurity +@ComponentScan("org.baeldung.security") +public class SecSecurityConfigJava extends WebSecurityConfigurerAdapter { + @Autowired + private MyBasicAuthenticationEntryPoint authenticationEntryPoint; + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth + .inMemoryAuthentication() + .withUser("user1").password("user1Pass").authorities("ROLE_USER"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests() + .antMatchers("/securityNone").permitAll() + .anyRequest().authenticated() + .and() + .httpBasic() + .authenticationEntryPoint(authenticationEntryPoint); + + http.addFilterAfter(new CustomFilter(), BasicAuthenticationFilter.class); + } + +} diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfig.java b/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigXML.java similarity index 56% rename from spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfig.java rename to spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigXML.java index 4ce80dab9f..a080b624f6 100644 --- a/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfig.java +++ b/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigXML.java @@ -4,12 +4,12 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; -@Configuration -@ImportResource({ "classpath:webSecurityConfig.xml" }) -@ComponentScan("org.baeldung.security") -public class SecSecurityConfig { +//@Configuration +//@ImportResource({ "classpath:webSecurityConfig.xml" }) +//@ComponentScan("org.baeldung.security") +public class SecSecurityConfigXML { - public SecSecurityConfig() { + public SecSecurityConfigXML() { super(); } From bc4fa86c234b22ad7835866f7391799ade2d9f94 Mon Sep 17 00:00:00 2001 From: Sameera Date: Thu, 17 Nov 2016 20:48:06 +0530 Subject: [PATCH 066/399] Updated the dependency versions as properties --- core-java/pom.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index 17d9c2ce64..c3a9611682 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -49,7 +49,7 @@ org.bouncycastle bcprov-jdk15on - 1.55 + ${bouncycastle.version} @@ -134,7 +134,7 @@ commons-codec commons-codec - 1.10 + ${commons-codec.version} @@ -338,6 +338,8 @@ 19.0 3.4 + 1.55 + 1.10 1.3 From c0e721b92e30f486324ad4fe0c6b4d69f68a3ffb Mon Sep 17 00:00:00 2001 From: tschiman Date: Thu, 17 Nov 2016 20:32:05 -0700 Subject: [PATCH 067/399] Merge remote-tracking branch 'upstream/master' # Conflicts: # spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java # spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java --- spring-session/tomcat-session-demo/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spring-session/tomcat-session-demo/pom.xml b/spring-session/tomcat-session-demo/pom.xml index 805d7bec25..0a101e73a6 100644 --- a/spring-session/tomcat-session-demo/pom.xml +++ b/spring-session/tomcat-session-demo/pom.xml @@ -32,6 +32,11 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-test + test + From a88c500d8d6862ff1f9d2bd345268a2d98f8605a Mon Sep 17 00:00:00 2001 From: tschiman Date: Thu, 17 Nov 2016 20:32:44 -0700 Subject: [PATCH 068/399] BAEL-89 Adding test dependencies --- spring-session/jetty-session-demo/pom.xml | 5 +++++ .../spring/session/tomcatex/TestController.java | 15 --------------- .../spring/session/tomcatex/SecurityConfig.java | 3 --- .../spring/session/tomcatex/TestController.java | 11 ----------- 4 files changed, 5 insertions(+), 29 deletions(-) delete mode 100644 spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java diff --git a/spring-session/jetty-session-demo/pom.xml b/spring-session/jetty-session-demo/pom.xml index 86a8596862..19f0577d2e 100644 --- a/spring-session/jetty-session-demo/pom.xml +++ b/spring-session/jetty-session-demo/pom.xml @@ -37,6 +37,11 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-test + test + diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java deleted file mode 100644 index 6350a68041..0000000000 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.spring.session.tomcatex; - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * Created by tschi on 11/12/2016. - */ -@RestController -public class TestController { - @RequestMapping - public String helloJetty() { - return "hello Jetty"; - } -} diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java index 3e419b27a2..7476d7305d 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java +++ b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java @@ -14,7 +14,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() - .withUser("user").password("password").roles("USER").and() .withUser("admin").password("password").roles("ADMIN"); } @@ -23,8 +22,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { http .httpBasic().and() .authorizeRequests() - .antMatchers("/").permitAll() - .antMatchers("/tomcat").hasRole("USER") .antMatchers("/tomcat/admin").hasRole("ADMIN") .anyRequest().authenticated(); } diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java index 877f29e1d3..9728ff7fc9 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java +++ b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java @@ -5,17 +5,6 @@ import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { - - @RequestMapping - public String helloDefault() { - return "hello default"; - } - - @RequestMapping("/tomcat") - public String helloTomcat() { - return "hello tomcat"; - } - @RequestMapping("/tomcat/admin") public String helloTomcatAdmin() { return "hello tomcat admin"; From 7f6130c5661009aa1ae8e225b3d14b428e5444c8 Mon Sep 17 00:00:00 2001 From: tschiman Date: Thu, 17 Nov 2016 22:19:49 -0700 Subject: [PATCH 069/399] BAEL-89 Adding test configuration and test classes to demonstrate the code --- ...stController.java => JettyController.java} | 2 +- .../session/jettyex/JettyWebApplication.java | 1 - .../session/jettyex/SecurityConfig.java | 4 +- .../session/tomcatex/SecurityConfig.java | 13 ++- ...tController.java => TomcatController.java} | 2 +- .../tomcatex/TomcatControllerTest.java | 103 ++++++++++++++++++ 6 files changed, 113 insertions(+), 12 deletions(-) rename spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/{TestController.java => JettyController.java} (89%) rename spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/{TestController.java => TomcatController.java} (90%) create mode 100644 spring-session/tomcat-session-demo/src/test/java/com/baeldung/spring/session/tomcatex/TomcatControllerTest.java diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/TestController.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyController.java similarity index 89% rename from spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/TestController.java rename to spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyController.java index f5c82f2260..308b0a8d51 100644 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/TestController.java +++ b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyController.java @@ -4,7 +4,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -public class TestController { +public class JettyController { @RequestMapping public String helloJetty() { return "hello Jetty"; diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java index f692d0ff23..ebb2a8e188 100644 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java +++ b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java @@ -2,7 +2,6 @@ package com.baeldung.spring.session.jettyex; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.web.bind.annotation.RestController; @SpringBootApplication public class JettyWebApplication { diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java index 28cdb3cc08..5ce8f9a042 100644 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java +++ b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java @@ -13,9 +13,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http - .sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.NEVER) - .and() + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and() .authorizeRequests().anyRequest().hasRole("ADMIN"); } } diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java index 7476d7305d..0f467dd104 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java +++ b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java @@ -13,16 +13,17 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - auth.inMemoryAuthentication() - .withUser("admin").password("password").roles("ADMIN"); + auth + .inMemoryAuthentication() + .withUser("admin").password("password").roles("ADMIN"); } @Override protected void configure(HttpSecurity http) throws Exception { http - .httpBasic().and() - .authorizeRequests() - .antMatchers("/tomcat/admin").hasRole("ADMIN") - .anyRequest().authenticated(); + .httpBasic().and() + .authorizeRequests() + .antMatchers("/tomcat/admin").hasRole("ADMIN") + .anyRequest().authenticated(); } } diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatController.java similarity index 90% rename from spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java rename to spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatController.java index 9728ff7fc9..a241158294 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TestController.java +++ b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatController.java @@ -4,7 +4,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -public class TestController { +public class TomcatController { @RequestMapping("/tomcat/admin") public String helloTomcatAdmin() { return "hello tomcat admin"; diff --git a/spring-session/tomcat-session-demo/src/test/java/com/baeldung/spring/session/tomcatex/TomcatControllerTest.java b/spring-session/tomcat-session-demo/src/test/java/com/baeldung/spring/session/tomcatex/TomcatControllerTest.java new file mode 100644 index 0000000000..5bfb7e9411 --- /dev/null +++ b/spring-session/tomcat-session-demo/src/test/java/com/baeldung/spring/session/tomcatex/TomcatControllerTest.java @@ -0,0 +1,103 @@ +package com.baeldung.spring.session.tomcatex; + +import org.apache.tomcat.util.codec.binary.Base64; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.embedded.LocalServerPort; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.http.*; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.Set; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class TomcatControllerTest { + + @Autowired + private TestRestTemplate restTemplate; + @LocalServerPort + private int port; + @Autowired + private JedisConnectionFactory jedisConnectionFactory; + private RedisConnection connection; + + @Before + public void clearRedisData() { + connection = jedisConnectionFactory.getConnection(); + connection.flushAll(); + } + + @Test + public void testRedisIsEmpty() { + Set result = connection.keys("*".getBytes()); + assertEquals(0, result.size()); + } + + @Test + public void testForbiddenToProtectedEndpoint() { + ResponseEntity result = restTemplate.getForEntity("/tomcat/admin", String.class); + assertEquals(HttpStatus.UNAUTHORIZED, result.getStatusCode()); + } + + @Test + public void testLoginAddsRedisKey() { + ResponseEntity result = makeRequest(); + assertEquals("hello tomcat admin", result.getBody()); //login worked + + Set redisResult = connection.keys("*".getBytes()); + assertTrue(redisResult.size() > 0); //redis was populated with data + } + + @Test //requires that the jetty service is running on port 8081 + public void testFailureAccessingJettyResourceWithTomcatSessionToken() { + //call the jetty server with the token + ResponseEntity jettyResult = restTemplate.getForEntity("http://localhost:8081", String.class); + assertEquals(HttpStatus.UNAUTHORIZED, jettyResult.getStatusCode()); //login worked + } + + @Test //requires that the jetty service is running on port 8081 + public void testAccessingJettyResourceWithTomcatSessionToken() { + //login to get a session token + ResponseEntity result = makeRequest(); + assertEquals("hello tomcat admin", result.getBody()); //login worked + + assertTrue(result.getHeaders().containsKey("Set-Cookie")); + + String setCookieValue = result.getHeaders().get("Set-Cookie").get(0); + String sessionCookie = setCookieValue.split(";")[0]; + String sessionValue = sessionCookie.split("=")[1]; + + //Add session token to headers + HttpHeaders headers = new HttpHeaders(); + headers.add("x-auth-token", sessionValue); + + //call the jetty server with the token + HttpEntity request = new HttpEntity<>(headers); + ResponseEntity jettyResult = restTemplate.exchange("http://localhost:8081", HttpMethod.GET, request, String.class); + assertEquals("hello Jetty", jettyResult.getBody()); //login worked + + } + + private ResponseEntity makeRequest() { + String plainCreds = "admin:password"; + byte[] plainCredsBytes = plainCreds.getBytes(); + byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); + String base64Creds = new String(base64CredsBytes); + + HttpHeaders headers = new HttpHeaders(); + headers.add("Authorization", "Basic " + base64Creds); + + HttpEntity request = new HttpEntity<>(headers); + return restTemplate.exchange("http://localhost:" + port + "/tomcat/admin", HttpMethod.GET, request, String.class); + } + +} \ No newline at end of file From 205a84d8345a51544876be572fc2805b1ada7c4f Mon Sep 17 00:00:00 2001 From: eugenp Date: Fri, 18 Nov 2016 13:26:34 +0200 Subject: [PATCH 070/399] major upgrades --- spring-mvc-java/pom.xml | 4 ++-- spring-security-rest-full/pom.xml | 20 +++++++------------ .../persistence/dao/MyUserPredicate.java | 8 ++++---- .../dao/MyUserPredicatesBuilder.java | 2 +- .../persistence/dao/MyUserRepository.java | 2 +- .../web/controller/UserController.java | 4 ++-- 6 files changed, 17 insertions(+), 23 deletions(-) diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index 011de70ad2..8e2db044a6 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -248,8 +248,8 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE 2.1.4.RELEASE 2.7.8 diff --git a/spring-security-rest-full/pom.xml b/spring-security-rest-full/pom.xml index 957a349d3c..ab354d51a7 100644 --- a/spring-security-rest-full/pom.xml +++ b/spring-security-rest-full/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.8.RELEASE + 1.4.2.RELEASE @@ -109,14 +109,12 @@ - com.mysema.querydsl + com.querydsl querydsl-apt - ${querydsl.version} - com.mysema.querydsl + com.querydsl querydsl-jpa - ${querydsl.version} @@ -161,7 +159,6 @@ xml-apis xml-apis - ${xml-apis.version} org.javassist @@ -358,7 +355,7 @@ target/generated-sources/java - com.mysema.query.apt.jpa.JPAAnnotationProcessor + com.querydsl.apt.jpa.JPAAnnotationProcessor @@ -467,16 +464,13 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE 4.3.11.Final - 5.1.38 - 1.8.2.RELEASE + 5.1.40 2.0.0 - 3.6.2 + 4.1.4 2.7.8 @@ -505,7 +499,7 @@ 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 1.4.18 diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserPredicate.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserPredicate.java index 7a00e7490c..63ae35ec1f 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserPredicate.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserPredicate.java @@ -3,10 +3,10 @@ package org.baeldung.persistence.dao; import org.baeldung.persistence.model.MyUser; import org.baeldung.web.util.SearchCriteria; -import com.mysema.query.types.expr.BooleanExpression; -import com.mysema.query.types.path.NumberPath; -import com.mysema.query.types.path.PathBuilder; -import com.mysema.query.types.path.StringPath; +import com.querydsl.core.types.dsl.BooleanExpression; +import com.querydsl.core.types.dsl.NumberPath; +import com.querydsl.core.types.dsl.PathBuilder; +import com.querydsl.core.types.dsl.StringPath; public class MyUserPredicate { diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserPredicatesBuilder.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserPredicatesBuilder.java index 5e08bde273..caee59c1ec 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserPredicatesBuilder.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserPredicatesBuilder.java @@ -5,7 +5,7 @@ import java.util.List; import org.baeldung.web.util.SearchCriteria; -import com.mysema.query.types.expr.BooleanExpression; +import com.querydsl.core.types.dsl.BooleanExpression; public final class MyUserPredicatesBuilder { private final List params; diff --git a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java index db3627817a..029b57016b 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/persistence/dao/MyUserRepository.java @@ -7,7 +7,7 @@ import org.springframework.data.querydsl.QueryDslPredicateExecutor; import org.springframework.data.querydsl.binding.QuerydslBinderCustomizer; import org.springframework.data.querydsl.binding.QuerydslBindings; -import com.mysema.query.types.path.StringPath; +import com.querydsl.core.types.dsl.StringPath; public interface MyUserRepository extends JpaRepository, QueryDslPredicateExecutor, QuerydslBinderCustomizer { @Override diff --git a/spring-security-rest-full/src/main/java/org/baeldung/web/controller/UserController.java b/spring-security-rest-full/src/main/java/org/baeldung/web/controller/UserController.java index cf46e35e57..d20423ddc0 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/web/controller/UserController.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/web/controller/UserController.java @@ -29,8 +29,8 @@ import org.springframework.web.bind.annotation.ResponseStatus; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; -import com.mysema.query.types.Predicate; -import com.mysema.query.types.expr.BooleanExpression; +import com.querydsl.core.types.Predicate; +import com.querydsl.core.types.dsl.BooleanExpression; import cz.jirutka.rsql.parser.RSQLParser; import cz.jirutka.rsql.parser.ast.Node; From 42946ddbac3869a755ed48ccd6bbd9ff2e186bd8 Mon Sep 17 00:00:00 2001 From: eugenp Date: Fri, 18 Nov 2016 13:41:33 +0200 Subject: [PATCH 071/399] cleanup work --- spring-security-rest-full/.springBeans | 19 +++++++++++ .../example/spring/AnotherBootApp.java | 17 ---------- .../spring/SecurityWithoutCsrfConfig.java | 2 +- .../client/RestTemplateBasicLiveTest.java | 34 +++++++++++++++++++ .../csrf/CsrfDisabledIntegrationTest.java | 2 +- .../csrf/CsrfEnabledIntegrationTest.java | 1 + .../SecurityWithCsrfConfig.java | 2 +- .../LoggerInterceptorIntegrationTest.java | 2 +- ...essionTimerInterceptorIntegrationTest.java | 2 +- .../UserInterceptorIntegrationTest.java | 2 +- 10 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 spring-security-rest-full/.springBeans delete mode 100644 spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java rename spring-security-rest-full/src/main/java/org/baeldung/{ => security}/spring/SecurityWithoutCsrfConfig.java (98%) create mode 100644 spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java rename spring-security-rest-full/src/test/java/org/baeldung/security/{csrf => spring}/SecurityWithCsrfConfig.java (98%) diff --git a/spring-security-rest-full/.springBeans b/spring-security-rest-full/.springBeans new file mode 100644 index 0000000000..f100c6afbe --- /dev/null +++ b/spring-security-rest-full/.springBeans @@ -0,0 +1,19 @@ + + + 1 + + + + + + + java:org.baeldung.security.spring.SecurityWithoutCsrfConfig + + + src/main/webapp/WEB-INF/api-servlet.xml + java:org.baeldung.spring.Application + java:org.baeldung.security.spring.SecurityWithCsrfConfig + + + + diff --git a/spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java b/spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java deleted file mode 100644 index 445a70f29c..0000000000 --- a/spring-security-rest-full/src/main/java/org/baeldung/example/spring/AnotherBootApp.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung.example.spring; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; - -@EnableScheduling -@EnableAutoConfiguration -@ComponentScan("org.baeldung") -public class AnotherBootApp extends WebMvcConfigurerAdapter { - - public static void main(final String[] args) { - SpringApplication.run(AnotherBootApp.class, args); - } -} \ No newline at end of file diff --git a/spring-security-rest-full/src/main/java/org/baeldung/spring/SecurityWithoutCsrfConfig.java b/spring-security-rest-full/src/main/java/org/baeldung/security/spring/SecurityWithoutCsrfConfig.java similarity index 98% rename from spring-security-rest-full/src/main/java/org/baeldung/spring/SecurityWithoutCsrfConfig.java rename to spring-security-rest-full/src/main/java/org/baeldung/security/spring/SecurityWithoutCsrfConfig.java index aeb2428326..f1a78d1472 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/spring/SecurityWithoutCsrfConfig.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/security/spring/SecurityWithoutCsrfConfig.java @@ -1,4 +1,4 @@ -package org.baeldung.spring; +package org.baeldung.security.spring; import org.baeldung.web.error.CustomAccessDeniedHandler; import org.springframework.beans.factory.annotation.Autowired; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java b/spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java new file mode 100644 index 0000000000..3516e5161d --- /dev/null +++ b/spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java @@ -0,0 +1,34 @@ +package org.baeldung.client; + +import static org.baeldung.Consts.APPLICATION_PORT; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import java.io.IOException; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +public class RestTemplateBasicLiveTest { + + private RestTemplate restTemplate; + private static final String fooResourceUrl = "http://localhost:" + APPLICATION_PORT + "/spring-security-rest-full/auth/foos"; + + @Before + public void beforeTest() { + restTemplate = new RestTemplate(); + } + + // GET + + @Test + public void givenResourceUrl_whenSendGetForRequestEntity_thenStatusOk() throws IOException { + final ResponseEntity response = restTemplate.getForEntity(fooResourceUrl, String.class); + + assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); + } + +} diff --git a/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/CsrfDisabledIntegrationTest.java b/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/CsrfDisabledIntegrationTest.java index 63efd870cd..e06461fc2c 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/CsrfDisabledIntegrationTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/CsrfDisabledIntegrationTest.java @@ -4,8 +4,8 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import org.baeldung.security.spring.SecurityWithoutCsrfConfig; import org.baeldung.spring.PersistenceConfig; -import org.baeldung.spring.SecurityWithoutCsrfConfig; import org.baeldung.spring.WebConfig; import org.junit.Test; import org.springframework.http.MediaType; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/CsrfEnabledIntegrationTest.java b/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/CsrfEnabledIntegrationTest.java index b04644f847..939b745de8 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/CsrfEnabledIntegrationTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/CsrfEnabledIntegrationTest.java @@ -4,6 +4,7 @@ import static org.springframework.security.test.web.servlet.request.SecurityMock import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import org.baeldung.security.spring.SecurityWithCsrfConfig; import org.baeldung.spring.PersistenceConfig; import org.baeldung.spring.WebConfig; import org.junit.Test; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/SecurityWithCsrfConfig.java b/spring-security-rest-full/src/test/java/org/baeldung/security/spring/SecurityWithCsrfConfig.java similarity index 98% rename from spring-security-rest-full/src/test/java/org/baeldung/security/csrf/SecurityWithCsrfConfig.java rename to spring-security-rest-full/src/test/java/org/baeldung/security/spring/SecurityWithCsrfConfig.java index ae4a655265..97ae1f1dd2 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/security/csrf/SecurityWithCsrfConfig.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/security/spring/SecurityWithCsrfConfig.java @@ -1,4 +1,4 @@ -package org.baeldung.security.csrf; +package org.baeldung.security.spring; import org.baeldung.web.error.CustomAccessDeniedHandler; import org.springframework.beans.factory.annotation.Autowired; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java index 99b391eda1..7dcaec5a12 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/LoggerInterceptorIntegrationTest.java @@ -3,8 +3,8 @@ package org.baeldung.web.interceptor; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import org.baeldung.security.spring.SecurityWithoutCsrfConfig; import org.baeldung.spring.PersistenceConfig; -import org.baeldung.spring.SecurityWithoutCsrfConfig; import org.baeldung.spring.WebConfig; import org.junit.Before; import org.junit.Test; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java index 662fc997f9..d62fab0670 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/SessionTimerInterceptorIntegrationTest.java @@ -5,8 +5,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. import javax.servlet.http.HttpSession; +import org.baeldung.security.spring.SecurityWithoutCsrfConfig; import org.baeldung.spring.PersistenceConfig; -import org.baeldung.spring.SecurityWithoutCsrfConfig; import org.baeldung.spring.WebConfig; import org.junit.Before; import org.junit.Test; diff --git a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorIntegrationTest.java b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorIntegrationTest.java index 0e8f7c98ed..f995f86145 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorIntegrationTest.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/web/interceptor/UserInterceptorIntegrationTest.java @@ -1,7 +1,7 @@ package org.baeldung.web.interceptor; +import org.baeldung.security.spring.SecurityWithoutCsrfConfig; import org.baeldung.spring.PersistenceConfig; -import org.baeldung.spring.SecurityWithoutCsrfConfig; import org.baeldung.spring.WebConfig; import org.junit.Before; import org.junit.Test; From 30171ef89bcd5e0e919263fcb66ffa9c9960cbea Mon Sep 17 00:00:00 2001 From: eugenp Date: Fri, 18 Nov 2016 14:01:31 +0200 Subject: [PATCH 072/399] upgrades --- spring-rest/pom.xml | 80 ++++++++++++++----- .../java/org/baeldung/config/Application.java | 22 +++++ .../java/org/baeldung/config/WebConfig.java | 9 +-- .../src/main/resources/application.properties | 2 + .../test/java/org/baeldung/client/Consts.java | 5 ++ .../client/RestTemplateBasicLiveTest.java | 21 ++++- ...=> RedirectControllerIntegrationTest.java} | 16 ++-- ... => ExampleControllerIntegrationTest.java} | 2 +- 8 files changed, 121 insertions(+), 36 deletions(-) create mode 100644 spring-rest/src/main/java/org/baeldung/config/Application.java create mode 100644 spring-rest/src/main/resources/application.properties create mode 100644 spring-rest/src/test/java/org/baeldung/client/Consts.java rename {spring-security-rest-full => spring-rest}/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java (51%) rename spring-rest/src/test/java/org/baeldung/web/controller/redirect/{RedirectControllerTest.java => RedirectControllerIntegrationTest.java} (78%) rename spring-rest/src/test/java/org/baeldung/web/controller/status/{ExampleControllerTest.java => ExampleControllerIntegrationTest.java} (96%) diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index 6580f5ecc7..3c23f1bca7 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -1,4 +1,5 @@ - + 4.0.0 com.baeldung spring-rest @@ -9,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.5.RELEASE + 1.4.2.RELEASE @@ -24,6 +25,10 @@ org.springframework.boot spring-boot-starter-actuator + + org.springframework.boot + spring-boot-devtools + @@ -49,7 +54,7 @@ commons-fileupload commons-fileupload - 1.3.1 + 1.3.2 @@ -73,9 +78,9 @@ - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + com.thoughtworks.xstream @@ -94,7 +99,7 @@ org.apache.commons commons-lang3 - 3.2.1 + 3.5 @@ -157,16 +162,21 @@ - com.jayway.restassured - rest-assured - ${rest-assured.version} - + com.jayway.restassured + rest-assured + ${rest-assured.version} + - + com.google.protobuf protobuf-java - 2.6.1 + 3.1.0 + + + com.googlecode.protobuf-java-format + protobuf-java-format + 1.4 @@ -206,7 +216,8 @@ maven-surefire-plugin - **/*LiveTest.java + **/*IntegrationTest.java + **/*LiveTest.java @@ -240,6 +251,36 @@ + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + none + + + **/*IntegrationTest.java + + + + + + + + + + live @@ -292,6 +333,7 @@ + @@ -299,13 +341,13 @@ 4.3.11.Final - 5.1.39 + 5.1.40 5.2.2.Final - 19.0 + 20.0 3.4 @@ -323,7 +365,7 @@ 1.1.3 - 3.5.1 + 3.6.0 2.6 2.19.1 1.6.0 @@ -332,7 +374,8 @@ 3.4.1 - + + org.codehaus.mojo @@ -345,4 +388,5 @@ + diff --git a/spring-rest/src/main/java/org/baeldung/config/Application.java b/spring-rest/src/main/java/org/baeldung/config/Application.java new file mode 100644 index 0000000000..f7b74659c8 --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/config/Application.java @@ -0,0 +1,22 @@ +package org.baeldung.config; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.web.filter.ShallowEtagHeaderFilter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@EnableAutoConfiguration +@ComponentScan("org.baeldung") +public class Application extends WebMvcConfigurerAdapter { + + public static void main(final String[] args) { + SpringApplication.run(Application.class, args); + } + + @Bean + public ShallowEtagHeaderFilter shallowEtagHeaderFilter() { + return new ShallowEtagHeaderFilter(); + } +} \ No newline at end of file diff --git a/spring-rest/src/main/java/org/baeldung/config/WebConfig.java b/spring-rest/src/main/java/org/baeldung/config/WebConfig.java index d116148f09..1516e9915c 100644 --- a/spring-rest/src/main/java/org/baeldung/config/WebConfig.java +++ b/spring-rest/src/main/java/org/baeldung/config/WebConfig.java @@ -17,9 +17,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter /* * Please note that main web configuration is in src/main/webapp/WEB-INF/api-servlet.xml - * */ - @Configuration @EnableWebMvc @ComponentScan({ "org.baeldung.web" }) @@ -33,13 +31,14 @@ public class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(final List> messageConverters) { - messageConverters.add(createXmlHttpMessageConverter()); - // messageConverters.add(new MappingJackson2HttpMessageConverter()); - final Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); builder.indentOutput(true).dateFormat(new SimpleDateFormat("dd-MM-yyyy hh:mm")); messageConverters.add(new MappingJackson2HttpMessageConverter(builder.build())); // messageConverters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build())); + + messageConverters.add(createXmlHttpMessageConverter()); + // messageConverters.add(new MappingJackson2HttpMessageConverter()); + messageConverters.add(new ProtobufHttpMessageConverter()); messageConverters.add(new KryoHttpMessageConverter()); super.configureMessageConverters(messageConverters); diff --git a/spring-rest/src/main/resources/application.properties b/spring-rest/src/main/resources/application.properties new file mode 100644 index 0000000000..300589f561 --- /dev/null +++ b/spring-rest/src/main/resources/application.properties @@ -0,0 +1,2 @@ +server.port= 8082 +server.context-path=/spring-rest \ No newline at end of file diff --git a/spring-rest/src/test/java/org/baeldung/client/Consts.java b/spring-rest/src/test/java/org/baeldung/client/Consts.java new file mode 100644 index 0000000000..b40561d9c3 --- /dev/null +++ b/spring-rest/src/test/java/org/baeldung/client/Consts.java @@ -0,0 +1,5 @@ +package org.baeldung.client; + +public interface Consts { + int APPLICATION_PORT = 8082; +} diff --git a/spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java b/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java similarity index 51% rename from spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java rename to spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java index 3516e5161d..9e968b94f3 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java @@ -1,6 +1,6 @@ package org.baeldung.client; -import static org.baeldung.Consts.APPLICATION_PORT; +import static org.baeldung.client.Consts.APPLICATION_PORT; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; @@ -12,10 +12,13 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + public class RestTemplateBasicLiveTest { private RestTemplate restTemplate; - private static final String fooResourceUrl = "http://localhost:" + APPLICATION_PORT + "/spring-security-rest-full/auth/foos"; + private static final String fooResourceUrl = "http://localhost:" + APPLICATION_PORT + "/spring-rest/foos"; @Before public void beforeTest() { @@ -26,9 +29,19 @@ public class RestTemplateBasicLiveTest { @Test public void givenResourceUrl_whenSendGetForRequestEntity_thenStatusOk() throws IOException { - final ResponseEntity response = restTemplate.getForEntity(fooResourceUrl, String.class); - + ResponseEntity response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class); + assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); } + + @Test + public void givenResourceUrl_whenSendGetForRequestEntity_thenBodyCorrect() throws IOException { + ResponseEntity response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class); + + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = mapper.readTree(response.getBody()); + JsonNode name = root.path("name"); + assertThat(name.asText(), equalTo("bar")); + } } diff --git a/spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerTest.java b/spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java similarity index 78% rename from spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerTest.java rename to spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java index cafaff7b07..b31bfcf5ec 100644 --- a/spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerTest.java +++ b/spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java @@ -1,6 +1,6 @@ package org.baeldung.web.controller.redirect; -import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.nullValue; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.flash; @@ -24,7 +24,7 @@ import org.springframework.web.context.WebApplicationContext; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("file:src/main/webapp/WEB-INF/api-servlet.xml") @WebAppConfiguration -public class RedirectControllerTest { +public class RedirectControllerIntegrationTest { private MockMvc mockMvc; @@ -38,30 +38,30 @@ public class RedirectControllerTest { @Test public void whenRedirectOnUrlWithUsingXMLConfig_thenStatusRedirectionAndRedirectedOnUrl() throws Exception { - mockMvc.perform(get("/redirectWithXMLConfig")).andExpect(status().is3xxRedirection()).andExpect(view().name("RedirectedUrl")).andExpect(model().attribute("attribute", is("redirectWithXMLConfig"))) + mockMvc.perform(get("/redirectWithXMLConfig")).andExpect(status().is3xxRedirection()).andExpect(view().name("RedirectedUrl")).andExpect(model().attribute("attribute", equalTo("redirectWithXMLConfig"))) .andExpect(redirectedUrl("redirectedUrl?attribute=redirectWithXMLConfig")); } @Test public void whenRedirectOnUrlWithUsingRedirectPrefix_thenStatusRedirectionAndRedirectedOnUrl() throws Exception { - mockMvc.perform(get("/redirectWithRedirectPrefix")).andExpect(status().is3xxRedirection()).andExpect(view().name("redirect:/redirectedUrl")).andExpect(model().attribute("attribute", is("redirectWithRedirectPrefix"))) + mockMvc.perform(get("/redirectWithRedirectPrefix")).andExpect(status().is3xxRedirection()).andExpect(view().name("redirect:/redirectedUrl")).andExpect(model().attribute("attribute", equalTo("redirectWithRedirectPrefix"))) .andExpect(redirectedUrl("/redirectedUrl?attribute=redirectWithRedirectPrefix")); } @Test public void whenRedirectOnUrlWithUsingRedirectAttributes_thenStatusRedirectionAndRedirectedOnUrlAndAddedAttributeToFlashScope() throws Exception { - mockMvc.perform(get("/redirectWithRedirectAttributes")).andExpect(status().is3xxRedirection()).andExpect(flash().attribute("flashAttribute", is("redirectWithRedirectAttributes"))) - .andExpect(model().attribute("attribute", is("redirectWithRedirectAttributes"))).andExpect(model().attribute("flashAttribute", is(nullValue()))).andExpect(redirectedUrl("redirectedUrl?attribute=redirectWithRedirectAttributes")); + mockMvc.perform(get("/redirectWithRedirectAttributes")).andExpect(status().is3xxRedirection()).andExpect(flash().attribute("flashAttribute", equalTo("redirectWithRedirectAttributes"))) + .andExpect(model().attribute("attribute", equalTo("redirectWithRedirectAttributes"))).andExpect(model().attribute("flashAttribute", equalTo(nullValue()))).andExpect(redirectedUrl("redirectedUrl?attribute=redirectWithRedirectAttributes")); } @Test public void whenRedirectOnUrlWithUsingRedirectView_thenStatusRedirectionAndRedirectedOnUrlAndAddedAttributeToFlashScope() throws Exception { - mockMvc.perform(get("/redirectWithRedirectView")).andExpect(status().is3xxRedirection()).andExpect(model().attribute("attribute", is("redirectWithRedirectView"))).andExpect(redirectedUrl("redirectedUrl?attribute=redirectWithRedirectView")); + mockMvc.perform(get("/redirectWithRedirectView")).andExpect(status().is3xxRedirection()).andExpect(model().attribute("attribute", equalTo("redirectWithRedirectView"))).andExpect(redirectedUrl("redirectedUrl?attribute=redirectWithRedirectView")); } @Test public void whenRedirectOnUrlWithUsingForwardPrefix_thenStatusOkAndForwardedOnUrl() throws Exception { - mockMvc.perform(get("/forwardWithForwardPrefix")).andExpect(status().isOk()).andExpect(view().name("forward:/redirectedUrl")).andExpect(model().attribute("attribute", is("redirectWithForwardPrefix"))).andExpect(forwardedUrl("/redirectedUrl")); + mockMvc.perform(get("/forwardWithForwardPrefix")).andExpect(status().isOk()).andExpect(view().name("forward:/redirectedUrl")).andExpect(model().attribute("attribute", equalTo("redirectWithForwardPrefix"))).andExpect(forwardedUrl("/redirectedUrl")); } } diff --git a/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java b/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerIntegrationTest.java similarity index 96% rename from spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java rename to spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerIntegrationTest.java index c50e1b4f43..e29bef501e 100644 --- a/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java +++ b/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerIntegrationTest.java @@ -18,7 +18,7 @@ import org.springframework.web.context.WebApplicationContext; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = WebConfig.class) @WebAppConfiguration -public class ExampleControllerTest { +public class ExampleControllerIntegrationTest { private MockMvc mockMvc; From 12de46529d7f37333b2cf862e3a4be929d7dd395 Mon Sep 17 00:00:00 2001 From: eugenp Date: Fri, 18 Nov 2016 14:10:21 +0200 Subject: [PATCH 073/399] cleanup work --- .../java/org/baeldung/config/Application.java | 6 ------ .../main/java/org/baeldung/config/WebConfig.java | 2 +- .../baeldung/web/controller/FooController.java | 3 +-- .../client/RestTemplateBasicLiveTest.java | 16 ++++++++++++++-- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/spring-rest/src/main/java/org/baeldung/config/Application.java b/spring-rest/src/main/java/org/baeldung/config/Application.java index f7b74659c8..077213b04d 100644 --- a/spring-rest/src/main/java/org/baeldung/config/Application.java +++ b/spring-rest/src/main/java/org/baeldung/config/Application.java @@ -2,9 +2,7 @@ package org.baeldung.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; -import org.springframework.web.filter.ShallowEtagHeaderFilter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @EnableAutoConfiguration @@ -15,8 +13,4 @@ public class Application extends WebMvcConfigurerAdapter { SpringApplication.run(Application.class, args); } - @Bean - public ShallowEtagHeaderFilter shallowEtagHeaderFilter() { - return new ShallowEtagHeaderFilter(); - } } \ No newline at end of file diff --git a/spring-rest/src/main/java/org/baeldung/config/WebConfig.java b/spring-rest/src/main/java/org/baeldung/config/WebConfig.java index 1516e9915c..39c1252c4f 100644 --- a/spring-rest/src/main/java/org/baeldung/config/WebConfig.java +++ b/spring-rest/src/main/java/org/baeldung/config/WebConfig.java @@ -36,7 +36,7 @@ public class WebConfig extends WebMvcConfigurerAdapter { messageConverters.add(new MappingJackson2HttpMessageConverter(builder.build())); // messageConverters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build())); - messageConverters.add(createXmlHttpMessageConverter()); + // messageConverters.add(createXmlHttpMessageConverter()); // messageConverters.add(new MappingJackson2HttpMessageConverter()); messageConverters.add(new ProtobufHttpMessageConverter()); diff --git a/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java b/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java index dd1e3ca222..21ba3c6d13 100644 --- a/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java +++ b/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java @@ -1,7 +1,6 @@ package org.baeldung.web.controller; import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.apache.commons.lang3.RandomStringUtils.randomNumeric; import org.baeldung.web.dto.Foo; import org.baeldung.web.dto.FooProtos; @@ -26,7 +25,7 @@ public class FooController { @RequestMapping(method = RequestMethod.GET, value = "/foos/{id}") @ResponseBody public Foo findById(@PathVariable final long id) { - return new Foo(Long.parseLong(randomNumeric(2)), randomAlphabetic(4)); + return new Foo(id, randomAlphabetic(4)); } // API - write diff --git a/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java b/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java index 9e968b94f3..e4321e163f 100644 --- a/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java @@ -2,10 +2,14 @@ package org.baeldung.client; import static org.baeldung.client.Consts.APPLICATION_PORT; import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Matchers.notNull; import java.io.IOException; +import org.baeldung.web.dto.Foo; import org.junit.Before; import org.junit.Test; import org.springframework.http.HttpStatus; @@ -41,7 +45,15 @@ public class RestTemplateBasicLiveTest { ObjectMapper mapper = new ObjectMapper(); JsonNode root = mapper.readTree(response.getBody()); JsonNode name = root.path("name"); - assertThat(name.asText(), equalTo("bar")); + assertThat(name.asText(), is(notNull())); } - + + @Test + public void givenResourceUrl_whenRetrievingResource_thenCorrect() throws IOException { + final Foo foo = restTemplate.getForObject(fooResourceUrl + "/1", Foo.class); + + assertThat(foo.getName(), notNullValue()); + assertThat(foo.getId(), is(1L)); + } + } From 6d8a11f0a6245f2f70b23aa189545b110a5ba08f Mon Sep 17 00:00:00 2001 From: Prashant Khanal Date: Fri, 18 Nov 2016 11:15:38 -0800 Subject: [PATCH 074/399] @Qualifier annotation removed --- .../java/com/baeldung/spring/controllers/MailController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java b/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java index 768a0f8e7b..286a661b65 100644 --- a/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java +++ b/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java @@ -26,6 +26,7 @@ import java.util.Set; @Controller @RequestMapping("/mail") public class MailController { + @Autowired public EmailServiceImpl emailService; @@ -33,7 +34,6 @@ public class MailController { private String attachmentPath; @Autowired - @Qualifier("templateSimpleMessage") public SimpleMailMessage template; private static final Map> labels; From 224a3a8a42e2c005fa77adee45f362cb6ada5ae9 Mon Sep 17 00:00:00 2001 From: Parth Joshi Date: Sat, 19 Nov 2016 03:32:52 +0530 Subject: [PATCH 075/399] GeoIp Article PR (#789) * GEO Ip Article first commit. * Changes in controller and flow as per review by Kevin. * Removed this file from spring-mvc-java as I had worked on spring-mvc-xml and this was commited by mistake. * Some fix in service usage as i was initializing service, intializing the db in the each requests. * Changes for Integration Testing Config. Renaming the test file for the same purpose. * Removed integration profile. --- spring-mvc-xml/pom.xml | 7 +- .../controller/GeoIPTestController.java | 28 +++++++ .../java/com/baeldung/spring/form/GeoIP.java | 56 +++++++++++++ .../RawDBDemoGeoIPLocationService.java | 29 +++++++ spring-mvc-xml/src/main/webapp/GeoIpTest.jsp | 84 +++++++++++++++++++ .../baeldung/geoip/GeoIpIntegrationTest.java | 31 +++++++ 6 files changed, 234 insertions(+), 1 deletion(-) create mode 100644 spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GeoIPTestController.java create mode 100644 spring-mvc-xml/src/main/java/com/baeldung/spring/form/GeoIP.java create mode 100644 spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java create mode 100644 spring-mvc-xml/src/main/webapp/GeoIpTest.jsp create mode 100644 spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java diff --git a/spring-mvc-xml/pom.xml b/spring-mvc-xml/pom.xml index 849699cfae..ca51a56633 100644 --- a/spring-mvc-xml/pom.xml +++ b/spring-mvc-xml/pom.xml @@ -112,6 +112,11 @@ commons-io 2.2 + + com.maxmind.geoip2 + geoip2 + 2.8.0 + @@ -146,7 +151,7 @@ ${maven-surefire-plugin.version} - + **/*IntegrationTest.java diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GeoIPTestController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GeoIPTestController.java new file mode 100644 index 0000000000..16de4e56f5 --- /dev/null +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GeoIPTestController.java @@ -0,0 +1,28 @@ +package com.baeldung.spring.controller; + +import java.io.IOException; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.baeldung.spring.form.GeoIP; +import com.baeldung.spring.service.RawDBDemoGeoIPLocationService; + +@Controller +public class GeoIPTestController { + private RawDBDemoGeoIPLocationService locationService; + public GeoIPTestController() throws IOException { + locationService + = new RawDBDemoGeoIPLocationService(); + } + @RequestMapping(value="/GeoIPTest", method = RequestMethod.POST) + @ResponseBody + public GeoIP getLocation( + @RequestParam(value="ipAddress", required=true) String ipAddress) throws Exception { + + return locationService.getLocation(ipAddress); + } +} diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/form/GeoIP.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/form/GeoIP.java new file mode 100644 index 0000000000..19f56867a1 --- /dev/null +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/form/GeoIP.java @@ -0,0 +1,56 @@ +package com.baeldung.spring.form; + +public class GeoIP { + private String ipAddress; + private String city; + private String latitude; + private String longitude; + + public GeoIP() { + + } + + public GeoIP(String ipAddress) { + this.ipAddress = ipAddress; + } + + public GeoIP(String ipAddress, String city, String latitude, String longitude) { + this.ipAddress = ipAddress; + this.city = city; + this.latitude = latitude; + this.longitude = longitude; + } + + public String getIpAddress() { + return ipAddress; + } + + public void setIpAddress(String ipAddress) { + this.ipAddress = ipAddress; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + +} diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java new file mode 100644 index 0000000000..0a292ab1e9 --- /dev/null +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java @@ -0,0 +1,29 @@ +package com.baeldung.spring.service; + +import java.io.File; +import java.io.IOException; +import java.net.InetAddress; + +import com.baeldung.spring.form.GeoIP; +import com.maxmind.geoip2.DatabaseReader; +import com.maxmind.geoip2.exception.GeoIp2Exception; +import com.maxmind.geoip2.model.CityResponse; + +public class RawDBDemoGeoIPLocationService{ + private DatabaseReader dbReader; + + public RawDBDemoGeoIPLocationService() throws IOException { + File database = new File("C:\\Users\\Parth Joshi\\Desktop\\GeoLite2-City.mmdb\\GeoLite2-City.mmdb"); + dbReader = new DatabaseReader.Builder(database).build(); + } + + public GeoIP getLocation(String ip) throws IOException, GeoIp2Exception { + InetAddress ipAddress = InetAddress.getByName(ip); + CityResponse response = dbReader.city(ipAddress); + + String cityName = response.getCity().getName(); + String latitude = response.getLocation().getLatitude().toString(); + String longitude = response.getLocation().getLongitude().toString(); + return new GeoIP(ip, cityName, latitude, longitude); + } +} diff --git a/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp b/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp new file mode 100644 index 0000000000..431f6162bc --- /dev/null +++ b/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp @@ -0,0 +1,84 @@ + + + + +Geo IP Test + + + + + + + + +
+ + + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java b/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java new file mode 100644 index 0000000000..72d528095e --- /dev/null +++ b/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java @@ -0,0 +1,31 @@ +package com.baeldung.geoip; + +import java.io.File; +import java.io.IOException; +import java.net.InetAddress; + +import org.junit.Test; + +import com.maxmind.geoip2.DatabaseReader; +import com.maxmind.geoip2.exception.GeoIp2Exception; +import com.maxmind.geoip2.model.CityResponse; + + +public class GeoIpIntegrationTest { + + @Test + public void givenIP_whenFetchingCity_thenReturnsCityData() throws IOException, GeoIp2Exception { + File database = new File("C:\\Users\\Parth Joshi\\Desktop\\GeoLite2-City.mmdb\\GeoLite2-City.mmdb"); + DatabaseReader dbReader = new DatabaseReader.Builder(database).build(); + + InetAddress ipAddress = InetAddress.getByName("202.47.112.9"); + CityResponse response = dbReader.city(ipAddress); + + String countryName = response.getCountry().getName(); + String cityName = response.getCity().getName(); + String postal = response.getPostal().getCode(); + String state = response.getLeastSpecificSubdivision().getName(); + + } + +} From da66ba895517026dc147bc23e0fab945298b2b5a Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 19 Nov 2016 08:30:42 +0200 Subject: [PATCH 076/399] Remove unnecessary comments --- .../java/com/baeldung/spring/controllers/MailController.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java b/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java index 286a661b65..ff828ca9ec 100644 --- a/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java +++ b/spring-mvc-email/src/main/java/com/baeldung/spring/controllers/MailController.java @@ -20,9 +20,6 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; -/** - * Created by Olga on 7/20/2016. - */ @Controller @RequestMapping("/mail") public class MailController { From 5f99e5aedd6fc64c4266104c72674b372b7d57e7 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sat, 19 Nov 2016 09:47:17 +0100 Subject: [PATCH 077/399] BAEL-89 - Adding surefire, fixing formatting --- .../spring/session/jettyex/SecurityConfig.java | 4 ++-- spring-session/pom.xml | 1 + spring-session/tomcat-session-demo/pom.xml | 14 ++++++++++++++ .../spring/session/tomcatex/SecurityConfig.java | 12 ++++++------ 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java index 5ce8f9a042..09f752b261 100644 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java +++ b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java @@ -13,7 +13,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and() - .authorizeRequests().anyRequest().hasRole("ADMIN"); + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and() + .authorizeRequests().anyRequest().hasRole("ADMIN"); } } diff --git a/spring-session/pom.xml b/spring-session/pom.xml index fec6a46af2..3a5965c193 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -19,4 +19,5 @@ jetty-session-demo tomcat-session-demo + \ No newline at end of file diff --git a/spring-session/tomcat-session-demo/pom.xml b/spring-session/tomcat-session-demo/pom.xml index 0a101e73a6..7d52082651 100644 --- a/spring-session/tomcat-session-demo/pom.xml +++ b/spring-session/tomcat-session-demo/pom.xml @@ -66,6 +66,20 @@ 1.8
+ + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*ControllerTest.java + + +
+ + + 2.19.1 + \ No newline at end of file diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java index 0f467dd104..691aad3ee5 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java +++ b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java @@ -14,16 +14,16 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth - .inMemoryAuthentication() - .withUser("admin").password("password").roles("ADMIN"); + .inMemoryAuthentication() + .withUser("admin").password("password").roles("ADMIN"); } @Override protected void configure(HttpSecurity http) throws Exception { http - .httpBasic().and() - .authorizeRequests() - .antMatchers("/tomcat/admin").hasRole("ADMIN") - .anyRequest().authenticated(); + .httpBasic().and() + .authorizeRequests() + .antMatchers("/tomcat/admin").hasRole("ADMIN") + .anyRequest().authenticated(); } } From 858d14baf308f7e22ddf8d96ddb0587cf106b538 Mon Sep 17 00:00:00 2001 From: oreva Date: Sat, 19 Nov 2016 21:14:40 +0200 Subject: [PATCH 078/399] Reorganized classes according to the last pull request's comments. --- .../CustomWebSecurityConfigurerAdapter.java} | 26 +++++++++---------- ...yConfigXML.java => SecSecurityConfig.java} | 9 +++---- 2 files changed, 17 insertions(+), 18 deletions(-) rename spring-security-basic-auth/src/main/java/org/baeldung/{spring/SecSecurityConfigJava.java => security/filter/configuration/CustomWebSecurityConfigurerAdapter.java} (63%) rename spring-security-basic-auth/src/main/java/org/baeldung/spring/{SecSecurityConfigXML.java => SecSecurityConfig.java} (55%) diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigJava.java b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java similarity index 63% rename from spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigJava.java rename to spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java index 8e88c3f099..1901489305 100644 --- a/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigJava.java +++ b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java @@ -1,9 +1,8 @@ -package org.baeldung.spring; +package org.baeldung.security.filter.configuration; import org.baeldung.security.basic.MyBasicAuthenticationEntryPoint; import org.baeldung.security.filter.CustomFilter; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; @@ -13,28 +12,29 @@ import org.springframework.security.web.authentication.www.BasicAuthenticationFi @Configuration @EnableWebSecurity -@ComponentScan("org.baeldung.security") -public class SecSecurityConfigJava extends WebSecurityConfigurerAdapter { +public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { @Autowired private MyBasicAuthenticationEntryPoint authenticationEntryPoint; @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + public void configureGlobal(AuthenticationManagerBuilder auth) + throws Exception { auth - .inMemoryAuthentication() - .withUser("user1").password("user1Pass").authorities("ROLE_USER"); + .inMemoryAuthentication() + .withUser("user1").password("user1Pass") + .authorities("ROLE_USER"); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() - .antMatchers("/securityNone").permitAll() - .anyRequest().authenticated() - .and() + .antMatchers("/securityNone").permitAll() + .anyRequest().authenticated() + .and() .httpBasic() - .authenticationEntryPoint(authenticationEntryPoint); + .authenticationEntryPoint(authenticationEntryPoint); - http.addFilterAfter(new CustomFilter(), BasicAuthenticationFilter.class); + http.addFilterAfter(new CustomFilter(), + BasicAuthenticationFilter.class); } - } diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigXML.java b/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfig.java similarity index 55% rename from spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigXML.java rename to spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfig.java index a080b624f6..5aa14c1051 100644 --- a/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfigXML.java +++ b/spring-security-basic-auth/src/main/java/org/baeldung/spring/SecSecurityConfig.java @@ -2,14 +2,13 @@ package org.baeldung.spring; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.ImportResource; -//@Configuration +@Configuration +@ComponentScan("org.baeldung.security") //@ImportResource({ "classpath:webSecurityConfig.xml" }) -//@ComponentScan("org.baeldung.security") -public class SecSecurityConfigXML { +public class SecSecurityConfig { - public SecSecurityConfigXML() { + public SecSecurityConfig() { super(); } From 42fc383518761be292e36041cc3d0f81f27ed7b2 Mon Sep 17 00:00:00 2001 From: DianeDuan Date: Sun, 20 Nov 2016 10:52:09 +0800 Subject: [PATCH 079/399] FactoryBean example code --- .../factorybean/FactoryBeanAppConfig.java | 25 +++++++ .../InitializationToolFactory.java | 68 ++++++++++++++++++ .../factorybean/NonSingleToolFactory.java | 56 +++++++++++++++ .../factorybean/PostConstructToolFactory.java | 69 +++++++++++++++++++ .../factorybean/SingleToolFactory.java | 53 ++++++++++++++ .../java/com/baeldung/factorybean/Tool.java | 40 +++++++++++ .../com/baeldung/factorybean/ToolFactory.java | 57 +++++++++++++++ .../java/com/baeldung/factorybean/Worker.java | 30 ++++++++ .../factorybean-abstract-spring-ctx.xml | 39 +++++++++++ .../resources/factorybean-init-spring-ctx.xml | 17 +++++ .../factorybean-postconstruct-spring-ctx.xml | 20 ++++++ .../main/resources/factorybean-spring-ctx.xml | 17 +++++ .../factorybean/AbstractFactoryBeanTest.java | 35 ++++++++++ .../FactoryBeanInitializeTest.java | 17 +++++ .../baeldung/factorybean/FactoryBeanTest.java | 39 +++++++++++ 15 files changed, 582 insertions(+) create mode 100644 spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java create mode 100644 spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java create mode 100644 spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java create mode 100644 spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java create mode 100644 spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java create mode 100644 spring-core/src/main/java/com/baeldung/factorybean/Tool.java create mode 100644 spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java create mode 100644 spring-core/src/main/java/com/baeldung/factorybean/Worker.java create mode 100644 spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml create mode 100644 spring-core/src/main/resources/factorybean-init-spring-ctx.xml create mode 100644 spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml create mode 100644 spring-core/src/main/resources/factorybean-spring-ctx.xml create mode 100644 spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java create mode 100644 spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java create mode 100644 spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java diff --git a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java new file mode 100644 index 0000000000..ab36df27cb --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java @@ -0,0 +1,25 @@ +package com.baeldung.factorybean; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class FactoryBeanAppConfig { + @Bean + public ToolFactory tool() { + ToolFactory factory = new ToolFactory(); + factory.setFactoryId(7070); + factory.setToolId(2); + factory.setToolName("wrench"); + factory.setToolPrice(3.7); + return factory; + } + + @Bean + public Worker worker() throws Exception { + Worker worker = new Worker(); + worker.setNumber("1002"); + worker.setTool(tool().getObject()); + return worker; + } +} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java new file mode 100644 index 0000000000..925ba2d8e4 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java @@ -0,0 +1,68 @@ +package com.baeldung.factorybean; + +import org.springframework.beans.factory.FactoryBean; +import org.springframework.beans.factory.InitializingBean; + +public class InitializationToolFactory implements FactoryBean, InitializingBean { + private int factoryId;// standard setters and getters + private int toolId;// standard setters and getters + private String toolName;// standard setters and getters + private double toolPrice;// standard setters and getters + + @Override + public void afterPropertiesSet() throws Exception { + if (toolName == null || toolName.equals("")) { + throw new IllegalArgumentException("tool name cannot be empty"); + } + if (toolPrice < 0) { + throw new IllegalArgumentException("tool price should not be less than 0"); + } + } + + @Override + public Tool getObject() throws Exception { + return new Tool(toolId, toolName, toolPrice); + } + + @Override + public Class getObjectType() { + return Tool.class; + } + + @Override + public boolean isSingleton() { + return false; + } + + public int getFactoryId() { + return factoryId; + } + + public void setFactoryId(int factoryId) { + this.factoryId = factoryId; + } + + public int getToolId() { + return toolId; + } + + public void setToolId(int toolId) { + this.toolId = toolId; + } + + public String getToolName() { + return toolName; + } + + public void setToolName(String toolName) { + this.toolName = toolName; + } + + public double getToolPrice() { + return toolPrice; + } + + public void setToolPrice(double toolPrice) { + this.toolPrice = toolPrice; + } +} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java new file mode 100644 index 0000000000..0cd80eab41 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java @@ -0,0 +1,56 @@ +package com.baeldung.factorybean; + +import org.springframework.beans.factory.config.AbstractFactoryBean; + +public class NonSingleToolFactory extends AbstractFactoryBean { + private int factoryId;// standard setters and getters + private int toolId;// standard setters and getters + private String toolName;// standard setters and getters + private double toolPrice;// standard setters and getters + + public NonSingleToolFactory() { + setSingleton(false); + } + + @Override + public Class getObjectType() { + return Tool.class; + } + + @Override + protected Tool createInstance() throws Exception { + return new Tool(toolId, toolName, toolPrice); + } + + public int getFactoryId() { + return factoryId; + } + + public void setFactoryId(int factoryId) { + this.factoryId = factoryId; + } + + public int getToolId() { + return toolId; + } + + public void setToolId(int toolId) { + this.toolId = toolId; + } + + public String getToolName() { + return toolName; + } + + public void setToolName(String toolName) { + this.toolName = toolName; + } + + public double getToolPrice() { + return toolPrice; + } + + public void setToolPrice(double toolPrice) { + this.toolPrice = toolPrice; + } +} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java new file mode 100644 index 0000000000..8298f6f4db --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java @@ -0,0 +1,69 @@ +package com.baeldung.factorybean; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.FactoryBean; + +public class PostConstructToolFactory implements FactoryBean { + private int factoryId;// standard setters and getters + private int toolId;// standard setters and getters + private String toolName;// standard setters and getters + private double toolPrice;// standard setters and getters + + @Override + public Tool getObject() throws Exception { + return new Tool(toolId, toolName, toolPrice); + } + + @Override + public Class getObjectType() { + return Tool.class; + } + + @Override + public boolean isSingleton() { + return false; + } + + @PostConstruct + public void checkParams() { + if (toolName == null || toolName.equals("")) { + throw new IllegalArgumentException("tool name cannot be empty"); + } + if (toolPrice < 0) { + throw new IllegalArgumentException("tool price should not be less than 0"); + } + } + + public int getFactoryId() { + return factoryId; + } + + public void setFactoryId(int factoryId) { + this.factoryId = factoryId; + } + + public int getToolId() { + return toolId; + } + + public void setToolId(int toolId) { + this.toolId = toolId; + } + + public String getToolName() { + return toolName; + } + + public void setToolName(String toolName) { + this.toolName = toolName; + } + + public double getToolPrice() { + return toolPrice; + } + + public void setToolPrice(double toolPrice) { + this.toolPrice = toolPrice; + } +} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java new file mode 100644 index 0000000000..94d68ef113 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java @@ -0,0 +1,53 @@ +package com.baeldung.factorybean; + +import org.springframework.beans.factory.config.AbstractFactoryBean; + +//no need to set singleton property because default value is true +public class SingleToolFactory extends AbstractFactoryBean { + private int factoryId;// standard setters and getters + private int toolId;// standard setters and getters + private String toolName;// standard setters and getters + private double toolPrice;// standard setters and getters + + @Override + public Class getObjectType() { + return Tool.class; + } + + @Override + protected Tool createInstance() throws Exception { + return new Tool(toolId, toolName, toolPrice); + } + + public int getFactoryId() { + return factoryId; + } + + public void setFactoryId(int factoryId) { + this.factoryId = factoryId; + } + + public int getToolId() { + return toolId; + } + + public void setToolId(int toolId) { + this.toolId = toolId; + } + + public String getToolName() { + return toolName; + } + + public void setToolName(String toolName) { + this.toolName = toolName; + } + + public double getToolPrice() { + return toolPrice; + } + + public void setToolPrice(double toolPrice) { + this.toolPrice = toolPrice; + } +} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/Tool.java b/spring-core/src/main/java/com/baeldung/factorybean/Tool.java new file mode 100644 index 0000000000..abdd074e9a --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/factorybean/Tool.java @@ -0,0 +1,40 @@ +package com.baeldung.factorybean; + +public class Tool { + private int id;// standard setters and getters + private String name;// standard setters and getters + private double price;// standard setters and getters + + public Tool() { + } + + public Tool(int id, String name, double price) { + this.id = id; + this.name = name; + this.price = price; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } +} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java new file mode 100644 index 0000000000..9b2f7fa42e --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java @@ -0,0 +1,57 @@ +package com.baeldung.factorybean; + +import org.springframework.beans.factory.FactoryBean; + +public class ToolFactory implements FactoryBean { + private int factoryId;// standard setters and getters + private int toolId;// standard setters and getters + private String toolName;// standard setters and getters + private double toolPrice;// standard setters and getters + + @Override + public Tool getObject() throws Exception { + return new Tool(toolId, toolName, toolPrice); + } + + @Override + public Class getObjectType() { + return Tool.class; + } + + @Override + public boolean isSingleton() { + return false; + } + + public int getFactoryId() { + return factoryId; + } + + public void setFactoryId(int factoryId) { + this.factoryId = factoryId; + } + + public int getToolId() { + return toolId; + } + + public void setToolId(int toolId) { + this.toolId = toolId; + } + + public String getToolName() { + return toolName; + } + + public void setToolName(String toolName) { + this.toolName = toolName; + } + + public double getToolPrice() { + return toolPrice; + } + + public void setToolPrice(double toolPrice) { + this.toolPrice = toolPrice; + } +} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/Worker.java b/spring-core/src/main/java/com/baeldung/factorybean/Worker.java new file mode 100644 index 0000000000..070322a5f9 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/factorybean/Worker.java @@ -0,0 +1,30 @@ +package com.baeldung.factorybean; + +public class Worker { + private String number;// standard setters and getters + private Tool tool;// standard setters and getters + + public Worker() { + } + + public Worker(String number, Tool tool) { + this.number = number; + this.tool = tool; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public Tool getTool() { + return tool; + } + + public void setTool(Tool tool) { + this.tool = tool; + } +} diff --git a/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml b/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml new file mode 100644 index 0000000000..2f34e2e1cf --- /dev/null +++ b/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-core/src/main/resources/factorybean-init-spring-ctx.xml b/spring-core/src/main/resources/factorybean-init-spring-ctx.xml new file mode 100644 index 0000000000..f5835c1e70 --- /dev/null +++ b/spring-core/src/main/resources/factorybean-init-spring-ctx.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml b/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml new file mode 100644 index 0000000000..81e02a0b35 --- /dev/null +++ b/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-core/src/main/resources/factorybean-spring-ctx.xml b/spring-core/src/main/resources/factorybean-spring-ctx.xml new file mode 100644 index 0000000000..800e489ba0 --- /dev/null +++ b/spring-core/src/main/resources/factorybean-spring-ctx.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java b/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java new file mode 100644 index 0000000000..790107f114 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java @@ -0,0 +1,35 @@ +package com.baeldung.factorybean; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class AbstractFactoryBeanTest { + @Test + public void testSingleToolFactory() { + ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-abstract-spring-ctx.xml"); + + Worker worker1 = (Worker) context.getBean("worker1"); + Worker worker2 = (Worker) context.getBean("worker2"); + + assertThat(worker1.getNumber(), equalTo("50001")); + assertThat(worker2.getNumber(), equalTo("50002")); + assertTrue(worker1.getTool() == worker2.getTool()); + } + + @Test + public void testNonSingleToolFactory() { + ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-abstract-spring-ctx.xml"); + + Worker worker3 = (Worker) context.getBean("worker3"); + Worker worker4 = (Worker) context.getBean("worker4"); + + assertThat(worker3.getNumber(), equalTo("50003")); + assertThat(worker4.getNumber(), equalTo("50004")); + assertTrue(worker3.getTool() != worker4.getTool()); + } +} diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java new file mode 100644 index 0000000000..851c15a3ec --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java @@ -0,0 +1,17 @@ +package com.baeldung.factorybean; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class FactoryBeanInitializeTest { + @Test(expected = Exception.class) + public void testInitializationToolFactory() { + ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-init-spring-ctx.xml"); + } + + @Test(expected = Exception.class) + public void testPostConstructToolFactory() { + ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-postconstruct-spring-ctx.xml"); + } +} diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java new file mode 100644 index 0000000000..d06448b63c --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java @@ -0,0 +1,39 @@ +package com.baeldung.factorybean; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class FactoryBeanTest { + @Test + public void testConstructWorkerByXml() { + ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-spring-ctx.xml"); + + Worker worker = (Worker) context.getBean("worker"); + assertThat(worker.getNumber(), equalTo("1001")); + assertThat(worker.getTool().getId(), equalTo(1)); + assertThat(worker.getTool().getName(), equalTo("screwdriver")); + assertThat(worker.getTool().getPrice(), equalTo(1.5)); + + ToolFactory toolFactory = (ToolFactory) context.getBean("&tool"); + assertThat(toolFactory.getFactoryId(), equalTo(9090)); + } + + @Test + public void testConstructWorkerByJava() { + ApplicationContext context = new AnnotationConfigApplicationContext(FactoryBeanAppConfig.class); + + Worker worker = (Worker) context.getBean("worker"); + assertThat(worker.getNumber(), equalTo("1002")); + assertThat(worker.getTool().getId(), equalTo(2)); + assertThat(worker.getTool().getName(), equalTo("wrench")); + assertThat(worker.getTool().getPrice(), equalTo(3.7)); + + ToolFactory toolFactory = (ToolFactory) context.getBean("&tool"); + assertThat(toolFactory.getFactoryId(), equalTo(7070)); + } +} From d13f7b9ed83abfc1317d503958e179f20d872f8a Mon Sep 17 00:00:00 2001 From: DianeDuan Date: Sun, 20 Nov 2016 11:22:42 +0800 Subject: [PATCH 080/399] delete last topic code --- .../properties/PropertiesDefaultListTest.java | 30 ------ .../properties/PropertiesLoadTest.java | 32 ------ .../properties/PropertiesOperationsTest.java | 97 ------------------- .../properties/PropertiesStoreTest.java | 51 ---------- core-java/src/test/resources/app.properties | 3 - core-java/src/test/resources/catalog | 3 - .../src/test/resources/default.properties | 4 - core-java/src/test/resources/icons.xml | 8 -- 8 files changed, 228 deletions(-) delete mode 100644 core-java/src/test/java/com/baeldung/properties/PropertiesDefaultListTest.java delete mode 100644 core-java/src/test/java/com/baeldung/properties/PropertiesLoadTest.java delete mode 100644 core-java/src/test/java/com/baeldung/properties/PropertiesOperationsTest.java delete mode 100644 core-java/src/test/java/com/baeldung/properties/PropertiesStoreTest.java delete mode 100644 core-java/src/test/resources/app.properties delete mode 100644 core-java/src/test/resources/catalog delete mode 100644 core-java/src/test/resources/default.properties delete mode 100644 core-java/src/test/resources/icons.xml diff --git a/core-java/src/test/java/com/baeldung/properties/PropertiesDefaultListTest.java b/core-java/src/test/java/com/baeldung/properties/PropertiesDefaultListTest.java deleted file mode 100644 index 704bb19759..0000000000 --- a/core-java/src/test/java/com/baeldung/properties/PropertiesDefaultListTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.properties; - -import org.junit.Test; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.Properties; - -import static org.hamcrest.core.IsEqual.equalTo; -import static org.junit.Assert.assertThat; - -public class PropertiesDefaultListTest { - @Test - public void testDefaultList() throws IOException { - String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - String defaultConfigPath = rootPath + "default.properties"; - String appConfigPath = rootPath + "app.properties"; - - Properties defaultProps = new Properties(); - defaultProps.load(new FileInputStream(defaultConfigPath)); - - Properties appProps = new Properties(defaultProps); - appProps.load(new FileInputStream(appConfigPath)); - - assertThat(appProps.getProperty("name"), equalTo("TestApp")); - assertThat(appProps.getProperty("version"), equalTo("1.0")); - assertThat(appProps.getProperty("site"), equalTo("www.google.com")); - } -} diff --git a/core-java/src/test/java/com/baeldung/properties/PropertiesLoadTest.java b/core-java/src/test/java/com/baeldung/properties/PropertiesLoadTest.java deleted file mode 100644 index bcf386bd0f..0000000000 --- a/core-java/src/test/java/com/baeldung/properties/PropertiesLoadTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.properties; - -import org.junit.Test; - -import java.io.FileInputStream; -import java.io.IOException; -import java.util.Properties; - -public class PropertiesLoadTest { - @Test - public void testLoadFromPropertiesFiles() throws IOException { - String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - String appConfigPath = rootPath + "app.properties"; - String catalogConfigPath = rootPath + "catalog"; - - // load from properties file which use .properties as the suffix - Properties appProps = new Properties(); - appProps.load(new FileInputStream(appConfigPath)); - - // load from properties file which not use .properties as the suffix - Properties catalogProps = new Properties(); - catalogProps.load(new FileInputStream(catalogConfigPath)); - } - - @Test - public void testLoadFromXmlFile() throws IOException { - String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - String iconConfigPath = rootPath + "icons.xml"; - Properties iconProps = new Properties(); - iconProps.loadFromXML(new FileInputStream(iconConfigPath)); - } -} diff --git a/core-java/src/test/java/com/baeldung/properties/PropertiesOperationsTest.java b/core-java/src/test/java/com/baeldung/properties/PropertiesOperationsTest.java deleted file mode 100644 index 20aa64c385..0000000000 --- a/core-java/src/test/java/com/baeldung/properties/PropertiesOperationsTest.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.baeldung.properties; - -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import org.junit.Before; -import org.junit.Test; -import org.testng.annotations.BeforeClass; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Enumeration; -import java.util.List; -import java.util.Properties; -import java.util.Set; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - -public class PropertiesOperationsTest { - private Properties appProps; - - @Before - public void beforeClass() throws IOException { - String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - String appConfigPath = rootPath + "app.properties"; - appProps = new Properties(); - appProps.load(new FileInputStream(appConfigPath)); - } - - @Test - public void testGetProperties() { - String appVersion = appProps.getProperty("version"); - String appName = appProps.getProperty("name", "defaultName"); - String appGroup = appProps.getProperty("group", "baeldung"); - String appDownloadAddr = appProps.getProperty("downloadAddr"); - - assertThat(appVersion, equalTo("1.0")); - assertThat(appName, equalTo("TestApp")); - assertThat(appGroup, equalTo("baeldung")); - assertThat(appDownloadAddr, equalTo(null)); - } - - @Test - public void testSetProperties() { - appProps.setProperty("name", "NewAppName"); - appProps.setProperty("downloadAddr", "www.baeldung.com/downloads"); - - String appName = appProps.getProperty("name"); - String appDownloadAddr = appProps.getProperty("downloadAddr"); - - assertThat(appName, equalTo("NewAppName")); - assertThat(appDownloadAddr, equalTo("www.baeldung.com/downloads")); - } - - @Test - public void testRemoveProperties() { - String versionBeforeRemoval = appProps.getProperty("version"); - assertThat(versionBeforeRemoval, equalTo("1.0")); - - appProps.remove("version"); - - String versionAfterRemoval = appProps.getProperty("version"); - assertThat(versionAfterRemoval, equalTo(null)); - } - - @Test - public void testGetEnumerationOfValues() { - Enumeration valueEnumeration = appProps.elements(); - List values = Lists.newArrayList(); - while (valueEnumeration.hasMoreElements()) { - String val = String.valueOf(valueEnumeration.nextElement()); - values.add(val); - } - assertArrayEquals(new String[] {"1.0", "2016-11-12", "TestApp"}, values.toArray()); - } - - @Test - public void testGetEnumerationOfKeys() { - Enumeration keyEnumeration = appProps.keys(); - List keys = Lists.newArrayList(); - while (keyEnumeration.hasMoreElements()) { - String key = String.valueOf(keyEnumeration.nextElement()); - keys.add(key); - } - assertArrayEquals(new String[] {"version", "date", "name"}, keys.toArray()); - } - - @Test - public void testGetSize() { - int size = appProps.size(); - assertThat(size, equalTo(3)); - } -} diff --git a/core-java/src/test/java/com/baeldung/properties/PropertiesStoreTest.java b/core-java/src/test/java/com/baeldung/properties/PropertiesStoreTest.java deleted file mode 100644 index 582fdb3808..0000000000 --- a/core-java/src/test/java/com/baeldung/properties/PropertiesStoreTest.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.baeldung.properties; - -import org.junit.Before; -import org.junit.Test; -import org.testng.annotations.BeforeClass; - -import java.io.*; -import java.util.Properties; - -import static org.hamcrest.core.IsEqual.equalTo; -import static org.junit.Assert.assertThat; - -public class PropertiesStoreTest { - private static Properties appProps = new Properties(); - - @Before - public void before() throws IOException { - String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - String appConfigPath = rootPath + "app.properties"; - - // load the original properties - appProps.load(new FileInputStream(appConfigPath)); - - // update property list - appProps.setProperty("name", "NewAppName"); - appProps.setProperty("downloadAddr", "www.baeldung.com/downloads"); - } - - @Test - public void testStoreToPropertiesFile() throws IOException { - String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - String newAppConfigPropertiesFile = rootPath + "newApp.properties"; - appProps.store(new FileWriter(newAppConfigPropertiesFile), "store to properties file"); - - - Properties verifyProps = new Properties(); - verifyProps.load(new FileInputStream(newAppConfigPropertiesFile)); - assertThat(verifyProps.getProperty("name"), equalTo("NewAppName")); - } - - @Test - public void testStoreToXmlFile() throws IOException { - String rootPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - String newAppConfigXmlFile = rootPath + "newApp.xml"; - appProps.storeToXML(new FileOutputStream(newAppConfigXmlFile), "store to xml file"); - - Properties verifyProps = new Properties(); - verifyProps.loadFromXML(new FileInputStream(newAppConfigXmlFile)); - assertThat(verifyProps.getProperty("downloadAddr"), equalTo("www.baeldung.com/downloads")); - } -} diff --git a/core-java/src/test/resources/app.properties b/core-java/src/test/resources/app.properties deleted file mode 100644 index ff6174ec2a..0000000000 --- a/core-java/src/test/resources/app.properties +++ /dev/null @@ -1,3 +0,0 @@ -version=1.0 -name=TestApp -date=2016-11-12 \ No newline at end of file diff --git a/core-java/src/test/resources/catalog b/core-java/src/test/resources/catalog deleted file mode 100644 index 488513d0ce..0000000000 --- a/core-java/src/test/resources/catalog +++ /dev/null @@ -1,3 +0,0 @@ -c1=files -c2=images -c3=videos \ No newline at end of file diff --git a/core-java/src/test/resources/default.properties b/core-java/src/test/resources/default.properties deleted file mode 100644 index df1bab371c..0000000000 --- a/core-java/src/test/resources/default.properties +++ /dev/null @@ -1,4 +0,0 @@ -site=www.google.com -name=DefaultAppName -topic=Properties -category=core-java \ No newline at end of file diff --git a/core-java/src/test/resources/icons.xml b/core-java/src/test/resources/icons.xml deleted file mode 100644 index 0db7b2699a..0000000000 --- a/core-java/src/test/resources/icons.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - xml example - icon1.jpg - icon2.jpg - icon3.jpg - \ No newline at end of file From a8fb4e11cb24c4572d888fc434d70069fb035e5a Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 20 Nov 2016 11:57:27 +0200 Subject: [PATCH 081/399] Fix FileTest --- .../java/com/baeldung/java/nio2/FileTest.java | 86 ++++++++++--------- 1 file changed, 47 insertions(+), 39 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java index 64fbb4ae25..587f4ab34a 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/FileTest.java @@ -1,64 +1,72 @@ package com.baeldung.java.nio2; +import org.apache.commons.io.FileUtils; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.*; +import java.util.UUID; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import java.io.IOException; -import java.nio.file.DirectoryNotEmptyException; -import java.nio.file.FileAlreadyExistsException; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.UUID; - -import org.junit.Test; - public class FileTest { - private static final String HOME = System.getProperty("user.home"); + private static final String TEMP_DIR = String.format("%s/temp%s", System.getProperty("user.home"), UUID.randomUUID().toString()); + + @BeforeClass + public static void setup() throws IOException { + Files.createDirectory(Paths.get(TEMP_DIR)); + } + + @AfterClass + public static void cleanup() throws IOException { + FileUtils.deleteDirectory(new File(TEMP_DIR)); + } // checking file or dir @Test public void givenExistentPath_whenConfirmsFileExists_thenCorrect() { - Path p = Paths.get(HOME); + Path p = Paths.get(TEMP_DIR); assertTrue(Files.exists(p)); } @Test public void givenNonexistentPath_whenConfirmsFileNotExists_thenCorrect() { - Path p = Paths.get(HOME + "/inexistent_file.txt"); + Path p = Paths.get(TEMP_DIR + "/inexistent_file.txt"); assertTrue(Files.notExists(p)); } @Test public void givenDirPath_whenConfirmsNotRegularFile_thenCorrect() { - Path p = Paths.get(HOME); + Path p = Paths.get(TEMP_DIR); assertFalse(Files.isRegularFile(p)); } @Test public void givenExistentDirPath_whenConfirmsReadable_thenCorrect() { - Path p = Paths.get(HOME); + Path p = Paths.get(TEMP_DIR); assertTrue(Files.isReadable(p)); } @Test public void givenExistentDirPath_whenConfirmsWritable_thenCorrect() { - Path p = Paths.get(HOME); + Path p = Paths.get(System.getProperty("user.home")); assertTrue(Files.isWritable(p)); } @Test public void givenExistentDirPath_whenConfirmsExecutable_thenCorrect() { - Path p = Paths.get(HOME); + Path p = Paths.get(System.getProperty("user.home")); assertTrue(Files.isExecutable(p)); } @Test public void givenSameFilePaths_whenConfirmsIsSame_thenCorrect() throws IOException { - Path p1 = Paths.get(HOME); - Path p2 = Paths.get(HOME); + Path p1 = Paths.get(TEMP_DIR); + Path p2 = Paths.get(TEMP_DIR); assertTrue(Files.isSameFile(p1, p2)); } @@ -67,7 +75,7 @@ public class FileTest { @Test public void givenFilePath_whenCreatesNewFile_thenCorrect() throws IOException { String fileName = "myfile_" + UUID.randomUUID().toString() + ".txt"; - Path p = Paths.get(HOME + "/" + fileName); + Path p = Paths.get(TEMP_DIR + "/" + fileName); assertFalse(Files.exists(p)); Files.createFile(p); assertTrue(Files.exists(p)); @@ -77,7 +85,7 @@ public class FileTest { @Test public void givenDirPath_whenCreatesNewDir_thenCorrect() throws IOException { String dirName = "myDir_" + UUID.randomUUID().toString(); - Path p = Paths.get(HOME + "/" + dirName); + Path p = Paths.get(TEMP_DIR + "/" + dirName); assertFalse(Files.exists(p)); Files.createDirectory(p); assertTrue(Files.exists(p)); @@ -89,7 +97,7 @@ public class FileTest { @Test(expected = NoSuchFileException.class) public void givenDirPath_whenFailsToCreateRecursively_thenCorrect() throws IOException { String dirName = "myDir_" + UUID.randomUUID().toString() + "/subdir"; - Path p = Paths.get(HOME + "/" + dirName); + Path p = Paths.get(TEMP_DIR + "/" + dirName); assertFalse(Files.exists(p)); Files.createDirectory(p); @@ -97,7 +105,7 @@ public class FileTest { @Test public void givenDirPath_whenCreatesRecursively_thenCorrect() throws IOException { - Path dir = Paths.get(HOME + "/myDir_" + UUID.randomUUID().toString()); + Path dir = Paths.get(TEMP_DIR + "/myDir_" + UUID.randomUUID().toString()); Path subdir = dir.resolve("subdir"); assertFalse(Files.exists(dir)); assertFalse(Files.exists(subdir)); @@ -110,7 +118,7 @@ public class FileTest { public void givenFilePath_whenCreatesTempFile_thenCorrect() throws IOException { String prefix = "log_"; String suffix = ".txt"; - Path p = Paths.get(HOME + "/"); + Path p = Paths.get(TEMP_DIR + "/"); p = Files.createTempFile(p, prefix, suffix); // like log_8821081429012075286.txt assertTrue(Files.exists(p)); @@ -119,7 +127,7 @@ public class FileTest { @Test public void givenPath_whenCreatesTempFileWithDefaults_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/"); + Path p = Paths.get(TEMP_DIR + "/"); p = Files.createTempFile(p, null, null); // like 8600179353689423985.tmp assertTrue(Files.exists(p)); @@ -136,7 +144,7 @@ public class FileTest { // delete file @Test public void givenPath_whenDeletes_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/fileToDelete.txt"); + Path p = Paths.get(TEMP_DIR + "/fileToDelete.txt"); assertFalse(Files.exists(p)); Files.createFile(p); assertTrue(Files.exists(p)); @@ -147,7 +155,7 @@ public class FileTest { @Test(expected = DirectoryNotEmptyException.class) public void givenPath_whenFailsToDeleteNonEmptyDir_thenCorrect() throws IOException { - Path dir = Paths.get(HOME + "/emptyDir" + UUID.randomUUID().toString()); + Path dir = Paths.get(TEMP_DIR + "/emptyDir" + UUID.randomUUID().toString()); Files.createDirectory(dir); assertTrue(Files.exists(dir)); Path file = dir.resolve("file.txt"); @@ -160,7 +168,7 @@ public class FileTest { @Test(expected = NoSuchFileException.class) public void givenInexistentFile_whenDeleteFails_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/inexistentFile.txt"); + Path p = Paths.get(TEMP_DIR + "/inexistentFile.txt"); assertFalse(Files.exists(p)); Files.delete(p); @@ -168,7 +176,7 @@ public class FileTest { @Test public void givenInexistentFile_whenDeleteIfExistsWorks_thenCorrect() throws IOException { - Path p = Paths.get(HOME + "/inexistentFile.txt"); + Path p = Paths.get(TEMP_DIR + "/inexistentFile.txt"); assertFalse(Files.exists(p)); Files.deleteIfExists(p); @@ -177,8 +185,8 @@ public class FileTest { // copy file @Test public void givenFilePath_whenCopiesToNewLocation_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + UUID.randomUUID().toString()); - Path dir2 = Paths.get(HOME + "/otherdir_" + UUID.randomUUID().toString()); + Path dir1 = Paths.get(TEMP_DIR + "/firstdir_" + UUID.randomUUID().toString()); + Path dir2 = Paths.get(TEMP_DIR + "/otherdir_" + UUID.randomUUID().toString()); Files.createDirectory(dir1); Files.createDirectory(dir2); Path file1 = dir1.resolve("filetocopy.txt"); @@ -193,8 +201,8 @@ public class FileTest { @Test(expected = FileAlreadyExistsException.class) public void givenPath_whenCopyFailsDueToExistingFile_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + UUID.randomUUID().toString()); - Path dir2 = Paths.get(HOME + "/otherdir_" + UUID.randomUUID().toString()); + Path dir1 = Paths.get(TEMP_DIR + "/firstdir_" + UUID.randomUUID().toString()); + Path dir2 = Paths.get(TEMP_DIR + "/otherdir_" + UUID.randomUUID().toString()); Files.createDirectory(dir1); Files.createDirectory(dir2); Path file1 = dir1.resolve("filetocopy.txt"); @@ -210,8 +218,8 @@ public class FileTest { // moving files @Test public void givenFilePath_whenMovesToNewLocation_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + UUID.randomUUID().toString()); - Path dir2 = Paths.get(HOME + "/otherdir_" + UUID.randomUUID().toString()); + Path dir1 = Paths.get(TEMP_DIR + "/firstdir_" + UUID.randomUUID().toString()); + Path dir2 = Paths.get(TEMP_DIR + "/otherdir_" + UUID.randomUUID().toString()); Files.createDirectory(dir1); Files.createDirectory(dir2); Path file1 = dir1.resolve("filetocopy.txt"); @@ -227,8 +235,8 @@ public class FileTest { @Test(expected = FileAlreadyExistsException.class) public void givenFilePath_whenMoveFailsDueToExistingFile_thenCorrect() throws IOException { - Path dir1 = Paths.get(HOME + "/firstdir_" + UUID.randomUUID().toString()); - Path dir2 = Paths.get(HOME + "/otherdir_" + UUID.randomUUID().toString()); + Path dir1 = Paths.get(TEMP_DIR + "/firstdir_" + UUID.randomUUID().toString()); + Path dir2 = Paths.get(TEMP_DIR + "/otherdir_" + UUID.randomUUID().toString()); Files.createDirectory(dir1); Files.createDirectory(dir2); Path file1 = dir1.resolve("filetocopy.txt"); From 9bf925cfdf9e35537bdfad13171364cd6b1bee99 Mon Sep 17 00:00:00 2001 From: eugenp Date: Sun, 20 Nov 2016 12:09:40 +0200 Subject: [PATCH 082/399] cleanup work --- spring-core/pom.xml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/spring-core/pom.xml b/spring-core/pom.xml index 798a717d01..84a492bbe4 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -4,14 +4,11 @@ 4.0.0 com.baeldung - dependency-injection + spring-core 0.0.1-SNAPSHOT war - dependency-injection - Accompanying the demonstration of the use of the annotations related to injection mechanisms, namely - Resource, Inject, and Autowired - + spring-core From a7e2e2d6b2d23c17b3635db9c923ebf5d9b47d75 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 20 Nov 2016 17:39:28 +0200 Subject: [PATCH 083/399] Fix JavaFileUnitTest --- .../baeldung/java/io/JavaFileUnitTest.java | 73 +++++++++++-------- 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java index 4b56a97325..d4b63beaa4 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java @@ -1,7 +1,9 @@ package org.baeldung.java.io; -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.junit.Assert.assertTrue; +import org.apache.commons.io.FileUtils; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; import java.io.File; import java.io.IOException; @@ -9,17 +11,29 @@ import java.nio.file.FileSystemException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.UUID; -import org.apache.commons.io.FileUtils; -import org.junit.Test; +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.junit.Assert.assertTrue; public class JavaFileUnitTest { - // create a file + private static final String TEMP_DIR = "src/test/resources/temp" + UUID.randomUUID().toString(); + + + @BeforeClass + public static void setup() throws IOException { + Files.createDirectory(Paths.get(TEMP_DIR)); + } + + @AfterClass + public static void cleanup() throws IOException { + FileUtils.deleteDirectory(new File(TEMP_DIR)); + } @Test public final void givenUsingJDK6_whenCreatingFile_thenCorrect() throws IOException { - final File newFile = new File("src/test/resources/newFile_jdk6.txt"); + final File newFile = new File(TEMP_DIR + "/newFile_jdk6.txt"); final boolean success = newFile.createNewFile(); assertTrue(success); @@ -27,48 +41,48 @@ public class JavaFileUnitTest { @Test public final void givenUsingJDK7nio2_whenCreatingFile_thenCorrect() throws IOException { - final Path newFilePath = Paths.get("src/test/resources/newFile_jdk7.txt"); + final Path newFilePath = Paths.get(TEMP_DIR + "/newFile_jdk7.txt"); Files.createFile(newFilePath); } @Test public final void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException { - FileUtils.touch(new File("src/test/resources/newFile_commonsio.txt")); + FileUtils.touch(new File(TEMP_DIR + "/newFile_commonsio.txt")); } @Test public final void givenUsingGuava_whenCreatingFile_thenCorrect() throws IOException { - com.google.common.io.Files.touch(new File("src/test/resources/newFile_guava.txt")); + com.google.common.io.Files.touch(new File(TEMP_DIR + "/newFile_guava.txt")); } // move a file @Test public final void givenUsingJDK6_whenMovingFile_thenCorrect() throws IOException { - final File fileToMove = new File("src/test/resources/toMoveFile_jdk6.txt"); + final File fileToMove = new File(TEMP_DIR + "/toMoveFile_jdk6.txt"); fileToMove.createNewFile();// .exists(); - final File destDir = new File("src/test/resources/"); + final File destDir = new File(TEMP_DIR + "/"); destDir.mkdir(); - final boolean isMoved = fileToMove.renameTo(new File("src/test/resources/movedFile_jdk6.txt")); + final boolean isMoved = fileToMove.renameTo(new File(TEMP_DIR + "/movedFile_jdk6.txt")); if (!isMoved) { - throw new FileSystemException("src/test/resources/movedFile_jdk6.txt"); + throw new FileSystemException(TEMP_DIR + "/movedFile_jdk6.txt"); } } @Test public final void givenUsingJDK7Nio2_whenMovingFile_thenCorrect() throws IOException { - final Path fileToMovePath = Files.createFile(Paths.get("src/test/resources/" + randomAlphabetic(5) + ".txt")); - final Path targetPath = Paths.get("src/main/resources/"); + final Path fileToMovePath = Files.createFile(Paths.get(TEMP_DIR + "/" + randomAlphabetic(5) + ".txt")); + final Path targetPath = Paths.get(TEMP_DIR + "/"); Files.move(fileToMovePath, targetPath.resolve(fileToMovePath.getFileName())); } @Test public final void givenUsingGuava_whenMovingFile_thenCorrect() throws IOException { - final File fileToMove = new File("src/test/resources/fileToMove.txt"); + final File fileToMove = new File(TEMP_DIR + "/fileToMove.txt"); fileToMove.createNewFile(); - final File destDir = new File("src/main/resources/"); + final File destDir = new File(TEMP_DIR + "/temp"); final File targetFile = new File(destDir, fileToMove.getName()); com.google.common.io.Files.createParentDirs(targetFile); com.google.common.io.Files.move(fileToMove, targetFile); @@ -76,23 +90,24 @@ public class JavaFileUnitTest { @Test public final void givenUsingApache_whenMovingFile_thenCorrect() throws IOException { - FileUtils.touch(new File("src/test/resources/fileToMove_apache.txt")); - FileUtils.moveFile(FileUtils.getFile("src/test/resources/fileToMove_apache.txt"), FileUtils.getFile("src/test/resources/fileMoved_apache2.txt")); + FileUtils.touch(new File(TEMP_DIR + "/fileToMove_apache.txt")); + FileUtils.moveFile(FileUtils.getFile(TEMP_DIR + "/fileToMove_apache.txt"), FileUtils.getFile(TEMP_DIR + "/fileMoved_apache2.txt")); } @Test public final void givenUsingApache_whenMovingFileApproach2_thenCorrect() throws IOException { - FileUtils.touch(new File("src/test/resources/fileToMove_apache.txt")); - FileUtils.moveFileToDirectory(FileUtils.getFile("src/test/resources/fileToMove_apache.txt"), FileUtils.getFile("src/main/resources/"), true); + FileUtils.touch(new File(TEMP_DIR + "/fileToMove_apache.txt")); + Files.createDirectory(Paths.get(TEMP_DIR + "/temp")); + FileUtils.moveFileToDirectory(FileUtils.getFile(TEMP_DIR + "/fileToMove_apache.txt"), FileUtils.getFile(TEMP_DIR + "/temp"), true); } // delete a file @Test public final void givenUsingJDK6_whenDeletingAFile_thenCorrect() throws IOException { - new File("src/test/resources/fileToDelete_jdk6.txt").createNewFile(); + new File(TEMP_DIR + "/fileToDelete_jdk6.txt").createNewFile(); - final File fileToDelete = new File("src/test/resources/fileToDelete_jdk6.txt"); + final File fileToDelete = new File(TEMP_DIR + "/fileToDelete_jdk6.txt"); final boolean success = fileToDelete.delete(); assertTrue(success); @@ -100,17 +115,17 @@ public class JavaFileUnitTest { @Test public final void givenUsingJDK7nio2_whenDeletingAFile_thenCorrect() throws IOException { - Files.createFile(Paths.get("src/test/resources/fileToDelete_jdk7.txt")); + Files.createFile(Paths.get(TEMP_DIR + "/fileToDelete_jdk7.txt")); - final Path fileToDeletePath = Paths.get("src/test/resources/fileToDelete_jdk7.txt"); + final Path fileToDeletePath = Paths.get(TEMP_DIR + "/fileToDelete_jdk7.txt"); Files.delete(fileToDeletePath); } @Test public final void givenUsingCommonsIo_whenDeletingAFileV1_thenCorrect() throws IOException { - FileUtils.touch(new File("src/test/resources/fileToDelete_commonsIo.txt")); + FileUtils.touch(new File(TEMP_DIR + "/fileToDelete_commonsIo.txt")); - final File fileToDelete = FileUtils.getFile("src/test/resources/fileToDelete_commonsIo.txt"); + final File fileToDelete = FileUtils.getFile(TEMP_DIR + "/fileToDelete_commonsIo.txt"); final boolean success = FileUtils.deleteQuietly(fileToDelete); assertTrue(success); @@ -118,9 +133,9 @@ public class JavaFileUnitTest { @Test public void givenUsingCommonsIo_whenDeletingAFileV2_thenCorrect() throws IOException { - FileUtils.touch(new File("src/test/resources/fileToDelete.txt")); + FileUtils.touch(new File(TEMP_DIR + "/fileToDelete.txt")); - FileUtils.forceDelete(FileUtils.getFile("src/test/resources/fileToDelete.txt")); + FileUtils.forceDelete(FileUtils.getFile(TEMP_DIR + "/fileToDelete.txt")); } } From 73bbab4ae64efb55d1ece603e6b576e031ba6607 Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Sun, 20 Nov 2016 19:01:42 +0100 Subject: [PATCH 084/399] Update README.md --- spring-core/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-core/README.md b/spring-core/README.md index 5554412c31..53842ecb1a 100644 --- a/spring-core/README.md +++ b/spring-core/README.md @@ -1,2 +1,3 @@ ### Relevant Articles: - [Wiring in Spring: @Autowired, @Resource and @Inject](http://www.baeldung.com/spring-annotations-resource-inject-autowire) +- [Exploring the Spring BeanFactory API](http://www.baeldung.com/spring-beanfactory) From 68356256026542836b3501b4dea936ad973fe428 Mon Sep 17 00:00:00 2001 From: Yasser Afifi Date: Sun, 20 Nov 2016 20:20:52 +0000 Subject: [PATCH 085/399] added generics example method and tests --- .../java/com/baeldung/generics/Generics.java | 24 ++++++++++ .../com/baeldung/generics/GenericsTest.java | 46 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/generics/Generics.java create mode 100644 core-java/src/test/java/com/baeldung/generics/GenericsTest.java diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java/src/main/java/com/baeldung/generics/Generics.java new file mode 100644 index 0000000000..ce1325687f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/generics/Generics.java @@ -0,0 +1,24 @@ +import java.util.ArrayList; +import java.util.List; + +public class Generics { + + // definition of a generic method + public static List fromArrayToList(T[] a) { + List list = new ArrayList<>(); + for (T t : a) { + list.add(t); + } + return list; + } + + // example of a generic method that has Number as an upper bound for T + public static List fromArrayToListWithUpperBound(T[] a) { + List list = new ArrayList<>(); + for (T t : a) { + list.add(t); + } + return list; + } + +} diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java new file mode 100644 index 0000000000..7778f8ea81 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java @@ -0,0 +1,46 @@ +import java.util.Iterator; +import java.util.List; + +import org.junit.Test; + +public class GenericsTest { + + // testing the generic method with Integer + @Test + public void fromArrayToListIntTest() { + Integer[] intArray = { 1, 2, 3, 4, 5 }; + List list = Generics.fromArrayToList(intArray); + Iterator iterator; + iterator = list.iterator(); + while (iterator.hasNext()) { + System.out.println(iterator.next()); + } + } + + // testing the generic method with String + @Test + public void fromArrayToListStringTest() { + String[] stringArray = { "hello1", "hello2", "hello3", "hello4", "hello5" }; + List list = Generics.fromArrayToList(stringArray); + Iterator iterator; + iterator = list.iterator(); + while (iterator.hasNext()) { + System.out.println(iterator.next()); + } + } + + // testing the generic method with Number as upper bound with Integer + // if we test fromArrayToListWithUpperBound with any type that doesn't + // extend Number it will fail to compile + @Test + public void fromArrayToListUpperboundIntTest() { + Integer[] intArray = { 1, 2, 3, 4, 5 }; + List list = Generics.fromArrayToListWithUpperBound(intArray); + Iterator iterator; + iterator = list.iterator(); + while (iterator.hasNext()) { + System.out.println(iterator.next()); + } + } + +} From 2186f6412677edef05a2700775b4cbbf6ed3b3b6 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sun, 20 Nov 2016 22:35:17 +0100 Subject: [PATCH 086/399] BAEL-376 - java generics code --- .../java/com/baeldung/generics/Generics.java | 31 ++++----- .../com/baeldung/generics/GenericsTest.java | 69 +++++++++---------- 2 files changed, 47 insertions(+), 53 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java/src/main/java/com/baeldung/generics/Generics.java index ce1325687f..69c7baddd3 100644 --- a/core-java/src/main/java/com/baeldung/generics/Generics.java +++ b/core-java/src/main/java/com/baeldung/generics/Generics.java @@ -1,24 +1,23 @@ +package com.baeldung.generics; + import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class Generics { - // definition of a generic method - public static List fromArrayToList(T[] a) { - List list = new ArrayList<>(); - for (T t : a) { - list.add(t); - } - return list; - } + // definition of a generic method + public static List fromArrayToList(T[] a) { + List list = new ArrayList<>(); + Arrays.stream(a).forEach(list::add); + return list; + } - // example of a generic method that has Number as an upper bound for T - public static List fromArrayToListWithUpperBound(T[] a) { - List list = new ArrayList<>(); - for (T t : a) { - list.add(t); - } - return list; - } + // example of a generic method that has Number as an upper bound for T + public static List fromArrayToListWithUpperBound(T[] a) { + List list = new ArrayList<>(); + Arrays.stream(a).forEach(list::add); + return list; + } } diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java index 7778f8ea81..9eb459ccb5 100644 --- a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java +++ b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java @@ -1,46 +1,41 @@ -import java.util.Iterator; -import java.util.List; +package com.baeldung.generics; import org.junit.Test; +import java.util.List; + +import static org.hamcrest.CoreMatchers.hasItems; +import static org.hamcrest.MatcherAssert.assertThat; + public class GenericsTest { - // testing the generic method with Integer - @Test - public void fromArrayToListIntTest() { - Integer[] intArray = { 1, 2, 3, 4, 5 }; - List list = Generics.fromArrayToList(intArray); - Iterator iterator; - iterator = list.iterator(); - while (iterator.hasNext()) { - System.out.println(iterator.next()); - } - } + // testing the generic method with Integer + @Test + public void givenArrayOfIntegers_thanListOfIntegersReturnedOK() { + Integer[] intArray = {1, 2, 3, 4, 5}; + List list = Generics.fromArrayToList(intArray); - // testing the generic method with String - @Test - public void fromArrayToListStringTest() { - String[] stringArray = { "hello1", "hello2", "hello3", "hello4", "hello5" }; - List list = Generics.fromArrayToList(stringArray); - Iterator iterator; - iterator = list.iterator(); - while (iterator.hasNext()) { - System.out.println(iterator.next()); - } - } + assertThat(list, hasItems(intArray)); + } - // testing the generic method with Number as upper bound with Integer - // if we test fromArrayToListWithUpperBound with any type that doesn't - // extend Number it will fail to compile - @Test - public void fromArrayToListUpperboundIntTest() { - Integer[] intArray = { 1, 2, 3, 4, 5 }; - List list = Generics.fromArrayToListWithUpperBound(intArray); - Iterator iterator; - iterator = list.iterator(); - while (iterator.hasNext()) { - System.out.println(iterator.next()); - } - } + // testing the generic method with String + @Test + public void givenArrayOfStrings_thanListOfStringsReturnedOK() { + String[] stringArray = {"hello1", "hello2", "hello3", "hello4", "hello5"}; + List list = Generics.fromArrayToList(stringArray); + + assertThat(list, hasItems(stringArray)); + } + + // testing the generic method with Number as upper bound with Integer + // if we test fromArrayToListWithUpperBound with any type that doesn't + // extend Number it will fail to compile + @Test + public void givenArrayOfIntegersAndNumberUpperBound_thanListOfIntegersReturnedOK() { + Integer[] intArray = {1, 2, 3, 4, 5}; + List list = Generics.fromArrayToListWithUpperBound(intArray); + + assertThat(list, hasItems(intArray)); + } } From 540075ca390a859a1f1bff4966095b3b522dd74b Mon Sep 17 00:00:00 2001 From: Ivan Paolillo Date: Mon, 21 Nov 2016 11:42:13 +0100 Subject: [PATCH 087/399] Add method init for common logic --- .../okhttp/OkHttpFileUploadingLiveTest.java | 26 +++++++++++-------- .../baeldung/okhttp/OkHttpGetLiveTest.java | 25 +++++++++++++----- .../baeldung/okhttp/OkHttpHeaderLiveTest.java | 13 +++++++--- .../baeldung/okhttp/OkHttpMiscLiveTest.java | 11 +++++++- .../okhttp/OkHttpPostingLiveTest.java | 17 +++++++++--- 5 files changed, 67 insertions(+), 25 deletions(-) diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java index d1cc67b99a..d7aff8207a 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java @@ -8,6 +8,7 @@ import java.io.File; import java.io.IOException; import org.baeldung.okhttp.ProgressRequestWrapper; +import org.junit.Before; import org.junit.Test; import okhttp3.Call; @@ -22,10 +23,18 @@ public class OkHttpFileUploadingLiveTest { private static final String BASE_URL = "http://localhost:8080/spring-rest"; + OkHttpClient client; + + @Before + public void init() { + + client = new OkHttpClient(); + } + @Test public void whenUploadFile_thenCorrect() throws IOException { - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -47,7 +56,7 @@ public class OkHttpFileUploadingLiveTest { @Test public void whenGetUploadFileProgress_thenCorrect() throws IOException { - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -55,17 +64,12 @@ public class OkHttpFileUploadingLiveTest { RequestBody.create(MediaType.parse("application/octet-stream"), new File("src/test/resources/test.txt"))) .build(); + ProgressRequestWrapper countingBody = new ProgressRequestWrapper(requestBody, (long bytesWritten, long contentLength) -> { - ProgressRequestWrapper.ProgressListener listener = new ProgressRequestWrapper.ProgressListener() { + float percentage = 100f * bytesWritten / contentLength; + assertFalse(Float.compare(percentage, 100) > 0); - public void onRequestProgress(long bytesWritten, long contentLength) { - - float percentage = 100f * bytesWritten / contentLength; - assertFalse(Float.compare(percentage, 100) > 0); - } - }; - - ProgressRequestWrapper countingBody = new ProgressRequestWrapper(requestBody, listener); + }); Request request = new Request.Builder() .url(BASE_URL + "/users/upload") diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java index 632d7577a4..19bfd6d46b 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java @@ -6,7 +6,12 @@ import static org.junit.Assert.fail; import java.io.IOException; +import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; import okhttp3.Call; import okhttp3.Callback; @@ -15,17 +20,25 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -//@RunWith(SpringJUnit4ClassRunner.class) -//@WebAppConfiguration -//@ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/api-servlet.xml") +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/api-servlet.xml") public class OkHttpGetLiveTest { private static final String BASE_URL = "http://localhost:8080/spring-rest"; + OkHttpClient client; + + @Before + public void init() { + + client = new OkHttpClient(); + } + @Test public void whenGetRequest_thenCorrect() throws IOException { - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); Request request = new Request.Builder() .url(BASE_URL + "/date") @@ -40,7 +53,7 @@ public class OkHttpGetLiveTest { @Test public void whenGetRequestWithQueryParameter_thenCorrect() throws IOException { - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); HttpUrl.Builder urlBuilder = HttpUrl.parse(BASE_URL + "/ex/bars").newBuilder(); urlBuilder.addQueryParameter("id", "1"); @@ -60,7 +73,7 @@ public class OkHttpGetLiveTest { @Test public void whenAsynchronousGetRequest_thenCorrect() throws InterruptedException { - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); Request request = new Request.Builder() .url(BASE_URL + "/date") diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpHeaderLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpHeaderLiveTest.java index 8eddfcb135..1b73565aa4 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpHeaderLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpHeaderLiveTest.java @@ -2,6 +2,7 @@ package org.baeldung.okhttp; import java.io.IOException; +import org.junit.Before; import org.junit.Test; import okhttp3.Call; @@ -13,10 +14,18 @@ public class OkHttpHeaderLiveTest { private static final String SAMPLE_URL = "http://www.github.com"; + OkHttpClient client; + + @Before + public void init() { + + client = new OkHttpClient(); + } + @Test public void whenSetHeader_thenCorrect() throws IOException { - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); Request request = new Request.Builder() .url(SAMPLE_URL) @@ -43,6 +52,4 @@ public class OkHttpHeaderLiveTest { Response response = call.execute(); response.close(); } - - } diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java index dcdb4e328c..39f66a8024 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java @@ -6,6 +6,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,6 +22,14 @@ public class OkHttpMiscLiveTest { private static final String BASE_URL = "http://localhost:8080/spring-rest"; private static Logger logger = LoggerFactory.getLogger(OkHttpMiscLiveTest.class); + OkHttpClient client; + + @Before + public void init() { + + client = new OkHttpClient(); + } + @Test public void whenSetRequestTimeout_thenFail() throws IOException { @@ -42,7 +51,7 @@ public class OkHttpMiscLiveTest { ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); Request request = new Request.Builder() .url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay. diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java index 18bd4cdcb3..59844d547a 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java @@ -6,6 +6,7 @@ import static org.junit.Assert.assertThat; import java.io.File; import java.io.IOException; +import org.junit.Before; import org.junit.Test; import okhttp3.Call; @@ -23,10 +24,18 @@ public class OkHttpPostingLiveTest { private static final String BASE_URL = "http://localhost:8080/spring-rest"; private static final String URL_SECURED_BY_BASIC_AUTHENTICATION = "http://browserspy.dk/password-ok.php"; + OkHttpClient client; + + @Before + public void init() { + + client = new OkHttpClient(); + } + @Test public void whenSendPostRequest_thenCorrect() throws IOException { - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); RequestBody formBody = new FormBody.Builder() .add("username", "test") @@ -49,7 +58,7 @@ public class OkHttpPostingLiveTest { String postBody = "test post"; - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); Request request = new Request.Builder() .url(URL_SECURED_BY_BASIC_AUTHENTICATION) @@ -66,7 +75,7 @@ public class OkHttpPostingLiveTest { @Test public void whenPostJson_thenCorrect() throws IOException { - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); String json = "{\"id\":1,\"name\":\"John\"}"; @@ -86,7 +95,7 @@ public class OkHttpPostingLiveTest { @Test public void whenSendMultipartRequest_thenCorrect() throws IOException { - OkHttpClient client = new OkHttpClient(); + client = new OkHttpClient(); RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) From e66e9d445f301cdccd370e721eea1e9ab92cc131 Mon Sep 17 00:00:00 2001 From: Ivan Paolillo Date: Mon, 21 Nov 2016 11:43:32 +0100 Subject: [PATCH 088/399] Code improvement --- .../src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java index 19bfd6d46b..7a5f598569 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java @@ -20,9 +20,6 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -@RunWith(SpringJUnit4ClassRunner.class) -@WebAppConfiguration -@ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/api-servlet.xml") public class OkHttpGetLiveTest { private static final String BASE_URL = "http://localhost:8080/spring-rest"; From 652dcd2804f215d5a2fb175d07a8f0b3dc61c603 Mon Sep 17 00:00:00 2001 From: michal_aibin Date: Mon, 21 Nov 2016 12:39:44 +0100 Subject: [PATCH 089/399] URIComponentsBuilder --- .../uribuilder/SpringUriBuilderTest.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 spring-rest/src/test/java/org/baeldung/uribuilder/SpringUriBuilderTest.java diff --git a/spring-rest/src/test/java/org/baeldung/uribuilder/SpringUriBuilderTest.java b/spring-rest/src/test/java/org/baeldung/uribuilder/SpringUriBuilderTest.java new file mode 100644 index 0000000000..4b6a9ba312 --- /dev/null +++ b/spring-rest/src/test/java/org/baeldung/uribuilder/SpringUriBuilderTest.java @@ -0,0 +1,53 @@ +package org.baeldung.uribuilder; + +import static org.junit.Assert.assertEquals; + +import java.util.Collections; + +import org.junit.Test; +import org.springframework.web.util.UriComponents; +import org.springframework.web.util.UriComponentsBuilder; + +public class SpringUriBuilderTest { + + @Test + public void constructUri() { + UriComponents uriComponents = UriComponentsBuilder.newInstance().scheme("http").host("www.baeldung.com") + .path("/junit-5").build(); + + assertEquals("http://www.baeldung.com/junit-5", uriComponents.toUriString()); + } + + @Test + public void constructUriEncoded() { + UriComponents uriComponents = UriComponentsBuilder.newInstance().scheme("http").host("www.baeldung.com") + .path("/junit 5").build().encode(); + + assertEquals("http://www.baeldung.com/junit%205", uriComponents.toUriString()); + } + + @Test + public void constructUriFromTemplate() { + UriComponents uriComponents = UriComponentsBuilder.newInstance().scheme("http").host("www.baeldung.com") + .path("/{article-name}").buildAndExpand("junit-5"); + + assertEquals("http://www.baeldung.com/junit-5", uriComponents.toUriString()); + } + + @Test + public void constructUriWithQueryParameter() { + UriComponents uriComponents = UriComponentsBuilder.newInstance().scheme("http").host("www.google.com") + .path("/").query("q={keyword}").buildAndExpand("baeldung"); + + assertEquals("http://www.google.com/?q=baeldung", uriComponents.toUriString()); + } + + @Test + public void expandWithRegexVar() { + String template = "/myurl/{name:[a-z]{1,5}}/show"; + UriComponents uriComponents = UriComponentsBuilder.fromUriString(template).build(); + uriComponents = uriComponents.expand(Collections.singletonMap("name", "test")); + + assertEquals("/myurl/test/show", uriComponents.getPath()); + } +} From 77240dc024831aa643e0c2c885e09e92c15fbf7a Mon Sep 17 00:00:00 2001 From: DianeDuan Date: Mon, 21 Nov 2016 20:41:33 +0800 Subject: [PATCH 090/399] delete extra comments and variable assignments, use guava precondition for check --- spring-core/pom.xml | 5 +++++ .../InitializationToolFactory.java | 19 +++++++++---------- .../factorybean/NonSingleToolFactory.java | 8 ++++---- .../factorybean/PostConstructToolFactory.java | 19 +++++++++---------- .../factorybean/SingleToolFactory.java | 8 ++++---- .../java/com/baeldung/factorybean/Tool.java | 6 +++--- .../com/baeldung/factorybean/ToolFactory.java | 8 ++++---- .../java/com/baeldung/factorybean/Worker.java | 4 ++-- .../factorybean-abstract-spring-ctx.xml | 4 ++-- .../resources/factorybean-init-spring-ctx.xml | 4 ++-- .../factorybean-postconstruct-spring-ctx.xml | 4 ++-- .../main/resources/factorybean-spring-ctx.xml | 4 ++-- .../FactoryBeanInitializeTest.java | 5 ++--- 13 files changed, 50 insertions(+), 48 deletions(-) diff --git a/spring-core/pom.xml b/spring-core/pom.xml index 798a717d01..e8ab8b00c4 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -50,6 +50,11 @@ 4.12 test + + com.google.guava + guava + 20.0 + diff --git a/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java index 925ba2d8e4..6d2fd2564e 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java @@ -1,22 +1,21 @@ package com.baeldung.factorybean; +import static com.google.common.base.Preconditions.checkArgument; + import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; +import org.springframework.util.StringUtils; public class InitializationToolFactory implements FactoryBean, InitializingBean { - private int factoryId;// standard setters and getters - private int toolId;// standard setters and getters - private String toolName;// standard setters and getters - private double toolPrice;// standard setters and getters + private int factoryId; + private int toolId; + private String toolName; + private double toolPrice; @Override public void afterPropertiesSet() throws Exception { - if (toolName == null || toolName.equals("")) { - throw new IllegalArgumentException("tool name cannot be empty"); - } - if (toolPrice < 0) { - throw new IllegalArgumentException("tool price should not be less than 0"); - } + checkArgument(!StringUtils.isEmpty(toolName), "tool name cannot be empty"); + checkArgument(toolPrice >= 0, "tool price should not be less than 0"); } @Override diff --git a/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java index 0cd80eab41..c818b775eb 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java @@ -3,10 +3,10 @@ package com.baeldung.factorybean; import org.springframework.beans.factory.config.AbstractFactoryBean; public class NonSingleToolFactory extends AbstractFactoryBean { - private int factoryId;// standard setters and getters - private int toolId;// standard setters and getters - private String toolName;// standard setters and getters - private double toolPrice;// standard setters and getters + private int factoryId; + private int toolId; + private String toolName; + private double toolPrice; public NonSingleToolFactory() { setSingleton(false); diff --git a/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java index 8298f6f4db..47db05d271 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java @@ -1,14 +1,17 @@ package com.baeldung.factorybean; +import static com.google.common.base.Preconditions.checkArgument; + import javax.annotation.PostConstruct; import org.springframework.beans.factory.FactoryBean; +import org.springframework.util.StringUtils; public class PostConstructToolFactory implements FactoryBean { - private int factoryId;// standard setters and getters - private int toolId;// standard setters and getters - private String toolName;// standard setters and getters - private double toolPrice;// standard setters and getters + private int factoryId; + private int toolId; + private String toolName; + private double toolPrice; @Override public Tool getObject() throws Exception { @@ -27,12 +30,8 @@ public class PostConstructToolFactory implements FactoryBean { @PostConstruct public void checkParams() { - if (toolName == null || toolName.equals("")) { - throw new IllegalArgumentException("tool name cannot be empty"); - } - if (toolPrice < 0) { - throw new IllegalArgumentException("tool price should not be less than 0"); - } + checkArgument(!StringUtils.isEmpty(toolName), "tool name cannot be empty"); + checkArgument(toolPrice >= 0, "tool price should not be less than 0"); } public int getFactoryId() { diff --git a/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java index 94d68ef113..bc0c2d79c0 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java @@ -4,10 +4,10 @@ import org.springframework.beans.factory.config.AbstractFactoryBean; //no need to set singleton property because default value is true public class SingleToolFactory extends AbstractFactoryBean { - private int factoryId;// standard setters and getters - private int toolId;// standard setters and getters - private String toolName;// standard setters and getters - private double toolPrice;// standard setters and getters + private int factoryId; + private int toolId; + private String toolName; + private double toolPrice; @Override public Class getObjectType() { diff --git a/spring-core/src/main/java/com/baeldung/factorybean/Tool.java b/spring-core/src/main/java/com/baeldung/factorybean/Tool.java index abdd074e9a..a7f7f7681e 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/Tool.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/Tool.java @@ -1,9 +1,9 @@ package com.baeldung.factorybean; public class Tool { - private int id;// standard setters and getters - private String name;// standard setters and getters - private double price;// standard setters and getters + private int id; + private String name; + private double price; public Tool() { } diff --git a/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java index 9b2f7fa42e..ca8f82eadb 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java @@ -3,10 +3,10 @@ package com.baeldung.factorybean; import org.springframework.beans.factory.FactoryBean; public class ToolFactory implements FactoryBean { - private int factoryId;// standard setters and getters - private int toolId;// standard setters and getters - private String toolName;// standard setters and getters - private double toolPrice;// standard setters and getters + private int factoryId; + private int toolId; + private String toolName; + private double toolPrice; @Override public Tool getObject() throws Exception { diff --git a/spring-core/src/main/java/com/baeldung/factorybean/Worker.java b/spring-core/src/main/java/com/baeldung/factorybean/Worker.java index 070322a5f9..9a35c0656b 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/Worker.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/Worker.java @@ -1,8 +1,8 @@ package com.baeldung.factorybean; public class Worker { - private String number;// standard setters and getters - private Tool tool;// standard setters and getters + private String number; + private Tool tool; public Worker() { } diff --git a/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml b/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml index 2f34e2e1cf..6bce114d9c 100644 --- a/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml @@ -1,6 +1,6 @@ - diff --git a/spring-core/src/main/resources/factorybean-init-spring-ctx.xml b/spring-core/src/main/resources/factorybean-init-spring-ctx.xml index f5835c1e70..47722b6d3d 100644 --- a/spring-core/src/main/resources/factorybean-init-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-init-spring-ctx.xml @@ -1,6 +1,6 @@ - diff --git a/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml b/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml index 81e02a0b35..94a4f407a8 100644 --- a/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml @@ -1,7 +1,7 @@ - diff --git a/spring-core/src/main/resources/factorybean-spring-ctx.xml b/spring-core/src/main/resources/factorybean-spring-ctx.xml index 800e489ba0..ab0c646bb0 100644 --- a/spring-core/src/main/resources/factorybean-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-spring-ctx.xml @@ -1,6 +1,6 @@ - diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java index 851c15a3ec..848eea216a 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java @@ -1,17 +1,16 @@ package com.baeldung.factorybean; import org.junit.Test; -import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class FactoryBeanInitializeTest { @Test(expected = Exception.class) public void testInitializationToolFactory() { - ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-init-spring-ctx.xml"); + new ClassPathXmlApplicationContext("classpath:factorybean-init-spring-ctx.xml"); } @Test(expected = Exception.class) public void testPostConstructToolFactory() { - ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-postconstruct-spring-ctx.xml"); + new ClassPathXmlApplicationContext("classpath:factorybean-postconstruct-spring-ctx.xml"); } } From 4d4afa6ca454b0172260e8cc210e7215442746c3 Mon Sep 17 00:00:00 2001 From: Ivan Paolillo Date: Mon, 21 Nov 2016 13:53:37 +0100 Subject: [PATCH 091/399] Code improvement --- .../src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java index 7a5f598569..f077efce0d 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java @@ -8,10 +8,6 @@ import java.io.IOException; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; import okhttp3.Call; import okhttp3.Callback; From e84957c768eace2e933a935d6c76d87bc251fcd8 Mon Sep 17 00:00:00 2001 From: DianeDuan Date: Mon, 21 Nov 2016 21:51:20 +0800 Subject: [PATCH 092/399] change expect exception in ut --- .../com/baeldung/factorybean/FactoryBeanInitializeTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java index 848eea216a..673bab6f63 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java @@ -1,15 +1,16 @@ package com.baeldung.factorybean; import org.junit.Test; +import org.springframework.beans.factory.BeanCreationException; import org.springframework.context.support.ClassPathXmlApplicationContext; public class FactoryBeanInitializeTest { - @Test(expected = Exception.class) + @Test(expected = BeanCreationException.class) public void testInitializationToolFactory() { new ClassPathXmlApplicationContext("classpath:factorybean-init-spring-ctx.xml"); } - @Test(expected = Exception.class) + @Test(expected = BeanCreationException.class) public void testPostConstructToolFactory() { new ClassPathXmlApplicationContext("classpath:factorybean-postconstruct-spring-ctx.xml"); } From c1f94aab9265271376ff299f61597496e083ea45 Mon Sep 17 00:00:00 2001 From: James Kerak Date: Mon, 21 Nov 2016 09:12:30 -0500 Subject: [PATCH 093/399] fixing incorrect merge --- .../okhttp/OkHttpFileUploadingLiveTest.java | 5 ----- .../org/baeldung/okhttp/OkHttpGetLiveTest.java | 10 +--------- .../org/baeldung/okhttp/OkHttpHeaderLiveTest.java | 7 ++----- .../org/baeldung/okhttp/OkHttpMiscLiveTest.java | 14 +++++--------- .../org/baeldung/okhttp/OkHttpPostingLiveTest.java | 12 ------------ 5 files changed, 8 insertions(+), 40 deletions(-) diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java index 2f75560e03..d5765b9756 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java @@ -27,15 +27,12 @@ public class OkHttpFileUploadingLiveTest { @Before public void init() { - client = new OkHttpClient(); } @Test public void whenUploadFile_thenCorrect() throws IOException { - client = new OkHttpClient(); - RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("file", "file.txt", @@ -56,8 +53,6 @@ public class OkHttpFileUploadingLiveTest { @Test public void whenGetUploadFileProgress_thenCorrect() throws IOException { - client = new OkHttpClient(); - RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("file", "file.txt", diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java index f1dce530cd..08d41fe7ab 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java @@ -13,6 +13,7 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; + public class OkHttpGetLiveTest { private static final String BASE_URL = "http://localhost:8080/spring-rest"; @@ -27,9 +28,6 @@ public class OkHttpGetLiveTest { @Test public void whenGetRequest_thenCorrect() throws IOException { - - client = new OkHttpClient(); - Request request = new Request.Builder() .url(BASE_URL + "/date") .build(); @@ -42,9 +40,6 @@ public class OkHttpGetLiveTest { @Test public void whenGetRequestWithQueryParameter_thenCorrect() throws IOException { - - client = new OkHttpClient(); - HttpUrl.Builder urlBuilder = HttpUrl.parse(BASE_URL + "/ex/bars").newBuilder(); urlBuilder.addQueryParameter("id", "1"); @@ -62,9 +57,6 @@ public class OkHttpGetLiveTest { @Test public void whenAsynchronousGetRequest_thenCorrect() throws InterruptedException { - - client = new OkHttpClient(); - Request request = new Request.Builder() .url(BASE_URL + "/date") .build(); diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpHeaderLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpHeaderLiveTest.java index 1b73565aa4..8888f7d4a7 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpHeaderLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpHeaderLiveTest.java @@ -24,9 +24,6 @@ public class OkHttpHeaderLiveTest { @Test public void whenSetHeader_thenCorrect() throws IOException { - - client = new OkHttpClient(); - Request request = new Request.Builder() .url(SAMPLE_URL) .addHeader("Content-Type", "application/json") @@ -40,7 +37,7 @@ public class OkHttpHeaderLiveTest { @Test public void whenSetDefaultHeader_thenCorrect() throws IOException { - OkHttpClient client = new OkHttpClient.Builder() + OkHttpClient clientWithInterceptor = new OkHttpClient.Builder() .addInterceptor(new DefaultContentTypeInterceptor("application/json")) .build(); @@ -48,7 +45,7 @@ public class OkHttpHeaderLiveTest { .url(SAMPLE_URL) .build(); - Call call = client.newCall(request); + Call call = clientWithInterceptor.newCall(request); Response response = call.execute(); response.close(); } diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java index 3411f29c40..34e1554908 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java @@ -34,8 +34,7 @@ public class OkHttpMiscLiveTest { @Test public void whenSetRequestTimeout_thenFail() throws IOException { - - OkHttpClient client = new OkHttpClient.Builder() + OkHttpClient clientWithTimeout = new OkHttpClient.Builder() .readTimeout(1, TimeUnit.SECONDS) .build(); @@ -43,18 +42,15 @@ public class OkHttpMiscLiveTest { .url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay. .build(); - Call call = client.newCall(request); + Call call = clientWithTimeout.newCall(request); Response response = call.execute(); response.close(); } @Test(expected = IOException.class) public void whenCancelRequest_thenCorrect() throws IOException { - ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); - client = new OkHttpClient(); - Request request = new Request.Builder() .url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay. .build(); @@ -85,7 +81,7 @@ public class OkHttpMiscLiveTest { File cacheDirectory = new File("src/test/resources/cache"); Cache cache = new Cache(cacheDirectory, cacheSize); - OkHttpClient client = new OkHttpClient.Builder() + OkHttpClient clientCached = new OkHttpClient.Builder() .cache(cache) .build(); @@ -93,10 +89,10 @@ public class OkHttpMiscLiveTest { .url("http://publicobject.com/helloworld.txt") .build(); - Response response1 = client.newCall(request).execute(); + Response response1 = clientCached.newCall(request).execute(); logResponse(response1); - Response response2 = client.newCall(request).execute(); + Response response2 = clientCached.newCall(request).execute(); logResponse(response2); } diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java index 59844d547a..dce3bb174f 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java @@ -34,9 +34,6 @@ public class OkHttpPostingLiveTest { @Test public void whenSendPostRequest_thenCorrect() throws IOException { - - client = new OkHttpClient(); - RequestBody formBody = new FormBody.Builder() .add("username", "test") .add("password", "test") @@ -55,11 +52,8 @@ public class OkHttpPostingLiveTest { @Test public void whenSendPostRequestWithAuthorization_thenCorrect() throws IOException { - String postBody = "test post"; - client = new OkHttpClient(); - Request request = new Request.Builder() .url(URL_SECURED_BY_BASIC_AUTHENTICATION) .addHeader("Authorization", Credentials.basic("test", "test")) @@ -74,9 +68,6 @@ public class OkHttpPostingLiveTest { @Test public void whenPostJson_thenCorrect() throws IOException { - - client = new OkHttpClient(); - String json = "{\"id\":1,\"name\":\"John\"}"; RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json); @@ -94,9 +85,6 @@ public class OkHttpPostingLiveTest { @Test public void whenSendMultipartRequest_thenCorrect() throws IOException { - - client = new OkHttpClient(); - RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("username", "test") From a32db2581fb69e44fb117349099134497ec43799 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Mon, 21 Nov 2016 11:36:05 -0500 Subject: [PATCH 094/399] Added example of spring constructor based dependency injection --- spring-constructor-di/pom.xml | 37 +++++++++++++++++++ .../main/java/com/baeldung/spring/Config.java | 24 ++++++++++++ .../com/baeldung/spring/SpringRunner.java | 30 +++++++++++++++ .../java/com/baeldung/spring/domain/Car.java | 24 ++++++++++++ .../com/baeldung/spring/domain/Engine.java | 16 ++++++++ .../baeldung/spring/domain/Transmission.java | 14 +++++++ .../src/main/resources/baeldung.xml | 20 ++++++++++ 7 files changed, 165 insertions(+) create mode 100644 spring-constructor-di/pom.xml create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/Config.java create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java create mode 100644 spring-constructor-di/src/main/resources/baeldung.xml diff --git a/spring-constructor-di/pom.xml b/spring-constructor-di/pom.xml new file mode 100644 index 0000000000..835a1ba4c8 --- /dev/null +++ b/spring-constructor-di/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + baeldung + baeldung + 1.0-SNAPSHOT + + + + org.springframework + spring-context + 4.2.6.RELEASE + + + javax.inject + javax.inject + 1 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + \ No newline at end of file diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java b/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java new file mode 100644 index 0000000000..e7f33c2ad4 --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java @@ -0,0 +1,24 @@ +package com.baeldung.spring; + +import com.baeldung.spring.domain.Car; +import com.baeldung.spring.domain.Engine; +import com.baeldung.spring.domain.Transmission; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan("com.baeldung.spring") +public class Config { + + @Bean + public Engine engine() { + return new Engine("v8", 5); + } + + @Bean + public Transmission transmission() { + return new Transmission("sliding"); + } +} diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java b/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java new file mode 100644 index 0000000000..e8a74b9482 --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java @@ -0,0 +1,30 @@ +package com.baeldung.spring; + +import com.baeldung.spring.domain.Car; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class SpringRunner { + public static void main(String[] args) { + Car toyota = getCarFromXml(); + + System.out.println(toyota); + + toyota = getCarFromJavaConfig(); + + System.out.println(toyota); + } + + private static Car getCarFromJavaConfig() { + ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); + + return context.getBean(Car.class); + } + + private static Car getCarFromXml() { + ApplicationContext context = new ClassPathXmlApplicationContext("baeldung.xml"); + + return context.getBean(Car.class); + } +} diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java new file mode 100644 index 0000000000..73bcc430c1 --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java @@ -0,0 +1,24 @@ +package com.baeldung.spring.domain; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.inject.Inject; +import javax.inject.Named; + +@Component +public class Car { + private Engine engine; + private Transmission transmission; + + @Autowired + public Car(Engine engine, Transmission transmission) { + this.engine = engine; + this.transmission = transmission; + } + + @Override + public String toString() { + return String.format("Engine: %s Transmission: %s", engine, transmission); + } +} diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java new file mode 100644 index 0000000000..1679692d6d --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java @@ -0,0 +1,16 @@ +package com.baeldung.spring.domain; + +public class Engine { + private String type; + private int volume; + + public Engine(String type, int volume) { + this.type = type; + this.volume = volume; + } + + @Override + public String toString() { + return String.format("%s %d", type, volume); + } +} diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java new file mode 100644 index 0000000000..47df118020 --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java @@ -0,0 +1,14 @@ +package com.baeldung.spring.domain; + +public class Transmission { + private String type; + + public Transmission(String type) { + this.type = type; + } + + @Override + public String toString() { + return String.format("%s", type); + } +} diff --git a/spring-constructor-di/src/main/resources/baeldung.xml b/spring-constructor-di/src/main/resources/baeldung.xml new file mode 100644 index 0000000000..7980460dcc --- /dev/null +++ b/spring-constructor-di/src/main/resources/baeldung.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file From 2375eda92c1c218e1dc10a45e6cd3873e992b010 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Mon, 21 Nov 2016 11:43:03 -0500 Subject: [PATCH 095/399] Cleanup --- spring-constructor-di/pom.xml | 55 +++++++++---------- .../main/java/com/baeldung/spring/Config.java | 7 +-- .../java/com/baeldung/spring/domain/Car.java | 3 - 3 files changed, 28 insertions(+), 37 deletions(-) diff --git a/spring-constructor-di/pom.xml b/spring-constructor-di/pom.xml index 835a1ba4c8..27418c9d0c 100644 --- a/spring-constructor-di/pom.xml +++ b/spring-constructor-di/pom.xml @@ -1,37 +1,32 @@ - 4.0.0 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - baeldung - baeldung - 1.0-SNAPSHOT + baeldung + baeldung + 1.0-SNAPSHOT - - - org.springframework - spring-context - 4.2.6.RELEASE - - - javax.inject - javax.inject - 1 - - + + + org.springframework + spring-context + 4.2.6.RELEASE + + - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + \ No newline at end of file diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java b/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java index e7f33c2ad4..661e2cee17 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java @@ -1,13 +1,12 @@ package com.baeldung.spring; -import com.baeldung.spring.domain.Car; -import com.baeldung.spring.domain.Engine; -import com.baeldung.spring.domain.Transmission; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import com.baeldung.spring.domain.Engine; +import com.baeldung.spring.domain.Transmission; + @Configuration @ComponentScan("com.baeldung.spring") public class Config { diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java index 73bcc430c1..96199fcee0 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java @@ -3,9 +3,6 @@ package com.baeldung.spring.domain; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.inject.Inject; -import javax.inject.Named; - @Component public class Car { private Engine engine; From 126b7f1fe530121645f55e7060ec19570ee4c822 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Mon, 21 Nov 2016 11:45:11 -0500 Subject: [PATCH 096/399] Cleanup --- spring-constructor-di/src/main/resources/baeldung.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-constructor-di/src/main/resources/baeldung.xml b/spring-constructor-di/src/main/resources/baeldung.xml index 7980460dcc..b3aeef5ee9 100644 --- a/spring-constructor-di/src/main/resources/baeldung.xml +++ b/spring-constructor-di/src/main/resources/baeldung.xml @@ -17,4 +17,4 @@ - \ No newline at end of file + From b8ade6f6da06b4d24d9d1b18bc486188e5795649 Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Mon, 21 Nov 2016 22:01:05 +0100 Subject: [PATCH 097/399] BAEL-453 some improvments, formatting etc. --- .../java/com/baeldung/factorybean/FactoryBeanAppConfig.java | 1 + .../com/baeldung/factorybean/InitializationToolFactory.java | 1 + .../java/com/baeldung/factorybean/NonSingleToolFactory.java | 1 + .../com/baeldung/factorybean/PostConstructToolFactory.java | 1 + .../java/com/baeldung/factorybean/SingleToolFactory.java | 1 + .../src/main/java/com/baeldung/factorybean/Tool.java | 4 +--- .../src/main/java/com/baeldung/factorybean/ToolFactory.java | 1 + .../src/main/java/com/baeldung/factorybean/Worker.java | 4 ++-- .../src/main/resources/factorybean-abstract-spring-ctx.xml | 4 ++-- .../src/main/resources/factorybean-init-spring-ctx.xml | 4 ++-- .../main/resources/factorybean-postconstruct-spring-ctx.xml | 6 +++--- spring-core/src/main/resources/factorybean-spring-ctx.xml | 4 ++-- .../com/baeldung/factorybean/AbstractFactoryBeanTest.java | 1 + .../com/baeldung/factorybean/FactoryBeanInitializeTest.java | 1 + .../test/java/com/baeldung/factorybean/FactoryBeanTest.java | 1 + 15 files changed, 21 insertions(+), 14 deletions(-) diff --git a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java index ab36df27cb..40e181b7a7 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java @@ -5,6 +5,7 @@ import org.springframework.context.annotation.Configuration; @Configuration public class FactoryBeanAppConfig { + @Bean public ToolFactory tool() { ToolFactory factory = new ToolFactory(); diff --git a/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java index 6d2fd2564e..15e2b01f49 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java @@ -7,6 +7,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.util.StringUtils; public class InitializationToolFactory implements FactoryBean, InitializingBean { + private int factoryId; private int toolId; private String toolName; diff --git a/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java index c818b775eb..158318649c 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java @@ -3,6 +3,7 @@ package com.baeldung.factorybean; import org.springframework.beans.factory.config.AbstractFactoryBean; public class NonSingleToolFactory extends AbstractFactoryBean { + private int factoryId; private int toolId; private String toolName; diff --git a/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java index 47db05d271..696545a70a 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java @@ -8,6 +8,7 @@ import org.springframework.beans.factory.FactoryBean; import org.springframework.util.StringUtils; public class PostConstructToolFactory implements FactoryBean { + private int factoryId; private int toolId; private String toolName; diff --git a/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java index bc0c2d79c0..37fd978a3c 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java @@ -4,6 +4,7 @@ import org.springframework.beans.factory.config.AbstractFactoryBean; //no need to set singleton property because default value is true public class SingleToolFactory extends AbstractFactoryBean { + private int factoryId; private int toolId; private String toolName; diff --git a/spring-core/src/main/java/com/baeldung/factorybean/Tool.java b/spring-core/src/main/java/com/baeldung/factorybean/Tool.java index a7f7f7681e..2a69cbaf2a 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/Tool.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/Tool.java @@ -1,13 +1,11 @@ package com.baeldung.factorybean; public class Tool { + private int id; private String name; private double price; - public Tool() { - } - public Tool(int id, String name, double price) { this.id = id; this.name = name; diff --git a/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java index ca8f82eadb..5e6385c679 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java @@ -3,6 +3,7 @@ package com.baeldung.factorybean; import org.springframework.beans.factory.FactoryBean; public class ToolFactory implements FactoryBean { + private int factoryId; private int toolId; private String toolName; diff --git a/spring-core/src/main/java/com/baeldung/factorybean/Worker.java b/spring-core/src/main/java/com/baeldung/factorybean/Worker.java index 9a35c0656b..0d1dc5d7d6 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/Worker.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/Worker.java @@ -1,11 +1,11 @@ package com.baeldung.factorybean; public class Worker { + private String number; private Tool tool; - public Worker() { - } + public Worker() {} public Worker(String number, Tool tool) { this.number = number; diff --git a/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml b/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml index 6bce114d9c..33b3051cae 100644 --- a/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml @@ -1,7 +1,7 @@ + xmlns="http://www.springframework.org/schema/beans" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> diff --git a/spring-core/src/main/resources/factorybean-init-spring-ctx.xml b/spring-core/src/main/resources/factorybean-init-spring-ctx.xml index 47722b6d3d..1ff492e5df 100644 --- a/spring-core/src/main/resources/factorybean-init-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-init-spring-ctx.xml @@ -1,7 +1,7 @@ + xmlns="http://www.springframework.org/schema/beans" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> diff --git a/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml b/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml index 94a4f407a8..f34325160f 100644 --- a/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml @@ -1,8 +1,8 @@ + xmlns:context="http://www.springframework.org/schema/context" + xmlns="http://www.springframework.org/schema/beans" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> diff --git a/spring-core/src/main/resources/factorybean-spring-ctx.xml b/spring-core/src/main/resources/factorybean-spring-ctx.xml index ab0c646bb0..2987b67d94 100644 --- a/spring-core/src/main/resources/factorybean-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-spring-ctx.xml @@ -1,7 +1,7 @@ + xmlns="http://www.springframework.org/schema/beans" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> diff --git a/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java b/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java index 790107f114..a7ba6d9a68 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java @@ -9,6 +9,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class AbstractFactoryBeanTest { + @Test public void testSingleToolFactory() { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-abstract-spring-ctx.xml"); diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java index 673bab6f63..87947b148a 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java @@ -5,6 +5,7 @@ import org.springframework.beans.factory.BeanCreationException; import org.springframework.context.support.ClassPathXmlApplicationContext; public class FactoryBeanInitializeTest { + @Test(expected = BeanCreationException.class) public void testInitializationToolFactory() { new ClassPathXmlApplicationContext("classpath:factorybean-init-spring-ctx.xml"); diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java index d06448b63c..f35503794a 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java @@ -9,6 +9,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.context.support.ClassPathXmlApplicationContext; public class FactoryBeanTest { + @Test public void testConstructWorkerByXml() { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-spring-ctx.xml"); From 1ba76d72f08e4e63cc04f3df8b6ca3da8b22a010 Mon Sep 17 00:00:00 2001 From: Parth Joshi Date: Wed, 23 Nov 2016 09:41:02 +0530 Subject: [PATCH 098/399] Changes for mentioning db path... (#857) --- .../spring/service/RawDBDemoGeoIPLocationService.java | 2 +- spring-mvc-xml/src/main/webapp/GeoIpTest.jsp | 4 ++-- .../test/java/com/baeldung/geoip/GeoIpIntegrationTest.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java index 0a292ab1e9..af3ce8cfb3 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java @@ -13,7 +13,7 @@ public class RawDBDemoGeoIPLocationService{ private DatabaseReader dbReader; public RawDBDemoGeoIPLocationService() throws IOException { - File database = new File("C:\\Users\\Parth Joshi\\Desktop\\GeoLite2-City.mmdb\\GeoLite2-City.mmdb"); + File database = new File("your-path-to-db-file"); dbReader = new DatabaseReader.Builder(database).build(); } diff --git a/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp b/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp index 431f6162bc..c2a60d5197 100644 --- a/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp +++ b/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp @@ -77,8 +77,8 @@
- - \ No newline at end of file diff --git a/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java b/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java index 72d528095e..2edaa125b7 100644 --- a/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java +++ b/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java @@ -15,10 +15,10 @@ public class GeoIpIntegrationTest { @Test public void givenIP_whenFetchingCity_thenReturnsCityData() throws IOException, GeoIp2Exception { - File database = new File("C:\\Users\\Parth Joshi\\Desktop\\GeoLite2-City.mmdb\\GeoLite2-City.mmdb"); + File database = new File("your-path-to-db-file"); DatabaseReader dbReader = new DatabaseReader.Builder(database).build(); - InetAddress ipAddress = InetAddress.getByName("202.47.112.9"); + InetAddress ipAddress = InetAddress.getByName("your-public-ip"); CityResponse response = dbReader.city(ipAddress); String countryName = response.getCountry().getName(); From 61152915b76d9ec0f59380fb5fdaf97343b0bed5 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Wed, 23 Nov 2016 08:33:57 -0500 Subject: [PATCH 099/399] Moved sprindi examples --- spring-constructor-di/pom.xml | 32 ------------------- .../com/baeldung/constructordi}/Config.java | 8 ++--- .../baeldung/constructordi}/SpringRunner.java | 5 +-- .../baeldung/constructordi}/domain/Car.java | 2 +- .../constructordi}/domain/Engine.java | 2 +- .../constructordi}/domain/Transmission.java | 2 +- .../src/main/resources/baeldung.xml | 6 ++-- 7 files changed, 13 insertions(+), 44 deletions(-) delete mode 100644 spring-constructor-di/pom.xml rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/Config.java (68%) rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/SpringRunner.java (90%) rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/domain/Car.java (92%) rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/domain/Engine.java (86%) rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/domain/Transmission.java (81%) rename {spring-constructor-di => spring-core}/src/main/resources/baeldung.xml (71%) diff --git a/spring-constructor-di/pom.xml b/spring-constructor-di/pom.xml deleted file mode 100644 index 27418c9d0c..0000000000 --- a/spring-constructor-di/pom.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - 4.0.0 - - baeldung - baeldung - 1.0-SNAPSHOT - - - - org.springframework - spring-context - 4.2.6.RELEASE - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - - - \ No newline at end of file diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java b/spring-core/src/main/java/com/baeldung/constructordi/Config.java similarity index 68% rename from spring-constructor-di/src/main/java/com/baeldung/spring/Config.java rename to spring-core/src/main/java/com/baeldung/constructordi/Config.java index 661e2cee17..07568018f3 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/Config.java @@ -1,14 +1,14 @@ -package com.baeldung.spring; +package com.baeldung.constructordi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import com.baeldung.spring.domain.Engine; -import com.baeldung.spring.domain.Transmission; +import com.baeldung.constructordi.domain.Engine; +import com.baeldung.constructordi.domain.Transmission; @Configuration -@ComponentScan("com.baeldung.spring") +@ComponentScan("com.baeldung.constructordi") public class Config { @Bean diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java b/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java similarity index 90% rename from spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java rename to spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java index e8a74b9482..623739f036 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java @@ -1,10 +1,11 @@ -package com.baeldung.spring; +package com.baeldung.constructordi; -import com.baeldung.spring.domain.Car; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +import com.baeldung.constructordi.domain.Car; + public class SpringRunner { public static void main(String[] args) { Car toyota = getCarFromXml(); diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java similarity index 92% rename from spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java rename to spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java index 96199fcee0..9f68ba5cd9 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.domain; +package com.baeldung.constructordi.domain; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java similarity index 86% rename from spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java rename to spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java index 1679692d6d..f2987988eb 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.domain; +package com.baeldung.constructordi.domain; public class Engine { private String type; diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java similarity index 81% rename from spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java rename to spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java index 47df118020..85271e1f2a 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.domain; +package com.baeldung.constructordi.domain; public class Transmission { private String type; diff --git a/spring-constructor-di/src/main/resources/baeldung.xml b/spring-core/src/main/resources/baeldung.xml similarity index 71% rename from spring-constructor-di/src/main/resources/baeldung.xml rename to spring-core/src/main/resources/baeldung.xml index b3aeef5ee9..d84492f1d4 100644 --- a/spring-constructor-di/src/main/resources/baeldung.xml +++ b/spring-core/src/main/resources/baeldung.xml @@ -3,17 +3,17 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> - + - + - + From 2edb881680cf1354cc6c5e04b361482cbc9166ae Mon Sep 17 00:00:00 2001 From: eugenp Date: Wed, 23 Nov 2016 16:39:52 +0200 Subject: [PATCH 100/399] compilation fix --- .../baeldung/okhttp/OkHttpGetLiveTest.java | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java index 08d41fe7ab..034833da0d 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java @@ -1,11 +1,14 @@ package org.baeldung.okhttp; -import okhttp3.*; -import org.junit.Test; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; import java.io.IOException; + import org.junit.Before; import org.junit.Test; + import okhttp3.Call; import okhttp3.Callback; import okhttp3.HttpUrl; @@ -13,7 +16,6 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; - public class OkHttpGetLiveTest { private static final String BASE_URL = "http://localhost:8080/spring-rest"; @@ -23,14 +25,12 @@ public class OkHttpGetLiveTest { @Before public void init() { - client = new OkHttpClient(); + client = new OkHttpClient(); } @Test public void whenGetRequest_thenCorrect() throws IOException { - Request request = new Request.Builder() - .url(BASE_URL + "/date") - .build(); + Request request = new Request.Builder().url(BASE_URL + "/date").build(); Call call = client.newCall(request); Response response = call.execute(); @@ -45,9 +45,7 @@ public class OkHttpGetLiveTest { String url = urlBuilder.build().toString(); - Request request = new Request.Builder() - .url(url) - .build(); + Request request = new Request.Builder().url(url).build(); Call call = client.newCall(request); Response response = call.execute(); @@ -57,9 +55,7 @@ public class OkHttpGetLiveTest { @Test public void whenAsynchronousGetRequest_thenCorrect() throws InterruptedException { - Request request = new Request.Builder() - .url(BASE_URL + "/date") - .build(); + Request request = new Request.Builder().url(BASE_URL + "/date").build(); Call call = client.newCall(request); @@ -69,7 +65,7 @@ public class OkHttpGetLiveTest { } public void onFailure(Call call, IOException e) { - fail(); + fail(); } }); From 19b4155ef3ae733a30b54f5c27d73221e068ba03 Mon Sep 17 00:00:00 2001 From: seemamani Date: Thu, 24 Nov 2016 00:04:27 +0530 Subject: [PATCH 101/399] Added a Java file on combining collections (#849) BAEL-35 Added a Java file on combining collections --- .../CollectionsConcatenateUnitTest.java | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java new file mode 100644 index 0000000000..3ee08767bd --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java @@ -0,0 +1,116 @@ +package org.baeldung.java.collections; + +import static java.util.Arrays.asList; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.junit.Assert; +import org.junit.Test; + +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; + +public class CollectionsConcatenateUnitTest { + + @Test + public void givenUsingJava8_whenConcatenatingUsingConcat_thenCorrect() { + Collection collectionA = asList("S", "T"); + Collection collectionB = asList("U", "V"); + Collection collectionC = asList("W", "X"); + + Stream combinedStream = Stream.concat(Stream.concat(collectionA.stream(), collectionB.stream()), collectionC.stream()); + Collection collectionCombined = combinedStream.collect(Collectors.toList()); + + Assert.assertEquals(asList("S", "T", "U", "V", "W", "X"), collectionCombined); + } + + @Test + public void givenUsingJava8_whenConcatenatingUsingflatMap_thenCorrect() { + Collection collectionA = asList("S", "T"); + Collection collectionB = asList("U", "V"); + + Stream combinedStream = Stream.of(collectionA, collectionB).flatMap(Collection::stream); + Collection collectionCombined = combinedStream.collect(Collectors.toList()); + + Assert.assertEquals(asList("S", "T", "U", "V"), collectionCombined); + } + + @Test + public void givenUsingGuava_whenConcatenatingUsingIterables_thenCorrect() { + Collection collectionA = asList("S", "T"); + Collection collectionB = asList("U", "V"); + + Iterable combinedIterables = Iterables.unmodifiableIterable(Iterables.concat(collectionA, collectionB)); + Collection collectionCombined = Lists.newArrayList(combinedIterables); + + Assert.assertEquals(asList("S", "T", "U", "V"), collectionCombined); + } + + @Test + public void givenUsingJava7_whenConcatenatingUsingIterables_thenCorrect() { + Collection collectionA = asList("S", "T"); + Collection collectionB = asList("U", "V"); + + Iterable combinedIterables = concat(collectionA, collectionB); + Collection collectionCombined = makeListFromIterable(combinedIterables); + Assert.assertEquals(Arrays.asList("S", "T", "U", "V"), collectionCombined); + } + + public static Iterable concat(Iterable list1, Iterable list2) { + return new Iterable() { + public Iterator iterator() { + return new Iterator() { + protected Iterator listIterator = list1.iterator(); + protected Boolean checkedHasNext; + protected E nextValue; + private boolean startTheSecond; + + public void theNext() { + if (listIterator.hasNext()) { + checkedHasNext = true; + nextValue = listIterator.next(); + } else if (startTheSecond) + checkedHasNext = false; + else { + startTheSecond = true; + listIterator = list2.iterator(); + theNext(); + } + } + + public boolean hasNext() { + if (checkedHasNext == null) + theNext(); + return checkedHasNext; + } + + public E next() { + if (!hasNext()) + throw new NoSuchElementException(); + checkedHasNext = null; + return nextValue; + } + + public void remove() { + listIterator.remove(); + } + }; + } + }; + } + + public static List makeListFromIterable(Iterable iter) { + List list = new ArrayList(); + for (E item : iter) { + list.add(item); + } + return list; + } +} From 5f9ef96503b23e4981a12f1a10226769aac994a7 Mon Sep 17 00:00:00 2001 From: gitterjim-I Date: Wed, 23 Nov 2016 20:57:39 +0000 Subject: [PATCH 102/399] manual authentication demo integration (#836) * manual authentication demo integration * apply eclipse and security formatting rules * add content to readme file, for manual authentication demo --- spring-security-client/README.MD | 11 ++- .../java/org/baeldung/config/MvcConfig.java | 2 + .../org/baeldung/config/MvcConfigManual.java | 22 +++++ .../config/RegistrationController.java | 92 +++++++++++++++++++ .../org/baeldung/config/SecurityConfig.java | 2 + .../config/WebSecurityConfigManual.java | 35 +++++++ .../src/main/resources/templates/hello.html | 15 +++ .../src/main/resources/templates/home.html | 15 +++ .../src/main/resources/templates/login.html | 21 +++++ .../templates/registrationError.html | 1 + .../templates/registrationSuccess.html | 15 +++ 11 files changed, 230 insertions(+), 1 deletion(-) create mode 100644 spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfigManual.java create mode 100644 spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java create mode 100644 spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/WebSecurityConfigManual.java create mode 100644 spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/hello.html create mode 100644 spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/home.html create mode 100644 spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/login.html create mode 100644 spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationError.html create mode 100644 spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationSuccess.html diff --git a/spring-security-client/README.MD b/spring-security-client/README.MD index 5ac974203b..0b0af7ffe1 100644 --- a/spring-security-client/README.MD +++ b/spring-security-client/README.MD @@ -1,2 +1,11 @@ -###The Course +========= +## Spring Security Authentication/Authorization Example Project + +##The Course The "REST With Spring" Classes: http://github.learnspringsecurity.com + +### Relevant Articles: +- [Spring Security Manual Authentication](http://www.baeldung.com/spring-security-authentication) + +### Build the Project +mvn clean install diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfig.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfig.java index 9ade60e54c..259433f6ae 100644 --- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfig.java +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfig.java @@ -8,9 +8,11 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.context.annotation.Profile; @Configuration @EnableWebMvc +@Profile("!manual") public class MvcConfig extends WebMvcConfigurerAdapter { public MvcConfig() { diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfigManual.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfigManual.java new file mode 100644 index 0000000000..d80527c30a --- /dev/null +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/MvcConfigManual.java @@ -0,0 +1,22 @@ +package org.baeldung.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +@Configuration +@EnableWebMvc +@Profile("manual") +public class MvcConfigManual extends WebMvcConfigurerAdapter { + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/home").setViewName("home"); + registry.addViewController("/").setViewName("home"); + registry.addViewController("/hello").setViewName("hello"); + registry.addViewController("/login").setViewName("login"); + } + +} diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java new file mode 100644 index 0000000000..025001ac44 --- /dev/null +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java @@ -0,0 +1,92 @@ +package org.baeldung.config; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AbstractAuthenticationToken; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.WebAuthenticationDetails; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.context.annotation.Profile; + +/** + * Manually authenticate a user using Spring Security / Spring Web MVC' (upon successful account registration) + * (http://stackoverflow.com/questions/4664893/how-to-manually-set-an-authenticated-user-in-spring-security-springmvc) + * + * @author jim clayson + */ +@Controller +@Profile("manual") +public class RegistrationController { + private static final Logger logger = LoggerFactory.getLogger(RegistrationController.class); + + @Autowired + AuthenticationManager authenticationManager; + + /** + * For demo purposes this need only be a GET request method + * + * @param request + * @param response + * @return The view. Page confirming either successful registration (and/or + * successful authentication) or failed registration. + */ + @RequestMapping(value = "/register", method = RequestMethod.GET) + public String registerAndAuthenticate(HttpServletRequest request, HttpServletResponse response) { + logger.debug("registerAndAuthenticate: attempt to register, application should manually authenticate."); + + // Mocked values. Potentially could come from an HTML registration form, + // in which case this mapping would match on an HTTP POST, rather than a GET + String username = "user"; + String password = "password"; + + String view = "registrationSuccess"; + + if (requestQualifiesForManualAuthentication()) { + try { + authenticate(username, password, request, response); + logger.debug("registerAndAuthenticate: authentication completed."); + } catch (BadCredentialsException bce) { + logger.debug("Authentication failure: bad credentials"); + bce.printStackTrace(); + view = "systemError"; // assume a low-level error, since the registration + // form would have been successfully validated + } + } + + return view; + } + + private boolean requestQualifiesForManualAuthentication() { + // Some processing to determine that the user requires a Spring Security-recognized, + // application-directed login e.g. successful account registration. + return true; + } + + private void authenticate(String username, String password, HttpServletRequest request, HttpServletResponse response) throws BadCredentialsException { + logger.debug("attempting to authenticated, manually ... "); + + // create and populate the token + AbstractAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(username, password); + authToken.setDetails(new WebAuthenticationDetails(request)); + + // This call returns an authentication object, which holds principle and user credentials + Authentication authentication = this.authenticationManager.authenticate(authToken); + + // The security context holds the authentication object, and is stored + // in thread local scope. + SecurityContextHolder.getContext().setAuthentication(authentication); + + logger.debug("User should now be authenticated."); + } + +} \ No newline at end of file diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/SecurityConfig.java index bd6c56d38a..153cc67661 100644 --- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/SecurityConfig.java +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/SecurityConfig.java @@ -6,9 +6,11 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.context.annotation.Profile; @Configuration @EnableWebSecurity +@Profile("!manual") public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/WebSecurityConfigManual.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/WebSecurityConfigManual.java new file mode 100644 index 0000000000..180a53deba --- /dev/null +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/WebSecurityConfigManual.java @@ -0,0 +1,35 @@ +package org.baeldung.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +@Profile("manual") +public class WebSecurityConfigManual extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + // @formatter:off + http + .authorizeRequests() + .antMatchers("/", "/home", "/register").permitAll() + .anyRequest().authenticated() + .and() + .formLogin() + .loginPage("/login").permitAll() + .and() + .logout().permitAll(); + // @formatter:on + } + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); + } +} diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/hello.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/hello.html new file mode 100644 index 0000000000..b37731b0ed --- /dev/null +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/hello.html @@ -0,0 +1,15 @@ + + + + Hello World! + + +

Hello [[${#httpServletRequest.remoteUser}]]!

+
+ +
+

Click here to go to the home page.

+ + + \ No newline at end of file diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/home.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/home.html new file mode 100644 index 0000000000..6dbdf491c6 --- /dev/null +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/home.html @@ -0,0 +1,15 @@ + + + + Spring Security Example + + +

Welcome!

+ +

Click here to see a greeting.

+

Click here to send a dummy registration request, where the application logs you in.

+ + \ No newline at end of file diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/login.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/login.html new file mode 100644 index 0000000000..3f28efac69 --- /dev/null +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/login.html @@ -0,0 +1,21 @@ + + + + Spring Security Example + + +
+ Invalid username and password. +
+
+ You have been logged out. +
+
+
+
+
+
+

Click here to go to the home page.

+ + \ No newline at end of file diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationError.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationError.html new file mode 100644 index 0000000000..756cc2390d --- /dev/null +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationError.html @@ -0,0 +1 @@ +Registration could not be completed at this time. Please try again later or contact support! \ No newline at end of file diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationSuccess.html b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationSuccess.html new file mode 100644 index 0000000000..b1c4336f2f --- /dev/null +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/resources/templates/registrationSuccess.html @@ -0,0 +1,15 @@ + + + + Registration Success! + + +

Registration succeeded. You have been logged in by the system. Welcome [[${#httpServletRequest.remoteUser}]]!

+
+ +
+

Click here to go to the home page.

+ + + \ No newline at end of file From 9cd64f8d19864cc6340714efd388604d13440be2 Mon Sep 17 00:00:00 2001 From: tschiman Date: Wed, 23 Nov 2016 16:07:28 -0700 Subject: [PATCH 103/399] BAEL-89 Trimming down to one application that uses spring boot and demonstrating spring session in the unit tests. --- spring-session/jetty-session-demo/pom.xml | 76 ------------- .../session/jettyex/JettyController.java | 12 -- .../session/jettyex/SecurityConfig.java | 19 ---- .../spring/session/jettyex/SessionConfig.java | 17 --- .../src/main/resources/application.properties | 3 - spring-session/pom.xml | 71 ++++++++++-- .../spring/session}/SecurityConfig.java | 4 +- .../spring/session}/SessionConfig.java | 2 +- .../spring/session/SessionController.java} | 8 +- .../session/SessionWebApplication.java} | 6 +- .../src/main/resources/application.properties | 0 .../spring/session/SessionControllerTest.java | 87 +++++++++++++++ spring-session/tomcat-session-demo/pom.xml | 71 ------------ .../tomcatex/TomcatWebApplication.java | 11 -- .../tomcatex/TomcatControllerTest.java | 103 ------------------ 15 files changed, 157 insertions(+), 333 deletions(-) delete mode 100644 spring-session/jetty-session-demo/pom.xml delete mode 100644 spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyController.java delete mode 100644 spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java delete mode 100644 spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SessionConfig.java delete mode 100644 spring-session/jetty-session-demo/src/main/resources/application.properties rename spring-session/{tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex => src/main/java/com/baeldung/spring/session}/SecurityConfig.java (90%) rename spring-session/{tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex => src/main/java/com/baeldung/spring/session}/SessionConfig.java (88%) rename spring-session/{tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatController.java => src/main/java/com/baeldung/spring/session/SessionController.java} (55%) rename spring-session/{jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java => src/main/java/com/baeldung/spring/session/SessionWebApplication.java} (57%) rename spring-session/{tomcat-session-demo => }/src/main/resources/application.properties (100%) create mode 100644 spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java delete mode 100644 spring-session/tomcat-session-demo/pom.xml delete mode 100644 spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java delete mode 100644 spring-session/tomcat-session-demo/src/test/java/com/baeldung/spring/session/tomcatex/TomcatControllerTest.java diff --git a/spring-session/jetty-session-demo/pom.xml b/spring-session/jetty-session-demo/pom.xml deleted file mode 100644 index 19f0577d2e..0000000000 --- a/spring-session/jetty-session-demo/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - 4.0.0 - - com.baeldung - jetty-session-demo - 1.0.0-SNAPSHOT - - - org.springframework.boot - spring-boot-starter-parent - 1.4.0.RELEASE - - - - - - org.springframework.boot - spring-boot-starter-jetty - - - - org.springframework.boot - spring-boot-starter-data-redis - - - org.springframework.boot - spring-boot-starter-security - - - org.springframework.session - spring-session - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.cloud - spring-cloud-dependencies - Brixton.RELEASE - pom - import - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-compiler-plugin - 3.3 - - 1.8 - 1.8 - - - - - \ No newline at end of file diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyController.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyController.java deleted file mode 100644 index 308b0a8d51..0000000000 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyController.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.spring.session.jettyex; - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class JettyController { - @RequestMapping - public String helloJetty() { - return "hello Jetty"; - } -} \ No newline at end of file diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java deleted file mode 100644 index 5ce8f9a042..0000000000 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SecurityConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.spring.session.jettyex; - -import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.config.http.SessionCreationPolicy; - -@Configuration -@EnableWebSecurity -public class SecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - http - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and() - .authorizeRequests().anyRequest().hasRole("ADMIN"); - } -} diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SessionConfig.java b/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SessionConfig.java deleted file mode 100644 index 735ae7fb43..0000000000 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/SessionConfig.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.spring.session.jettyex; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; -import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; -import org.springframework.session.web.http.HeaderHttpSessionStrategy; -import org.springframework.session.web.http.HttpSessionStrategy; - -@Configuration -@EnableRedisHttpSession -public class SessionConfig extends AbstractHttpSessionApplicationInitializer { - @Bean - public HttpSessionStrategy httpSessionStrategy() { - return new HeaderHttpSessionStrategy(); - } -} diff --git a/spring-session/jetty-session-demo/src/main/resources/application.properties b/spring-session/jetty-session-demo/src/main/resources/application.properties deleted file mode 100644 index 7f81672eda..0000000000 --- a/spring-session/jetty-session-demo/src/main/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -server.port=8081 -spring.redis.host=localhost -spring.redis.port=6379 \ No newline at end of file diff --git a/spring-session/pom.xml b/spring-session/pom.xml index fec6a46af2..cf6fc71be2 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -4,19 +4,68 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - spring-session 1.0.0-SNAPSHOT pom - - jetty-session-demo - tomcat-session-demo - + + org.springframework.boot + spring-boot-starter-parent + 1.4.0.RELEASE + + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.session + spring-session + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-dependencies + Brixton.RELEASE + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + + + \ No newline at end of file diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java b/spring-session/src/main/java/com/baeldung/spring/session/SecurityConfig.java similarity index 90% rename from spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java rename to spring-session/src/main/java/com/baeldung/spring/session/SecurityConfig.java index 0f467dd104..beaa4da0fe 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SecurityConfig.java +++ b/spring-session/src/main/java/com/baeldung/spring/session/SecurityConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.session.tomcatex; +package com.baeldung.spring.session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; @@ -23,7 +23,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { http .httpBasic().and() .authorizeRequests() - .antMatchers("/tomcat/admin").hasRole("ADMIN") + .antMatchers("/").hasRole("ADMIN") .anyRequest().authenticated(); } } diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java b/spring-session/src/main/java/com/baeldung/spring/session/SessionConfig.java similarity index 88% rename from spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java rename to spring-session/src/main/java/com/baeldung/spring/session/SessionConfig.java index 5afac6cb6b..5a9bc9ff28 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/SessionConfig.java +++ b/spring-session/src/main/java/com/baeldung/spring/session/SessionConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.session.tomcatex; +package com.baeldung.spring.session; import org.springframework.context.annotation.Configuration; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatController.java b/spring-session/src/main/java/com/baeldung/spring/session/SessionController.java similarity index 55% rename from spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatController.java rename to spring-session/src/main/java/com/baeldung/spring/session/SessionController.java index a241158294..224196d8a0 100644 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatController.java +++ b/spring-session/src/main/java/com/baeldung/spring/session/SessionController.java @@ -1,12 +1,12 @@ -package com.baeldung.spring.session.tomcatex; +package com.baeldung.spring.session; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -public class TomcatController { - @RequestMapping("/tomcat/admin") +public class SessionController { + @RequestMapping("/") public String helloTomcatAdmin() { - return "hello tomcat admin"; + return "hello admin"; } } diff --git a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java b/spring-session/src/main/java/com/baeldung/spring/session/SessionWebApplication.java similarity index 57% rename from spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java rename to spring-session/src/main/java/com/baeldung/spring/session/SessionWebApplication.java index ebb2a8e188..3c605be3a6 100644 --- a/spring-session/jetty-session-demo/src/main/java/com/baeldung/spring/session/jettyex/JettyWebApplication.java +++ b/spring-session/src/main/java/com/baeldung/spring/session/SessionWebApplication.java @@ -1,11 +1,11 @@ -package com.baeldung.spring.session.jettyex; +package com.baeldung.spring.session; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class JettyWebApplication { +public class SessionWebApplication { public static void main(String[] args) { - SpringApplication.run(JettyWebApplication.class, args); + SpringApplication.run(SessionWebApplication.class, args); } } diff --git a/spring-session/tomcat-session-demo/src/main/resources/application.properties b/spring-session/src/main/resources/application.properties similarity index 100% rename from spring-session/tomcat-session-demo/src/main/resources/application.properties rename to spring-session/src/main/resources/application.properties diff --git a/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java b/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java new file mode 100644 index 0000000000..5775710410 --- /dev/null +++ b/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java @@ -0,0 +1,87 @@ +package com.baeldung.spring.session; + +import org.apache.tomcat.util.codec.binary.Base64; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.http.*; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.Set; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class SessionControllerTest { + + @Autowired + private TestRestTemplate restTemplate; + @Autowired + private JedisConnectionFactory jedisConnectionFactory; + + private RedisConnection connection; + + @Before + public void clearRedisData() { + connection = jedisConnectionFactory.getConnection(); + connection.flushAll(); + } + + @Test + public void testRedisIsEmpty() { + Set result = connection.keys("*".getBytes()); + assertEquals(0, result.size()); + } + + @Test + public void testUnauthenticatedCantAccess() { + ResponseEntity result = restTemplate.getForEntity("/", String.class); + assertEquals(HttpStatus.UNAUTHORIZED, result.getStatusCode()); + } + + @Test + public void testRedisControlsSession() { + ResponseEntity result = restTemplate.exchange("/", HttpMethod.GET, makeAuthRequest(), String.class); + assertEquals("hello admin", result.getBody()); //login worked + + Set redisResult = connection.keys("*".getBytes()); + assertTrue(redisResult.size() > 0); //redis is populated with session data + + String sessionCookie = result.getHeaders().get("Set-Cookie").get(0).split(";")[0]; + result = restTemplate.exchange("/", HttpMethod.GET, makeRequestWithCookie(sessionCookie), String.class); + assertEquals("hello admin", result.getBody()); //access with session works worked + + connection.flushAll(); //clear all keys in redis + + result = restTemplate.exchange("/", HttpMethod.GET, makeRequestWithCookie(sessionCookie), String.class); + assertEquals(HttpStatus.UNAUTHORIZED, result.getStatusCode());//access denied after sessions are removed in redis + + } + + private HttpEntity makeRequestWithCookie(String sessionCookie) { + HttpHeaders headers = new HttpHeaders(); + headers.add("Cookie", sessionCookie); + + return new HttpEntity<>(headers); + } + + private HttpEntity makeAuthRequest() { + String plainCreds = "admin:password"; + byte[] plainCredsBytes = plainCreds.getBytes(); + byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); + String base64Creds = new String(base64CredsBytes); + + HttpHeaders headers = new HttpHeaders(); + headers.add("Authorization", "Basic " + base64Creds); + + return new HttpEntity<>(headers); + } + +} \ No newline at end of file diff --git a/spring-session/tomcat-session-demo/pom.xml b/spring-session/tomcat-session-demo/pom.xml deleted file mode 100644 index 0a101e73a6..0000000000 --- a/spring-session/tomcat-session-demo/pom.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - 4.0.0 - - com.baeldung - tomcat-session-demo - 1.0.0-SNAPSHOT - - - org.springframework.boot - spring-boot-starter-parent - 1.4.0.RELEASE - - - - - - org.springframework.boot - spring-boot-starter-data-redis - - - org.springframework.boot - spring-boot-starter-security - - - org.springframework.session - spring-session - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.cloud - spring-cloud-dependencies - Brixton.RELEASE - pom - import - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-compiler-plugin - 3.3 - - 1.8 - 1.8 - - - - - \ No newline at end of file diff --git a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java b/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java deleted file mode 100644 index fb4e059dd1..0000000000 --- a/spring-session/tomcat-session-demo/src/main/java/com/baeldung/spring/session/tomcatex/TomcatWebApplication.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.baeldung.spring.session.tomcatex; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class TomcatWebApplication { - public static void main(String[] args) { - SpringApplication.run(TomcatWebApplication.class, args); - } -} diff --git a/spring-session/tomcat-session-demo/src/test/java/com/baeldung/spring/session/tomcatex/TomcatControllerTest.java b/spring-session/tomcat-session-demo/src/test/java/com/baeldung/spring/session/tomcatex/TomcatControllerTest.java deleted file mode 100644 index 5bfb7e9411..0000000000 --- a/spring-session/tomcat-session-demo/src/test/java/com/baeldung/spring/session/tomcatex/TomcatControllerTest.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.baeldung.spring.session.tomcatex; - -import org.apache.tomcat.util.codec.binary.Base64; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.embedded.LocalServerPort; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; -import org.springframework.http.*; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.Set; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -public class TomcatControllerTest { - - @Autowired - private TestRestTemplate restTemplate; - @LocalServerPort - private int port; - @Autowired - private JedisConnectionFactory jedisConnectionFactory; - private RedisConnection connection; - - @Before - public void clearRedisData() { - connection = jedisConnectionFactory.getConnection(); - connection.flushAll(); - } - - @Test - public void testRedisIsEmpty() { - Set result = connection.keys("*".getBytes()); - assertEquals(0, result.size()); - } - - @Test - public void testForbiddenToProtectedEndpoint() { - ResponseEntity result = restTemplate.getForEntity("/tomcat/admin", String.class); - assertEquals(HttpStatus.UNAUTHORIZED, result.getStatusCode()); - } - - @Test - public void testLoginAddsRedisKey() { - ResponseEntity result = makeRequest(); - assertEquals("hello tomcat admin", result.getBody()); //login worked - - Set redisResult = connection.keys("*".getBytes()); - assertTrue(redisResult.size() > 0); //redis was populated with data - } - - @Test //requires that the jetty service is running on port 8081 - public void testFailureAccessingJettyResourceWithTomcatSessionToken() { - //call the jetty server with the token - ResponseEntity jettyResult = restTemplate.getForEntity("http://localhost:8081", String.class); - assertEquals(HttpStatus.UNAUTHORIZED, jettyResult.getStatusCode()); //login worked - } - - @Test //requires that the jetty service is running on port 8081 - public void testAccessingJettyResourceWithTomcatSessionToken() { - //login to get a session token - ResponseEntity result = makeRequest(); - assertEquals("hello tomcat admin", result.getBody()); //login worked - - assertTrue(result.getHeaders().containsKey("Set-Cookie")); - - String setCookieValue = result.getHeaders().get("Set-Cookie").get(0); - String sessionCookie = setCookieValue.split(";")[0]; - String sessionValue = sessionCookie.split("=")[1]; - - //Add session token to headers - HttpHeaders headers = new HttpHeaders(); - headers.add("x-auth-token", sessionValue); - - //call the jetty server with the token - HttpEntity request = new HttpEntity<>(headers); - ResponseEntity jettyResult = restTemplate.exchange("http://localhost:8081", HttpMethod.GET, request, String.class); - assertEquals("hello Jetty", jettyResult.getBody()); //login worked - - } - - private ResponseEntity makeRequest() { - String plainCreds = "admin:password"; - byte[] plainCredsBytes = plainCreds.getBytes(); - byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); - String base64Creds = new String(base64CredsBytes); - - HttpHeaders headers = new HttpHeaders(); - headers.add("Authorization", "Basic " + base64Creds); - - HttpEntity request = new HttpEntity<>(headers); - return restTemplate.exchange("http://localhost:" + port + "/tomcat/admin", HttpMethod.GET, request, String.class); - } - -} \ No newline at end of file From 15d398cbbb4d2e363000224ae7d83aa5e6a96071 Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Thu, 24 Nov 2016 08:04:37 -0600 Subject: [PATCH 104/399] Update README.md --- spring-mvc-xml/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-mvc-xml/README.md b/spring-mvc-xml/README.md index 783bbb2ef4..e96a8d0392 100644 --- a/spring-mvc-xml/README.md +++ b/spring-mvc-xml/README.md @@ -12,3 +12,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Servlet Session Timeout](http://www.baeldung.com/servlet-session-timeout) - [Basic Forms with Spring MVC](http://www.baeldung.com/spring-mvc-form-tutorial) - [Returning Image/Media Data with Spring MVC](http://www.baeldung.com/spring-mvc-image-media-data) +- [Geolocation by IP in Java](http://www.baeldung.com/geolocation-by-ip-with-maxmind) From cdb6dfd79e4c185804adc220d9a221a24f0b9e7b Mon Sep 17 00:00:00 2001 From: Egima profile Date: Fri, 25 Nov 2016 18:48:26 +0300 Subject: [PATCH 105/399] asyncronous channel apis (#839) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps * fixed network interface tests * removed filetest change * made changes to NIO2 FileTest names * added project for asyncronous channel apis * added project for NIO2 advanced filesystems APIS --- .../java/nio2/visitor/FileSearchExample.java | 60 ++++++++ .../java/nio2/visitor/FileVisitorImpl.java | 30 ++++ .../nio2/watcher/DirectoryWatcherExample.java | 25 ++++ .../java/nio2/async/AsyncEchoClient.java | 82 +++++++++++ .../java/nio2/async/AsyncEchoServer.java | 79 +++++++++++ .../java/nio2/async/AsyncEchoServer2.java | 100 ++++++++++++++ .../java/nio2/async/AsyncEchoTest.java | 36 +++++ .../java/nio2/async/AsyncFileTest.java | 130 ++++++++++++++++++ .../nio2/attributes/BasicAttribsTest.java | 68 +++++++++ 9 files changed, 610 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java create mode 100644 core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java create mode 100644 core-java/src/main/java/com/baeldung/java/nio2/watcher/DirectoryWatcherExample.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java diff --git a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java new file mode 100644 index 0000000000..15910abf9b --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java @@ -0,0 +1,60 @@ +package com.baeldung.java.nio2.visitor; + +import static java.nio.file.FileVisitResult.CONTINUE; +import static java.nio.file.FileVisitResult.TERMINATE; + +import java.io.IOException; +import java.nio.file.FileVisitResult; +import java.nio.file.FileVisitor; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.attribute.BasicFileAttributes; + +public class FileSearchExample implements FileVisitor { + private static String FILE_NAME; + private static Path START_DIR; + + public FileSearchExample(String fileName, Path startingDir) { + FILE_NAME = fileName; + START_DIR = startingDir; + } + + @Override + public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { + return CONTINUE; + } + + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + String fileName = file.getFileName().toString(); + if (FILE_NAME.equals(fileName)) { + System.out.println("File found: " + file.toString()); + return TERMINATE; + } + return CONTINUE; + } + + @Override + public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { + System.out.println("Failed to access file: " + file.toString()); + return CONTINUE; + } + + @Override + public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { + boolean finishedSearch = Files.isSameFile(dir, START_DIR); + if (finishedSearch) { + System.out.println("File:" + FILE_NAME + " not found"); + return TERMINATE; + } + return CONTINUE; + } + + public static void main(String[] args) throws IOException { + Path startingDir = Paths.get("C:/Users/new/Desktop"); + FileSearchExample crawler = new FileSearchExample("hibernate.txt", startingDir); + Files.walkFileTree(startingDir, crawler); + } + +} diff --git a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java new file mode 100644 index 0000000000..360d6d0689 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java @@ -0,0 +1,30 @@ +package com.baeldung.java.nio2.visitor; + +import java.io.IOException; +import java.nio.file.FileVisitResult; +import java.nio.file.FileVisitor; +import java.nio.file.Path; +import java.nio.file.attribute.BasicFileAttributes; + +public class FileVisitorImpl implements FileVisitor { + + @Override + public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) { + return null; + } + + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { + return null; + } + + @Override + public FileVisitResult visitFileFailed(Path file, IOException exc) { + return null; + } + + @Override + public FileVisitResult postVisitDirectory(Path dir, IOException exc) { + return null; + } +} diff --git a/core-java/src/main/java/com/baeldung/java/nio2/watcher/DirectoryWatcherExample.java b/core-java/src/main/java/com/baeldung/java/nio2/watcher/DirectoryWatcherExample.java new file mode 100644 index 0000000000..ffc58a1c50 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/nio2/watcher/DirectoryWatcherExample.java @@ -0,0 +1,25 @@ +package com.baeldung.java.nio2.watcher; + +import java.io.IOException; +import java.nio.file.FileSystems; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardWatchEventKinds; +import java.nio.file.WatchEvent; +import java.nio.file.WatchKey; +import java.nio.file.WatchService; + +public class DirectoryWatcherExample { + public static void main(String[] args) throws IOException, InterruptedException { + WatchService watchService = FileSystems.getDefault().newWatchService(); + Path path = Paths.get(System.getProperty("user.home")); + path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY); + WatchKey key; + while ((key = watchService.take()) != null) { + for (WatchEvent event : key.pollEvents()) { + System.out.println("Event kind:" + event.kind() + ". File affected: " + event.context() + "."); + } + key.reset(); + } + } +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java new file mode 100644 index 0000000000..ea35130f49 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java @@ -0,0 +1,82 @@ +package com.baeldung.java.nio2.async; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.AsynchronousSocketChannel; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +public class AsyncEchoClient { + private AsynchronousSocketChannel client; + private Future future; + private static AsyncEchoClient instance; + + private AsyncEchoClient() { + try { + client = AsynchronousSocketChannel.open(); + InetSocketAddress hostAddress = new InetSocketAddress("localhost", 4999); + future = client.connect(hostAddress); + start(); + + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static AsyncEchoClient getInstance() { + if (instance == null) + instance = new AsyncEchoClient(); + return instance; + } + + private void start() { + try { + future.get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + + public String sendMessage(String message) { + byte[] byteMsg = new String(message).getBytes(); + ByteBuffer buffer = ByteBuffer.wrap(byteMsg); + Future writeResult = client.write(buffer); + + while (!writeResult.isDone()) { + // do nothing + } + buffer.flip(); + Future readResult = client.read(buffer); + while (!readResult.isDone()) { + + } + String echo = new String(buffer.array()).trim(); + buffer.clear(); + return echo; + } + + public void stop() { + try { + client.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) throws IOException { + AsyncEchoClient client = AsyncEchoClient.getInstance(); + client.start(); + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + String line = null; + System.out.println("Message to server:"); + while ((line = br.readLine()) != null) { + String response = client.sendMessage(line); + System.out.println("response from server: " + response); + System.out.println("Message to server:"); + } + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java new file mode 100644 index 0000000000..0e58cb5f10 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java @@ -0,0 +1,79 @@ +package com.baeldung.java.nio2.async; + +import java.io.File; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.AsynchronousServerSocketChannel; +import java.nio.channels.AsynchronousSocketChannel; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +public class AsyncEchoServer { + private AsynchronousServerSocketChannel serverChannel; + private Future acceptResult; + private AsynchronousSocketChannel clientChannel; + + public AsyncEchoServer() { + try { + serverChannel = AsynchronousServerSocketChannel.open(); + InetSocketAddress hostAddress = new InetSocketAddress("localhost", 4999); + serverChannel.bind(hostAddress); + acceptResult = serverChannel.accept(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void runServer() { + try { + clientChannel = acceptResult.get(); + if ((clientChannel != null) && (clientChannel.isOpen())) { + while (true) { + + ByteBuffer buffer = ByteBuffer.allocate(32); + Future readResult = clientChannel.read(buffer); + + while (!readResult.isDone()) { + // do nothing + } + + buffer.flip(); + String message = new String(buffer.array()).trim(); + if (message.equals("bye")) { + break; // while loop + } + buffer = ByteBuffer.wrap(new String(message).getBytes()); + Future writeResult = clientChannel.write(buffer); + while (!writeResult.isDone()) { + // do nothing + } + buffer.clear(); + + } // while() + + clientChannel.close(); + serverChannel.close(); + + } + } catch (InterruptedException | ExecutionException | IOException e) { + e.printStackTrace(); + } + + } + + public static void main(String[] args) { + AsyncEchoServer server = new AsyncEchoServer(); + server.runServer(); + } + public static Process start() throws IOException, InterruptedException { + String javaHome = System.getProperty("java.home"); + String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; + String classpath = System.getProperty("java.class.path"); + String className = AsyncEchoServer.class.getCanonicalName(); + + ProcessBuilder builder = new ProcessBuilder(javaBin, "-cp", classpath, className); + + return builder.start(); + } +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java new file mode 100644 index 0000000000..03ce233ce9 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java @@ -0,0 +1,100 @@ +package com.baeldung.java.nio2.async; + +import java.io.File; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.AsynchronousServerSocketChannel; +import java.nio.channels.AsynchronousSocketChannel; +import java.nio.channels.CompletionHandler; +import java.util.HashMap; +import java.util.Map; + +public class AsyncEchoServer2 { + private AsynchronousServerSocketChannel serverChannel; + private AsynchronousSocketChannel clientChannel; + + public AsyncEchoServer2() { + try { + serverChannel = AsynchronousServerSocketChannel.open(); + InetSocketAddress hostAddress = new InetSocketAddress("localhost", 4999); + serverChannel.bind(hostAddress); + while (true) { + + serverChannel.accept(null, new CompletionHandler() { + + @Override + public void completed(AsynchronousSocketChannel result, Object attachment) { + if (serverChannel.isOpen()) + serverChannel.accept(null, this); + clientChannel = result; + if ((clientChannel != null) && (clientChannel.isOpen())) { + ReadWriteHandler handler = new ReadWriteHandler(); + ByteBuffer buffer = ByteBuffer.allocate(32); + Map readInfo = new HashMap<>(); + readInfo.put("action", "read"); + readInfo.put("buffer", buffer); + clientChannel.read(buffer, readInfo, handler); + } + } + + @Override + public void failed(Throwable exc, Object attachment) { + // process error + } + }); + try { + System.in.read(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + class ReadWriteHandler implements CompletionHandler> { + + @Override + public void completed(Integer result, Map attachment) { + Map actionInfo = attachment; + String action = (String) actionInfo.get("action"); + if ("read".equals(action)) { + ByteBuffer buffer = (ByteBuffer) actionInfo.get("buffer"); + buffer.flip(); + actionInfo.put("action", "write"); + clientChannel.write(buffer, actionInfo, this); + buffer.clear(); + } else if ("write".equals(action)) { + ByteBuffer buffer = ByteBuffer.allocate(32); + actionInfo.put("action", "read"); + actionInfo.put("buffer", buffer); + clientChannel.read(buffer, actionInfo, this); + } + + } + + @Override + public void failed(Throwable exc, Map attachment) { + + } + + } + + + public static void main(String[] args) { + new AsyncEchoServer2(); + } + + public static Process start() throws IOException, InterruptedException { + String javaHome = System.getProperty("java.home"); + String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; + String classpath = System.getProperty("java.class.path"); + String className = AsyncEchoServer2.class.getCanonicalName(); + + ProcessBuilder builder = new ProcessBuilder(javaBin, "-cp", classpath, className); + + return builder.start(); + } +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java new file mode 100644 index 0000000000..7ac388fb09 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java @@ -0,0 +1,36 @@ +package com.baeldung.java.nio2.async; + +import static org.junit.Assert.*; + +import java.io.IOException; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class AsyncEchoTest { + + Process server; + AsyncEchoClient client; + + @Before + public void setup() throws IOException, InterruptedException { + server = AsyncEchoServer2.start(); + client = AsyncEchoClient.getInstance(); + } + + @Test + public void givenServerClient_whenServerEchosMessage_thenCorrect() { + String resp1 = client.sendMessage("hello"); + String resp2 = client.sendMessage("world"); + assertEquals("hello", resp1); + assertEquals("world", resp2); + } + + @After + public void teardown() throws IOException { + server.destroy(); + client.stop(); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java new file mode 100644 index 0000000000..db30d32210 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java @@ -0,0 +1,130 @@ +package com.baeldung.java.nio2.async; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.net.URI; +import java.nio.ByteBuffer; +import java.nio.channels.AsynchronousFileChannel; +import java.nio.channels.CompletionHandler; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.UUID; +import java.util.concurrent.Future; + +import org.junit.Test; + +public class AsyncFileTest { + @Test + public void givenPath_whenReadsContentWithFuture_thenCorrect() throws IOException { + Path path = Paths.get(URI.create(new AsyncFileTest().getClass().getResource("/file.txt").toString())); + AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ); + + ByteBuffer buffer = ByteBuffer.allocate(1024); + + Future operation = fileChannel.read(buffer, 0); + + while (!operation.isDone()) + ; + + String fileContent = new String(buffer.array()).trim(); + buffer.clear(); + + assertEquals(fileContent, "baeldung.com"); + } + + @Test + public void givenPath_whenReadsContentWithCompletionHandler_thenCorrect() throws IOException { + Path path = Paths.get(URI.create(new AsyncFileTest().getClass().getResource("/file.txt").toString())); + AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ); + + ByteBuffer buffer = ByteBuffer.allocate(1024); + + fileChannel.read(buffer, 0, buffer, new CompletionHandler() { + + @Override + public void completed(Integer result, ByteBuffer attachment) { + // result is number of bytes read + // attachment is the buffer + + } + + @Override + public void failed(Throwable exc, ByteBuffer attachment) { + + } + }); + } + + @Test + public void givenPathAndContent_whenWritesToFileWithFuture_thenCorrect() throws IOException { + String fileName = UUID.randomUUID().toString(); + Path path = Paths.get(fileName); + AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE,StandardOpenOption.DELETE_ON_CLOSE); + + ByteBuffer buffer = ByteBuffer.allocate(1024); + long position = 0; + + buffer.put("hello world".getBytes()); + buffer.flip(); + + Future operation = fileChannel.write(buffer, position); + buffer.clear(); + + while (!operation.isDone()) { + + } + + String content = readContent(path); + assertEquals("hello world", content); + } + + @Test + public void givenPathAndContent_whenWritesToFileWithHandler_thenCorrect() throws IOException { + String fileName = UUID.randomUUID().toString(); + Path path = Paths.get(fileName); + AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE,StandardOpenOption.DELETE_ON_CLOSE); + + + ByteBuffer buffer = ByteBuffer.allocate(1024); + buffer.put("hello world".getBytes()); + buffer.flip(); + + fileChannel.write(buffer, 0, buffer, new CompletionHandler() { + + @Override + public void completed(Integer result, ByteBuffer attachment) { + // result is number of bytes written + // attachment is the buffer + + } + + @Override + public void failed(Throwable exc, ByteBuffer attachment) { + + } + }); + } + + public static String readContent(Path file) { + AsynchronousFileChannel fileChannel = null; + try { + fileChannel = AsynchronousFileChannel.open(file, StandardOpenOption.READ); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + ByteBuffer buffer = ByteBuffer.allocate(1024); + + Future operation = fileChannel.read(buffer, 0); + + while (!operation.isDone()) + ; + + String fileContent = new String(buffer.array()).trim(); + buffer.clear(); + return fileContent; + } +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java new file mode 100644 index 0000000000..dcc24c6415 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java @@ -0,0 +1,68 @@ +package com.baeldung.java.nio2.attributes; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.attribute.BasicFileAttributeView; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.attribute.FileTime; + +import org.junit.Before; +import org.junit.Test; + +public class BasicAttribsTest { + private static final String HOME = System.getProperty("user.home"); + BasicFileAttributes basicAttribs; + + @Before + public void setup() throws IOException { + Path home = Paths.get(HOME); + BasicFileAttributeView basicView = Files.getFileAttributeView(home, BasicFileAttributeView.class); + basicAttribs = basicView.readAttributes(); + } + + @Test + public void givenFileTimes_whenComparesThem_ThenCorrect() { + FileTime created = basicAttribs.creationTime(); + FileTime modified = basicAttribs.lastModifiedTime(); + FileTime accessed = basicAttribs.lastAccessTime(); + + assertTrue(0 > created.compareTo(accessed)); + assertTrue(0 < modified.compareTo(created)); + assertTrue(0 == created.compareTo(created)); + } + + @Test + public void givenPath_whenGetsFileSize_thenCorrect() { + long size = basicAttribs.size(); + assertTrue(size > 0); + } + + @Test + public void givenPath_whenChecksIfDirectory_thenCorrect() { + boolean isDir = basicAttribs.isDirectory(); + assertTrue(isDir); + } + + @Test + public void givenPath_whenChecksIfFile_thenCorrect() { + boolean isFile = basicAttribs.isRegularFile(); + assertFalse(isFile); + } + + @Test + public void givenPath_whenChecksIfSymLink_thenCorrect() { + boolean isSymLink = basicAttribs.isSymbolicLink(); + assertFalse(isSymLink); + } + + @Test + public void givenPath_whenChecksIfOther_thenCorrect() { + boolean isOther = basicAttribs.isOther(); + assertFalse(isOther); + } +} From 5b738313e8524ea44113cb1bf7c9aca0f4c34ddf Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Sat, 26 Nov 2016 17:43:54 +0000 Subject: [PATCH 106/399] Add Spring MVC form and binding example --- spring-mvc-forms/pom.xml | 99 +++++++++++++++++++ .../ApplicationConfiguration.java | 29 ++++++ .../configuration/WebInitializer.java | 47 +++++++++ .../controller/EmployeeController.java | 41 ++++++++ .../springmvcforms/domain/Employee.java | 46 +++++++++ .../webapp/WEB-INF/views/employeeHome.jsp | 33 +++++++ .../webapp/WEB-INF/views/employeeView.jsp | 24 +++++ .../src/main/webapp/WEB-INF/views/error.jsp | 20 ++++ 8 files changed, 339 insertions(+) create mode 100644 spring-mvc-forms/pom.xml create mode 100644 spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/configuration/ApplicationConfiguration.java create mode 100644 spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/configuration/WebInitializer.java create mode 100644 spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/controller/EmployeeController.java create mode 100644 spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/domain/Employee.java create mode 100644 spring-mvc-forms/src/main/webapp/WEB-INF/views/employeeHome.jsp create mode 100644 spring-mvc-forms/src/main/webapp/WEB-INF/views/employeeView.jsp create mode 100644 spring-mvc-forms/src/main/webapp/WEB-INF/views/error.jsp diff --git a/spring-mvc-forms/pom.xml b/spring-mvc-forms/pom.xml new file mode 100644 index 0000000000..370fd7feb2 --- /dev/null +++ b/spring-mvc-forms/pom.xml @@ -0,0 +1,99 @@ + + + + 4.0.0 + com.baeldung + 0.1-SNAPSHOT + spring-mvc-forms + + spring-mvc-forms + war + + + + org.springframework + spring-webmvc + ${springframework.version} + + + + javax.servlet + javax.servlet-api + ${javax.servlet-api.version} + + + + javax.servlet.jsp + javax.servlet.jsp-api + ${javax.servlet.jsp-api.version} + + + + javax.servlet + jstl + ${jstl.version} + + + + org.hibernate + hibernate-validator + ${hibernate-validator.version} + + + + + + + + spring-mvc-forms + + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven-compiler-plugin.source} + ${maven-compiler-plugin.source} + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + src/main/webapp + spring-mvc-forms + false + ${deploy-path} + + + + + + spring-mvc-forms + + + + + + 4.0.6.RELEASE + 2.4 + 1.2 + 2.3.1 + 3.1.0 + 3.5.1 + 1.8 + 5.1.1.Final + enter-location-of-server + + + + diff --git a/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/configuration/ApplicationConfiguration.java b/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/configuration/ApplicationConfiguration.java new file mode 100644 index 0000000000..998f070c02 --- /dev/null +++ b/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/configuration/ApplicationConfiguration.java @@ -0,0 +1,29 @@ +package com.baeldung.springmvcforms.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.view.InternalResourceViewResolver; + +@Configuration +@EnableWebMvc +@ComponentScan(basePackages = "com.baeldung.springmvcforms") +class ApplicationConfiguration extends WebMvcConfigurerAdapter { + + @Override + public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { + configurer.enable(); + } + + @Bean + public InternalResourceViewResolver jspViewResolver() { + InternalResourceViewResolver bean = new InternalResourceViewResolver(); + bean.setPrefix("/WEB-INF/views/"); + bean.setSuffix(".jsp"); + return bean; + } + +} diff --git a/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/configuration/WebInitializer.java b/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/configuration/WebInitializer.java new file mode 100644 index 0000000000..c602ea6454 --- /dev/null +++ b/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/configuration/WebInitializer.java @@ -0,0 +1,47 @@ +package com.baeldung.springmvcforms.configuration; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +public class WebInitializer implements WebApplicationInitializer { + + public void onStartup(ServletContext container) throws ServletException { + + AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); + ctx.register(ApplicationConfiguration.class); + ctx.setServletContext(container); + + // Manage the lifecycle of the root application context + container.addListener(new ContextLoaderListener(ctx)); + + ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx)); + + servlet.setLoadOnStartup(1); + servlet.addMapping("/"); + } +// @Override +// public void onStartup(ServletContext container) { +// // Create the 'root' Spring application context +// AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); +// rootContext.register(ServiceConfig.class, JPAConfig.class, SecurityConfig.class); +// +// // Manage the lifecycle of the root application context +// container.addListener(new ContextLoaderListener(rootContext)); +// +// // Create the dispatcher servlet's Spring application context +// AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext(); +// dispatcherServlet.register(MvcConfig.class); +// +// // Register and map the dispatcher servlet +// ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherServlet)); +// dispatcher.setLoadOnStartup(1); +// dispatcher.addMapping("/"); +// +// } +} diff --git a/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/controller/EmployeeController.java b/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/controller/EmployeeController.java new file mode 100644 index 0000000000..3ece77bb18 --- /dev/null +++ b/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/controller/EmployeeController.java @@ -0,0 +1,41 @@ +package com.baeldung.springmvcforms.controller; + +import com.baeldung.springmvcforms.domain.Employee; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.validation.Valid; +import java.util.HashMap; +import java.util.Map; + +@Controller +public class EmployeeController { + + Map employeeMap = new HashMap<>(); + + @RequestMapping(value = "/employee", method = RequestMethod.GET) + public ModelAndView showForm() { + return new ModelAndView("employeeHome", "employee", new Employee()); + } + + @RequestMapping(value = "/employee/{Id}", produces = { "application/json", "application/xml" }, method = RequestMethod.GET) + public @ResponseBody Employee getEmployeeById(@PathVariable final long Id) { + return employeeMap.get(Id); + } + + @RequestMapping(value = "/addEmployee", method = RequestMethod.POST) + public String submit(@Valid @ModelAttribute("employee") final Employee employee, final BindingResult result, final ModelMap model) { + if (result.hasErrors()) { + return "error"; + } + model.addAttribute("name", employee.getName()); + model.addAttribute("contactNumber", employee.getContactNumber()); + model.addAttribute("id", employee.getId()); + employeeMap.put(employee.getId(), employee); + return "employeeView"; + } + +} diff --git a/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/domain/Employee.java b/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/domain/Employee.java new file mode 100644 index 0000000000..23cb72b3dc --- /dev/null +++ b/spring-mvc-forms/src/main/java/com/baeldung/springmvcforms/domain/Employee.java @@ -0,0 +1,46 @@ +package com.baeldung.springmvcforms.domain; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +public class Employee { + + private long id; + + @NotNull + @Size(min = 5) + private String name; + + @NotNull + @Size(min = 7) + private String contactNumber; + + public Employee() { + super(); + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + public String getContactNumber() { + return contactNumber; + } + + public void setContactNumber(final String contactNumber) { + this.contactNumber = contactNumber; + } + +} diff --git a/spring-mvc-forms/src/main/webapp/WEB-INF/views/employeeHome.jsp b/spring-mvc-forms/src/main/webapp/WEB-INF/views/employeeHome.jsp new file mode 100644 index 0000000000..5ed572000a --- /dev/null +++ b/spring-mvc-forms/src/main/webapp/WEB-INF/views/employeeHome.jsp @@ -0,0 +1,33 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> + + + +Form Example - Register an Employee + + +

Welcome, Enter The Employee Details

+ + + + + + + + + + + + + + + + + + +
Name
Id
Contact Number
+
+ + + + \ No newline at end of file diff --git a/spring-mvc-forms/src/main/webapp/WEB-INF/views/employeeView.jsp b/spring-mvc-forms/src/main/webapp/WEB-INF/views/employeeView.jsp new file mode 100644 index 0000000000..1457bc5fc8 --- /dev/null +++ b/spring-mvc-forms/src/main/webapp/WEB-INF/views/employeeView.jsp @@ -0,0 +1,24 @@ +<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> + + +Spring MVC Form Handling + + + +

Submitted Employee Information

+ + + + + + + + + + + + + +
Name :${name}
ID :${id}
Contact Number :${contactNumber}
+ + \ No newline at end of file diff --git a/spring-mvc-forms/src/main/webapp/WEB-INF/views/error.jsp b/spring-mvc-forms/src/main/webapp/WEB-INF/views/error.jsp new file mode 100644 index 0000000000..8f3d83af17 --- /dev/null +++ b/spring-mvc-forms/src/main/webapp/WEB-INF/views/error.jsp @@ -0,0 +1,20 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + +SpringMVCExample + + + +

Pleas enter the correct details

+ + + + +
Retry
+ + + + \ No newline at end of file From 6cca0522517816a98ffbc883992d11e537b68c03 Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Sat, 26 Nov 2016 18:33:20 +0000 Subject: [PATCH 107/399] Add Spring MVC form and binding example --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index b8d0303160..77cf615a98 100644 --- a/pom.xml +++ b/pom.xml @@ -109,6 +109,7 @@ spring-katharsis spring-mockito spring-mvc-java + spring-mvc-forms spring-mvc-no-xml spring-mvc-tiles spring-mvc-velocity From 361874d0d6beb8c00a41e0ca86668fa8189b029a Mon Sep 17 00:00:00 2001 From: DianeDuan Date: Sun, 27 Nov 2016 12:23:51 +0800 Subject: [PATCH 108/399] simplify demos --- .../factorybean/FactoryBeanAppConfig.java | 11 +-- .../InitializationToolFactory.java | 67 ------------------ .../factorybean/NonSingleToolFactory.java | 20 +----- .../factorybean/PostConstructToolFactory.java | 68 ------------------- .../factorybean/SingleToolFactory.java | 20 +----- .../java/com/baeldung/factorybean/Tool.java | 22 +----- .../com/baeldung/factorybean/ToolFactory.java | 20 +----- .../java/com/baeldung/factorybean/Worker.java | 30 -------- .../factorybean-abstract-spring-ctx.xml | 24 ------- .../resources/factorybean-init-spring-ctx.xml | 17 ----- .../factorybean-postconstruct-spring-ctx.xml | 20 ------ .../main/resources/factorybean-spring-ctx.xml | 7 -- .../factorybean/AbstractFactoryBeanTest.java | 42 ++++++------ .../FactoryBeanInitializeTest.java | 17 ----- .../FactoryBeanJavaConfigTest.java | 27 ++++++++ .../baeldung/factorybean/FactoryBeanTest.java | 39 ----------- .../factorybean/FactoryBeanXmlConfigTest.java | 27 ++++++++ 17 files changed, 84 insertions(+), 394 deletions(-) delete mode 100644 spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java delete mode 100644 spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java delete mode 100644 spring-core/src/main/java/com/baeldung/factorybean/Worker.java delete mode 100644 spring-core/src/main/resources/factorybean-init-spring-ctx.xml delete mode 100644 spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml delete mode 100644 spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java create mode 100644 spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java delete mode 100644 spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java create mode 100644 spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java diff --git a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java index ab36df27cb..51e24b6266 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java @@ -6,20 +6,15 @@ import org.springframework.context.annotation.Configuration; @Configuration public class FactoryBeanAppConfig { @Bean - public ToolFactory tool() { + public ToolFactory toolFactory() { ToolFactory factory = new ToolFactory(); factory.setFactoryId(7070); factory.setToolId(2); - factory.setToolName("wrench"); - factory.setToolPrice(3.7); return factory; } @Bean - public Worker worker() throws Exception { - Worker worker = new Worker(); - worker.setNumber("1002"); - worker.setTool(tool().getObject()); - return worker; + public Tool tool() throws Exception { + return toolFactory().getObject(); } } diff --git a/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java deleted file mode 100644 index 6d2fd2564e..0000000000 --- a/spring-core/src/main/java/com/baeldung/factorybean/InitializationToolFactory.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.baeldung.factorybean; - -import static com.google.common.base.Preconditions.checkArgument; - -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.util.StringUtils; - -public class InitializationToolFactory implements FactoryBean, InitializingBean { - private int factoryId; - private int toolId; - private String toolName; - private double toolPrice; - - @Override - public void afterPropertiesSet() throws Exception { - checkArgument(!StringUtils.isEmpty(toolName), "tool name cannot be empty"); - checkArgument(toolPrice >= 0, "tool price should not be less than 0"); - } - - @Override - public Tool getObject() throws Exception { - return new Tool(toolId, toolName, toolPrice); - } - - @Override - public Class getObjectType() { - return Tool.class; - } - - @Override - public boolean isSingleton() { - return false; - } - - public int getFactoryId() { - return factoryId; - } - - public void setFactoryId(int factoryId) { - this.factoryId = factoryId; - } - - public int getToolId() { - return toolId; - } - - public void setToolId(int toolId) { - this.toolId = toolId; - } - - public String getToolName() { - return toolName; - } - - public void setToolName(String toolName) { - this.toolName = toolName; - } - - public double getToolPrice() { - return toolPrice; - } - - public void setToolPrice(double toolPrice) { - this.toolPrice = toolPrice; - } -} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java index c818b775eb..7d3a6617c0 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/NonSingleToolFactory.java @@ -5,8 +5,6 @@ import org.springframework.beans.factory.config.AbstractFactoryBean; public class NonSingleToolFactory extends AbstractFactoryBean { private int factoryId; private int toolId; - private String toolName; - private double toolPrice; public NonSingleToolFactory() { setSingleton(false); @@ -19,7 +17,7 @@ public class NonSingleToolFactory extends AbstractFactoryBean { @Override protected Tool createInstance() throws Exception { - return new Tool(toolId, toolName, toolPrice); + return new Tool(toolId); } public int getFactoryId() { @@ -37,20 +35,4 @@ public class NonSingleToolFactory extends AbstractFactoryBean { public void setToolId(int toolId) { this.toolId = toolId; } - - public String getToolName() { - return toolName; - } - - public void setToolName(String toolName) { - this.toolName = toolName; - } - - public double getToolPrice() { - return toolPrice; - } - - public void setToolPrice(double toolPrice) { - this.toolPrice = toolPrice; - } } diff --git a/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java deleted file mode 100644 index 47db05d271..0000000000 --- a/spring-core/src/main/java/com/baeldung/factorybean/PostConstructToolFactory.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.baeldung.factorybean; - -import static com.google.common.base.Preconditions.checkArgument; - -import javax.annotation.PostConstruct; - -import org.springframework.beans.factory.FactoryBean; -import org.springframework.util.StringUtils; - -public class PostConstructToolFactory implements FactoryBean { - private int factoryId; - private int toolId; - private String toolName; - private double toolPrice; - - @Override - public Tool getObject() throws Exception { - return new Tool(toolId, toolName, toolPrice); - } - - @Override - public Class getObjectType() { - return Tool.class; - } - - @Override - public boolean isSingleton() { - return false; - } - - @PostConstruct - public void checkParams() { - checkArgument(!StringUtils.isEmpty(toolName), "tool name cannot be empty"); - checkArgument(toolPrice >= 0, "tool price should not be less than 0"); - } - - public int getFactoryId() { - return factoryId; - } - - public void setFactoryId(int factoryId) { - this.factoryId = factoryId; - } - - public int getToolId() { - return toolId; - } - - public void setToolId(int toolId) { - this.toolId = toolId; - } - - public String getToolName() { - return toolName; - } - - public void setToolName(String toolName) { - this.toolName = toolName; - } - - public double getToolPrice() { - return toolPrice; - } - - public void setToolPrice(double toolPrice) { - this.toolPrice = toolPrice; - } -} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java index bc0c2d79c0..5d54900c2d 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/SingleToolFactory.java @@ -6,8 +6,6 @@ import org.springframework.beans.factory.config.AbstractFactoryBean; public class SingleToolFactory extends AbstractFactoryBean { private int factoryId; private int toolId; - private String toolName; - private double toolPrice; @Override public Class getObjectType() { @@ -16,7 +14,7 @@ public class SingleToolFactory extends AbstractFactoryBean { @Override protected Tool createInstance() throws Exception { - return new Tool(toolId, toolName, toolPrice); + return new Tool(toolId); } public int getFactoryId() { @@ -34,20 +32,4 @@ public class SingleToolFactory extends AbstractFactoryBean { public void setToolId(int toolId) { this.toolId = toolId; } - - public String getToolName() { - return toolName; - } - - public void setToolName(String toolName) { - this.toolName = toolName; - } - - public double getToolPrice() { - return toolPrice; - } - - public void setToolPrice(double toolPrice) { - this.toolPrice = toolPrice; - } } diff --git a/spring-core/src/main/java/com/baeldung/factorybean/Tool.java b/spring-core/src/main/java/com/baeldung/factorybean/Tool.java index a7f7f7681e..be56745b3d 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/Tool.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/Tool.java @@ -2,16 +2,12 @@ package com.baeldung.factorybean; public class Tool { private int id; - private String name; - private double price; public Tool() { } - public Tool(int id, String name, double price) { + public Tool(int id) { this.id = id; - this.name = name; - this.price = price; } public int getId() { @@ -21,20 +17,4 @@ public class Tool { public void setId(int id) { this.id = id; } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public double getPrice() { - return price; - } - - public void setPrice(double price) { - this.price = price; - } } diff --git a/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java b/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java index ca8f82eadb..cddf17d337 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/ToolFactory.java @@ -5,12 +5,10 @@ import org.springframework.beans.factory.FactoryBean; public class ToolFactory implements FactoryBean { private int factoryId; private int toolId; - private String toolName; - private double toolPrice; @Override public Tool getObject() throws Exception { - return new Tool(toolId, toolName, toolPrice); + return new Tool(toolId); } @Override @@ -38,20 +36,4 @@ public class ToolFactory implements FactoryBean { public void setToolId(int toolId) { this.toolId = toolId; } - - public String getToolName() { - return toolName; - } - - public void setToolName(String toolName) { - this.toolName = toolName; - } - - public double getToolPrice() { - return toolPrice; - } - - public void setToolPrice(double toolPrice) { - this.toolPrice = toolPrice; - } } diff --git a/spring-core/src/main/java/com/baeldung/factorybean/Worker.java b/spring-core/src/main/java/com/baeldung/factorybean/Worker.java deleted file mode 100644 index 9a35c0656b..0000000000 --- a/spring-core/src/main/java/com/baeldung/factorybean/Worker.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.factorybean; - -public class Worker { - private String number; - private Tool tool; - - public Worker() { - } - - public Worker(String number, Tool tool) { - this.number = number; - this.tool = tool; - } - - public String getNumber() { - return number; - } - - public void setNumber(String number) { - this.number = number; - } - - public Tool getTool() { - return tool; - } - - public void setTool(Tool tool) { - this.tool = tool; - } -} diff --git a/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml b/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml index 6bce114d9c..fe914f79ba 100644 --- a/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-abstract-spring-ctx.xml @@ -6,34 +6,10 @@ - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/spring-core/src/main/resources/factorybean-init-spring-ctx.xml b/spring-core/src/main/resources/factorybean-init-spring-ctx.xml deleted file mode 100644 index 47722b6d3d..0000000000 --- a/spring-core/src/main/resources/factorybean-init-spring-ctx.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml b/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml deleted file mode 100644 index 94a4f407a8..0000000000 --- a/spring-core/src/main/resources/factorybean-postconstruct-spring-ctx.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/spring-core/src/main/resources/factorybean-spring-ctx.xml b/spring-core/src/main/resources/factorybean-spring-ctx.xml index ab0c646bb0..e0d4aa4fec 100644 --- a/spring-core/src/main/resources/factorybean-spring-ctx.xml +++ b/spring-core/src/main/resources/factorybean-spring-ctx.xml @@ -6,12 +6,5 @@ - - - - - - -
\ No newline at end of file diff --git a/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java b/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java index 790107f114..aa6d7c2cd2 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/AbstractFactoryBeanTest.java @@ -4,32 +4,36 @@ import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; -import org.junit.Test; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; +import javax.annotation.Resource; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { "classpath:factorybean-abstract-spring-ctx.xml" }) public class AbstractFactoryBeanTest { + + @Resource(name = "singleTool") + private Tool tool1; + @Resource(name = "singleTool") + private Tool tool2; + @Resource(name = "nonSingleTool") + private Tool tool3; + @Resource(name = "nonSingleTool") + private Tool tool4; + @Test public void testSingleToolFactory() { - ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-abstract-spring-ctx.xml"); - - Worker worker1 = (Worker) context.getBean("worker1"); - Worker worker2 = (Worker) context.getBean("worker2"); - - assertThat(worker1.getNumber(), equalTo("50001")); - assertThat(worker2.getNumber(), equalTo("50002")); - assertTrue(worker1.getTool() == worker2.getTool()); + assertThat(tool1.getId(), equalTo(1)); + assertTrue(tool1 == tool2); } @Test public void testNonSingleToolFactory() { - ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-abstract-spring-ctx.xml"); - - Worker worker3 = (Worker) context.getBean("worker3"); - Worker worker4 = (Worker) context.getBean("worker4"); - - assertThat(worker3.getNumber(), equalTo("50003")); - assertThat(worker4.getNumber(), equalTo("50004")); - assertTrue(worker3.getTool() != worker4.getTool()); + assertThat(tool3.getId(), equalTo(2)); + assertThat(tool4.getId(), equalTo(2)); + assertTrue(tool3 != tool4); } } diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java deleted file mode 100644 index 673bab6f63..0000000000 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanInitializeTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.factorybean; - -import org.junit.Test; -import org.springframework.beans.factory.BeanCreationException; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -public class FactoryBeanInitializeTest { - @Test(expected = BeanCreationException.class) - public void testInitializationToolFactory() { - new ClassPathXmlApplicationContext("classpath:factorybean-init-spring-ctx.xml"); - } - - @Test(expected = BeanCreationException.class) - public void testPostConstructToolFactory() { - new ClassPathXmlApplicationContext("classpath:factorybean-postconstruct-spring-ctx.xml"); - } -} diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java new file mode 100644 index 0000000000..1bd1f3d234 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java @@ -0,0 +1,27 @@ +package com.baeldung.factorybean; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = FactoryBeanAppConfig.class) +public class FactoryBeanJavaConfigTest { + + @Resource + private Tool tool; + @Resource(name = "&toolFactory") + private ToolFactory toolFactory; + + @Test + public void testConstructWorkerByJava() { + assertThat(tool.getId(), equalTo(2)); + assertThat(toolFactory.getFactoryId(), equalTo(7070)); + } +} diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java deleted file mode 100644 index d06448b63c..0000000000 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.baeldung.factorybean; - -import static org.hamcrest.core.IsEqual.equalTo; -import static org.junit.Assert.assertThat; - -import org.junit.Test; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -public class FactoryBeanTest { - @Test - public void testConstructWorkerByXml() { - ApplicationContext context = new ClassPathXmlApplicationContext("classpath:factorybean-spring-ctx.xml"); - - Worker worker = (Worker) context.getBean("worker"); - assertThat(worker.getNumber(), equalTo("1001")); - assertThat(worker.getTool().getId(), equalTo(1)); - assertThat(worker.getTool().getName(), equalTo("screwdriver")); - assertThat(worker.getTool().getPrice(), equalTo(1.5)); - - ToolFactory toolFactory = (ToolFactory) context.getBean("&tool"); - assertThat(toolFactory.getFactoryId(), equalTo(9090)); - } - - @Test - public void testConstructWorkerByJava() { - ApplicationContext context = new AnnotationConfigApplicationContext(FactoryBeanAppConfig.class); - - Worker worker = (Worker) context.getBean("worker"); - assertThat(worker.getNumber(), equalTo("1002")); - assertThat(worker.getTool().getId(), equalTo(2)); - assertThat(worker.getTool().getName(), equalTo("wrench")); - assertThat(worker.getTool().getPrice(), equalTo(3.7)); - - ToolFactory toolFactory = (ToolFactory) context.getBean("&tool"); - assertThat(toolFactory.getFactoryId(), equalTo(7070)); - } -} diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java new file mode 100644 index 0000000000..b479b231d9 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java @@ -0,0 +1,27 @@ +package com.baeldung.factorybean; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { "classpath:factorybean-spring-ctx.xml" }) +public class FactoryBeanXmlConfigTest { + + @Resource + private Tool tool; + @Resource(name = "&tool") + private ToolFactory toolFactory; + + @Test + public void testConstructWorkerByXml() { + assertThat(tool.getId(), equalTo(1)); + assertThat(toolFactory.getFactoryId(), equalTo(9090)); + } +} From 65c5535c7d6ef788d819b8c13ce03528be0b2def Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Sun, 27 Nov 2016 11:42:32 +0530 Subject: [PATCH 109/399] Added BAEL-425 Intro to Servets module named javax-servlets --- javax-servlets/pom.xml | 34 +++++++++++++++++++ .../src/main/java/com/root/FormServlet.java | 19 +++++++++++ .../test/java/com/root/FormServletTest.java | 34 +++++++++++++++++++ javax-servlets/web/WEB-INF/web.xml | 7 ++++ javax-servlets/web/index.jsp | 30 ++++++++++++++++ pom.xml | 1 + 6 files changed, 125 insertions(+) create mode 100644 javax-servlets/pom.xml create mode 100644 javax-servlets/src/main/java/com/root/FormServlet.java create mode 100644 javax-servlets/src/test/java/com/root/FormServletTest.java create mode 100644 javax-servlets/web/WEB-INF/web.xml create mode 100644 javax-servlets/web/index.jsp diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml new file mode 100644 index 0000000000..2d2e3a4b8a --- /dev/null +++ b/javax-servlets/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + com.root + ServletmavenExample + 1.0-SNAPSHOT + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + junit + junit + 4.12 + test + + + org.mockito + mockito-all + 1.10.19 + test + + + + + + \ No newline at end of file diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java new file mode 100644 index 0000000000..c8e8212f30 --- /dev/null +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -0,0 +1,19 @@ +package com.root; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@WebServlet(name = "FormServlet", urlPatterns = "/informationServlet") +public class FormServlet extends HttpServlet { + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + String userName = request.getParameter("userName"); + String userPlanet = request.getParameter("userPlanet"); + } +} diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/root/FormServletTest.java new file mode 100644 index 0000000000..12545317c6 --- /dev/null +++ b/javax-servlets/src/test/java/com/root/FormServletTest.java @@ -0,0 +1,34 @@ +package com.root; + +import org.junit.Test; +import org.mockito.Mockito; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import java.io.StringWriter; + +import static org.junit.Assert.*; + +/** + * Created by shubham on 27/11/16. + */ +public class FormServletTest extends Mockito { + + @Test + public void testFormServlet() throws Exception { + + HttpServletRequest request = mock(HttpServletRequest.class); + HttpServletResponse response = mock(HttpServletResponse.class); + + when(request.getParameter("userName")).thenReturn("baeldung"); + when(request.getParameter("userPlanet")).thenReturn("Mars"); + + PrintWriter writer = new PrintWriter(new StringWriter()); + when(response.getWriter()).thenReturn(writer); + + new FormServlet().doPost(request, response); + + assertTrue(request.getParameter("userName").contains("baeldung")); + } +} diff --git a/javax-servlets/web/WEB-INF/web.xml b/javax-servlets/web/WEB-INF/web.xml new file mode 100644 index 0000000000..66934d8fd3 --- /dev/null +++ b/javax-servlets/web/WEB-INF/web.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/javax-servlets/web/index.jsp b/javax-servlets/web/index.jsp new file mode 100644 index 0000000000..4054b1acf0 --- /dev/null +++ b/javax-servlets/web/index.jsp @@ -0,0 +1,30 @@ +<%-- + Created by IntelliJ IDEA. + User: shubham + Date: 26/11/16 + Time: 8:52 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Form + + + +
+ + Name:

+ Planet: + +

+ + +
+ + + diff --git a/pom.xml b/pom.xml index 77cf615a98..eacedf1e6a 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,7 @@ jackson java-cassandra + javax-servlets javaxval jee7 jjwt From b451fcfc02ed7e5d6bf30c77a2a3b1666029bfc8 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sun, 27 Nov 2016 10:43:50 +0100 Subject: [PATCH 110/399] Reformat CustomWebSecurityConfigurerAdapter --- .../CustomWebSecurityConfigurerAdapter.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java index 1901489305..db304edb36 100644 --- a/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java +++ b/spring-security-basic-auth/src/main/java/org/baeldung/security/filter/configuration/CustomWebSecurityConfigurerAdapter.java @@ -13,28 +13,27 @@ import org.springframework.security.web.authentication.www.BasicAuthenticationFi @Configuration @EnableWebSecurity public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { + @Autowired private MyBasicAuthenticationEntryPoint authenticationEntryPoint; @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) - throws Exception { - auth - .inMemoryAuthentication() - .withUser("user1").password("user1Pass") - .authorities("ROLE_USER"); + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication() + .withUser("user1").password("user1Pass") + .authorities("ROLE_USER"); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() - .antMatchers("/securityNone").permitAll() - .anyRequest().authenticated() - .and() - .httpBasic() - .authenticationEntryPoint(authenticationEntryPoint); + .antMatchers("/securityNone").permitAll() + .anyRequest().authenticated() + .and() + .httpBasic() + .authenticationEntryPoint(authenticationEntryPoint); http.addFilterAfter(new CustomFilter(), - BasicAuthenticationFilter.class); + BasicAuthenticationFilter.class); } } From fc64b7ed46b3daebe30a7c72f032765a0e21741d Mon Sep 17 00:00:00 2001 From: Hector Romero Date: Sun, 27 Nov 2016 06:18:12 -0600 Subject: [PATCH 111/399] BAEL-7: Join and Split Collections from and to String --- .../CollectionsToAndFromStringUnitTest.java | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 core-java/src/test/java/org/baeldung/java/collections/CollectionsToAndFromStringUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/collections/CollectionsToAndFromStringUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/CollectionsToAndFromStringUnitTest.java new file mode 100644 index 0000000000..5f4b3b417f --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/collections/CollectionsToAndFromStringUnitTest.java @@ -0,0 +1,110 @@ +package org.baeldung.java.collections; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.junit.Test; + +public class CollectionsToAndFromStringUnitTest { + @Test + public void whenConvertArrayToString_thenConverted() { + String[] colors = new String[] { "Red", "Blue", "Green", "Yellow" }; + String result = Arrays.stream(colors).collect(Collectors.joining(", ")); + + assertEquals(result, "Red, Blue, Green, Yellow"); + } + + @Test + public void whenConvertListToString_thenConverted() { + List directions = Arrays.asList("Left", "Right", "Top", "Bottom"); + String result = directions.stream().collect(Collectors.joining(", ")); + + assertEquals(result, "Left, Right, Top, Bottom"); + } + + @Test + public void whenConvertMapToString_thenConverted() { + Map users = new HashMap<>(); + users.put(1, "John Doe"); + users.put(2, "Paul Smith"); + users.put(3, "Susan Anderson"); + + String result = users.entrySet().stream() + .map(entry -> entry.getKey() + " = " + entry.getValue()) + .collect(Collectors.joining(", ")); + + assertEquals(result, "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"); + } + + @Test + public void whenConvertNestedListToString_thenConverted() { + List> nested = new ArrayList<>(); + nested.add(Arrays.asList("Left", "Right", "Top", "Bottom")); + nested.add(Arrays.asList("Red", "Blue", "Green", "Yellow")); + + String result = nested.stream() + .map(nextList -> nextList.stream() + .collect(Collectors.joining("-"))) + .collect(Collectors.joining("; ")); + + assertEquals(result, "Left-Right-Top-Bottom; Red-Blue-Green-Yellow"); + } + + @Test + public void whenConvertListToStringAndSkipNull_thenConverted() { + List fruits = Arrays.asList("Apple", "Orange", null, "Grape"); + String result = fruits.stream() + .filter(next -> next != null) + .collect(Collectors.joining(", ")); + + assertEquals(result, "Apple, Orange, Grape"); + } + + @Test + public void whenConvertStringToArray_thenConverted() { + String colors = "Red, Blue, Green, Yellow"; + String[] result = colors.split(", "); + + assertArrayEquals(result, new String[] { "Red", "Blue", "Green", "Yellow" }); + } + + @Test + public void whenConvertStringToList_thenConverted() { + String colors = "Left, Right, Top, Bottom"; + List result = Arrays.asList(colors.split(", ")); + + assertTrue(result.equals(Arrays.asList("Left", "Right", "Top", "Bottom"))); + } + + @Test + public void whenConvertStringToMap_thenConverted() { + String users = "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"; + + Map result = Arrays.stream(users.split(", ")) + .map(next -> next.split(" = ")) + .collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); + + assertEquals(result.get(1), "John Doe"); + assertEquals(result.get(2), "Paul Smith"); + assertEquals(result.get(3), "Susan Anderson"); + } + + @Test + public void whenConvertListToStringMultipleSeparators_thenConverted() { + String fruits = "Apple. , Orange, Grape. Lemon"; + + List result = Arrays.stream(fruits.split("[,|.]")) + .map(String::trim).filter(next -> !next.isEmpty()) + .collect(Collectors.toList()); + + assertTrue(result.equals(Arrays.asList("Apple", "Orange", "Grape", "Lemon"))); + } +} From 678e47dc1a9313cc3586c72bc17d094fe0ff9aaf Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sun, 27 Nov 2016 18:26:14 +0100 Subject: [PATCH 112/399] Refactor CollectionsConcatenateUnitTest --- .../CollectionsConcatenateUnitTest.java | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java index 3ee08767bd..0d913db1bd 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java @@ -1,21 +1,15 @@ package org.baeldung.java.collections; -import static java.util.Arrays.asList; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.junit.Assert; -import org.junit.Test; - import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import org.junit.Assert; +import org.junit.Test; + +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static java.util.Arrays.asList; public class CollectionsConcatenateUnitTest { @@ -63,16 +57,16 @@ public class CollectionsConcatenateUnitTest { Assert.assertEquals(Arrays.asList("S", "T", "U", "V"), collectionCombined); } - public static Iterable concat(Iterable list1, Iterable list2) { + public static Iterable concat(Iterable i1, Iterable i2) { return new Iterable() { public Iterator iterator() { return new Iterator() { - protected Iterator listIterator = list1.iterator(); - protected Boolean checkedHasNext; - protected E nextValue; + Iterator listIterator = i1.iterator(); + Boolean checkedHasNext; + E nextValue; private boolean startTheSecond; - public void theNext() { + void theNext() { if (listIterator.hasNext()) { checkedHasNext = true; nextValue = listIterator.next(); @@ -80,7 +74,7 @@ public class CollectionsConcatenateUnitTest { checkedHasNext = false; else { startTheSecond = true; - listIterator = list2.iterator(); + listIterator = i2.iterator(); theNext(); } } @@ -107,7 +101,7 @@ public class CollectionsConcatenateUnitTest { } public static List makeListFromIterable(Iterable iter) { - List list = new ArrayList(); + List list = new ArrayList<>(); for (E item : iter) { list.add(item); } From aecc8503f235e90b5421d4044b64d3e1238dfa09 Mon Sep 17 00:00:00 2001 From: tschiman Date: Sun, 27 Nov 2016 16:02:24 -0700 Subject: [PATCH 113/399] BAEL-89 Some final code changes for the article --- spring-session/pom.xml | 2 +- .../java/com/baeldung/spring/session/SessionController.java | 2 +- .../java/com/baeldung/spring/session/SessionControllerTest.java | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-session/pom.xml b/spring-session/pom.xml index cf6fc71be2..848fdfc405 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -6,7 +6,7 @@ spring-session 1.0.0-SNAPSHOT - pom + jar org.springframework.boot diff --git a/spring-session/src/main/java/com/baeldung/spring/session/SessionController.java b/spring-session/src/main/java/com/baeldung/spring/session/SessionController.java index 224196d8a0..ac0479afed 100644 --- a/spring-session/src/main/java/com/baeldung/spring/session/SessionController.java +++ b/spring-session/src/main/java/com/baeldung/spring/session/SessionController.java @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController public class SessionController { @RequestMapping("/") - public String helloTomcatAdmin() { + public String helloAdmin() { return "hello admin"; } } diff --git a/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java b/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java index 5775710410..42d12112a2 100644 --- a/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java +++ b/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java @@ -83,5 +83,4 @@ public class SessionControllerTest { return new HttpEntity<>(headers); } - } \ No newline at end of file From 115f70c9173590414c8a5dca946a758aa0d66e49 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Mon, 28 Nov 2016 09:36:42 +0530 Subject: [PATCH 114/399] RequestDispatcher added to servlet --- .../META-INF/MANIFEST.MF | 5 +++ .../WEB-INF/web.xml | 7 ++++ .../index.jsp | 26 ++++++++++++++ .../src/main/java/com/root/FormServlet.java | 31 +++++++++++++++-- javax-servlets/web/index.jsp | 34 ++++++++----------- 5 files changed, 81 insertions(+), 22 deletions(-) create mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF create mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml create mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..e8d1783f02 --- /dev/null +++ b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: shubham +Created-By: IntelliJ IDEA +Build-Jdk: 1.8.0_91 + diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml new file mode 100644 index 0000000000..66934d8fd3 --- /dev/null +++ b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp new file mode 100644 index 0000000000..5a2e018a41 --- /dev/null +++ b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp @@ -0,0 +1,26 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Calculate BMI + + + +
+ + + + + + + + + + + + +
Your Weight (kg) :
Your Height (m) :
+

${bmi}

+
+ + + diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index c8e8212f30..5c11a586d3 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -1,5 +1,6 @@ package com.root; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -7,13 +8,37 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "FormServlet", urlPatterns = "/informationServlet") +@WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { + @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String userName = request.getParameter("userName"); - String userPlanet = request.getParameter("userPlanet"); + String height = request.getParameter("height"); + String weight = request.getParameter("weight"); + + try { + Double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); + + request.setAttribute("bmi", bmi); + RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); + dispatcher.forward(request, response); + } catch (Exception e) { + + response.sendRedirect("index.jsp"); + } + } + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + // do something else here + } + + private Double calculateBMI(Double weight, Double height) { + + return weight / (height * height); } } diff --git a/javax-servlets/web/index.jsp b/javax-servlets/web/index.jsp index 4054b1acf0..5a2e018a41 100644 --- a/javax-servlets/web/index.jsp +++ b/javax-servlets/web/index.jsp @@ -1,29 +1,25 @@ -<%-- - Created by IntelliJ IDEA. - User: shubham - Date: 26/11/16 - Time: 8:52 PM - To change this template use File | Settings | File Templates. ---%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - Form + Calculate BMI -
+ - Name:

- Planet: - -

- - + + + + + + + + + + + +
Your Weight (kg) :
Your Height (m) :
+

${bmi}

From de8038fe4d2b9ed8e4cd51cbbb2589c9533605f6 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Mon, 28 Nov 2016 11:03:13 +0530 Subject: [PATCH 115/399] Test made using Mockito and JUnit --- .../src/main/java/com/root/FormServlet.java | 17 +++---- .../test/java/com/root/FormServletTest.java | 45 +++++++++++++------ 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 5c11a586d3..be83cece8f 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -7,6 +7,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.PrintWriter; @WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { @@ -19,9 +20,12 @@ public class FormServlet extends HttpServlet { String weight = request.getParameter("weight"); try { - Double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); - + double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); request.setAttribute("bmi", bmi); + + PrintWriter out= response.getWriter(); + out.write(String.valueOf(bmi)); + RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); } catch (Exception e) { @@ -30,15 +34,8 @@ public class FormServlet extends HttpServlet { } } - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - - // do something else here - } - private Double calculateBMI(Double weight, Double height) { return weight / (height * height); } -} +} \ No newline at end of file diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/root/FormServletTest.java index 12545317c6..2d6ce22db5 100644 --- a/javax-servlets/src/test/java/com/root/FormServletTest.java +++ b/javax-servlets/src/test/java/com/root/FormServletTest.java @@ -1,34 +1,51 @@ package com.root; +import org.junit.Before; import org.junit.Test; -import org.mockito.Mockito; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.io.StringWriter; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; -/** - * Created by shubham on 27/11/16. - */ -public class FormServletTest extends Mockito { +public class FormServletTest { + + @Mock + HttpServletRequest request; + + @Mock + HttpServletResponse response; + + @Mock + RequestDispatcher requestDispatcher; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } @Test public void testFormServlet() throws Exception { - HttpServletRequest request = mock(HttpServletRequest.class); - HttpServletResponse response = mock(HttpServletResponse.class); + when(request.getParameter("height")).thenReturn("2"); + when(request.getParameter("weight")).thenReturn("80"); - when(request.getParameter("userName")).thenReturn("baeldung"); - when(request.getParameter("userPlanet")).thenReturn("Mars"); - - PrintWriter writer = new PrintWriter(new StringWriter()); - when(response.getWriter()).thenReturn(writer); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + when(response.getWriter()).thenReturn(pw); new FormServlet().doPost(request, response); - assertTrue(request.getParameter("userName").contains("baeldung")); + verify(request).setAttribute("bmi", 20.0); + + String result = sw.getBuffer().toString().trim(); + assertEquals("20.0", result); } } From cfdaace30bcf6060ee203db9d31eb4b47ab945bf Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Sun, 27 Nov 2016 11:42:32 +0530 Subject: [PATCH 116/399] Added BAEL-425 Intro to Servets module named javax-servlets --- javax-servlets/pom.xml | 34 +++++++++++++++++++ .../src/main/java/com/root/FormServlet.java | 19 +++++++++++ .../test/java/com/root/FormServletTest.java | 34 +++++++++++++++++++ javax-servlets/web/WEB-INF/web.xml | 7 ++++ javax-servlets/web/index.jsp | 30 ++++++++++++++++ pom.xml | 1 + 6 files changed, 125 insertions(+) create mode 100644 javax-servlets/pom.xml create mode 100644 javax-servlets/src/main/java/com/root/FormServlet.java create mode 100644 javax-servlets/src/test/java/com/root/FormServletTest.java create mode 100644 javax-servlets/web/WEB-INF/web.xml create mode 100644 javax-servlets/web/index.jsp diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml new file mode 100644 index 0000000000..2d2e3a4b8a --- /dev/null +++ b/javax-servlets/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + com.root + ServletmavenExample + 1.0-SNAPSHOT + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + junit + junit + 4.12 + test + + + org.mockito + mockito-all + 1.10.19 + test + + + + + + \ No newline at end of file diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java new file mode 100644 index 0000000000..c8e8212f30 --- /dev/null +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -0,0 +1,19 @@ +package com.root; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@WebServlet(name = "FormServlet", urlPatterns = "/informationServlet") +public class FormServlet extends HttpServlet { + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + String userName = request.getParameter("userName"); + String userPlanet = request.getParameter("userPlanet"); + } +} diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/root/FormServletTest.java new file mode 100644 index 0000000000..12545317c6 --- /dev/null +++ b/javax-servlets/src/test/java/com/root/FormServletTest.java @@ -0,0 +1,34 @@ +package com.root; + +import org.junit.Test; +import org.mockito.Mockito; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import java.io.StringWriter; + +import static org.junit.Assert.*; + +/** + * Created by shubham on 27/11/16. + */ +public class FormServletTest extends Mockito { + + @Test + public void testFormServlet() throws Exception { + + HttpServletRequest request = mock(HttpServletRequest.class); + HttpServletResponse response = mock(HttpServletResponse.class); + + when(request.getParameter("userName")).thenReturn("baeldung"); + when(request.getParameter("userPlanet")).thenReturn("Mars"); + + PrintWriter writer = new PrintWriter(new StringWriter()); + when(response.getWriter()).thenReturn(writer); + + new FormServlet().doPost(request, response); + + assertTrue(request.getParameter("userName").contains("baeldung")); + } +} diff --git a/javax-servlets/web/WEB-INF/web.xml b/javax-servlets/web/WEB-INF/web.xml new file mode 100644 index 0000000000..66934d8fd3 --- /dev/null +++ b/javax-servlets/web/WEB-INF/web.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/javax-servlets/web/index.jsp b/javax-servlets/web/index.jsp new file mode 100644 index 0000000000..4054b1acf0 --- /dev/null +++ b/javax-servlets/web/index.jsp @@ -0,0 +1,30 @@ +<%-- + Created by IntelliJ IDEA. + User: shubham + Date: 26/11/16 + Time: 8:52 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Form + + + +
+ + Name:

+ Planet: + +

+ + +
+ + + diff --git a/pom.xml b/pom.xml index 77cf615a98..eacedf1e6a 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,7 @@ jackson java-cassandra + javax-servlets javaxval jee7 jjwt From fff5f24633a4e7e57053b7833c2731c4997a7b1f Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Mon, 28 Nov 2016 09:36:42 +0530 Subject: [PATCH 117/399] RequestDispatcher added to servlet --- .../META-INF/MANIFEST.MF | 5 +++ .../WEB-INF/web.xml | 7 ++++ .../index.jsp | 26 ++++++++++++++ .../src/main/java/com/root/FormServlet.java | 31 +++++++++++++++-- javax-servlets/web/index.jsp | 34 ++++++++----------- 5 files changed, 81 insertions(+), 22 deletions(-) create mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF create mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml create mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..e8d1783f02 --- /dev/null +++ b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: shubham +Created-By: IntelliJ IDEA +Build-Jdk: 1.8.0_91 + diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml new file mode 100644 index 0000000000..66934d8fd3 --- /dev/null +++ b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp new file mode 100644 index 0000000000..5a2e018a41 --- /dev/null +++ b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp @@ -0,0 +1,26 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Calculate BMI + + + +
+ + + + + + + + + + + + +
Your Weight (kg) :
Your Height (m) :
+

${bmi}

+
+ + + diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index c8e8212f30..5c11a586d3 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -1,5 +1,6 @@ package com.root; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -7,13 +8,37 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "FormServlet", urlPatterns = "/informationServlet") +@WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { + @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String userName = request.getParameter("userName"); - String userPlanet = request.getParameter("userPlanet"); + String height = request.getParameter("height"); + String weight = request.getParameter("weight"); + + try { + Double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); + + request.setAttribute("bmi", bmi); + RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); + dispatcher.forward(request, response); + } catch (Exception e) { + + response.sendRedirect("index.jsp"); + } + } + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + // do something else here + } + + private Double calculateBMI(Double weight, Double height) { + + return weight / (height * height); } } diff --git a/javax-servlets/web/index.jsp b/javax-servlets/web/index.jsp index 4054b1acf0..5a2e018a41 100644 --- a/javax-servlets/web/index.jsp +++ b/javax-servlets/web/index.jsp @@ -1,29 +1,25 @@ -<%-- - Created by IntelliJ IDEA. - User: shubham - Date: 26/11/16 - Time: 8:52 PM - To change this template use File | Settings | File Templates. ---%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - Form + Calculate BMI -
+ - Name:

- Planet: - -

- - + + + + + + + + + + + +
Your Weight (kg) :
Your Height (m) :
+

${bmi}

From 5e2a6a97fafbc4c4d9a9975020edb64cc4e10439 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Mon, 28 Nov 2016 11:03:13 +0530 Subject: [PATCH 118/399] Test made using Mockito and JUnit --- .../src/main/java/com/root/FormServlet.java | 17 +++---- .../test/java/com/root/FormServletTest.java | 45 +++++++++++++------ 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 5c11a586d3..be83cece8f 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -7,6 +7,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.PrintWriter; @WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { @@ -19,9 +20,12 @@ public class FormServlet extends HttpServlet { String weight = request.getParameter("weight"); try { - Double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); - + double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); request.setAttribute("bmi", bmi); + + PrintWriter out= response.getWriter(); + out.write(String.valueOf(bmi)); + RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); } catch (Exception e) { @@ -30,15 +34,8 @@ public class FormServlet extends HttpServlet { } } - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - - // do something else here - } - private Double calculateBMI(Double weight, Double height) { return weight / (height * height); } -} +} \ No newline at end of file diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/root/FormServletTest.java index 12545317c6..2d6ce22db5 100644 --- a/javax-servlets/src/test/java/com/root/FormServletTest.java +++ b/javax-servlets/src/test/java/com/root/FormServletTest.java @@ -1,34 +1,51 @@ package com.root; +import org.junit.Before; import org.junit.Test; -import org.mockito.Mockito; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.io.StringWriter; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; -/** - * Created by shubham on 27/11/16. - */ -public class FormServletTest extends Mockito { +public class FormServletTest { + + @Mock + HttpServletRequest request; + + @Mock + HttpServletResponse response; + + @Mock + RequestDispatcher requestDispatcher; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } @Test public void testFormServlet() throws Exception { - HttpServletRequest request = mock(HttpServletRequest.class); - HttpServletResponse response = mock(HttpServletResponse.class); + when(request.getParameter("height")).thenReturn("2"); + when(request.getParameter("weight")).thenReturn("80"); - when(request.getParameter("userName")).thenReturn("baeldung"); - when(request.getParameter("userPlanet")).thenReturn("Mars"); - - PrintWriter writer = new PrintWriter(new StringWriter()); - when(response.getWriter()).thenReturn(writer); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + when(response.getWriter()).thenReturn(pw); new FormServlet().doPost(request, response); - assertTrue(request.getParameter("userName").contains("baeldung")); + verify(request).setAttribute("bmi", 20.0); + + String result = sw.getBuffer().toString().trim(); + assertEquals("20.0", result); } } From 13fdc6201db3dffd66dd2314068cf3e5560e1149 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Mon, 28 Nov 2016 10:50:23 -0500 Subject: [PATCH 119/399] Converted tabs to spaces. Upped spring-boot version --- spring-boot/pom.xml | 301 ++++++++++++++++++++++---------------------- 1 file changed, 150 insertions(+), 151 deletions(-) diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index a2555259b0..02f33f8871 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -1,131 +1,130 @@ - 4.0.0 - com.baeldung - spring-boot - 0.0.1-SNAPSHOT - war - Spring Boot Actuator - This is simple boot application for Spring boot actuator test + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + spring-boot + 0.0.1-SNAPSHOT + war + Spring Boot Actuator + This is simple boot application for Spring boot actuator test - - - org.springframework.boot - spring-boot-starter-parent - 1.4.0.RC1 - - + + + org.springframework.boot + spring-boot-starter-parent + 1.4.2.RELEASE + - - - org.baeldung.boot.DemoApplication - UTF-8 - 1.8 - 4.3.1.RELEASE - + + + org.baeldung.boot.DemoApplication + UTF-8 + 1.8 + 4.3.1.RELEASE + - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - org.springframework.boot - spring-boot-starter-web - + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + - - org.springframework.boot - spring-boot-starter-data-jpa - + + org.springframework.boot + spring-boot-starter-data-jpa + - - org.springframework.boot - spring-boot-starter-actuator - + + org.springframework.boot + spring-boot-starter-actuator + - - org.springframework.boot - spring-boot-starter-security - + + org.springframework.boot + spring-boot-starter-security + - - io.dropwizard.metrics - metrics-core - + + io.dropwizard.metrics + metrics-core + - - com.h2database - h2 - + + com.h2database + h2 + - - org.springframework.boot - spring-boot-starter-test - test - + + org.springframework.boot + spring-boot-starter-test + test + - - org.springframework.boot - spring-boot-starter - - - com.jayway.jsonpath - json-path - test - - - org.springframework.boot - spring-boot-starter-mail - - - org.subethamail - subethasmtp - 3.1.7 - test - - - - org.webjars - bootstrap - 3.3.7-1 - - - org.webjars - jquery - 3.1.1 - - + + org.springframework.boot + spring-boot-starter + + + com.jayway.jsonpath + json-path + test + + + org.springframework.boot + spring-boot-starter-mail + + + org.subethamail + subethasmtp + 3.1.7 + test + - - spring-boot - - - src/main/resources - true - - + + org.webjars + bootstrap + 3.3.7-1 + + + org.webjars + jquery + 3.1.1 + + - + + spring-boot + + + src/main/resources + true + + - - org.springframework.boot - spring-boot-maven-plugin - + - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - + + org.springframework.boot + spring-boot-maven-plugin + - - org.apache.maven.plugins - maven-war-plugin - + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-war-plugin + pl.project13.maven @@ -143,10 +142,10 @@ - + - +
@@ -182,42 +181,42 @@ - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + From 6da0057ef5f5329e8bd473d4a1e846cd77aa2493 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 00:18:21 +0800 Subject: [PATCH 120/399] Create pom.xml --- spring-mvc-handlers/pom.xml | 1 + 1 file changed, 1 insertion(+) create mode 100644 spring-mvc-handlers/pom.xml diff --git a/spring-mvc-handlers/pom.xml b/spring-mvc-handlers/pom.xml new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/spring-mvc-handlers/pom.xml @@ -0,0 +1 @@ + From 576533baf53579964e43f008506fa2181026ead4 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 00:22:42 +0800 Subject: [PATCH 121/399] Updated the file --- spring-mvc-handlers/pom.xml | 68 +++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/spring-mvc-handlers/pom.xml b/spring-mvc-handlers/pom.xml index 8b13789179..b77aaa3173 100644 --- a/spring-mvc-handlers/pom.xml +++ b/spring-mvc-handlers/pom.xml @@ -1 +1,69 @@ + + 4.0.0 + com.baeldung + SpringMVCHandlers + war + 0.0.1-SNAPSHOT + SpringMVCHandlers Maven Webapp + http://maven.apache.org + + 4.3.4.RELEASE + 3.5.1 + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + commons-logging + commons-logging + 1.2 + + + org.springframework + spring-webmvc + ${springframework.version} + + + org.springframework + spring-context + ${springframework.version} + + + org.springframework + spring-core + ${springframework.version} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-war-plugin + 2.4 + + src/main/webapp + springMVCHandlers + false + + + + + springMVCHandlers + + From 2e7d05440c3a3306fd85305cc6e6de2f434a170d Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 00:52:02 +0800 Subject: [PATCH 122/399] Delete pom.xml --- spring-mvc-handlers/pom.xml | 69 ------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 spring-mvc-handlers/pom.xml diff --git a/spring-mvc-handlers/pom.xml b/spring-mvc-handlers/pom.xml deleted file mode 100644 index b77aaa3173..0000000000 --- a/spring-mvc-handlers/pom.xml +++ /dev/null @@ -1,69 +0,0 @@ - - 4.0.0 - com.baeldung - SpringMVCHandlers - war - 0.0.1-SNAPSHOT - SpringMVCHandlers Maven Webapp - http://maven.apache.org - - - 4.3.4.RELEASE - 3.5.1 - - - - - javax.servlet - javax.servlet-api - 3.1.0 - - - commons-logging - commons-logging - 1.2 - - - org.springframework - spring-webmvc - ${springframework.version} - - - org.springframework - spring-context - ${springframework.version} - - - org.springframework - spring-core - ${springframework.version} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.7 - 1.7 - - - - org.apache.maven.plugins - maven-war-plugin - 2.4 - - src/main/webapp - springMVCHandlers - false - - - - - springMVCHandlers - - From 977333c9a312759d1dd537434001bef6f4ed869a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Garc=C3=ADa=20Heredero?= Date: Mon, 28 Nov 2016 18:43:10 +0100 Subject: [PATCH 123/399] BAEL-228 (#863) * Update HtmlUnitAndJUnitTest.java * Update HtmlUnitWebScraping.java * Update HtmlUnitAndSpringTest.java * Create message.html * Update HtmlUnitAndJUnitTest.java * Delete HtmlUnitAndSpringIntegrationTest.java * Delete HtmlUnitTest.java --- .../webapp/WEB-INF/templates/message.html | 15 ++++ .../htmlunit/HtmlUnitAndJUnitTest.java | 31 ++++++++ .../HtmlUnitAndSpringIntegrationTest.java | 72 ------------------- .../htmlunit/HtmlUnitAndSpringTest.java | 61 ++++++++++++++++ .../com/baeldung/htmlunit/HtmlUnitTest.java | 21 ------ .../htmlunit/HtmlUnitWebScraping.java | 46 ++++++------ 6 files changed, 131 insertions(+), 115 deletions(-) create mode 100644 spring-mvc-java/src/main/webapp/WEB-INF/templates/message.html create mode 100644 spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java delete mode 100644 spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java create mode 100644 spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java delete mode 100644 spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitTest.java diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/templates/message.html b/spring-mvc-java/src/main/webapp/WEB-INF/templates/message.html new file mode 100644 index 0000000000..291e8312ae --- /dev/null +++ b/spring-mvc-java/src/main/webapp/WEB-INF/templates/message.html @@ -0,0 +1,15 @@ + + + + + + +
+ Message: + +
+ + + + diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java new file mode 100644 index 0000000000..8395a49581 --- /dev/null +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java @@ -0,0 +1,31 @@ +package com.baeldung.htmlunit; + +import org.junit.Assert; +import org.junit.Test; + +import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.HtmlPage; + +public class HtmlUnitAndJUnitTest { + + @Before + public void init() throws Exception { + webClient = new WebClient(); + } + + @After + public void close() throws Exception { + webClient.close(); + } + + @Test + public void givenAClient_whenEnteringBaeldung_thenPageTitleIsOk() + throws Exception { + webClient.getOptions().setThrowExceptionOnScriptError(false); + HtmlPage page = webClient.getPage("http://www.baeldung.com/"); + Assert.assertEquals( + "Baeldung | Java, Spring and Web Development tutorials", + page.getTitleText()); + } + +} diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java deleted file mode 100644 index 406975b6cc..0000000000 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringIntegrationTest.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.baeldung.htmlunit; - -import java.io.IOException; -import java.net.MalformedURLException; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.test.web.servlet.htmlunit.MockMvcWebClientBuilder; -import org.springframework.web.context.WebApplicationContext; - -import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; -import com.gargoylesoftware.htmlunit.WebClient; -import com.gargoylesoftware.htmlunit.html.HtmlForm; -import com.gargoylesoftware.htmlunit.html.HtmlPage; -import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; -import com.gargoylesoftware.htmlunit.html.HtmlTextInput; - -@RunWith(SpringJUnit4ClassRunner.class) -@WebAppConfiguration -@ContextConfiguration(classes = { TestConfig.class }) -public class HtmlUnitAndSpringIntegrationTest { - - @Autowired - private WebApplicationContext wac; - - private WebClient webClient; - - @Before - public void setup() { - webClient = MockMvcWebClientBuilder.webAppContextSetup(wac).build(); - } - - // - - @Test - @Ignore("Related view message.html does not exist check MessageController") - public void givenAMessage_whenSent_thenItShows() throws FailingHttpStatusCodeException, MalformedURLException, IOException { - final String text = "Hello world!"; - final HtmlPage page = webClient.getPage("http://localhost/message/showForm"); - System.out.println(page.asXml()); - - final HtmlTextInput messageText = page.getHtmlElementById("message"); - messageText.setValueAttribute(text); - - final HtmlForm form = page.getForms().get(0); - final HtmlSubmitInput submit = form.getOneHtmlElementByAttribute("input", "type", "submit"); - final HtmlPage newPage = submit.click(); - - final String receivedText = newPage.getHtmlElementById("received").getTextContent(); - - Assert.assertEquals(receivedText, text); - System.out.println(newPage.asXml()); - } - - @Test - public void givenAClient_whenEnteringBaeldung_thenPageTitleIsCorrect() throws Exception { - try (final WebClient client = new WebClient()) { - webClient.getOptions().setThrowExceptionOnScriptError(false); - - final HtmlPage page = webClient.getPage("http://www.baeldung.com/"); - Assert.assertEquals("Baeldung | Java, Spring and Web Development tutorials", page.getTitleText()); - } - } - -} diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java new file mode 100644 index 0000000000..45e441f47f --- /dev/null +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java @@ -0,0 +1,61 @@ +package com.baeldung.htmlunit; + +import java.io.IOException; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.htmlunit.MockMvcWebClientBuilder; +import org.springframework.web.context.WebApplicationContext; + +import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; +import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.HtmlForm; +import com.gargoylesoftware.htmlunit.html.HtmlPage; +import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; +import com.gargoylesoftware.htmlunit.html.HtmlTextInput; + +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration(classes = { TestConfig.class }) +public class HtmlUnitAndSpringTest { + + @Autowired + private WebApplicationContext wac; + + private WebClient webClient; + + @Before + public void setup() { + webClient = MockMvcWebClientBuilder + .webAppContextSetup(wac).build(); + } + + @Test + public void givenAMessage_whenSent_thenItShows() throws Exception { + String text = "Hello world!"; + HtmlPage page; + + String url = "http://localhost/message/showForm"; + page = webClient.getPage(url); + + HtmlTextInput messageText = page.getHtmlElementById("message"); + messageText.setValueAttribute(text); + + HtmlForm form = page.getForms().get(0); + HtmlSubmitInput submit = form.getOneHtmlElementByAttribute( + "input", "type", "submit"); + HtmlPage newPage = submit.click(); + + String receivedText = newPage.getHtmlElementById("received") + .getTextContent(); + + Assert.assertEquals(receivedText, text); + } +} diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitTest.java deleted file mode 100644 index 6a7e961eb1..0000000000 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.htmlunit; - -import org.junit.Assert; -import org.junit.Test; - -import com.gargoylesoftware.htmlunit.WebClient; -import com.gargoylesoftware.htmlunit.html.HtmlPage; - -public class HtmlUnitTest { - - @Test - public void givenAClient_whenEnteringBaeldung_thenPageTitleIsCorrect() throws Exception { - try (final WebClient webClient = new WebClient()) { - webClient.getOptions().setThrowExceptionOnScriptError(false); - - final HtmlPage page = webClient.getPage("http://www.baeldung.com/"); - Assert.assertEquals("Baeldung | Java, Spring and Web Development tutorials", page.getTitleText()); - } - } - -} diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java index 9919d7571d..f97bedddef 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java @@ -5,36 +5,38 @@ import java.util.List; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlAnchor; import com.gargoylesoftware.htmlunit.html.HtmlHeading1; -import com.gargoylesoftware.htmlunit.html.HtmlHeading2; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class HtmlUnitWebScraping { - public static void main(final String[] args) throws Exception { - try (final WebClient webClient = new WebClient()) { + private WebClient webClient; - webClient.getOptions().setCssEnabled(false); - webClient.getOptions().setJavaScriptEnabled(false); + @Before + public void init() throws Exception { + webClient = new WebClient(); + } - final HtmlPage page = webClient.getPage("http://www.baeldung.com/full_archive"); - final HtmlAnchor latestPostLink = (HtmlAnchor) page.getByXPath("(//ul[@class='car-monthlisting']/li)[1]/a").get(0); + @After + public void close() throws Exception { + webClient.close(); + } - System.out.println("Entering: " + latestPostLink.getHrefAttribute()); + @Test + public void givenBaeldungArchive_whenRetrievingArticle_thenHasH1() + throws Exception { + webClient.getOptions().setCssEnabled(false); + webClient.getOptions().setJavaScriptEnabled(false); - final HtmlPage postPage = latestPostLink.click(); + String url = "http://www.baeldung.com/full_archive"; + HtmlPage page = webClient.getPage(url); + String xpath = "(//ul[@class='car-monthlisting']/li)[1]/a"; + HtmlAnchor latestPostLink + = (HtmlAnchor) page.getByXPath(xpath).get(0); + HtmlPage postPage = latestPostLink.click(); - final HtmlHeading1 heading1 = (HtmlHeading1) postPage.getByXPath("//h1").get(0); - System.out.println("Title: " + heading1.getTextContent()); - - final List headings2 = (List) postPage.getByXPath("//h2"); - - final StringBuilder sb = new StringBuilder(heading1.getTextContent()); - for (final HtmlHeading2 h2 : headings2) { - sb.append("\n").append(h2.getTextContent()); - } - - System.out.println(sb.toString()); - } - } + List h1 + = (List) postPage.getByXPath("//h1"); + Assert.assertTrue(h1.size() > 0); + } } From 7dee229acdd6f66f36825e69f3df2d780a5f6d48 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 01:51:57 +0800 Subject: [PATCH 124/399] Initial Commit --- SpringMVCHandlers/.classpath | 27 +++++++ SpringMVCHandlers/.project | 42 +++++++++++ SpringMVCHandlers/pom.xml | 70 +++++++++++++++++++ ...MethodHandlerAdapterExampleController.java | 17 +++++ ...appingHandlerAdapterExampleController.java | 17 +++++ ...rollerHandlerAdapterExampleController.java | 21 ++++++ .../src/main/resources/spring-servlet.xml | 31 ++++++++ .../src/main/webapp/WEB-INF/Greeting.jsp | 5 ++ .../src/main/webapp/WEB-INF/web.xml | 19 +++++ 9 files changed, 249 insertions(+) create mode 100644 SpringMVCHandlers/.classpath create mode 100644 SpringMVCHandlers/.project create mode 100644 SpringMVCHandlers/pom.xml create mode 100644 SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java create mode 100644 SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java create mode 100644 SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java create mode 100644 SpringMVCHandlers/src/main/resources/spring-servlet.xml create mode 100644 SpringMVCHandlers/src/main/webapp/WEB-INF/Greeting.jsp create mode 100644 SpringMVCHandlers/src/main/webapp/WEB-INF/web.xml diff --git a/SpringMVCHandlers/.classpath b/SpringMVCHandlers/.classpath new file mode 100644 index 0000000000..c4978de982 --- /dev/null +++ b/SpringMVCHandlers/.classpath @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SpringMVCHandlers/.project b/SpringMVCHandlers/.project new file mode 100644 index 0000000000..25a99f0f7f --- /dev/null +++ b/SpringMVCHandlers/.project @@ -0,0 +1,42 @@ + + + SpringMVCHandlers + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/SpringMVCHandlers/pom.xml b/SpringMVCHandlers/pom.xml new file mode 100644 index 0000000000..0074898767 --- /dev/null +++ b/SpringMVCHandlers/pom.xml @@ -0,0 +1,70 @@ + + 4.0.0 + com.baeldung + SpringMVCHandlers + war + 0.0.1-SNAPSHOT + SpringMVCHandlers Maven Webapp + http://maven.apache.org + + + 4.3.4.RELEASE + 3.5.1 + 2.6 + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + commons-logging + commons-logging + 1.2 + + + org.springframework + spring-webmvc + ${springframework.version} + + + org.springframework + spring-context + ${springframework.version} + + + org.springframework + spring-core + ${springframework.version} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + src/main/webapp + springMVCHandlers + false + + + + + springMVCHandlers + + diff --git a/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java b/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java new file mode 100644 index 0000000000..9837467e19 --- /dev/null +++ b/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java @@ -0,0 +1,17 @@ +package com.baeldung.spring.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class AnnotationMethodHandlerAdapterExampleController { + @RequestMapping("/annotedName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + + model.addObject("message", "Dinesh"); + + return model; + } +} diff --git a/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java b/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java new file mode 100644 index 0000000000..012ba555dc --- /dev/null +++ b/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java @@ -0,0 +1,17 @@ +package com.baeldung.spring.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class RequestMappingHandlerAdapterExampleController { + @RequestMapping("/requestName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + + model.addObject("message", "Madhwal"); + + return model; + } +} diff --git a/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java b/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java new file mode 100644 index 0000000000..59d932812c --- /dev/null +++ b/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java @@ -0,0 +1,21 @@ +package com.baeldung.spring.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.AbstractController; + +public class SimpleControllerHandlerAdapterExampleController extends +AbstractController { + +@Override +protected ModelAndView handleRequestInternal(HttpServletRequest arg0, + HttpServletResponse arg1) throws Exception { +ModelAndView model = new ModelAndView("Greeting"); + +model.addObject("message", "Dinesh Madhwal"); + +return model; +} +} \ No newline at end of file diff --git a/SpringMVCHandlers/src/main/resources/spring-servlet.xml b/SpringMVCHandlers/src/main/resources/spring-servlet.xml new file mode 100644 index 0000000000..eb42f89847 --- /dev/null +++ b/SpringMVCHandlers/src/main/resources/spring-servlet.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SpringMVCHandlers/src/main/webapp/WEB-INF/Greeting.jsp b/SpringMVCHandlers/src/main/webapp/WEB-INF/Greeting.jsp new file mode 100644 index 0000000000..820d2f380f --- /dev/null +++ b/SpringMVCHandlers/src/main/webapp/WEB-INF/Greeting.jsp @@ -0,0 +1,5 @@ + + +

Hello ${message}

+ + \ No newline at end of file diff --git a/SpringMVCHandlers/src/main/webapp/WEB-INF/web.xml b/SpringMVCHandlers/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..d47deec14e --- /dev/null +++ b/SpringMVCHandlers/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,19 @@ + + + + spring + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath*:spring-servlet.xml + + 1 + + + spring + / + + \ No newline at end of file From cc34a10bc298701b49b66d3f0a2afb913cde1af7 Mon Sep 17 00:00:00 2001 From: maibin Date: Mon, 28 Nov 2016 18:55:33 +0100 Subject: [PATCH 125/399] @Async and Spring Security (#864) --- spring-security-rest/pom.xml | 695 +++++++++--------- .../web/controller/AsyncController.java | 24 + .../src/main/webapp/WEB-INF/api-servlet.xml | 6 +- .../src/main/webapp/WEB-INF/web.xml | 87 +-- .../org/baeldung/web/AsyncControllerTest.java | 51 ++ .../java/org/baeldung/web/TestConfig.java | 9 + 6 files changed, 485 insertions(+), 387 deletions(-) create mode 100644 spring-security-rest/src/main/java/org/baeldung/web/controller/AsyncController.java create mode 100644 spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerTest.java diff --git a/spring-security-rest/pom.xml b/spring-security-rest/pom.xml index 60f3ed41d1..df000d0df5 100644 --- a/spring-security-rest/pom.xml +++ b/spring-security-rest/pom.xml @@ -1,393 +1,400 @@ - 4.0.0 - com.baeldung - spring-security-rest - 0.1-SNAPSHOT + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + spring-security-rest + 0.1-SNAPSHOT - spring-security-rest - war + spring-security-rest + war - + - + - - org.springframework.security - spring-security-web - ${org.springframework.security.version} - - - org.springframework.security - spring-security-config - ${org.springframework.security.version} - + + org.springframework.security + spring-security-web + ${org.springframework.security.version} + + + org.springframework.security + spring-security-config + ${org.springframework.security.version} + - + - - org.springframework - spring-core - ${org.springframework.version} - - - commons-logging - commons-logging - - - - - org.springframework - spring-context - ${org.springframework.version} - - - org.springframework - spring-jdbc - ${org.springframework.version} - - - org.springframework - spring-beans - ${org.springframework.version} - - - org.springframework - spring-aop - ${org.springframework.version} - - - org.springframework - spring-tx - ${org.springframework.version} - - - org.springframework - spring-expression - ${org.springframework.version} - + + org.springframework + spring-core + ${org.springframework.version} + + + commons-logging + commons-logging + + + + + org.springframework + spring-context + ${org.springframework.version} + + + org.springframework + spring-jdbc + ${org.springframework.version} + + + org.springframework + spring-beans + ${org.springframework.version} + + + org.springframework + spring-aop + ${org.springframework.version} + + + org.springframework + spring-tx + ${org.springframework.version} + + + org.springframework + spring-expression + ${org.springframework.version} + - - org.springframework - spring-web - ${org.springframework.version} - - - org.springframework - spring-webmvc - ${org.springframework.version} - + + org.springframework + spring-web + ${org.springframework.version} + + + org.springframework + spring-webmvc + ${org.springframework.version} + - - - org.springframework.hateoas - spring-hateoas - ${org.springframework.hateoas.version} - + + + org.springframework.hateoas + spring-hateoas + ${org.springframework.hateoas.version} + - + - - javax.servlet - javax.servlet-api - ${javax.servlet-api.version} - provided - + + javax.servlet + javax.servlet-api + ${javax.servlet-api.version} + provided + - - javax.servlet - jstl - ${jstl.version} - runtime - + + javax.servlet + jstl + ${jstl.version} + runtime + - - javax.validation - validation-api - ${javax.validation.version} - + + javax.validation + validation-api + ${javax.validation.version} + - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + - - - com.google.guava - guava - ${guava.version} - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - + + + com.google.guava + guava + ${guava.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + - - - org.springframework - spring-test - ${org.springframework.version} - test - + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + - - org.springframework.security - spring-security-test - ${org.springframework.security.version} - test - + + + org.springframework + spring-test + ${org.springframework.version} + test + + + + org.springframework.security + spring-security-test + ${org.springframework.security.version} + test + - - com.jayway.restassured - rest-assured - ${rest-assured.version} - test - - - commons-logging - commons-logging - - - + + com.jayway.restassured + rest-assured + ${rest-assured.version} + test + + + commons-logging + commons-logging + + + - - junit - junit - ${junit.version} - test - + + junit + junit + ${junit.version} + test + - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + - - org.mockito - mockito-core - ${mockito.version} - test - + + org.mockito + mockito-core + ${mockito.version} + test + - - - io.springfox - springfox-swagger2 - ${springfox-swagger.version} - + + + io.springfox + springfox-swagger2 + ${springfox-swagger.version} + - - io.springfox - springfox-swagger-ui - ${springfox-swagger.version} - + + io.springfox + springfox-swagger-ui + ${springfox-swagger.version} + - + + + commons-fileupload + commons-fileupload + 1.3.2 + - - spring-security-rest - - - src/main/resources - true - - + - + + spring-security-rest + + + src/main/resources + true + + - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - + - - org.apache.maven.plugins - maven-war-plugin - ${maven-war-plugin.version} - + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - **/*LiveTest.java - - - - - - + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo-maven2-plugin.version} - - - jetty8x - embedded - - - - - - - 8082 - - - - + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*LiveTest.java + + + + + + - + + org.codehaus.cargo + cargo-maven2-plugin + ${cargo-maven2-plugin.version} + + + jetty8x + embedded + + + + + + + 8082 + + + + - + - - - live - - - - org.codehaus.cargo - cargo-maven2-plugin - - - start-server - pre-integration-test - - start - - - - stop-server - post-integration-test - - stop - - - - + - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - none - - - **/*LiveTest.java - - - cargo - - - - - + + + live + + + + org.codehaus.cargo + cargo-maven2-plugin + + + start-server + pre-integration-test + + start + + + + stop-server + post-integration-test + + stop + + + + - - - - - - - - - 4.2.5.RELEASE - 4.0.4.RELEASE - 0.19.0.RELEASE + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + none + + + **/*LiveTest.java + + + cargo + + + + + - - 4.3.11.Final - 5.1.38 + + + + - - 1.7.13 - 1.1.3 - - 5.2.2.Final - 3.0.1 - 1.1.0.Final - 1.2 - 2.7.8 + + + 4.2.5.RELEASE + 4.0.4.RELEASE + 0.19.0.RELEASE - - 19.0 - 3.4 + + 4.3.11.Final + 5.1.38 - - 1.3 - 4.12 - 1.10.19 - 2.9.0 + + 1.7.13 + 1.1.3 - - 2.4.0 + + 5.2.2.Final + 3.0.1 + 1.1.0.Final + 1.2 + 2.7.8 - 4.4.1 - 4.5 + + 19.0 + 3.4 - 2.9.0 + + 1.3 + 4.12 + 1.10.19 + 2.9.0 - - 3.5.1 - 2.6 - 2.19.1 - 1.4.18 + + 2.4.0 - + 4.4.1 + 4.5 + + 2.9.0 + + + 3.5.1 + 2.6 + 2.19.1 + 1.4.18 + + diff --git a/spring-security-rest/src/main/java/org/baeldung/web/controller/AsyncController.java b/spring-security-rest/src/main/java/org/baeldung/web/controller/AsyncController.java new file mode 100644 index 0000000000..bc59b4226a --- /dev/null +++ b/spring-security-rest/src/main/java/org/baeldung/web/controller/AsyncController.java @@ -0,0 +1,24 @@ +package org.baeldung.web.controller; + +import java.util.concurrent.Callable; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.multipart.MultipartFile; + +@Controller +public class AsyncController { + + @RequestMapping(method = RequestMethod.POST, value = "/upload") + public Callable processUpload(final MultipartFile file) { + + return new Callable() { + public Boolean call() throws Exception { + // ... + return true; + } + }; + } + +} diff --git a/spring-security-rest/src/main/webapp/WEB-INF/api-servlet.xml b/spring-security-rest/src/main/webapp/WEB-INF/api-servlet.xml index 4ba9642448..5a68371f6c 100644 --- a/spring-security-rest/src/main/webapp/WEB-INF/api-servlet.xml +++ b/spring-security-rest/src/main/webapp/WEB-INF/api-servlet.xml @@ -1,6 +1,10 @@ + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"> + + + \ No newline at end of file diff --git a/spring-security-rest/src/main/webapp/WEB-INF/web.xml b/spring-security-rest/src/main/webapp/WEB-INF/web.xml index 3af8709dab..c030a9dd63 100644 --- a/spring-security-rest/src/main/webapp/WEB-INF/web.xml +++ b/spring-security-rest/src/main/webapp/WEB-INF/web.xml @@ -1,54 +1,57 @@ - + http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" + id="WebApp_ID" version="3.0"> - Spring MVC Application + Spring MVC Application - - - contextClass - + + + contextClass + org.springframework.web.context.support.AnnotationConfigWebApplicationContext - - - contextConfigLocation - org.baeldung.spring - + + + contextConfigLocation + org.baeldung.spring + - - org.springframework.web.context.ContextLoaderListener - + + org.springframework.web.context.ContextLoaderListener + - - - api - org.springframework.web.servlet.DispatcherServlet - - throwExceptionIfNoHandlerFound - true - - - - api - /api/* - + + + api + org.springframework.web.servlet.DispatcherServlet + + throwExceptionIfNoHandlerFound + true + + + + api + /api/* + - - - springSecurityFilterChain - org.springframework.web.filter.DelegatingFilterProxy - - - springSecurityFilterChain - /* - + + + springSecurityFilterChain + org.springframework.web.filter.DelegatingFilterProxy + + + springSecurityFilterChain + /* + REQUEST + ASYNC + - - - + + + \ No newline at end of file diff --git a/spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerTest.java b/spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerTest.java new file mode 100644 index 0000000000..37122ed836 --- /dev/null +++ b/spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerTest.java @@ -0,0 +1,51 @@ +package org.baeldung.web; + +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.baeldung.spring.ClientWebConfig; +import org.baeldung.spring.SecurityJavaConfig; +import org.baeldung.spring.WebConfig; +import org.baeldung.web.controller.AsyncController; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpSession; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration(classes = { ClientWebConfig.class, SecurityJavaConfig.class, WebConfig.class}) +public class AsyncControllerTest { + + @Autowired + WebApplicationContext wac; + @Autowired + MockHttpSession session; + + @Mock + AsyncController controller; + + private MockMvc mockMvc; + + @Before + public void setup() { + mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); + } + + @Test + public void testProcessUpload() throws Exception { + MockMultipartFile jsonFile = new MockMultipartFile("json", "", "application/json", + "{\"json\": \"someValue\"}".getBytes()); + mockMvc.perform(MockMvcRequestBuilders.fileUpload("/upload").file(jsonFile)).andExpect(status().isOk()); + } + +} diff --git a/spring-security-rest/src/test/java/org/baeldung/web/TestConfig.java b/spring-security-rest/src/test/java/org/baeldung/web/TestConfig.java index 8b55841508..bdce37dd10 100644 --- a/spring-security-rest/src/test/java/org/baeldung/web/TestConfig.java +++ b/spring-security-rest/src/test/java/org/baeldung/web/TestConfig.java @@ -1,10 +1,19 @@ package org.baeldung.web; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.web.multipart.MultipartResolver; +import org.springframework.web.multipart.commons.CommonsMultipartResolver; @Configuration @ComponentScan({ "org.baeldung.web" }) public class TestConfig { + @Bean + public MultipartResolver multipartResolver() { + CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); + return multipartResolver; + } + } \ No newline at end of file From 6082ac9c9ecba721a04f092872250c42c5bc89b1 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Mon, 28 Nov 2016 19:12:29 +0100 Subject: [PATCH 126/399] Fix test --- .../baeldung/file/FileOperationsUnitTest.java | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/file/FileOperationsUnitTest.java b/core-java/src/test/java/com/baeldung/file/FileOperationsUnitTest.java index 3319716dc6..16d0cb570b 100644 --- a/core-java/src/test/java/com/baeldung/file/FileOperationsUnitTest.java +++ b/core-java/src/test/java/com/baeldung/file/FileOperationsUnitTest.java @@ -1,11 +1,12 @@ package com.baeldung.file; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; +import org.apache.commons.io.FileUtils; +import org.hamcrest.CoreMatchers; +import org.hamcrest.Matchers; +import org.junit.Assert; +import org.junit.Test; + +import java.io.*; import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; @@ -14,12 +15,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.stream.Stream; -import org.apache.commons.io.FileUtils; -import org.hamcrest.CoreMatchers; -import org.hamcrest.Matchers; -import org.junit.Assert; -import org.junit.Test; - public class FileOperationsUnitTest { @Test @@ -58,9 +53,9 @@ public class FileOperationsUnitTest { @Test public void givenURLName_whenUsingURL_thenFileData() throws IOException { - String expectedData = "Baeldung"; + String expectedData = "Example Domain"; - URL urlObject = new URL("http://www.baeldung.com/"); + URL urlObject = new URL("http://www.example.com/"); URLConnection urlConnection = urlObject.openConnection(); From 99b82f0ee71588c227a7706f56bfeeae0aad434a Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:13:06 +0800 Subject: [PATCH 127/399] initial commit --- SpringMVCHandlers/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 SpringMVCHandlers/.gitignore diff --git a/SpringMVCHandlers/.gitignore b/SpringMVCHandlers/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/SpringMVCHandlers/.gitignore @@ -0,0 +1 @@ +/target/ From 12b4cad504dd68fe25a55c16e22c6b21edfa8504 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:29:37 +0800 Subject: [PATCH 128/399] Initial Commit --- spring-mvc-handlers/.classpath | 27 +++++++ spring-mvc-handlers/.project | 42 +++++++++++ spring-mvc-handlers/pom.xml | 70 +++++++++++++++++++ ...MethodHandlerAdapterExampleController.java | 17 +++++ ...appingHandlerAdapterExampleController.java | 17 +++++ ...rollerHandlerAdapterExampleController.java | 21 ++++++ .../src/main/resources/spring-servlet.xml | 31 ++++++++ .../src/main/webapp/WEB-INF/Greeting.jsp | 5 ++ .../src/main/webapp/WEB-INF/web.xml | 19 +++++ 9 files changed, 249 insertions(+) create mode 100644 spring-mvc-handlers/.classpath create mode 100644 spring-mvc-handlers/.project create mode 100644 spring-mvc-handlers/pom.xml create mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java create mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java create mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java create mode 100644 spring-mvc-handlers/src/main/resources/spring-servlet.xml create mode 100644 spring-mvc-handlers/src/main/webapp/WEB-INF/Greeting.jsp create mode 100644 spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml diff --git a/spring-mvc-handlers/.classpath b/spring-mvc-handlers/.classpath new file mode 100644 index 0000000000..c4978de982 --- /dev/null +++ b/spring-mvc-handlers/.classpath @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-mvc-handlers/.project b/spring-mvc-handlers/.project new file mode 100644 index 0000000000..25a99f0f7f --- /dev/null +++ b/spring-mvc-handlers/.project @@ -0,0 +1,42 @@ + + + SpringMVCHandlers + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/spring-mvc-handlers/pom.xml b/spring-mvc-handlers/pom.xml new file mode 100644 index 0000000000..0074898767 --- /dev/null +++ b/spring-mvc-handlers/pom.xml @@ -0,0 +1,70 @@ + + 4.0.0 + com.baeldung + SpringMVCHandlers + war + 0.0.1-SNAPSHOT + SpringMVCHandlers Maven Webapp + http://maven.apache.org + + + 4.3.4.RELEASE + 3.5.1 + 2.6 + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + commons-logging + commons-logging + 1.2 + + + org.springframework + spring-webmvc + ${springframework.version} + + + org.springframework + spring-context + ${springframework.version} + + + org.springframework + spring-core + ${springframework.version} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + src/main/webapp + springMVCHandlers + false + + + + + springMVCHandlers + + diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java new file mode 100644 index 0000000000..9837467e19 --- /dev/null +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java @@ -0,0 +1,17 @@ +package com.baeldung.spring.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class AnnotationMethodHandlerAdapterExampleController { + @RequestMapping("/annotedName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + + model.addObject("message", "Dinesh"); + + return model; + } +} diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java new file mode 100644 index 0000000000..012ba555dc --- /dev/null +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java @@ -0,0 +1,17 @@ +package com.baeldung.spring.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class RequestMappingHandlerAdapterExampleController { + @RequestMapping("/requestName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + + model.addObject("message", "Madhwal"); + + return model; + } +} diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java new file mode 100644 index 0000000000..59d932812c --- /dev/null +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java @@ -0,0 +1,21 @@ +package com.baeldung.spring.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.AbstractController; + +public class SimpleControllerHandlerAdapterExampleController extends +AbstractController { + +@Override +protected ModelAndView handleRequestInternal(HttpServletRequest arg0, + HttpServletResponse arg1) throws Exception { +ModelAndView model = new ModelAndView("Greeting"); + +model.addObject("message", "Dinesh Madhwal"); + +return model; +} +} \ No newline at end of file diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet.xml b/spring-mvc-handlers/src/main/resources/spring-servlet.xml new file mode 100644 index 0000000000..eb42f89847 --- /dev/null +++ b/spring-mvc-handlers/src/main/resources/spring-servlet.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-mvc-handlers/src/main/webapp/WEB-INF/Greeting.jsp b/spring-mvc-handlers/src/main/webapp/WEB-INF/Greeting.jsp new file mode 100644 index 0000000000..820d2f380f --- /dev/null +++ b/spring-mvc-handlers/src/main/webapp/WEB-INF/Greeting.jsp @@ -0,0 +1,5 @@ + + +

Hello ${message}

+ + \ No newline at end of file diff --git a/spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml b/spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..d47deec14e --- /dev/null +++ b/spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,19 @@ + + + + spring + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath*:spring-servlet.xml + + 1 + + + spring + / + + \ No newline at end of file From c4b48da506eca6adc6f0588b6e348f6f7562553c Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:31:00 +0800 Subject: [PATCH 129/399] Delete pom.xml --- SpringMVCHandlers/pom.xml | 70 --------------------------------------- 1 file changed, 70 deletions(-) delete mode 100644 SpringMVCHandlers/pom.xml diff --git a/SpringMVCHandlers/pom.xml b/SpringMVCHandlers/pom.xml deleted file mode 100644 index 0074898767..0000000000 --- a/SpringMVCHandlers/pom.xml +++ /dev/null @@ -1,70 +0,0 @@ - - 4.0.0 - com.baeldung - SpringMVCHandlers - war - 0.0.1-SNAPSHOT - SpringMVCHandlers Maven Webapp - http://maven.apache.org - - - 4.3.4.RELEASE - 3.5.1 - 2.6 - - - - - javax.servlet - javax.servlet-api - 3.1.0 - - - commons-logging - commons-logging - 1.2 - - - org.springframework - spring-webmvc - ${springframework.version} - - - org.springframework - spring-context - ${springframework.version} - - - org.springframework - spring-core - ${springframework.version} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.7 - 1.7 - - - - org.apache.maven.plugins - maven-war-plugin - ${maven-war-plugin.version} - - src/main/webapp - springMVCHandlers - false - - - - - springMVCHandlers - - From fbafde657ee96a3ecab86765547ed20034333a81 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:31:09 +0800 Subject: [PATCH 130/399] Delete .project --- SpringMVCHandlers/.project | 42 -------------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 SpringMVCHandlers/.project diff --git a/SpringMVCHandlers/.project b/SpringMVCHandlers/.project deleted file mode 100644 index 25a99f0f7f..0000000000 --- a/SpringMVCHandlers/.project +++ /dev/null @@ -1,42 +0,0 @@ - - - SpringMVCHandlers - - - - - - org.eclipse.wst.jsdt.core.javascriptValidator - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.wst.common.project.facet.core.builder - - - - - org.eclipse.wst.validation.validationbuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - org.eclipse.wst.common.project.facet.core.nature - org.eclipse.wst.jsdt.core.jsNature - - From 0ece2fe9eaa1a64925e5563e6f936807a14f7c58 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:31:19 +0800 Subject: [PATCH 131/399] Delete .gitignore --- SpringMVCHandlers/.gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 SpringMVCHandlers/.gitignore diff --git a/SpringMVCHandlers/.gitignore b/SpringMVCHandlers/.gitignore deleted file mode 100644 index b83d22266a..0000000000 --- a/SpringMVCHandlers/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ From ceec40b0d8d7bb8d01b1312f853cee41e968d4e8 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:31:27 +0800 Subject: [PATCH 132/399] Delete .classpath --- SpringMVCHandlers/.classpath | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 SpringMVCHandlers/.classpath diff --git a/SpringMVCHandlers/.classpath b/SpringMVCHandlers/.classpath deleted file mode 100644 index c4978de982..0000000000 --- a/SpringMVCHandlers/.classpath +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - From eecf3befb39980d3e4eb48cb566295602c75b3b3 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:31:37 +0800 Subject: [PATCH 133/399] Delete Greeting.jsp --- SpringMVCHandlers/src/main/webapp/WEB-INF/Greeting.jsp | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 SpringMVCHandlers/src/main/webapp/WEB-INF/Greeting.jsp diff --git a/SpringMVCHandlers/src/main/webapp/WEB-INF/Greeting.jsp b/SpringMVCHandlers/src/main/webapp/WEB-INF/Greeting.jsp deleted file mode 100644 index 820d2f380f..0000000000 --- a/SpringMVCHandlers/src/main/webapp/WEB-INF/Greeting.jsp +++ /dev/null @@ -1,5 +0,0 @@ - - -

Hello ${message}

- - \ No newline at end of file From 2ca24a31fd39e72f582d173d848a3a4956d486f6 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Mon, 28 Nov 2016 19:31:43 +0100 Subject: [PATCH 134/399] Refactor tests --- .../java/nio2/attributes/BasicAttribsTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java index dcc24c6415..8fc01ef85b 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java @@ -1,7 +1,7 @@ package com.baeldung.java.nio2.attributes; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import org.junit.BeforeClass; +import org.junit.Test; import java.io.IOException; import java.nio.file.Files; @@ -11,15 +11,15 @@ import java.nio.file.attribute.BasicFileAttributeView; import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.FileTime; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; public class BasicAttribsTest { private static final String HOME = System.getProperty("user.home"); - BasicFileAttributes basicAttribs; + private static BasicFileAttributes basicAttribs; - @Before - public void setup() throws IOException { + @BeforeClass + public static void setup() throws IOException { Path home = Paths.get(HOME); BasicFileAttributeView basicView = Files.getFileAttributeView(home, BasicFileAttributeView.class); basicAttribs = basicView.readAttributes(); From a98d3a50e02536c3289e974540fe112297cf518e Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:31:45 +0800 Subject: [PATCH 135/399] Delete web.xml --- .../src/main/webapp/WEB-INF/web.xml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 SpringMVCHandlers/src/main/webapp/WEB-INF/web.xml diff --git a/SpringMVCHandlers/src/main/webapp/WEB-INF/web.xml b/SpringMVCHandlers/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index d47deec14e..0000000000 --- a/SpringMVCHandlers/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - spring - org.springframework.web.servlet.DispatcherServlet - - contextConfigLocation - classpath*:spring-servlet.xml - - 1 - - - spring - / - - \ No newline at end of file From 37de74f1c9837780f03da489bc46a3a99a71fee0 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:31:54 +0800 Subject: [PATCH 136/399] Delete spring-servlet.xml --- .../src/main/resources/spring-servlet.xml | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 SpringMVCHandlers/src/main/resources/spring-servlet.xml diff --git a/SpringMVCHandlers/src/main/resources/spring-servlet.xml b/SpringMVCHandlers/src/main/resources/spring-servlet.xml deleted file mode 100644 index eb42f89847..0000000000 --- a/SpringMVCHandlers/src/main/resources/spring-servlet.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 408af40b48cc4cb6efd088cc8d83046c79440455 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:32:03 +0800 Subject: [PATCH 137/399] Delete AnnotationMethodHandlerAdapterExampleController.java --- ...onMethodHandlerAdapterExampleController.java | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java diff --git a/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java b/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java deleted file mode 100644 index 9837467e19..0000000000 --- a/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.spring.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -@Controller -public class AnnotationMethodHandlerAdapterExampleController { - @RequestMapping("/annotedName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - - model.addObject("message", "Dinesh"); - - return model; - } -} From aabc39ccfa33fc992e78745d02f72dbc8dfe3a9e Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:32:10 +0800 Subject: [PATCH 138/399] Delete RequestMappingHandlerAdapterExampleController.java --- ...tMappingHandlerAdapterExampleController.java | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java diff --git a/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java b/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java deleted file mode 100644 index 012ba555dc..0000000000 --- a/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.spring.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -@Controller -public class RequestMappingHandlerAdapterExampleController { - @RequestMapping("/requestName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - - model.addObject("message", "Madhwal"); - - return model; - } -} From beae894d98d11a3853e84f851458e2b4698bd416 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 02:32:17 +0800 Subject: [PATCH 139/399] Delete SimpleControllerHandlerAdapterExampleController.java --- ...rollerHandlerAdapterExampleController.java | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java diff --git a/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java b/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java deleted file mode 100644 index 59d932812c..0000000000 --- a/SpringMVCHandlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.spring.controller; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.AbstractController; - -public class SimpleControllerHandlerAdapterExampleController extends -AbstractController { - -@Override -protected ModelAndView handleRequestInternal(HttpServletRequest arg0, - HttpServletResponse arg1) throws Exception { -ModelAndView model = new ModelAndView("Greeting"); - -model.addObject("message", "Dinesh Madhwal"); - -return model; -} -} \ No newline at end of file From d07891bfc8099b16515622fb81af6ec3cd1aeb73 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Mon, 28 Nov 2016 19:33:43 +0100 Subject: [PATCH 140/399] Fix test --- .../baeldung/java/nio2/attributes/BasicAttribsTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java index 8fc01ef85b..05686e79c0 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java @@ -31,9 +31,10 @@ public class BasicAttribsTest { FileTime modified = basicAttribs.lastModifiedTime(); FileTime accessed = basicAttribs.lastAccessTime(); - assertTrue(0 > created.compareTo(accessed)); - assertTrue(0 < modified.compareTo(created)); - assertTrue(0 == created.compareTo(created)); + System.out.println("Created: " + created); + System.out.println("Modified: " + modified); + System.out.println("Accessed: " + accessed); + } @Test From 13dbf6603b3ffaeaeae1f5e321fb890857fa5340 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Mon, 28 Nov 2016 19:43:15 +0100 Subject: [PATCH 141/399] Fix tests --- core-java/.gitignore | 1 - .../java/nio2/async/AsyncFileTest.java | 25 ++++++++----------- core-java/src/test/resources/file.txt | 1 + 3 files changed, 12 insertions(+), 15 deletions(-) create mode 100644 core-java/src/test/resources/file.txt diff --git a/core-java/.gitignore b/core-java/.gitignore index 6ecc6405c2..bb70a5d3eb 100644 --- a/core-java/.gitignore +++ b/core-java/.gitignore @@ -13,4 +13,3 @@ *.ear # Files generated by integration tests -*.txt \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java index db30d32210..948c93ff0b 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java @@ -1,6 +1,6 @@ package com.baeldung.java.nio2.async; -import static org.junit.Assert.assertEquals; +import org.junit.Test; import java.io.IOException; import java.net.URI; @@ -11,22 +11,22 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.UUID; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class AsyncFileTest { @Test - public void givenPath_whenReadsContentWithFuture_thenCorrect() throws IOException { - Path path = Paths.get(URI.create(new AsyncFileTest().getClass().getResource("/file.txt").toString())); + public void givenPath_whenReadsContentWithFuture_thenCorrect() throws IOException, ExecutionException, InterruptedException { + Path path = Paths.get(URI.create(this.getClass().getClassLoader().getResource("file.txt").toString())); AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ); ByteBuffer buffer = ByteBuffer.allocate(1024); Future operation = fileChannel.read(buffer, 0); - while (!operation.isDone()) - ; + operation.get(); String fileContent = new String(buffer.array()).trim(); buffer.clear(); @@ -36,7 +36,7 @@ public class AsyncFileTest { @Test public void givenPath_whenReadsContentWithCompletionHandler_thenCorrect() throws IOException { - Path path = Paths.get(URI.create(new AsyncFileTest().getClass().getResource("/file.txt").toString())); + Path path = Paths.get(URI.create(AsyncFileTest.class.getResource("/file.txt").toString())); AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ); ByteBuffer buffer = ByteBuffer.allocate(1024); @@ -58,7 +58,7 @@ public class AsyncFileTest { } @Test - public void givenPathAndContent_whenWritesToFileWithFuture_thenCorrect() throws IOException { + public void givenPathAndContent_whenWritesToFileWithFuture_thenCorrect() throws IOException, ExecutionException, InterruptedException { String fileName = UUID.randomUUID().toString(); Path path = Paths.get(fileName); AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE,StandardOpenOption.DELETE_ON_CLOSE); @@ -72,9 +72,7 @@ public class AsyncFileTest { Future operation = fileChannel.write(buffer, position); buffer.clear(); - while (!operation.isDone()) { - - } + operation.get(); String content = readContent(path); assertEquals("hello world", content); @@ -107,7 +105,7 @@ public class AsyncFileTest { }); } - public static String readContent(Path file) { + public static String readContent(Path file) throws ExecutionException, InterruptedException { AsynchronousFileChannel fileChannel = null; try { fileChannel = AsynchronousFileChannel.open(file, StandardOpenOption.READ); @@ -120,8 +118,7 @@ public class AsyncFileTest { Future operation = fileChannel.read(buffer, 0); - while (!operation.isDone()) - ; + operation.get(); String fileContent = new String(buffer.array()).trim(); buffer.clear(); diff --git a/core-java/src/test/resources/file.txt b/core-java/src/test/resources/file.txt new file mode 100644 index 0000000000..558d8bbf35 --- /dev/null +++ b/core-java/src/test/resources/file.txt @@ -0,0 +1 @@ +baeldung.com \ No newline at end of file From 88a8d5838f8b0dd15cadea9564879c403a22946c Mon Sep 17 00:00:00 2001 From: pivovarit Date: Mon, 28 Nov 2016 19:43:30 +0100 Subject: [PATCH 142/399] Revert .gitignore --- core-java/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java/.gitignore b/core-java/.gitignore index bb70a5d3eb..6ecc6405c2 100644 --- a/core-java/.gitignore +++ b/core-java/.gitignore @@ -13,3 +13,4 @@ *.ear # Files generated by integration tests +*.txt \ No newline at end of file From 333d3bc1226787a45fe3113d8f7999db76e738e7 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Mon, 28 Nov 2016 22:15:24 +0100 Subject: [PATCH 143/399] Refactor AsyncEchoServer2 --- .../java/nio2/async/AsyncEchoServer2.java | 15 +++++++-------- .../baeldung/java/nio2/async/AsyncFileTest.java | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java index 03ce233ce9..172d8036de 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java @@ -58,19 +58,18 @@ public class AsyncEchoServer2 { @Override public void completed(Integer result, Map attachment) { - Map actionInfo = attachment; - String action = (String) actionInfo.get("action"); + String action = (String) attachment.get("action"); if ("read".equals(action)) { - ByteBuffer buffer = (ByteBuffer) actionInfo.get("buffer"); + ByteBuffer buffer = (ByteBuffer) attachment.get("buffer"); buffer.flip(); - actionInfo.put("action", "write"); - clientChannel.write(buffer, actionInfo, this); + attachment.put("action", "write"); + clientChannel.write(buffer, attachment, this); buffer.clear(); } else if ("write".equals(action)) { ByteBuffer buffer = ByteBuffer.allocate(32); - actionInfo.put("action", "read"); - actionInfo.put("buffer", buffer); - clientChannel.read(buffer, actionInfo, this); + attachment.put("action", "read"); + attachment.put("buffer", buffer); + clientChannel.read(buffer, attachment, this); } } diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java index 948c93ff0b..fcffc524b1 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java @@ -60,7 +60,7 @@ public class AsyncFileTest { @Test public void givenPathAndContent_whenWritesToFileWithFuture_thenCorrect() throws IOException, ExecutionException, InterruptedException { String fileName = UUID.randomUUID().toString(); - Path path = Paths.get(fileName); + Path path = Paths.get(Paths.get(HOME)); AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE,StandardOpenOption.DELETE_ON_CLOSE); ByteBuffer buffer = ByteBuffer.allocate(1024); From 602e98c6c3352148044924b5d702db3d59bd8349 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Mon, 28 Nov 2016 22:18:22 +0100 Subject: [PATCH 144/399] Fix AsyncFileTest --- .../java/com/baeldung/java/nio2/async/AsyncFileTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java index fcffc524b1..b03acf83ca 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java @@ -59,9 +59,9 @@ public class AsyncFileTest { @Test public void givenPathAndContent_whenWritesToFileWithFuture_thenCorrect() throws IOException, ExecutionException, InterruptedException { - String fileName = UUID.randomUUID().toString(); - Path path = Paths.get(Paths.get(HOME)); - AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE,StandardOpenOption.DELETE_ON_CLOSE); + String fileName = "temp"; + Path path = Paths.get(fileName); + AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE); ByteBuffer buffer = ByteBuffer.allocate(1024); long position = 0; From 6e6c3e6e80ed1d145b783eed277d174c2b8e1708 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 28 Nov 2016 23:35:30 +0200 Subject: [PATCH 145/399] move rest template test --- .../web/controller/MyFooController.java | 76 ++++++++ .../main/java/org/baeldung/web/dto/Foo.java | 6 + .../exception/ResourceNotFoundException.java | 8 + .../src/main/webapp/WEB-INF/api-servlet.xml | 8 +- .../client/RestTemplateBasicLiveTest.java | 173 +++++++++++++++++- 5 files changed, 262 insertions(+), 9 deletions(-) create mode 100644 spring-rest/src/main/java/org/baeldung/web/controller/MyFooController.java create mode 100644 spring-rest/src/main/java/org/baeldung/web/exception/ResourceNotFoundException.java diff --git a/spring-rest/src/main/java/org/baeldung/web/controller/MyFooController.java b/spring-rest/src/main/java/org/baeldung/web/controller/MyFooController.java new file mode 100644 index 0000000000..f19ddca435 --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/web/controller/MyFooController.java @@ -0,0 +1,76 @@ +package org.baeldung.web.controller; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletResponse; + +import org.baeldung.web.dto.Foo; +import org.baeldung.web.exception.ResourceNotFoundException; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +@Controller +@RequestMapping(value = "/myfoos") +public class MyFooController { + + private final Map myfoos; + + public MyFooController() { + super(); + myfoos = new HashMap(); + myfoos.put(1L, new Foo(1L, "sample foo")); + } + + // API - read + + @RequestMapping(method = RequestMethod.GET) + @ResponseBody + public Collection findAll() { + return myfoos.values(); + } + + @RequestMapping(method = RequestMethod.GET, value = "/{id}", produces = { "application/json" }) + @ResponseBody + public Foo findById(@PathVariable final long id) { + final Foo foo = myfoos.get(id); + if (foo == null) { + throw new ResourceNotFoundException(); + } + return foo; + } + + // API - write + + @RequestMapping(method = RequestMethod.PUT, value = "/{id}") + @ResponseStatus(HttpStatus.OK) + @ResponseBody + public Foo updateFoo(@PathVariable("id") final long id, @RequestBody final Foo foo) { + myfoos.put(id, foo); + return foo; + } + + @RequestMapping(method = RequestMethod.POST) + @ResponseStatus(HttpStatus.CREATED) + @ResponseBody + public Foo createFoo(@RequestBody final Foo foo, HttpServletResponse response) { + myfoos.put(foo.getId(), foo); + response.setHeader("Location", ServletUriComponentsBuilder.fromCurrentRequest().path("/" + foo.getId()).toUriString()); + return foo; + } + + @RequestMapping(method = RequestMethod.DELETE, value = "/{id}") + @ResponseStatus(HttpStatus.OK) + public void deleteById(@PathVariable final long id) { + myfoos.remove(id); + } + +} diff --git a/spring-rest/src/main/java/org/baeldung/web/dto/Foo.java b/spring-rest/src/main/java/org/baeldung/web/dto/Foo.java index 774d547464..240b368b50 100644 --- a/spring-rest/src/main/java/org/baeldung/web/dto/Foo.java +++ b/spring-rest/src/main/java/org/baeldung/web/dto/Foo.java @@ -11,6 +11,12 @@ public class Foo { super(); } + public Foo(final String name) { + super(); + + this.name = name; + } + public Foo(final long id, final String name) { super(); diff --git a/spring-rest/src/main/java/org/baeldung/web/exception/ResourceNotFoundException.java b/spring-rest/src/main/java/org/baeldung/web/exception/ResourceNotFoundException.java new file mode 100644 index 0000000000..aab737b6ec --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/web/exception/ResourceNotFoundException.java @@ -0,0 +1,8 @@ +package org.baeldung.web.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(value = HttpStatus.NOT_FOUND) +public class ResourceNotFoundException extends RuntimeException { +} diff --git a/spring-rest/src/main/webapp/WEB-INF/api-servlet.xml b/spring-rest/src/main/webapp/WEB-INF/api-servlet.xml index 21136b62c6..0f80990c16 100644 --- a/spring-rest/src/main/webapp/WEB-INF/api-servlet.xml +++ b/spring-rest/src/main/webapp/WEB-INF/api-servlet.xml @@ -8,7 +8,7 @@ - + + @@ -43,6 +44,11 @@ + + + + diff --git a/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java b/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java index e4321e163f..a47c60e9d8 100644 --- a/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/client/RestTemplateBasicLiveTest.java @@ -1,28 +1,42 @@ package org.baeldung.client; +import static org.apache.commons.codec.binary.Base64.encodeBase64; import static org.baeldung.client.Consts.APPLICATION_PORT; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; -import static org.mockito.Matchers.notNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.io.IOException; +import java.net.URI; +import java.util.Arrays; +import java.util.Set; import org.baeldung.web.dto.Foo; import org.junit.Before; import org.junit.Test; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RequestCallback; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Charsets; public class RestTemplateBasicLiveTest { private RestTemplate restTemplate; - private static final String fooResourceUrl = "http://localhost:" + APPLICATION_PORT + "/spring-rest/foos"; + private static final String fooResourceUrl = "http://localhost:" + APPLICATION_PORT + "/spring-rest/myfoos"; @Before public void beforeTest() { @@ -33,19 +47,19 @@ public class RestTemplateBasicLiveTest { @Test public void givenResourceUrl_whenSendGetForRequestEntity_thenStatusOk() throws IOException { - ResponseEntity response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class); + final ResponseEntity response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); } @Test public void givenResourceUrl_whenSendGetForRequestEntity_thenBodyCorrect() throws IOException { - ResponseEntity response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class); + final ResponseEntity response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class); - ObjectMapper mapper = new ObjectMapper(); - JsonNode root = mapper.readTree(response.getBody()); - JsonNode name = root.path("name"); - assertThat(name.asText(), is(notNull())); + final ObjectMapper mapper = new ObjectMapper(); + final JsonNode root = mapper.readTree(response.getBody()); + final JsonNode name = root.path("name"); + assertThat(name.asText(), notNullValue()); } @Test @@ -56,4 +70,147 @@ public class RestTemplateBasicLiveTest { assertThat(foo.getId(), is(1L)); } + // HEAD, OPTIONS + + @Test + public void givenFooService_whenCallHeadForHeaders_thenReceiveAllHeadersForThatResource() { + final HttpHeaders httpHeaders = restTemplate.headForHeaders(fooResourceUrl); + + assertTrue(httpHeaders.getContentType().includes(MediaType.APPLICATION_JSON)); + } + + // POST + + @Test + public void givenFooService_whenPostForObject_thenCreatedObjectIsReturned() { + final HttpEntity request = new HttpEntity<>(new Foo("bar")); + final Foo foo = restTemplate.postForObject(fooResourceUrl, request, Foo.class); + assertThat(foo, notNullValue()); + assertThat(foo.getName(), is("bar")); + } + + @Test + public void givenFooService_whenPostForLocation_thenCreatedLocationIsReturned() { + final HttpEntity request = new HttpEntity<>(new Foo("bar")); + final URI location = restTemplate.postForLocation(fooResourceUrl, request); + assertThat(location, notNullValue()); + } + + @Test + public void givenFooService_whenPostResource_thenResourceIsCreated() { + final RestTemplate template = new RestTemplate(); + + final HttpEntity request = new HttpEntity<>(new Foo("bar")); + + final ResponseEntity response = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class); + assertThat(response.getStatusCode(), is(HttpStatus.CREATED)); + final Foo foo = response.getBody(); + assertThat(foo, notNullValue()); + assertThat(foo.getName(), is("bar")); + } + + @Test + public void givenFooService_whenCallOptionsForAllow_thenReceiveValueOfAllowHeader() { + final Set optionsForAllow = restTemplate.optionsForAllow(fooResourceUrl); + final HttpMethod[] supportedMethods = { HttpMethod.GET, HttpMethod.POST, HttpMethod.HEAD }; + + assertTrue(optionsForAllow.containsAll(Arrays.asList(supportedMethods))); + } + + // PUT + + @Test + public void givenFooService_whenPutExistingEntity_thenItIsUpdated() { + final RestTemplate template = new RestTemplate(); + final HttpHeaders headers = prepareBasicAuthHeaders(); + final HttpEntity request = new HttpEntity<>(new Foo("bar"), headers); + + // Create Resource + final ResponseEntity createResponse = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class); + + // Update Resource + final Foo updatedInstance = new Foo("newName"); + updatedInstance.setId(createResponse.getBody().getId()); + final String resourceUrl = fooResourceUrl + '/' + createResponse.getBody().getId(); + final HttpEntity requestUpdate = new HttpEntity<>(updatedInstance, headers); + template.exchange(resourceUrl, HttpMethod.PUT, requestUpdate, Void.class); + + // Check that Resource was updated + final ResponseEntity updateResponse = template.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class); + final Foo foo = updateResponse.getBody(); + assertThat(foo.getName(), is(updatedInstance.getName())); + } + + @Test + public void givenFooService_whenPutExistingEntityWithCallback_thenItIsUpdated() { + final RestTemplate template = new RestTemplate(); + final HttpHeaders headers = prepareBasicAuthHeaders(); + final HttpEntity request = new HttpEntity<>(new Foo("bar"), headers); + + // Create entity + ResponseEntity response = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class); + assertThat(response.getStatusCode(), is(HttpStatus.CREATED)); + + // Update entity + final Foo updatedInstance = new Foo("newName"); + updatedInstance.setId(response.getBody().getId()); + final String resourceUrl = fooResourceUrl + '/' + response.getBody().getId(); + template.execute(resourceUrl, HttpMethod.PUT, requestCallback(updatedInstance), clientHttpResponse -> null); + + // Check that entity was updated + response = template.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class); + final Foo foo = response.getBody(); + assertThat(foo.getName(), is(updatedInstance.getName())); + } + + // DELETE + + @Test + public void givenFooService_whenCallDelete_thenEntityIsRemoved() { + final Foo foo = new Foo("remove me"); + final ResponseEntity response = restTemplate.postForEntity(fooResourceUrl, foo, Foo.class); + assertThat(response.getStatusCode(), is(HttpStatus.CREATED)); + + final String entityUrl = fooResourceUrl + "/" + response.getBody().getId(); + restTemplate.delete(entityUrl); + try { + restTemplate.getForEntity(entityUrl, Foo.class); + fail(); + } catch (final HttpClientErrorException ex) { + assertThat(ex.getStatusCode(), is(HttpStatus.NOT_FOUND)); + } + } + + // + + private HttpHeaders prepareBasicAuthHeaders() { + final HttpHeaders headers = new HttpHeaders(); + final String encodedLogPass = getBase64EncodedLogPass(); + headers.add(HttpHeaders.AUTHORIZATION, "Basic " + encodedLogPass); + return headers; + } + + private String getBase64EncodedLogPass() { + final String logPass = "user1:user1Pass"; + final byte[] authHeaderBytes = encodeBase64(logPass.getBytes(Charsets.US_ASCII)); + return new String(authHeaderBytes, Charsets.US_ASCII); + } + + private RequestCallback requestCallback(final Foo updatedInstance) { + return clientHttpRequest -> { + final ObjectMapper mapper = new ObjectMapper(); + mapper.writeValue(clientHttpRequest.getBody(), updatedInstance); + clientHttpRequest.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); + clientHttpRequest.getHeaders().add(HttpHeaders.AUTHORIZATION, "Basic " + getBase64EncodedLogPass()); + }; + } + + // Simply setting restTemplate timeout using ClientHttpRequestFactory + + ClientHttpRequestFactory getSimpleClientHttpRequestFactory() { + final int timeout = 5; + final HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(); + clientHttpRequestFactory.setConnectTimeout(timeout * 1000); + return clientHttpRequestFactory; + } } From 753c71a399a304fe4b0aece6a4d7f7e84db50186 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 28 Nov 2016 23:35:58 +0200 Subject: [PATCH 146/399] cleanup --- .../okhttp/OkHttpFileUploadingLiveTest.java | 46 +++++------- .../baeldung/okhttp/OkHttpGetLiveTest.java | 31 ++++---- .../baeldung/okhttp/OkHttpMiscLiveTest.java | 72 +++++++++---------- .../okhttp/OkHttpPostingLiveTest.java | 68 +++++++----------- .../web/test/RequestMappingLiveTest.java | 3 +- 5 files changed, 91 insertions(+), 129 deletions(-) diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java index d5765b9756..71fc755321 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpFileUploadingLiveTest.java @@ -1,5 +1,6 @@ package org.baeldung.okhttp; +import static org.baeldung.client.Consts.APPLICATION_PORT; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; @@ -7,10 +8,6 @@ import static org.junit.Assert.assertThat; import java.io.File; import java.io.IOException; -import org.baeldung.okhttp.ProgressRequestWrapper; -import org.junit.Before; -import org.junit.Test; - import okhttp3.Call; import okhttp3.MediaType; import okhttp3.MultipartBody; @@ -19,33 +16,29 @@ import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; +import org.junit.Before; +import org.junit.Test; + public class OkHttpFileUploadingLiveTest { - private static final String BASE_URL = "http://localhost:8080/spring-rest"; + private static final String BASE_URL = "http://localhost:" + APPLICATION_PORT + "/spring-rest"; OkHttpClient client; @Before public void init() { - client = new OkHttpClient(); + client = new OkHttpClient(); } @Test public void whenUploadFile_thenCorrect() throws IOException { - RequestBody requestBody = new MultipartBody.Builder() - .setType(MultipartBody.FORM) - .addFormDataPart("file", "file.txt", - RequestBody.create(MediaType.parse("application/octet-stream"), new File("src/test/resources/test.txt"))) - .build(); + final RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("file", "file.txt", RequestBody.create(MediaType.parse("application/octet-stream"), new File("src/test/resources/test.txt"))).build(); - Request request = new Request.Builder() - .url(BASE_URL + "/users/upload") - .post(requestBody) - .build(); + final Request request = new Request.Builder().url(BASE_URL + "/users/upload").post(requestBody).build(); - Call call = client.newCall(request); - Response response = call.execute(); + final Call call = client.newCall(request); + final Response response = call.execute(); assertThat(response.code(), equalTo(200)); } @@ -53,25 +46,18 @@ public class OkHttpFileUploadingLiveTest { @Test public void whenGetUploadFileProgress_thenCorrect() throws IOException { - RequestBody requestBody = new MultipartBody.Builder() - .setType(MultipartBody.FORM) - .addFormDataPart("file", "file.txt", - RequestBody.create(MediaType.parse("application/octet-stream"), new File("src/test/resources/test.txt"))) - .build(); + final RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("file", "file.txt", RequestBody.create(MediaType.parse("application/octet-stream"), new File("src/test/resources/test.txt"))).build(); - ProgressRequestWrapper countingBody = new ProgressRequestWrapper(requestBody, (long bytesWritten, long contentLength) -> { + final ProgressRequestWrapper countingBody = new ProgressRequestWrapper(requestBody, (long bytesWritten, long contentLength) -> { - float percentage = 100f * bytesWritten / contentLength; + final float percentage = (100f * bytesWritten) / contentLength; assertFalse(Float.compare(percentage, 100) > 0); }); - Request request = new Request.Builder() - .url(BASE_URL + "/users/upload") - .post(countingBody) - .build(); + final Request request = new Request.Builder().url(BASE_URL + "/users/upload").post(countingBody).build(); - Call call = client.newCall(request); - Response response = call.execute(); + final Call call = client.newCall(request); + final Response response = call.execute(); assertThat(response.code(), equalTo(200)); diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java index 034833da0d..fc78899da1 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java @@ -1,14 +1,12 @@ package org.baeldung.okhttp; +import static org.baeldung.client.Consts.APPLICATION_PORT; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import java.io.IOException; -import org.junit.Before; -import org.junit.Test; - import okhttp3.Call; import okhttp3.Callback; import okhttp3.HttpUrl; @@ -16,9 +14,12 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; +import org.junit.Before; +import org.junit.Test; + public class OkHttpGetLiveTest { - private static final String BASE_URL = "http://localhost:8080/spring-rest"; + private static final String BASE_URL = "http://localhost:" + APPLICATION_PORT + "/spring-rest"; OkHttpClient client; @@ -30,40 +31,42 @@ public class OkHttpGetLiveTest { @Test public void whenGetRequest_thenCorrect() throws IOException { - Request request = new Request.Builder().url(BASE_URL + "/date").build(); + final Request request = new Request.Builder().url(BASE_URL + "/date").build(); - Call call = client.newCall(request); - Response response = call.execute(); + final Call call = client.newCall(request); + final Response response = call.execute(); assertThat(response.code(), equalTo(200)); } @Test public void whenGetRequestWithQueryParameter_thenCorrect() throws IOException { - HttpUrl.Builder urlBuilder = HttpUrl.parse(BASE_URL + "/ex/bars").newBuilder(); + final HttpUrl.Builder urlBuilder = HttpUrl.parse(BASE_URL + "/ex/bars").newBuilder(); urlBuilder.addQueryParameter("id", "1"); - String url = urlBuilder.build().toString(); + final String url = urlBuilder.build().toString(); - Request request = new Request.Builder().url(url).build(); + final Request request = new Request.Builder().url(url).build(); - Call call = client.newCall(request); - Response response = call.execute(); + final Call call = client.newCall(request); + final Response response = call.execute(); assertThat(response.code(), equalTo(200)); } @Test public void whenAsynchronousGetRequest_thenCorrect() throws InterruptedException { - Request request = new Request.Builder().url(BASE_URL + "/date").build(); + final Request request = new Request.Builder().url(BASE_URL + "/date").build(); - Call call = client.newCall(request); + final Call call = client.newCall(request); call.enqueue(new Callback() { + @Override public void onResponse(Call call, Response response) throws IOException { System.out.println("OK"); } + @Override public void onFailure(Call call, IOException e) { fail(); } diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java index 34e1554908..e6b3cc87b0 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java @@ -1,27 +1,27 @@ package org.baeldung.okhttp; -import okhttp3.*; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import static org.baeldung.client.Consts.APPLICATION_PORT; + import java.io.File; import java.io.IOException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + import okhttp3.Cache; import okhttp3.Call; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class OkHttpMiscLiveTest { - private static final String BASE_URL = "http://localhost:8080/spring-rest"; + private static final String BASE_URL = "http://localhost:" + APPLICATION_PORT + "/spring-rest"; private static Logger logger = LoggerFactory.getLogger(OkHttpMiscLiveTest.class); OkHttpClient client; @@ -29,31 +29,27 @@ public class OkHttpMiscLiveTest { @Before public void init() { - client = new OkHttpClient(); + client = new OkHttpClient(); } @Test public void whenSetRequestTimeout_thenFail() throws IOException { - OkHttpClient clientWithTimeout = new OkHttpClient.Builder() - .readTimeout(1, TimeUnit.SECONDS) - .build(); + final OkHttpClient clientWithTimeout = new OkHttpClient.Builder().readTimeout(1, TimeUnit.SECONDS).build(); - Request request = new Request.Builder() - .url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay. - .build(); + final Request request = new Request.Builder().url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay. + .build(); - Call call = clientWithTimeout.newCall(request); - Response response = call.execute(); + final Call call = clientWithTimeout.newCall(request); + final Response response = call.execute(); response.close(); } @Test(expected = IOException.class) public void whenCancelRequest_thenCorrect() throws IOException { - ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); + final ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); - Request request = new Request.Builder() - .url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay. - .build(); + final Request request = new Request.Builder().url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay. + .build(); final int seconds = 1; final long startNanos = System.nanoTime(); @@ -63,42 +59,38 @@ public class OkHttpMiscLiveTest { // Schedule a job to cancel the call in 1 second. executor.schedule(() -> { - logger.debug("Canceling call: " + (System.nanoTime() - startNanos) / 1e9f); + logger.debug("Canceling call: " + ((System.nanoTime() - startNanos) / 1e9f)); call.cancel(); - logger.debug("Canceled call: " + (System.nanoTime() - startNanos) / 1e9f); + logger.debug("Canceled call: " + ((System.nanoTime() - startNanos) / 1e9f)); }, seconds, TimeUnit.SECONDS); - logger.debug("Executing call: " + (System.nanoTime() - startNanos) / 1e9f); - Response response = call.execute(); - logger.debug("Call completed: " + (System.nanoTime() - startNanos) / 1e9f, response); + logger.debug("Executing call: " + ((System.nanoTime() - startNanos) / 1e9f)); + final Response response = call.execute(); + logger.debug("Call completed: " + ((System.nanoTime() - startNanos) / 1e9f), response); } @Test - public void whenSetResponseCache_thenCorrect() throws IOException { + public void whenSetResponseCache_thenCorrect() throws IOException { - int cacheSize = 10 * 1024 * 1024; // 10 MiB - File cacheDirectory = new File("src/test/resources/cache"); - Cache cache = new Cache(cacheDirectory, cacheSize); + final int cacheSize = 10 * 1024 * 1024; // 10 MiB + final File cacheDirectory = new File("src/test/resources/cache"); + final Cache cache = new Cache(cacheDirectory, cacheSize); - OkHttpClient clientCached = new OkHttpClient.Builder() - .cache(cache) - .build(); + final OkHttpClient clientCached = new OkHttpClient.Builder().cache(cache).build(); - Request request = new Request.Builder() - .url("http://publicobject.com/helloworld.txt") - .build(); + final Request request = new Request.Builder().url("http://publicobject.com/helloworld.txt").build(); - Response response1 = clientCached.newCall(request).execute(); + final Response response1 = clientCached.newCall(request).execute(); logResponse(response1); - Response response2 = clientCached.newCall(request).execute(); + final Response response2 = clientCached.newCall(request).execute(); logResponse(response2); } private void logResponse(Response response) throws IOException { - logger.debug("Response response: " + response); + logger.debug("Response response: " + response); logger.debug("Response cache response: " + response.cacheResponse()); logger.debug("Response network response: " + response.networkResponse()); logger.debug("Response responseBody: " + response.body().string()); diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java index dce3bb174f..cbe5ff885c 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java @@ -1,14 +1,12 @@ package org.baeldung.okhttp; +import static org.baeldung.client.Consts.APPLICATION_PORT; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; import java.io.File; import java.io.IOException; -import org.junit.Before; -import org.junit.Test; - import okhttp3.Call; import okhttp3.Credentials; import okhttp3.FormBody; @@ -19,9 +17,12 @@ import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; +import org.junit.Before; +import org.junit.Test; + public class OkHttpPostingLiveTest { - private static final String BASE_URL = "http://localhost:8080/spring-rest"; + private static final String BASE_URL = "http://localhost:" + APPLICATION_PORT + "/spring-rest"; private static final String URL_SECURED_BY_BASIC_AUTHENTICATION = "http://browserspy.dk/password-ok.php"; OkHttpClient client; @@ -29,77 +30,56 @@ public class OkHttpPostingLiveTest { @Before public void init() { - client = new OkHttpClient(); + client = new OkHttpClient(); } @Test public void whenSendPostRequest_thenCorrect() throws IOException { - RequestBody formBody = new FormBody.Builder() - .add("username", "test") - .add("password", "test") - .build(); + final RequestBody formBody = new FormBody.Builder().add("username", "test").add("password", "test").build(); - Request request = new Request.Builder() - .url(BASE_URL + "/users") - .post(formBody) - .build(); + final Request request = new Request.Builder().url(BASE_URL + "/users").post(formBody).build(); - Call call = client.newCall(request); - Response response = call.execute(); + final Call call = client.newCall(request); + final Response response = call.execute(); assertThat(response.code(), equalTo(200)); } @Test public void whenSendPostRequestWithAuthorization_thenCorrect() throws IOException { - String postBody = "test post"; + final String postBody = "test post"; - Request request = new Request.Builder() - .url(URL_SECURED_BY_BASIC_AUTHENTICATION) - .addHeader("Authorization", Credentials.basic("test", "test")) - .post(RequestBody.create(MediaType.parse("text/x-markdown; charset=utf-8"), postBody)) - .build(); + final Request request = new Request.Builder().url(URL_SECURED_BY_BASIC_AUTHENTICATION).addHeader("Authorization", Credentials.basic("test", "test")).post(RequestBody.create(MediaType.parse("text/x-markdown; charset=utf-8"), postBody)).build(); - Call call = client.newCall(request); - Response response = call.execute(); + final Call call = client.newCall(request); + final Response response = call.execute(); assertThat(response.code(), equalTo(200)); } @Test public void whenPostJson_thenCorrect() throws IOException { - String json = "{\"id\":1,\"name\":\"John\"}"; + final String json = "{\"id\":1,\"name\":\"John\"}"; - RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json); + final RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json); - Request request = new Request.Builder() - .url(BASE_URL + "/users/detail") - .post(body) - .build(); + final Request request = new Request.Builder().url(BASE_URL + "/users/detail").post(body).build(); - Call call = client.newCall(request); - Response response = call.execute(); + final Call call = client.newCall(request); + final Response response = call.execute(); assertThat(response.code(), equalTo(200)); } @Test public void whenSendMultipartRequest_thenCorrect() throws IOException { - RequestBody requestBody = new MultipartBody.Builder() - .setType(MultipartBody.FORM) - .addFormDataPart("username", "test") - .addFormDataPart("password", "test") - .addFormDataPart("file", "file.txt", - RequestBody.create(MediaType.parse("application/octet-stream"), new File("src/test/resources/test.txt"))) - .build(); + final RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("username", "test").addFormDataPart("password", "test") + .addFormDataPart("file", "file.txt", RequestBody.create(MediaType.parse("application/octet-stream"), new File("src/test/resources/test.txt"))).build(); - Request request = new Request.Builder() - .url(BASE_URL + "/users/multipart") - .post(requestBody) - .build(); + final Request request = new Request.Builder().url(BASE_URL + "/users/multipart").post(requestBody).build(); - Call call = client.newCall(request); - Response response = call.execute(); + final Call call = client.newCall(request); + final Response response = call.execute(); assertThat(response.code(), equalTo(200)); } diff --git a/spring-rest/src/test/java/org/baeldung/web/test/RequestMappingLiveTest.java b/spring-rest/src/test/java/org/baeldung/web/test/RequestMappingLiveTest.java index 3155b5cda9..7828df7304 100644 --- a/spring-rest/src/test/java/org/baeldung/web/test/RequestMappingLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/web/test/RequestMappingLiveTest.java @@ -1,5 +1,6 @@ package org.baeldung.web.test; +import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import org.junit.Test; @@ -31,7 +32,7 @@ public class RequestMappingLiveTest { @Test public void givenAcceptHeader_whenGetFoos_thenOk() { - RestAssured.given().accept("application/json").get(BASE_URI + "foos").then().assertThat().body(equalTo("Get some Foos with Header New")); + RestAssured.given().accept("application/json").get(BASE_URI + "foos").then().assertThat().body(containsString("Get some Foos with Header New")); } @Test From c884ab0f30ec8a0e0fe67f9c52d400aa934d4a7d Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 13:59:00 +0800 Subject: [PATCH 147/399] Delete .classpath --- spring-mvc-handlers/.classpath | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 spring-mvc-handlers/.classpath diff --git a/spring-mvc-handlers/.classpath b/spring-mvc-handlers/.classpath deleted file mode 100644 index c4978de982..0000000000 --- a/spring-mvc-handlers/.classpath +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - From 991b9629a049ad53b95601832f902e011338cdef Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 15:02:41 +0800 Subject: [PATCH 148/399] Formatted the code --- ...ationMethodHandlerAdapterExampleController.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java index 9837467e19..ac38155d8c 100644 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java @@ -6,12 +6,10 @@ import org.springframework.web.servlet.ModelAndView; @Controller public class AnnotationMethodHandlerAdapterExampleController { - @RequestMapping("/annotedName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - - model.addObject("message", "Dinesh"); - - return model; - } + @RequestMapping("/annotedName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + model.addObject("message", "Dinesh"); + return model; + } } From 7d335e369498865de5f1ea723b2e1e263e754367 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 15:04:34 +0800 Subject: [PATCH 149/399] Delete .project --- spring-mvc-handlers/.project | 42 ------------------------------------ 1 file changed, 42 deletions(-) delete mode 100644 spring-mvc-handlers/.project diff --git a/spring-mvc-handlers/.project b/spring-mvc-handlers/.project deleted file mode 100644 index 25a99f0f7f..0000000000 --- a/spring-mvc-handlers/.project +++ /dev/null @@ -1,42 +0,0 @@ - - - SpringMVCHandlers - - - - - - org.eclipse.wst.jsdt.core.javascriptValidator - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.wst.common.project.facet.core.builder - - - - - org.eclipse.wst.validation.validationbuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - org.eclipse.wst.common.project.facet.core.nature - org.eclipse.wst.jsdt.core.jsNature - - From 7868a1ec845818b19429a7b69d1bd381ecabc673 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 15:04:54 +0800 Subject: [PATCH 150/399] Formatted the code --- ...MappingHandlerAdapterExampleController.java | 14 ++++++-------- ...trollerHandlerAdapterExampleController.java | 18 ++++++++---------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java index 012ba555dc..06c94a7746 100644 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java @@ -6,12 +6,10 @@ import org.springframework.web.servlet.ModelAndView; @Controller public class RequestMappingHandlerAdapterExampleController { - @RequestMapping("/requestName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - - model.addObject("message", "Madhwal"); - - return model; - } + @RequestMapping("/requestName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + model.addObject("message", "Madhwal"); + return model; + } } diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java index 59d932812c..6e6e29e3d6 100644 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java @@ -7,15 +7,13 @@ import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class SimpleControllerHandlerAdapterExampleController extends -AbstractController { + AbstractController { -@Override -protected ModelAndView handleRequestInternal(HttpServletRequest arg0, - HttpServletResponse arg1) throws Exception { -ModelAndView model = new ModelAndView("Greeting"); - -model.addObject("message", "Dinesh Madhwal"); - -return model; -} + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest arg0, + HttpServletResponse arg1) throws Exception { + ModelAndView model = new ModelAndView("Greeting"); + model.addObject("message", "Dinesh Madhwal"); + return model; + } } \ No newline at end of file From 3c8cf035eceb59b4dcb995b5738f461b0ba34231 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 29 Nov 2016 15:07:16 +0800 Subject: [PATCH 151/399] Formatted the code --- .../RequestMappingHandlerAdapterExampleController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java index 06c94a7746..aab04516d9 100644 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java @@ -9,7 +9,7 @@ public class RequestMappingHandlerAdapterExampleController { @RequestMapping("/requestName") public ModelAndView getEmployeeName() { ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message", "Madhwal"); + model.addObject("message","Madhwal"); return model; } } From 78e9357e5ed077fc0909692670bbd8b2c00b030a Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Tue, 29 Nov 2016 14:25:32 +0530 Subject: [PATCH 152/399] Updated Test --- javax-servlets/pom.xml | 6 +-- .../src/main/java/com/root/FormServlet.java | 5 +- .../test/java/com/root/FormServletTest.java | 53 +++++++------------ 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml index 2d2e3a4b8a..76434a8589 100644 --- a/javax-servlets/pom.xml +++ b/javax-servlets/pom.xml @@ -22,9 +22,9 @@ test - org.mockito - mockito-all - 1.10.19 + org.apache.httpcomponents + httpclient + 4.5 test diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index be83cece8f..10187f38f6 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -7,7 +7,6 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; @WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { @@ -23,8 +22,8 @@ public class FormServlet extends HttpServlet { double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); request.setAttribute("bmi", bmi); - PrintWriter out= response.getWriter(); - out.write(String.valueOf(bmi)); + response.setHeader("Test", "Success"); + response.setHeader("BMI", String.valueOf(bmi)); RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/root/FormServletTest.java index 2d6ce22db5..437741e12d 100644 --- a/javax-servlets/src/test/java/com/root/FormServletTest.java +++ b/javax-servlets/src/test/java/com/root/FormServletTest.java @@ -1,51 +1,34 @@ package com.root; -import org.junit.Before; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import javax.servlet.RequestDispatcher; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; -import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; public class FormServletTest { - @Mock - HttpServletRequest request; - - @Mock - HttpServletResponse response; - - @Mock - RequestDispatcher requestDispatcher; - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - } - @Test - public void testFormServlet() throws Exception { + public void whenPostRequestUsingHttpClient_thenCorrect() throws Exception { - when(request.getParameter("height")).thenReturn("2"); - when(request.getParameter("weight")).thenReturn("80"); + HttpClient client = new DefaultHttpClient(); + HttpPost method = new HttpPost("http://localhost:8080/calculateServlet"); - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - when(response.getWriter()).thenReturn(pw); + List nvps = new ArrayList(); + nvps.add(new BasicNameValuePair("height", String.valueOf(2))); + nvps.add(new BasicNameValuePair("weight", String.valueOf(80))); - new FormServlet().doPost(request, response); + method.setEntity(new UrlEncodedFormEntity(nvps)); + HttpResponse httpResponse = client.execute(method); - verify(request).setAttribute("bmi", 20.0); - - String result = sw.getBuffer().toString().trim(); - assertEquals("20.0", result); + assertEquals("Success", httpResponse.getHeaders("Test")[0].getValue()); + assertEquals("20.0", httpResponse.getHeaders("BMI")[0].getValue()); } } From f898f69d0bc4bd96a2d5a09a49fb1e3367629088 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Tue, 29 Nov 2016 14:31:15 +0530 Subject: [PATCH 153/399] Formatting --- javax-servlets/src/main/java/com/root/FormServlet.java | 1 + 1 file changed, 1 insertion(+) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 10187f38f6..94d0056e21 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -20,6 +20,7 @@ public class FormServlet extends HttpServlet { try { double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); + request.setAttribute("bmi", bmi); response.setHeader("Test", "Success"); From b94c33b2bb4510e678a5a9794d5c4ff34f305ba3 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Tue, 29 Nov 2016 14:33:23 +0530 Subject: [PATCH 154/399] conflicts removed --- javax-servlets/src/main/java/com/root/FormServlet.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 94d0056e21..76961b7780 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -34,6 +34,13 @@ public class FormServlet extends HttpServlet { } } + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + // do something else here + } + private Double calculateBMI(Double weight, Double height) { return weight / (height * height); From 2fc22b5f9d34ebd7803cd4e41049c003026e62c2 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Tue, 29 Nov 2016 14:36:16 +0530 Subject: [PATCH 155/399] Format --- javax-servlets/src/main/java/com/root/FormServlet.java | 1 - 1 file changed, 1 deletion(-) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 76961b7780..fb7a02f4bc 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -22,7 +22,6 @@ public class FormServlet extends HttpServlet { double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); request.setAttribute("bmi", bmi); - response.setHeader("Test", "Success"); response.setHeader("BMI", String.valueOf(bmi)); From 73ac10fb96cd17bd5a69604c96b6b648d0321828 Mon Sep 17 00:00:00 2001 From: Hector Romero Date: Sun, 27 Nov 2016 06:18:12 -0600 Subject: [PATCH 156/399] BAEL-7: More examples for Join and Split Collections --- .../JoinSplitCollectionsUnitTest.java | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java new file mode 100644 index 0000000000..b4dd0e46b1 --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java @@ -0,0 +1,154 @@ +package org.baeldung.java.collections; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.junit.Test; + +public class JoinSplitCollectionsUnitTest { + + @Test + public void whenJoiningTwoArrays_thenJoined() { + String[] animals1 = new String[] { "Dog", "Cat" }; + String[] animals2 = new String[] { "Bird", "Cow" }; + String[] result = Stream.concat(Arrays.stream(animals1), Arrays.stream(animals2)) + .toArray(size -> new String[size]); + + assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); + } + + @Test + public void whenJoiningTwoListsWithFilter_thenJoined() { + List list1 = Arrays.asList(7, 8, 11); + List list2 = Arrays.asList(9, 12, 10); + List result = Stream.concat(list1.stream(), list2.stream()).filter(next -> next <= 10) + .collect(Collectors.toList()); + + assertTrue(result.equals(Arrays.asList(7, 8, 9, 10))); + } + + @Test + public void whenConvertArrayToString_thenConverted() { + String[] colors = new String[] { "Red", "Blue", "Green", "Yellow" }; + String result = Arrays.stream(colors) + .collect(Collectors.joining(", ")); + + assertEquals(result, "Red, Blue, Green, Yellow"); + } + + @Test + public void whenConvertListToString_thenConverted() { + List directions = Arrays.asList("Left", "Right", "Top", "Bottom"); + String result = directions.stream() + .collect(Collectors.joining(", ")); + + assertEquals(result, "Left, Right, Top, Bottom"); + } + + @Test + public void whenConvertMapToString_thenConverted() { + Map users = new HashMap<>(); + users.put(1, "John Doe"); + users.put(2, "Paul Smith"); + users.put(3, "Susan Anderson"); + + String result = users.entrySet().stream().map(entry -> entry.getKey() + " = " + entry.getValue()) + .collect(Collectors.joining(", ")); + + assertEquals(result, "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"); + } + + @Test + public void whenConvertNestedListToString_thenConverted() { + List> nested = new ArrayList<>(); + nested.add(Arrays.asList("Left", "Right", "Top", "Bottom")); + nested.add(Arrays.asList("Red", "Blue", "Green", "Yellow")); + + String result = nested.stream() + .map(nextList -> nextList.stream() + .collect(Collectors.joining("-"))) + .collect(Collectors.joining("; ")); + + assertEquals(result, "Left-Right-Top-Bottom; Red-Blue-Green-Yellow"); + } + + @Test + public void whenConvertListToStringAndSkipNull_thenConverted() { + List fruits = Arrays.asList("Apple", "Orange", null, "Grape"); + String result = fruits.stream() + .filter(next -> next != null) + .collect(Collectors.joining(", ")); + + assertEquals(result, "Apple, Orange, Grape"); + } + + @Test + public void whenSplitListGroupOddEven_thenConverted() { + List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + Map> result = list.stream() + .collect(Collectors.partitioningBy(number -> number % 2 == 0)); + + assertTrue(result.get(true).equals(Arrays.asList(2, 4, 6, 8, 10))); + assertTrue(result.get(false).equals(Arrays.asList(1, 3, 5, 7, 9))); + } + +@Test +public void whenSplitArrayByWordLength_thenConverted() { + String[] words = new String[]{"bye", "cold", "it", "and", "my", "word"}; + Map> result = Arrays.stream(words) + .collect(Collectors.groupingBy(word -> word.length())); + + assertTrue(result.get(2).equals(Arrays.asList("it", "my"))); + assertTrue(result.get(3).equals(Arrays.asList("bye", "and"))); + assertTrue(result.get(4).equals(Arrays.asList("cold", "word"))); +} + + @Test + public void whenConvertStringToArray_thenConverted() { + String colors = "Red, Blue, Green, Yellow"; + String[] result = colors.split(", "); + + assertArrayEquals(result, new String[] { "Red", "Blue", "Green", "Yellow" }); + } + + @Test + public void whenConvertStringToList_thenConverted() { + String colors = "Left, Right, Top, Bottom"; + List result = Arrays.asList(colors.split(", ")); + + assertTrue(result.equals(Arrays.asList("Left", "Right", "Top", "Bottom"))); + } + + @Test + public void whenConvertStringToMap_thenConverted() { + String users = "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"; + + Map result = Arrays.stream(users.split(", ")) + .map(next -> next.split(" = ")) + .collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); + + assertEquals(result.get(1), "John Doe"); + assertEquals(result.get(2), "Paul Smith"); + assertEquals(result.get(3), "Susan Anderson"); + } + + @Test + public void whenConvertListToStringMultipleSeparators_thenConverted() { + String fruits = "Apple. , Orange, Grape. Lemon"; + + List result = Arrays.stream(fruits.split("[,|.]")) + .map(String::trim).filter(next -> !next.isEmpty()) + .collect(Collectors.toList()); + + assertTrue(result.equals(Arrays.asList("Apple", "Orange", "Grape", "Lemon"))); + } +} From 3af165fb1143e2c25c851c5f161f7ed1295d8a8d Mon Sep 17 00:00:00 2001 From: maverick Date: Tue, 29 Nov 2016 19:32:12 +0530 Subject: [PATCH 157/399] For Sorting Article --- .../src/test/java/org/baeldung/java/sorting/JavaSorting.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java diff --git a/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java b/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java new file mode 100644 index 0000000000..2e15a3576f --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java @@ -0,0 +1,5 @@ +package org.baeldung.java.sorting; + +public class JavaSorting { + +} From 751a3ca19f08278f4c19d19eb9b287581dd72db2 Mon Sep 17 00:00:00 2001 From: maverick Date: Tue, 29 Nov 2016 19:36:59 +0530 Subject: [PATCH 158/399] Changes for sorting article --- .../org/baeldung/java/sorting/Employee.java | 58 +++++ .../baeldung/java/sorting/JavaSorting.java | 216 ++++++++++++++++++ 2 files changed, 274 insertions(+) create mode 100644 core-java/src/test/java/org/baeldung/java/sorting/Employee.java diff --git a/core-java/src/test/java/org/baeldung/java/sorting/Employee.java b/core-java/src/test/java/org/baeldung/java/sorting/Employee.java new file mode 100644 index 0000000000..768ee8f397 --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/sorting/Employee.java @@ -0,0 +1,58 @@ +package org.baeldung.java.sorting; + +public class Employee implements Comparable { + + private String name; + private int age; + private double salary; + + public Employee(String name, int age, double salary) { + this.name = name; + this.age = age; + this.salary = salary; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public double getSalary() { + return salary; + } + + public void setSalary(double salary) { + this.salary = salary; + } + + @Override + public boolean equals(Object obj) { + return ((Employee) obj).getName().equals(getName()); + } + + @Override + public int compareTo(Object o) { + Employee e = (Employee) o; + return getName().compareTo(e.getName()); + } + + @Override + public String toString() { + return new StringBuffer() + .append("(").append(getName()) + .append(getAge()).append(",") + .append(getSalary()).append(")").toString(); + } + +} diff --git a/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java b/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java index 2e15a3576f..1ae7bcbbb0 100644 --- a/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java +++ b/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java @@ -1,5 +1,221 @@ package org.baeldung.java.sorting; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.commons.lang3.ArrayUtils; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.manipulation.Sortable; + +import com.google.common.primitives.Ints; + public class JavaSorting { + + private int [] toSort; + private int [] sortedInts; + private int [] sortedRangeInts; +// private Integer [] integers; +// private Integer [] sortedIntegers; +// private List integersList; +// private List sortedIntegersList; + private Employee[] employees; + private Employee[] employeesSorted; + private Employee[] employeesSortedByAge; + private HashMap map; + + @Before + public void initVariables () { + + toSort = new int[] + { 5, 1, 89, 255, 7, 88, 200, 123, 66 }; + sortedInts = new int[] + {1, 5, 7, 66, 88, 89, 123, 200, 255}; + sortedRangeInts = new int[] + {5, 1, 89, 7, 88, 200, 255, 123, 66}; + +// integers = new Integer[] +// { 5, 1, 89, 255, 7, 88, 200, 123, 66 }; +// sortedIntegers = new Integer[] +// {1, 5, 7, 66, 88, 89, 123, 200, 255}; +// +// integersList = Arrays.asList(new Integer[] { 5, 1, 89, 255, 7, 88, 200, 123, 66 }); +// sortedIntegersList = Arrays.asList(new Integer[] {1, 5, 7, 66, 88, 89, 123, 200, 255}); + + employees = new Employee[] { + new Employee("John", 23, 5000), + new Employee("Steve", 26, 6000), + new Employee("Frank", 33, 7000), + new Employee("Earl", 43, 10000), + new Employee("Jessica", 23, 4000), + new Employee("Pearl", 33, 6000)}; + employeesSorted = new Employee[] { + new Employee("Earl", 43, 10000), + new Employee("Frank", 33, 70000), + new Employee("Jessica", 23, 4000), + new Employee("John", 23, 5000), + new Employee("Pearl", 33, 4000), + new Employee("Steve", 26, 6000)}; + employeesSortedByAge = new Employee[] { + new Employee("John", 23, 5000), + new Employee("Jessica", 23, 4000), + new Employee("Steve", 26, 6000), + new Employee("Frank", 33, 70000), + new Employee("Pearl", 33, 4000), + new Employee("Earl", 43, 10000)}; + + HashMap map = new HashMap<>(); + map.put(55, "John"); + map.put(22, "Apple"); + map.put(66, "Earl"); + map.put(77, "Pearl"); + map.put(12, "George"); + map.put(6, "Rocky"); + + } + + @Test + public void givenIntArray_whenUsingSort_thenSortedArray() { + Arrays.sort(toSort); + + assertTrue(Arrays.equals(toSort, sortedInts)); + } + + @Test + public void givenIntegerArray_whenUsingSort_thenSortedArray() { + Integer [] integers = ArrayUtils.toObject(toSort); + Arrays.sort(integers, new Comparator() { + @Override + public int compare(Integer a, Integer b) { + return a - b; + } + }); + + assertTrue(Arrays.equals(integers, ArrayUtils.toObject(sortedInts))); + } + + @Test + public void givenArray_whenUsingSortWithLambdas_thenSortedArray() { + Integer [] integersToSort = ArrayUtils.toObject(toSort); + Arrays.sort(integersToSort, (a, b) -> { + return a - b; + }); + + assertTrue(Arrays.equals(integersToSort, ArrayUtils.toObject(sortedInts))); + } + + @Test + public void givenEmpArray_SortEmpArray_thenSortedArrayinNaturalOrder() { + Arrays.sort(employees); + + assertTrue(Arrays.equals(employees, employeesSorted)); + } + + + @Test + public void givenIntArray_whenUsingRangeSort_thenRangeSortedArray() { + Arrays.sort(toSort, 3, 7); + + assertTrue(Arrays.equals(toSort, sortedRangeInts)); + } + + @Test + public void givenIntArray_whenUsingParallelSort_thenParallelSortedArray() { + Arrays.parallelSort(toSort); + + assertTrue(Arrays.equals(toSort, sortedInts)); + } + + + + @Test + public void givenArrayObjects_whenUsingComparing_thenSortedArrayObjects() { + List employeesList = Arrays.asList(employees); + + employeesList.sort(Comparator.comparing(Employee::getAge));//.thenComparing(Employee::getName)); + + assertTrue(Arrays.equals(employeesList.toArray(), employeesSortedByAge)); + } + + @Test + public void givenList_whenUsingSort_thenSortedList() { + List toSortList = Ints.asList(toSort); + Collections.sort(toSortList); + + assertTrue(Arrays.equals(toSortList.toArray(), + ArrayUtils.toObject(sortedInts))); + } + + @Test + public void givenMap_whenSortingByKeys_thenSortedMap() { + Integer[] sortedKeys = new Integer[] { 6, 12, 22, 55, 66, 77 }; + + List> entries = new ArrayList<>(map.entrySet()); + Collections.sort(entries, new Comparator>() { + @Override + public int compare(Entry o1, Entry o2) { + return o1.getKey().compareTo(o2.getKey()); + } + }); + HashMap sortedMap = new LinkedHashMap<>(); + for (Map.Entry entry : entries) { + sortedMap.put(entry.getKey(), entry.getValue()); + } + + assertTrue(Arrays.equals(sortedMap.keySet().toArray(), sortedKeys)); + } + + @Test + public void givenMap_whenSortingByValues_thenSortedMap() { + String[] sortedValues = new String[] + { "Apple", "Earl", "George", "John", "Pearl", "Rocky" }; + + List> entries = new ArrayList<>(map.entrySet()); + Collections.sort(entries, new Comparator>() { + @Override + public int compare(Entry o1, Entry o2) { + return o1.getValue().compareTo(o2.getValue()); + } + }); + HashMap sortedMap = new LinkedHashMap<>(); + for (Map.Entry entry : entries) { + sortedMap.put(entry.getKey(), entry.getValue()); + } + + assertTrue(Arrays.equals(sortedMap.values().toArray(), sortedValues)); + } + + + + + + + @Test + public void givenSet_whenUsingSort_thenSortedSet() { + HashSet integersSet = new LinkedHashSet<>(Ints.asList(toSort)); + HashSet descSortedIntegersSet = new LinkedHashSet<>(Arrays.asList(new Integer[] + {255, 200, 123, 89, 88, 66, 7, 5, 1})); + + ArrayList list = new ArrayList(integersSet); + Collections.sort(list, (i1, i2) -> { + return i2 - i1; + }); + integersSet = new LinkedHashSet<>(list); + + assertTrue(Arrays.equals(integersSet.toArray(), descSortedIntegersSet.toArray())); + } + + } From b6403fc1f0e5018fc7211f1fe4d79545db8d3d34 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Tue, 29 Nov 2016 15:54:58 +0100 Subject: [PATCH 159/399] BAEL-89 - excluding integration test --- spring-session/pom.xml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/spring-session/pom.xml b/spring-session/pom.xml index 848fdfc405..49329af345 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -12,7 +12,8 @@ org.springframework.boot spring-boot-starter-parent 1.4.0.RELEASE - + + @@ -66,6 +67,19 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*ControllerTest.java + + + + + 2.19.1 + \ No newline at end of file From 7676697c4cbefcd227fcb684d53a77d2992f0524 Mon Sep 17 00:00:00 2001 From: Diane Duan Date: Wed, 30 Nov 2016 00:41:30 +0800 Subject: [PATCH 160/399] BAEL-453: How to use the Spring FactoryBean - use custom bean name (#866) * custom bean name * @Autowire --- .../com/baeldung/factorybean/FactoryBeanAppConfig.java | 7 +------ .../baeldung/factorybean/FactoryBeanJavaConfigTest.java | 6 ++++-- .../com/baeldung/factorybean/FactoryBeanXmlConfigTest.java | 3 ++- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java index 02eef57e3d..f0cfadcab1 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java @@ -6,16 +6,11 @@ import org.springframework.context.annotation.Configuration; @Configuration public class FactoryBeanAppConfig { - @Bean + @Bean(name = "tool") public ToolFactory toolFactory() { ToolFactory factory = new ToolFactory(); factory.setFactoryId(7070); factory.setToolId(2); return factory; } - - @Bean - public Tool tool() throws Exception { - return toolFactory().getObject(); - } } diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java index 1bd1f3d234..700d8050c7 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java @@ -7,6 +7,8 @@ import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -14,9 +16,9 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @ContextConfiguration(classes = FactoryBeanAppConfig.class) public class FactoryBeanJavaConfigTest { - @Resource + @Autowired private Tool tool; - @Resource(name = "&toolFactory") + @Resource(name = "&tool") private ToolFactory toolFactory; @Test diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java index b479b231d9..8ba1129b30 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java @@ -7,6 +7,7 @@ import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -14,7 +15,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @ContextConfiguration(locations = { "classpath:factorybean-spring-ctx.xml" }) public class FactoryBeanXmlConfigTest { - @Resource + @Autowired private Tool tool; @Resource(name = "&tool") private ToolFactory toolFactory; From 0e3b7fe17c866e3a6279642c294770c88fde0ddc Mon Sep 17 00:00:00 2001 From: pivovarit Date: Tue, 29 Nov 2016 17:43:17 +0100 Subject: [PATCH 161/399] Formatting --- .../factorybean/FactoryBeanJavaConfigTest.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java index 700d8050c7..706aa0a63f 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java @@ -1,23 +1,23 @@ package com.baeldung.factorybean; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.junit.Assert.assertThat; - -import javax.annotation.Resource; - import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import javax.annotation.Resource; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = FactoryBeanAppConfig.class) public class FactoryBeanJavaConfigTest { @Autowired private Tool tool; + @Resource(name = "&tool") private ToolFactory toolFactory; From 211d7699423c91f5a23f590302f35fdac79cfbd6 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Tue, 29 Nov 2016 18:02:19 +0100 Subject: [PATCH 162/399] Refactor FileSearchExample --- .../java/nio2/visitor/FileSearchExample.java | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java index 15910abf9b..62c6954e1a 100644 --- a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java +++ b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java @@ -1,23 +1,19 @@ package com.baeldung.java.nio2.visitor; +import java.io.IOException; +import java.nio.file.*; +import java.nio.file.attribute.BasicFileAttributes; + import static java.nio.file.FileVisitResult.CONTINUE; import static java.nio.file.FileVisitResult.TERMINATE; -import java.io.IOException; -import java.nio.file.FileVisitResult; -import java.nio.file.FileVisitor; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.attribute.BasicFileAttributes; - public class FileSearchExample implements FileVisitor { - private static String FILE_NAME; - private static Path START_DIR; + private final String fileName; + private final Path startDir; public FileSearchExample(String fileName, Path startingDir) { - FILE_NAME = fileName; - START_DIR = startingDir; + this.fileName = fileName; + startDir = startingDir; } @Override @@ -28,7 +24,7 @@ public class FileSearchExample implements FileVisitor { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { String fileName = file.getFileName().toString(); - if (FILE_NAME.equals(fileName)) { + if (this.fileName.equals(fileName)) { System.out.println("File found: " + file.toString()); return TERMINATE; } @@ -43,9 +39,9 @@ public class FileSearchExample implements FileVisitor { @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { - boolean finishedSearch = Files.isSameFile(dir, START_DIR); + boolean finishedSearch = Files.isSameFile(dir, startDir); if (finishedSearch) { - System.out.println("File:" + FILE_NAME + " not found"); + System.out.println("File:" + fileName + " not found"); return TERMINATE; } return CONTINUE; From 7194d8b84a78c62eb3ddbed06104eeb8007e0b15 Mon Sep 17 00:00:00 2001 From: eugenp Date: Wed, 30 Nov 2016 09:05:06 +0200 Subject: [PATCH 163/399] cleanup work --- .../baeldung/java/sorting/JavaSorting.java | 129 +++++++----------- 1 file changed, 47 insertions(+), 82 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java b/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java index 1ae7bcbbb0..72730aeb8b 100644 --- a/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java +++ b/core-java/src/test/java/org/baeldung/java/sorting/JavaSorting.java @@ -17,64 +17,42 @@ import java.util.Map.Entry; import org.apache.commons.lang3.ArrayUtils; import org.junit.Before; import org.junit.Test; -import org.junit.runner.manipulation.Sortable; import com.google.common.primitives.Ints; public class JavaSorting { - - private int [] toSort; - private int [] sortedInts; - private int [] sortedRangeInts; -// private Integer [] integers; -// private Integer [] sortedIntegers; -// private List integersList; -// private List sortedIntegersList; + + private int[] toSort; + private int[] sortedInts; + private int[] sortedRangeInts; + // private Integer [] integers; + // private Integer [] sortedIntegers; + // private List integersList; + // private List sortedIntegersList; private Employee[] employees; private Employee[] employeesSorted; private Employee[] employeesSortedByAge; private HashMap map; - + @Before - public void initVariables () { - - toSort = new int[] - { 5, 1, 89, 255, 7, 88, 200, 123, 66 }; - sortedInts = new int[] - {1, 5, 7, 66, 88, 89, 123, 200, 255}; - sortedRangeInts = new int[] - {5, 1, 89, 7, 88, 200, 255, 123, 66}; - -// integers = new Integer[] -// { 5, 1, 89, 255, 7, 88, 200, 123, 66 }; -// sortedIntegers = new Integer[] -// {1, 5, 7, 66, 88, 89, 123, 200, 255}; -// -// integersList = Arrays.asList(new Integer[] { 5, 1, 89, 255, 7, 88, 200, 123, 66 }); -// sortedIntegersList = Arrays.asList(new Integer[] {1, 5, 7, 66, 88, 89, 123, 200, 255}); - - employees = new Employee[] { - new Employee("John", 23, 5000), - new Employee("Steve", 26, 6000), - new Employee("Frank", 33, 7000), - new Employee("Earl", 43, 10000), - new Employee("Jessica", 23, 4000), - new Employee("Pearl", 33, 6000)}; - employeesSorted = new Employee[] { - new Employee("Earl", 43, 10000), - new Employee("Frank", 33, 70000), - new Employee("Jessica", 23, 4000), - new Employee("John", 23, 5000), - new Employee("Pearl", 33, 4000), - new Employee("Steve", 26, 6000)}; - employeesSortedByAge = new Employee[] { - new Employee("John", 23, 5000), - new Employee("Jessica", 23, 4000), - new Employee("Steve", 26, 6000), - new Employee("Frank", 33, 70000), - new Employee("Pearl", 33, 4000), - new Employee("Earl", 43, 10000)}; - + public void initVariables() { + + toSort = new int[] { 5, 1, 89, 255, 7, 88, 200, 123, 66 }; + sortedInts = new int[] { 1, 5, 7, 66, 88, 89, 123, 200, 255 }; + sortedRangeInts = new int[] { 5, 1, 89, 7, 88, 200, 255, 123, 66 }; + + // integers = new Integer[] + // { 5, 1, 89, 255, 7, 88, 200, 123, 66 }; + // sortedIntegers = new Integer[] + // {1, 5, 7, 66, 88, 89, 123, 200, 255}; + // + // integersList = Arrays.asList(new Integer[] { 5, 1, 89, 255, 7, 88, 200, 123, 66 }); + // sortedIntegersList = Arrays.asList(new Integer[] {1, 5, 7, 66, 88, 89, 123, 200, 255}); + + employees = new Employee[] { new Employee("John", 23, 5000), new Employee("Steve", 26, 6000), new Employee("Frank", 33, 7000), new Employee("Earl", 43, 10000), new Employee("Jessica", 23, 4000), new Employee("Pearl", 33, 6000) }; + employeesSorted = new Employee[] { new Employee("Earl", 43, 10000), new Employee("Frank", 33, 70000), new Employee("Jessica", 23, 4000), new Employee("John", 23, 5000), new Employee("Pearl", 33, 4000), new Employee("Steve", 26, 6000) }; + employeesSortedByAge = new Employee[] { new Employee("John", 23, 5000), new Employee("Jessica", 23, 4000), new Employee("Steve", 26, 6000), new Employee("Frank", 33, 70000), new Employee("Pearl", 33, 4000), new Employee("Earl", 43, 10000) }; + HashMap map = new HashMap<>(); map.put(55, "John"); map.put(22, "Apple"); @@ -84,7 +62,7 @@ public class JavaSorting { map.put(6, "Rocky"); } - + @Test public void givenIntArray_whenUsingSort_thenSortedArray() { Arrays.sort(toSort); @@ -94,24 +72,24 @@ public class JavaSorting { @Test public void givenIntegerArray_whenUsingSort_thenSortedArray() { - Integer [] integers = ArrayUtils.toObject(toSort); + Integer[] integers = ArrayUtils.toObject(toSort); Arrays.sort(integers, new Comparator() { @Override public int compare(Integer a, Integer b) { return a - b; } }); - + assertTrue(Arrays.equals(integers, ArrayUtils.toObject(sortedInts))); } @Test public void givenArray_whenUsingSortWithLambdas_thenSortedArray() { - Integer [] integersToSort = ArrayUtils.toObject(toSort); + Integer[] integersToSort = ArrayUtils.toObject(toSort); Arrays.sort(integersToSort, (a, b) -> { return a - b; }); - + assertTrue(Arrays.equals(integersToSort, ArrayUtils.toObject(sortedInts))); } @@ -122,39 +100,35 @@ public class JavaSorting { assertTrue(Arrays.equals(employees, employeesSorted)); } - @Test public void givenIntArray_whenUsingRangeSort_thenRangeSortedArray() { Arrays.sort(toSort, 3, 7); - + assertTrue(Arrays.equals(toSort, sortedRangeInts)); } - - @Test - public void givenIntArray_whenUsingParallelSort_thenParallelSortedArray() { + + @Test + public void givenIntArray_whenUsingParallelSort_thenArraySorted() { Arrays.parallelSort(toSort); - + assertTrue(Arrays.equals(toSort, sortedInts)); } - - @Test public void givenArrayObjects_whenUsingComparing_thenSortedArrayObjects() { List employeesList = Arrays.asList(employees); - - employeesList.sort(Comparator.comparing(Employee::getAge));//.thenComparing(Employee::getName)); + + employeesList.sort(Comparator.comparing(Employee::getAge));// .thenComparing(Employee::getName)); assertTrue(Arrays.equals(employeesList.toArray(), employeesSortedByAge)); } - + @Test public void givenList_whenUsingSort_thenSortedList() { List toSortList = Ints.asList(toSort); Collections.sort(toSortList); - assertTrue(Arrays.equals(toSortList.toArray(), - ArrayUtils.toObject(sortedInts))); + assertTrue(Arrays.equals(toSortList.toArray(), ArrayUtils.toObject(sortedInts))); } @Test @@ -172,14 +146,13 @@ public class JavaSorting { for (Map.Entry entry : entries) { sortedMap.put(entry.getKey(), entry.getValue()); } - + assertTrue(Arrays.equals(sortedMap.keySet().toArray(), sortedKeys)); } @Test public void givenMap_whenSortingByValues_thenSortedMap() { - String[] sortedValues = new String[] - { "Apple", "Earl", "George", "John", "Pearl", "Rocky" }; + String[] sortedValues = new String[] { "Apple", "Earl", "George", "John", "Pearl", "Rocky" }; List> entries = new ArrayList<>(map.entrySet()); Collections.sort(entries, new Comparator>() { @@ -192,30 +165,22 @@ public class JavaSorting { for (Map.Entry entry : entries) { sortedMap.put(entry.getKey(), entry.getValue()); } - + assertTrue(Arrays.equals(sortedMap.values().toArray(), sortedValues)); } - - - - - @Test public void givenSet_whenUsingSort_thenSortedSet() { HashSet integersSet = new LinkedHashSet<>(Ints.asList(toSort)); - HashSet descSortedIntegersSet = new LinkedHashSet<>(Arrays.asList(new Integer[] - {255, 200, 123, 89, 88, 66, 7, 5, 1})); - + HashSet descSortedIntegersSet = new LinkedHashSet<>(Arrays.asList(new Integer[] { 255, 200, 123, 89, 88, 66, 7, 5, 1 })); + ArrayList list = new ArrayList(integersSet); Collections.sort(list, (i1, i2) -> { return i2 - i1; }); integersSet = new LinkedHashSet<>(list); - + assertTrue(Arrays.equals(integersSet.toArray(), descSortedIntegersSet.toArray())); } - - } From f354f9e3057481c76c10a1e2aa127d3abb95b329 Mon Sep 17 00:00:00 2001 From: eugenp Date: Wed, 30 Nov 2016 09:05:38 +0200 Subject: [PATCH 164/399] minor formatting work --- .../com/baeldung/hashing/SHA256Hashing.java | 19 +++++++------------ .../java/nio2/visitor/FileVisitorImpl.java | 4 ++-- .../com/baeldung/generics/GenericsTest.java | 6 +++--- .../baeldung/hashing/SHA256HashingTest.java | 4 +--- .../java/conversion/StringConversionTest.java | 3 +-- .../java/nio2/async/AsyncEchoServer.java | 1 + .../java/nio2/async/AsyncEchoServer2.java | 1 - .../java/nio2/async/AsyncFileTest.java | 3 +-- .../baeldung/java/io/JavaFileUnitTest.java | 1 - .../org/baeldung/java/sorting/Employee.java | 15 ++++++--------- 10 files changed, 22 insertions(+), 35 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/hashing/SHA256Hashing.java b/core-java/src/main/java/com/baeldung/hashing/SHA256Hashing.java index 9c8fc86e7a..4fa164cadc 100644 --- a/core-java/src/main/java/com/baeldung/hashing/SHA256Hashing.java +++ b/core-java/src/main/java/com/baeldung/hashing/SHA256Hashing.java @@ -1,6 +1,5 @@ package com.baeldung.hashing; - import com.google.common.hash.Hashing; import org.apache.commons.codec.digest.DigestUtils; import org.bouncycastle.util.encoders.Hex; @@ -11,17 +10,14 @@ import java.security.NoSuchAlgorithmException; public class SHA256Hashing { - public static String HashWithJavaMessageDigest(final String originalString) - throws NoSuchAlgorithmException { + public static String HashWithJavaMessageDigest(final String originalString) throws NoSuchAlgorithmException { final MessageDigest digest = MessageDigest.getInstance("SHA-256"); - final byte[] encodedhash = digest.digest( - originalString.getBytes(StandardCharsets.UTF_8)); + final byte[] encodedhash = digest.digest(originalString.getBytes(StandardCharsets.UTF_8)); return bytesToHex(encodedhash); } public static String HashWithGuava(final String originalString) { - final String sha256hex = Hashing.sha256().hashString( - originalString, StandardCharsets.UTF_8).toString(); + final String sha256hex = Hashing.sha256().hashString(originalString, StandardCharsets.UTF_8).toString(); return sha256hex; } @@ -30,11 +26,9 @@ public class SHA256Hashing { return sha256hex; } - public static String HashWithBouncyCastle(final String originalString) - throws NoSuchAlgorithmException { + public static String HashWithBouncyCastle(final String originalString) throws NoSuchAlgorithmException { final MessageDigest digest = MessageDigest.getInstance("SHA-256"); - final byte[] hash = digest.digest( - originalString.getBytes(StandardCharsets.UTF_8)); + final byte[] hash = digest.digest(originalString.getBytes(StandardCharsets.UTF_8)); final String sha256hex = new String(Hex.encode(hash)); return sha256hex; } @@ -43,7 +37,8 @@ public class SHA256Hashing { StringBuffer hexString = new StringBuffer(); for (int i = 0; i < hash.length; i++) { String hex = Integer.toHexString(0xff & hash[i]); - if(hex.length() == 1) hexString.append('0'); + if (hex.length() == 1) + hexString.append('0'); hexString.append(hex); } return hexString.toString(); diff --git a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java index 360d6d0689..ee9fb23856 100644 --- a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java +++ b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java @@ -19,12 +19,12 @@ public class FileVisitorImpl implements FileVisitor { } @Override - public FileVisitResult visitFileFailed(Path file, IOException exc) { + public FileVisitResult visitFileFailed(Path file, IOException exc) { return null; } @Override - public FileVisitResult postVisitDirectory(Path dir, IOException exc) { + public FileVisitResult postVisitDirectory(Path dir, IOException exc) { return null; } } diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java index 9eb459ccb5..3f0dc46b75 100644 --- a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java +++ b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java @@ -12,7 +12,7 @@ public class GenericsTest { // testing the generic method with Integer @Test public void givenArrayOfIntegers_thanListOfIntegersReturnedOK() { - Integer[] intArray = {1, 2, 3, 4, 5}; + Integer[] intArray = { 1, 2, 3, 4, 5 }; List list = Generics.fromArrayToList(intArray); assertThat(list, hasItems(intArray)); @@ -21,7 +21,7 @@ public class GenericsTest { // testing the generic method with String @Test public void givenArrayOfStrings_thanListOfStringsReturnedOK() { - String[] stringArray = {"hello1", "hello2", "hello3", "hello4", "hello5"}; + String[] stringArray = { "hello1", "hello2", "hello3", "hello4", "hello5" }; List list = Generics.fromArrayToList(stringArray); assertThat(list, hasItems(stringArray)); @@ -32,7 +32,7 @@ public class GenericsTest { // extend Number it will fail to compile @Test public void givenArrayOfIntegersAndNumberUpperBound_thanListOfIntegersReturnedOK() { - Integer[] intArray = {1, 2, 3, 4, 5}; + Integer[] intArray = { 1, 2, 3, 4, 5 }; List list = Generics.fromArrayToListWithUpperBound(intArray); assertThat(list, hasItems(intArray)); diff --git a/core-java/src/test/java/com/baeldung/hashing/SHA256HashingTest.java b/core-java/src/test/java/com/baeldung/hashing/SHA256HashingTest.java index dc496d589b..ce77b824d8 100644 --- a/core-java/src/test/java/com/baeldung/hashing/SHA256HashingTest.java +++ b/core-java/src/test/java/com/baeldung/hashing/SHA256HashingTest.java @@ -4,12 +4,10 @@ import org.junit.Test; import static org.junit.Assert.*; - public class SHA256HashingTest { private static String originalValue = "abc123"; - private static String hashedValue = - "6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090"; + private static String hashedValue = "6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090"; @Test public void testHashWithJavaMessageDigest() throws Exception { diff --git a/core-java/src/test/java/com/baeldung/java/conversion/StringConversionTest.java b/core-java/src/test/java/com/baeldung/java/conversion/StringConversionTest.java index 09cacd0a29..9a4ac053af 100644 --- a/core-java/src/test/java/com/baeldung/java/conversion/StringConversionTest.java +++ b/core-java/src/test/java/com/baeldung/java/conversion/StringConversionTest.java @@ -119,8 +119,7 @@ public class StringConversionTest { int afterConvCalendarDay = 03; Month afterConvCalendarMonth = Month.DECEMBER; int afterConvCalendarYear = 2007; - LocalDateTime afterConvDate - = new UseLocalDateTime().getLocalDateTimeUsingParseMethod(str); + LocalDateTime afterConvDate = new UseLocalDateTime().getLocalDateTimeUsingParseMethod(str); assertEquals(afterConvDate.getDayOfMonth(), afterConvCalendarDay); assertEquals(afterConvDate.getMonth(), afterConvCalendarMonth); diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java index 0e58cb5f10..31f2357468 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java @@ -66,6 +66,7 @@ public class AsyncEchoServer { AsyncEchoServer server = new AsyncEchoServer(); server.runServer(); } + public static Process start() throws IOException, InterruptedException { String javaHome = System.getProperty("java.home"); String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java index 172d8036de..ff4ebe08b2 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java @@ -81,7 +81,6 @@ public class AsyncEchoServer2 { } - public static void main(String[] args) { new AsyncEchoServer2(); } diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java index b03acf83ca..42cbe2a753 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java @@ -82,8 +82,7 @@ public class AsyncFileTest { public void givenPathAndContent_whenWritesToFileWithHandler_thenCorrect() throws IOException { String fileName = UUID.randomUUID().toString(); Path path = Paths.get(fileName); - AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE,StandardOpenOption.DELETE_ON_CLOSE); - + AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.DELETE_ON_CLOSE); ByteBuffer buffer = ByteBuffer.allocate(1024); buffer.put("hello world".getBytes()); diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java index d4b63beaa4..6d972611f1 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java @@ -20,7 +20,6 @@ public class JavaFileUnitTest { private static final String TEMP_DIR = "src/test/resources/temp" + UUID.randomUUID().toString(); - @BeforeClass public static void setup() throws IOException { Files.createDirectory(Paths.get(TEMP_DIR)); diff --git a/core-java/src/test/java/org/baeldung/java/sorting/Employee.java b/core-java/src/test/java/org/baeldung/java/sorting/Employee.java index 768ee8f397..477092bfcb 100644 --- a/core-java/src/test/java/org/baeldung/java/sorting/Employee.java +++ b/core-java/src/test/java/org/baeldung/java/sorting/Employee.java @@ -1,14 +1,14 @@ package org.baeldung.java.sorting; public class Employee implements Comparable { - + private String name; private int age; private double salary; public Employee(String name, int age, double salary) { - this.name = name; - this.age = age; + this.name = name; + this.age = age; this.salary = salary; } @@ -35,7 +35,7 @@ public class Employee implements Comparable { public void setSalary(double salary) { this.salary = salary; } - + @Override public boolean equals(Object obj) { return ((Employee) obj).getName().equals(getName()); @@ -46,13 +46,10 @@ public class Employee implements Comparable { Employee e = (Employee) o; return getName().compareTo(e.getName()); } - + @Override public String toString() { - return new StringBuffer() - .append("(").append(getName()) - .append(getAge()).append(",") - .append(getSalary()).append(")").toString(); + return new StringBuffer().append("(").append(getName()).append(getAge()).append(",").append(getSalary()).append(")").toString(); } } From ac89a21ee265f830d5dd8083d9e3cfa54da7cf71 Mon Sep 17 00:00:00 2001 From: gitterjim-I Date: Wed, 30 Nov 2016 22:19:49 +0000 Subject: [PATCH 165/399] update to ltest spring boot version (#859) * manual authentication demo integration * apply eclipse and security formatting rules * add content to readme file, for manual authentication demo * update spring boot version to 1.4.2 --- .../spring-security-thymeleaf-authentication/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-client/spring-security-thymeleaf-authentication/pom.xml b/spring-security-client/spring-security-thymeleaf-authentication/pom.xml index cdbe0946f4..9f819d11c5 100644 --- a/spring-security-client/spring-security-thymeleaf-authentication/pom.xml +++ b/spring-security-client/spring-security-thymeleaf-authentication/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE From aa6850134118dc5a7c36b8b860de902e939cb09c Mon Sep 17 00:00:00 2001 From: Egima profile Date: Thu, 1 Dec 2016 11:55:20 +0300 Subject: [PATCH 166/399] merged formatting changes and removed while loops in asynchronous client (#870) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps * fixed network interface tests * removed filetest change * made changes to NIO2 FileTest names * added project for asyncronous channel apis * added project for NIO2 advanced filesystems APIS * merge conflicts * merged changes to asyncfiletest with future get API * removed while loops from async client and server * added project for java8 optional * fixed merge conflicts in spring-core --- .../java/nio2/visitor/FileSearchExample.java | 2 +- .../java/nio2/visitor/FileVisitorImpl.java | 2 +- .../com/baeldung/java_8_features/Person.java | 39 ++++ .../java/nio2/async/AsyncEchoClient.java | 11 +- .../java/nio2/async/AsyncEchoServer.java | 14 +- .../java/nio2/async/AsyncEchoServer2.java | 2 +- .../java/nio2/async/AsyncFileTest.java | 2 +- .../nio2/attributes/BasicAttribsTest.java | 2 +- .../baeldung/java8/optional/OptionalTest.java | 211 ++++++++++++++++++ .../factorybean/FactoryBeanAppConfig.java | 2 +- .../FactoryBeanJavaConfigTest.java | 2 +- .../factorybean/FactoryBeanXmlConfigTest.java | 2 +- 12 files changed, 270 insertions(+), 21 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/java_8_features/Person.java create mode 100644 core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java diff --git a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java index 62c6954e1a..b1b790f541 100644 --- a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java +++ b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java @@ -53,4 +53,4 @@ public class FileSearchExample implements FileVisitor { Files.walkFileTree(startingDir, crawler); } -} +} \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java index ee9fb23856..aa769b5091 100644 --- a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java +++ b/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java @@ -27,4 +27,4 @@ public class FileVisitorImpl implements FileVisitor { public FileVisitResult postVisitDirectory(Path dir, IOException exc) { return null; } -} +} \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Person.java b/core-java/src/main/java/com/baeldung/java_8_features/Person.java new file mode 100644 index 0000000000..82b6819699 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java_8_features/Person.java @@ -0,0 +1,39 @@ +package com.baeldung.java_8_features; + +import java.util.Optional; + +public class Person { + private String name; + private int age; + private String password; + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public Optional getName() { + return Optional.ofNullable(name); + } + + public void setName(String name) { + this.name = name; + } + + public Optional getAge() { + return Optional.ofNullable(age); + } + + public void setAge(int age) { + this.age = age; + } + + public void setPassword(String password) { + this.password = password; + } + + public Optional getPassword() { + return Optional.ofNullable(password); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java index ea35130f49..d64fbc763e 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java @@ -45,14 +45,13 @@ public class AsyncEchoClient { ByteBuffer buffer = ByteBuffer.wrap(byteMsg); Future writeResult = client.write(buffer); - while (!writeResult.isDone()) { - // do nothing - } + //run some code + writeResult.get(); buffer.flip(); Future readResult = client.read(buffer); - while (!readResult.isDone()) { - - } + + //run some code + readResult.get(); String echo = new String(buffer.array()).trim(); buffer.clear(); return echo; diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java index 31f2357468..5c3d204863 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java @@ -34,9 +34,9 @@ public class AsyncEchoServer { ByteBuffer buffer = ByteBuffer.allocate(32); Future readResult = clientChannel.read(buffer); - while (!readResult.isDone()) { - // do nothing - } + //do some computation + + readResult.get(); buffer.flip(); String message = new String(buffer.array()).trim(); @@ -45,9 +45,9 @@ public class AsyncEchoServer { } buffer = ByteBuffer.wrap(new String(message).getBytes()); Future writeResult = clientChannel.write(buffer); - while (!writeResult.isDone()) { - // do nothing - } + + //do some computation + writeResult.get(); buffer.clear(); } // while() @@ -77,4 +77,4 @@ public class AsyncEchoServer { return builder.start(); } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java index ff4ebe08b2..a7432da464 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java @@ -95,4 +95,4 @@ public class AsyncEchoServer2 { return builder.start(); } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java index 42cbe2a753..4395017e63 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileTest.java @@ -123,4 +123,4 @@ public class AsyncFileTest { buffer.clear(); return fileContent; } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java index 05686e79c0..24097542d0 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsTest.java @@ -66,4 +66,4 @@ public class BasicAttribsTest { boolean isOther = basicAttribs.isOther(); assertFalse(isOther); } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java new file mode 100644 index 0000000000..cd092fdd70 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -0,0 +1,211 @@ +package com.baeldung.java8.optional; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; +import com.baeldung.java_8_features.Person; + +import org.junit.Test; + +public class OptionalTest { + // creating Optional + @Test + public void whenCreatesEmptyOptional_thenCorrect() { + Optional empty = Optional.empty(); + assertFalse(empty.isPresent()); + } + + @Test + public void givenNonNull_whenCreatesNonNullable_thenCorrect() { + String name = "baeldung"; + Optional.of(name); + } + + @Test(expected = NullPointerException.class) + public void givenNull_whenThrowsErrorOnCreate_thenCorrect() { + String name = null; + Optional opt = Optional.of(name); + } + + @Test + public void givenNonNull_whenCreatesOptional_thenCorrect() { + String name = "baeldung"; + Optional opt = Optional.of(name); + assertEquals("Optional[baeldung]", opt.toString()); + } + + @Test + public void givenNonNull_whenCreatesNullable_thenCorrect() { + String name = "baeldung"; + Optional opt = Optional.ofNullable(name); + assertEquals("Optional[baeldung]", opt.toString()); + } + + @Test + public void givenNull_whenCreatesNullable_thenCorrect() { + String name = null; + Optional opt = Optional.ofNullable(name); + assertEquals("Optional.empty", opt.toString()); + } + // Checking Value With isPresent() + + @Test + public void givenOptional_whenIsPresentWorks_thenCorrect() { + Optional opt = Optional.of("Baeldung"); + assertTrue(opt.isPresent()); + + opt = Optional.ofNullable(null); + assertFalse(opt.isPresent()); + } + + // Condition Action With ifPresent() + @Test + public void givenOptional_whenIfPresentWorks_thenCorrect() { + Optional opt = Optional.of("baeldung"); + opt.ifPresent(name -> System.out.println(name.length())); + opt.ifPresent(String::length); + } + + // returning Value With get() + @Test + public void givenOptional_whenGetsValue_thenCorrect() { + Optional opt = Optional.of("baeldung"); + String name = opt.get(); + assertEquals("baeldung", name); + } + + @Test(expected = NoSuchElementException.class) + public void givenOptionalWithNull_whenGetThrowsException_thenCorrect() { + Optional opt = Optional.ofNullable(null); + String name = opt.get(); + } + + // Conditional Return With filter() + @Test + public void whenOptionalFilterWorks_thenCorrect() { + Integer year = 2016; + Optional yearOptional = Optional.of(year); + boolean is2016 = yearOptional.filter(y -> y == 2016).isPresent(); + assertTrue(is2016); + boolean is2017 = yearOptional.filter(y -> y == 2017).isPresent(); + assertFalse(is2017); + } + + // Transforming Value With map() + @Test + public void givenOptional_whenMapWorks_thenCorrect() { + List companyNames = Arrays.asList("paypal", "oracle", "", "microsoft", "", "apple"); + Optional> listOptional = Optional.of(companyNames); + + int size = listOptional.map(list -> list.size()).get(); + assertEquals(6, size); + } + + @Test + public void givenOptional_whenMapWorks_thenCorrect2() { + String name = "baeldung"; + Optional nameOptional = Optional.of(name); + + int len = nameOptional.map(s -> s.length()).get(); + assertEquals(8, len); + } + + @Test + public void givenOptional_whenMapWorksWithFilter_thenCorrect() { + String password = " password "; + Optional passOpt = Optional.of(password); + boolean correctPassword = passOpt.filter(pass -> pass.equals("password")).isPresent(); + assertFalse(correctPassword); + + correctPassword = passOpt.map(pass -> pass.trim()).filter(pass -> pass.equals("password")).isPresent(); + assertTrue(correctPassword); + } + + // Transforming Value With flatMap() + @Test + public void givenOptional_whenFlatMapWorks_thenCorrect2() { + Person person = new Person("john", 26); + Optional personOptional = Optional.of(person); + + Optional> nameOptionalWrapper = personOptional.map(p -> p.getName()); + Optional nameOptional = nameOptionalWrapper.get(); + String name1 = nameOptional.get(); + assertEquals("john", name1); + + String name = personOptional.flatMap(p -> p.getName()).get(); + assertEquals("john", name); + } + + @Test + public void givenOptional_whenFlatMapWorksWithFilter_thenCorrect() { + Person person = new Person("john", 26); + person.setPassword("password"); + Optional personOptional = Optional.of(person); + + String password = personOptional.flatMap(p -> p.getPassword()).filter(cleanPass -> cleanPass.equals("password")).get(); + assertEquals("password", password); + } + + // Default Value With orElse + @Test + public void whenOrElseWorks_thenCorrect() { + String nullName = null; + String name = Optional.ofNullable(nullName).orElse("john"); + assertEquals("john", name); + } + + // Default Value With orElseGet + @Test + public void whenOrElseGetWorks_thenCorrect() { + String nullName = null; + String name = Optional.ofNullable(nullName).orElseGet(() -> "john"); + assertEquals("john", name); + + name = Optional.ofNullable(nullName).orElseGet(() -> { + return "doe"; + }); + assertEquals("doe", name); + + } + + @Test + public void whenOrElseGetAndOrElseOverlap_thenCorrect() { + String text = null; + System.out.println("Using orElseGet:"); + String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); + assertEquals("Default Value", defaultText); + + System.out.println("Using orElse:"); + defaultText = Optional.ofNullable(text).orElse(getMyDefault()); + assertEquals("Default Value", defaultText); + } + + @Test + public void whenOrElseGetAndOrElseDiffer_thenCorrect() { + String text = "Text present"; + System.out.println("Using orElseGet:"); + String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); + assertEquals("Text present", defaultText); + + System.out.println("Using orElse:"); + defaultText = Optional.ofNullable(text).orElse(getMyDefault()); + assertEquals("Text present", defaultText); + } + + // Exceptions With orElseThrow + @Test(expected = IllegalArgumentException.class) + public void whenOrElseThrowWorks_thenCorrect() { + String nullName = null; + String name = Optional.ofNullable(nullName).orElseThrow(IllegalArgumentException::new); + } + + public String getMyDefault() { + System.out.println("Getting default value..."); + return "Default Value"; + } +} diff --git a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java index f0cfadcab1..e5e6d2ec05 100644 --- a/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java +++ b/spring-core/src/main/java/com/baeldung/factorybean/FactoryBeanAppConfig.java @@ -13,4 +13,4 @@ public class FactoryBeanAppConfig { factory.setToolId(2); return factory; } -} +} \ No newline at end of file diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java index 706aa0a63f..c725f786dc 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanJavaConfigTest.java @@ -26,4 +26,4 @@ public class FactoryBeanJavaConfigTest { assertThat(tool.getId(), equalTo(2)); assertThat(toolFactory.getFactoryId(), equalTo(7070)); } -} +} \ No newline at end of file diff --git a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java index 8ba1129b30..443515f872 100644 --- a/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java +++ b/spring-core/src/test/java/com/baeldung/factorybean/FactoryBeanXmlConfigTest.java @@ -25,4 +25,4 @@ public class FactoryBeanXmlConfigTest { assertThat(tool.getId(), equalTo(1)); assertThat(toolFactory.getFactoryId(), equalTo(9090)); } -} +} \ No newline at end of file From 72116e7a495dcbe410484cc3212c66f2ed688489 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Thu, 1 Dec 2016 15:22:13 +0530 Subject: [PATCH 167/399] Removed compiled files, updated POM to move verison of dependencies under properties, removed IntelliJ based files. --- javax-servlets/.gitignore | 5 ++++ .../META-INF/MANIFEST.MF | 5 ---- .../WEB-INF/web.xml | 7 ----- .../index.jsp | 26 ------------------- javax-servlets/pom.xml | 11 +++++--- 5 files changed, 13 insertions(+), 41 deletions(-) create mode 100644 javax-servlets/.gitignore delete mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF delete mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml delete mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp diff --git a/javax-servlets/.gitignore b/javax-servlets/.gitignore new file mode 100644 index 0000000000..a51a433798 --- /dev/null +++ b/javax-servlets/.gitignore @@ -0,0 +1,5 @@ +# Created by .ignore support plugin (hsz.mobi) +.idea +classes +target +*.iml \ No newline at end of file diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF deleted file mode 100644 index e8d1783f02..0000000000 --- a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF +++ /dev/null @@ -1,5 +0,0 @@ -Manifest-Version: 1.0 -Built-By: shubham -Created-By: IntelliJ IDEA -Build-Jdk: 1.8.0_91 - diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml deleted file mode 100644 index 66934d8fd3..0000000000 --- a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp deleted file mode 100644 index 5a2e018a41..0000000000 --- a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - Calculate BMI - - - -
- - - - - - - - - - - - -
Your Weight (kg) :
Your Height (m) :
-

${bmi}

-
- - - diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml index 76434a8589..4fe4575e48 100644 --- a/javax-servlets/pom.xml +++ b/javax-servlets/pom.xml @@ -13,22 +13,27 @@ javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet.version} junit junit - 4.12 + ${junit.version} test org.apache.httpcomponents httpclient - 4.5 + ${org.apache.httpcomponents.version} test
+ + 3.1.0 + 4.12 + 4.5 + \ No newline at end of file From 0a9a0e819a1eaf0cafd03a853d80f88bf96779a0 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Sun, 27 Nov 2016 11:42:32 +0530 Subject: [PATCH 168/399] Added BAEL-425 Intro to Servets module named javax-servlets --- javax-servlets/pom.xml | 34 +++++++++++++++++++ .../src/main/java/com/root/FormServlet.java | 19 +++++++++++ .../test/java/com/root/FormServletTest.java | 34 +++++++++++++++++++ javax-servlets/web/WEB-INF/web.xml | 7 ++++ javax-servlets/web/index.jsp | 30 ++++++++++++++++ pom.xml | 1 + 6 files changed, 125 insertions(+) create mode 100644 javax-servlets/pom.xml create mode 100644 javax-servlets/src/main/java/com/root/FormServlet.java create mode 100644 javax-servlets/src/test/java/com/root/FormServletTest.java create mode 100644 javax-servlets/web/WEB-INF/web.xml create mode 100644 javax-servlets/web/index.jsp diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml new file mode 100644 index 0000000000..2d2e3a4b8a --- /dev/null +++ b/javax-servlets/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + com.root + ServletmavenExample + 1.0-SNAPSHOT + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + junit + junit + 4.12 + test + + + org.mockito + mockito-all + 1.10.19 + test + + + + + + \ No newline at end of file diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java new file mode 100644 index 0000000000..c8e8212f30 --- /dev/null +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -0,0 +1,19 @@ +package com.root; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@WebServlet(name = "FormServlet", urlPatterns = "/informationServlet") +public class FormServlet extends HttpServlet { + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + String userName = request.getParameter("userName"); + String userPlanet = request.getParameter("userPlanet"); + } +} diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/root/FormServletTest.java new file mode 100644 index 0000000000..12545317c6 --- /dev/null +++ b/javax-servlets/src/test/java/com/root/FormServletTest.java @@ -0,0 +1,34 @@ +package com.root; + +import org.junit.Test; +import org.mockito.Mockito; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import java.io.StringWriter; + +import static org.junit.Assert.*; + +/** + * Created by shubham on 27/11/16. + */ +public class FormServletTest extends Mockito { + + @Test + public void testFormServlet() throws Exception { + + HttpServletRequest request = mock(HttpServletRequest.class); + HttpServletResponse response = mock(HttpServletResponse.class); + + when(request.getParameter("userName")).thenReturn("baeldung"); + when(request.getParameter("userPlanet")).thenReturn("Mars"); + + PrintWriter writer = new PrintWriter(new StringWriter()); + when(response.getWriter()).thenReturn(writer); + + new FormServlet().doPost(request, response); + + assertTrue(request.getParameter("userName").contains("baeldung")); + } +} diff --git a/javax-servlets/web/WEB-INF/web.xml b/javax-servlets/web/WEB-INF/web.xml new file mode 100644 index 0000000000..66934d8fd3 --- /dev/null +++ b/javax-servlets/web/WEB-INF/web.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/javax-servlets/web/index.jsp b/javax-servlets/web/index.jsp new file mode 100644 index 0000000000..4054b1acf0 --- /dev/null +++ b/javax-servlets/web/index.jsp @@ -0,0 +1,30 @@ +<%-- + Created by IntelliJ IDEA. + User: shubham + Date: 26/11/16 + Time: 8:52 PM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Form + + + +
+ + Name:

+ Planet: + +

+ + +
+ + + diff --git a/pom.xml b/pom.xml index 77cf615a98..eacedf1e6a 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,7 @@ jackson java-cassandra + javax-servlets javaxval jee7 jjwt From aa2285f3b4c7141d5465b491bde4f1e40e17d977 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Mon, 28 Nov 2016 09:36:42 +0530 Subject: [PATCH 169/399] RequestDispatcher added to servlet --- .../META-INF/MANIFEST.MF | 5 +++ .../WEB-INF/web.xml | 7 ++++ .../index.jsp | 26 ++++++++++++++ .../src/main/java/com/root/FormServlet.java | 31 +++++++++++++++-- javax-servlets/web/index.jsp | 34 ++++++++----------- 5 files changed, 81 insertions(+), 22 deletions(-) create mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF create mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml create mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..e8d1783f02 --- /dev/null +++ b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: shubham +Created-By: IntelliJ IDEA +Build-Jdk: 1.8.0_91 + diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml new file mode 100644 index 0000000000..66934d8fd3 --- /dev/null +++ b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp new file mode 100644 index 0000000000..5a2e018a41 --- /dev/null +++ b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp @@ -0,0 +1,26 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Calculate BMI + + + +
+ + + + + + + + + + + + +
Your Weight (kg) :
Your Height (m) :
+

${bmi}

+
+ + + diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index c8e8212f30..5c11a586d3 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -1,5 +1,6 @@ package com.root; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -7,13 +8,37 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -@WebServlet(name = "FormServlet", urlPatterns = "/informationServlet") +@WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { + @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String userName = request.getParameter("userName"); - String userPlanet = request.getParameter("userPlanet"); + String height = request.getParameter("height"); + String weight = request.getParameter("weight"); + + try { + Double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); + + request.setAttribute("bmi", bmi); + RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); + dispatcher.forward(request, response); + } catch (Exception e) { + + response.sendRedirect("index.jsp"); + } + } + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + // do something else here + } + + private Double calculateBMI(Double weight, Double height) { + + return weight / (height * height); } } diff --git a/javax-servlets/web/index.jsp b/javax-servlets/web/index.jsp index 4054b1acf0..5a2e018a41 100644 --- a/javax-servlets/web/index.jsp +++ b/javax-servlets/web/index.jsp @@ -1,29 +1,25 @@ -<%-- - Created by IntelliJ IDEA. - User: shubham - Date: 26/11/16 - Time: 8:52 PM - To change this template use File | Settings | File Templates. ---%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - Form + Calculate BMI -
+ - Name:

- Planet: - -

- - + + + + + + + + + + + +
Your Weight (kg) :
Your Height (m) :
+

${bmi}

From 0be0117470fba74174bccb82f38667c295862ff2 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Mon, 28 Nov 2016 11:03:13 +0530 Subject: [PATCH 170/399] Test made using Mockito and JUnit --- .../src/main/java/com/root/FormServlet.java | 17 +++---- .../test/java/com/root/FormServletTest.java | 45 +++++++++++++------ 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 5c11a586d3..be83cece8f 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -7,6 +7,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.PrintWriter; @WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { @@ -19,9 +20,12 @@ public class FormServlet extends HttpServlet { String weight = request.getParameter("weight"); try { - Double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); - + double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); request.setAttribute("bmi", bmi); + + PrintWriter out= response.getWriter(); + out.write(String.valueOf(bmi)); + RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); } catch (Exception e) { @@ -30,15 +34,8 @@ public class FormServlet extends HttpServlet { } } - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - - // do something else here - } - private Double calculateBMI(Double weight, Double height) { return weight / (height * height); } -} +} \ No newline at end of file diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/root/FormServletTest.java index 12545317c6..2d6ce22db5 100644 --- a/javax-servlets/src/test/java/com/root/FormServletTest.java +++ b/javax-servlets/src/test/java/com/root/FormServletTest.java @@ -1,34 +1,51 @@ package com.root; +import org.junit.Before; import org.junit.Test; -import org.mockito.Mockito; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.io.StringWriter; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; -/** - * Created by shubham on 27/11/16. - */ -public class FormServletTest extends Mockito { +public class FormServletTest { + + @Mock + HttpServletRequest request; + + @Mock + HttpServletResponse response; + + @Mock + RequestDispatcher requestDispatcher; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } @Test public void testFormServlet() throws Exception { - HttpServletRequest request = mock(HttpServletRequest.class); - HttpServletResponse response = mock(HttpServletResponse.class); + when(request.getParameter("height")).thenReturn("2"); + when(request.getParameter("weight")).thenReturn("80"); - when(request.getParameter("userName")).thenReturn("baeldung"); - when(request.getParameter("userPlanet")).thenReturn("Mars"); - - PrintWriter writer = new PrintWriter(new StringWriter()); - when(response.getWriter()).thenReturn(writer); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + when(response.getWriter()).thenReturn(pw); new FormServlet().doPost(request, response); - assertTrue(request.getParameter("userName").contains("baeldung")); + verify(request).setAttribute("bmi", 20.0); + + String result = sw.getBuffer().toString().trim(); + assertEquals("20.0", result); } } From 782e169f462f9eb1d3a2a8919f59a11aa11c516d Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Mon, 28 Nov 2016 09:36:42 +0530 Subject: [PATCH 171/399] RequestDispatcher added to servlet --- .../src/main/java/com/root/FormServlet.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index be83cece8f..4f55a02745 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -7,7 +7,6 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; @WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { @@ -21,10 +20,10 @@ public class FormServlet extends HttpServlet { try { double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); - request.setAttribute("bmi", bmi); - PrintWriter out= response.getWriter(); - out.write(String.valueOf(bmi)); + request.setAttribute("bmi", bmi); + response.setHeader("Test", "Success"); + response.setHeader("BMI", String.valueOf(bmi)); RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); @@ -34,6 +33,13 @@ public class FormServlet extends HttpServlet { } } + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + // do something else here + } + private Double calculateBMI(Double weight, Double height) { return weight / (height * height); From 3c0d504fe54b2004b7dd21f8e63f7bb17e75645c Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Mon, 28 Nov 2016 11:03:13 +0530 Subject: [PATCH 172/399] Test made using Mockito and JUnit --- .../src/main/java/com/root/FormServlet.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 4f55a02745..7c345215e1 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -7,6 +7,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.PrintWriter; @WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { @@ -25,6 +26,9 @@ public class FormServlet extends HttpServlet { response.setHeader("Test", "Success"); response.setHeader("BMI", String.valueOf(bmi)); + PrintWriter out= response.getWriter(); + out.write(String.valueOf(bmi)); + RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); } catch (Exception e) { @@ -33,13 +37,6 @@ public class FormServlet extends HttpServlet { } } - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - - // do something else here - } - private Double calculateBMI(Double weight, Double height) { return weight / (height * height); From b61f35e956431336f371dd149eb563b6e778f67b Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Tue, 29 Nov 2016 14:25:32 +0530 Subject: [PATCH 173/399] Updated Test --- javax-servlets/pom.xml | 6 +-- .../src/main/java/com/root/FormServlet.java | 5 +- .../test/java/com/root/FormServletTest.java | 53 +++++++------------ 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml index 2d2e3a4b8a..76434a8589 100644 --- a/javax-servlets/pom.xml +++ b/javax-servlets/pom.xml @@ -22,9 +22,9 @@ test - org.mockito - mockito-all - 1.10.19 + org.apache.httpcomponents + httpclient + 4.5 test diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 7c345215e1..9c50698710 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -7,7 +7,6 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; @WebServlet(name = "FormServlet", urlPatterns = "/calculateServlet") public class FormServlet extends HttpServlet { @@ -26,8 +25,8 @@ public class FormServlet extends HttpServlet { response.setHeader("Test", "Success"); response.setHeader("BMI", String.valueOf(bmi)); - PrintWriter out= response.getWriter(); - out.write(String.valueOf(bmi)); + response.setHeader("Test", "Success"); + response.setHeader("BMI", String.valueOf(bmi)); RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/root/FormServletTest.java index 2d6ce22db5..437741e12d 100644 --- a/javax-servlets/src/test/java/com/root/FormServletTest.java +++ b/javax-servlets/src/test/java/com/root/FormServletTest.java @@ -1,51 +1,34 @@ package com.root; -import org.junit.Before; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import javax.servlet.RequestDispatcher; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; -import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; public class FormServletTest { - @Mock - HttpServletRequest request; - - @Mock - HttpServletResponse response; - - @Mock - RequestDispatcher requestDispatcher; - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - } - @Test - public void testFormServlet() throws Exception { + public void whenPostRequestUsingHttpClient_thenCorrect() throws Exception { - when(request.getParameter("height")).thenReturn("2"); - when(request.getParameter("weight")).thenReturn("80"); + HttpClient client = new DefaultHttpClient(); + HttpPost method = new HttpPost("http://localhost:8080/calculateServlet"); - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - when(response.getWriter()).thenReturn(pw); + List nvps = new ArrayList(); + nvps.add(new BasicNameValuePair("height", String.valueOf(2))); + nvps.add(new BasicNameValuePair("weight", String.valueOf(80))); - new FormServlet().doPost(request, response); + method.setEntity(new UrlEncodedFormEntity(nvps)); + HttpResponse httpResponse = client.execute(method); - verify(request).setAttribute("bmi", 20.0); - - String result = sw.getBuffer().toString().trim(); - assertEquals("20.0", result); + assertEquals("Success", httpResponse.getHeaders("Test")[0].getValue()); + assertEquals("20.0", httpResponse.getHeaders("BMI")[0].getValue()); } } From 460104c86f8d3ed7652b7356a25b51e58c8fa6a9 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Tue, 29 Nov 2016 14:31:15 +0530 Subject: [PATCH 174/399] Formatting --- javax-servlets/src/main/java/com/root/FormServlet.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 9c50698710..a3afcbba56 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -25,9 +25,6 @@ public class FormServlet extends HttpServlet { response.setHeader("Test", "Success"); response.setHeader("BMI", String.valueOf(bmi)); - response.setHeader("Test", "Success"); - response.setHeader("BMI", String.valueOf(bmi)); - RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); } catch (Exception e) { From badcd110585ea8fe00afb194783bba40a968ca4c Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Tue, 29 Nov 2016 14:33:23 +0530 Subject: [PATCH 175/399] conflicts removed --- javax-servlets/src/main/java/com/root/FormServlet.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index a3afcbba56..4f55a02745 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -33,6 +33,13 @@ public class FormServlet extends HttpServlet { } } + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + // do something else here + } + private Double calculateBMI(Double weight, Double height) { return weight / (height * height); From b592a3e3481a8f35f5c715fc0456a578ae326274 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Tue, 29 Nov 2016 14:36:16 +0530 Subject: [PATCH 176/399] Format --- javax-servlets/src/main/java/com/root/FormServlet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index 4f55a02745..fb7a02f4bc 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -20,7 +20,7 @@ public class FormServlet extends HttpServlet { try { double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); - + request.setAttribute("bmi", bmi); response.setHeader("Test", "Success"); response.setHeader("BMI", String.valueOf(bmi)); From a44fb64f686a7ca9a0dbee9807859d4c2ed7bfb3 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Thu, 1 Dec 2016 15:22:13 +0530 Subject: [PATCH 177/399] Removed compiled files, updated POM to move verison of dependencies under properties, removed IntelliJ based files. --- javax-servlets/.gitignore | 5 ++++ .../META-INF/MANIFEST.MF | 5 ---- .../WEB-INF/web.xml | 7 ----- .../index.jsp | 26 ------------------- javax-servlets/pom.xml | 11 +++++--- 5 files changed, 13 insertions(+), 41 deletions(-) create mode 100644 javax-servlets/.gitignore delete mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF delete mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml delete mode 100644 javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp diff --git a/javax-servlets/.gitignore b/javax-servlets/.gitignore new file mode 100644 index 0000000000..a51a433798 --- /dev/null +++ b/javax-servlets/.gitignore @@ -0,0 +1,5 @@ +# Created by .ignore support plugin (hsz.mobi) +.idea +classes +target +*.iml \ No newline at end of file diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF deleted file mode 100644 index e8d1783f02..0000000000 --- a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/META-INF/MANIFEST.MF +++ /dev/null @@ -1,5 +0,0 @@ -Manifest-Version: 1.0 -Built-By: shubham -Created-By: IntelliJ IDEA -Build-Jdk: 1.8.0_91 - diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml deleted file mode 100644 index 66934d8fd3..0000000000 --- a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/WEB-INF/web.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp b/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp deleted file mode 100644 index 5a2e018a41..0000000000 --- a/javax-servlets/classes/artifacts/ServletmavenExample_war_exploded/index.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - Calculate BMI - - - -
- - - - - - - - - - - - -
Your Weight (kg) :
Your Height (m) :
-

${bmi}

-
- - - diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml index 76434a8589..4fe4575e48 100644 --- a/javax-servlets/pom.xml +++ b/javax-servlets/pom.xml @@ -13,22 +13,27 @@ javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet.version} junit junit - 4.12 + ${junit.version} test org.apache.httpcomponents httpclient - 4.5 + ${org.apache.httpcomponents.version} test
+ + 3.1.0 + 4.12 + 4.5 + \ No newline at end of file From 75138d288ff291829e789d6a09fa4b6b5225c687 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Thu, 1 Dec 2016 15:39:34 +0530 Subject: [PATCH 178/399] Updated servlet --- javax-servlets/src/main/java/com/root/FormServlet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/root/FormServlet.java index fb7a02f4bc..4f55a02745 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/root/FormServlet.java @@ -20,7 +20,7 @@ public class FormServlet extends HttpServlet { try { double bmi = calculateBMI(Double.parseDouble(weight), Double.parseDouble(height)); - + request.setAttribute("bmi", bmi); response.setHeader("Test", "Success"); response.setHeader("BMI", String.valueOf(bmi)); From d705d1de9b9b40d7167f5d4501aacba2453a6b55 Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 1 Dec 2016 12:53:06 +0200 Subject: [PATCH 179/399] upgrade dependencies --- xstream/pom.xml | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/xstream/pom.xml b/xstream/pom.xml index f505019d71..7af8efa659 100644 --- a/xstream/pom.xml +++ b/xstream/pom.xml @@ -11,25 +11,25 @@ com.thoughtworks.xstream xstream - 1.4.5 + ${xstream.version} org.codehaus.jettison jettison - 1.3.7 + ${jettison.version} junit junit - 4.12 + ${junit.version} log4j log4j - 1.2.17 + ${log4j.version} @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -47,4 +47,17 @@ + + 1.4.9 + 1.3.8 + + 1.2.17 + + 4.12 + + + 3.6.0 + + + \ No newline at end of file From 215dde6f9214efdb28343943efe3b500afaeddaf Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 1 Dec 2016 13:07:39 +0200 Subject: [PATCH 180/399] upgrade dependencies --- xmlunit2/pom.xml | 64 +++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/xmlunit2/pom.xml b/xmlunit2/pom.xml index c80e3f37b2..d4364292d6 100644 --- a/xmlunit2/pom.xml +++ b/xmlunit2/pom.xml @@ -5,42 +5,56 @@ xmlunit2 1.0 XMLUnit-2 - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.3 - - 7 - 7 - - - - + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + junit junit - 4.3 + ${junit.version} test org.hamcrest hamcrest-all - 1.3 + ${hamcrest.version} - - org.xmlunit - xmlunit-matchers - 2.2.1 - + + org.xmlunit + xmlunit-matchers + ${xmlunit.version} + - - org.xmlunit - xmlunit-core - 2.2.1 - + + org.xmlunit + xmlunit-core + ${xmlunit.version} + + + + + + 4.12 + 1.3 + 2.3.0 + + + 3.6.0 + + From f46e18a3533d06aa94081ace3c0baa78424981dc Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 1 Dec 2016 13:27:21 +0200 Subject: [PATCH 181/399] upgrade dependencies --- xml/pom.xml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/xml/pom.xml b/xml/pom.xml index d204eea45f..4230350ed9 100644 --- a/xml/pom.xml +++ b/xml/pom.xml @@ -12,32 +12,32 @@ dom4j dom4j - 1.6.1 + ${dom4j.version} jaxen jaxen - 1.1.6 + ${jaxen.version} org.jdom jdom2 - 2.0.6 + ${jdom2.version} commons-io commons-io - 2.4 + ${commons-io.version} org.apache.commons commons-collections4 - 4.0 + ${commons-collections4.version} @@ -90,20 +90,21 @@ + 1.6.1 + 1.1.6 + 2.0.6 + 2.5 + 4.1 - 19.0 - 3.4 + 3.5 4.12 - 3.5.1 - 2.6 + 3.6.0 2.19.1 - 2.7 - 1.4.18 From de33c9ce0b77d04287fd97116b83aa25e7c8f719 Mon Sep 17 00:00:00 2001 From: Hector Romero Date: Thu, 1 Dec 2016 08:16:25 -0600 Subject: [PATCH 182/399] BAEL-7: Use Collection interface --- .../JoinSplitCollectionsUnitTest.java | 94 ++++++++++++------- 1 file changed, 59 insertions(+), 35 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java index b4dd0e46b1..66e037b457 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java @@ -6,9 +6,11 @@ import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -25,14 +27,25 @@ public class JoinSplitCollectionsUnitTest { assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); } + + @Test + public void whenJoiningTwoCollections_thenJoined() { + Collection collection1 = Arrays.asList(7, 8, 9); + Collection collection2 = Arrays.asList(10, 11, 12); + Collection result = Stream.concat(collection1.stream(), collection2.stream()) + .collect(Collectors.toList()); + + assertTrue(result.equals(Arrays.asList(7, 8, 9, 10, 11, 12))); + } @Test - public void whenJoiningTwoListsWithFilter_thenJoined() { - List list1 = Arrays.asList(7, 8, 11); - List list2 = Arrays.asList(9, 12, 10); - List result = Stream.concat(list1.stream(), list2.stream()).filter(next -> next <= 10) + public void whenJoiningTwoCollectionsWithFilter_thenJoined() { + Collection collection1 = Arrays.asList(7, 8, 11); + Collection collection2 = Arrays.asList(9, 12, 10); + Collection result = Stream.concat(collection1.stream(), collection2.stream()) + .filter(next -> next <= 10) .collect(Collectors.toList()); - + assertTrue(result.equals(Arrays.asList(7, 8, 9, 10))); } @@ -46,11 +59,11 @@ public class JoinSplitCollectionsUnitTest { } @Test - public void whenConvertListToString_thenConverted() { - List directions = Arrays.asList("Left", "Right", "Top", "Bottom"); + public void whenConvertCollectionToString_thenConverted() { + Collection directions = Arrays.asList("Left", "Right", "Top", "Bottom"); String result = directions.stream() .collect(Collectors.joining(", ")); - + assertEquals(result, "Left, Right, Top, Bottom"); } @@ -68,49 +81,60 @@ public class JoinSplitCollectionsUnitTest { } @Test - public void whenConvertNestedListToString_thenConverted() { - List> nested = new ArrayList<>(); + public void whenConvertNestedCollectionToString_thenConverted() { + Collection> nested = new ArrayList<>(); nested.add(Arrays.asList("Left", "Right", "Top", "Bottom")); nested.add(Arrays.asList("Red", "Blue", "Green", "Yellow")); - + String result = nested.stream() .map(nextList -> nextList.stream() .collect(Collectors.joining("-"))) .collect(Collectors.joining("; ")); - + assertEquals(result, "Left-Right-Top-Bottom; Red-Blue-Green-Yellow"); } @Test - public void whenConvertListToStringAndSkipNull_thenConverted() { - List fruits = Arrays.asList("Apple", "Orange", null, "Grape"); + public void whenConvertCollectionToStringAndSkipNull_thenConverted() { + Collection fruits = Arrays.asList("Apple", "Orange", null, "Grape"); String result = fruits.stream() .filter(next -> next != null) .collect(Collectors.joining(", ")); - + assertEquals(result, "Apple, Orange, Grape"); } @Test - public void whenSplitListGroupOddEven_thenConverted() { - List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); - Map> result = list.stream() - .collect(Collectors.partitioningBy(number -> number % 2 == 0)); + public void whenSplitCollectionHalf_thenConverted() { + Collection numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + Collection result1 = new ArrayList<>(); + Collection result2 = new ArrayList<>(); + AtomicInteger count = new AtomicInteger(); + int midpoint = Math.round(numbers.size() / 2); - assertTrue(result.get(true).equals(Arrays.asList(2, 4, 6, 8, 10))); - assertTrue(result.get(false).equals(Arrays.asList(1, 3, 5, 7, 9))); + numbers.forEach(next -> { + int index = count.getAndIncrement(); + if(index < midpoint){ + result1.add(next); + }else{ + result2.add(next); + } + }); + + assertTrue(result1.equals(Arrays.asList(1, 2, 3, 4, 5))); + assertTrue(result2.equals(Arrays.asList(6, 7, 8, 9, 10))); } -@Test -public void whenSplitArrayByWordLength_thenConverted() { - String[] words = new String[]{"bye", "cold", "it", "and", "my", "word"}; - Map> result = Arrays.stream(words) - .collect(Collectors.groupingBy(word -> word.length())); - - assertTrue(result.get(2).equals(Arrays.asList("it", "my"))); - assertTrue(result.get(3).equals(Arrays.asList("bye", "and"))); - assertTrue(result.get(4).equals(Arrays.asList("cold", "word"))); -} + @Test + public void whenSplitArrayByWordLength_thenConverted() { + String[] words = new String[]{"bye", "cold", "it", "and", "my", "word"}; + Map> result = Arrays.stream(words) + .collect(Collectors.groupingBy(word -> word.length())); + + assertTrue(result.get(2).equals(Arrays.asList("it", "my"))); + assertTrue(result.get(3).equals(Arrays.asList("bye", "and"))); + assertTrue(result.get(4).equals(Arrays.asList("cold", "word"))); + } @Test public void whenConvertStringToArray_thenConverted() { @@ -121,9 +145,9 @@ public void whenSplitArrayByWordLength_thenConverted() { } @Test - public void whenConvertStringToList_thenConverted() { + public void whenConvertStringToCollection_thenConverted() { String colors = "Left, Right, Top, Bottom"; - List result = Arrays.asList(colors.split(", ")); + Collection result = Arrays.asList(colors.split(", ")); assertTrue(result.equals(Arrays.asList("Left", "Right", "Top", "Bottom"))); } @@ -142,10 +166,10 @@ public void whenSplitArrayByWordLength_thenConverted() { } @Test - public void whenConvertListToStringMultipleSeparators_thenConverted() { + public void whenConvertCollectionToStringMultipleSeparators_thenConverted() { String fruits = "Apple. , Orange, Grape. Lemon"; - List result = Arrays.stream(fruits.split("[,|.]")) + Collection result = Arrays.stream(fruits.split("[,|.]")) .map(String::trim).filter(next -> !next.isEmpty()) .collect(Collectors.toList()); From 1ba3014a4a4b8da8fb4e06739f0aabcbd8e86c69 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Thu, 1 Dec 2016 23:46:57 +0800 Subject: [PATCH 183/399] Removed commented configs --- ...servlet_AnnotationMethodHandlerAdapter.xml | 23 +++++++++++++++++++ ...g-servlet_RequestMappingHandlerAdapter.xml | 23 +++++++++++++++++++ ...servlet_SimpleControllerHandlerAdapter.xml | 21 +++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml create mode 100644 spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml create mode 100644 spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml b/spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml new file mode 100644 index 0000000000..f7f28db9fa --- /dev/null +++ b/spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml b/spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml new file mode 100644 index 0000000000..d19188e882 --- /dev/null +++ b/spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml b/spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml new file mode 100644 index 0000000000..d8d2e6809c --- /dev/null +++ b/spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + \ No newline at end of file From 7f9194c77c5e66b5d492d9b520d69d518624f1df Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Thu, 1 Dec 2016 23:48:14 +0800 Subject: [PATCH 184/399] Changed the config file name --- spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml b/spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml index d47deec14e..b6f1065cad 100644 --- a/spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml @@ -8,7 +8,7 @@ org.springframework.web.servlet.DispatcherServlet contextConfigLocation - classpath*:spring-servlet.xml + classpath*:spring-servlet_RequestMappingHandlerAdapter.xml 1 From fc19dfa99741877cfc02f166822f9bd968c74a81 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Thu, 1 Dec 2016 23:49:56 +0800 Subject: [PATCH 185/399] Delete spring-servlet.xml --- .../src/main/resources/spring-servlet.xml | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 spring-mvc-handlers/src/main/resources/spring-servlet.xml diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet.xml b/spring-mvc-handlers/src/main/resources/spring-servlet.xml deleted file mode 100644 index eb42f89847..0000000000 --- a/spring-mvc-handlers/src/main/resources/spring-servlet.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 5750a3a064b9883a9872bac2a976e9b83217363c Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Thu, 1 Dec 2016 22:34:40 +0100 Subject: [PATCH 186/399] Update README.md --- spring-core/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-core/README.md b/spring-core/README.md index 53842ecb1a..f05ba9384f 100644 --- a/spring-core/README.md +++ b/spring-core/README.md @@ -1,3 +1,5 @@ ### Relevant Articles: - [Wiring in Spring: @Autowired, @Resource and @Inject](http://www.baeldung.com/spring-annotations-resource-inject-autowire) - [Exploring the Spring BeanFactory API](http://www.baeldung.com/spring-beanfactory) +- [How to use the Spring FactoryBean?](http://www.baeldung.com/spring-factorybean) + From 6df8e9000e5bdffd4a3f561358e8d44c0281075a Mon Sep 17 00:00:00 2001 From: Tuan Date: Fri, 2 Dec 2016 05:46:56 +0700 Subject: [PATCH 187/399] PR (#843) * remove else condition * remove else condition * spring retry introduction * remove else condition * remove spring retry, format code --- aspectj/pom.xml | 8 +++++--- aspectj/src/main/java/com/baeldung/aspectj/Account.java | 8 ++++---- .../src/main/java/com/baeldung/aspectj/AccountAspect.aj | 5 ++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/aspectj/pom.xml b/aspectj/pom.xml index 2a1cff11c8..1c409483ec 100644 --- a/aspectj/pom.xml +++ b/aspectj/pom.xml @@ -98,13 +98,14 @@ compile - test-compile + test-compile - + + --> diff --git a/aspectj/src/main/java/com/baeldung/aspectj/Account.java b/aspectj/src/main/java/com/baeldung/aspectj/Account.java index 59cab72ebf..bc9ca375aa 100644 --- a/aspectj/src/main/java/com/baeldung/aspectj/Account.java +++ b/aspectj/src/main/java/com/baeldung/aspectj/Account.java @@ -4,10 +4,10 @@ public class Account { int balance = 20; public boolean withdraw(int amount) { - if (balance - amount > 0) { - balance = balance - amount; - return true; - } else + if (balance < amount) { return false; + } + balance = balance - amount; + return true; } } diff --git a/aspectj/src/main/java/com/baeldung/aspectj/AccountAspect.aj b/aspectj/src/main/java/com/baeldung/aspectj/AccountAspect.aj index 2ddf03192b..8423c1da97 100644 --- a/aspectj/src/main/java/com/baeldung/aspectj/AccountAspect.aj +++ b/aspectj/src/main/java/com/baeldung/aspectj/AccountAspect.aj @@ -16,12 +16,11 @@ public aspect AccountAspect { } boolean around(int amount, Account account) : callWithDraw(amount, account) { - if (account.balance - amount >= MIN_BALANCE) - return proceed(amount, account); - else { + if (account.balance < amount) { logger.info("Withdrawal Rejected!"); return false; } + return proceed(amount, account); } after(int amount, Account balance) : callWithDraw(amount, balance) { From f1043d3b526da61f16b8744cfb249de59173ceab Mon Sep 17 00:00:00 2001 From: Hector Romero Date: Fri, 2 Dec 2016 03:47:24 -0600 Subject: [PATCH 188/399] BAEL-7: Small tweaks --- .../java/collections/JoinSplitCollectionsUnitTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java index 66e037b457..7e43fef9fa 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java @@ -23,7 +23,7 @@ public class JoinSplitCollectionsUnitTest { String[] animals1 = new String[] { "Dog", "Cat" }; String[] animals2 = new String[] { "Bird", "Cow" }; String[] result = Stream.concat(Arrays.stream(animals1), Arrays.stream(animals2)) - .toArray(size -> new String[size]); + .toArray(String[]::new); assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); } @@ -170,7 +170,8 @@ public class JoinSplitCollectionsUnitTest { String fruits = "Apple. , Orange, Grape. Lemon"; Collection result = Arrays.stream(fruits.split("[,|.]")) - .map(String::trim).filter(next -> !next.isEmpty()) + .map(String::trim) + .filter(next -> !next.isEmpty()) .collect(Collectors.toList()); assertTrue(result.equals(Arrays.asList("Apple", "Orange", "Grape", "Lemon"))); From 09741a0edd66aca6c0acc045ce127403716ff0a9 Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 2 Dec 2016 13:20:28 +0200 Subject: [PATCH 189/399] update dependencies --- wicket/pom.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/wicket/pom.xml b/wicket/pom.xml index 929f723c2c..8b81ea4be8 100644 --- a/wicket/pom.xml +++ b/wicket/pom.xml @@ -9,11 +9,10 @@ 1.0-SNAPSHOT WicketIntro - 7.4.0 + 7.5.0 9.2.13.v20150730 - 2.5 4.12 - 3.5.1 + 3.6.0 2.6 UTF-8 From 125756eaffd1ada4c6778fab84a1216484d9164e Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 2 Dec 2016 13:28:53 +0200 Subject: [PATCH 190/399] cleanup pom --- testing/pom.xml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/testing/pom.xml b/testing/pom.xml index aa523d95ef..1bdc5c87f0 100644 --- a/testing/pom.xml +++ b/testing/pom.xml @@ -5,17 +5,23 @@ mutation-testing 0.1-SNAPSHOT mutation-testing + + + 1.1.10 + 4.12 + 0.7.7.201606060606 + org.pitest pitest-parent - 1.1.10 + ${pitest.version} pom junit junit - 4.9 + ${junit.version} @@ -23,7 +29,7 @@ org.pitest pitest-maven - 1.1.10 + ${pitest.version} com.baeldung.testing.mutation.* @@ -36,7 +42,7 @@ org.jacoco jacoco-maven-plugin - 0.7.7.201606060606 + ${jacoco.version} From 9c7b0550d2d31e49a87c992c83627097c0b8a5aa Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 2 Dec 2016 13:56:34 +0200 Subject: [PATCH 191/399] update dependencies --- spring-zuul/pom.xml | 26 ++++---------------------- spring-zuul/spring-zuul-ui/pom.xml | 2 +- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/spring-zuul/pom.xml b/spring-zuul/pom.xml index 75ff467527..2107892667 100644 --- a/spring-zuul/pom.xml +++ b/spring-zuul/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE @@ -65,36 +65,18 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE - - - - 2.7.2 - - - 1.7.12 - 1.1.3 + 1.2.3.RELEASE - 19.0 - 3.3.2 + 3.5 - 1.3 - 4.11 - 1.10.19 - - 4.4 - 4.4 - 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 - 1.4.18 diff --git a/spring-zuul/spring-zuul-ui/pom.xml b/spring-zuul/spring-zuul-ui/pom.xml index 99df27f2f9..f337ed32ba 100644 --- a/spring-zuul/spring-zuul-ui/pom.xml +++ b/spring-zuul/spring-zuul-ui/pom.xml @@ -17,7 +17,7 @@ org.springframework.cloud spring-cloud-starter-zuul - 1.0.4.RELEASE + ${spring-cloud.version} @@ -158,52 +158,52 @@ org.apache.derby derby - 10.12.1.1 + ${derby.version} org.apache.derby derbyclient - 10.12.1.1 + ${derby.version} org.apache.derby derbynet - 10.12.1.1 + ${derby.version} org.apache.derby derbytools - 10.12.1.1 + ${derby.version} taglibs standard - 1.1.2 + ${taglibs-standard.version} org.springframework.security spring-security-taglibs - 4.1.3.RELEASE + ${org.springframework.security.version} javax.servlet.jsp.jstl jstl-api - 1.2 + ${jstl-api.version} org.springframework.boot spring-boot-test - 1.4.1.RELEASE + ${spring-boot.version} org.springframework.boot spring-boot - 1.4.1.RELEASE + ${spring-boot.version} javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet.version} @@ -288,44 +288,39 @@ - 4.1.3.RELEASE - 4.3.2.RELEASE - 3.20.0-GA + 4.2.0.RELEASE + 4.3.4.RELEASE + 1.4.2.RELEASE + 3.21.0-GA - 5.2.2.Final - 5.1.38 - 1.10.2.RELEASE - 1.4.192 - - - 1.7.13 - 1.1.3 - + 5.2.5.Final + 5.1.40 + 1.10.5.RELEASE + 1.4.193 + 10.13.1.1 + - 5.2.2.Final - + 5.3.3.Final + 2.2.5 + 1.1.2 + 1.2 + 3.1.0 + 19.0 - 3.4 - + 3.5 + 1.4.01 + 1.3 4.12 1.10.19 - 4.4.1 - 4.5 - - 2.9.0 - - 3.5.1 + 3.6.0 2.6 2.19.1 - 2.7 - 1.4.18 - From c05a61b91bba0bd5b7d7fe077cc850aacda51a4e Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 2 Dec 2016 21:19:15 +0200 Subject: [PATCH 193/399] upgrade dependencies --- spring-thymeleaf/pom.xml | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/spring-thymeleaf/pom.xml b/spring-thymeleaf/pom.xml index e59ce77e57..b387539aa1 100644 --- a/spring-thymeleaf/pom.xml +++ b/spring-thymeleaf/pom.xml @@ -8,22 +8,27 @@ 1.8 - 4.3.3.RELEASE - 3.0.1 + 4.3.4.RELEASE + 4.2.0.RELEASE + 3.1.0 - 1.7.12 - 1.1.3 + 1.7.21 + 1.1.7 - 3.0.1.RELEASE + 3.0.2.RELEASE + 2.1.2 1.1.0.Final - 5.1.2.Final + 5.3.3.Final + 5.2.5.Final + 4.12 - 3.5.1 + 3.6.0 2.6 2.19.1 - 1.4.18 + 1.6.1 + 2.2 @@ -49,12 +54,12 @@ org.springframework.security spring-security-web - 4.1.3.RELEASE + ${springframework-security.version} org.springframework.security spring-security-config - 4.1.3.RELEASE + ${springframework-security.version} @@ -71,7 +76,7 @@ nz.net.ultraq.thymeleaf thymeleaf-layout-dialect - 2.0.4 + ${thymeleaf-layout-dialect.version} @@ -112,14 +117,14 @@ org.hibernate hibernate-validator - ${org.hibernate-version} + ${hibernate-validator.version} org.springframework spring-test - 4.1.3.RELEASE + ${org.springframework-version} test @@ -127,7 +132,7 @@ org.springframework.security spring-security-test - 4.1.3.RELEASE + ${springframework-security.version} test @@ -135,7 +140,7 @@ junit junit - 4.12 + ${junit.version} test @@ -194,7 +199,7 @@ org.apache.tomcat.maven tomcat7-maven-plugin - 2.0 + ${tomcat7-maven-plugin.version} tomcat-run From b18e801370b87ab660f2213bea591f602bd438e9 Mon Sep 17 00:00:00 2001 From: Yasser Afifi Date: Fri, 2 Dec 2016 23:31:10 +0000 Subject: [PATCH 194/399] added more example --- .../java/com/baeldung/generics/Building.java | 5 ++ .../java/com/baeldung/generics/Generics.java | 20 +++++--- .../com/baeldung/generics/SubBuilding.java | 4 ++ .../com/baeldung/generics/GenericsTest.java | 49 +++++++++++-------- 4 files changed, 51 insertions(+), 27 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/generics/Building.java create mode 100644 core-java/src/main/java/com/baeldung/generics/SubBuilding.java diff --git a/core-java/src/main/java/com/baeldung/generics/Building.java b/core-java/src/main/java/com/baeldung/generics/Building.java new file mode 100644 index 0000000000..cfdcc63170 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/generics/Building.java @@ -0,0 +1,5 @@ + +public class Building { + public void paint() { + } +} diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java/src/main/java/com/baeldung/generics/Generics.java index ce1325687f..31a6ee6b60 100644 --- a/core-java/src/main/java/com/baeldung/generics/Generics.java +++ b/core-java/src/main/java/com/baeldung/generics/Generics.java @@ -1,4 +1,5 @@ import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class Generics { @@ -6,19 +7,24 @@ public class Generics { // definition of a generic method public static List fromArrayToList(T[] a) { List list = new ArrayList<>(); - for (T t : a) { - list.add(t); - } + Arrays.stream(a).forEach(list::add); return list; } // example of a generic method that has Number as an upper bound for T public static List fromArrayToListWithUpperBound(T[] a) { List list = new ArrayList<>(); - for (T t : a) { - list.add(t); - } + Arrays.stream(a).forEach(list::add); return list; } -} + // example of a generic method with a wild card, this method can be used + // with a list of any subtype of Building + public static boolean paintAllBuildings(List buildings) { + for (Building building : buildings) { + building.paint(); + } + return true; + } + +} \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/generics/SubBuilding.java b/core-java/src/main/java/com/baeldung/generics/SubBuilding.java new file mode 100644 index 0000000000..938eb6caf5 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/generics/SubBuilding.java @@ -0,0 +1,4 @@ + +public class SubBuilding extends Building { + +} diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java index 7778f8ea81..c04a9f21cb 100644 --- a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java +++ b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java @@ -1,4 +1,8 @@ -import java.util.Iterator; +import static org.hamcrest.CoreMatchers.hasItems; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; import java.util.List; import org.junit.Test; @@ -7,40 +11,45 @@ public class GenericsTest { // testing the generic method with Integer @Test - public void fromArrayToListIntTest() { + public void givenArrayOfIntegers_thanListOfIntegersReturnedOK() { Integer[] intArray = { 1, 2, 3, 4, 5 }; List list = Generics.fromArrayToList(intArray); - Iterator iterator; - iterator = list.iterator(); - while (iterator.hasNext()) { - System.out.println(iterator.next()); - } + + assertThat(list, hasItems(intArray)); } // testing the generic method with String @Test - public void fromArrayToListStringTest() { + public void givenArrayOfStrings_thanListOfStringsReturnedOK() { String[] stringArray = { "hello1", "hello2", "hello3", "hello4", "hello5" }; List list = Generics.fromArrayToList(stringArray); - Iterator iterator; - iterator = list.iterator(); - while (iterator.hasNext()) { - System.out.println(iterator.next()); - } + + assertThat(list, hasItems(stringArray)); } // testing the generic method with Number as upper bound with Integer // if we test fromArrayToListWithUpperBound with any type that doesn't // extend Number it will fail to compile @Test - public void fromArrayToListUpperboundIntTest() { + public void givenArrayOfIntegersAndNumberUpperBound_thanListOfIntegersReturnedOK() { Integer[] intArray = { 1, 2, 3, 4, 5 }; List list = Generics.fromArrayToListWithUpperBound(intArray); - Iterator iterator; - iterator = list.iterator(); - while (iterator.hasNext()) { - System.out.println(iterator.next()); - } + + assertThat(list, hasItems(intArray)); } -} + // testing paintAllBuildings method with a subtype of Building, the method + // will work with all subtypes of Building + @Test + public void givenSubTypeOfAwildCardBoundedGenericMethod() { + + List subBuildingsList = new ArrayList<>(); + subBuildingsList.add(new SubBuilding()); + subBuildingsList.add(new SubBuilding()); + + boolean result = Generics.paintAllBuildings(subBuildingsList); + assertTrue(result); + + } + +} \ No newline at end of file From 1a7f172587fd7d528210b6af404d8226efba2180 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sat, 3 Dec 2016 10:53:17 +0100 Subject: [PATCH 195/399] BAEL-376 - Adding more test code --- .../java/com/baeldung/generics/Building.java | 7 ++ .../java/com/baeldung/generics/Generics.java | 6 +- .../java/com/baeldung/generics/House.java | 12 +++ .../com/baeldung/generics/SubBuilding.java | 4 - .../com/baeldung/generics/GenericsTest.java | 77 ++++++++++--------- .../java/nio2/async/AsyncEchoClient.java | 4 +- .../java/nio2/async/AsyncEchoTest.java | 3 +- 7 files changed, 65 insertions(+), 48 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/generics/House.java delete mode 100644 core-java/src/main/java/com/baeldung/generics/SubBuilding.java diff --git a/core-java/src/main/java/com/baeldung/generics/Building.java b/core-java/src/main/java/com/baeldung/generics/Building.java index cfdcc63170..2af6ee0711 100644 --- a/core-java/src/main/java/com/baeldung/generics/Building.java +++ b/core-java/src/main/java/com/baeldung/generics/Building.java @@ -1,5 +1,12 @@ +package com.baeldung.generics; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class Building { + private static final Logger LOGGER = LoggerFactory.getLogger(Building.class); + public void paint() { + LOGGER.info("Building"); } } diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java/src/main/java/com/baeldung/generics/Generics.java index 31a6ee6b60..e8b7dd1182 100644 --- a/core-java/src/main/java/com/baeldung/generics/Generics.java +++ b/core-java/src/main/java/com/baeldung/generics/Generics.java @@ -1,3 +1,5 @@ +package com.baeldung.generics; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -21,9 +23,7 @@ public class Generics { // example of a generic method with a wild card, this method can be used // with a list of any subtype of Building public static boolean paintAllBuildings(List buildings) { - for (Building building : buildings) { - building.paint(); - } + buildings.stream().forEach(Building::paint); return true; } diff --git a/core-java/src/main/java/com/baeldung/generics/House.java b/core-java/src/main/java/com/baeldung/generics/House.java new file mode 100644 index 0000000000..e10922120f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/generics/House.java @@ -0,0 +1,12 @@ +package com.baeldung.generics; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class House extends Building { + private static final Logger LOGGER = LoggerFactory.getLogger(House.class); + + public void paint() { + LOGGER.info("House"); + } +} diff --git a/core-java/src/main/java/com/baeldung/generics/SubBuilding.java b/core-java/src/main/java/com/baeldung/generics/SubBuilding.java deleted file mode 100644 index 938eb6caf5..0000000000 --- a/core-java/src/main/java/com/baeldung/generics/SubBuilding.java +++ /dev/null @@ -1,4 +0,0 @@ - -public class SubBuilding extends Building { - -} diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java index c04a9f21cb..0488ae3d22 100644 --- a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java +++ b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java @@ -1,55 +1,56 @@ -import static org.hamcrest.CoreMatchers.hasItems; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertTrue; +package com.baeldung.generics; + +import org.junit.Test; import java.util.ArrayList; import java.util.List; -import org.junit.Test; +import static org.hamcrest.CoreMatchers.hasItems; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertTrue; public class GenericsTest { - // testing the generic method with Integer - @Test - public void givenArrayOfIntegers_thanListOfIntegersReturnedOK() { - Integer[] intArray = { 1, 2, 3, 4, 5 }; - List list = Generics.fromArrayToList(intArray); + // testing the generic method with Integer + @Test + public void givenArrayOfIntegers_thanListOfIntegersReturnedOK() { + Integer[] intArray = {1, 2, 3, 4, 5}; + List list = Generics.fromArrayToList(intArray); - assertThat(list, hasItems(intArray)); - } + assertThat(list, hasItems(intArray)); + } - // testing the generic method with String - @Test - public void givenArrayOfStrings_thanListOfStringsReturnedOK() { - String[] stringArray = { "hello1", "hello2", "hello3", "hello4", "hello5" }; - List list = Generics.fromArrayToList(stringArray); + // testing the generic method with String + @Test + public void givenArrayOfStrings_thanListOfStringsReturnedOK() { + String[] stringArray = {"hello1", "hello2", "hello3", "hello4", "hello5"}; + List list = Generics.fromArrayToList(stringArray); - assertThat(list, hasItems(stringArray)); - } + assertThat(list, hasItems(stringArray)); + } - // testing the generic method with Number as upper bound with Integer - // if we test fromArrayToListWithUpperBound with any type that doesn't - // extend Number it will fail to compile - @Test - public void givenArrayOfIntegersAndNumberUpperBound_thanListOfIntegersReturnedOK() { - Integer[] intArray = { 1, 2, 3, 4, 5 }; - List list = Generics.fromArrayToListWithUpperBound(intArray); + // testing the generic method with Number as upper bound with Integer + // if we test fromArrayToListWithUpperBound with any type that doesn't + // extend Number it will fail to compile + @Test + public void givenArrayOfIntegersAndNumberUpperBound_thanListOfIntegersReturnedOK() { + Integer[] intArray = {1, 2, 3, 4, 5}; + List list = Generics.fromArrayToListWithUpperBound(intArray); - assertThat(list, hasItems(intArray)); - } + assertThat(list, hasItems(intArray)); + } - // testing paintAllBuildings method with a subtype of Building, the method - // will work with all subtypes of Building - @Test - public void givenSubTypeOfAwildCardBoundedGenericMethod() { + // testing paintAllBuildings method with a subtype of Building, the method + // will work with all subtypes of Building + @Test + public void givenSubTypeOfWildCardBoundedGenericMethod_thanOK() { - List subBuildingsList = new ArrayList<>(); - subBuildingsList.add(new SubBuilding()); - subBuildingsList.add(new SubBuilding()); + List subBuildingsList = new ArrayList<>(); + subBuildingsList.add(new Building()); + subBuildingsList.add(new House()); - boolean result = Generics.paintAllBuildings(subBuildingsList); - assertTrue(result); - - } + boolean result = Generics.paintAllBuildings(subBuildingsList); + assertTrue(result); + } } \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java index d64fbc763e..2b25120dd4 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java @@ -40,7 +40,7 @@ public class AsyncEchoClient { } } - public String sendMessage(String message) { + public String sendMessage(String message) throws ExecutionException, InterruptedException { byte[] byteMsg = new String(message).getBytes(); ByteBuffer buffer = ByteBuffer.wrap(byteMsg); Future writeResult = client.write(buffer); @@ -65,7 +65,7 @@ public class AsyncEchoClient { } } - public static void main(String[] args) throws IOException { + public static void main(String[] args) throws IOException, ExecutionException, InterruptedException { AsyncEchoClient client = AsyncEchoClient.getInstance(); client.start(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java index 7ac388fb09..475c91095e 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java @@ -3,6 +3,7 @@ package com.baeldung.java.nio2.async; import static org.junit.Assert.*; import java.io.IOException; +import java.util.concurrent.ExecutionException; import org.junit.After; import org.junit.Before; @@ -20,7 +21,7 @@ public class AsyncEchoTest { } @Test - public void givenServerClient_whenServerEchosMessage_thenCorrect() { + public void givenServerClient_whenServerEchosMessage_thenCorrect() throws ExecutionException, InterruptedException { String resp1 = client.sendMessage("hello"); String resp2 = client.sendMessage("world"); assertEquals("hello", resp1); From 1b63b9bf35798cc1740929b30ba31e73e31fc372 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sat, 3 Dec 2016 10:57:49 +0100 Subject: [PATCH 196/399] Fix AsyncEchoClient --- .../java/com/baeldung/java/nio2/async/AsyncEchoClient.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java index d64fbc763e..eaaf3dea06 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java @@ -40,8 +40,8 @@ public class AsyncEchoClient { } } - public String sendMessage(String message) { - byte[] byteMsg = new String(message).getBytes(); + public String sendMessage(String message) throws Exception { + byte[] byteMsg = message.getBytes(); ByteBuffer buffer = ByteBuffer.wrap(byteMsg); Future writeResult = client.write(buffer); @@ -65,7 +65,7 @@ public class AsyncEchoClient { } } - public static void main(String[] args) throws IOException { + public static void main(String[] args) throws Exception { AsyncEchoClient client = AsyncEchoClient.getInstance(); client.start(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); From 6304f2036f0eab9b58c60ce954541ab7e4423f9d Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sat, 3 Dec 2016 11:08:14 +0100 Subject: [PATCH 197/399] Fix AsyncEchoClient --- .../com/baeldung/java/nio2/async/AsyncEchoTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java index 7ac388fb09..93cb3e1eb6 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java @@ -1,13 +1,13 @@ package com.baeldung.java.nio2.async; -import static org.junit.Assert.*; - -import java.io.IOException; - import org.junit.After; import org.junit.Before; import org.junit.Test; +import java.io.IOException; + +import static org.junit.Assert.assertEquals; + public class AsyncEchoTest { Process server; @@ -20,7 +20,7 @@ public class AsyncEchoTest { } @Test - public void givenServerClient_whenServerEchosMessage_thenCorrect() { + public void givenServerClient_whenServerEchosMessage_thenCorrect() throws Exception { String resp1 = client.sendMessage("hello"); String resp2 = client.sendMessage("world"); assertEquals("hello", resp1); From 65d007e14d086d1d7201c7c8c9ccf72e69ec1f2d Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 3 Dec 2016 13:41:45 +0200 Subject: [PATCH 198/399] upgrade dependencies --- spring-spel/pom.xml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/spring-spel/pom.xml b/spring-spel/pom.xml index add5e53348..c3817ce2bd 100644 --- a/spring-spel/pom.xml +++ b/spring-spel/pom.xml @@ -8,26 +8,34 @@ spel 1.0-SNAPSHOT + + 4.12 + 1.3 + 4.3.4.RELEASE + 3.6.0 + 2.19.1 + + junit junit - 4.12 + ${junit.version} org.hamcrest hamcrest-all - 1.3 + ${hamcrest.version} org.springframework spring-context - 4.0.6.RELEASE + ${springframework.version} org.springframework spring-test - 4.0.6.RELEASE + ${springframework.version} test @@ -35,7 +43,7 @@ maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} true true @@ -50,7 +58,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + ${maven-surefire-plugin.version} **/*IntegrationTest.java From 17b5b87067bb7dec492f304eb18fe1b14ade8550 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 3 Dec 2016 13:47:09 +0200 Subject: [PATCH 199/399] upgrade spring boot --- spring-social-login/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-social-login/pom.xml b/spring-social-login/pom.xml index 6e74b1c3d1..4369ec4e7c 100644 --- a/spring-social-login/pom.xml +++ b/spring-social-login/pom.xml @@ -9,7 +9,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE From 098800925ddc5c5f87d4e05bdcbfb2b4a53b6c45 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 3 Dec 2016 13:52:48 +0200 Subject: [PATCH 200/399] cleanup pom --- spring-session/pom.xml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/spring-session/pom.xml b/spring-session/pom.xml index 49329af345..75a3174858 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -11,7 +11,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -61,7 +61,6 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 1.8 1.8 @@ -70,7 +69,6 @@ org.apache.maven.plugins maven-surefire-plugin - ${maven-surefire-plugin.version} **/*ControllerTest.java @@ -79,7 +77,4 @@ - - 2.19.1 - \ No newline at end of file From 3b2a499fdeb3c89afdd952113a726aa62808c02e Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 3 Dec 2016 13:56:24 +0200 Subject: [PATCH 201/399] upgrade spring boot --- spring-security-x509/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-x509/pom.xml b/spring-security-x509/pom.xml index 953af761b5..8596223cf4 100644 --- a/spring-security-x509/pom.xml +++ b/spring-security-x509/pom.xml @@ -16,7 +16,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE From 20acf42fca9b9eca806e5da4f1f9a2e2c2922d85 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 3 Dec 2016 14:11:19 +0200 Subject: [PATCH 202/399] cleanup pom --- spring-security-rest-full/pom.xml | 32 ++++--------------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/spring-security-rest-full/pom.xml b/spring-security-rest-full/pom.xml index ab354d51a7..e9580d357d 100644 --- a/spring-security-rest-full/pom.xml +++ b/spring-security-rest-full/pom.xml @@ -463,46 +463,22 @@ - - - 4.3.11.Final - 5.1.40 - - 2.0.0 - 4.1.4 - - - 2.7.8 - 1.4.01 - - - 1.7.13 - 1.1.3 + 2.1.0 - 5.2.2.Final - 1.4.8 + 1.4.9 19.0 - 3.4 + 3.5 - 1.3 4.12 - 1.10.19 - - 4.4.1 - 4.5 - 2.9.0 - 3.6.0 - 2.6 - 2.19.1 - 1.4.18 + 1.6.1 1.1.3 From 34e5a6475f1bb084fcca1a3b7951d861a0f6e608 Mon Sep 17 00:00:00 2001 From: Hector Romero Date: Sat, 3 Dec 2016 10:06:01 -0600 Subject: [PATCH 203/399] BAEL-7: Fix formatting (#874) --- .../JoinSplitCollectionsUnitTest.java | 291 +++++++++--------- 1 file changed, 146 insertions(+), 145 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java index 7e43fef9fa..d2615a4985 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java @@ -18,162 +18,163 @@ import org.junit.Test; public class JoinSplitCollectionsUnitTest { - @Test - public void whenJoiningTwoArrays_thenJoined() { - String[] animals1 = new String[] { "Dog", "Cat" }; - String[] animals2 = new String[] { "Bird", "Cow" }; - String[] result = Stream.concat(Arrays.stream(animals1), Arrays.stream(animals2)) - .toArray(String[]::new); + @Test + public void whenJoiningTwoArrays_thenJoined() { + String[] animals1 = new String[] { "Dog", "Cat" }; + String[] animals2 = new String[] { "Bird", "Cow" }; + String[] result = Stream.concat(Arrays.stream(animals1), Arrays.stream(animals2)) + .toArray(String[]::new); + + assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); + } - assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); - } - - @Test - public void whenJoiningTwoCollections_thenJoined() { - Collection collection1 = Arrays.asList(7, 8, 9); - Collection collection2 = Arrays.asList(10, 11, 12); - Collection result = Stream.concat(collection1.stream(), collection2.stream()) - .collect(Collectors.toList()); - - assertTrue(result.equals(Arrays.asList(7, 8, 9, 10, 11, 12))); - } + @Test + public void whenJoiningTwoCollections_thenJoined() { + Collection collection1 = Arrays.asList(7, 8, 9); + Collection collection2 = Arrays.asList(10, 11, 12); + Collection result = Stream.concat(collection1.stream(), collection2.stream()) + .collect(Collectors.toList()); + + assertTrue(result.equals(Arrays.asList(7, 8, 9, 10, 11, 12))); + } - @Test - public void whenJoiningTwoCollectionsWithFilter_thenJoined() { - Collection collection1 = Arrays.asList(7, 8, 11); - Collection collection2 = Arrays.asList(9, 12, 10); - Collection result = Stream.concat(collection1.stream(), collection2.stream()) - .filter(next -> next <= 10) - .collect(Collectors.toList()); - - assertTrue(result.equals(Arrays.asList(7, 8, 9, 10))); - } + @Test + public void whenJoiningTwoCollectionsWithFilter_thenJoined() { + Collection collection1 = Arrays.asList(7, 8, 11); + Collection collection2 = Arrays.asList(9, 12, 10); + Collection result = Stream.concat(collection1.stream(), collection2.stream()) + .filter(next -> next <= 10) + .collect(Collectors.toList()); + + assertTrue(result.equals(Arrays.asList(7, 8, 9, 10))); + } - @Test - public void whenConvertArrayToString_thenConverted() { - String[] colors = new String[] { "Red", "Blue", "Green", "Yellow" }; - String result = Arrays.stream(colors) - .collect(Collectors.joining(", ")); + @Test + public void whenConvertArrayToString_thenConverted() { + String[] colors = new String[] { "Red", "Blue", "Green", "Yellow" }; + String result = Arrays.stream(colors) + .collect(Collectors.joining(", ")); + + assertEquals(result, "Red, Blue, Green, Yellow"); + } - assertEquals(result, "Red, Blue, Green, Yellow"); - } + @Test + public void whenConvertCollectionToString_thenConverted() { + Collection directions = Arrays.asList("Left", "Right", "Top", "Bottom"); + String result = directions.stream() + .collect(Collectors.joining(", ")); + + assertEquals(result, "Left, Right, Top, Bottom"); + } - @Test - public void whenConvertCollectionToString_thenConverted() { - Collection directions = Arrays.asList("Left", "Right", "Top", "Bottom"); - String result = directions.stream() - .collect(Collectors.joining(", ")); - - assertEquals(result, "Left, Right, Top, Bottom"); - } + @Test + public void whenConvertMapToString_thenConverted() { + Map users = new HashMap<>(); + users.put(1, "John Doe"); + users.put(2, "Paul Smith"); + users.put(3, "Susan Anderson"); + + String result = users.entrySet().stream() + .map(entry -> entry.getKey() + " = " + entry.getValue()) + .collect(Collectors.joining(", ")); + + assertEquals(result, "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"); + } - @Test - public void whenConvertMapToString_thenConverted() { - Map users = new HashMap<>(); - users.put(1, "John Doe"); - users.put(2, "Paul Smith"); - users.put(3, "Susan Anderson"); + @Test + public void whenConvertNestedCollectionToString_thenConverted() { + Collection> nested = new ArrayList<>(); + nested.add(Arrays.asList("Left", "Right", "Top", "Bottom")); + nested.add(Arrays.asList("Red", "Blue", "Green", "Yellow")); + + String result = nested.stream() + .map(nextList -> nextList.stream() + .collect(Collectors.joining("-"))) + .collect(Collectors.joining("; ")); + + assertEquals(result, "Left-Right-Top-Bottom; Red-Blue-Green-Yellow"); + } - String result = users.entrySet().stream().map(entry -> entry.getKey() + " = " + entry.getValue()) - .collect(Collectors.joining(", ")); + @Test + public void whenConvertCollectionToStringAndSkipNull_thenConverted() { + Collection fruits = Arrays.asList("Apple", "Orange", null, "Grape"); + String result = fruits.stream() + .filter(next -> next != null) + .collect(Collectors.joining(", ")); + + assertEquals(result, "Apple, Orange, Grape"); + } - assertEquals(result, "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"); - } + @Test + public void whenSplitCollectionHalf_thenConverted() { + Collection numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + Collection result1 = new ArrayList<>(); + Collection result2 = new ArrayList<>(); + AtomicInteger count = new AtomicInteger(); + int midpoint = Math.round(numbers.size() / 2); + + numbers.forEach(next -> { + int index = count.getAndIncrement(); + if (index < midpoint) { + result1.add(next); + } else { + result2.add(next); + } + }); + + assertTrue(result1.equals(Arrays.asList(1, 2, 3, 4, 5))); + assertTrue(result2.equals(Arrays.asList(6, 7, 8, 9, 10))); + } - @Test - public void whenConvertNestedCollectionToString_thenConverted() { - Collection> nested = new ArrayList<>(); - nested.add(Arrays.asList("Left", "Right", "Top", "Bottom")); - nested.add(Arrays.asList("Red", "Blue", "Green", "Yellow")); - - String result = nested.stream() - .map(nextList -> nextList.stream() - .collect(Collectors.joining("-"))) - .collect(Collectors.joining("; ")); - - assertEquals(result, "Left-Right-Top-Bottom; Red-Blue-Green-Yellow"); - } + @Test + public void whenSplitArrayByWordLength_thenConverted() { + String[] words = new String[] { "bye", "cold", "it", "and", "my", "word" }; + Map> result = Arrays.stream(words) + .collect(Collectors.groupingBy(word -> word.length())); + + assertTrue(result.get(2).equals(Arrays.asList("it", "my"))); + assertTrue(result.get(3).equals(Arrays.asList("bye", "and"))); + assertTrue(result.get(4).equals(Arrays.asList("cold", "word"))); + } - @Test - public void whenConvertCollectionToStringAndSkipNull_thenConverted() { - Collection fruits = Arrays.asList("Apple", "Orange", null, "Grape"); - String result = fruits.stream() - .filter(next -> next != null) - .collect(Collectors.joining(", ")); - - assertEquals(result, "Apple, Orange, Grape"); - } + @Test + public void whenConvertStringToArray_thenConverted() { + String colors = "Red, Blue, Green, Yellow"; + String[] result = colors.split(", "); + + assertArrayEquals(result, new String[] { "Red", "Blue", "Green", "Yellow" }); + } - @Test - public void whenSplitCollectionHalf_thenConverted() { - Collection numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); - Collection result1 = new ArrayList<>(); - Collection result2 = new ArrayList<>(); - AtomicInteger count = new AtomicInteger(); - int midpoint = Math.round(numbers.size() / 2); - - numbers.forEach(next -> { - int index = count.getAndIncrement(); - if(index < midpoint){ - result1.add(next); - }else{ - result2.add(next); - } - }); - - assertTrue(result1.equals(Arrays.asList(1, 2, 3, 4, 5))); - assertTrue(result2.equals(Arrays.asList(6, 7, 8, 9, 10))); - } - - @Test - public void whenSplitArrayByWordLength_thenConverted() { - String[] words = new String[]{"bye", "cold", "it", "and", "my", "word"}; - Map> result = Arrays.stream(words) - .collect(Collectors.groupingBy(word -> word.length())); - - assertTrue(result.get(2).equals(Arrays.asList("it", "my"))); - assertTrue(result.get(3).equals(Arrays.asList("bye", "and"))); - assertTrue(result.get(4).equals(Arrays.asList("cold", "word"))); - } + @Test + public void whenConvertStringToCollection_thenConverted() { + String colors = "Left, Right, Top, Bottom"; + Collection result = Arrays.asList(colors.split(", ")); + + assertTrue(result.equals(Arrays.asList("Left", "Right", "Top", "Bottom"))); + } - @Test - public void whenConvertStringToArray_thenConverted() { - String colors = "Red, Blue, Green, Yellow"; - String[] result = colors.split(", "); + @Test + public void whenConvertStringToMap_thenConverted() { + String users = "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"; + + Map result = Arrays.stream(users.split(", ")) + .map(next -> next.split(" = ")) + .collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); + + assertEquals(result.get(1), "John Doe"); + assertEquals(result.get(2), "Paul Smith"); + assertEquals(result.get(3), "Susan Anderson"); + } - assertArrayEquals(result, new String[] { "Red", "Blue", "Green", "Yellow" }); - } - - @Test - public void whenConvertStringToCollection_thenConverted() { - String colors = "Left, Right, Top, Bottom"; - Collection result = Arrays.asList(colors.split(", ")); - - assertTrue(result.equals(Arrays.asList("Left", "Right", "Top", "Bottom"))); - } - - @Test - public void whenConvertStringToMap_thenConverted() { - String users = "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"; - - Map result = Arrays.stream(users.split(", ")) - .map(next -> next.split(" = ")) - .collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); - - assertEquals(result.get(1), "John Doe"); - assertEquals(result.get(2), "Paul Smith"); - assertEquals(result.get(3), "Susan Anderson"); - } - - @Test - public void whenConvertCollectionToStringMultipleSeparators_thenConverted() { - String fruits = "Apple. , Orange, Grape. Lemon"; - - Collection result = Arrays.stream(fruits.split("[,|.]")) - .map(String::trim) - .filter(next -> !next.isEmpty()) - .collect(Collectors.toList()); - - assertTrue(result.equals(Arrays.asList("Apple", "Orange", "Grape", "Lemon"))); - } + @Test + public void whenConvertCollectionToStringMultipleSeparators_thenConverted() { + String fruits = "Apple. , Orange, Grape. Lemon"; + + Collection result = Arrays.stream(fruits.split("[,|.]")) + .map(String::trim) + .filter(next -> !next.isEmpty()) + .collect(Collectors.toList()); + + assertTrue(result.equals(Arrays.asList("Apple", "Orange", "Grape", "Lemon"))); + } } From a6bdad2cb9bf98845b2a435b7e828b789a3a70cf Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sat, 3 Dec 2016 17:09:34 +0100 Subject: [PATCH 204/399] Refactor JoinSplitCollectionsUnitTest --- .../JoinSplitCollectionsUnitTest.java | 101 ++++++++---------- 1 file changed, 47 insertions(+), 54 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java index d2615a4985..7efc2ab9de 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java @@ -1,31 +1,24 @@ package org.baeldung.java.collections; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import org.junit.Test; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.junit.Test; +import static org.junit.Assert.*; public class JoinSplitCollectionsUnitTest { @Test public void whenJoiningTwoArrays_thenJoined() { - String[] animals1 = new String[] { "Dog", "Cat" }; - String[] animals2 = new String[] { "Bird", "Cow" }; + String[] animals1 = new String[]{"Dog", "Cat"}; + String[] animals2 = new String[]{"Bird", "Cow"}; String[] result = Stream.concat(Arrays.stream(animals1), Arrays.stream(animals2)) - .toArray(String[]::new); - - assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); + .toArray(String[]::new); + + assertArrayEquals(result, new String[]{"Dog", "Cat", "Bird", "Cow"}); } @Test @@ -33,8 +26,8 @@ public class JoinSplitCollectionsUnitTest { Collection collection1 = Arrays.asList(7, 8, 9); Collection collection2 = Arrays.asList(10, 11, 12); Collection result = Stream.concat(collection1.stream(), collection2.stream()) - .collect(Collectors.toList()); - + .collect(Collectors.toList()); + assertTrue(result.equals(Arrays.asList(7, 8, 9, 10, 11, 12))); } @@ -43,18 +36,18 @@ public class JoinSplitCollectionsUnitTest { Collection collection1 = Arrays.asList(7, 8, 11); Collection collection2 = Arrays.asList(9, 12, 10); Collection result = Stream.concat(collection1.stream(), collection2.stream()) - .filter(next -> next <= 10) - .collect(Collectors.toList()); - + .filter(next -> next <= 10) + .collect(Collectors.toList()); + assertTrue(result.equals(Arrays.asList(7, 8, 9, 10))); } @Test public void whenConvertArrayToString_thenConverted() { - String[] colors = new String[] { "Red", "Blue", "Green", "Yellow" }; + String[] colors = new String[]{"Red", "Blue", "Green", "Yellow"}; String result = Arrays.stream(colors) - .collect(Collectors.joining(", ")); - + .collect(Collectors.joining(", ")); + assertEquals(result, "Red, Blue, Green, Yellow"); } @@ -62,8 +55,8 @@ public class JoinSplitCollectionsUnitTest { public void whenConvertCollectionToString_thenConverted() { Collection directions = Arrays.asList("Left", "Right", "Top", "Bottom"); String result = directions.stream() - .collect(Collectors.joining(", ")); - + .collect(Collectors.joining(", ")); + assertEquals(result, "Left, Right, Top, Bottom"); } @@ -73,11 +66,11 @@ public class JoinSplitCollectionsUnitTest { users.put(1, "John Doe"); users.put(2, "Paul Smith"); users.put(3, "Susan Anderson"); - + String result = users.entrySet().stream() - .map(entry -> entry.getKey() + " = " + entry.getValue()) - .collect(Collectors.joining(", ")); - + .map(entry -> entry.getKey() + " = " + entry.getValue()) + .collect(Collectors.joining(", ")); + assertEquals(result, "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"); } @@ -86,12 +79,12 @@ public class JoinSplitCollectionsUnitTest { Collection> nested = new ArrayList<>(); nested.add(Arrays.asList("Left", "Right", "Top", "Bottom")); nested.add(Arrays.asList("Red", "Blue", "Green", "Yellow")); - + String result = nested.stream() - .map(nextList -> nextList.stream() - .collect(Collectors.joining("-"))) - .collect(Collectors.joining("; ")); - + .map(nextList -> nextList.stream() + .collect(Collectors.joining("-"))) + .collect(Collectors.joining("; ")); + assertEquals(result, "Left-Right-Top-Bottom; Red-Blue-Green-Yellow"); } @@ -99,9 +92,9 @@ public class JoinSplitCollectionsUnitTest { public void whenConvertCollectionToStringAndSkipNull_thenConverted() { Collection fruits = Arrays.asList("Apple", "Orange", null, "Grape"); String result = fruits.stream() - .filter(next -> next != null) - .collect(Collectors.joining(", ")); - + .filter(Objects::nonNull) + .collect(Collectors.joining(", ")); + assertEquals(result, "Apple, Orange, Grape"); } @@ -112,7 +105,7 @@ public class JoinSplitCollectionsUnitTest { Collection result2 = new ArrayList<>(); AtomicInteger count = new AtomicInteger(); int midpoint = Math.round(numbers.size() / 2); - + numbers.forEach(next -> { int index = count.getAndIncrement(); if (index < midpoint) { @@ -121,17 +114,17 @@ public class JoinSplitCollectionsUnitTest { result2.add(next); } }); - + assertTrue(result1.equals(Arrays.asList(1, 2, 3, 4, 5))); assertTrue(result2.equals(Arrays.asList(6, 7, 8, 9, 10))); } @Test public void whenSplitArrayByWordLength_thenConverted() { - String[] words = new String[] { "bye", "cold", "it", "and", "my", "word" }; + String[] words = new String[]{"bye", "cold", "it", "and", "my", "word"}; Map> result = Arrays.stream(words) - .collect(Collectors.groupingBy(word -> word.length())); - + .collect(Collectors.groupingBy(String::length)); + assertTrue(result.get(2).equals(Arrays.asList("it", "my"))); assertTrue(result.get(3).equals(Arrays.asList("bye", "and"))); assertTrue(result.get(4).equals(Arrays.asList("cold", "word"))); @@ -141,26 +134,26 @@ public class JoinSplitCollectionsUnitTest { public void whenConvertStringToArray_thenConverted() { String colors = "Red, Blue, Green, Yellow"; String[] result = colors.split(", "); - - assertArrayEquals(result, new String[] { "Red", "Blue", "Green", "Yellow" }); + + assertArrayEquals(result, new String[]{"Red", "Blue", "Green", "Yellow"}); } @Test public void whenConvertStringToCollection_thenConverted() { String colors = "Left, Right, Top, Bottom"; Collection result = Arrays.asList(colors.split(", ")); - + assertTrue(result.equals(Arrays.asList("Left", "Right", "Top", "Bottom"))); } @Test public void whenConvertStringToMap_thenConverted() { String users = "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"; - + Map result = Arrays.stream(users.split(", ")) - .map(next -> next.split(" = ")) - .collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); - + .map(next -> next.split(" = ")) + .collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); + assertEquals(result.get(1), "John Doe"); assertEquals(result.get(2), "Paul Smith"); assertEquals(result.get(3), "Susan Anderson"); @@ -169,12 +162,12 @@ public class JoinSplitCollectionsUnitTest { @Test public void whenConvertCollectionToStringMultipleSeparators_thenConverted() { String fruits = "Apple. , Orange, Grape. Lemon"; - + Collection result = Arrays.stream(fruits.split("[,|.]")) - .map(String::trim) - .filter(next -> !next.isEmpty()) - .collect(Collectors.toList()); - + .map(String::trim) + .filter(next -> !next.isEmpty()) + .collect(Collectors.toList()); + assertTrue(result.equals(Arrays.asList("Apple", "Orange", "Grape", "Lemon"))); } } From 35020fc0853ca4a8307a10ae226ab00f0756428f Mon Sep 17 00:00:00 2001 From: tschiman Date: Sat, 3 Dec 2016 11:08:49 -0700 Subject: [PATCH 205/399] BAEL-89 Removing dependency management module. --- spring-session/pom.xml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/spring-session/pom.xml b/spring-session/pom.xml index 848fdfc405..ea637e33ed 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -39,18 +39,6 @@ - - - - org.springframework.cloud - spring-cloud-dependencies - Brixton.RELEASE - pom - import - - - - From 450c250a0f18546114110988bbec55b2bc715bee Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 3 Dec 2016 20:45:18 +0200 Subject: [PATCH 206/399] cleanup --- .../baeldung/client/RestTemplateLiveTest.java | 265 ------------------ .../java/org/baeldung/web/LiveTestSuite.java | 2 - 2 files changed, 267 deletions(-) delete mode 100644 spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateLiveTest.java diff --git a/spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateLiveTest.java b/spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateLiveTest.java deleted file mode 100644 index a1cd9fcfe1..0000000000 --- a/spring-security-rest-full/src/test/java/org/baeldung/client/RestTemplateLiveTest.java +++ /dev/null @@ -1,265 +0,0 @@ -package org.baeldung.client; - -import static org.apache.commons.codec.binary.Base64.encodeBase64; -import static org.baeldung.Consts.APPLICATION_PORT; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.util.Arrays; -import java.util.Set; - -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.baeldung.persistence.model.Foo; -import org.baeldung.spring.ConfigTest; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.http.client.ClientHttpRequestFactory; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.RequestCallback; -import org.springframework.web.client.RestTemplate; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Charsets; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { ConfigTest.class }, loader = AnnotationConfigContextLoader.class) -@ActiveProfiles("test") -public class RestTemplateLiveTest { - - private RestTemplate restTemplate; - private static final String fooResourceUrl = "http://localhost:" + APPLICATION_PORT + "/spring-security-rest-full/auth/foos"; - - @Before - public void beforeTest() { - restTemplate = new RestTemplate(getClientHttpRequestFactory()); - - ensureOneEntityExists(); - } - - // GET - - @Test - public void givenResourceUrl_whenSendGetForRequestEntity_thenStatusOk() throws IOException { - final ResponseEntity response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class); - assertThat(response.getStatusCode(), is(HttpStatus.OK)); - } - - @Test - public void givenResourceUrl_whenSendGetForRestEntity_thenReceiveCorrectJson() throws IOException { - final ResponseEntity response = restTemplate.getForEntity(fooResourceUrl + "/1", String.class); - - final ObjectMapper mapper = new ObjectMapper(); - final JsonNode root = mapper.readTree(response.getBody()); - - final JsonNode name = root.path("name"); - assertNotNull(name); - - final JsonNode owner = root.path("id"); - assertThat(owner.asText(), is("1")); - } - - @Test - public void givenResourceUrl_whenSendGetForObject_thenReturnsRepoObject() { - final Foo foo = restTemplate.getForObject(fooResourceUrl + "/1", Foo.class); - assertNotNull(foo.getName()); - assertThat(foo.getId(), is(1L)); - } - - // POST - - @Test - public void givenFooService_whenPostForObject_thenCreatedObjectIsReturned() { - final HttpEntity request = new HttpEntity<>(new Foo("bar")); - final Foo foo = restTemplate.postForObject(fooResourceUrl, request, Foo.class); - assertThat(foo, notNullValue()); - assertThat(foo.getName(), is("bar")); - } - - @Test - public void givenFooService_whenPostFor2Objects_thenNewObjectIsCreatedEachTime() { - final HttpEntity request = new HttpEntity<>(new Foo("bar")); - final Foo firstInstance = restTemplate.postForObject(fooResourceUrl, request, Foo.class); - final Foo secondInstance = restTemplate.postForObject(fooResourceUrl, request, Foo.class); - assertThat(firstInstance, notNullValue()); - assertThat(secondInstance, notNullValue()); - assertThat(firstInstance.getId(), not(secondInstance.getId())); - } - - // HEAD, OPTIONS - - @Test - public void givenFooService_whenCallHeadForHeaders_thenReceiveAllHeadersForThatResource() { - final HttpHeaders httpHeaders = restTemplate.headForHeaders(fooResourceUrl); - assertTrue(httpHeaders.getContentType().includes(MediaType.APPLICATION_JSON)); - assertTrue(httpHeaders.get("bar").contains("baz")); - } - - @Test - public void givenFooService_whenCallOptionsForAllow_thenReceiveValueOfAllowHeader() { - final Set optionsForAllow = restTemplate.optionsForAllow(fooResourceUrl); - final HttpMethod[] supportedMethods = { HttpMethod.GET, HttpMethod.POST, HttpMethod.PUT, HttpMethod.DELETE }; - assertTrue(optionsForAllow.containsAll(Arrays.asList(supportedMethods))); - } - - // POST - - @Test - public void givenFooService_whenPostResource_thenResourceIsCreated() { - final RestTemplate template = new RestTemplate(); - - final HttpHeaders headers = prepareBasicAuthHeaders(); - final HttpEntity request = new HttpEntity<>(new Foo("bar"), headers); - - final ResponseEntity response = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class); - assertThat(response.getStatusCode(), is(HttpStatus.CREATED)); - final Foo foo = response.getBody(); - assertThat(foo, notNullValue()); - assertThat(foo.getName(), is("bar")); - } - - // PUT - - @Test - public void givenFooService_whenPutExistingEntity_thenItIsUpdated() { - final RestTemplate template = new RestTemplate(); - final HttpHeaders headers = prepareBasicAuthHeaders(); - final HttpEntity request = new HttpEntity<>(new Foo("bar"), headers); - - // Create Resource - final ResponseEntity createResponse = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class); - - // Update Resource - final Foo updatedInstance = new Foo("newName"); - updatedInstance.setId(createResponse.getBody().getId()); - final String resourceUrl = fooResourceUrl + '/' + createResponse.getBody().getId(); - final HttpEntity requestUpdate = new HttpEntity<>(updatedInstance, headers); - template.exchange(resourceUrl, HttpMethod.PUT, requestUpdate, Void.class); - - // Check that Resource was updated - final ResponseEntity updateResponse = template.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class); - final Foo foo = updateResponse.getBody(); - assertThat(foo.getName(), is(updatedInstance.getName())); - } - - @Test - public void givenFooService_whenPutExistingEntityWithCallback_thenItIsUpdated() { - final RestTemplate template = new RestTemplate(); - final HttpHeaders headers = prepareBasicAuthHeaders(); - final HttpEntity request = new HttpEntity<>(new Foo("bar"), headers); - - // Create entity - ResponseEntity response = template.exchange(fooResourceUrl, HttpMethod.POST, request, Foo.class); - assertThat(response.getStatusCode(), is(HttpStatus.CREATED)); - - // Update entity - final Foo updatedInstance = new Foo("newName"); - updatedInstance.setId(response.getBody().getId()); - final String resourceUrl = fooResourceUrl + '/' + response.getBody().getId(); - template.execute(resourceUrl, HttpMethod.PUT, requestCallback(updatedInstance), clientHttpResponse -> null); - - // Check that entity was updated - response = template.exchange(resourceUrl, HttpMethod.GET, new HttpEntity<>(headers), Foo.class); - final Foo foo = response.getBody(); - assertThat(foo.getName(), is(updatedInstance.getName())); - } - - // DELETE - - @Test - public void givenFooService_whenCallDelete_thenEntityIsRemoved() { - final Foo foo = new Foo("remove me"); - final ResponseEntity response = restTemplate.postForEntity(fooResourceUrl, foo, Foo.class); - assertThat(response.getStatusCode(), is(HttpStatus.CREATED)); - - final String entityUrl = fooResourceUrl + "/" + response.getBody().getId(); - restTemplate.delete(entityUrl); - try { - restTemplate.getForEntity(entityUrl, Foo.class); - fail(); - } catch (final HttpClientErrorException ex) { - assertThat(ex.getStatusCode(), is(HttpStatus.NOT_FOUND)); - } - } - - // - - private void ensureOneEntityExists() { - final Foo instance = new Foo("bar"); - instance.setId(1L); - - try { - restTemplate.getForEntity(fooResourceUrl + "/1", Foo.class); - } catch (final HttpClientErrorException ex) { - if (ex.getStatusCode() == HttpStatus.NOT_FOUND) { - restTemplate.postForEntity(fooResourceUrl, instance, Foo.class); - } - } - } - - private ClientHttpRequestFactory getClientHttpRequestFactory() { - final int timeout = 5; - final RequestConfig config = RequestConfig.custom().setConnectTimeout(timeout * 1000).setConnectionRequestTimeout(timeout * 1000).setSocketTimeout(timeout * 1000).build(); - - final BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - credentialsProvider.setCredentials(new AuthScope("localhost", APPLICATION_PORT, AuthScope.ANY_REALM), new UsernamePasswordCredentials("user1", "user1Pass")); - - final CloseableHttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(config).setDefaultCredentialsProvider(credentialsProvider).build(); - - return new HttpComponentsClientHttpRequestFactory(client); - } - - private HttpHeaders prepareBasicAuthHeaders() { - final HttpHeaders headers = new HttpHeaders(); - final String encodedLogPass = getBase64EncodedLogPass(); - headers.add(HttpHeaders.AUTHORIZATION, "Basic " + encodedLogPass); - return headers; - } - - private String getBase64EncodedLogPass() { - final String logPass = "user1:user1Pass"; - final byte[] authHeaderBytes = encodeBase64(logPass.getBytes(Charsets.US_ASCII)); - return new String(authHeaderBytes, Charsets.US_ASCII); - } - - private RequestCallback requestCallback(final Foo updatedInstance) { - return clientHttpRequest -> { - final ObjectMapper mapper = new ObjectMapper(); - mapper.writeValue(clientHttpRequest.getBody(), updatedInstance); - clientHttpRequest.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); - clientHttpRequest.getHeaders().add(HttpHeaders.AUTHORIZATION, "Basic " + getBase64EncodedLogPass()); - }; - } - - // Simply setting restTemplate timeout using ClientHttpRequestFactory - - ClientHttpRequestFactory getSimpleClientHttpRequestFactory() { - final int timeout = 5; - final HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(); - clientHttpRequestFactory.setConnectTimeout(timeout * 1000); - return clientHttpRequestFactory; - } -} diff --git a/spring-security-rest-full/src/test/java/org/baeldung/web/LiveTestSuite.java b/spring-security-rest-full/src/test/java/org/baeldung/web/LiveTestSuite.java index 4c26350151..c3353fac3c 100644 --- a/spring-security-rest-full/src/test/java/org/baeldung/web/LiveTestSuite.java +++ b/spring-security-rest-full/src/test/java/org/baeldung/web/LiveTestSuite.java @@ -1,6 +1,5 @@ package org.baeldung.web; -import org.baeldung.client.RestTemplateLiveTest; import org.baeldung.persistence.query.JPASpecificationLiveTest; import org.junit.runner.RunWith; import org.junit.runners.Suite; @@ -12,7 +11,6 @@ import org.junit.runners.Suite; ,FooDiscoverabilityLiveTest.class ,FooLiveTest.class ,MyUserLiveTest.class - ,RestTemplateLiveTest.class }) // public class LiveTestSuite { From 3a00e57002f5264d7c620f24b1a1bed5d5ca97c5 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sun, 4 Dec 2016 09:02:10 +0100 Subject: [PATCH 207/399] Fix AsyncEchoTest --- .../java/nio2/async/AsyncEchoClient.java | 16 ++++++++++------ .../java/nio2/async/AsyncEchoServer2.java | 18 ++++++++++-------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java index eaaf3dea06..576d1f7a3f 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java @@ -40,18 +40,22 @@ public class AsyncEchoClient { } } - public String sendMessage(String message) throws Exception { + public String sendMessage(String message) { byte[] byteMsg = message.getBytes(); ByteBuffer buffer = ByteBuffer.wrap(byteMsg); Future writeResult = client.write(buffer); - //run some code - writeResult.get(); + try { + writeResult.get(); + } catch (Exception e) { + e.printStackTrace(); + } buffer.flip(); Future readResult = client.read(buffer); - - //run some code - readResult.get(); + try { + readResult.get(); + } catch (Exception e) { + e.printStackTrace(); String echo = new String(buffer.array()).trim(); buffer.clear(); return echo; diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java index a7432da464..03ce233ce9 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java @@ -58,18 +58,19 @@ public class AsyncEchoServer2 { @Override public void completed(Integer result, Map attachment) { - String action = (String) attachment.get("action"); + Map actionInfo = attachment; + String action = (String) actionInfo.get("action"); if ("read".equals(action)) { - ByteBuffer buffer = (ByteBuffer) attachment.get("buffer"); + ByteBuffer buffer = (ByteBuffer) actionInfo.get("buffer"); buffer.flip(); - attachment.put("action", "write"); - clientChannel.write(buffer, attachment, this); + actionInfo.put("action", "write"); + clientChannel.write(buffer, actionInfo, this); buffer.clear(); } else if ("write".equals(action)) { ByteBuffer buffer = ByteBuffer.allocate(32); - attachment.put("action", "read"); - attachment.put("buffer", buffer); - clientChannel.read(buffer, attachment, this); + actionInfo.put("action", "read"); + actionInfo.put("buffer", buffer); + clientChannel.read(buffer, actionInfo, this); } } @@ -81,6 +82,7 @@ public class AsyncEchoServer2 { } + public static void main(String[] args) { new AsyncEchoServer2(); } @@ -95,4 +97,4 @@ public class AsyncEchoServer2 { return builder.start(); } -} \ No newline at end of file +} From 5925abc2437bee14aa3fdf5ad9b33a6e022c9064 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sun, 4 Dec 2016 09:59:30 +0100 Subject: [PATCH 208/399] BAEL-376 - simplifying --- .../src/main/java/com/baeldung/generics/Generics.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java/src/main/java/com/baeldung/generics/Generics.java index e8b7dd1182..bea20eab1d 100644 --- a/core-java/src/main/java/com/baeldung/generics/Generics.java +++ b/core-java/src/main/java/com/baeldung/generics/Generics.java @@ -3,27 +3,24 @@ package com.baeldung.generics; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class Generics { // definition of a generic method public static List fromArrayToList(T[] a) { - List list = new ArrayList<>(); - Arrays.stream(a).forEach(list::add); - return list; + return Arrays.stream(a).collect(Collectors.toList()); } // example of a generic method that has Number as an upper bound for T public static List fromArrayToListWithUpperBound(T[] a) { - List list = new ArrayList<>(); - Arrays.stream(a).forEach(list::add); - return list; + return Arrays.stream(a).collect(Collectors.toList()); } // example of a generic method with a wild card, this method can be used // with a list of any subtype of Building public static boolean paintAllBuildings(List buildings) { - buildings.stream().forEach(Building::paint); + buildings.forEach(Building::paint); return true; } From ec56e7f86ceab3db230ab4472526e006ece5d942 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sun, 4 Dec 2016 10:04:53 +0100 Subject: [PATCH 209/399] Fix AsyncEchoTest --- .../java/com/baeldung/java/nio2/async/AsyncEchoClient.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java index 576d1f7a3f..227750047a 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java @@ -56,6 +56,7 @@ public class AsyncEchoClient { readResult.get(); } catch (Exception e) { e.printStackTrace(); + } String echo = new String(buffer.array()).trim(); buffer.clear(); return echo; @@ -73,7 +74,7 @@ public class AsyncEchoClient { AsyncEchoClient client = AsyncEchoClient.getInstance(); client.start(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - String line = null; + String line; System.out.println("Message to server:"); while ((line = br.readLine()) != null) { String response = client.sendMessage(line); From 19e7ab40e46cdc296079c4c11f5b5cbdf816c0b1 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sun, 4 Dec 2016 10:40:38 +0100 Subject: [PATCH 210/399] Fix HtmlUnitAndJUnitTest --- .../java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java index 8395a49581..46a95ae694 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java @@ -1,13 +1,16 @@ package com.baeldung.htmlunit; -import org.junit.Assert; -import org.junit.Test; - import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; public class HtmlUnitAndJUnitTest { + private WebClient webClient; + @Before public void init() throws Exception { webClient = new WebClient(); From 9d3b8dfb72a80e520e33f0acc27ca18c30707e82 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sun, 4 Dec 2016 12:13:12 +0100 Subject: [PATCH 211/399] BAEL-376 - changing method signatures --- .../java/com/baeldung/generics/Building.java | 2 +- .../java/com/baeldung/generics/Generics.java | 37 +++++++++++-------- .../java/com/baeldung/generics/House.java | 2 +- .../com/baeldung/generics/GenericsTest.java | 30 +++++++++++---- 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/generics/Building.java b/core-java/src/main/java/com/baeldung/generics/Building.java index 2af6ee0711..d162c07774 100644 --- a/core-java/src/main/java/com/baeldung/generics/Building.java +++ b/core-java/src/main/java/com/baeldung/generics/Building.java @@ -7,6 +7,6 @@ public class Building { private static final Logger LOGGER = LoggerFactory.getLogger(Building.class); public void paint() { - LOGGER.info("Building"); + LOGGER.info("Painting Building"); } } diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java/src/main/java/com/baeldung/generics/Generics.java index bea20eab1d..2b83778f64 100644 --- a/core-java/src/main/java/com/baeldung/generics/Generics.java +++ b/core-java/src/main/java/com/baeldung/generics/Generics.java @@ -1,27 +1,34 @@ package com.baeldung.generics; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.function.Function; import java.util.stream.Collectors; public class Generics { - // definition of a generic method - public static List fromArrayToList(T[] a) { - return Arrays.stream(a).collect(Collectors.toList()); - } + // definition of a generic method + public static List fromArrayToList(T[] a) { + return Arrays.stream(a).collect(Collectors.toList()); + } - // example of a generic method that has Number as an upper bound for T - public static List fromArrayToListWithUpperBound(T[] a) { - return Arrays.stream(a).collect(Collectors.toList()); - } + // definition of a generic method + public static List fromArrayToList(T[] a, List list, Function mapperFunction) { + List listWithTypeT = Arrays.stream(a).collect(Collectors.toList()); + return listWithTypeT.stream().map(mapperFunction) + .collect(Collectors.toList()); + } - // example of a generic method with a wild card, this method can be used - // with a list of any subtype of Building - public static boolean paintAllBuildings(List buildings) { - buildings.forEach(Building::paint); - return true; - } + + // example of a generic method that has Number as an upper bound for T + public static List fromArrayToListWithUpperBound(T[] a) { + return Arrays.stream(a).collect(Collectors.toList()); + } + + // example of a generic method with a wild card, this method can be used + // with a list of any subtype of Building + public static void paintAllBuildings(List buildings) { + buildings.forEach(Building::paint); + } } \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/generics/House.java b/core-java/src/main/java/com/baeldung/generics/House.java index e10922120f..88e7d2710a 100644 --- a/core-java/src/main/java/com/baeldung/generics/House.java +++ b/core-java/src/main/java/com/baeldung/generics/House.java @@ -7,6 +7,6 @@ public class House extends Building { private static final Logger LOGGER = LoggerFactory.getLogger(House.class); public void paint() { - LOGGER.info("House"); + LOGGER.info("Painting House"); } } diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java index 0488ae3d22..139633d924 100644 --- a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java +++ b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java @@ -7,7 +7,7 @@ import java.util.List; import static org.hamcrest.CoreMatchers.hasItems; import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; public class GenericsTest { @@ -20,6 +20,15 @@ public class GenericsTest { assertThat(list, hasItems(intArray)); } + // testing the generic method with Integer and String type + @Test + public void givenArrayOfIntegers_thanListOfStringReturnedOK() { + Integer[] intArray = {1, 2, 3, 4, 5}; + List stringList = new ArrayList<>(); + stringList = Generics.fromArrayToList(intArray, stringList, Object::toString); + assertThat(stringList, hasItems("1", "2", "3", "4", "5")); + } + // testing the generic method with String @Test public void givenArrayOfStrings_thanListOfStringsReturnedOK() { @@ -43,14 +52,19 @@ public class GenericsTest { // testing paintAllBuildings method with a subtype of Building, the method // will work with all subtypes of Building @Test - public void givenSubTypeOfWildCardBoundedGenericMethod_thanOK() { + public void givenSubTypeOfWildCardBoundedGenericType_thanPaintingOK() { + try { + List subBuildingsList = new ArrayList<>(); + subBuildingsList.add(new Building()); + subBuildingsList.add(new House()); - List subBuildingsList = new ArrayList<>(); - subBuildingsList.add(new Building()); - subBuildingsList.add(new House()); - - boolean result = Generics.paintAllBuildings(subBuildingsList); - assertTrue(result); + // prints + // Painting Building + // Painting House + Generics.paintAllBuildings(subBuildingsList); + } catch (Exception e) { + fail(); + } } } \ No newline at end of file From 11b1cd3edd5e0a399b5e5c8fb7ebc3a53e69ba0f Mon Sep 17 00:00:00 2001 From: Egima profile Date: Sun, 4 Dec 2016 14:30:28 +0300 Subject: [PATCH 212/399] fixed optional (#877) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps * fixed network interface tests * removed filetest change * made changes to NIO2 FileTest names * added project for asyncronous channel apis * added project for NIO2 advanced filesystems APIS * merge conflicts * merged changes to asyncfiletest with future get API * removed while loops from async client and server * added project for java8 optional * fixed merge conflicts in spring-core * fixed optional --- .../java/nio2/async/AsyncEchoClient.java | 2 +- .../java/nio2/async/AsyncEchoServer2.java | 2 +- .../java/nio2/async/AsyncEchoTest.java | 89 ++++++++++++++----- .../baeldung/java8/optional/OptionalTest.java | 17 ++-- 4 files changed, 75 insertions(+), 35 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java index 227750047a..da586706a2 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java @@ -83,4 +83,4 @@ public class AsyncEchoClient { } } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java index 03ce233ce9..8a7174ae18 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java @@ -97,4 +97,4 @@ public class AsyncEchoServer2 { return builder.start(); } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java index 93cb3e1eb6..579301c5f9 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java @@ -1,36 +1,77 @@ package com.baeldung.java.nio2.async; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - +import java.io.File; import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.AsynchronousServerSocketChannel; +import java.nio.channels.AsynchronousSocketChannel; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; -import static org.junit.Assert.assertEquals; +public class AsyncEchoServer { + private AsynchronousServerSocketChannel serverChannel; + private Future acceptResult; + private AsynchronousSocketChannel clientChannel; -public class AsyncEchoTest { - - Process server; - AsyncEchoClient client; - - @Before - public void setup() throws IOException, InterruptedException { - server = AsyncEchoServer2.start(); - client = AsyncEchoClient.getInstance(); + public AsyncEchoServer() { + try { + serverChannel = AsynchronousServerSocketChannel.open(); + InetSocketAddress hostAddress = new InetSocketAddress("localhost", 4999); + serverChannel.bind(hostAddress); + acceptResult = serverChannel.accept(); + } catch (IOException e) { + e.printStackTrace(); + } } - @Test - public void givenServerClient_whenServerEchosMessage_thenCorrect() throws Exception { - String resp1 = client.sendMessage("hello"); - String resp2 = client.sendMessage("world"); - assertEquals("hello", resp1); - assertEquals("world", resp2); + public void runServer() { + try { + clientChannel = acceptResult.get(); + if ((clientChannel != null) && (clientChannel.isOpen())) { + while (true) { + + ByteBuffer buffer = ByteBuffer.allocate(32); + Future readResult = clientChannel.read(buffer); + + //do other things as operation continues in background + readResult.get(); + + buffer.flip(); + String message = new String(buffer.array()).trim(); + if (message.equals("bye")) { + break; // while loop + } + buffer = ByteBuffer.wrap(new String(message).getBytes()); + Future writeResult = clientChannel.write(buffer); + //run other code + writeResult.get(); + buffer.clear(); + + } // while() + + clientChannel.close(); + serverChannel.close(); + + } + } catch (InterruptedException | ExecutionException | IOException e) { + e.printStackTrace(); + } + } - @After - public void teardown() throws IOException { - server.destroy(); - client.stop(); + public static void main(String[] args) { + AsyncEchoServer server = new AsyncEchoServer(); + server.runServer(); } + public static Process start() throws IOException, InterruptedException { + String javaHome = System.getProperty("java.home"); + String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; + String classpath = System.getProperty("java.class.path"); + String className = AsyncEchoServer.class.getCanonicalName(); + ProcessBuilder builder = new ProcessBuilder(javaBin, "-cp", classpath, className); + + return builder.start(); + } } diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index cd092fdd70..e292021731 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -8,7 +8,6 @@ import java.util.Arrays; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; -import com.baeldung.java_8_features.Person; import org.junit.Test; @@ -102,7 +101,7 @@ public class OptionalTest { List companyNames = Arrays.asList("paypal", "oracle", "", "microsoft", "", "apple"); Optional> listOptional = Optional.of(companyNames); - int size = listOptional.map(list -> list.size()).get(); + int size = listOptional.map(List::size).orElse(0); assertEquals(6, size); } @@ -111,7 +110,7 @@ public class OptionalTest { String name = "baeldung"; Optional nameOptional = Optional.of(name); - int len = nameOptional.map(s -> s.length()).get(); + int len = nameOptional.map(String::length).orElse(0); assertEquals(8, len); } @@ -122,7 +121,7 @@ public class OptionalTest { boolean correctPassword = passOpt.filter(pass -> pass.equals("password")).isPresent(); assertFalse(correctPassword); - correctPassword = passOpt.map(pass -> pass.trim()).filter(pass -> pass.equals("password")).isPresent(); + correctPassword = passOpt.map(String::trim).filter(pass -> pass.equals("password")).isPresent(); assertTrue(correctPassword); } @@ -132,12 +131,12 @@ public class OptionalTest { Person person = new Person("john", 26); Optional personOptional = Optional.of(person); - Optional> nameOptionalWrapper = personOptional.map(p -> p.getName()); - Optional nameOptional = nameOptionalWrapper.get(); - String name1 = nameOptional.get(); + Optional> nameOptionalWrapper = personOptional.map(Person::getName); + Optional nameOptional = nameOptionalWrapper.orElseThrow(IllegalArgumentException::new); + String name1 = nameOptional.orElseThrow(IllegalArgumentException::new); assertEquals("john", name1); - String name = personOptional.flatMap(p -> p.getName()).get(); + String name = personOptional.flatMap(Person::getName).orElseThrow(IllegalArgumentException::new); assertEquals("john", name); } @@ -147,7 +146,7 @@ public class OptionalTest { person.setPassword("password"); Optional personOptional = Optional.of(person); - String password = personOptional.flatMap(p -> p.getPassword()).filter(cleanPass -> cleanPass.equals("password")).get(); + String password = personOptional.flatMap(Person::getPassword).filter(cleanPass -> cleanPass.equals("password")).orElseThrow(IllegalArgumentException::new); assertEquals("password", password); } From efd1da83e3bd5810948f26ce04b50958e33bfa57 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sun, 4 Dec 2016 12:41:12 +0100 Subject: [PATCH 213/399] Reformat Optional --- .../java/nio2/async/AsyncEchoTest.java | 89 +++++-------------- .../baeldung/java8/optional/OptionalTest.java | 66 +++++++++----- 2 files changed, 67 insertions(+), 88 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java index 579301c5f9..93cb3e1eb6 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java @@ -1,77 +1,36 @@ package com.baeldung.java.nio2.async; -import java.io.File; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + import java.io.IOException; -import java.net.InetSocketAddress; -import java.nio.ByteBuffer; -import java.nio.channels.AsynchronousServerSocketChannel; -import java.nio.channels.AsynchronousSocketChannel; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; -public class AsyncEchoServer { - private AsynchronousServerSocketChannel serverChannel; - private Future acceptResult; - private AsynchronousSocketChannel clientChannel; +import static org.junit.Assert.assertEquals; - public AsyncEchoServer() { - try { - serverChannel = AsynchronousServerSocketChannel.open(); - InetSocketAddress hostAddress = new InetSocketAddress("localhost", 4999); - serverChannel.bind(hostAddress); - acceptResult = serverChannel.accept(); - } catch (IOException e) { - e.printStackTrace(); - } +public class AsyncEchoTest { + + Process server; + AsyncEchoClient client; + + @Before + public void setup() throws IOException, InterruptedException { + server = AsyncEchoServer2.start(); + client = AsyncEchoClient.getInstance(); } - public void runServer() { - try { - clientChannel = acceptResult.get(); - if ((clientChannel != null) && (clientChannel.isOpen())) { - while (true) { - - ByteBuffer buffer = ByteBuffer.allocate(32); - Future readResult = clientChannel.read(buffer); - - //do other things as operation continues in background - readResult.get(); - - buffer.flip(); - String message = new String(buffer.array()).trim(); - if (message.equals("bye")) { - break; // while loop - } - buffer = ByteBuffer.wrap(new String(message).getBytes()); - Future writeResult = clientChannel.write(buffer); - //run other code - writeResult.get(); - buffer.clear(); - - } // while() - - clientChannel.close(); - serverChannel.close(); - - } - } catch (InterruptedException | ExecutionException | IOException e) { - e.printStackTrace(); - } - + @Test + public void givenServerClient_whenServerEchosMessage_thenCorrect() throws Exception { + String resp1 = client.sendMessage("hello"); + String resp2 = client.sendMessage("world"); + assertEquals("hello", resp1); + assertEquals("world", resp2); } - public static void main(String[] args) { - AsyncEchoServer server = new AsyncEchoServer(); - server.runServer(); + @After + public void teardown() throws IOException { + server.destroy(); + client.stop(); } - public static Process start() throws IOException, InterruptedException { - String javaHome = System.getProperty("java.home"); - String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; - String classpath = System.getProperty("java.class.path"); - String className = AsyncEchoServer.class.getCanonicalName(); - ProcessBuilder builder = new ProcessBuilder(javaBin, "-cp", classpath, className); - - return builder.start(); - } } diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index e292021731..5a1b3c9889 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -1,15 +1,14 @@ package com.baeldung.java8.optional; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import com.baeldung.java_8_features.Person; +import org.junit.Test; import java.util.Arrays; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; -import org.junit.Test; +import static org.junit.Assert.*; public class OptionalTest { // creating Optional @@ -89,9 +88,11 @@ public class OptionalTest { public void whenOptionalFilterWorks_thenCorrect() { Integer year = 2016; Optional yearOptional = Optional.of(year); - boolean is2016 = yearOptional.filter(y -> y == 2016).isPresent(); + boolean is2016 = yearOptional.filter(y -> y == 2016) + .isPresent(); assertTrue(is2016); - boolean is2017 = yearOptional.filter(y -> y == 2017).isPresent(); + boolean is2017 = yearOptional.filter(y -> y == 2017) + .isPresent(); assertFalse(is2017); } @@ -101,7 +102,8 @@ public class OptionalTest { List companyNames = Arrays.asList("paypal", "oracle", "", "microsoft", "", "apple"); Optional> listOptional = Optional.of(companyNames); - int size = listOptional.map(List::size).orElse(0); + int size = listOptional.map(List::size) + .orElse(0); assertEquals(6, size); } @@ -110,7 +112,8 @@ public class OptionalTest { String name = "baeldung"; Optional nameOptional = Optional.of(name); - int len = nameOptional.map(String::length).orElse(0); + int len = nameOptional.map(String::length) + .orElse(0); assertEquals(8, len); } @@ -118,10 +121,13 @@ public class OptionalTest { public void givenOptional_whenMapWorksWithFilter_thenCorrect() { String password = " password "; Optional passOpt = Optional.of(password); - boolean correctPassword = passOpt.filter(pass -> pass.equals("password")).isPresent(); + boolean correctPassword = passOpt.filter(pass -> pass.equals("password")) + .isPresent(); assertFalse(correctPassword); - correctPassword = passOpt.map(String::trim).filter(pass -> pass.equals("password")).isPresent(); + correctPassword = passOpt.map(String::trim) + .filter(pass -> pass.equals("password")) + .isPresent(); assertTrue(correctPassword); } @@ -131,12 +137,17 @@ public class OptionalTest { Person person = new Person("john", 26); Optional personOptional = Optional.of(person); - Optional> nameOptionalWrapper = personOptional.map(Person::getName); - Optional nameOptional = nameOptionalWrapper.orElseThrow(IllegalArgumentException::new); - String name1 = nameOptional.orElseThrow(IllegalArgumentException::new); + Optional> nameOptionalWrapper = personOptional + .map(Person::getName); + Optional nameOptional = nameOptionalWrapper + .orElseThrow(IllegalArgumentException::new); + String name1 = nameOptional + .orElseThrow(IllegalArgumentException::new); assertEquals("john", name1); - String name = personOptional.flatMap(Person::getName).orElseThrow(IllegalArgumentException::new); + String name = personOptional + .flatMap(Person::getName) + .orElseThrow(IllegalArgumentException::new); assertEquals("john", name); } @@ -146,7 +157,10 @@ public class OptionalTest { person.setPassword("password"); Optional personOptional = Optional.of(person); - String password = personOptional.flatMap(Person::getPassword).filter(cleanPass -> cleanPass.equals("password")).orElseThrow(IllegalArgumentException::new); + String password = personOptional + .flatMap(Person::getPassword) + .filter(cleanPass -> cleanPass.equals("password")) + .orElseThrow(IllegalArgumentException::new); assertEquals("password", password); } @@ -154,7 +168,8 @@ public class OptionalTest { @Test public void whenOrElseWorks_thenCorrect() { String nullName = null; - String name = Optional.ofNullable(nullName).orElse("john"); + String name = Optional.ofNullable(nullName) + .orElse("john"); assertEquals("john", name); } @@ -162,12 +177,14 @@ public class OptionalTest { @Test public void whenOrElseGetWorks_thenCorrect() { String nullName = null; - String name = Optional.ofNullable(nullName).orElseGet(() -> "john"); + String name = Optional.ofNullable(nullName) + .orElseGet(() -> "john"); assertEquals("john", name); - name = Optional.ofNullable(nullName).orElseGet(() -> { - return "doe"; - }); + name = Optional.ofNullable(nullName) + .orElseGet(() -> { + return "doe"; + }); assertEquals("doe", name); } @@ -176,7 +193,8 @@ public class OptionalTest { public void whenOrElseGetAndOrElseOverlap_thenCorrect() { String text = null; System.out.println("Using orElseGet:"); - String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); + String defaultText = Optional.ofNullable(text) + .orElseGet(this::getMyDefault); assertEquals("Default Value", defaultText); System.out.println("Using orElse:"); @@ -188,7 +206,8 @@ public class OptionalTest { public void whenOrElseGetAndOrElseDiffer_thenCorrect() { String text = "Text present"; System.out.println("Using orElseGet:"); - String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); + String defaultText = Optional.ofNullable(text) + .orElseGet(this::getMyDefault); assertEquals("Text present", defaultText); System.out.println("Using orElse:"); @@ -200,7 +219,8 @@ public class OptionalTest { @Test(expected = IllegalArgumentException.class) public void whenOrElseThrowWorks_thenCorrect() { String nullName = null; - String name = Optional.ofNullable(nullName).orElseThrow(IllegalArgumentException::new); + String name = Optional.ofNullable(nullName) + .orElseThrow(IllegalArgumentException::new); } public String getMyDefault() { From 7b6e09fb6aa977a46f3d4b8bf33de4bf75c7ab1f Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sun, 4 Dec 2016 12:43:30 +0100 Subject: [PATCH 214/399] Reformat Optional --- .../baeldung/java8/optional/OptionalTest.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index 5a1b3c9889..f9de432d90 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -88,10 +88,12 @@ public class OptionalTest { public void whenOptionalFilterWorks_thenCorrect() { Integer year = 2016; Optional yearOptional = Optional.of(year); - boolean is2016 = yearOptional.filter(y -> y == 2016) + boolean is2016 = yearOptional + .filter(y -> y == 2016) .isPresent(); assertTrue(is2016); - boolean is2017 = yearOptional.filter(y -> y == 2017) + boolean is2017 = yearOptional + .filter(y -> y == 2017) .isPresent(); assertFalse(is2017); } @@ -112,7 +114,8 @@ public class OptionalTest { String name = "baeldung"; Optional nameOptional = Optional.of(name); - int len = nameOptional.map(String::length) + int len = nameOptional + .map(String::length) .orElse(0); assertEquals(8, len); } @@ -121,7 +124,8 @@ public class OptionalTest { public void givenOptional_whenMapWorksWithFilter_thenCorrect() { String password = " password "; Optional passOpt = Optional.of(password); - boolean correctPassword = passOpt.filter(pass -> pass.equals("password")) + boolean correctPassword = passOpt + .filter(pass -> pass.equals("password")) .isPresent(); assertFalse(correctPassword); @@ -198,7 +202,8 @@ public class OptionalTest { assertEquals("Default Value", defaultText); System.out.println("Using orElse:"); - defaultText = Optional.ofNullable(text).orElse(getMyDefault()); + defaultText = Optional.ofNullable(text) + .orElse(getMyDefault()); assertEquals("Default Value", defaultText); } @@ -211,7 +216,8 @@ public class OptionalTest { assertEquals("Text present", defaultText); System.out.println("Using orElse:"); - defaultText = Optional.ofNullable(text).orElse(getMyDefault()); + defaultText = Optional.ofNullable(text) + .orElse(getMyDefault()); assertEquals("Text present", defaultText); } From 40a07719b3756de258223b0b9e50795e4decdf41 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 4 Dec 2016 13:53:42 +0200 Subject: [PATCH 215/399] upgrade dependencies --- spring-security-rest-digest-auth/pom.xml | 36 ++++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/spring-security-rest-digest-auth/pom.xml b/spring-security-rest-digest-auth/pom.xml index 1880e12a74..dc8e12b72b 100644 --- a/spring-security-rest-digest-auth/pom.xml +++ b/spring-security-rest-digest-auth/pom.xml @@ -84,10 +84,10 @@ - org.springframework - spring-web - ${org.springframework.version} - + org.springframework + spring-web + ${org.springframework.version} + @@ -335,32 +335,32 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE - 4.3.11.Final - 5.1.38 + 5.2.5.Final + 5.1.40 - 4.4.4 - 4.5.1 + 4.4.5 + 4.5.2 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 2.7.8 + 2.8.5 - 5.2.2.Final - 3.0.1 + 5.3.3.Final + 3.1.0 1.2 19.0 - 3.4 + 3.5 1.3 @@ -370,10 +370,10 @@ 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 - 1.4.18 + 1.6.1 From 3d9f6ba06adaa5d07e971ef6ba868fc01c389a4e Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 4 Dec 2016 13:59:18 +0200 Subject: [PATCH 216/399] upgrade dependencies --- spring-security-rest-custom/pom.xml | 33 +++++------------------------ 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/spring-security-rest-custom/pom.xml b/spring-security-rest-custom/pom.xml index 296703c27e..4c2fdb4709 100644 --- a/spring-security-rest-custom/pom.xml +++ b/spring-security-rest-custom/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.8.RELEASE + 1.4.2.RELEASE @@ -253,40 +253,17 @@ - - 4.2.5.RELEASE - 4.0.4.RELEASE - - - 4.3.11.Final - 5.1.38 - - - 1.7.13 - 1.1.3 - - - 5.2.2.Final - 19.0 - 3.4 + 3.5 - - 1.3 - 4.12 - 1.10.19 - - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 2.9.0 - 3.5.1 - 2.6 - 2.19.1 - 1.4.18 + 1.6.1 From 8e4cb4b3db58e586f760f8e23e74f8e89771e702 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 4 Dec 2016 14:04:13 +0200 Subject: [PATCH 217/399] upgrade dependencies --- spring-security-rest-basic-auth/pom.xml | 28 ++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/spring-security-rest-basic-auth/pom.xml b/spring-security-rest-basic-auth/pom.xml index d3f4de9914..7987eebb66 100644 --- a/spring-security-rest-basic-auth/pom.xml +++ b/spring-security-rest-basic-auth/pom.xml @@ -342,30 +342,30 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE - 4.3.11.Final - 5.1.38 + 5.2.5.Final + 5.1.40 - 4.4.4 - 4.5.1 + 4.4.5 + 4.5.2 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final + 5.3.3.Final 1.2 - 3.0.1 - 2.2.3 + 3.1.0 + 2.8.5 19.0 - 3.4 + 3.5 1.3 @@ -375,10 +375,10 @@ 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 - 1.4.18 + 1.6.1 From 5061244c9760cd07d58872c36972bc2899ee2fed Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 4 Dec 2016 14:14:41 +0200 Subject: [PATCH 218/399] upgrade dependencies --- spring-security-rest/pom.xml | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/spring-security-rest/pom.xml b/spring-security-rest/pom.xml index df000d0df5..320e84fa7a 100644 --- a/spring-security-rest/pom.xml +++ b/spring-security-rest/pom.xml @@ -224,7 +224,7 @@ commons-fileupload commons-fileupload - 1.3.2 + ${commons-fileupload.version} @@ -352,28 +352,29 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE - 0.19.0.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE + 0.21.0.RELEASE - 4.3.11.Final - 5.1.38 + 5.2.5.Final + 5.1.40 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final - 3.0.1 + 5.3.3.Final + 3.1.0 1.1.0.Final 1.2 - 2.7.8 + 2.8.5 19.0 - 3.4 + 3.5 + 1.3.2 1.3 @@ -382,18 +383,18 @@ 2.9.0 - 2.4.0 + 2.6.1 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 - 1.4.18 + 1.6.1 From 037acd1ae6d561fa5f1e8f730a02dab9914ce143 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 4 Dec 2016 14:30:13 +0200 Subject: [PATCH 219/399] upgrade dependencies --- spring-security-mvc-session/pom.xml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/spring-security-mvc-session/pom.xml b/spring-security-mvc-session/pom.xml index e330825bf2..3f129c83ba 100644 --- a/spring-security-mvc-session/pom.xml +++ b/spring-security-mvc-session/pom.xml @@ -230,43 +230,43 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE - 4.3.11.Final - 5.1.38 + 5.2.5.Final + 5.1.40 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final - 3.0.1 + 5.3.3.Final + 3.0.2 1.2 - 3.0.1 + 3.1.0 19.0 - 3.4 + 3.5 1.3 4.12 1.10.19 - 4.5 - 4.4.1 + 4.5.2 + 4.4.5 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 From dcb7221d2902300c227304131cf3bc12c1db3167 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sun, 4 Dec 2016 13:32:18 +0100 Subject: [PATCH 220/399] Refactor Optional examples --- .../java/com/baeldung/java8/optional/OptionalTest.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index f9de432d90..05dc3a9a2c 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -66,7 +66,6 @@ public class OptionalTest { public void givenOptional_whenIfPresentWorks_thenCorrect() { Optional opt = Optional.of("baeldung"); opt.ifPresent(name -> System.out.println(name.length())); - opt.ifPresent(String::length); } // returning Value With get() @@ -185,12 +184,6 @@ public class OptionalTest { .orElseGet(() -> "john"); assertEquals("john", name); - name = Optional.ofNullable(nullName) - .orElseGet(() -> { - return "doe"; - }); - assertEquals("doe", name); - } @Test From 96213270408ea1c50d5018c2cd45da718d11efe6 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 5 Dec 2016 11:50:57 +0200 Subject: [PATCH 221/399] minor formatting work --- .../java/com/baeldung/generics/Building.java | 8 +-- .../java/com/baeldung/generics/Generics.java | 4 +- .../com/baeldung/generics/GenericsTest.java | 8 +-- .../java/nio2/async/AsyncEchoServer.java | 12 ++-- .../java/nio2/async/AsyncEchoServer2.java | 1 - .../baeldung/java8/optional/OptionalTest.java | 71 +++++++------------ .../JoinSplitCollectionsUnitTest.java | 53 +++++--------- 7 files changed, 56 insertions(+), 101 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/generics/Building.java b/core-java/src/main/java/com/baeldung/generics/Building.java index d162c07774..a34dcd3c7e 100644 --- a/core-java/src/main/java/com/baeldung/generics/Building.java +++ b/core-java/src/main/java/com/baeldung/generics/Building.java @@ -4,9 +4,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Building { - private static final Logger LOGGER = LoggerFactory.getLogger(Building.class); + private static final Logger LOGGER = LoggerFactory.getLogger(Building.class); - public void paint() { - LOGGER.info("Painting Building"); - } + public void paint() { + LOGGER.info("Painting Building"); + } } diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java/src/main/java/com/baeldung/generics/Generics.java index 2b83778f64..514ccdae51 100644 --- a/core-java/src/main/java/com/baeldung/generics/Generics.java +++ b/core-java/src/main/java/com/baeldung/generics/Generics.java @@ -15,11 +15,9 @@ public class Generics { // definition of a generic method public static List fromArrayToList(T[] a, List list, Function mapperFunction) { List listWithTypeT = Arrays.stream(a).collect(Collectors.toList()); - return listWithTypeT.stream().map(mapperFunction) - .collect(Collectors.toList()); + return listWithTypeT.stream().map(mapperFunction).collect(Collectors.toList()); } - // example of a generic method that has Number as an upper bound for T public static List fromArrayToListWithUpperBound(T[] a) { return Arrays.stream(a).collect(Collectors.toList()); diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java index 139633d924..36f7d55675 100644 --- a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java +++ b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java @@ -14,7 +14,7 @@ public class GenericsTest { // testing the generic method with Integer @Test public void givenArrayOfIntegers_thanListOfIntegersReturnedOK() { - Integer[] intArray = {1, 2, 3, 4, 5}; + Integer[] intArray = { 1, 2, 3, 4, 5 }; List list = Generics.fromArrayToList(intArray); assertThat(list, hasItems(intArray)); @@ -23,7 +23,7 @@ public class GenericsTest { // testing the generic method with Integer and String type @Test public void givenArrayOfIntegers_thanListOfStringReturnedOK() { - Integer[] intArray = {1, 2, 3, 4, 5}; + Integer[] intArray = { 1, 2, 3, 4, 5 }; List stringList = new ArrayList<>(); stringList = Generics.fromArrayToList(intArray, stringList, Object::toString); assertThat(stringList, hasItems("1", "2", "3", "4", "5")); @@ -32,7 +32,7 @@ public class GenericsTest { // testing the generic method with String @Test public void givenArrayOfStrings_thanListOfStringsReturnedOK() { - String[] stringArray = {"hello1", "hello2", "hello3", "hello4", "hello5"}; + String[] stringArray = { "hello1", "hello2", "hello3", "hello4", "hello5" }; List list = Generics.fromArrayToList(stringArray); assertThat(list, hasItems(stringArray)); @@ -43,7 +43,7 @@ public class GenericsTest { // extend Number it will fail to compile @Test public void givenArrayOfIntegersAndNumberUpperBound_thanListOfIntegersReturnedOK() { - Integer[] intArray = {1, 2, 3, 4, 5}; + Integer[] intArray = { 1, 2, 3, 4, 5 }; List list = Generics.fromArrayToListWithUpperBound(intArray); assertThat(list, hasItems(intArray)); diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java index 5c3d204863..01873b344a 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java @@ -34,9 +34,9 @@ public class AsyncEchoServer { ByteBuffer buffer = ByteBuffer.allocate(32); Future readResult = clientChannel.read(buffer); - //do some computation - - readResult.get(); + // do some computation + + readResult.get(); buffer.flip(); String message = new String(buffer.array()).trim(); @@ -45,9 +45,9 @@ public class AsyncEchoServer { } buffer = ByteBuffer.wrap(new String(message).getBytes()); Future writeResult = clientChannel.write(buffer); - - //do some computation - writeResult.get(); + + // do some computation + writeResult.get(); buffer.clear(); } // while() diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java index 8a7174ae18..663fc4f2ed 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java @@ -82,7 +82,6 @@ public class AsyncEchoServer2 { } - public static void main(String[] args) { new AsyncEchoServer2(); } diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index 05dc3a9a2c..1038043d49 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -1,14 +1,17 @@ package com.baeldung.java8.optional; -import com.baeldung.java_8_features.Person; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; -import static org.junit.Assert.*; +import org.junit.Test; + +import com.baeldung.java_8_features.Person; public class OptionalTest { // creating Optional @@ -87,13 +90,9 @@ public class OptionalTest { public void whenOptionalFilterWorks_thenCorrect() { Integer year = 2016; Optional yearOptional = Optional.of(year); - boolean is2016 = yearOptional - .filter(y -> y == 2016) - .isPresent(); + boolean is2016 = yearOptional.filter(y -> y == 2016).isPresent(); assertTrue(is2016); - boolean is2017 = yearOptional - .filter(y -> y == 2017) - .isPresent(); + boolean is2017 = yearOptional.filter(y -> y == 2017).isPresent(); assertFalse(is2017); } @@ -103,8 +102,7 @@ public class OptionalTest { List companyNames = Arrays.asList("paypal", "oracle", "", "microsoft", "", "apple"); Optional> listOptional = Optional.of(companyNames); - int size = listOptional.map(List::size) - .orElse(0); + int size = listOptional.map(List::size).orElse(0); assertEquals(6, size); } @@ -113,9 +111,7 @@ public class OptionalTest { String name = "baeldung"; Optional nameOptional = Optional.of(name); - int len = nameOptional - .map(String::length) - .orElse(0); + int len = nameOptional.map(String::length).orElse(0); assertEquals(8, len); } @@ -123,14 +119,10 @@ public class OptionalTest { public void givenOptional_whenMapWorksWithFilter_thenCorrect() { String password = " password "; Optional passOpt = Optional.of(password); - boolean correctPassword = passOpt - .filter(pass -> pass.equals("password")) - .isPresent(); + boolean correctPassword = passOpt.filter(pass -> pass.equals("password")).isPresent(); assertFalse(correctPassword); - correctPassword = passOpt.map(String::trim) - .filter(pass -> pass.equals("password")) - .isPresent(); + correctPassword = passOpt.map(String::trim).filter(pass -> pass.equals("password")).isPresent(); assertTrue(correctPassword); } @@ -140,17 +132,12 @@ public class OptionalTest { Person person = new Person("john", 26); Optional personOptional = Optional.of(person); - Optional> nameOptionalWrapper = personOptional - .map(Person::getName); - Optional nameOptional = nameOptionalWrapper - .orElseThrow(IllegalArgumentException::new); - String name1 = nameOptional - .orElseThrow(IllegalArgumentException::new); + Optional> nameOptionalWrapper = personOptional.map(Person::getName); + Optional nameOptional = nameOptionalWrapper.orElseThrow(IllegalArgumentException::new); + String name1 = nameOptional.orElseThrow(IllegalArgumentException::new); assertEquals("john", name1); - String name = personOptional - .flatMap(Person::getName) - .orElseThrow(IllegalArgumentException::new); + String name = personOptional.flatMap(Person::getName).orElseThrow(IllegalArgumentException::new); assertEquals("john", name); } @@ -160,10 +147,7 @@ public class OptionalTest { person.setPassword("password"); Optional personOptional = Optional.of(person); - String password = personOptional - .flatMap(Person::getPassword) - .filter(cleanPass -> cleanPass.equals("password")) - .orElseThrow(IllegalArgumentException::new); + String password = personOptional.flatMap(Person::getPassword).filter(cleanPass -> cleanPass.equals("password")).orElseThrow(IllegalArgumentException::new); assertEquals("password", password); } @@ -171,8 +155,7 @@ public class OptionalTest { @Test public void whenOrElseWorks_thenCorrect() { String nullName = null; - String name = Optional.ofNullable(nullName) - .orElse("john"); + String name = Optional.ofNullable(nullName).orElse("john"); assertEquals("john", name); } @@ -180,8 +163,7 @@ public class OptionalTest { @Test public void whenOrElseGetWorks_thenCorrect() { String nullName = null; - String name = Optional.ofNullable(nullName) - .orElseGet(() -> "john"); + String name = Optional.ofNullable(nullName).orElseGet(() -> "john"); assertEquals("john", name); } @@ -190,13 +172,11 @@ public class OptionalTest { public void whenOrElseGetAndOrElseOverlap_thenCorrect() { String text = null; System.out.println("Using orElseGet:"); - String defaultText = Optional.ofNullable(text) - .orElseGet(this::getMyDefault); + String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); assertEquals("Default Value", defaultText); System.out.println("Using orElse:"); - defaultText = Optional.ofNullable(text) - .orElse(getMyDefault()); + defaultText = Optional.ofNullable(text).orElse(getMyDefault()); assertEquals("Default Value", defaultText); } @@ -204,13 +184,11 @@ public class OptionalTest { public void whenOrElseGetAndOrElseDiffer_thenCorrect() { String text = "Text present"; System.out.println("Using orElseGet:"); - String defaultText = Optional.ofNullable(text) - .orElseGet(this::getMyDefault); + String defaultText = Optional.ofNullable(text).orElseGet(this::getMyDefault); assertEquals("Text present", defaultText); System.out.println("Using orElse:"); - defaultText = Optional.ofNullable(text) - .orElse(getMyDefault()); + defaultText = Optional.ofNullable(text).orElse(getMyDefault()); assertEquals("Text present", defaultText); } @@ -218,8 +196,7 @@ public class OptionalTest { @Test(expected = IllegalArgumentException.class) public void whenOrElseThrowWorks_thenCorrect() { String nullName = null; - String name = Optional.ofNullable(nullName) - .orElseThrow(IllegalArgumentException::new); + String name = Optional.ofNullable(nullName).orElseThrow(IllegalArgumentException::new); } public String getMyDefault() { diff --git a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java index 7efc2ab9de..78f79f646b 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java @@ -13,20 +13,18 @@ public class JoinSplitCollectionsUnitTest { @Test public void whenJoiningTwoArrays_thenJoined() { - String[] animals1 = new String[]{"Dog", "Cat"}; - String[] animals2 = new String[]{"Bird", "Cow"}; - String[] result = Stream.concat(Arrays.stream(animals1), Arrays.stream(animals2)) - .toArray(String[]::new); + String[] animals1 = new String[] { "Dog", "Cat" }; + String[] animals2 = new String[] { "Bird", "Cow" }; + String[] result = Stream.concat(Arrays.stream(animals1), Arrays.stream(animals2)).toArray(String[]::new); - assertArrayEquals(result, new String[]{"Dog", "Cat", "Bird", "Cow"}); + assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); } @Test public void whenJoiningTwoCollections_thenJoined() { Collection collection1 = Arrays.asList(7, 8, 9); Collection collection2 = Arrays.asList(10, 11, 12); - Collection result = Stream.concat(collection1.stream(), collection2.stream()) - .collect(Collectors.toList()); + Collection result = Stream.concat(collection1.stream(), collection2.stream()).collect(Collectors.toList()); assertTrue(result.equals(Arrays.asList(7, 8, 9, 10, 11, 12))); } @@ -35,18 +33,15 @@ public class JoinSplitCollectionsUnitTest { public void whenJoiningTwoCollectionsWithFilter_thenJoined() { Collection collection1 = Arrays.asList(7, 8, 11); Collection collection2 = Arrays.asList(9, 12, 10); - Collection result = Stream.concat(collection1.stream(), collection2.stream()) - .filter(next -> next <= 10) - .collect(Collectors.toList()); + Collection result = Stream.concat(collection1.stream(), collection2.stream()).filter(next -> next <= 10).collect(Collectors.toList()); assertTrue(result.equals(Arrays.asList(7, 8, 9, 10))); } @Test public void whenConvertArrayToString_thenConverted() { - String[] colors = new String[]{"Red", "Blue", "Green", "Yellow"}; - String result = Arrays.stream(colors) - .collect(Collectors.joining(", ")); + String[] colors = new String[] { "Red", "Blue", "Green", "Yellow" }; + String result = Arrays.stream(colors).collect(Collectors.joining(", ")); assertEquals(result, "Red, Blue, Green, Yellow"); } @@ -54,8 +49,7 @@ public class JoinSplitCollectionsUnitTest { @Test public void whenConvertCollectionToString_thenConverted() { Collection directions = Arrays.asList("Left", "Right", "Top", "Bottom"); - String result = directions.stream() - .collect(Collectors.joining(", ")); + String result = directions.stream().collect(Collectors.joining(", ")); assertEquals(result, "Left, Right, Top, Bottom"); } @@ -67,9 +61,7 @@ public class JoinSplitCollectionsUnitTest { users.put(2, "Paul Smith"); users.put(3, "Susan Anderson"); - String result = users.entrySet().stream() - .map(entry -> entry.getKey() + " = " + entry.getValue()) - .collect(Collectors.joining(", ")); + String result = users.entrySet().stream().map(entry -> entry.getKey() + " = " + entry.getValue()).collect(Collectors.joining(", ")); assertEquals(result, "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"); } @@ -80,10 +72,7 @@ public class JoinSplitCollectionsUnitTest { nested.add(Arrays.asList("Left", "Right", "Top", "Bottom")); nested.add(Arrays.asList("Red", "Blue", "Green", "Yellow")); - String result = nested.stream() - .map(nextList -> nextList.stream() - .collect(Collectors.joining("-"))) - .collect(Collectors.joining("; ")); + String result = nested.stream().map(nextList -> nextList.stream().collect(Collectors.joining("-"))).collect(Collectors.joining("; ")); assertEquals(result, "Left-Right-Top-Bottom; Red-Blue-Green-Yellow"); } @@ -91,9 +80,7 @@ public class JoinSplitCollectionsUnitTest { @Test public void whenConvertCollectionToStringAndSkipNull_thenConverted() { Collection fruits = Arrays.asList("Apple", "Orange", null, "Grape"); - String result = fruits.stream() - .filter(Objects::nonNull) - .collect(Collectors.joining(", ")); + String result = fruits.stream().filter(Objects::nonNull).collect(Collectors.joining(", ")); assertEquals(result, "Apple, Orange, Grape"); } @@ -121,9 +108,8 @@ public class JoinSplitCollectionsUnitTest { @Test public void whenSplitArrayByWordLength_thenConverted() { - String[] words = new String[]{"bye", "cold", "it", "and", "my", "word"}; - Map> result = Arrays.stream(words) - .collect(Collectors.groupingBy(String::length)); + String[] words = new String[] { "bye", "cold", "it", "and", "my", "word" }; + Map> result = Arrays.stream(words).collect(Collectors.groupingBy(String::length)); assertTrue(result.get(2).equals(Arrays.asList("it", "my"))); assertTrue(result.get(3).equals(Arrays.asList("bye", "and"))); @@ -135,7 +121,7 @@ public class JoinSplitCollectionsUnitTest { String colors = "Red, Blue, Green, Yellow"; String[] result = colors.split(", "); - assertArrayEquals(result, new String[]{"Red", "Blue", "Green", "Yellow"}); + assertArrayEquals(result, new String[] { "Red", "Blue", "Green", "Yellow" }); } @Test @@ -150,9 +136,7 @@ public class JoinSplitCollectionsUnitTest { public void whenConvertStringToMap_thenConverted() { String users = "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"; - Map result = Arrays.stream(users.split(", ")) - .map(next -> next.split(" = ")) - .collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); + Map result = Arrays.stream(users.split(", ")).map(next -> next.split(" = ")).collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); assertEquals(result.get(1), "John Doe"); assertEquals(result.get(2), "Paul Smith"); @@ -163,10 +147,7 @@ public class JoinSplitCollectionsUnitTest { public void whenConvertCollectionToStringMultipleSeparators_thenConverted() { String fruits = "Apple. , Orange, Grape. Lemon"; - Collection result = Arrays.stream(fruits.split("[,|.]")) - .map(String::trim) - .filter(next -> !next.isEmpty()) - .collect(Collectors.toList()); + Collection result = Arrays.stream(fruits.split("[,|.]")).map(String::trim).filter(next -> !next.isEmpty()).collect(Collectors.toList()); assertTrue(result.equals(Arrays.asList("Apple", "Orange", "Grape", "Lemon"))); } From 75e4fc37ff751c3d402801470e1e53714252cdf4 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Mon, 5 Dec 2016 10:57:34 +0100 Subject: [PATCH 222/399] BAEL-367 - Simplyfing code --- core-java/src/main/java/com/baeldung/generics/Generics.java | 5 ++--- .../src/test/java/com/baeldung/generics/GenericsTest.java | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java/src/main/java/com/baeldung/generics/Generics.java index 2b83778f64..28f1da8df9 100644 --- a/core-java/src/main/java/com/baeldung/generics/Generics.java +++ b/core-java/src/main/java/com/baeldung/generics/Generics.java @@ -13,9 +13,8 @@ public class Generics { } // definition of a generic method - public static List fromArrayToList(T[] a, List list, Function mapperFunction) { - List listWithTypeT = Arrays.stream(a).collect(Collectors.toList()); - return listWithTypeT.stream().map(mapperFunction) + public static List fromArrayToList(T[] a, Function mapperFunction) { + return Arrays.stream(a).map(mapperFunction) .collect(Collectors.toList()); } diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java index 139633d924..5c713ceca4 100644 --- a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java +++ b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java @@ -24,8 +24,7 @@ public class GenericsTest { @Test public void givenArrayOfIntegers_thanListOfStringReturnedOK() { Integer[] intArray = {1, 2, 3, 4, 5}; - List stringList = new ArrayList<>(); - stringList = Generics.fromArrayToList(intArray, stringList, Object::toString); + List stringList = Generics.fromArrayToList(intArray, Object::toString); assertThat(stringList, hasItems("1", "2", "3", "4", "5")); } From 4f4782255a81a1d061d56ccad9dc8c12b4c61463 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Mon, 5 Dec 2016 10:59:53 +0100 Subject: [PATCH 223/399] BAEL-367 - Simplyfing code --- core-java/src/main/java/com/baeldung/generics/Generics.java | 5 ++--- .../src/test/java/com/baeldung/generics/GenericsTest.java | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/generics/Generics.java b/core-java/src/main/java/com/baeldung/generics/Generics.java index 514ccdae51..e0536ca02e 100644 --- a/core-java/src/main/java/com/baeldung/generics/Generics.java +++ b/core-java/src/main/java/com/baeldung/generics/Generics.java @@ -13,9 +13,8 @@ public class Generics { } // definition of a generic method - public static List fromArrayToList(T[] a, List list, Function mapperFunction) { - List listWithTypeT = Arrays.stream(a).collect(Collectors.toList()); - return listWithTypeT.stream().map(mapperFunction).collect(Collectors.toList()); + public static List fromArrayToList(T[] a, Function mapperFunction) { + return Arrays.stream(a).map(mapperFunction).collect(Collectors.toList()); } // example of a generic method that has Number as an upper bound for T diff --git a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java index 36f7d55675..6cbc0eba05 100644 --- a/core-java/src/test/java/com/baeldung/generics/GenericsTest.java +++ b/core-java/src/test/java/com/baeldung/generics/GenericsTest.java @@ -24,8 +24,7 @@ public class GenericsTest { @Test public void givenArrayOfIntegers_thanListOfStringReturnedOK() { Integer[] intArray = { 1, 2, 3, 4, 5 }; - List stringList = new ArrayList<>(); - stringList = Generics.fromArrayToList(intArray, stringList, Object::toString); + List stringList = Generics.fromArrayToList(intArray, Object::toString); assertThat(stringList, hasItems("1", "2", "3", "4", "5")); } From d094081f7fc5af6b80dc03693b79bc7b7ee31693 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 5 Dec 2016 12:31:56 +0200 Subject: [PATCH 224/399] upgrade dependencies --- spring-security-mvc-ldap/pom.xml | 4 ++-- spring-security-mvc-login/pom.xml | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/spring-security-mvc-ldap/pom.xml b/spring-security-mvc-ldap/pom.xml index 145321b2f4..242cc527ac 100644 --- a/spring-security-mvc-ldap/pom.xml +++ b/spring-security-mvc-ldap/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.8.RELEASE + 1.4.2.RELEASE @@ -69,7 +69,7 @@ - 1.5.5 + 1.5.7 diff --git a/spring-security-mvc-login/pom.xml b/spring-security-mvc-login/pom.xml index 943eeaa197..b7b64625e8 100644 --- a/spring-security-mvc-login/pom.xml +++ b/spring-security-mvc-login/pom.xml @@ -222,42 +222,42 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE - 4.3.11.Final - 5.1.38 + 5.2.5.Final + 5.1.40 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final - 3.0.1 + 5.3.3.Final + 3.1.0 1.2 19.0 - 3.4 + 3.5 1.3 4.12 1.10.19 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 From fa36e82d7d13389abf300cd93d1fb2c285c507a4 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 5 Dec 2016 12:42:40 +0200 Subject: [PATCH 225/399] update dependencies --- spring-security-mvc-custom/pom.xml | 26 ++++++++++++------------- spring-security-mvc-digest-auth/pom.xml | 26 ++++++++++++------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/spring-security-mvc-custom/pom.xml b/spring-security-mvc-custom/pom.xml index ca9b3423cc..59339ead5e 100644 --- a/spring-security-mvc-custom/pom.xml +++ b/spring-security-mvc-custom/pom.xml @@ -230,42 +230,42 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE - 4.3.11.Final - 5.1.38 + 5.2.5.Final + 5.1.40 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final - 3.0.1 + 5.3.3.Final + 3.1.0 1.2 19.0 - 3.4 + 3.5 1.3 4.12 1.10.19 - 4.5 - 4.4.1 + 4.5.2 + 4.4.5 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 diff --git a/spring-security-mvc-digest-auth/pom.xml b/spring-security-mvc-digest-auth/pom.xml index c292eb6b54..dd772e3343 100644 --- a/spring-security-mvc-digest-auth/pom.xml +++ b/spring-security-mvc-digest-auth/pom.xml @@ -225,42 +225,42 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE - 4.3.11.Final - 5.1.38 + 5.2.5.Final + 5.1.40 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final + 5.3.3.Final 1.2 - 3.0.1 + 3.1.0 19.0 - 3.4 + 3.5 1.3 4.12 1.10.19 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 From f4b961776827faa3dd759a69d2184c3e29680de5 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 5 Dec 2016 13:11:56 +0200 Subject: [PATCH 226/399] upgrade xml schema --- .../src/main/resources/webSecurityConfig.xml | 4 ++-- .../src/main/resources/webSecurityConfig.xml | 4 ++-- .../src/main/resources/channelWebSecurityConfig.xml | 4 ++-- .../src/main/resources/webSecurityConfig.xml | 4 ++-- .../src/main/resources/webSecurityConfig.xml | 4 ++-- .../src/main/resources/webSecurityConfig.xml | 4 ++-- .../src/main/resources/webSecurityConfig.xml | 4 ++-- .../src/main/resources/webSecurityConfig.xml | 4 ++-- .../src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/spring-security-mvc-custom/src/main/resources/webSecurityConfig.xml b/spring-security-mvc-custom/src/main/resources/webSecurityConfig.xml index 603ded74fe..f31f36655c 100644 --- a/spring-security-mvc-custom/src/main/resources/webSecurityConfig.xml +++ b/spring-security-mvc-custom/src/main/resources/webSecurityConfig.xml @@ -2,9 +2,9 @@ diff --git a/spring-security-mvc-digest-auth/src/main/resources/webSecurityConfig.xml b/spring-security-mvc-digest-auth/src/main/resources/webSecurityConfig.xml index 0706267b77..c259901cb9 100644 --- a/spring-security-mvc-digest-auth/src/main/resources/webSecurityConfig.xml +++ b/spring-security-mvc-digest-auth/src/main/resources/webSecurityConfig.xml @@ -1,8 +1,8 @@ diff --git a/spring-security-mvc-login/src/main/resources/channelWebSecurityConfig.xml b/spring-security-mvc-login/src/main/resources/channelWebSecurityConfig.xml index de073b8aac..516829f5eb 100644 --- a/spring-security-mvc-login/src/main/resources/channelWebSecurityConfig.xml +++ b/spring-security-mvc-login/src/main/resources/channelWebSecurityConfig.xml @@ -2,9 +2,9 @@ diff --git a/spring-security-mvc-login/src/main/resources/webSecurityConfig.xml b/spring-security-mvc-login/src/main/resources/webSecurityConfig.xml index 7a736d0024..e8056dba6e 100644 --- a/spring-security-mvc-login/src/main/resources/webSecurityConfig.xml +++ b/spring-security-mvc-login/src/main/resources/webSecurityConfig.xml @@ -2,9 +2,9 @@ diff --git a/spring-security-mvc-session/src/main/resources/webSecurityConfig.xml b/spring-security-mvc-session/src/main/resources/webSecurityConfig.xml index 02b74b0933..e8aa2f76bc 100644 --- a/spring-security-mvc-session/src/main/resources/webSecurityConfig.xml +++ b/spring-security-mvc-session/src/main/resources/webSecurityConfig.xml @@ -2,9 +2,9 @@ diff --git a/spring-security-rest-basic-auth/src/main/resources/webSecurityConfig.xml b/spring-security-rest-basic-auth/src/main/resources/webSecurityConfig.xml index 6beea901df..6dea965d8b 100644 --- a/spring-security-rest-basic-auth/src/main/resources/webSecurityConfig.xml +++ b/spring-security-rest-basic-auth/src/main/resources/webSecurityConfig.xml @@ -2,9 +2,9 @@ diff --git a/spring-security-rest-custom/src/main/resources/webSecurityConfig.xml b/spring-security-rest-custom/src/main/resources/webSecurityConfig.xml index 98fe24f9b9..fa5dc894bf 100644 --- a/spring-security-rest-custom/src/main/resources/webSecurityConfig.xml +++ b/spring-security-rest-custom/src/main/resources/webSecurityConfig.xml @@ -2,9 +2,9 @@ diff --git a/spring-security-rest/src/main/resources/webSecurityConfig.xml b/spring-security-rest/src/main/resources/webSecurityConfig.xml index 619b53fb7e..cf8357633c 100644 --- a/spring-security-rest/src/main/resources/webSecurityConfig.xml +++ b/spring-security-rest/src/main/resources/webSecurityConfig.xml @@ -3,9 +3,9 @@ xmlns:sec="http://www.springframework.org/schema/security" xsi:schemaLocation=" http://www.springframework.org/schema/security - http://www.springframework.org/schema/security/spring-security-4.0.xsd + http://www.springframework.org/schema/security/spring-security-4.2.xsd http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-4.2.xsd" + http://www.springframework.org/schema/beans/spring-beans-4.3.xsd" > diff --git a/spring-userservice/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml b/spring-userservice/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml index 25d1d4d22f..48ef8a8c43 100644 --- a/spring-userservice/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml +++ b/spring-userservice/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml @@ -5,11 +5,11 @@ xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:security="http://www.springframework.org/schema/security" xmlns:tx="http://www.springframework.org/schema/tx" - xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.1.xsd + xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd - http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd - http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> From 5d4f0c0ae6d40638a0aa98f10496b71ab464137a Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 5 Dec 2016 13:15:21 +0200 Subject: [PATCH 227/399] upgrade dependencies --- .../pom.xml | 30 +++++++++---------- .../src/main/resources/webSecurityConfig.xml | 8 ++--- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/spring-security-mvc-persisted-remember-me/pom.xml b/spring-security-mvc-persisted-remember-me/pom.xml index 3f1d78f8ea..f215c39c6d 100644 --- a/spring-security-mvc-persisted-remember-me/pom.xml +++ b/spring-security-mvc-persisted-remember-me/pom.xml @@ -113,7 +113,7 @@ - postgresql + org.postgresql postgresql ${postgresql.version} runtime @@ -260,23 +260,23 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE - 4.3.11.Final - 5.1.38 - 1.4.190 - 9.1-901.jdbc4 + 5.2.5.Final + 5.1.40 + 1.4.193 + 9.4.1212 - 1.7.12 - 1.1.3 + 1.7.21 + 1.1.7 - 5.1.3.Final - 3.0.1 + 5.3.3.Final + 3.1.0 1.2 @@ -288,17 +288,17 @@ 4.11 1.10.19 - 4.5 - 4.4.1 + 4.5.2 + 4.4.5 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 diff --git a/spring-security-mvc-persisted-remember-me/src/main/resources/webSecurityConfig.xml b/spring-security-mvc-persisted-remember-me/src/main/resources/webSecurityConfig.xml index d1f081cb9b..9fc3f7f355 100644 --- a/spring-security-mvc-persisted-remember-me/src/main/resources/webSecurityConfig.xml +++ b/spring-security-mvc-persisted-remember-me/src/main/resources/webSecurityConfig.xml @@ -2,11 +2,11 @@ From e21efe8c080779a393ccb0c7dea69ff194964f60 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 6 Dec 2016 02:06:25 +0800 Subject: [PATCH 228/399] Changed the controller class name. --- .../AnnotationMethodHandlerAdapterExample.java | 15 +++++++++++++++ .../RequestMappingHandlerAdapterExample.java | 15 +++++++++++++++ .../SimpleControllerHandlerAdapterExample.java | 18 ++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java create mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java create mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java new file mode 100644 index 0000000000..ac38155d8c --- /dev/null +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java @@ -0,0 +1,15 @@ +package com.baeldung.spring.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class AnnotationMethodHandlerAdapterExampleController { + @RequestMapping("/annotedName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + model.addObject("message", "Dinesh"); + return model; + } +} diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java new file mode 100644 index 0000000000..aab04516d9 --- /dev/null +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java @@ -0,0 +1,15 @@ +package com.baeldung.spring.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class RequestMappingHandlerAdapterExampleController { + @RequestMapping("/requestName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + model.addObject("message","Madhwal"); + return model; + } +} diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java new file mode 100644 index 0000000000..699021333a --- /dev/null +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java @@ -0,0 +1,18 @@ +package com.baeldung.spring.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.AbstractController; + +public class SimpleControllerHandlerAdapterExampleController extends + AbstractController { + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest arg0, + HttpServletResponse arg1) throws Exception { + ModelAndView model = new ModelAndView("Greeting"); + model.addObject("message", "Dinesh Madhwal"); + return model; + } +} \ No newline at end of file From ab7925d330e904567239daf25275f86a5a0e1045 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 6 Dec 2016 02:16:06 +0800 Subject: [PATCH 229/399] Delete AnnotationMethodHandlerAdapterExampleController.java --- ...tionMethodHandlerAdapterExampleController.java | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java deleted file mode 100644 index ac38155d8c..0000000000 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.spring.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -@Controller -public class AnnotationMethodHandlerAdapterExampleController { - @RequestMapping("/annotedName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message", "Dinesh"); - return model; - } -} From cf58289d6d7c288dbc600b2253d8dcf91df7ccac Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 6 Dec 2016 02:16:12 +0800 Subject: [PATCH 230/399] Delete RequestMappingHandlerAdapterExampleController.java --- ...estMappingHandlerAdapterExampleController.java | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java deleted file mode 100644 index aab04516d9..0000000000 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.spring.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -@Controller -public class RequestMappingHandlerAdapterExampleController { - @RequestMapping("/requestName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message","Madhwal"); - return model; - } -} From b4893e7550cafa8f1f994bcf3553be16fabfdd3f Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 6 Dec 2016 02:16:19 +0800 Subject: [PATCH 231/399] Delete SimpleControllerHandlerAdapterExampleController.java --- ...rollerHandlerAdapterExampleController.java | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java deleted file mode 100644 index 6e6e29e3d6..0000000000 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.spring.controller; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.AbstractController; - -public class SimpleControllerHandlerAdapterExampleController extends - AbstractController { - - @Override - protected ModelAndView handleRequestInternal(HttpServletRequest arg0, - HttpServletResponse arg1) throws Exception { - ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message", "Dinesh Madhwal"); - return model; - } -} \ No newline at end of file From caef50355d576688f4570a8b9da8fdfb47dc8394 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 6 Dec 2016 02:19:23 +0800 Subject: [PATCH 232/399] Changed the class name --- .../controller/AnnotationMethodHandlerAdapterExample.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java index ac38155d8c..164830cd6a 100644 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java @@ -5,11 +5,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller -public class AnnotationMethodHandlerAdapterExampleController { +public class AnnotationMethodHandlerAdapterExample { @RequestMapping("/annotedName") public ModelAndView getEmployeeName() { ModelAndView model = new ModelAndView("Greeting"); model.addObject("message", "Dinesh"); return model; } -} +} \ No newline at end of file From 9e7af2365206ab52f49ad0523f3763790ea43878 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 6 Dec 2016 02:23:55 +0800 Subject: [PATCH 233/399] Deleted the files --- ...MethodHandlerAdapterExampleController.java | 15 --------------- ...appingHandlerAdapterExampleController.java | 15 --------------- ...rollerHandlerAdapterExampleController.java | 19 ------------------- 3 files changed, 49 deletions(-) delete mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java delete mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java delete mode 100644 spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java deleted file mode 100644 index ac38155d8c..0000000000 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExampleController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.spring.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -@Controller -public class AnnotationMethodHandlerAdapterExampleController { - @RequestMapping("/annotedName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message", "Dinesh"); - return model; - } -} diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java deleted file mode 100644 index aab04516d9..0000000000 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExampleController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.spring.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.ModelAndView; - -@Controller -public class RequestMappingHandlerAdapterExampleController { - @RequestMapping("/requestName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message","Madhwal"); - return model; - } -} diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java deleted file mode 100644 index 6e6e29e3d6..0000000000 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExampleController.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.spring.controller; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.AbstractController; - -public class SimpleControllerHandlerAdapterExampleController extends - AbstractController { - - @Override - protected ModelAndView handleRequestInternal(HttpServletRequest arg0, - HttpServletResponse arg1) throws Exception { - ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message", "Dinesh Madhwal"); - return model; - } -} \ No newline at end of file From 130b2f802f9965bc8950a3f04e4166e5c505706b Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 6 Dec 2016 02:24:33 +0800 Subject: [PATCH 234/399] Changed File name --- .../controller/SimpleControllerHandlerAdapterExample.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java index 699021333a..48ece758a9 100644 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java @@ -6,7 +6,7 @@ import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; -public class SimpleControllerHandlerAdapterExampleController extends +public class SimpleControllerHandlerAdapterExample extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest arg0, From fbae4042c629fbd7bbe5025ac45536d0189bb139 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 6 Dec 2016 02:37:17 +0800 Subject: [PATCH 235/399] Changed File name --- .../controller/RequestMappingHandlerAdapterExample.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java index aab04516d9..76ac3e2806 100644 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java @@ -5,11 +5,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller -public class RequestMappingHandlerAdapterExampleController { +public class RequestMappingHandlerAdapterExample { @RequestMapping("/requestName") public ModelAndView getEmployeeName() { ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message","Madhwal"); + model.addObject("message", "Madhwal"); return model; } -} +} \ No newline at end of file From c98bba7043c1bed576a7c1ace99acb11a5afa170 Mon Sep 17 00:00:00 2001 From: dineshmadhwal Date: Tue, 6 Dec 2016 02:38:11 +0800 Subject: [PATCH 236/399] Code Formatting --- ...servlet_AnnotationMethodHandlerAdapter.xml | 33 +++++++++-------- ...g-servlet_RequestMappingHandlerAdapter.xml | 35 +++++++++++-------- ...servlet_SimpleControllerHandlerAdapter.xml | 32 +++++++++-------- 3 files changed, 56 insertions(+), 44 deletions(-) diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml b/spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml index f7f28db9fa..a8071a622f 100644 --- a/spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml +++ b/spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml @@ -1,23 +1,26 @@ - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:mvc="http://www.springframework.org/schema/mvc" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation= + "http://www.springframework.org/schema/mvc + http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd + http://www.springframework.org/schema/tx + http://www.springframework.org/schema/tx/spring-tx-3.1.xsd + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.1.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.1.xsd"> - - + class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> - + class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> - - + class="org.springframework.web.servlet.view.InternalResourceViewResolver"> + + \ No newline at end of file diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml b/spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml index d19188e882..b32a213eb3 100644 --- a/spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml +++ b/spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml @@ -1,23 +1,28 @@ - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:mvc="http://www.springframework.org/schema/mvc" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation= + "http://www.springframework.org/schema/mvc + http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd + http://www.springframework.org/schema/tx + http://www.springframework.org/schema/tx/spring-tx-3.1.xsd + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.1.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.1.xsd"> - - + class= + "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> - + class= + "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> - - + class="org.springframework.web.servlet.view.InternalResourceViewResolver"> + + \ No newline at end of file diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml b/spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml index d8d2e6809c..60c9b9e3df 100644 --- a/spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml +++ b/spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml @@ -1,21 +1,25 @@ - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:mvc="http://www.springframework.org/schema/mvc" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation= + "http://www.springframework.org/schema/mvc + http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd + http://www.springframework.org/schema/tx + http://www.springframework.org/schema/tx/spring-tx-3.1.xsd + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.1.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.1.xsd"> - + class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> - + class="com.baeldung.spring.controller.SimpleControllerHandlerAdapterExample"/> - - + class="org.springframework.web.servlet.view.InternalResourceViewResolver"> + + \ No newline at end of file From c00f163aaa9c4c05ea2932acfe78121640bbe15a Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 5 Dec 2016 21:56:34 +0200 Subject: [PATCH 237/399] upgrade and cleanup --- spring-security-custom-permission/pom.xml | 22 +++++++++++-------- .../org/baeldung/persistence/SetupData.java | 3 +-- .../src/main/resources/spring-security.xml | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/spring-security-custom-permission/pom.xml b/spring-security-custom-permission/pom.xml index 288cc3d6ba..b28c0877c4 100644 --- a/spring-security-custom-permission/pom.xml +++ b/spring-security-custom-permission/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.8.RELEASE + 1.4.2.RELEASE @@ -101,38 +101,38 @@ org.apache.derby derby - 10.12.1.1 + ${derby.version} org.apache.derby derbyclient - 10.12.1.1 + ${derby.version} org.apache.derby derbynet - 10.12.1.1 + ${derby.version} org.apache.derby derbytools - 10.12.1.1 + ${derby.version} taglibs standard - 1.1.2 + ${taglibs-standard.version} org.springframework.security spring-security-taglibs - 4.1.3.RELEASE + ${spring-security-taglibs.version} javax.servlet.jsp.jstl jstl-api - 1.2 + ${jstl.version} @@ -245,8 +245,12 @@ UTF-8 1.8 + 10.13.1.1 + 1.1.2 + 4.2.0.RELEASE + 1.2 2.4.0 - 1.6.0 + 1.6.1 diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/SetupData.java b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/SetupData.java index 47616ca61a..631c8dfc58 100644 --- a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/SetupData.java +++ b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/SetupData.java @@ -27,8 +27,8 @@ public class SetupData { @PostConstruct public void init() { - initPrivileges(); initOrganizations(); + initPrivileges(); initUsers(); } @@ -57,7 +57,6 @@ public class SetupData { // final Organization org2 = new Organization("SecondOrg"); organizationRepository.save(org2); - } private void initPrivileges() { diff --git a/spring-security-custom-permission/src/main/resources/spring-security.xml b/spring-security-custom-permission/src/main/resources/spring-security.xml index 382dbf5dff..83bc14dda7 100644 --- a/spring-security-custom-permission/src/main/resources/spring-security.xml +++ b/spring-security-custom-permission/src/main/resources/spring-security.xml @@ -4,7 +4,7 @@ xmlns:beans="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://www.springframework.org/schema/security - http://www.springframework.org/schema/security/spring-security-4.0.xsd + http://www.springframework.org/schema/security/spring-security-4.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> From 8b2b616e664c8b9b7ad5d8928197f552a5631c58 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 5 Dec 2016 23:25:08 +0200 Subject: [PATCH 238/399] upgrade spring boot --- .../spring-security-jsp-authentication/pom.xml | 2 +- spring-security-client/spring-security-jsp-authorize/pom.xml | 2 +- spring-security-client/spring-security-jsp-config/pom.xml | 2 +- spring-security-client/spring-security-mvc/pom.xml | 2 +- .../spring-security-thymeleaf-authorize/pom.xml | 2 +- spring-security-client/spring-security-thymeleaf-config/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/spring-security-client/spring-security-jsp-authentication/pom.xml b/spring-security-client/spring-security-jsp-authentication/pom.xml index 74de4d729b..fc5f0cb86a 100644 --- a/spring-security-client/spring-security-jsp-authentication/pom.xml +++ b/spring-security-client/spring-security-jsp-authentication/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE diff --git a/spring-security-client/spring-security-jsp-authorize/pom.xml b/spring-security-client/spring-security-jsp-authorize/pom.xml index 25bb21b663..8cedbeb713 100644 --- a/spring-security-client/spring-security-jsp-authorize/pom.xml +++ b/spring-security-client/spring-security-jsp-authorize/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE diff --git a/spring-security-client/spring-security-jsp-config/pom.xml b/spring-security-client/spring-security-jsp-config/pom.xml index 2416552d7c..067e6dff60 100644 --- a/spring-security-client/spring-security-jsp-config/pom.xml +++ b/spring-security-client/spring-security-jsp-config/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE diff --git a/spring-security-client/spring-security-mvc/pom.xml b/spring-security-client/spring-security-mvc/pom.xml index ec3b1f1782..b6a67d9c2c 100644 --- a/spring-security-client/spring-security-mvc/pom.xml +++ b/spring-security-client/spring-security-mvc/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE diff --git a/spring-security-client/spring-security-thymeleaf-authorize/pom.xml b/spring-security-client/spring-security-thymeleaf-authorize/pom.xml index 5254f1db1a..5c13c34dea 100644 --- a/spring-security-client/spring-security-thymeleaf-authorize/pom.xml +++ b/spring-security-client/spring-security-thymeleaf-authorize/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE diff --git a/spring-security-client/spring-security-thymeleaf-config/pom.xml b/spring-security-client/spring-security-thymeleaf-config/pom.xml index ec145a29c8..cc43b2ffb1 100644 --- a/spring-security-client/spring-security-thymeleaf-config/pom.xml +++ b/spring-security-client/spring-security-thymeleaf-config/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE From 50bc4fb460b24f1b9c3805a97bde093b5fdfc7ab Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 5 Dec 2016 23:34:23 +0200 Subject: [PATCH 239/399] upgrade dependencies --- spring-security-basic-auth/pom.xml | 26 +++++++++---------- .../src/main/resources/webSecurityConfig.xml | 4 +-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/spring-security-basic-auth/pom.xml b/spring-security-basic-auth/pom.xml index 009f5584bb..4cb0efb9e2 100644 --- a/spring-security-basic-auth/pom.xml +++ b/spring-security-basic-auth/pom.xml @@ -225,42 +225,42 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE - 4.3.11.Final - 5.1.38 + 5.2.5.Final + 5.1.40 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final + 5.3.3.Final 1.2 - 3.0.1 + 3.1.0 19.0 - 3.4 + 3.5 1.3 4.12 1.10.19 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 diff --git a/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml b/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml index f840d3014e..f6d15980ae 100644 --- a/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml +++ b/spring-security-basic-auth/src/main/resources/webSecurityConfig.xml @@ -1,8 +1,8 @@ From d0a6a0ed922ad9148b0d1d4bf64681798f0082e8 Mon Sep 17 00:00:00 2001 From: Dragan Bozanovic Date: Mon, 5 Dec 2016 22:46:23 +0100 Subject: [PATCH 240/399] BAEL-446: Deleting objects with Hibernate. (#879) --- .../config/PersistenceJPAConfigL2Cache.java | 7 +- .../main/resources/persistence-h2.properties | 2 +- .../config/PersistenceJPAConfigDeletion.java | 17 ++ .../persistence/deletion/model/Bar.java | 60 +++++++ .../persistence/deletion/model/Baz.java | 48 ++++++ .../persistence/deletion/model/Foo.java | 63 +++++++ .../service/DeletionIntegrationTest.java | 159 ++++++++++++++++++ 7 files changed, 354 insertions(+), 2 deletions(-) create mode 100644 spring-jpa/src/test/java/org/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java create mode 100644 spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Bar.java create mode 100644 spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Baz.java create mode 100644 spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Foo.java create mode 100644 spring-jpa/src/test/java/org/baeldung/persistence/service/DeletionIntegrationTest.java diff --git a/spring-jpa/src/main/java/org/baeldung/config/PersistenceJPAConfigL2Cache.java b/spring-jpa/src/main/java/org/baeldung/config/PersistenceJPAConfigL2Cache.java index 3ca0dbf5e4..8768bac58c 100644 --- a/spring-jpa/src/main/java/org/baeldung/config/PersistenceJPAConfigL2Cache.java +++ b/spring-jpa/src/main/java/org/baeldung/config/PersistenceJPAConfigL2Cache.java @@ -40,7 +40,7 @@ public class PersistenceJPAConfigL2Cache { public LocalContainerEntityManagerFactoryBean entityManagerFactory() { final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource()); - em.setPackagesToScan(new String[] { "org.baeldung.persistence.model" }); + em.setPackagesToScan(getPackagesToScan()); final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); @@ -49,6 +49,10 @@ public class PersistenceJPAConfigL2Cache { return em; } + protected String[] getPackagesToScan() { + return new String[] { "org.baeldung.persistence.model" }; + } + @Bean public DataSource dataSource() { final DriverManagerDataSource dataSource = new DriverManagerDataSource(); @@ -78,6 +82,7 @@ public class PersistenceJPAConfigL2Cache { hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", env.getProperty("hibernate.cache.use_second_level_cache")); hibernateProperties.setProperty("hibernate.cache.use_query_cache", env.getProperty("hibernate.cache.use_query_cache")); hibernateProperties.setProperty("hibernate.cache.region.factory_class", env.getProperty("hibernate.cache.region.factory_class")); + hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql")); return hibernateProperties; } diff --git a/spring-jpa/src/main/resources/persistence-h2.properties b/spring-jpa/src/main/resources/persistence-h2.properties index d195af5ec9..2c3e18b58d 100644 --- a/spring-jpa/src/main/resources/persistence-h2.properties +++ b/spring-jpa/src/main/resources/persistence-h2.properties @@ -6,7 +6,7 @@ jdbc.user=sa # hibernate.X hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.show_sql=false +hibernate.show_sql=true hibernate.hbm2ddl.auto=create-drop hibernate.cache.use_second_level_cache=true hibernate.cache.use_query_cache=true diff --git a/spring-jpa/src/test/java/org/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java b/spring-jpa/src/test/java/org/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java new file mode 100644 index 0000000000..37388d1c51 --- /dev/null +++ b/spring-jpa/src/test/java/org/baeldung/persistence/deletion/config/PersistenceJPAConfigDeletion.java @@ -0,0 +1,17 @@ +package org.baeldung.persistence.deletion.config; + +import org.baeldung.config.PersistenceJPAConfigL2Cache; + +import java.util.Properties; + +public class PersistenceJPAConfigDeletion extends PersistenceJPAConfigL2Cache { + + public PersistenceJPAConfigDeletion() { + super(); + } + + @Override + protected String[] getPackagesToScan() { + return new String[] { "org.baeldung.persistence.deletion.model" }; + } +} \ No newline at end of file diff --git a/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Bar.java b/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Bar.java new file mode 100644 index 0000000000..26c4846fd2 --- /dev/null +++ b/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Bar.java @@ -0,0 +1,60 @@ +package org.baeldung.persistence.deletion.model; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Table(name = "BAR") +public class Bar { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private long id; + + @Column(nullable = false) + private String name; + + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + List bazList = new ArrayList<>(); + + public Bar() { + super(); + } + + public Bar(final String name) { + super(); + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public List getBazList() { + return bazList; + } + + public void setBazList(final List bazList) { + this.bazList = bazList; + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Bar [name=").append(name).append("]"); + return builder.toString(); + } +} diff --git a/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Baz.java b/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Baz.java new file mode 100644 index 0000000000..2dad3e6654 --- /dev/null +++ b/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Baz.java @@ -0,0 +1,48 @@ +package org.baeldung.persistence.deletion.model; + +import javax.persistence.*; +import java.util.List; + +@Entity +@Table(name = "BAZ") +public class Baz { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private long id; + + @Column(nullable = false) + private String name; + + public Baz() { + super(); + } + + public Baz(final String name) { + super(); + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Bar [name=").append(name).append("]"); + return builder.toString(); + } +} diff --git a/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Foo.java b/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Foo.java new file mode 100644 index 0000000000..00fc34c166 --- /dev/null +++ b/spring-jpa/src/test/java/org/baeldung/persistence/deletion/model/Foo.java @@ -0,0 +1,63 @@ +package org.baeldung.persistence.deletion.model; + +import org.hibernate.annotations.Where; + +import javax.persistence.*; + +@Entity +@Table(name = "FOO") +@Where(clause = "DELETED = 0") +public class Foo { + + public Foo() { + super(); + } + + public Foo(final String name) { + super(); + this.name = name; + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "ID") + private long id; + + @Column(name = "NAME") + private String name; + + @Column(name = "DELETED") + private Integer deleted = 0; + + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + @JoinColumn(name = "BAR_ID") + private Bar bar; + + public Bar getBar() { + return bar; + } + + public void setBar(final Bar bar) { + this.bar = bar; + } + + public long getId() { + return id; + } + + public void setId(final int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public void setDeleted() { + this.deleted = 1; + } +} diff --git a/spring-jpa/src/test/java/org/baeldung/persistence/service/DeletionIntegrationTest.java b/spring-jpa/src/test/java/org/baeldung/persistence/service/DeletionIntegrationTest.java new file mode 100644 index 0000000000..9e5c5fa07a --- /dev/null +++ b/spring-jpa/src/test/java/org/baeldung/persistence/service/DeletionIntegrationTest.java @@ -0,0 +1,159 @@ +package org.baeldung.persistence.service; + +import org.baeldung.persistence.deletion.config.PersistenceJPAConfigDeletion; +import org.baeldung.persistence.deletion.model.Bar; +import org.baeldung.persistence.deletion.model.Baz; +import org.baeldung.persistence.deletion.model.Foo; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.Transactional; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.nullValue; +import static org.junit.Assert.assertThat; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceJPAConfigDeletion.class }, loader = AnnotationConfigContextLoader.class) +public class DeletionIntegrationTest { + + @PersistenceContext + private EntityManager entityManager; + @Autowired + private PlatformTransactionManager platformTransactionManager; + + @Before + public final void before() { + entityManager.getEntityManagerFactory().getCache().evictAll(); + } + + @Test + @Transactional + public final void givenEntityIsRemoved_thenItIsNotInDB() { + Foo foo = new Foo("foo"); + entityManager.persist(foo); + flushAndClear(); + + foo = entityManager.find(Foo.class, foo.getId()); + assertThat(foo, notNullValue()); + + entityManager.remove(foo); + flushAndClear(); + + assertThat(entityManager.find(Foo.class, foo.getId()), nullValue()); + } + + @Test + @Transactional + public final void givenEntityIsRemovedAndReferencedByAnotherEntity_thenItIsNotRemoved() { + Bar bar = new Bar("bar"); + Foo foo = new Foo("foo"); + foo.setBar(bar); + entityManager.persist(foo); + flushAndClear(); + + foo = entityManager.find(Foo.class, foo.getId()); + bar = entityManager.find(Bar.class, bar.getId()); + entityManager.remove(bar); + flushAndClear(); + + bar = entityManager.find(Bar.class, bar.getId()); + assertThat(bar, notNullValue()); + + foo = entityManager.find(Foo.class, foo.getId()); + foo.setBar(null); + entityManager.remove(bar); + flushAndClear(); + + assertThat(entityManager.find(Bar.class, bar.getId()), nullValue()); + } + + @Test + @Transactional + public final void givenEntityIsRemoved_thenRemovalIsCascaded() { + Bar bar = new Bar("bar"); + Foo foo = new Foo("foo"); + foo.setBar(bar); + entityManager.persist(foo); + flushAndClear(); + + foo = entityManager.find(Foo.class, foo.getId()); + entityManager.remove(foo); + flushAndClear(); + + assertThat(entityManager.find(Foo.class, foo.getId()), nullValue()); + assertThat(entityManager.find(Bar.class, bar.getId()), nullValue()); + } + + @Test + @Transactional + public final void givenEntityIsDisassociated_thenOrphanRemovalIsApplied() { + Bar bar = new Bar("bar"); + Baz baz = new Baz("baz"); + bar.getBazList().add(baz); + entityManager.persist(bar); + flushAndClear(); + + bar = entityManager.find(Bar.class, bar.getId()); + baz = bar.getBazList().get(0); + bar.getBazList().remove(baz); + flushAndClear(); + + assertThat(entityManager.find(Baz.class, baz.getId()), nullValue()); + } + + @Test + @Transactional + public final void givenEntityIsDeletedWithJpaBulkDeleteStatement_thenItIsNotInDB() { + Foo foo = new Foo("foo"); + entityManager.persist(foo); + flushAndClear(); + + entityManager.createQuery("delete from Foo where id = :id") + .setParameter("id", foo.getId()) + .executeUpdate(); + + assertThat(entityManager.find(Foo.class, foo.getId()), nullValue()); + } + + @Test + @Transactional + public final void givenEntityIsDeletedWithNativeQuery_thenItIsNotInDB() { + Foo foo = new Foo("foo"); + entityManager.persist(foo); + flushAndClear(); + + entityManager.createNativeQuery("delete from FOO where ID = :id") + .setParameter("id", foo.getId()) + .executeUpdate(); + + assertThat(entityManager.find(Foo.class, foo.getId()), nullValue()); + } + + @Test + @Transactional + public final void givenEntityIsSoftDeleted_thenItIsNotReturnedFromQueries() { + Foo foo = new Foo("foo"); + entityManager.persist(foo); + flushAndClear(); + + foo = entityManager.find(Foo.class, foo.getId()); + foo.setDeleted(); + flushAndClear(); + + assertThat(entityManager.find(Foo.class, foo.getId()), nullValue()); + } + + private void flushAndClear() { + entityManager.flush(); + entityManager.clear(); + } +} From 8a0733f064140f9d45b2dd671fe167421a9573f5 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 5 Dec 2016 23:51:11 +0200 Subject: [PATCH 241/399] upgrade dependencies --- spring-rest-docs/pom.xml | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/spring-rest-docs/pom.xml b/spring-rest-docs/pom.xml index 8e758eeb4a..2e8a70e96b 100644 --- a/spring-rest-docs/pom.xml +++ b/spring-rest-docs/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE @@ -22,6 +22,9 @@ UTF-8 1.8 ${project.build.directory}/generated-snippets + 1.1.2.RELEASE + 2.2.0 + 1.5.3 @@ -42,23 +45,23 @@ org.springframework.restdocs spring-restdocs-mockmvc - 1.0.1.RELEASE + ${restdocs.version} test - com.jayway.jsonpath - json-path - 2.0.0 - + com.jayway.jsonpath + json-path + ${jsonpath.version} + - - - org.springframework.boot - spring-boot-maven-plugin - - + + + org.springframework.boot + spring-boot-maven-plugin + + org.apache.maven.plugins maven-surefire-plugin @@ -70,7 +73,7 @@ org.asciidoctor asciidoctor-maven-plugin - 1.5.2 + ${asciidoctor-plugin.version} generate-docs From 58a863ddf9ec3bfa9162a80f07a1a2aaa0dd061e Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Mon, 5 Dec 2016 17:29:09 -0500 Subject: [PATCH 242/399] Upped spring version --- spring-boot/pom.xml | 295 ++++++++++++++++++++++---------------------- 1 file changed, 148 insertions(+), 147 deletions(-) diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index 02f33f8871..2620f7d08f 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -1,130 +1,131 @@ - 4.0.0 - com.baeldung - spring-boot - 0.0.1-SNAPSHOT - war - Spring Boot Actuator - This is simple boot application for Spring boot actuator test + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + spring-boot + 0.0.1-SNAPSHOT + war + Spring Boot Actuator + This is simple boot application for Spring boot actuator test - - - org.springframework.boot - spring-boot-starter-parent - 1.4.2.RELEASE - + + + org.springframework.boot + spring-boot-starter-parent + 1.4.2.RELEASE + + - - - org.baeldung.boot.DemoApplication - UTF-8 - 1.8 - 4.3.1.RELEASE - + + + org.baeldung.boot.DemoApplication + UTF-8 + 1.8 + 4.3.4.RELEASE + - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - org.springframework.boot - spring-boot-starter-web - + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + - - org.springframework.boot - spring-boot-starter-data-jpa - + + org.springframework.boot + spring-boot-starter-data-jpa + - - org.springframework.boot - spring-boot-starter-actuator - + + org.springframework.boot + spring-boot-starter-actuator + - - org.springframework.boot - spring-boot-starter-security - + + org.springframework.boot + spring-boot-starter-security + - - io.dropwizard.metrics - metrics-core - + + io.dropwizard.metrics + metrics-core + - - com.h2database - h2 - + + com.h2database + h2 + - - org.springframework.boot - spring-boot-starter-test - test - + + org.springframework.boot + spring-boot-starter-test + test + - - org.springframework.boot - spring-boot-starter - - - com.jayway.jsonpath - json-path - test - - - org.springframework.boot - spring-boot-starter-mail - - - org.subethamail - subethasmtp - 3.1.7 - test - + + org.springframework.boot + spring-boot-starter + + + com.jayway.jsonpath + json-path + test + + + org.springframework.boot + spring-boot-starter-mail + + + org.subethamail + subethasmtp + 3.1.7 + test + - - org.webjars - bootstrap - 3.3.7-1 - - - org.webjars - jquery - 3.1.1 - - + + org.webjars + bootstrap + 3.3.7-1 + + + org.webjars + jquery + 3.1.1 + + - - spring-boot - - - src/main/resources - true - - + + spring-boot + + + src/main/resources + true + + - + - - org.springframework.boot - spring-boot-maven-plugin - + + org.springframework.boot + spring-boot-maven-plugin + - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + - - org.apache.maven.plugins - maven-war-plugin - + + org.apache.maven.plugins + maven-war-plugin + pl.project13.maven @@ -145,7 +146,7 @@ - + @@ -182,41 +183,41 @@ - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + From 3c050f705337734bd67e96dff9f908bc9cbc743e Mon Sep 17 00:00:00 2001 From: Zeger Hendrikse Date: Mon, 5 Dec 2016 23:38:34 +0100 Subject: [PATCH 243/399] Resolving conflicts --- .../org/baeldung/okhttp/OkHttpPostingLiveTest.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java index cbe5ff885c..be3f5d67c9 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java @@ -49,7 +49,13 @@ public class OkHttpPostingLiveTest { public void whenSendPostRequestWithAuthorization_thenCorrect() throws IOException { final String postBody = "test post"; - final Request request = new Request.Builder().url(URL_SECURED_BY_BASIC_AUTHENTICATION).addHeader("Authorization", Credentials.basic("test", "test")).post(RequestBody.create(MediaType.parse("text/x-markdown; charset=utf-8"), postBody)).build(); + client = new OkHttpClient(); + + final Request request = new Request.Builder() + .url(URL_SECURED_BY_BASIC_AUTHENTICATION) + .addHeader("Authorization", Credentials.basic("test", "test")) + .post(RequestBody.create(MediaType.parse("text/x-markdown; charset=utf-8"), "test post")) + .build(); final Call call = client.newCall(request); final Response response = call.execute(); @@ -61,8 +67,9 @@ public class OkHttpPostingLiveTest { public void whenPostJson_thenCorrect() throws IOException { final String json = "{\"id\":1,\"name\":\"John\"}"; - final RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json); + client = new OkHttpClient(); + final RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), "{\"id\":1,\"name\":\"John\"}"); final Request request = new Request.Builder().url(BASE_URL + "/users/detail").post(body).build(); final Call call = client.newCall(request); From ee95f0cbde59bd2d97b61808e5f0d2260a1b14eb Mon Sep 17 00:00:00 2001 From: Zeger Hendrikse Date: Mon, 5 Dec 2016 23:40:39 +0100 Subject: [PATCH 244/399] Removed redundant initialization of client --- .../test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java index be3f5d67c9..9f9220329d 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpPostingLiveTest.java @@ -49,8 +49,6 @@ public class OkHttpPostingLiveTest { public void whenSendPostRequestWithAuthorization_thenCorrect() throws IOException { final String postBody = "test post"; - client = new OkHttpClient(); - final Request request = new Request.Builder() .url(URL_SECURED_BY_BASIC_AUTHENTICATION) .addHeader("Authorization", Credentials.basic("test", "test")) @@ -67,8 +65,6 @@ public class OkHttpPostingLiveTest { public void whenPostJson_thenCorrect() throws IOException { final String json = "{\"id\":1,\"name\":\"John\"}"; - client = new OkHttpClient(); - final RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), "{\"id\":1,\"name\":\"John\"}"); final Request request = new Request.Builder().url(BASE_URL + "/users/detail").post(body).build(); From de7c1b362f70c2bdb631e44722da2cba904788f7 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 13:22:47 +0200 Subject: [PATCH 245/399] upgrade and cleanup --- spring-rest-angular/pom.xml | 15 ++++++++--- .../StudentServiceIntegrationTest.java | 25 ++++++++----------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/spring-rest-angular/pom.xml b/spring-rest-angular/pom.xml index ce496df742..e838e2d5e6 100644 --- a/spring-rest-angular/pom.xml +++ b/spring-rest-angular/pom.xml @@ -11,7 +11,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE @@ -45,7 +45,7 @@ org.apache.commons commons-lang3 - 3.3 + ${commons-lang3.version} com.google.guava @@ -60,15 +60,20 @@ io.rest-assured rest-assured - 3.0.0 + ${rest-assured.version} test io.rest-assured spring-mock-mvc - 3.0.0 + ${rest-assured.version} test + + org.springframework.boot + spring-boot-starter-test + test + @@ -142,6 +147,8 @@ 19.0 + 3.5 + 3.0.1 diff --git a/spring-rest-angular/src/test/java/org/baeldung/web/service/StudentServiceIntegrationTest.java b/spring-rest-angular/src/test/java/org/baeldung/web/service/StudentServiceIntegrationTest.java index 6ad80e5caf..48c985fb9d 100644 --- a/spring-rest-angular/src/test/java/org/baeldung/web/service/StudentServiceIntegrationTest.java +++ b/spring-rest-angular/src/test/java/org/baeldung/web/service/StudentServiceIntegrationTest.java @@ -1,26 +1,23 @@ package org.baeldung.web.service; +import static io.restassured.RestAssured.given; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsCollectionContaining.hasItems; +import static org.hamcrest.core.IsEqual.equalTo; + import org.apache.commons.lang3.RandomStringUtils; import org.baeldung.web.main.Application; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.boot.test.IntegrationTest; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.test.context.junit4.SpringRunner; -import static io.restassured.RestAssured.*; -import static org.hamcrest.core.IsCollectionContaining.*; -import static org.hamcrest.core.Is.*; -import static org.hamcrest.core.IsEqual.*; - -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = Application.class) -@WebAppConfiguration -@IntegrationTest("server.port:8888") +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.DEFINED_PORT) public class StudentServiceIntegrationTest { - private static final String ENDPOINT = "http://localhost:8888/student/get"; + private static final String ENDPOINT = "http://localhost:8080/student/get"; @Test public void givenRequestForStudents_whenPageIsOne_expectContainsNames() { From 99ad241f9d14739a08ee86bd2ab530f9ace5d832 Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Tue, 6 Dec 2016 13:30:04 +0000 Subject: [PATCH 246/399] Add Spring MVC form and binding example --- jackson-annotations/pom.xml | 249 ++++++++++++++++++ .../deserialization/jacksoninject/Author.java | 32 +++ .../deserialization/jacksoninject/Person.java | 49 ++++ .../jsonanysetter/Inventory.java | 38 +++ .../deserialization/jsoncreator/Author.java | 38 +++ .../jsondeserialize/Author.java | 30 +++ .../deserialization/jsondeserialize/Book.java | 53 ++++ .../CustomDateDeserializer.java | 42 +++ .../deserialization/jsondeserialize/Item.java | 61 +++++ .../deserialization/jsonsetter/Author.java | 38 +++ .../jacksonannotation/domain/Author.java | 27 ++ .../jacksonannotation/domain/Book.java | 48 ++++ .../jacksonannotation/domain/Course.java | 71 +++++ .../jacksonannotation/domain/Customer.java | 24 ++ .../jacksonannotation/domain/Inventory.java | 29 ++ .../jacksonannotation/domain/Item.java | 59 +++++ .../jacksonannotation/domain/Order.java | 50 ++++ .../jacksonannotation/domain/Person.java | 44 ++++ .../general/jsonfilter/Author.java | 32 +++ .../general/jsonformat/Book.java | 56 ++++ .../general/jsonidentityinfo/Author.java | 33 +++ .../general/jsonidentityinfo/Course.java | 72 +++++ .../general/jsonidentityinfo/Item.java | 65 +++++ .../general/jsonidentityinfo/Person.java | 44 ++++ .../general/jsonproperty/Author.java | 29 ++ .../general/jsonproperty/Book.java | 61 +++++ .../general/jsonproperty/Item.java | 61 +++++ .../general/jsonunwrapped/Order.java | 54 ++++ .../general/jsonview/Order.java | 57 ++++ .../general/jsonview/Views.java | 15 ++ .../general/reference/Author.java | 30 +++ .../general/reference/Course.java | 72 +++++ .../general/reference/Item.java | 63 +++++ .../general/reference/Person.java | 44 ++++ .../inclusion/jsonautodetect/Order.java | 54 ++++ .../inclusion/jsonignore/Author.java | 29 ++ .../inclusion/jsonignore/Person.java | 47 ++++ .../jsonignoreproperties/Course.java | 76 ++++++ .../inclusion/jsonignoretype/Order.java | 44 ++++ .../inclusion/jsoninclude/Author.java | 34 +++ .../miscellaneous/custom/Course.java | 74 ++++++ .../custom/CustomCourseAnnotation.java | 20 ++ .../miscellaneous/custom/Item.java | 62 +++++ .../miscellaneous/disable/Author.java | 36 +++ .../miscellaneous/mixin/Author.java | 30 +++ .../miscellaneous/mixin/IgnoreListMixIn.java | 13 + .../jacksonannotation/polymorphism/Order.java | 66 +++++ .../jsonanygetter/Inventory.java | 43 +++ .../serialization/jsongetter/Author.java | 33 +++ .../jsonpropertyorder/Author.java | 32 +++ .../jsonpropertyorder/Person.java | 42 +++ .../serialization/jsonrawvalue/Customer.java | 28 ++ .../serialization/jsonrootname/Author.java | 32 +++ .../serialization/jsonserialize/Author.java | 30 +++ .../serialization/jsonserialize/Book.java | 53 ++++ .../jsonserialize/CustomDateSerializer.java | 36 +++ .../serialization/jsonserialize/Item.java | 61 +++++ .../serialization/jsonvalue/Course.java | 76 ++++++ .../jacksoninject/JacksonInjectTest.java | 45 ++++ .../jsonanysetter/JsonAnySetterTest.java | 37 +++ .../jsoncreator/JsonCreatorTest.java | 44 ++++ .../jsondeserialize/JsonDeserializeTest.java | 34 +++ .../jsonsetter/JsonSetterTest.java | 32 +++ .../general/jsonfilter/JsonFilterTest.java | 42 +++ .../general/jsonformat/JsonFormatTest.java | 66 +++++ .../JsonIdentityInfoTest.java | 60 +++++ .../jsonproperty/JsonPropertyTest.java | 73 +++++ .../jsonunwrapped/JsonUnwrappedTest.java | 44 ++++ .../general/jsonview/JsonViewTest.java | 72 +++++ .../general/reference/ReferenceTest.java | 59 +++++ .../jsonautodetect/JsonAutoDetectTest.java | 52 ++++ .../inclusion/jsonignore/JsonIgnoreTest.java | 41 +++ .../JsonIgnorePropertiesTest.java | 52 ++++ .../jsonignoretype/JsonIgnoreTypeTest.java | 40 +++ .../jsoninclude/JsonIncludeTest.java | 41 +++ .../miscellaneous/custom/CustomTest.java | 51 ++++ .../miscellaneous/disable/DisableTest.java | 58 ++++ .../miscellaneous/mixin/MixInTest.java | 58 ++++ .../polymorphism/PolymorphismTest.java | 64 +++++ .../jsonanygetter/JsonAnyGetterTest.java | 49 ++++ .../jsongetter/JsonGetterTest.java | 40 +++ .../JsonPropertyOrderTest.java | 42 +++ .../jsonrawvalue/JsonRawValueTest.java | 41 +++ .../jsonrootname/JsonRootNameTest.java | 46 ++++ .../jsonserialize/JsonSerializeTest.java | 58 ++++ .../jsonvalue/JsonValueTest.java | 27 ++ .../author-jsonpropertyorder-schema.json | 29 ++ pom.xml | 1 + 88 files changed, 4219 insertions(+) create mode 100644 jackson-annotations/pom.xml create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Person.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonanysetter/Inventory.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsoncreator/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Book.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/CustomDateDeserializer.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Item.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Book.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Course.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Customer.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Inventory.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Item.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Order.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Person.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonfilter/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonformat/Book.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Course.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Item.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Person.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Book.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Item.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonunwrapped/Order.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonview/Order.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonview/Views.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Course.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Item.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Person.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonautodetect/Order.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignore/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignore/Person.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignoreproperties/Course.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignoretype/Order.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsoninclude/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/Course.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/CustomCourseAnnotation.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/Item.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/disable/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/mixin/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/mixin/IgnoreListMixIn.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/polymorphism/Order.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonanygetter/Inventory.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsongetter/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/Person.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonrawvalue/Customer.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonrootname/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Author.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Book.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/CustomDateSerializer.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Item.java create mode 100644 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonvalue/Course.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/JacksonInjectTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsonanysetter/JsonAnySetterTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsoncreator/JsonCreatorTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/JsonDeserializeTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/JsonSetterTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonfilter/JsonFilterTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonformat/JsonFormatTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/JsonIdentityInfoTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonproperty/JsonPropertyTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonunwrapped/JsonUnwrappedTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonview/JsonViewTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/reference/ReferenceTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonautodetect/JsonAutoDetectTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignore/JsonIgnoreTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignoreproperties/JsonIgnorePropertiesTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignoretype/JsonIgnoreTypeTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsoninclude/JsonIncludeTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/custom/CustomTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/disable/DisableTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/mixin/MixInTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/polymorphism/PolymorphismTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonanygetter/JsonAnyGetterTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsongetter/JsonGetterTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/JsonPropertyOrderTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonrawvalue/JsonRawValueTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonrootname/JsonRootNameTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonserialize/JsonSerializeTest.java create mode 100644 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonvalue/JsonValueTest.java create mode 100644 jackson-annotations/src/test/resources/author-jsonpropertyorder-schema.json diff --git a/jackson-annotations/pom.xml b/jackson-annotations/pom.xml new file mode 100644 index 0000000000..98d4cc9a87 --- /dev/null +++ b/jackson-annotations/pom.xml @@ -0,0 +1,249 @@ + + 4.0.0 + + com.baeldung + jackson-annotations + 1.0-SNAPSHOT + jar + + jackson-annotations + http://www.baeldung.com + + + + + + + com.google.guava + guava + ${guava.version} + + + + commons-io + commons-io + ${commons-io.version} + + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + ${jackson.version} + + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson.version} + + + + com.fasterxml.jackson.datatype + jackson-datatype-joda + ${jackson.version} + + + + com.fasterxml.jackson.module + jackson-module-jsonSchema + ${jackson.version} + + + + joda-time + joda-time + ${joda-time.version} + + + + com.google.code.gson + gson + ${gson.version} + + + + + + io.rest-assured + rest-assured + 3.0.1 + test + + + + + io.rest-assured + json-schema-validator + 3.0.0 + test + + + + + io.rest-assured + json-path + 3.0.1 + test + + + + com.github.fge + json-schema-validator + 2.2.6 + test + + + + junit + junit + ${junit.version} + test + + + + org.assertj + assertj-core + 3.6.1 + test + + + + + + + + + + + + + ch.qos.logback + logback-classic + ${logback.version} + + + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + + + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + + + + + + jackson + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven-compiler-plugin.source} + ${maven-compiler-plugin.source} + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + + + + + + + + 4.3.11.Final + 5.1.38 + + + 2.8.5 + + + 1.7.21 + 1.1.7 + + + 5.1.3.Final + 2.9.6 + 2.8.0 + 4.1 + + + 20.0 + 3.5 + 2.5 + + + 1.3 + 4.12 + 2.2.26 + + 4.4.1 + 4.5 + + 2.9.0 + + + 3.5.1 + 2.6 + 2.19.1 + 2.7 + 1.4.18 + + UTF-8 + 1.8 + + + + diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Author.java new file mode 100644 index 0000000000..2d816282b2 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Author.java @@ -0,0 +1,32 @@ +package com.baeldung.jacksonannotation.deserialization.jacksoninject; + +import com.baeldung.jacksonannotation.domain.Item; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + List items = new ArrayList<>(); + + public Author(){ + super(); + } + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Person.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Person.java new file mode 100644 index 0000000000..f7e44b3dd4 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Person.java @@ -0,0 +1,49 @@ +package com.baeldung.jacksonannotation.deserialization.jacksoninject; + +import com.fasterxml.jackson.annotation.JacksonInject; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Person { + + @JacksonInject + private UUID id; + private String firstName; + private String lastName; + + public Person(){ + + } + + public Person(String firstName, String lastName) { + this.id = UUID.randomUUID(); + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public UUID getId() { + return id; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonanysetter/Inventory.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonanysetter/Inventory.java new file mode 100644 index 0000000000..22b1540896 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonanysetter/Inventory.java @@ -0,0 +1,38 @@ +package com.baeldung.jacksonannotation.deserialization.jsonanysetter; + +import com.baeldung.jacksonannotation.domain.Author; +import com.baeldung.jacksonannotation.domain.Item; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.HashMap; +import java.util.Map; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + * @see JsonAnyGetter + */ +public class Inventory { + + private Map stock = new HashMap<>(); + + private Map countryDeliveryCost = new HashMap<>(); + + @JsonIgnore + public Map getStock() { + return stock; + } + + public Map getCountryDeliveryCost() { + return countryDeliveryCost; + } + + @JsonAnySetter + public void addCountryDeliveryCost(String country, Float cost) { + countryDeliveryCost.put(country, cost); + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsoncreator/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsoncreator/Author.java new file mode 100644 index 0000000000..c9ed3eaf47 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsoncreator/Author.java @@ -0,0 +1,38 @@ +package com.baeldung.jacksonannotation.deserialization.jsoncreator; + + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonGetter; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + * @see JsonGetter + */ +public class Author extends Person { + + List items = new ArrayList<>(); + + @JsonCreator + public Author( + @JsonProperty("christianName") String firstName, + @JsonProperty("surname") String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Author.java new file mode 100644 index 0000000000..5830d099e1 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Author.java @@ -0,0 +1,30 @@ +package com.baeldung.jacksonannotation.deserialization.jsondeserialize; + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Book.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Book.java new file mode 100644 index 0000000000..eb2c1c967c --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Book.java @@ -0,0 +1,53 @@ +package com.baeldung.jacksonannotation.deserialization.jsondeserialize; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Book extends Item { + + private String ISBN; + + @JsonDeserialize(using = CustomDateDeserializer.class) + private Date published; + private BigDecimal pages; + + public Book() { + super(); + } + + public Book(String title, Author author) { + super(title, author); + } + + public String getISBN() { + return ISBN; + } + + public void setISBN(String ISBN) { + this.ISBN = ISBN; + } + + public Date getPublished() { + return published; + } + + public void setPublished(Date published) { + this.published = published; + } + + public BigDecimal getPages() { + return pages; + } + + public void setPages(BigDecimal pages) { + this.pages = pages; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/CustomDateDeserializer.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/CustomDateDeserializer.java new file mode 100644 index 0000000000..c8ad9979ab --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/CustomDateDeserializer.java @@ -0,0 +1,42 @@ +package com.baeldung.jacksonannotation.deserialization.jsondeserialize; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class CustomDateDeserializer extends StdDeserializer { + + private static SimpleDateFormat formatter = + new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); + + public CustomDateDeserializer() { + this(null); + } + + public CustomDateDeserializer(Class vc) { + super(vc); + } + + @Override + public Date deserialize(JsonParser jsonparser, DeserializationContext context) + throws IOException, JsonProcessingException { + String date = jsonparser.getText(); + try { + return formatter.parse(date); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Item.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Item.java new file mode 100644 index 0000000000..3d2fba74e2 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Item.java @@ -0,0 +1,61 @@ +package com.baeldung.jacksonannotation.deserialization.jsondeserialize; + +import com.baeldung.jacksonannotation.domain.Person; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Item { + + private UUID id; + private String title; + private List authors = new ArrayList<>(); + private float price; + + public Item(){} + + public Item(String title, Author author) { + this.id = UUID.randomUUID(); + this.title = title; + this.authors.add(author); + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getAuthors() { + return authors; + } + + public void setAuthors(List authors) { + this.authors = authors; + } + + public float getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/Author.java new file mode 100644 index 0000000000..534984f731 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/Author.java @@ -0,0 +1,38 @@ +package com.baeldung.jacksonannotation.deserialization.jsonsetter; + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonSetter; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + private List items = new ArrayList<>(); + + public Author(){ + super(); + } + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + @JsonIgnore + public List getItems() { + return items; + } + + @JsonSetter("publications") + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Author.java new file mode 100644 index 0000000000..cee1576a79 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Author.java @@ -0,0 +1,27 @@ +package com.baeldung.jacksonannotation.domain; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + private List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Book.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Book.java new file mode 100644 index 0000000000..82980673f1 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Book.java @@ -0,0 +1,48 @@ +package com.baeldung.jacksonannotation.domain; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Book extends Item { + + private String ISBN; + private Date published; + private BigDecimal pages; + + public Book(){ + } + + public Book(String title, Author author) { + super(title, author); + } + + public String getISBN() { + return ISBN; + } + + public void setISBN(String ISBN) { + this.ISBN = ISBN; + } + + public Date getPublished() { + return published; + } + + public void setPublished(Date published) { + this.published = published; + } + + public BigDecimal getPages() { + return pages; + } + + public void setPages(BigDecimal pages) { + this.pages = pages; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Course.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Course.java new file mode 100644 index 0000000000..6f0f55dc28 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Course.java @@ -0,0 +1,71 @@ +package com.baeldung.jacksonannotation.domain; + +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Course extends Item { + + public enum Medium {CLASSROOM, ONLINE} + + public enum Level { + BEGINNER("Beginner", 1), INTERMEDIATE("Intermediate", 2), ADVANCED("Advanced", 3); + + private String name; + private int number; + + Level(String name, int number) { + this.name = name; + this.number = number; + } + + public String getName() { + return name; + } + } + + private float duration; + private Medium medium; + private Level level; + private List prerequisite; + + public Course(String title, Author author) { + super(title, author); + } + + public float getDuration() { + return duration; + } + + public void setDuration(float duration) { + this.duration = duration; + } + + public Medium getMedium() { + return medium; + } + + public void setMedium(Medium medium) { + this.medium = medium; + } + + public Level getLevel() { + return level; + } + + public void setLevel(Level level) { + this.level = level; + } + + public List getPrerequisite() { + return prerequisite; + } + + public void setPrerequisite(List prerequisite) { + this.prerequisite = prerequisite; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Customer.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Customer.java new file mode 100644 index 0000000000..0cd49f7934 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Customer.java @@ -0,0 +1,24 @@ +package com.baeldung.jacksonannotation.domain; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Customer extends Person { + + private String configuration; + + public Customer(String firstName, String lastName) { + super(firstName, lastName); + } + + public String getConfiguration() { + return configuration; + } + + public void setConfiguration(String configuration) { + this.configuration = configuration; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Inventory.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Inventory.java new file mode 100644 index 0000000000..e17d2ab406 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Inventory.java @@ -0,0 +1,29 @@ +package com.baeldung.jacksonannotation.domain; + +import java.util.HashMap; +import java.util.Map; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Inventory { + + private Map stock; + + private Map countryDeliveryCost = new HashMap<>(); + + public Map getStock() { + return stock; + } + + public void setStock(Map stock) { + this.stock = stock; + } + + public Map getCountryDeliveryCost() { + return countryDeliveryCost; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Item.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Item.java new file mode 100644 index 0000000000..a45d99f660 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Item.java @@ -0,0 +1,59 @@ +package com.baeldung.jacksonannotation.domain; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Item { + + private UUID id; + private String title; + private List authors = new ArrayList<>(); + private float price; + + public Item(){} + + public Item(String title, Author author) { + this.id = UUID.randomUUID(); + this.title = title; + this.authors.add(author); + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getAuthors() { + return authors; + } + + public void setAuthors(List authors) { + this.authors = authors; + } + + public float getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Order.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Order.java new file mode 100644 index 0000000000..614a8921e3 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Order.java @@ -0,0 +1,50 @@ +package com.baeldung.jacksonannotation.domain; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Order { + + private UUID id; + private Type type; + private int internalAudit; + + public static class Type { + public long id; + public String name; + } + + public Order() { + this.id = UUID.randomUUID(); + } + + public Order(Type type) { + this(); + this.type = type; + } + + public Order(int internalAudit) { + this(); + this.type = new Type(); + this.type.id = 20; + this.type.name = "Order"; + this.internalAudit = internalAudit; + } + + public UUID getId() { + return id; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Person.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Person.java new file mode 100644 index 0000000000..9189b20662 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/domain/Person.java @@ -0,0 +1,44 @@ +package com.baeldung.jacksonannotation.domain; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Person { + + private UUID id; + private String firstName; + private String lastName; + + public Person(){} + + public Person(String firstName, String lastName) { + this.id = UUID.randomUUID(); + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public UUID getId() { + return id; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonfilter/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonfilter/Author.java new file mode 100644 index 0000000000..1c45bf02c1 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonfilter/Author.java @@ -0,0 +1,32 @@ +package com.baeldung.jacksonannotation.general.jsonfilter; + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; +import com.fasterxml.jackson.annotation.JsonFilter; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonFilter("authorFilter") +public class Author extends Person { + + private List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonformat/Book.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonformat/Book.java new file mode 100644 index 0000000000..d7f3901be5 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonformat/Book.java @@ -0,0 +1,56 @@ +package com.baeldung.jacksonannotation.general.jsonformat; + +import com.baeldung.jacksonannotation.domain.Author; +import com.baeldung.jacksonannotation.domain.Item; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Book extends Item { + + private String ISBN; + + @JsonFormat( + shape = JsonFormat.Shape.STRING, + pattern = "dd-MM-yyyy HH:mm:ss") + private Date published; + private BigDecimal pages; + + public Book() { + } + + public Book(String title, Author author) { + super(title, author); + } + + public String getISBN() { + return ISBN; + } + + public void setISBN(String ISBN) { + this.ISBN = ISBN; + } + + public Date getPublished() { + return published; + } + + public void setPublished(Date published) { + this.published = published; + } + + public BigDecimal getPages() { + return pages; + } + + public void setPages(BigDecimal pages) { + this.pages = pages; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Author.java new file mode 100644 index 0000000000..1a60af54dc --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Author.java @@ -0,0 +1,33 @@ +package com.baeldung.jacksonannotation.general.jsonidentityinfo; + +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonIdentityInfo( + generator = ObjectIdGenerators.PropertyGenerator.class, + property = "id") +public class Author extends Person { + + private List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Course.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Course.java new file mode 100644 index 0000000000..d7195a91d8 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Course.java @@ -0,0 +1,72 @@ +package com.baeldung.jacksonannotation.general.jsonidentityinfo; + + +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Course extends Item { + + public enum Medium {CLASSROOM, ONLINE} + + public enum Level { + BEGINNER("Beginner", 1), INTERMEDIATE("Intermediate", 2), ADVANCED("Advanced", 3); + + private String name; + private int number; + + Level(String name, int number) { + this.name = name; + this.number = number; + } + + public String getName() { + return name; + } + } + + private float duration; + private Medium medium; + private Level level; + private List prerequisite; + + public Course(String title, Author author) { + super(title, author); + } + + public float getDuration() { + return duration; + } + + public void setDuration(float duration) { + this.duration = duration; + } + + public Medium getMedium() { + return medium; + } + + public void setMedium(Medium medium) { + this.medium = medium; + } + + public Level getLevel() { + return level; + } + + public void setLevel(Level level) { + this.level = level; + } + + public List getPrerequisite() { + return prerequisite; + } + + public void setPrerequisite(List prerequisite) { + this.prerequisite = prerequisite; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Item.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Item.java new file mode 100644 index 0000000000..b5438d4639 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Item.java @@ -0,0 +1,65 @@ +package com.baeldung.jacksonannotation.general.jsonidentityinfo; + +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonIdentityInfo( + generator = ObjectIdGenerators.PropertyGenerator.class, + property = "id") +public class Item { + + private UUID id; + private String title; + private List authors = new ArrayList<>(); + private float price; + + public Item(){} + + public Item(String title, Author author) { + this.id = UUID.randomUUID(); + this.title = title; + this.authors.add(author); + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getAuthors() { + return authors; + } + + public void setAuthors(List authors) { + this.authors = authors; + } + + public float getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Person.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Person.java new file mode 100644 index 0000000000..1cd3c73b0b --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/Person.java @@ -0,0 +1,44 @@ +package com.baeldung.jacksonannotation.general.jsonidentityinfo; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Person { + + private UUID id; + private String firstName; + private String lastName; + + public Person(){} + + public Person(String firstName, String lastName) { + this.id = UUID.randomUUID(); + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public UUID getId() { + return id; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Author.java new file mode 100644 index 0000000000..7039e60e9b --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Author.java @@ -0,0 +1,29 @@ +package com.baeldung.jacksonannotation.general.jsonproperty; + +import com.baeldung.jacksonannotation.domain.Person; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + private List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Book.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Book.java new file mode 100644 index 0000000000..95d3070eba --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Book.java @@ -0,0 +1,61 @@ +package com.baeldung.jacksonannotation.general.jsonproperty; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Book extends Item { + + private String ISBN; + private Date published; + private BigDecimal pages; + private String binding; + + public Book() { + } + + public Book(String title, Author author) { + super(title, author); + } + + public String getISBN() { + return ISBN; + } + + public void setISBN(String ISBN) { + this.ISBN = ISBN; + } + + public Date getPublished() { + return published; + } + + public void setPublished(Date published) { + this.published = published; + } + + public BigDecimal getPages() { + return pages; + } + + public void setPages(BigDecimal pages) { + this.pages = pages; + } + + @JsonProperty("binding") + public String coverBinding() { + return binding; + } + + @JsonProperty("binding") + public void configureBinding(String binding) { + this.binding = binding; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Item.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Item.java new file mode 100644 index 0000000000..510adaa599 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonproperty/Item.java @@ -0,0 +1,61 @@ +package com.baeldung.jacksonannotation.general.jsonproperty; + +import com.baeldung.jacksonannotation.domain.Person; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Item { + + private UUID id; + private String title; + private List authors = new ArrayList<>(); + private float price; + + public Item(){} + + public Item(String title, Author author) { + this.id = UUID.randomUUID(); + this.title = title; + this.authors.add(author); + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getAuthors() { + return authors; + } + + public void setAuthors(List authors) { + this.authors = authors; + } + + public float getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonunwrapped/Order.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonunwrapped/Order.java new file mode 100644 index 0000000000..8393473a2c --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonunwrapped/Order.java @@ -0,0 +1,54 @@ +package com.baeldung.jacksonannotation.general.jsonunwrapped; + +import com.fasterxml.jackson.annotation.JsonUnwrapped; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Order { + + private UUID id; + + @JsonUnwrapped + private Type type; + private int internalAudit; + + public static class Type { + public long id; + public String name; + } + + public Order() { + this.id = UUID.randomUUID(); + } + + public Order(Type type) { + this(); + this.type = type; + } + + public Order(int internalAudit) { + this(); + this.type = new Type(); + this.type.id = 20; + this.type.name = "Order"; + this.internalAudit = internalAudit; + } + + public UUID getId() { + return id; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonview/Order.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonview/Order.java new file mode 100644 index 0000000000..f9aa4fc768 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonview/Order.java @@ -0,0 +1,57 @@ +package com.baeldung.jacksonannotation.general.jsonview; + +import com.fasterxml.jackson.annotation.JsonView; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Order { + + @JsonView(Views.Public.class) + private UUID id; + + @JsonView(Views.Public.class) + private Type type; + + @JsonView(Views.Internal.class) + private int internalAudit; + + public static class Type { + public long id; + public String name; + } + + public Order() { + this.id = UUID.randomUUID(); + } + + public Order(Type type) { + this(); + this.type = type; + } + + public Order(int internalAudit) { + this(); + this.type = new Type(); + this.type.id = 20; + this.type.name = "Order"; + this.internalAudit = internalAudit; + } + + public UUID getId() { + return id; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonview/Views.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonview/Views.java new file mode 100644 index 0000000000..116e212295 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/jsonview/Views.java @@ -0,0 +1,15 @@ +package com.baeldung.jacksonannotation.general.jsonview; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Views { + public static class Public { + } + + public static class Internal extends Public { + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Author.java new file mode 100644 index 0000000000..7c7c8c0a68 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Author.java @@ -0,0 +1,30 @@ +package com.baeldung.jacksonannotation.general.reference; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + private List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + @JsonManagedReference + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Course.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Course.java new file mode 100644 index 0000000000..6fb7251d68 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Course.java @@ -0,0 +1,72 @@ +package com.baeldung.jacksonannotation.general.reference; + + +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Course extends Item { + + public enum Medium {CLASSROOM, ONLINE} + + public enum Level { + BEGINNER("Beginner", 1), INTERMEDIATE("Intermediate", 2), ADVANCED("Advanced", 3); + + private String name; + private int number; + + Level(String name, int number) { + this.name = name; + this.number = number; + } + + public String getName() { + return name; + } + } + + private float duration; + private Medium medium; + private Level level; + private List prerequisite; + + public Course(String title, Author author) { + super(title, author); + } + + public float getDuration() { + return duration; + } + + public void setDuration(float duration) { + this.duration = duration; + } + + public Medium getMedium() { + return medium; + } + + public void setMedium(Medium medium) { + this.medium = medium; + } + + public Level getLevel() { + return level; + } + + public void setLevel(Level level) { + this.level = level; + } + + public List getPrerequisite() { + return prerequisite; + } + + public void setPrerequisite(List prerequisite) { + this.prerequisite = prerequisite; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Item.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Item.java new file mode 100644 index 0000000000..9123f7f0a9 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Item.java @@ -0,0 +1,63 @@ +package com.baeldung.jacksonannotation.general.reference; + +import com.fasterxml.jackson.annotation.JsonBackReference; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Item { + + private UUID id; + private String title; + + @JsonBackReference + private List authors = new ArrayList<>(); + private float price; + + public Item(){} + + public Item(String title, Author author) { + this.id = UUID.randomUUID(); + this.title = title; + this.authors.add(author); + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getAuthors() { + return authors; + } + + public void setAuthors(List authors) { + this.authors = authors; + } + + public float getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Person.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Person.java new file mode 100644 index 0000000000..372b18d873 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/general/reference/Person.java @@ -0,0 +1,44 @@ +package com.baeldung.jacksonannotation.general.reference; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Person { + + private UUID id; + private String firstName; + private String lastName; + + public Person(){} + + public Person(String firstName, String lastName) { + this.id = UUID.randomUUID(); + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public UUID getId() { + return id; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonautodetect/Order.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonautodetect/Order.java new file mode 100644 index 0000000000..a5bd1b1c7e --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonautodetect/Order.java @@ -0,0 +1,54 @@ +package com.baeldung.jacksonannotation.inclusion.jsonautodetect; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonAutoDetect(fieldVisibility = Visibility.ANY) +public class Order { + + private UUID id; + private Type type; + private int internalAudit; + + public static class Type { + public long id; + public String name; + } + + public Order() { + this.id = UUID.randomUUID(); + } + + public Order(Type type) { + this(); + this.type = type; + } + + public Order(int internalAudit) { + this(); + this.type = new Type(); + this.type.id = 20; + this.type.name = "Order"; + this.internalAudit = internalAudit; + } + + public UUID getId() { + return id; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignore/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignore/Author.java new file mode 100644 index 0000000000..f1f1b07f43 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignore/Author.java @@ -0,0 +1,29 @@ +package com.baeldung.jacksonannotation.inclusion.jsonignore; + +import com.baeldung.jacksonannotation.domain.Item; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + private List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignore/Person.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignore/Person.java new file mode 100644 index 0000000000..8f084e1e99 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignore/Person.java @@ -0,0 +1,47 @@ +package com.baeldung.jacksonannotation.inclusion.jsonignore; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Person { + + @JsonIgnore + private UUID id; + private String firstName; + private String lastName; + + public Person(){} + + public Person(String firstName, String lastName) { + this.id = UUID.randomUUID(); + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public UUID getId() { + return id; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignoreproperties/Course.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignoreproperties/Course.java new file mode 100644 index 0000000000..6eddad2bda --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignoreproperties/Course.java @@ -0,0 +1,76 @@ +package com.baeldung.jacksonannotation.inclusion.jsonignoreproperties; + +import com.baeldung.jacksonannotation.domain.Author; +import com.baeldung.jacksonannotation.domain.Item; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonIgnoreProperties({"medium"}) +public class Course extends Item { + + public enum Medium {CLASSROOM, ONLINE} + + public enum Level { + BEGINNER("Beginner", 1), INTERMEDIATE("Intermediate", 2), ADVANCED("Advanced", 3); + + private String name; + private int number; + + Level(String name, int number) { + this.name = name; + this.number = number; + } + + public String getName() { + return name; + } + } + + private float duration; + private Medium medium; + private Level level; + private List prerequisite; + + public Course(String title, Author author) { + super(title, author); + } + + public float getDuration() { + return duration; + } + + public void setDuration(float duration) { + this.duration = duration; + } + + public Medium getMedium() { + return medium; + } + + public void setMedium(Medium medium) { + this.medium = medium; + } + + public Level getLevel() { + return level; + } + + public void setLevel(Level level) { + this.level = level; + } + + public List getPrerequisite() { + return prerequisite; + } + + public void setPrerequisite(List prerequisite) { + this.prerequisite = prerequisite; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignoretype/Order.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignoretype/Order.java new file mode 100644 index 0000000000..8402f00cfb --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsonignoretype/Order.java @@ -0,0 +1,44 @@ +package com.baeldung.jacksonannotation.inclusion.jsonignoretype; + +import com.fasterxml.jackson.annotation.JsonIgnoreType; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Order { + + private UUID id; + private Type type; + + @JsonIgnoreType + public static class Type { + public long id; + public String name; + } + + public Order() { + this.id = UUID.randomUUID(); + } + + public Order(Type type) { + this(); + this.type = type; + } + + public UUID getId() { + return id; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsoninclude/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsoninclude/Author.java new file mode 100644 index 0000000000..7ccbf69a79 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/inclusion/jsoninclude/Author.java @@ -0,0 +1,34 @@ +package com.baeldung.jacksonannotation.inclusion.jsoninclude; + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.ArrayList; +import java.util.List; + +import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonInclude(NON_NULL) +public class Author extends Person { + + private List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/Course.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/Course.java new file mode 100644 index 0000000000..0cfb6a88e3 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/Course.java @@ -0,0 +1,74 @@ +package com.baeldung.jacksonannotation.miscellaneous.custom; + +import com.baeldung.jacksonannotation.domain.Author; + +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@CustomCourseAnnotation +public class Course extends Item { + + public enum Medium {CLASSROOM, ONLINE} + + public enum Level { + BEGINNER("Beginner", 1), INTERMEDIATE("Intermediate", 2), ADVANCED("Advanced", 3); + + private String name; + private int number; + + Level(String name, int number) { + this.name = name; + this.number = number; + } + + public String getName() { + return name; + } + } + + private float duration; + private Medium medium; + private Level level; + private List prerequisite; + + public Course(String title, Author author) { + super(title, author); + } + + public float getDuration() { + return duration; + } + + public void setDuration(float duration) { + this.duration = duration; + } + + public Medium getMedium() { + return medium; + } + + public void setMedium(Medium medium) { + this.medium = medium; + } + + public Level getLevel() { + return level; + } + + public void setLevel(Level level) { + this.level = level; + } + + public List getPrerequisite() { + return prerequisite; + } + + public void setPrerequisite(List prerequisite) { + this.prerequisite = prerequisite; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/CustomCourseAnnotation.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/CustomCourseAnnotation.java new file mode 100644 index 0000000000..a77cbb722c --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/CustomCourseAnnotation.java @@ -0,0 +1,20 @@ +package com.baeldung.jacksonannotation.miscellaneous.custom; + +import com.fasterxml.jackson.annotation.*; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@Retention(RetentionPolicy.RUNTIME) +@JacksonAnnotationsInside +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"title", "price", "id", "duration", "authors", "level"}) +@JsonIgnoreProperties({"prerequisite"}) +public @interface CustomCourseAnnotation { +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/Item.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/Item.java new file mode 100644 index 0000000000..3d4411b201 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/custom/Item.java @@ -0,0 +1,62 @@ +package com.baeldung.jacksonannotation.miscellaneous.custom; + +import com.baeldung.jacksonannotation.domain.Author; +import com.baeldung.jacksonannotation.domain.Person; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Item { + + private UUID id; + private String title; + private List authors = new ArrayList<>(); + private float price; + + public Item(){} + + public Item(String title, Author author) { + this.id = UUID.randomUUID(); + this.title = title; + this.authors.add(author); + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getAuthors() { + return authors; + } + + public void setAuthors(List authors) { + this.authors = authors; + } + + public float getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/disable/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/disable/Author.java new file mode 100644 index 0000000000..f3e0fdc63f --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/disable/Author.java @@ -0,0 +1,36 @@ +package com.baeldung.jacksonannotation.miscellaneous.disable; + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({"lastName", "items", "firstName", "id"}) +public class Author extends Person { + + @JsonIgnore + private List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/mixin/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/mixin/Author.java new file mode 100644 index 0000000000..155a7f5e5d --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/mixin/Author.java @@ -0,0 +1,30 @@ +package com.baeldung.jacksonannotation.miscellaneous.mixin; + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + private List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/mixin/IgnoreListMixIn.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/mixin/IgnoreListMixIn.java new file mode 100644 index 0000000000..c1aec05041 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/miscellaneous/mixin/IgnoreListMixIn.java @@ -0,0 +1,13 @@ +package com.baeldung.jacksonannotation.miscellaneous.mixin; + +import com.fasterxml.jackson.annotation.JsonIgnoreType; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonIgnoreType +public class IgnoreListMixIn { +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/polymorphism/Order.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/polymorphism/Order.java new file mode 100644 index 0000000000..77ac6d0e67 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/polymorphism/Order.java @@ -0,0 +1,66 @@ +package com.baeldung.jacksonannotation.polymorphism; + +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeName; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Order { + + private UUID id; + private Type type; + private int internalAudit; + + @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, + include = JsonTypeInfo.As.PROPERTY, + property = "ordertype") + @JsonSubTypes({ + @JsonSubTypes.Type(value = InternalType.class, name = "internal") + }) + public static class Type { + public long id; + public String name; + } + + @JsonTypeName("internal") + public static class InternalType extends Type { + public long id; + public String name; + } + + public Order() { + this.id = UUID.randomUUID(); + } + + public Order(Type type) { + this(); + this.type = type; + } + + public Order(int internalAudit) { + this(); + this.type = new Type(); + this.type.id = 20; + this.type.name = "Order"; + this.internalAudit = internalAudit; + } + + public UUID getId() { + return id; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonanygetter/Inventory.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonanygetter/Inventory.java new file mode 100644 index 0000000000..898617b7b2 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonanygetter/Inventory.java @@ -0,0 +1,43 @@ +package com.baeldung.jacksonannotation.serialization.jsonanygetter; + +import com.baeldung.jacksonannotation.domain.Author; +import com.baeldung.jacksonannotation.domain.Item; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.HashMap; +import java.util.Map; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Inventory { + + private String location; + + private Map stock = new HashMap<>(); + + private Map countryDeliveryCost = new HashMap<>(); + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + @JsonIgnore + public Map getStock() { + return stock; + } + + @JsonAnyGetter + public Map getCountryDeliveryCost() { + return countryDeliveryCost; + } + +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsongetter/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsongetter/Author.java new file mode 100644 index 0000000000..92283a32a0 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsongetter/Author.java @@ -0,0 +1,33 @@ +package com.baeldung.jacksonannotation.serialization.jsongetter; + + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; +import com.fasterxml.jackson.annotation.JsonGetter; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + @JsonGetter("publications") + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/Author.java new file mode 100644 index 0000000000..ee708e0d80 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/Author.java @@ -0,0 +1,32 @@ +package com.baeldung.jacksonannotation.serialization.jsonpropertyorder; + + +import com.baeldung.jacksonannotation.domain.Item; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonPropertyOrder({"items", "firstName", "lastName", "id"}) +public class Author extends Person { + + List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/Person.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/Person.java new file mode 100644 index 0000000000..96904c2678 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/Person.java @@ -0,0 +1,42 @@ +package com.baeldung.jacksonannotation.serialization.jsonpropertyorder; + +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Person { + + private UUID id; + private String firstName; + private String lastName; + + public Person(String firstName, String lastName) { + this.id = UUID.randomUUID(); + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public UUID getId() { + return id; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonrawvalue/Customer.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonrawvalue/Customer.java new file mode 100644 index 0000000000..ddd0f63a8d --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonrawvalue/Customer.java @@ -0,0 +1,28 @@ +package com.baeldung.jacksonannotation.serialization.jsonrawvalue; + +import com.baeldung.jacksonannotation.domain.Person; +import com.fasterxml.jackson.annotation.JsonRawValue; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Customer extends Person { + + @JsonRawValue + private String configuration; + + public Customer(String firstName, String lastName) { + super(firstName, lastName); + } + + public String getConfiguration() { + return configuration; + } + + public void setConfiguration(String configuration) { + this.configuration = configuration; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonrootname/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonrootname/Author.java new file mode 100644 index 0000000000..b33f6fecee --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonrootname/Author.java @@ -0,0 +1,32 @@ +package com.baeldung.jacksonannotation.serialization.jsonrootname; + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; +import com.fasterxml.jackson.annotation.JsonRootName; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +@JsonRootName("writer") +public class Author extends Person { + + List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Author.java new file mode 100644 index 0000000000..5599b0b796 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Author.java @@ -0,0 +1,30 @@ +package com.baeldung.jacksonannotation.serialization.jsonserialize; + +import com.baeldung.jacksonannotation.domain.Item; +import com.baeldung.jacksonannotation.domain.Person; + +import java.util.ArrayList; +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Author extends Person { + + List items = new ArrayList<>(); + + public Author(String firstName, String lastName) { + super(firstName, lastName); + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Book.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Book.java new file mode 100644 index 0000000000..a8a05b093c --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Book.java @@ -0,0 +1,53 @@ +package com.baeldung.jacksonannotation.serialization.jsonserialize; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Book extends Item { + + private String ISBN; + + @JsonSerialize(using = CustomDateSerializer.class) + private Date published; + private BigDecimal pages; + + public Book(){ + super(); + } + + public Book(String title, Author author) { + super(title, author); + } + + public String getISBN() { + return ISBN; + } + + public void setISBN(String ISBN) { + this.ISBN = ISBN; + } + + public Date getPublished() { + return published; + } + + public void setPublished(Date published) { + this.published = published; + } + + public BigDecimal getPages() { + return pages; + } + + public void setPages(BigDecimal pages) { + this.pages = pages; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/CustomDateSerializer.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/CustomDateSerializer.java new file mode 100644 index 0000000000..82ad49e9c4 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/CustomDateSerializer.java @@ -0,0 +1,36 @@ +package com.baeldung.jacksonannotation.serialization.jsonserialize; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class CustomDateSerializer extends StdSerializer { + + private static SimpleDateFormat formatter = + new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); + + public CustomDateSerializer() { + this(null); + } + + public CustomDateSerializer(Class t) { + super(t); + } + + @Override + public void serialize(Date value, JsonGenerator gen, SerializerProvider arg2) + throws IOException, JsonProcessingException { + gen.writeString(formatter.format(value)); + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Item.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Item.java new file mode 100644 index 0000000000..c56dc9b6ff --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Item.java @@ -0,0 +1,61 @@ +package com.baeldung.jacksonannotation.serialization.jsonserialize; + +import com.baeldung.jacksonannotation.domain.Person; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Item { + + private UUID id; + private String title; + private List authors = new ArrayList<>(); + private float price; + + public Item(){} + + public Item(String title, Author author) { + this.id = UUID.randomUUID(); + this.title = title; + this.authors.add(author); + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getAuthors() { + return authors; + } + + public void setAuthors(List authors) { + this.authors = authors; + } + + public float getPrice() { + return price; + } + + public void setPrice(float price) { + this.price = price; + } +} diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonvalue/Course.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonvalue/Course.java new file mode 100644 index 0000000000..cb48044ce5 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonvalue/Course.java @@ -0,0 +1,76 @@ +package com.baeldung.jacksonannotation.serialization.jsonvalue; + +import com.baeldung.jacksonannotation.domain.Author; +import com.baeldung.jacksonannotation.domain.Item; +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.List; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class Course extends Item { + + public enum Medium {CLASSROOM, ONLINE} + + public enum Level { + BEGINNER("Beginner", 1), INTERMEDIATE("Intermediate", 2), ADVANCED("Advanced", 3); + + private String name; + private int number; + + Level(String name, int number) { + this.name = name; + this.number = number; + } + + @JsonValue + public String getName() { + return name; + } + } + + private float duration; + private Medium medium; + private Level level; + private List prerequisite; + + public Course(String title, Author author) { + super(title, author); + } + + public float getDuration() { + return duration; + } + + public void setDuration(float duration) { + this.duration = duration; + } + + public Medium getMedium() { + return medium; + } + + public void setMedium(Medium medium) { + this.medium = medium; + } + + public Level getLevel() { + return level; + } + + public void setLevel(Level level) { + this.level = level; + } + + public List getPrerequisite() { + return prerequisite; + } + + public void setPrerequisite(List prerequisite) { + this.prerequisite = prerequisite; + } +} diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/JacksonInjectTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/JacksonInjectTest.java new file mode 100644 index 0000000000..7c9436d711 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/JacksonInjectTest.java @@ -0,0 +1,45 @@ +package com.baeldung.jacksonannotation.deserialization.jacksoninject; + +import com.fasterxml.jackson.databind.InjectableValues; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.io.IOException; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JacksonInjectTest { + + @Test + public void whenDeserializingUsingJacksonInject_thenCorrect() throws IOException { + + UUID id = UUID.fromString("9616dc8c-bad3-11e6-a4a6-cec0c932ce01"); + + // arrange + String authorJson = "{\"firstName\": \"Alex\", \"lastName\": \"Theedom\"}"; + + // act + InjectableValues inject = new InjectableValues.Std().addValue(UUID.class, id); + Author author = new ObjectMapper().reader(inject).forType(Author.class).readValue(authorJson); + + // assert + assertThat(author.getId()).isEqualTo(id); + + + /* + { + "firstName": "Alex", + "lastName": "Theedom", + "publications": [] + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsonanysetter/JsonAnySetterTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsonanysetter/JsonAnySetterTest.java new file mode 100644 index 0000000000..d735f31a0b --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsonanysetter/JsonAnySetterTest.java @@ -0,0 +1,37 @@ +package com.baeldung.jacksonannotation.deserialization.jsonanysetter; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.io.IOException; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonAnySetterTest { + + @Test + public void whenDeserializingUsingJsonAnySetter_thenCorrect() throws IOException { + + // arrange + String json = "{\"USA\":10.00,\"UK\":15.00,\"China\":23.00,\"Brazil\":12.00,\"France\":8.00,\"Russia\":18.00}"; + + // act + Inventory inventory = new ObjectMapper().readerFor(Inventory.class).readValue(json); + + // assert + assertThat(from(json).getMap(".").get("USA")).isEqualTo(inventory.getCountryDeliveryCost().get("USA")); + assertThat(from(json).getMap(".").get("UK")).isEqualTo(inventory.getCountryDeliveryCost().get("UK")); + assertThat(from(json).getMap(".").get("China")).isEqualTo(inventory.getCountryDeliveryCost().get("China")); + assertThat(from(json).getMap(".").get("Brazil")).isEqualTo(inventory.getCountryDeliveryCost().get("Brazil")); + assertThat(from(json).getMap(".").get("France")).isEqualTo(inventory.getCountryDeliveryCost().get("France")); + assertThat(from(json).getMap(".").get("Russia")).isEqualTo(inventory.getCountryDeliveryCost().get("Russia")); + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsoncreator/JsonCreatorTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsoncreator/JsonCreatorTest.java new file mode 100644 index 0000000000..a2c05811df --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsoncreator/JsonCreatorTest.java @@ -0,0 +1,44 @@ +package com.baeldung.jacksonannotation.deserialization.jsoncreator; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.io.IOException; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonCreatorTest { + + @Test + public void whenDeserializingUsingJsonCreator_thenCorrect() throws IOException { + + // arrange + String authorJson = + "{" + + " \"christianName\": \"Alex\"," + + " \"surname\": \"Theedom\"" + + "}"; + + // act + final Author author = new ObjectMapper().readerFor(Author.class).readValue(authorJson); + + // assert + assertThat(from(authorJson).getString("christianName")).isEqualTo(author.getFirstName()); + assertThat(from(authorJson).getString("surname")).isEqualTo(author.getLastName()); + + /* + { + "christianName": "Alex", + "surname": "Theedom" + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/JsonDeserializeTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/JsonDeserializeTest.java new file mode 100644 index 0000000000..6ad06fd2b9 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/JsonDeserializeTest.java @@ -0,0 +1,34 @@ +package com.baeldung.jacksonannotation.deserialization.jsondeserialize; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.io.IOException; +import java.text.SimpleDateFormat; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonDeserializeTest { + + @Test + public void whenDeserializingUsingJsonDeserialize_thenCorrect() throws IOException { + + // arrange + String bookJson = "{\"id\":\"957c43f2-fa2e-42f9-bf75-6e3d5bb6960a\",\"title\":\"Effective Java\",\"authors\":[{\"id\":\"9bcd817d-0141-42e6-8f04-e5aaab0980b6\",\"firstName\":\"Joshua\",\"lastName\":\"Bloch\"}],\"price\":0,\"published\":\"25-12-2017 13:30:25\",\"pages\":null,\"isbn\":null}"; + + // act + Book book = new ObjectMapper().readerFor(Book.class).readValue(bookJson); + + // assert + SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); + assertThat(from(bookJson).getString("published")).isEqualTo(df.format(book.getPublished())); + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/JsonSetterTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/JsonSetterTest.java new file mode 100644 index 0000000000..10b48afc15 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/JsonSetterTest.java @@ -0,0 +1,32 @@ +package com.baeldung.jacksonannotation.deserialization.jsonsetter; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.io.IOException; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonSetterTest { + + @Test + public void whenDeserializingUsingJsonSetter_thenCorrect() throws IOException { + + // arrange + String json = "{\"firstName\":\"Alex\",\"lastName\":\"Theedom\",\"publications\":[{\"title\":\"Professional Java EE Design Patterns\"}]}"; + + // act + Author author = new ObjectMapper().readerFor(Author.class).readValue(json); + + // assert + assertThat(from(json).getList("publications").size()).isEqualTo(author.getItems().size()); + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonfilter/JsonFilterTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonfilter/JsonFilterTest.java new file mode 100644 index 0000000000..fa7f9326a2 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonfilter/JsonFilterTest.java @@ -0,0 +1,42 @@ +package com.baeldung.jacksonannotation.general.jsonfilter; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ser.FilterProvider; +import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; +import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonFilterTest { + + @Test + public void whenSerializingUsingJsonFilter_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", "Theedom"); + FilterProvider filters = new SimpleFilterProvider() + .addFilter("authorFilter", SimpleBeanPropertyFilter.filterOutAllExcept("lastName")); + + // act + String result = new ObjectMapper().writer(filters).writeValueAsString(author); + + // assert + assertThat(from(result).getList("items")).isNull(); + + /* + { + "lastName": "Theedom" + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonformat/JsonFormatTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonformat/JsonFormatTest.java new file mode 100644 index 0000000000..9d61fc409f --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonformat/JsonFormatTest.java @@ -0,0 +1,66 @@ +package com.baeldung.jacksonannotation.general.jsonformat; + +import com.baeldung.jacksonannotation.domain.Author; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonFormatTest { + + @Test + public void whenSerializingUsingJsonFormat_thenCorrect() throws JsonProcessingException, ParseException { + + // arrange + SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); + df.setTimeZone(TimeZone.getTimeZone("UTC")); + + String toParse = "20-12-2014 14:30:00"; + Date date = df.parse(toParse); + + Book book = new Book( + "Design Patterns: Elements of Reusable Object-oriented Software", + new Author("The", "GoF") + ); + book.setPublished(date); + + // act + String result = new ObjectMapper().writeValueAsString(book); + + // assert + assertThat(from(result).getString("published")).isEqualTo(toParse); + + /* + { + "id": "762b39be-fd5b-489e-8688-aeb3b9bbf019", + "title": "Design Patterns: Elements of Reusable Object-oriented Software", + "authors": [ + { + "id": "6941b780-0f54-4259-adcb-85523c8f25f4", + "firstName": "The", + "lastName": "GoF", + "items": [] + } + ], + "price": 0, + "published": "20-12-2014 02:30:00", + "pages": null, + "isbn": null + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/JsonIdentityInfoTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/JsonIdentityInfoTest.java new file mode 100644 index 0000000000..1b08e08c10 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonidentityinfo/JsonIdentityInfoTest.java @@ -0,0 +1,60 @@ +package com.baeldung.jacksonannotation.general.jsonidentityinfo; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.util.Collections; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonIdentityInfoTest { + + @Test + public void whenSerializingUsingJsonIdentityInfo_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", "Theedom"); + + Course course = new Course("Java EE Introduction", author); + author.setItems(Collections.singletonList(course)); + course.setAuthors(Collections.singletonList(author)); + + // act + String result = new ObjectMapper().writeValueAsString(author); + + // assert + assertThat(from(result).getString("items[0].authors")).isNotNull(); + + /* + Authors are included. + { + "id": "1b408bf9-5946-4a14-a112-fde2953a7fe7", + "firstName": "Alex", + "lastName": "Theedom", + "items": [ + { + "id": "5ed30530-f0a5-42eb-b786-be2c655da968", + "title": "Java EE Introduction", + "authors": [ + "1b408bf9-5946-4a14-a112-fde2953a7fe7" + ], + "price": 0, + "duration": 0, + "medium": null, + "level": null, + "prerequisite": null + } + ] + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonproperty/JsonPropertyTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonproperty/JsonPropertyTest.java new file mode 100644 index 0000000000..acfe735dd3 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonproperty/JsonPropertyTest.java @@ -0,0 +1,73 @@ +package com.baeldung.jacksonannotation.general.jsonproperty; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.io.IOException; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonPropertyTest { + + @Test + public void whenSerializingUsingJsonProperty_thenCorrect() throws JsonProcessingException { + + // arrange + Book book = new Book( + "Design Patterns: Elements of Reusable Object-oriented Software", + new Author("The", "GoF") + ); + book.configureBinding("Hardback"); + + // act + String result = new ObjectMapper().writeValueAsString(book); + + // assert + assertThat(from(result).getString("binding")).isEqualTo("Hardback"); + + /* + { + "id": "cd941587-d1ae-4c2a-9a36-29533bf50411", + "title": "Design Patterns: Elements of Reusable Object-oriented Software", + "authors": [ + { + "id": "c8e26318-2f5b-4fa2-9fdc-6e99be021fca", + "firstName": "The", + "lastName": "GoF", + "items": [] + } + ], + "price": 0, + "published": null, + "pages": null, + "isbn": null, + "binding": "Hardback" + } + */ + + } + + @Test + public void whenDeserializingUsingJsonProperty_thenCorrect() throws IOException { + + // arrange + String result = "{\"id\":\"cd941587-d1ae-4c2a-9a36-29533bf50411\",\"title\":\"Design Patterns: Elements of Reusable Object-oriented Software\",\"authors\":[{\"id\":\"c8e26318-2f5b-4fa2-9fdc-6e99be021fca\",\"firstName\":\"The\",\"lastName\":\"GoF\"}],\"binding\":\"Hardback\"}"; + + // act + Book book = new ObjectMapper().readerFor(Book.class).readValue(result); + + // assert + assertThat(book.coverBinding()).isEqualTo("Hardback"); + + } + + +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonunwrapped/JsonUnwrappedTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonunwrapped/JsonUnwrappedTest.java new file mode 100644 index 0000000000..63ad4e3c9f --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonunwrapped/JsonUnwrappedTest.java @@ -0,0 +1,44 @@ +package com.baeldung.jacksonannotation.general.jsonunwrapped; + + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonUnwrappedTest { + + @Test + public void whenSerializingUsingJsonUnwrapped_thenCorrect() throws JsonProcessingException { + + // arrange + Order.Type preorderType = new Order.Type(); + preorderType.id = 10; + preorderType.name = "pre-order"; + + Order order = new Order(preorderType); + + // act + String result = new ObjectMapper().writeValueAsString(order); + + // assert + assertThat(from(result).getInt("id")).isEqualTo(10); + assertThat(from(result).getString("name")).isEqualTo("pre-order"); + + /* + { + "id": 10, + "name": "pre-order" + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonview/JsonViewTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonview/JsonViewTest.java new file mode 100644 index 0000000000..e64b815b11 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/jsonview/JsonViewTest.java @@ -0,0 +1,72 @@ +package com.baeldung.jacksonannotation.general.jsonview; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonViewTest { + + @Test + public void whenSerializingUsingJsonView_andInternalView_thenCorrect() throws JsonProcessingException { + + // arrange + Order order = new Order(120); + + // act + String result = new ObjectMapper().writerWithView(Views.Internal.class).writeValueAsString(order); + + // assert + assertThat(from(result).getUUID("id")).isNotNull(); + assertThat(from(result).getObject("type", Order.Type.class)).isNotNull(); + assertThat(from(result).getInt("internalAudit")).isEqualTo(120); + + /* + { + "id": "33806388-795b-4812-b90a-60292111bc5c", + "type": { + "id": 20, + "name": "Order" + }, + "internalAudit": 120 + } + */ + + } + + @Test + public void whenSerializingUsingJsonView_andPublicView_thenCorrect() throws JsonProcessingException { + + // arrange + Order order = new Order(120); + + // act + String result = new ObjectMapper().writerWithView(Views.Public.class).writeValueAsString(order); + + // assert + assertThat(from(result).getUUID("id")).isNotNull(); + assertThat(from(result).getObject("type", Order.Type.class)).isNotNull(); + assertThat(result).doesNotContain("internalAudit"); + + /* + { + "id": "5184d5fc-e359-4cdf-93fa-4054025bef4e", + "type": { + "id": 20, + "name": "Order" + } + } + */ + + } + + +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/reference/ReferenceTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/reference/ReferenceTest.java new file mode 100644 index 0000000000..acea159b4f --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/general/reference/ReferenceTest.java @@ -0,0 +1,59 @@ +package com.baeldung.jacksonannotation.general.reference; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.util.Collections; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class ReferenceTest { + + @Test + public void whenSerializingUsingReference_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", "Theedom"); + + Course course = new Course("Java EE Introduction", author); + author.setItems(Collections.singletonList(course)); + course.setAuthors(Collections.singletonList(author)); + + // act + String result = new ObjectMapper().writeValueAsString(author); + + // assert + assertThat(from(result).getString("items[0].authors")).isNull(); + + /* + Without references defined it throws StackOverflowError. + Authors excluded. + + { + "id": "9c45d9b3-4888-4c24-8b74-65ef35627cd7", + "firstName": "Alex", + "lastName": "Theedom", + "items": [ + { + "id": "f8309629-d178-4d67-93a4-b513ec4a7f47", + "title": "Java EE Introduction", + "price": 0, + "duration": 0, + "medium": null, + "level": null, + "prerequisite": null + } + ] + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonautodetect/JsonAutoDetectTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonautodetect/JsonAutoDetectTest.java new file mode 100644 index 0000000000..325a7ad338 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonautodetect/JsonAutoDetectTest.java @@ -0,0 +1,52 @@ +package com.baeldung.jacksonannotation.inclusion.jsonautodetect; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonAutoDetectTest { + + @Test + public void whenSerializingUsingJsonAutoDetect_thenCorrect() throws JsonProcessingException { + + // arrange + Order order = new Order(1234567890); + + // act + String result = new ObjectMapper().writeValueAsString(order); + + // assert + assertThat(from(result).getInt("internalAudit")).isEqualTo(1234567890); + + /* + With @JsonAutoDetect + { + "id": "c94774d9-de8f-4244-85d5-624bd3a4567a", + "type": { + "id": 20, + "name": "Order" + }, + "internalAudit": 1234567890 + } + + Without @JsonAutoDetect + { + "id": "c94774d9-de8f-4244-85d5-624bd3a4567a", + "type": { + "id": 20, + "name": "Order" + } + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignore/JsonIgnoreTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignore/JsonIgnoreTest.java new file mode 100644 index 0000000000..d5476b7442 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignore/JsonIgnoreTest.java @@ -0,0 +1,41 @@ +package com.baeldung.jacksonannotation.inclusion.jsonignore; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonIgnoreTest { + + @Test + public void whenSerializingUsingJsonIgnore_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", "Theedom"); + + // act + String result = new ObjectMapper().writeValueAsString(author); + + // assert + assertThat(from(result).getString("firstName")).isEqualTo("Alex"); + assertThat(from(result).getString("lastName")).isEqualTo("Theedom"); + assertThat(from(result).getString("id")).isNull(); + + /* + { + "firstName": "Alex", + "lastName": "Theedom", + "items": [] + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignoreproperties/JsonIgnorePropertiesTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignoreproperties/JsonIgnorePropertiesTest.java new file mode 100644 index 0000000000..ff9047a98c --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignoreproperties/JsonIgnorePropertiesTest.java @@ -0,0 +1,52 @@ +package com.baeldung.jacksonannotation.inclusion.jsonignoreproperties; + +import com.baeldung.jacksonannotation.domain.Author; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonIgnorePropertiesTest { + + @Test + public void whenSerializingUsingJsonIgnoreProperties_thenCorrect() throws JsonProcessingException { + + // arrange + Course course = new Course("Spring Security", new Author("Eugen", "Paraschiv")); + course.setMedium(Course.Medium.ONLINE); + + // act + String result = new ObjectMapper().writeValueAsString(course); + + // assert + assertThat(from(result).getString("medium")).isNull(); + + /* + { + "id": "ef0c8d2b-b088-409e-905c-95ac88dc0ed0", + "title": "Spring Security", + "authors": [ + { + "id": "47a4f498-b0f3-4daf-909f-d2c35a0fe3c2", + "firstName": "Eugen", + "lastName": "Paraschiv", + "items": [] + } + ], + "price": 0, + "duration": 0, + "level": null, + "prerequisite": null + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignoretype/JsonIgnoreTypeTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignoretype/JsonIgnoreTypeTest.java new file mode 100644 index 0000000000..b80cda826f --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsonignoretype/JsonIgnoreTypeTest.java @@ -0,0 +1,40 @@ +package com.baeldung.jacksonannotation.inclusion.jsonignoretype; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonIgnoreTypeTest { + + @Test + public void whenSerializingUsingJsonIgnoreType_thenCorrect() throws JsonProcessingException { + + // arrange + Order.Type type = new Order.Type(); + type.id = 10; + type.name = "Pre-order"; + + Order order = new Order(type); + + // act + String result = new ObjectMapper().writeValueAsString(order); + + // assert + assertThat(from(result).getString("id")).isNotNull(); + assertThat(from(result).getString("type")).isNull(); + + /* + {"id":"ac2428da-523e-443c-a18a-4ea4d2791fea"} + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsoninclude/JsonIncludeTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsoninclude/JsonIncludeTest.java new file mode 100644 index 0000000000..6a1201701a --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/inclusion/jsoninclude/JsonIncludeTest.java @@ -0,0 +1,41 @@ +package com.baeldung.jacksonannotation.inclusion.jsoninclude; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonIncludeTest { + + @Test + public void whenSerializingUsingJsonInclude_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", null); + + // act + String result = new ObjectMapper().writeValueAsString(author); + + // assert + assertThat(from(result).getString("firstName")).isEqualTo("Alex"); + assertThat(result).doesNotContain("lastName"); + + + /* + { + "id": "e8bb4802-6e0c-4fa5-9f68-c233272399cd", + "firstName": "Alex", + "items": [] + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/custom/CustomTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/custom/CustomTest.java new file mode 100644 index 0000000000..8178d12a18 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/custom/CustomTest.java @@ -0,0 +1,51 @@ +package com.baeldung.jacksonannotation.miscellaneous.custom; + +import com.baeldung.jacksonannotation.domain.Author; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class CustomTest { + + @Test + public void whenSerializingUsingCustom_thenCorrect() throws JsonProcessingException { + + // arrange + Course course = new Course("Spring Security", new Author("Eugen", "Paraschiv")); + course.setMedium(Course.Medium.ONLINE); + + // act + String result = new ObjectMapper().writeValueAsString(course); + + // assert + assertThat(from(result).getString("title")).isEqualTo("Spring Security"); + + /* + { + "title": "Spring Security", + "price": 0, + "id": "7dfd4db9-1175-432f-a53b-687423f7bb9b", + "duration": 0, + "authors": [ + { + "id": "da0738f6-033c-4974-8d87-92820e5ccf27", + "firstName": "Eugen", + "lastName": "Paraschiv", + "items": [] + } + ], + "medium": "ONLINE" + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/disable/DisableTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/disable/DisableTest.java new file mode 100644 index 0000000000..f7bdd31f30 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/disable/DisableTest.java @@ -0,0 +1,58 @@ +package com.baeldung.jacksonannotation.miscellaneous.disable; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class DisableTest { + + @Test + public void whenSerializingUsingDisable_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", "Theedom"); + + // act + ObjectMapper mapper = new ObjectMapper(); + String result = mapper.writeValueAsString(author); + + // assert + assertThat(from(result).getList("items")).isNull(); + + /* + { + "lastName": "Theedom", + "firstName": "Alex", + "id": "de4afbb4-b24d-45c8-bb00-fd6b9acb42f1" + } + */ + + // act + mapper = new ObjectMapper(); + mapper.disable(MapperFeature.USE_ANNOTATIONS); + result = mapper.writeValueAsString(author); + + // assert + assertThat(from(result).getList("items")).isNotNull(); + + /* + { + "id": "81e6ed72-6b27-4fe9-a36f-e3171c5b55ef", + "firstName": "Alex", + "lastName": "Theedom", + "items": [] + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/mixin/MixInTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/mixin/MixInTest.java new file mode 100644 index 0000000000..779031cfa6 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/miscellaneous/mixin/MixInTest.java @@ -0,0 +1,58 @@ +package com.baeldung.jacksonannotation.miscellaneous.mixin; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.util.List; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class MixInTest { + + @Test + public void whenSerializingUsingMixIn_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", "Theedom"); + + // act + String result = new ObjectMapper().writeValueAsString(author); + + // assert + assertThat(from(result).getList("items")).isNotNull(); + + /* + { + "id": "f848b076-00a4-444a-a50b-328595dd9bf5", + "firstName": "Alex", + "lastName": "Theedom", + "items": [] + } + */ + + ObjectMapper mapper = new ObjectMapper(); + mapper.addMixIn(List.class, IgnoreListMixIn.class); + + result = mapper.writeValueAsString(author); + + // assert + assertThat(from(result).getList("items")).isNull(); + + /* + { + "id": "9ffefb7d-e56f-447c-9009-e92e142f8347", + "firstName": "Alex", + "lastName": "Theedom" + } + */ + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/polymorphism/PolymorphismTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/polymorphism/PolymorphismTest.java new file mode 100644 index 0000000000..ad7aeb937c --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/polymorphism/PolymorphismTest.java @@ -0,0 +1,64 @@ +package com.baeldung.jacksonannotation.polymorphism; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.io.IOException; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class PolymorphismTest { + + @Test + public void whenSerializingUsingPolymorphism_thenCorrect() throws JsonProcessingException { + + // arrange + Order.InternalType internalType = new Order.InternalType(); + internalType.id = 250; + internalType.name = "staff"; + + Order order = new Order(internalType); + + // act + String result = new ObjectMapper().writeValueAsString(order); + + // assert + assertThat(from(result).getString("type.ordertype")).isEqualTo("internal"); + + /* + { + "id": "7fc898e3-b4e7-41b0-8ffa-664cf3663f2e", + "type": { + "ordertype": "internal", + "id": 250, + "name": "staff" + } + } + */ + + } + + @Test + public void whenDeserializingPolymorphic_thenCorrect() throws IOException { + + // arrange + String orderJson = "{\"type\":{\"ordertype\":\"internal\",\"id\":100,\"name\":\"directors\"}}"; + + // act + Order order = new ObjectMapper().readerFor(Order.class).readValue(orderJson); + + // assert + assertThat(from(orderJson).getString("type.ordertype")).isEqualTo("internal"); + assertThat(((Order.InternalType) order.getType()).name).isEqualTo("directors"); + assertThat(((Order.InternalType) order.getType()).id).isEqualTo(100); + assertThat(order.getType().getClass()).isEqualTo(Order.InternalType.class); + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonanygetter/JsonAnyGetterTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonanygetter/JsonAnyGetterTest.java new file mode 100644 index 0000000000..de7c9b6d69 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonanygetter/JsonAnyGetterTest.java @@ -0,0 +1,49 @@ +package com.baeldung.jacksonannotation.serialization.jsonanygetter; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.util.Map; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonAnyGetterTest { + + @Test + public void whenSerializingUsingJsonAnyGetter_thenCorrect() throws JsonProcessingException { + + // arrange + Inventory inventory = new Inventory(); + Map countryDeliveryCost = inventory.getCountryDeliveryCost(); + inventory.setLocation("France"); + + countryDeliveryCost.put("USA", 10.00f); + countryDeliveryCost.put("UK", 15.00f); + + // act + String result = new ObjectMapper().writeValueAsString(inventory); + + // assert + assertThat(from(result).getString("location")).isEqualTo("France"); + assertThat(from(result).getFloat("USA")).isEqualTo(10.00f); + assertThat(from(result).getFloat("UK")).isEqualTo(15.00f); + + /* + { + "location": "France", + "USA": 10, + "UK": 15 + } + */ + + } + +} diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsongetter/JsonGetterTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsongetter/JsonGetterTest.java new file mode 100644 index 0000000000..1eec307afa --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsongetter/JsonGetterTest.java @@ -0,0 +1,40 @@ +package com.baeldung.jacksonannotation.serialization.jsongetter; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonGetterTest { + + @Test + public void whenSerializingUsingJsonGetter_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", "Theedom"); + + // act + String result = new ObjectMapper().writeValueAsString(author); + + // assert + assertThat(from(result).getList("publications")).isNotNull(); + assertThat(from(result).getList("items")).isNull(); + + /* + { + "firstName": "Alex", + "lastName": "Theedom", + "publications": [] + } + */ + + } +} diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/JsonPropertyOrderTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/JsonPropertyOrderTest.java new file mode 100644 index 0000000000..864168bdef --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonpropertyorder/JsonPropertyOrderTest.java @@ -0,0 +1,42 @@ +package com.baeldung.jacksonannotation.serialization.jsonpropertyorder; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath; +import static org.hamcrest.MatcherAssert.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonPropertyOrderTest { + + @Test + public void whenSerializingUsingJsonPropertyOrder_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", "Theedom"); + + // act + String result = new ObjectMapper().writeValueAsString(author); + + // assert + assertThat(result, matchesJsonSchemaInClasspath("author-jsonpropertyorder-schema.json")); + + // NOTE: property order is not enforced by the JSON specification. + + /* + { + "items": [], + "firstName": "Alex", + "lastName": "Theedom", + "id": "fd277638-9b6e-49f7-81c1-bc52f165245b" + } + */ + + } +} diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonrawvalue/JsonRawValueTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonrawvalue/JsonRawValueTest.java new file mode 100644 index 0000000000..477d33762b --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonrawvalue/JsonRawValueTest.java @@ -0,0 +1,41 @@ +package com.baeldung.jacksonannotation.serialization.jsonrawvalue; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonRawValueTest { + + @Test + public void whenSerializingUsingJsonRawValue_thenCorrect() throws JsonProcessingException { + + // arrange + String customerConfig = "{\"colour\":\"red\",\"device\":\"mobile\",\"orientation\":\"landscape\"}"; + Customer customer = new Customer("Alex", "Theedom"); + customer.setConfiguration("{\"colour\":\"red\",\"device\":\"mobile\",\"orientation\":\"landscape\"}"); + + // act + String result = new ObjectMapper().writeValueAsString(customer); + + // assert + assertThat(result.contains(customerConfig)); + + + /* + { + "firstName": "Alex", + "lastName": "Theedom", + "publications": [] + } + */ + + } +} diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonrootname/JsonRootNameTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonrootname/JsonRootNameTest.java new file mode 100644 index 0000000000..c73dcd8e62 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonrootname/JsonRootNameTest.java @@ -0,0 +1,46 @@ +package com.baeldung.jacksonannotation.serialization.jsonrootname; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonRootNameTest { + + @Test + public void whenSerializingUsingJsonRootName_thenCorrect() throws JsonProcessingException { + + // arrange + Author author = new Author("Alex", "Theedom"); + + // act + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.WRAP_ROOT_VALUE); + String result = mapper.writeValueAsString(author); + + // assert + assertThat(from(result).getString("writer.firstName")).isEqualTo("Alex"); + assertThat(from(result).getString("author.firstName")).isNull(); + + /* + { + "writer": { + "id": "0f50dca6-3dd7-4801-a334-fd1614276389", + "firstName": "Alex", + "lastName": "Theedom", + "items": [] + } + } + */ + + } +} diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonserialize/JsonSerializeTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonserialize/JsonSerializeTest.java new file mode 100644 index 0000000000..8fa03418cc --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonserialize/JsonSerializeTest.java @@ -0,0 +1,58 @@ +package com.baeldung.jacksonannotation.serialization.jsonserialize; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.text.ParseException; +import java.text.SimpleDateFormat; + +import static io.restassured.path.json.JsonPath.from; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonSerializeTest { + + @Test + public void whenSerializingUsingJsonSerialize_thenCorrect() throws JsonProcessingException, ParseException { + + // arrange + Author joshuaBloch = new Author("Joshua", "Bloch"); + Book book = new Book("Effective Java", joshuaBloch); + + SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); + String toParse = "25-12-2017 13:30:25"; + book.setPublished(df.parse(toParse)); + + // act + String result = new ObjectMapper().writeValueAsString(book); + + // assert + assertThat(from(result).getString("published")).isEqualTo(toParse); + + /* + { + "id": "957c43f2-fa2e-42f9-bf75-6e3d5bb6960a", + "title": "Effective Java", + "authors": [ + { + "id": "9bcd817d-0141-42e6-8f04-e5aaab0980b6", + "firstName": "Joshua", + "lastName": "Bloch", + "items": [] + } + ], + "price": 0, + "published": "25-12-2017 13:30:25", + "pages": null, + "isbn": null + } + */ + + } +} diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonvalue/JsonValueTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonvalue/JsonValueTest.java new file mode 100644 index 0000000000..1dceb3bfea --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/serialization/jsonvalue/JsonValueTest.java @@ -0,0 +1,27 @@ +package com.baeldung.jacksonannotation.serialization.jsonvalue; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Source code github.com/readlearncode + * + * @author Alex Theedom www.readlearncode.com + * @version 1.0 + */ +public class JsonValueTest { + + @Test + public void whenSerializingUsingJsonValue_thenCorrect() throws JsonProcessingException { + + // act + String result = new ObjectMapper().writeValueAsString(Course.Level.ADVANCED); + + // assert + assertThat(result).isEqualTo("\"Advanced\""); + + } +} \ No newline at end of file diff --git a/jackson-annotations/src/test/resources/author-jsonpropertyorder-schema.json b/jackson-annotations/src/test/resources/author-jsonpropertyorder-schema.json new file mode 100644 index 0000000000..8e7a85372c --- /dev/null +++ b/jackson-annotations/src/test/resources/author-jsonpropertyorder-schema.json @@ -0,0 +1,29 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Author", + "description": "An author", + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "object" + } + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "items", + "firstName", + "lastName", + "id" + ] +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 77cf615a98..db62629081 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,7 @@ immutables jackson + jackson-annotations java-cassandra javaxval jee7 From 6a992a9b070bca9729e0b25cff11356520409798 Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Tue, 6 Dec 2016 13:45:11 +0000 Subject: [PATCH 247/399] Update POM --- jackson-annotations/pom.xml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/jackson-annotations/pom.xml b/jackson-annotations/pom.xml index 98d4cc9a87..4da0522a5b 100644 --- a/jackson-annotations/pom.xml +++ b/jackson-annotations/pom.xml @@ -9,7 +9,6 @@ jar jackson-annotations - http://www.baeldung.com @@ -46,8 +45,6 @@ ${commons-lang3.version} - - @@ -95,7 +92,6 @@ test - io.rest-assured json-schema-validator @@ -103,7 +99,6 @@ test - io.rest-assured json-path @@ -132,20 +127,12 @@ test - - - - - - - ch.qos.logback logback-classic ${logback.version} - @@ -158,7 +145,6 @@ org.slf4j jcl-over-slf4j ${org.slf4j.version} - From 851deed1a17473f5feb912419d871d745295e77e Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 15:46:00 +0200 Subject: [PATCH 248/399] upgrade spring boot --- spring-quartz/pom.xml | 8 +++++--- .../java/org/baeldung/springquartz/SpringQuartzApp.java | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/spring-quartz/pom.xml b/spring-quartz/pom.xml index 709cfb9e3d..2fb4ab0e47 100644 --- a/spring-quartz/pom.xml +++ b/spring-quartz/pom.xml @@ -13,13 +13,15 @@ org.springframework.boot spring-boot-starter-parent - 1.2.6.RELEASE + 1.4.2.RELEASE UTF-8 1.8 + 2.2.3 + 3.6.0 @@ -39,7 +41,7 @@ org.quartz-scheduler quartz - 2.2.1 + ${quartz.version} @@ -64,7 +66,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.1 + ${maven-compiler-plugin.version} 1.8 1.8 diff --git a/spring-quartz/src/main/java/org/baeldung/springquartz/SpringQuartzApp.java b/spring-quartz/src/main/java/org/baeldung/springquartz/SpringQuartzApp.java index 547ef78d84..1cba49b414 100644 --- a/spring-quartz/src/main/java/org/baeldung/springquartz/SpringQuartzApp.java +++ b/spring-quartz/src/main/java/org/baeldung/springquartz/SpringQuartzApp.java @@ -1,6 +1,6 @@ package org.baeldung.springquartz; -import org.springframework.boot.SpringApplication; +import org.springframework.boot.Banner.Mode; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableScheduling; @@ -10,6 +10,6 @@ import org.springframework.scheduling.annotation.EnableScheduling; public class SpringQuartzApp { public static void main(String[] args) { - new SpringApplicationBuilder(SpringQuartzApp.class).showBanner(false).run(args); + new SpringApplicationBuilder(SpringQuartzApp.class).bannerMode(Mode.OFF).run(args); } } From afe3cba9c392f2fc454fbc09b669c30e36be577a Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Tue, 6 Dec 2016 13:47:42 +0000 Subject: [PATCH 249/399] Update tests --- .../deserialization/jacksoninject/JacksonInjectTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/JacksonInjectTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/JacksonInjectTest.java index 7c9436d711..8b0e9a9688 100644 --- a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/JacksonInjectTest.java +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/JacksonInjectTest.java @@ -32,7 +32,6 @@ public class JacksonInjectTest { // assert assertThat(author.getId()).isEqualTo(id); - /* { "firstName": "Alex", From 71ae5b5dee95819d10f3444782abd49a5e2cb5bc Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Tue, 6 Dec 2016 13:49:59 +0000 Subject: [PATCH 250/399] Remove unecessary calls to super() --- .../deserialization/jacksoninject/Author.java | 5 ++--- .../deserialization/jsondeserialize/Book.java | 4 +--- .../jacksonannotation/deserialization/jsonsetter/Author.java | 4 +--- .../jacksonannotation/serialization/jsonserialize/Book.java | 4 +--- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Author.java index 2d816282b2..2fcb1bbf32 100644 --- a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Author.java +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jacksoninject/Author.java @@ -15,9 +15,8 @@ public class Author extends Person { List items = new ArrayList<>(); - public Author(){ - super(); - } + public Author(){} + public Author(String firstName, String lastName) { super(firstName, lastName); } diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Book.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Book.java index eb2c1c967c..b4cf1227cc 100644 --- a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Book.java +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsondeserialize/Book.java @@ -19,9 +19,7 @@ public class Book extends Item { private Date published; private BigDecimal pages; - public Book() { - super(); - } + public Book() {} public Book(String title, Author author) { super(title, author); diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/Author.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/Author.java index 534984f731..87767a11e3 100644 --- a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/Author.java +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/deserialization/jsonsetter/Author.java @@ -18,9 +18,7 @@ public class Author extends Person { private List items = new ArrayList<>(); - public Author(){ - super(); - } + public Author(){} public Author(String firstName, String lastName) { super(firstName, lastName); diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Book.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Book.java index a8a05b093c..6d003da903 100644 --- a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Book.java +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/serialization/jsonserialize/Book.java @@ -19,9 +19,7 @@ public class Book extends Item { private Date published; private BigDecimal pages; - public Book(){ - super(); - } + public Book(){} public Book(String title, Author author) { super(title, author); From e5dc84e8e84d632e866f20792637362d99f9da40 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 15:56:13 +0200 Subject: [PATCH 251/399] upgrade dependencies --- spring-protobuf/pom.xml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/spring-protobuf/pom.xml b/spring-protobuf/pom.xml index a080d51221..84ebeff9ae 100644 --- a/spring-protobuf/pom.xml +++ b/spring-protobuf/pom.xml @@ -5,23 +5,28 @@ spring-protobuf 0.1-SNAPSHOT spring-protobuf - + org.springframework.boot spring-boot-starter-parent - 1.2.4.RELEASE + 1.4.2.RELEASE + + 3.1.0 + 1.4 + + com.google.protobuf protobuf-java - 3.0.0-beta-3 + ${protobuf-java.version} com.googlecode.protobuf-java-format protobuf-java-format - 1.4 + ${protobuf-java-format.version} From 99ecc84e3d51e566773a83369fb9d5277303d1b4 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 16:10:47 +0200 Subject: [PATCH 252/399] upgrade dependencies --- spring-mvc-xml/pom.xml | 46 ++++++++++++++++++++++++++++-------------- spring-openid/pom.xml | 2 +- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/spring-mvc-xml/pom.xml b/spring-mvc-xml/pom.xml index ca51a56633..f0e4bbff55 100644 --- a/spring-mvc-xml/pom.xml +++ b/spring-mvc-xml/pom.xml @@ -28,21 +28,21 @@ javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet.version} provided javax.servlet jstl - 1.2 + ${jstl.version} runtime org.hibernate hibernate-validator - 5.1.1.Final + ${hibernate-validator.version} @@ -110,12 +110,12 @@ commons-io commons-io - 2.2 + ${commons-io.version} com.maxmind.geoip2 geoip2 - 2.8.0 + ${geoip2.version} @@ -165,29 +165,45 @@ - 4.2.5.RELEASE - 2.7.8 + 4.3.4.RELEASE + 4.2.0.RELEASE + + + 5.2.5.Final + 5.1.40 + + + 4.4.5 + 4.5.2 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 + + + 5.3.3.Final + 1.2 + 3.1.0 + 2.8.5 + + + 19.0 + 3.5 + 2.5 + 2.8.0 1.3 4.12 1.10.19 - 4.4.1 - 4.5 - 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 - 2.7 - 1.4.18 + 1.6.1 diff --git a/spring-openid/pom.xml b/spring-openid/pom.xml index 39cf3e9d4e..6646cdea14 100644 --- a/spring-openid/pom.xml +++ b/spring-openid/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE From a39ad99538e4a1f4800dcc3780c5f6b5407db15c Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 16:37:25 +0200 Subject: [PATCH 253/399] upgrade dependencies --- spring-mvc-web-vs-initializer/pom.xml | 41 +++------------------------ 1 file changed, 4 insertions(+), 37 deletions(-) diff --git a/spring-mvc-web-vs-initializer/pom.xml b/spring-mvc-web-vs-initializer/pom.xml index b448673ef8..c8bb08cb38 100644 --- a/spring-mvc-web-vs-initializer/pom.xml +++ b/spring-mvc-web-vs-initializer/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.6.RELEASE + 1.4.2.RELEASE @@ -94,7 +94,6 @@ org.assertj assertj-core - 3.5.1 test @@ -118,7 +117,7 @@ org.easymock easymock - 3.4 + ${easymock.version} test @@ -158,7 +157,6 @@ org.apache.maven.plugins maven-surefire-plugin - ${maven-surefire-plugin.version} **/*IntegrationTest.java @@ -206,42 +204,11 @@ - 4.3.1.RELEASE - 4.0.4.RELEASE - 3.20.0-GA - 1.2 - - - 4.3.11.Final - 5.1.38 - - - 1.7.13 - 1.1.3 - - - 5.2.2.Final + 4.3.4.RELEASE 19.0 - 3.4 - - - 1.3 - 4.12 - 1.10.19 - - 4.4.1 - 4.5 - - 2.9.0 - - - 3.5.1 - 2.6 - 2.19.1 - 2.7 - 1.4.18 + 3.4 From 3f3275147c9afb6896d23dec8565ba6a8994a029 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 16:51:16 +0200 Subject: [PATCH 254/399] upgrade dependencies --- spring-mvc-velocity/pom.xml | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/spring-mvc-velocity/pom.xml b/spring-mvc-velocity/pom.xml index 83f3150df9..31f2d19375 100644 --- a/spring-mvc-velocity/pom.xml +++ b/spring-mvc-velocity/pom.xml @@ -38,20 +38,20 @@ javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet-api.version} provided org.apache.velocity velocity - 1.7 + ${velocity.version} org.apache.velocity velocity-tools - 2.0 + ${velocity-tools.version} @@ -188,26 +188,29 @@ - 4.1.4.RELEASE + 4.3.4.RELEASE - + 1.3 4.12 1.10.19 - 1.6.4 + 1.6.6 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 - 2.4.1 + 3.1.0 + 1.7 + 2.0 + 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 From db352d2e63cf84ac0951165a1b1cf869c958fdc6 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 16:59:47 +0200 Subject: [PATCH 255/399] upgrade dependencies --- spring-mvc-tiles/pom.xml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/spring-mvc-tiles/pom.xml b/spring-mvc-tiles/pom.xml index 1a72549e70..400f79fbe1 100644 --- a/spring-mvc-tiles/pom.xml +++ b/spring-mvc-tiles/pom.xml @@ -9,8 +9,14 @@ Integrating Spring MVC with Apache Tiles - 4.3.2.RELEASE - 3.0.5 + 4.3.4.RELEASE + 3.0.7 + 3.1.0 + 2.3.1 + 1.2 + + 3.6.0 + 2.6 @@ -34,24 +40,24 @@ org.apache.tiles tiles-jsp - ${apachetiles.version} + ${apache-tiles.version} javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet-api.version} javax.servlet.jsp javax.servlet.jsp-api - 2.3.1 + ${javax.servlet.jsp-api.version} javax.servlet jstl - 1.2 + ${jstl.version} @@ -62,16 +68,16 @@ org.apache.maven.plugins maven-compiler-plugin - 3.2 + ${maven-compiler-plugin.version} - 1.7 - 1.7 + 1.8 + 1.8 org.apache.maven.plugins maven-war-plugin - 2.4 + ${maven-war-plugin.version} src/main/webapp spring-mvc-tiles From f621b66a51dfea6991333c5656d5b6e3dc535c4c Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 17:04:19 +0200 Subject: [PATCH 256/399] upgrade dependencies --- spring-mvc-no-xml/pom.xml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/spring-mvc-no-xml/pom.xml b/spring-mvc-no-xml/pom.xml index 202aee7295..4437661199 100644 --- a/spring-mvc-no-xml/pom.xml +++ b/spring-mvc-no-xml/pom.xml @@ -27,14 +27,14 @@ javax.servlet javax.servlet-api - 3.0.1 + ${javax.servlet-api.version} provided javax.servlet jstl - 1.2 + ${jstl.version} runtime @@ -144,28 +144,31 @@ - 4.2.5.RELEASE + 4.3.4.RELEASE - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 1.3 4.12 1.10.19 - 4.4.1 - 4.5 + 3.1.0 + 1.2 + + 4.4.5 + 4.5.2 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 From 8f9f3bdfee0ff98e32cad1b910707ecd26c0d4b3 Mon Sep 17 00:00:00 2001 From: Egima profile Date: Tue, 6 Dec 2016 23:55:33 +0300 Subject: [PATCH 257/399] Added new code snippets to OptionalTest to further demo filter API (#881) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps * fixed network interface tests * removed filetest change * made changes to NIO2 FileTest names * added project for asyncronous channel apis * added project for NIO2 advanced filesystems APIS * merge conflicts * merged changes to asyncfiletest with future get API * removed while loops from async client and server * added project for java8 optional * fixed merge conflicts in spring-core * fixed optional * fixed optional * fixed asyncechotest * shifted optional to own package * made additional tests to demo filter API --- .../java/com/baeldung/optional/Modem.java | 13 +++++++ .../{java_8_features => optional}/Person.java | 2 +- .../java/nio2/async/AsyncEchoTest.java | 2 +- .../baeldung/java8/optional/OptionalTest.java | 34 +++++++++++++++++-- 4 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/optional/Modem.java rename core-java/src/main/java/com/baeldung/{java_8_features => optional}/Person.java (95%) diff --git a/core-java/src/main/java/com/baeldung/optional/Modem.java b/core-java/src/main/java/com/baeldung/optional/Modem.java new file mode 100644 index 0000000000..c37739819c --- /dev/null +++ b/core-java/src/main/java/com/baeldung/optional/Modem.java @@ -0,0 +1,13 @@ +package com.baeldung.optional; + +public class Modem { + private Double price; + + public Modem(Double price) { + this.price = price; + } + + public Double getPrice() { + return price; + } +} diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Person.java b/core-java/src/main/java/com/baeldung/optional/Person.java similarity index 95% rename from core-java/src/main/java/com/baeldung/java_8_features/Person.java rename to core-java/src/main/java/com/baeldung/optional/Person.java index 82b6819699..47473c29ea 100644 --- a/core-java/src/main/java/com/baeldung/java_8_features/Person.java +++ b/core-java/src/main/java/com/baeldung/optional/Person.java @@ -1,4 +1,4 @@ -package com.baeldung.java_8_features; +package com.baeldung.optional; import java.util.Optional; diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java index 93cb3e1eb6..9e20a7144f 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java @@ -33,4 +33,4 @@ public class AsyncEchoTest { client.stop(); } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index 1038043d49..672c4f4aba 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -11,7 +11,8 @@ import java.util.Optional; import org.junit.Test; -import com.baeldung.java_8_features.Person; +import com.baeldung.optional.Person; +import com.baeldung.optional.Modem; public class OptionalTest { // creating Optional @@ -95,7 +96,36 @@ public class OptionalTest { boolean is2017 = yearOptional.filter(y -> y == 2017).isPresent(); assertFalse(is2017); } + @Test + public void whenFiltersWithoutOptional_thenCorrect() { + assertTrue(priceIsInRange1(new Modem(10.0))); + assertFalse(priceIsInRange1(new Modem(9.9))); + assertFalse(priceIsInRange1(new Modem(null))); + assertFalse(priceIsInRange1(new Modem(15.5))); + } + + @Test + public void whenFiltersWithOptional_thenCorrect() { + assertTrue(priceIsInRange2(new Modem(10.0))); + assertFalse(priceIsInRange2(new Modem(9.9))); + assertFalse(priceIsInRange2(new Modem(null))); + assertFalse(priceIsInRange2(new Modem(15.5))); + } + + public boolean priceIsInRange1(Modem modem) { + boolean isInRange = false; + if (modem != null && modem.getPrice() != null && (modem.getPrice() >= 10 && modem.getPrice() <= 15)) { + isInRange = true; + } + return isInRange; + } + + public boolean priceIsInRange2(Modem modem2) { + Optional modemOptional = Optional.ofNullable(modem2); + boolean isInRange = modemOptional.filter(modem -> Optional.ofNullable(modem.getPrice()).orElse(-1.0) >= 10 && modem.getPrice() <= 15).isPresent(); + return isInRange; + } // Transforming Value With map() @Test public void givenOptional_whenMapWorks_thenCorrect() { @@ -203,4 +233,4 @@ public class OptionalTest { System.out.println("Getting default value..."); return "Default Value"; } -} +} \ No newline at end of file From 55c2b3a3386322d2d7f9161e628bac95f19c7f44 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Tue, 6 Dec 2016 22:15:21 +0100 Subject: [PATCH 258/399] Refactor Optional examples --- .../baeldung/java8/optional/OptionalTest.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index 672c4f4aba..8aeaf2b9f7 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -1,18 +1,15 @@ package com.baeldung.java8.optional; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import com.baeldung.optional.Modem; +import com.baeldung.optional.Person; +import org.junit.Test; import java.util.Arrays; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; -import org.junit.Test; - -import com.baeldung.optional.Person; -import com.baeldung.optional.Modem; +import static org.junit.Assert.*; public class OptionalTest { // creating Optional @@ -122,9 +119,11 @@ public class OptionalTest { } public boolean priceIsInRange2(Modem modem2) { - Optional modemOptional = Optional.ofNullable(modem2); - boolean isInRange = modemOptional.filter(modem -> Optional.ofNullable(modem.getPrice()).orElse(-1.0) >= 10 && modem.getPrice() <= 15).isPresent(); - return isInRange; + return Optional.ofNullable(modem2) + .map(Modem::getPrice) + .filter(p -> p >= 10) + .filter(p -> p <= 15) + .isPresent(); } // Transforming Value With map() @Test From 0099c22654c5f62daa3fa71664978fefcf9d9608 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 23:52:34 +0200 Subject: [PATCH 259/399] upgrade and cleanup --- spring-mvc-java/pom.xml | 38 +++++++------- .../htmlunit/HtmlUnitWebScraping.java | 50 ++++++++++--------- .../GreetControllerIntegrationTest.java | 6 +-- .../controller/GreetControllerUnitTest.java | 2 +- 4 files changed, 51 insertions(+), 45 deletions(-) diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index 8e2db044a6..3c1e44d13a 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -47,13 +47,13 @@ javax.servlet javax.servlet-api - 3.0.1 + ${javax.servlet-api.version} provided javax.servlet jstl - 1.2 + ${jstl.version} runtime @@ -78,7 +78,7 @@ commons-fileupload commons-fileupload - 1.3.1 + ${commons-fileupload.version} net.sourceforge.htmlunit @@ -150,7 +150,7 @@ com.jayway.jsonpath json-path - 2.2.0 + ${jsonpath.version} test @@ -184,7 +184,7 @@ maven-resources-plugin - 2.7 + ${maven-resources-plugin.version} @@ -250,42 +250,46 @@ 4.3.4.RELEASE 4.2.0.RELEASE - 2.1.4.RELEASE - 2.7.8 + 2.1.5.RELEASE + 2.8.5 - 4.3.11.Final - 5.1.38 + 5.2.5.Final + 5.1.40 1.7.21 - 1.1.5 + 1.1.7 - 5.2.2.Final + 5.3.3.Final + 3.1.0 + 1.2 19.0 - 3.4 + 3.5 + 1.3.2 + 2.2.0 1.3 4.12 1.10.19 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 2.9.0 2.23 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 - 1.8.7 + 1.8.9 diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java index f97bedddef..327bfc4596 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java @@ -2,6 +2,11 @@ package com.baeldung.htmlunit; import java.util.List; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlAnchor; import com.gargoylesoftware.htmlunit.html.HtmlHeading1; @@ -9,34 +14,31 @@ import com.gargoylesoftware.htmlunit.html.HtmlPage; public class HtmlUnitWebScraping { - private WebClient webClient; + private WebClient webClient; - @Before - public void init() throws Exception { - webClient = new WebClient(); - } + @Before + public void init() throws Exception { + webClient = new WebClient(); + } - @After - public void close() throws Exception { - webClient.close(); - } + @After + public void close() throws Exception { + webClient.close(); + } - @Test - public void givenBaeldungArchive_whenRetrievingArticle_thenHasH1() - throws Exception { - webClient.getOptions().setCssEnabled(false); - webClient.getOptions().setJavaScriptEnabled(false); + @Test + public void givenBaeldungArchive_whenRetrievingArticle_thenHasH1() throws Exception { + webClient.getOptions().setCssEnabled(false); + webClient.getOptions().setJavaScriptEnabled(false); - String url = "http://www.baeldung.com/full_archive"; - HtmlPage page = webClient.getPage(url); - String xpath = "(//ul[@class='car-monthlisting']/li)[1]/a"; - HtmlAnchor latestPostLink - = (HtmlAnchor) page.getByXPath(xpath).get(0); - HtmlPage postPage = latestPostLink.click(); + final String url = "http://www.baeldung.com/full_archive"; + final HtmlPage page = webClient.getPage(url); + final String xpath = "(//ul[@class='car-monthlisting']/li)[1]/a"; + final HtmlAnchor latestPostLink = (HtmlAnchor) page.getByXPath(xpath).get(0); + final HtmlPage postPage = latestPostLink.click(); - List h1 - = (List) postPage.getByXPath("//h1"); + final List h1 = (List) postPage.getByXPath("//h1"); - Assert.assertTrue(h1.size() > 0); - } + Assert.assertTrue(h1.size() > 0); + } } diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java index db984eadfb..ca8c37175e 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java @@ -32,7 +32,7 @@ public class GreetControllerIntegrationTest { private MockMvc mockMvc; - private static final String CONTENT_TYPE = "application/json"; + private static final String CONTENT_TYPE = "application/json;charset=UTF-8"; @Before public void setup() throws Exception { @@ -41,7 +41,7 @@ public class GreetControllerIntegrationTest { @Test public void givenWAC_whenServletContext_thenItProvidesGreetController() { - ServletContext servletContext = wac.getServletContext(); + final ServletContext servletContext = wac.getServletContext(); Assert.assertNotNull(servletContext); Assert.assertTrue(servletContext instanceof MockServletContext); Assert.assertNotNull(wac.getBean("greetController")); @@ -54,7 +54,7 @@ public class GreetControllerIntegrationTest { @Test public void givenGreetURI_whenMockMVC_thenVerifyResponse() throws Exception { - MvcResult mvcResult = this.mockMvc.perform(MockMvcRequestBuilders.get("/greet")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World!!!")).andReturn(); + final MvcResult mvcResult = this.mockMvc.perform(MockMvcRequestBuilders.get("/greet")).andDo(print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.jsonPath("$.message").value("Hello World!!!")).andReturn(); Assert.assertEquals(CONTENT_TYPE, mvcResult.getResponse().getContentType()); } diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerUnitTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerUnitTest.java index eacd256438..0475bd933d 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerUnitTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerUnitTest.java @@ -16,7 +16,7 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; public class GreetControllerUnitTest { private MockMvc mockMvc; - private static final String CONTENT_TYPE = "application/json"; + private static final String CONTENT_TYPE = "application/json;charset=UTF-8"; @Before public void setup() { From e1601b82aebab201415e603d38e90d61c433f727 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 6 Dec 2016 23:59:45 +0200 Subject: [PATCH 260/399] upgrade xml schema --- spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml b/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml index b9e15c7bae..febac349b0 100644 --- a/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml +++ b/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml @@ -1,8 +1,8 @@ From a4bccbf184a52b821e1bea6111ad0f606c1d5df0 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 7 Dec 2016 00:18:52 +0200 Subject: [PATCH 261/399] upgrade dependencies --- spring-katharsis/pom.xml | 8 ++++---- spring-mockito/pom.xml | 5 +++-- spring-mvc-email/pom.xml | 5 +---- spring-mvc-forms/pom.xml | 8 ++++---- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/spring-katharsis/pom.xml b/spring-katharsis/pom.xml index e2e3ea6f97..32f24231a9 100644 --- a/spring-katharsis/pom.xml +++ b/spring-katharsis/pom.xml @@ -8,7 +8,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE @@ -61,9 +61,9 @@ 1.8 - 1.0.0 - 2.4.0 - 1.6.0 + 1.0.1 + 2.9.0 + 1.6.1 diff --git a/spring-mockito/pom.xml b/spring-mockito/pom.xml index c8e0d3b7f5..ca9bad2bc0 100644 --- a/spring-mockito/pom.xml +++ b/spring-mockito/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE @@ -30,7 +30,7 @@ org.mockito mockito-all - 1.10.19 + ${mockito.version} @@ -91,6 +91,7 @@ UTF-8 1.8 + 1.10.19 diff --git a/spring-mvc-email/pom.xml b/spring-mvc-email/pom.xml index 0d3acec1fe..a04097e027 100644 --- a/spring-mvc-email/pom.xml +++ b/spring-mvc-email/pom.xml @@ -11,7 +11,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -24,18 +24,15 @@ org.springframework.boot spring-boot-starter-mail - 1.4.0.RELEASE org.apache.tomcat.embed tomcat-embed-jasper - 8.5.4 javax.servlet jstl - 1.2 diff --git a/spring-mvc-forms/pom.xml b/spring-mvc-forms/pom.xml index 370fd7feb2..c0cac4d349 100644 --- a/spring-mvc-forms/pom.xml +++ b/spring-mvc-forms/pom.xml @@ -84,14 +84,14 @@ - 4.0.6.RELEASE - 2.4 + 4.3.4.RELEASE + 2.6 1.2 2.3.1 3.1.0 - 3.5.1 + 3.6.0 1.8 - 5.1.1.Final + 5.3.3.Final enter-location-of-server From c9385755ece4ca5a726fb9c94a7d661bf18ddaa7 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 7 Dec 2016 00:38:58 +0200 Subject: [PATCH 262/399] upgrade dependencies --- spring-jpa/pom.xml | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/spring-jpa/pom.xml b/spring-jpa/pom.xml index cf0c2246af..2229d64abe 100644 --- a/spring-jpa/pom.xml +++ b/spring-jpa/pom.xml @@ -43,7 +43,7 @@ xml-apis xml-apis - 1.4.01 + ${xml-apis.version} org.javassist @@ -77,7 +77,7 @@ javax.el javax.el-api - 2.2.5 + ${javax.el-api.version} @@ -196,47 +196,48 @@ - 4.3.2.RELEASE - 3.20.0-GA + 4.3.4.RELEASE + 3.21.0-GA - 5.2.2.Final - 5.1.38 - 1.10.2.RELEASE - 1.4.192 + 5.2.5.Final + 5.1.40 + 1.10.5.RELEASE + 1.4.193 1.2 2.5 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final + 5.3.3.Final + 1.4.01 + 2.2.5 19.0 - 3.4 + 3.5 1.3 4.12 1.10.19 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 2.9.0 - 3.5.1 + 3.6.0 2.19.1 2.7 - 1.4.18 - 2.4 - + 1.6.1 + 2.6 From d564cd3d8dbecd68dbdf48b5816f2b6042e5d7b0 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Wed, 7 Dec 2016 07:55:47 +0100 Subject: [PATCH 263/399] Refactor Optional examples --- .../src/test/java/com/baeldung/java8/optional/OptionalTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index 8aeaf2b9f7..c0538931b0 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -99,6 +99,7 @@ public class OptionalTest { assertFalse(priceIsInRange1(new Modem(9.9))); assertFalse(priceIsInRange1(new Modem(null))); assertFalse(priceIsInRange1(new Modem(15.5))); + assertFalse(priceIsInRange1(null)); } @@ -108,6 +109,7 @@ public class OptionalTest { assertFalse(priceIsInRange2(new Modem(9.9))); assertFalse(priceIsInRange2(new Modem(null))); assertFalse(priceIsInRange2(new Modem(15.5))); + assertFalse(priceIsInRange1(null)); } public boolean priceIsInRange1(Modem modem) { From 0ceb6db1e5f1f2e7cacafc1a54c1a5b2510cefe7 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 7 Dec 2016 14:19:40 +0200 Subject: [PATCH 264/399] upgrade and cleanup --- spring-jooq/pom.xml | 33 +++++++++++-------- .../springboot/SpringBootIntegrationTest.java | 18 +++++----- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/spring-jooq/pom.xml b/spring-jooq/pom.xml index bf60acd6f6..bf0dffd68c 100644 --- a/spring-jooq/pom.xml +++ b/spring-jooq/pom.xml @@ -11,7 +11,7 @@ org.springframework.boot spring-boot-dependencies - 1.3.5.RELEASE + 1.4.2.RELEASE pom import @@ -23,14 +23,12 @@ org.jooq jooq - ${org.jooq.version} com.h2database h2 - ${com.h2database.version} @@ -70,6 +68,11 @@ spring-test test + + org.springframework.boot + spring-boot-starter-test + + @@ -77,7 +80,7 @@ org.codehaus.mojo properties-maven-plugin - 1.0.0 + ${properties-maven-plugin.version} initialize @@ -96,7 +99,7 @@ org.codehaus.mojo sql-maven-plugin - 1.5 + ${sql-maven-plugin.version} initialize @@ -179,7 +182,7 @@ org.eclipse.m2e lifecycle-mapping - 1.0.0 + ${lifecycle-mapping.version} @@ -244,15 +247,19 @@ - 3.7.3 - 1.4.191 - 4.2.5.RELEASE - 1.7.18 - 1.1.3 + 3.8.6 + 1.4.193 + 4.3.4.RELEASE + 1.7.21 + 1.1.7 4.12 - 3.5.1 - 2.19.1 + 3.6.0 + 2.19.1 + 1.0.0 + 1.5 + 1.0.0 + \ No newline at end of file diff --git a/spring-jooq/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java b/spring-jooq/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java index fa3f342ecd..25317309ee 100644 --- a/spring-jooq/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java +++ b/spring-jooq/src/test/java/com/baeldung/jooq/springboot/SpringBootIntegrationTest.java @@ -1,5 +1,10 @@ package com.baeldung.jooq.springboot; +import static com.baeldung.jooq.introduction.db.public_.tables.Author.AUTHOR; +import static com.baeldung.jooq.introduction.db.public_.tables.AuthorBook.AUTHOR_BOOK; +import static com.baeldung.jooq.introduction.db.public_.tables.Book.BOOK; +import static org.junit.Assert.assertEquals; + import org.jooq.DSLContext; import org.jooq.Record3; import org.jooq.Result; @@ -7,19 +12,14 @@ import org.jooq.impl.DSL; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.dao.DataAccessException; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; -import static com.baeldung.jooq.introduction.db.public_.tables.Author.AUTHOR; -import static com.baeldung.jooq.introduction.db.public_.tables.AuthorBook.AUTHOR_BOOK; -import static com.baeldung.jooq.introduction.db.public_.tables.Book.BOOK; -import static org.junit.Assert.assertEquals; - -@SpringApplicationConfiguration(Application.class) +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) @Transactional("transactionManager") -@RunWith(SpringJUnit4ClassRunner.class) public class SpringBootIntegrationTest { @Autowired From 3c2b0ca14144dd1aa23561bb66441a36065d2092 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 7 Dec 2016 14:51:06 +0200 Subject: [PATCH 265/399] upgrade and cleanup --- spring-hibernate4/pom.xml | 35 +++++++--------- .../src/main/resources/webSecurityConfig.xml | 4 +- spring-integration/pom.xml | 42 ++++++++++--------- spring-jms/pom.xml | 11 +++-- 4 files changed, 46 insertions(+), 46 deletions(-) diff --git a/spring-hibernate4/pom.xml b/spring-hibernate4/pom.xml index d4dabcc274..ead46fa02a 100644 --- a/spring-hibernate4/pom.xml +++ b/spring-hibernate4/pom.xml @@ -53,11 +53,6 @@ jta ${jta.version} - - javax.el - javax.el-api - ${el-api.version} - mysql mysql-connector-java @@ -80,7 +75,7 @@ javax.el javax.el-api - 2.2.5 + ${javax.el-api.version} @@ -152,7 +147,7 @@ org.hsqldb hsqldb - 2.3.4 + ${hsqldb.version} test @@ -199,29 +194,29 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE - 1.9.2.RELEASE - 3.20.0-GA + 4.3.4.RELEASE + 4.2.0.RELEASE + 1.10.5.RELEASE 4.3.11.Final ${hibernate.version} - 5.1.38 - 8.0.30 + 5.1.40 + 8.5.8 1.1 - 2.2.4 + 2.3.4 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final + 5.3.3.Final + 2.2.5 19.0 - 3.4 + 3.5 1.3 @@ -234,10 +229,10 @@ 2.9.0 - 3.5.1 + 3.6.0 2.19.1 2.7 - 1.4.18 + 1.6.1 diff --git a/spring-hibernate4/src/main/resources/webSecurityConfig.xml b/spring-hibernate4/src/main/resources/webSecurityConfig.xml index d9423d31e7..e5c19a4ad7 100644 --- a/spring-hibernate4/src/main/resources/webSecurityConfig.xml +++ b/spring-hibernate4/src/main/resources/webSecurityConfig.xml @@ -1,8 +1,8 @@ diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml index b33f8bd740..6083afcf76 100644 --- a/spring-integration/pom.xml +++ b/spring-integration/pom.xml @@ -16,9 +16,16 @@ UTF-8 - 2.2.4.RELEASE + 4.3.5.RELEASE + 1.1.4.RELEASE + 1.4.7 + 1.1.1 1.2.17 - 4.11 + 4.12 + + 2.10 + 3.6.0 + 1.5.0 @@ -33,7 +40,7 @@ maven-eclipse-plugin - 2.9 + ${maven-eclipse-plugin.version} org.springframework.ide.eclipse.core.springnature @@ -48,10 +55,10 @@ org.apache.maven.plugins maven-compiler-plugin - 3.1 + ${maven-compiler-plugin.version} - 1.6 - 1.6 + 1.8 + 1.8 -Xlint:all true true @@ -60,7 +67,7 @@ org.codehaus.mojo exec-maven-plugin - 1.2.1 + ${exec-maven-plugin.version} com.baeldung.samples.Main @@ -81,18 +88,18 @@ org.springframework.integration spring-integration-core - 4.3.4.RELEASE + ${spring.integration.version} javax.activation activation - 1.1.1 + ${javax-activation.version} true javax.mail mail - 1.4.7 + ${javax-mail.version} log4j @@ -102,32 +109,27 @@ org.springframework.integration spring-integration-twitter - 4.3.4.RELEASE + ${spring.integration.version} org.springframework.integration spring-integration-mail - 4.3.4.RELEASE + ${spring.integration.version} org.springframework.integration spring-integration-ftp - 4.3.4.RELEASE + ${spring.integration.version} org.springframework.social spring-social-core - 1.1.4.RELEASE + ${spring-social.version} org.springframework.integration spring-integration-file - 4.3.4.RELEASE - - - junit - junit - 4.12 + ${spring.integration.version} diff --git a/spring-jms/pom.xml b/spring-jms/pom.xml index 8e83f82f38..de7c734316 100644 --- a/spring-jms/pom.xml +++ b/spring-jms/pom.xml @@ -9,9 +9,12 @@ Introduction to Spring JMS - 4.3.2.RELEASE - 5.12.0 + 4.3.4.RELEASE + 5.14.1 4.12 + + 3.6.0 + 2.6 @@ -41,7 +44,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.2 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -50,7 +53,7 @@ org.apache.maven.plugins maven-war-plugin - 2.4 + ${maven-war-plugin.version} src/main/webapp spring-jms From 34ed901645f8e707a14ef393ab5ef6cd471055fa Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 7 Dec 2016 15:12:41 +0200 Subject: [PATCH 266/399] upgrade dependencies --- spring-exceptions/pom.xml | 44 ++++++++++--------- .../Cause4MappingExceptionManualTest.java | 4 +- spring-freemarker/pom.xml | 9 ++-- spring-hibernate3/pom.xml | 28 ++++++------ 4 files changed, 44 insertions(+), 41 deletions(-) diff --git a/spring-exceptions/pom.xml b/spring-exceptions/pom.xml index 6994a518fe..a8254151aa 100644 --- a/spring-exceptions/pom.xml +++ b/spring-exceptions/pom.xml @@ -69,7 +69,7 @@ javax.servlet javax.servlet-api - 3.0.1 + ${javax.servlet-api.version} provided @@ -133,28 +133,28 @@ javax.el el-api - 2.2 + ${javax.el.version} org.apache.derby derby - 10.12.1.1 + ${derby.version} org.apache.derby derbyclient - 10.12.1.1 + ${derby.version} org.apache.derby derbynet - 10.12.1.1 + ${derby.version} org.apache.derby derbytools - 10.12.1.1 + ${derby.version} @@ -208,44 +208,46 @@ - 4.3.2.RELEASE - 4.1.1.RELEASE - 3.20.0-GA + 4.3.4.RELEASE + 4.2.0.RELEASE + 3.21.0-GA 1.2 - 4.3.11.Final - 5.1.38 - 7.0.42 + 5.2.5.Final + 5.1.40 + 7.0.73 + 10.13.1.1 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final + 5.3.3.Final + 3.1.0 + 2.2 19.0 - 3.4 + 3.5 1.3 4.12 1.10.19 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 2.9.0 - 1.8.9 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.4.18 + 1.6.1 diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java index 760d082f54..ea90b3d6cc 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/mappingexception/Cause4MappingExceptionManualTest.java @@ -7,9 +7,9 @@ import java.util.Properties; import org.baeldung.ex.mappingexception.cause4.persistence.model.Foo; import org.hibernate.Session; import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; -import org.hibernate.service.ServiceRegistryBuilder; import org.junit.Test; public class Cause4MappingExceptionManualTest { @@ -35,7 +35,7 @@ public class Cause4MappingExceptionManualTest { configuration.addAnnotatedClass(Foo.class); - final ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); + final ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); final SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); return sessionFactory; } diff --git a/spring-freemarker/pom.xml b/spring-freemarker/pom.xml index 51df4e6647..7e61a3f081 100644 --- a/spring-freemarker/pom.xml +++ b/spring-freemarker/pom.xml @@ -9,12 +9,13 @@ 1.8 - 4.2.4.RELEASE + 4.3.4.RELEASE 2.3.23 - 1.1.3 - 1.7.12 + 1.1.7 + 1.7.21 3.1.0 false + 3.6.0 @@ -73,7 +74,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} ${jdk.version} ${jdk.version} diff --git a/spring-hibernate3/pom.xml b/spring-hibernate3/pom.xml index 9f99d83a42..f7b198a2b1 100644 --- a/spring-hibernate3/pom.xml +++ b/spring-hibernate3/pom.xml @@ -181,42 +181,42 @@ - 4.2.5.RELEASE - 4.0.4.RELEASE - 3.20.0-GA + 4.3.4.RELEASE + 4.2.0.RELEASE + 3.21.0-GA 3.6.10.Final - 5.1.38 - 7.0.47 - 1.4.191 + 5.1.40 + 7.0.73 + 1.4.193 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - 5.2.2.Final + 5.3.3.Final 19.0 - 3.4 + 3.5 1.3 4.12 1.10.19 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 2.9.0 - 3.5.1 + 3.6.0 2.19.1 2.7 - 1.4.18 + 1.6.1 From 0de8a91137047a2455962d34c19fec3b3d3f538f Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 7 Dec 2016 19:17:18 +0200 Subject: [PATCH 267/399] upgrade dependencies --- spring-data-neo4j/pom.xml | 19 ++++++++++------ spring-data-redis/pom.xml | 18 ++++++++++------ spring-data-rest/pom.xml | 2 +- spring-data-solr/pom.xml | 12 ++++++----- spring-dispatcher-servlet/pom.xml | 36 +++++++++++++++++++++++-------- 5 files changed, 58 insertions(+), 29 deletions(-) diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index 653dd6b2f6..a151d129a7 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -11,8 +11,13 @@ 1.8 UTF-8 UTF-8 - 3.0.1 - 4.1.1.RELEASE + 3.0.7 + 4.1.5.RELEASE + 1.1 + 1.4.2.RELEASE + 4.3.4.RELEASE + 2.0.5 + 4.12 2.19.1 @@ -26,14 +31,14 @@ com.voodoodyne.jackson.jsog jackson-jsog - 1.1 + ${jackson-jsog.version} compile org.springframework.boot spring-boot-starter-test - 1.3.6.RELEASE + ${spring-boot.version} test @@ -61,7 +66,7 @@ org.neo4j neo4j-ogm-test - 2.0.2 + ${neo4j-ogm-test.version} test @@ -74,12 +79,12 @@ junit junit - 4.12 + ${junit.version} org.springframework spring-test - 4.2.3.RELEASE + ${spring-test.version} diff --git a/spring-data-redis/pom.xml b/spring-data-redis/pom.xml index 6f1fc9294d..9700dd7091 100644 --- a/spring-data-redis/pom.xml +++ b/spring-data-redis/pom.xml @@ -9,9 +9,13 @@ UTF-8 - 4.2.5.RELEASE - 1.6.2.RELEASE - 0.8.0 + 4.3.4.RELEASE + 1.7.5.RELEASE + 3.2.4 + 2.9.0 + 1.2.17 + 4.12 + 0.10.0 2.19.1 @@ -25,19 +29,19 @@ cglib cglib-nodep - 2.2 + ${cglib.version} log4j log4j - 1.2.16 + ${log4j.version} redis.clients jedis - 2.5.1 + ${jedis.version} jar @@ -56,7 +60,7 @@ junit junit - 4.12 + ${junit.version} test diff --git a/spring-data-rest/pom.xml b/spring-data-rest/pom.xml index 5ae694a04f..da5d844211 100644 --- a/spring-data-rest/pom.xml +++ b/spring-data-rest/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.3.RELEASE + 1.4.2.RELEASE diff --git a/spring-data-solr/pom.xml b/spring-data-solr/pom.xml index ec6eb7bf46..e43b3ff774 100644 --- a/spring-data-solr/pom.xml +++ b/spring-data-solr/pom.xml @@ -11,9 +11,11 @@ UTF-8 - 4.2.5.RELEASE + 4.3.4.RELEASE 2.19.1 - 2.0.4.RELEASE + 2.0.5.RELEASE + 1.2.17 + 4.12 @@ -25,7 +27,7 @@ org.springframework.data spring-data-solr - ${spring-data-solr} + ${spring-data-solr.version} org.springframework @@ -35,12 +37,12 @@ log4j log4j - 1.2.16 + ${log4j.version} junit junit - 4.12 + ${junit.version} test diff --git a/spring-dispatcher-servlet/pom.xml b/spring-dispatcher-servlet/pom.xml index 646db663db..13ad062195 100644 --- a/spring-dispatcher-servlet/pom.xml +++ b/spring-dispatcher-servlet/pom.xml @@ -18,33 +18,33 @@ javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet.version} provided org.springframework spring-webmvc - 4.3.3.RELEASE + ${org.springframework.version} org.thymeleaf thymeleaf-spring4 - 3.0.2.RELEASE + ${thymeleaf.version} org.slf4j slf4j-api - 1.7.21 + ${org.slf4j.version} org.apache.logging.log4j log4j-core - 2.7 + ${log4j.version} org.apache.logging.log4j log4j-slf4j-impl - 2.7 + ${log4j.version} @@ -53,7 +53,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -62,7 +62,7 @@ org.apache.maven.plugins maven-war-plugin - 3.0.0 + ${maven-war-plugin.version} false @@ -70,7 +70,7 @@ org.eclipse.jetty jetty-maven-plugin - 9.3.12.v20160915 + ${jetty-maven-plugin.version} / @@ -79,4 +79,22 @@ + + + + 4.3.4.RELEASE + 3.0.2.RELEASE + + + 1.7.21 + 2.7 + + + 3.1.0 + + + 3.6.0 + 3.0.0 + 9.3.14.v20161028 + From 16b79db058e7a563ae1bcaafc8c1fc97d9f31fd5 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Wed, 7 Dec 2016 12:36:12 -0500 Subject: [PATCH 268/399] Added configs in the example --- spring-boot/pom.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index 2620f7d08f..d7eb999ed9 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -111,6 +111,16 @@ org.springframework.boot spring-boot-maven-plugin + + org.baeldung.boot.DemoApplication + ZIP + + + org.jruby + jruby-complete + + + From f3b79ff2141fcf7391c0932130adf9c5d24d0694 Mon Sep 17 00:00:00 2001 From: tschiman Date: Wed, 7 Dec 2016 21:27:57 -0700 Subject: [PATCH 269/399] BAEL-89 Removing spring from integration test and converting to unit test. --- .../spring/session/SessionControllerTest.java | 64 ++++++------------- 1 file changed, 21 insertions(+), 43 deletions(-) diff --git a/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java b/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java index 42d12112a2..f08fec3a1f 100644 --- a/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java +++ b/spring-session/src/test/java/com/baeldung/spring/session/SessionControllerTest.java @@ -1,86 +1,64 @@ package com.baeldung.spring.session; -import org.apache.tomcat.util.codec.binary.Base64; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.http.*; -import org.springframework.test.context.junit4.SpringRunner; +import redis.clients.jedis.Jedis; import java.util.Set; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class SessionControllerTest { - @Autowired - private TestRestTemplate restTemplate; - @Autowired - private JedisConnectionFactory jedisConnectionFactory; - - private RedisConnection connection; + private Jedis jedis; + private TestRestTemplate testRestTemplate; + private TestRestTemplate testRestTemplateWithAuth; + private String testUrl = "http://localhost:8080/"; @Before public void clearRedisData() { - connection = jedisConnectionFactory.getConnection(); - connection.flushAll(); + testRestTemplate = new TestRestTemplate(); + testRestTemplateWithAuth = new TestRestTemplate("admin", "password", null); + + jedis = new Jedis("localhost", 6379); + jedis.flushAll(); } @Test public void testRedisIsEmpty() { - Set result = connection.keys("*".getBytes()); + Set result = jedis.keys("*"); assertEquals(0, result.size()); } @Test public void testUnauthenticatedCantAccess() { - ResponseEntity result = restTemplate.getForEntity("/", String.class); + ResponseEntity result = testRestTemplate.getForEntity(testUrl, String.class); assertEquals(HttpStatus.UNAUTHORIZED, result.getStatusCode()); } @Test public void testRedisControlsSession() { - ResponseEntity result = restTemplate.exchange("/", HttpMethod.GET, makeAuthRequest(), String.class); + ResponseEntity result = testRestTemplateWithAuth.getForEntity(testUrl, String.class); assertEquals("hello admin", result.getBody()); //login worked - Set redisResult = connection.keys("*".getBytes()); + Set redisResult = jedis.keys("*"); assertTrue(redisResult.size() > 0); //redis is populated with session data String sessionCookie = result.getHeaders().get("Set-Cookie").get(0).split(";")[0]; - result = restTemplate.exchange("/", HttpMethod.GET, makeRequestWithCookie(sessionCookie), String.class); + HttpHeaders headers = new HttpHeaders(); + headers.add("Cookie", sessionCookie); + HttpEntity httpEntity = new HttpEntity<>(headers); + + result = testRestTemplate.exchange(testUrl, HttpMethod.GET, httpEntity, String.class); assertEquals("hello admin", result.getBody()); //access with session works worked - connection.flushAll(); //clear all keys in redis + jedis.flushAll(); //clear all keys in redis - result = restTemplate.exchange("/", HttpMethod.GET, makeRequestWithCookie(sessionCookie), String.class); + result = testRestTemplate.exchange(testUrl, HttpMethod.GET, httpEntity, String.class); assertEquals(HttpStatus.UNAUTHORIZED, result.getStatusCode());//access denied after sessions are removed in redis } - - private HttpEntity makeRequestWithCookie(String sessionCookie) { - HttpHeaders headers = new HttpHeaders(); - headers.add("Cookie", sessionCookie); - - return new HttpEntity<>(headers); - } - - private HttpEntity makeAuthRequest() { - String plainCreds = "admin:password"; - byte[] plainCredsBytes = plainCreds.getBytes(); - byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); - String base64Creds = new String(base64CredsBytes); - - HttpHeaders headers = new HttpHeaders(); - headers.add("Authorization", "Basic " + base64Creds); - - return new HttpEntity<>(headers); - } } \ No newline at end of file From 906953e947e6e2aaea9de153e6bca9768bf5f7c8 Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 8 Dec 2016 12:25:34 +0200 Subject: [PATCH 270/399] minor pom cleanup --- spring-boot/pom.xml | 282 +++++++++++++++++++------------------------- 1 file changed, 123 insertions(+), 159 deletions(-) diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index d7eb999ed9..505998efa5 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -1,141 +1,133 @@ - 4.0.0 - com.baeldung - spring-boot - 0.0.1-SNAPSHOT - war - Spring Boot Actuator - This is simple boot application for Spring boot actuator test + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + spring-boot + 0.0.1-SNAPSHOT + war + Spring Boot Actuator + This is simple boot application for Spring boot actuator test - - - org.springframework.boot - spring-boot-starter-parent - 1.4.2.RELEASE - - + + + org.springframework.boot + spring-boot-starter-parent + 1.4.2.RELEASE + + - - - org.baeldung.boot.DemoApplication - UTF-8 - 1.8 - 4.3.4.RELEASE - + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - org.springframework.boot - spring-boot-starter-web - + + org.springframework.boot + spring-boot-starter-data-jpa + - - org.springframework.boot - spring-boot-starter-data-jpa - + + org.springframework.boot + spring-boot-starter-actuator + - - org.springframework.boot - spring-boot-starter-actuator - + + org.springframework.boot + spring-boot-starter-security + - - org.springframework.boot - spring-boot-starter-security - + + io.dropwizard.metrics + metrics-core + - - io.dropwizard.metrics - metrics-core - + + com.h2database + h2 + - - com.h2database - h2 - + + org.springframework.boot + spring-boot-starter-test + test + - - org.springframework.boot - spring-boot-starter-test - test - + + org.springframework.boot + spring-boot-starter + + + com.jayway.jsonpath + json-path + test + + + org.springframework.boot + spring-boot-starter-mail + + + org.subethamail + subethasmtp + 3.1.7 + test + - - org.springframework.boot - spring-boot-starter - - - com.jayway.jsonpath - json-path - test - - - org.springframework.boot - spring-boot-starter-mail - - - org.subethamail - subethasmtp - 3.1.7 - test - + + org.webjars + bootstrap + 3.3.7-1 + + + org.webjars + jquery + 3.1.1 + + - - org.webjars - bootstrap - 3.3.7-1 - - - org.webjars - jquery - 3.1.1 - - + + spring-boot + + + src/main/resources + true + + - - spring-boot - - - src/main/resources - true - - + - + + org.springframework.boot + spring-boot-maven-plugin + + org.baeldung.boot.DemoApplication + ZIP + + + org.jruby + jruby-complete + + + + - - org.springframework.boot - spring-boot-maven-plugin - - org.baeldung.boot.DemoApplication - ZIP - - - org.jruby - jruby-complete - - - - + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - - org.apache.maven.plugins - maven-war-plugin - + + org.apache.maven.plugins + maven-war-plugin + pl.project13.maven @@ -156,7 +148,7 @@ - + @@ -193,41 +185,13 @@ - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - + + + + org.baeldung.boot.DemoApplication + UTF-8 + 1.8 + 4.3.4.RELEASE + From e3c677a305321b0eeb4dc52a5b73278281a88832 Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 8 Dec 2016 19:43:50 +0200 Subject: [PATCH 271/399] simplifying the maven config --- spring-boot/pom.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index 505998efa5..5d29b55a19 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -103,16 +103,6 @@ org.springframework.boot spring-boot-maven-plugin - - org.baeldung.boot.DemoApplication - ZIP - - - org.jruby - jruby-complete - - - From 6619a01814f875c99db982dd3de24c5cd20d404a Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 8 Dec 2016 19:47:41 +0200 Subject: [PATCH 272/399] upgrade dependencies --- spring-data-elasticsearch/pom.xml | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/spring-data-elasticsearch/pom.xml b/spring-data-elasticsearch/pom.xml index dcb702ab16..b38a6a10bc 100644 --- a/spring-data-elasticsearch/pom.xml +++ b/spring-data-elasticsearch/pom.xml @@ -14,12 +14,14 @@ 1.8 1.8 - 4.2.5.RELEASE - - 4.11 - 1.7.12 - 1.1.3 - 2.0.1.RELEASE + 4.3.4.RELEASE + 2.0.5.RELEASE + 4.12 + 1.7.21 + 1.1.7 + 4.2.2 + 2.4.2 + 1.2.21 2.19.1 @@ -32,12 +34,12 @@ org.springframework.data spring-data-elasticsearch - ${elasticsearch.version} + ${spring-data-elasticsearch.version} junit - junit-dep + junit ${junit.version} test @@ -50,7 +52,7 @@ net.java.dev.jna jna - 4.1.0 + ${jna.version} test @@ -78,12 +80,12 @@ org.elasticsearch elasticsearch - 2.3.5 + ${elasticsearch.version} com.alibaba fastjson - 1.2.13 + ${fastjson.version} From 68f89bcec1817c29e2f42879a19ee6679077fa0f Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 8 Dec 2016 20:18:31 +0200 Subject: [PATCH 273/399] upgrade dependencies --- spring-data-dynamodb/pom.xml | 16 ++++++++++------ spring-data-mongodb/pom.xml | 17 +++++++++-------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/spring-data-dynamodb/pom.xml b/spring-data-dynamodb/pom.xml index 11e1366f3e..0ce9b3a399 100644 --- a/spring-data-dynamodb/pom.xml +++ b/spring-data-dynamodb/pom.xml @@ -11,7 +11,7 @@ spring-boot-starter-parent org.springframework.boot - 1.2.3.RELEASE + 1.4.2.RELEASE @@ -20,7 +20,11 @@ com.baeldung.Application UTF-8 1.8 - 4.3.1.RELEASE + 4.3.4.RELEASE + 4.5.2 + 4.4.1 + 1.11.64 + 3.3.7-1 @@ -83,23 +87,23 @@ org.webjars bootstrap - 3.3.4 + ${bootstrap.version} com.amazonaws aws-java-sdk-dynamodb - 1.11.34 + ${aws-java-sdk-dynamodb.version} com.github.derjust spring-data-dynamodb - 4.3.1 + ${spring-data-dynamodb.version} org.apache.httpcomponents httpclient - 4.5.2 + ${httpclient.version} diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index fd212548d0..7d7c9cd590 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -23,7 +23,7 @@ junit - junit-dep + junit ${junit.version} test @@ -106,7 +106,7 @@ maven-compiler-plugin - 2.3.2 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -164,18 +164,19 @@ UTF-8 - 4.2.5.RELEASE + 4.3.4.RELEASE - 1.7.1.RELEASE + 1.8.6.RELEASE 1.3 - 4.11 + 4.12 2.9.0 - 3.6.6 + 3.7.4 1.1.3 - 1.7.12 - 1.1.3 + 1.7.21 + 1.1.7 + 3.6.0 2.19.1 From 4be4e6f53b12725d8face5d3cf8dfbf876c33bca Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 8 Dec 2016 20:59:58 +0200 Subject: [PATCH 274/399] upgrade dependencies --- spring-cucumber/pom.xml | 11 ++- spring-data-cassandra/pom.xml | 123 ++++++++++++++++---------------- spring-data-couchbase-2/pom.xml | 92 ++++++++++++------------ 3 files changed, 113 insertions(+), 113 deletions(-) diff --git a/spring-cucumber/pom.xml b/spring-cucumber/pom.xml index b493962a75..644ddff1d8 100644 --- a/spring-cucumber/pom.xml +++ b/spring-cucumber/pom.xml @@ -14,14 +14,15 @@ org.springframework.boot spring-boot-starter-parent - 1.3.5.RELEASE + 1.4.2.RELEASE UTF-8 1.8 - 1.2.4 + 1.2.5 + 1.3.2 @@ -68,14 +69,11 @@ org.apache.commons commons-io - 1.3.2 + ${commons-io.version} - - - @@ -130,6 +128,5 @@ - diff --git a/spring-data-cassandra/pom.xml b/spring-data-cassandra/pom.xml index 5c1a42b8bd..ef664fef79 100644 --- a/spring-data-cassandra/pom.xml +++ b/spring-data-cassandra/pom.xml @@ -11,19 +11,20 @@ UTF-8 - - 4.2.5.RELEASE - + + 4.3.4.RELEASE 1.3.2.RELEASE - - 4.11 - 1.7.12 - 1.1.3 + + 4.12 + 1.7.21 + 1.1.7 2.1.5 2.1.9.2 - 2.1.9.2 + 2.1.9.2 2.0-0 - 2.19.1 + 19.0 + 3.6.0 + 2.19.1 @@ -39,7 +40,7 @@ junit - junit-dep + junit ${junit.version} test @@ -64,7 +65,7 @@ org.cassandraunit cassandra-unit-shaded - ${cassandra-unit-shaded} + ${cassandra-unit-shaded.version} test @@ -103,58 +104,58 @@ maven-compiler-plugin - 2.3.2 + ${maven-compiler-plugin.version} - 1.7 - 1.7 + 1.8 + 1.8 - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - **/*IntegrationTest.java - **/*LiveTest.java - - - - - + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + diff --git a/spring-data-couchbase-2/pom.xml b/spring-data-couchbase-2/pom.xml index 6716f82246..9284234638 100644 --- a/spring-data-couchbase-2/pom.xml +++ b/spring-data-couchbase-2/pom.xml @@ -1,13 +1,14 @@ - + 4.0.0 org.baeldung spring-data-couchbase-2 0.1-SNAPSHOT spring-data-couchbase-2 jar - + - + org.springframework @@ -20,9 +21,9 @@ ${spring-framework.version} - org.springframework.data - spring-data-couchbase - ${spring-data-couchbase.version} + org.springframework.data + spring-data-couchbase + ${spring-data-couchbase.version} @@ -45,21 +46,21 @@ ${org.slf4j.version} compile - - ch.qos.logback - logback-classic - ${logback.version} - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - + + ch.qos.logback + logback-classic + ${logback.version} + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + @@ -74,43 +75,44 @@ ${junit.version} test - + maven-compiler-plugin - 2.3.2 + ${maven-compiler-plugin.version} - 1.7 - 1.7 + 1.8 + 1.8 - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - **/*IntegrationTest.java - **/*LiveTest.java - - - + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + - 1.7 + 1.8 UTF-8 - 4.2.4.RELEASE - 2.1.1.RELEASE - 5.2.4.Final - 2.9.2 - 1.1.3 - 1.7.12 - 4.11 - 2.19.1 + 4.3.4.RELEASE + 2.1.5.RELEASE + 5.3.3.Final + 2.9.6 + 1.1.7 + 1.7.21 + 4.12 + 3.6.0 + 2.19.1 - + From 9ad2a643efb3448a466b90aeb95726697e34558e Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 8 Dec 2016 22:58:00 +0200 Subject: [PATCH 275/399] upgrade dependencies --- spring-cloud-data-flow/batch-job/pom.xml | 5 +++-- .../data-flow-server/pom.xml | 8 ++++--- .../data-flow-shell/pom.xml | 8 ++++--- spring-cloud-data-flow/log-sink/pom.xml | 5 +++-- spring-cloud-data-flow/time-processor/pom.xml | 5 +++-- spring-cloud-data-flow/time-source/pom.xml | 5 +++-- spring-core/pom.xml | 21 ++++++++++++------- 7 files changed, 35 insertions(+), 22 deletions(-) diff --git a/spring-cloud-data-flow/batch-job/pom.xml b/spring-cloud-data-flow/batch-job/pom.xml index 99e57d4c20..3d05732027 100644 --- a/spring-cloud-data-flow/batch-job/pom.xml +++ b/spring-cloud-data-flow/batch-job/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -22,13 +22,14 @@ UTF-8 UTF-8 1.8 + 1.0.3.RELEASE org.springframework.cloud spring-cloud-task-starter - 1.0.1.RELEASE + ${spring-cloud-task-starter.version} diff --git a/spring-cloud-data-flow/data-flow-server/pom.xml b/spring-cloud-data-flow/data-flow-server/pom.xml index 451a58e12a..689d09ead9 100644 --- a/spring-cloud-data-flow/data-flow-server/pom.xml +++ b/spring-cloud-data-flow/data-flow-server/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -22,6 +22,8 @@ UTF-8 UTF-8 1.8 + 1.1.0.RELEASE + Brixton.SR7 @@ -42,14 +44,14 @@ org.springframework.cloud spring-cloud-dataflow-dependencies - 1.0.0.BUILD-SNAPSHOT + ${spring-cloud-dataflow-dependencies.version} pom import org.springframework.cloud spring-cloud-dependencies - Brixton.SR5 + ${spring-cloud-dependencies.version} pom import diff --git a/spring-cloud-data-flow/data-flow-shell/pom.xml b/spring-cloud-data-flow/data-flow-shell/pom.xml index 31d3dce507..2b825aa363 100644 --- a/spring-cloud-data-flow/data-flow-shell/pom.xml +++ b/spring-cloud-data-flow/data-flow-shell/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -22,6 +22,8 @@ UTF-8 UTF-8 1.8 + 1.1.0.RELEASE + Brixton.SR7 @@ -42,14 +44,14 @@ org.springframework.cloud spring-cloud-dataflow-dependencies - 1.0.0.BUILD-SNAPSHOT + ${spring-cloud-dataflow-dependencies.version} pom import org.springframework.cloud spring-cloud-dependencies - Brixton.SR5 + ${spring-cloud-dependencies.version} pom import diff --git a/spring-cloud-data-flow/log-sink/pom.xml b/spring-cloud-data-flow/log-sink/pom.xml index db488c05ef..6443ed88c8 100644 --- a/spring-cloud-data-flow/log-sink/pom.xml +++ b/spring-cloud-data-flow/log-sink/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -22,6 +22,7 @@ UTF-8 UTF-8 1.8 + Brixton.SR7 @@ -42,7 +43,7 @@ org.springframework.cloud spring-cloud-dependencies - Brixton.SR5 + ${spring-cloud-dependencies.version} pom import diff --git a/spring-cloud-data-flow/time-processor/pom.xml b/spring-cloud-data-flow/time-processor/pom.xml index 8277c9c836..d7553b110f 100644 --- a/spring-cloud-data-flow/time-processor/pom.xml +++ b/spring-cloud-data-flow/time-processor/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -22,6 +22,7 @@ UTF-8 UTF-8 1.8 + Brixton.SR7 @@ -42,7 +43,7 @@ org.springframework.cloud spring-cloud-dependencies - Brixton.SR5 + ${spring-cloud-dependencies.version} pom import diff --git a/spring-cloud-data-flow/time-source/pom.xml b/spring-cloud-data-flow/time-source/pom.xml index 086d761f78..2523dfabea 100644 --- a/spring-cloud-data-flow/time-source/pom.xml +++ b/spring-cloud-data-flow/time-source/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -22,6 +22,7 @@ UTF-8 UTF-8 1.8 + Brixton.SR7 @@ -42,7 +43,7 @@ org.springframework.cloud spring-cloud-dependencies - Brixton.SR5 + ${spring-cloud-dependencies.version} pom import diff --git a/spring-core/pom.xml b/spring-core/pom.xml index bf8c8f3ebc..cca6e7f08f 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -14,43 +14,43 @@ org.mockito mockito-all - 1.10.19 + ${mockito.version} org.springframework spring-test - 4.2.6.RELEASE + ${spring.version} org.springframework spring-core - 4.2.6.RELEASE + ${spring.version} org.springframework spring-beans - 4.2.6.RELEASE + ${spring.version} org.springframework spring-context - 4.2.6.RELEASE + ${spring.version} javax.inject javax.inject - 1 + ${javax.inject.version} junit junit - 4.12 + ${junit.version} test com.google.guava guava - 20.0 + ${guava.version} @@ -124,6 +124,11 @@ + 1.10.19 + 4.3.4.RELEASE + 1 + 4.12 + 20.0 2.6 From 9c27508cf9d200f67271bb557b2c8005cb39b835 Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 9 Dec 2016 00:16:17 +0200 Subject: [PATCH 276/399] upgrade dependencies --- spring-cloud/pom.xml | 14 +++++++++++-- .../spring-cloud-bootstrap/config/pom.xml | 10 +++++++--- .../spring-cloud-bootstrap/discovery/pom.xml | 14 +++++++++---- .../spring-cloud-bootstrap/gateway/pom.xml | 14 +++++++++---- .../spring-cloud-bootstrap/resource/pom.xml | 13 ++++++++---- .../spring-cloud-config/client/pom.xml | 7 ++++++- spring-cloud/spring-cloud-config/pom.xml | 7 ++++--- .../spring-cloud-config/server/pom.xml | 8 +++++++- spring-cloud/spring-cloud-eureka/pom.xml | 6 ++++-- .../spring-cloud-eureka-client/pom.xml | 12 ++++++++--- .../spring-cloud-eureka-feign-client/pom.xml | 15 ++++++++++---- .../spring-cloud-eureka-server/pom.xml | 9 +++++++-- .../feign-rest-consumer/pom.xml | 20 ++++++++++++------- spring-cloud/spring-cloud-hystrix/pom.xml | 6 ++++-- .../rest-consumer/pom.xml | 18 +++++++++++------ .../rest-producer/pom.xml | 6 +++++- .../spring-cloud-ribbon-client/pom.xml | 7 ++++--- 17 files changed, 134 insertions(+), 52 deletions(-) diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 455a5b876b..299115634e 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -26,6 +26,16 @@ UTF-8 + 1.2.2.RELEASE + Brixton.SR7 + 1.2.2.RELEASE + 1.2.2.RELEASE + 1.2.3.RELEASE + 1.2.3.RELEASE + 1.2.3.RELEASE + 1.4.2.RELEASE + 3.6.0 + 1.4.2.RELEASE @@ -34,7 +44,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -43,7 +53,7 @@ org.springframework.boot spring-boot-maven-plugin - 1.4.0.RELEASE + ${spring-boot-maven-plugin.version} diff --git a/spring-cloud/spring-cloud-bootstrap/config/pom.xml b/spring-cloud/spring-cloud-bootstrap/config/pom.xml index bcb40ac062..24d054a87b 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/config/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -39,7 +39,7 @@ org.springframework.cloud spring-cloud-dependencies - Brixton.RELEASE + ${spring-cloud-dependencies.version} pom import @@ -55,7 +55,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -64,4 +64,8 @@ + + Brixton.SR7 + 3.6.0 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml index f3cb3be2af..6d5d2cfe0b 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -36,7 +36,7 @@ org.springframework.session spring-session - 1.2.1.RELEASE + ${spring-session.version} org.springframework.boot @@ -49,7 +49,7 @@ org.springframework.cloud spring-cloud-dependencies - Brixton.RELEASE + ${spring-cloud-dependencies.version} pom import @@ -65,7 +65,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -73,4 +73,10 @@ + + + 1.2.2.RELEASE + Brixton.SR7 + 3.6.0 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml index add551ff95..fb075e1e2c 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -35,7 +35,7 @@ org.springframework.session spring-session - 1.2.1.RELEASE + ${spring-session.version} org.springframework.boot @@ -54,7 +54,7 @@ org.springframework.cloud spring-cloud-dependencies - Brixton.RELEASE + ${spring-cloud-dependencies.version} pom import @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -78,4 +78,10 @@ + + + 1.2.2.RELEASE + Brixton.SR7 + 3.6.0 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/resource/pom.xml b/spring-cloud/spring-cloud-bootstrap/resource/pom.xml index 8940ca71da..b1ea652be4 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/resource/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE @@ -35,7 +35,7 @@ org.springframework.session spring-session - 1.2.1.RELEASE + ${spring-session.version} org.springframework.boot @@ -54,7 +54,7 @@ org.springframework.cloud spring-cloud-dependencies - Brixton.RELEASE + ${spring-cloud-dependencies.version} pom import @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -78,4 +78,9 @@ + + 1.2.2.RELEASE + Brixton.SR7 + 3.6.0 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-config/client/pom.xml b/spring-cloud/spring-cloud-config/client/pom.xml index 2c4b748e8a..24da043515 100644 --- a/spring-cloud/spring-cloud-config/client/pom.xml +++ b/spring-cloud/spring-cloud-config/client/pom.xml @@ -14,7 +14,7 @@ org.springframework.cloud spring-cloud-starter-config - 1.2.0.RELEASE + ${spring-cloud-starter-config.version} org.springframework.boot @@ -38,4 +38,9 @@ + + + 1.2.2.RELEASE + 1.4.2.RELEASE + diff --git a/spring-cloud/spring-cloud-config/pom.xml b/spring-cloud/spring-cloud-config/pom.xml index 7d9fd97ee4..d25037a49f 100644 --- a/spring-cloud/spring-cloud-config/pom.xml +++ b/spring-cloud/spring-cloud-config/pom.xml @@ -16,7 +16,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.1.RELEASE + 1.4.2.RELEASE @@ -25,7 +25,7 @@ org.springframework.cloud spring-cloud-dependencies - Camden.SR1 + ${spring-cloud-dependencies.version} pom import @@ -52,7 +52,8 @@ UTF-8 UTF-8 1.8 - 1.4.1.RELEASE + 1.4.2.RELEASE 2.19.1 + Brixton.SR7 diff --git a/spring-cloud/spring-cloud-config/server/pom.xml b/spring-cloud/spring-cloud-config/server/pom.xml index 33fac435b1..fff6b0f3ee 100644 --- a/spring-cloud/spring-cloud-config/server/pom.xml +++ b/spring-cloud/spring-cloud-config/server/pom.xml @@ -14,7 +14,7 @@ org.springframework.cloud spring-cloud-config-server - 1.2.0.RELEASE + ${spring-cloud-config-server.version} org.springframework.boot @@ -44,4 +44,10 @@ + + + 1.2.2.RELEASE + 1.4.2.RELEASE + + diff --git a/spring-cloud/spring-cloud-eureka/pom.xml b/spring-cloud/spring-cloud-eureka/pom.xml index f02bf7ad9c..2c3b4032af 100644 --- a/spring-cloud/spring-cloud-eureka/pom.xml +++ b/spring-cloud/spring-cloud-eureka/pom.xml @@ -25,6 +25,8 @@ UTF-8 + 3.6.0 + 1.4.2.RELEASE @@ -33,7 +35,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -42,7 +44,7 @@ org.springframework.boot spring-boot-maven-plugin - 1.4.0.RELEASE + ${spring-boot-maven-plugin.version} diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml index 720b49ddc2..a56c732e40 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml @@ -21,12 +21,12 @@ org.springframework.cloud spring-cloud-starter-eureka - 1.1.5.RELEASE + ${spring-cloud-starter-eureka.version} org.springframework.boot spring-boot-starter-web - 1.4.0.RELEASE + ${spring-boot-starter-web.version} @@ -35,7 +35,7 @@ org.springframework.cloud spring-cloud-starter-parent - Brixton.SR4 + ${spring-cloud-dependencies.version} pom import @@ -54,4 +54,10 @@ + + + Brixton.SR7 + 1.2.3.RELEASE + 1.4.2.RELEASE + diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml index 9e639c666a..cb3c6fc289 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml @@ -26,17 +26,17 @@ org.springframework.cloud spring-cloud-starter-feign - 1.1.5.RELEASE + ${spring-cloud-starter-feign.version} org.springframework.boot spring-boot-starter-web - 1.4.0.RELEASE + ${spring-boot-starter-web.version} org.springframework.boot spring-boot-starter-thymeleaf - 1.4.0.RELEASE + ${spring-boot-starter-web.version} @@ -45,7 +45,7 @@ org.springframework.cloud spring-cloud-starter-parent - Brixton.SR4 + ${spring-cloud-dependencies.version} pom import @@ -64,4 +64,11 @@ + + + Brixton.SR7 + 1.2.3.RELEASE + 1.2.3.RELEASE + 1.4.2.RELEASE + diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml index f4d655f708..a728712ead 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml @@ -21,7 +21,7 @@ org.springframework.cloud spring-cloud-starter-eureka-server - 1.1.5.RELEASE + ${spring-cloud-starter-eureka.version} @@ -30,7 +30,7 @@ org.springframework.cloud spring-cloud-starter-parent - Brixton.SR4 + ${spring-cloud-dependencies.version} pom import @@ -49,4 +49,9 @@ + + + Brixton.SR7 + 1.2.3.RELEASE + diff --git a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml index 8209dc8c67..9c8d88ae8e 100644 --- a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml @@ -25,32 +25,32 @@ org.springframework.cloud spring-cloud-starter-hystrix - 1.1.5.RELEASE + ${spring-cloud-starter-hystrix.version} org.springframework.cloud spring-cloud-starter-hystrix-dashboard - 1.1.5.RELEASE + ${spring-cloud-starter-hystrix.version} org.springframework.cloud spring-cloud-starter-feign - 1.1.5.RELEASE + ${spring-cloud-starter-feign.version} org.springframework.boot spring-boot-starter-web - 1.4.0.RELEASE + ${spring-boot-starter-web.version} org.springframework.boot spring-boot-starter-thymeleaf - 1.4.0.RELEASE + ${spring-boot-starter-web.version} org.springframework.boot spring-boot-starter-actuator - 1.4.0.RELEASE + ${spring-boot-starter-web.version} @@ -59,7 +59,7 @@ org.springframework.cloud spring-cloud-starter-parent - Brixton.SR4 + ${spring-cloud-dependencies.version} pom import @@ -78,4 +78,10 @@ + + + 1.2.3.RELEASE + 1.2.3.RELEASE + 1.4.2.RELEASE + diff --git a/spring-cloud/spring-cloud-hystrix/pom.xml b/spring-cloud/spring-cloud-hystrix/pom.xml index b992ce3846..67f50e3a91 100644 --- a/spring-cloud/spring-cloud-hystrix/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/pom.xml @@ -24,6 +24,8 @@ UTF-8 + 3.6.0 + 1.4.2.RELEASE @@ -32,7 +34,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -41,7 +43,7 @@ org.springframework.boot spring-boot-maven-plugin - 1.4.0.RELEASE + ${spring-boot-maven-plugin.version} diff --git a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml index 649ca88eb3..02c009510e 100644 --- a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml @@ -20,27 +20,27 @@ org.springframework.cloud spring-cloud-starter-hystrix - 1.1.5.RELEASE + ${spring-cloud-starter-hystrix.version} org.springframework.cloud spring-cloud-starter-hystrix-dashboard - 1.1.5.RELEASE + ${spring-cloud-starter-hystrix.version} org.springframework.boot spring-boot-starter-web - 1.4.0.RELEASE + ${spring-boot-starter-web.version} org.springframework.boot spring-boot-starter-thymeleaf - 1.4.0.RELEASE + ${spring-boot-starter-web.version} org.springframework.boot spring-boot-starter-actuator - 1.4.0.RELEASE + ${spring-boot-starter-web.version} @@ -49,7 +49,7 @@ org.springframework.cloud spring-cloud-starter-parent - Brixton.SR4 + ${spring-cloud-dependencies.version} pom import @@ -68,4 +68,10 @@ + + + Brixton.SR7 + 1.2.3.RELEASE + 1.4.2.RELEASE + diff --git a/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml b/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml index 726d18d2c3..85d5a4a11e 100644 --- a/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml @@ -20,7 +20,7 @@ org.springframework.boot spring-boot-starter-web - 1.4.0.RELEASE + ${spring-boot-starter-web.version} @@ -36,4 +36,8 @@ + + + Brixton.SR7 + diff --git a/spring-cloud/spring-cloud-ribbon-client/pom.xml b/spring-cloud/spring-cloud-ribbon-client/pom.xml index c597c5ab8e..d4862fc4e8 100644 --- a/spring-cloud/spring-cloud-ribbon-client/pom.xml +++ b/spring-cloud/spring-cloud-ribbon-client/pom.xml @@ -11,14 +11,15 @@ org.springframework.boot spring-boot-starter-parent - 1.4.1.RELEASE + 1.4.2.RELEASE UTF-8 1.8 - + Brixton.SR7 + @@ -42,7 +43,7 @@ org.springframework.cloud spring-cloud-dependencies - Camden.SR1 + ${spring-cloud-dependencies.version} pom import From 8c27b3240dcbaed7be1e2a157092466aedfbf4ce Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 9 Dec 2016 23:14:10 +0200 Subject: [PATCH 277/399] upgrade dependencies --- spring-akka/pom.xml | 6 +++--- spring-all/pom.xml | 45 +++++++++-------------------------------- spring-autowire/pom.xml | 7 ++++--- spring-batch/pom.xml | 6 +++--- spring-boot/pom.xml | 12 +++++++---- 5 files changed, 28 insertions(+), 48 deletions(-) diff --git a/spring-akka/pom.xml b/spring-akka/pom.xml index eb33ca4848..1a273b0fed 100644 --- a/spring-akka/pom.xml +++ b/spring-akka/pom.xml @@ -115,11 +115,11 @@ - 4.3.2.RELEASE - 2.4.8 + 4.3.4.RELEASE + 2.4.14 4.12 - 3.5.1 + 3.6.0 2.19.1 diff --git a/spring-all/pom.xml b/spring-all/pom.xml index 23f2531b51..e77bf0b284 100644 --- a/spring-all/pom.xml +++ b/spring-all/pom.xml @@ -11,7 +11,7 @@ org.springframework.boot spring-boot-starter-parent - 1.3.6.RELEASE + 1.4.2.RELEASE @@ -134,7 +134,7 @@ org.assertj assertj-core - 3.5.1 + ${assertj.version} test @@ -158,13 +158,13 @@ org.easymock easymock - 3.4 + ${easymock.version} test org.ehcache ehcache - 3.1.3 + ${ehcache.version} @@ -273,42 +273,17 @@ - 4.3.1.RELEASE - 4.0.4.RELEASE - 3.20.0-GA - 1.2 + 4.3.4.RELEASE + 4.2.0.RELEASE - 4.3.11.Final - 5.1.38 - - - 1.7.13 - 1.1.3 - - - 5.2.2.Final + 5.2.5.Final 19.0 - 3.4 - - - 1.3 - 4.12 - 1.10.19 - - 4.4.1 - 4.5 - - 2.9.0 - - - 3.5.1 - 2.6 - 2.19.1 - 2.7 - 1.4.18 + 3.1.3 + 3.4 + 3.6.1 diff --git a/spring-autowire/pom.xml b/spring-autowire/pom.xml index fd03c77605..391cfc018e 100644 --- a/spring-autowire/pom.xml +++ b/spring-autowire/pom.xml @@ -12,8 +12,9 @@ UTF-8 - 4.2.5.RELEASE - 3.5.1 + 4.3.4.RELEASE + 4.12 + 3.6.0 2.19.1 @@ -21,7 +22,7 @@ junit junit - 4.11 + ${junit.version} org.springframework diff --git a/spring-batch/pom.xml b/spring-batch/pom.xml index 5538dd912f..a92a0e8323 100644 --- a/spring-batch/pom.xml +++ b/spring-batch/pom.xml @@ -11,9 +11,9 @@ UTF-8 - 4.2.0.RELEASE - 3.0.5.RELEASE - 3.8.11.2 + 4.3.4.RELEASE + 3.0.7.RELEASE + 3.15.1 diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index 5d29b55a19..cd2beb4201 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -73,19 +73,19 @@ org.subethamail subethasmtp - 3.1.7 + ${subethasmtp.version} test org.webjars bootstrap - 3.3.7-1 + ${bootstrap.version} org.webjars jquery - 3.1.1 + ${jquery.version} @@ -122,7 +122,7 @@ pl.project13.maven git-commit-id-plugin - 2.2.1 + ${git-commit-id-plugin.version} @@ -182,6 +182,10 @@ UTF-8 1.8 4.3.4.RELEASE + 2.2.1 + 3.1.1 + 3.3.7-1 + 3.1.7 From da045d1d6f25e61605e464e1458000f81ff000ae Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 9 Dec 2016 23:38:16 +0200 Subject: [PATCH 278/399] upgrade dependencies --- resteasy/pom.xml | 10 ++++++---- selenium-junit-testng/pom.xml | 21 +++++++++++++++------ spring-apache-camel/pom.xml | 4 ++-- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/resteasy/pom.xml b/resteasy/pom.xml index 04e8576e1f..f0bd8298f5 100644 --- a/resteasy/pom.xml +++ b/resteasy/pom.xml @@ -9,9 +9,11 @@ war - 3.0.14.Final + 3.0.19.Final + 4.12 + 2.5 2.19.1 - 1.6.0 + 1.6.1 @@ -93,13 +95,13 @@ junit junit - 4.4 + ${junit.version} commons-io commons-io - 2.4 + ${commons-io.version} diff --git a/selenium-junit-testng/pom.xml b/selenium-junit-testng/pom.xml index 754bf679b5..b4490f779b 100644 --- a/selenium-junit-testng/pom.xml +++ b/selenium-junit-testng/pom.xml @@ -9,7 +9,7 @@ maven-compiler-plugin - 3.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -18,7 +18,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + ${maven-surefire-plugin.version} true @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + ${maven-surefire-plugin.version} **/*LiveTest.java @@ -55,17 +55,26 @@ org.seleniumhq.selenium selenium-java - 3.0.1 + ${selenium-java.version} junit junit - 4.12 + ${junit.version} org.testng testng - 6.9.13.6 + ${testng.version} + + + 4.12 + 6.10 + 3.0.1 + + 2.19.1 + 3.6.0 + \ No newline at end of file diff --git a/spring-apache-camel/pom.xml b/spring-apache-camel/pom.xml index 6cd4f136e0..e68768a624 100644 --- a/spring-apache-camel/pom.xml +++ b/spring-apache-camel/pom.xml @@ -10,9 +10,9 @@ 2.16.1 - 4.2.4.RELEASE + 4.3.4.RELEASE 2.19.1 - 1.7 + 1.8 4.12 From 6882b767ce5a6ea5a0a6998952adcb4f53398730 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Fri, 9 Dec 2016 22:40:29 +0100 Subject: [PATCH 279/399] NOJIRA - updating README files --- core-java/README.md | 1 + spring-session/README.md | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 spring-session/README.md diff --git a/core-java/README.md b/core-java/README.md index 92f124d14b..aca8deb9c9 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -38,3 +38,4 @@ - [Guide to the Fork/Join Framework in Java](http://www.baeldung.com/java-fork-join) - [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) - [How to Convert String to different data types in Java](http://www.baeldung.com/java-string-conversions) +- [Introduction to Java Generics](http://www.baeldung.com/java-generics) diff --git a/spring-session/README.md b/spring-session/README.md new file mode 100644 index 0000000000..0d802a4715 --- /dev/null +++ b/spring-session/README.md @@ -0,0 +1,6 @@ +========= + +## Spring Session Examples + +### Relevant Articles: +- [Introduction to Spring Session](http://www.baeldung.com/spring-session) From b7db6cef7f2837562f2255019f158e149f8f65ac Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Fri, 9 Dec 2016 23:51:00 +0100 Subject: [PATCH 280/399] BAEL-276 - Refactoring encoding test --- .../EncoderDecoderUnitTest.java | 57 ++++++++++++------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java index 0b63d2b51a..08f4e0b4bd 100644 --- a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java +++ b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java @@ -14,11 +14,14 @@ import java.util.HashMap; import java.util.Map; import static java.util.stream.Collectors.joining; +import static org.hamcrest.CoreMatchers.*; public class EncoderDecoderUnitTest { private static final Logger LOGGER = LoggerFactory.getLogger(EncoderDecoderUnitTest.class); - private static final String testUrl = "http://www.baeldung.com/path+1?key1=value+1&key2=value%40%21%242&key3=value%253#dummy+Fragment"; + private static final String testUrl = "http://www.baeldung.com?key1=value+1&key2=value%40%21%242&key3=value%253"; + private static final String testUrlWithPath = "http://www.baeldung.com/path+1?key1=value+1&key2=value%40%21%242&key3=value%253"; + private String encodeValue(String value) { String encoded = null; @@ -42,13 +45,11 @@ public class EncoderDecoderUnitTest { @Test public void givenURL_whenAnalyze_thenCorrect() throws Exception { - URI uri = new URI(testUrl); + URL url = new URL(testUrl); - Assert.assertThat(uri.getScheme(), CoreMatchers.is("http")); - Assert.assertThat(uri.getHost(), CoreMatchers.is("www.baeldung.com")); - Assert.assertThat(uri.getRawPath(), CoreMatchers.is("/path+1")); - Assert.assertThat(uri.getRawQuery(), CoreMatchers.is("key1=value+1&key2=value%40%21%242&key3=value%253")); - Assert.assertThat(uri.getRawFragment(), CoreMatchers.is("dummy+Fragment")); + Assert.assertThat(url.getProtocol(), is("http")); + Assert.assertThat(url.getHost(), is("www.baeldung.com")); + Assert.assertThat(url.getQuery(), is("key1=value+1&key2=value%40%21%242&key3=value%253")); } @Test @@ -58,35 +59,29 @@ public class EncoderDecoderUnitTest { requestParams.put("key2", "value@!$2"); requestParams.put("key3", "value%3"); - String path = "path+1"; - String fragment = "dummy Fragment"; + String encodedURL = requestParams.keySet().stream() + .map(key -> key + "=" + encodeValue(requestParams.get(key))) + .collect(joining("&", "http://www.baeldung.com?", "")); - String encodedURL = requestParams.keySet().stream().map(key -> key + "=" + encodeValue(requestParams.get(key))).collect(joining("&", "http://www.baeldung.com/" + getPath(path) + "?", "#" + encodeValue(fragment))); - - Assert.assertThat(testUrl, CoreMatchers.is(encodedURL)); + Assert.assertThat(testUrl, is(encodedURL)); } @Test public void givenRequestParam_whenUTF8Scheme_thenDecodeRequestParams() throws Exception { - URI uri = new URI(testUrl); + URL url = new URL(testUrl); - String scheme = uri.getScheme(); - String host = uri.getHost(); - String query = uri.getRawQuery(); - String path = uri.getRawPath(); - String fragment = uri.getRawFragment(); + String query = url.getQuery(); String decodedQuery = Arrays.stream(query.split("&")).map(param -> param.split("=")[0] + "=" + decode(param.split("=")[1])).collect(joining("&")); - String decodedPath = Arrays.stream(path.split("/")).map(param -> getPath(param)).collect(joining("/")); - Assert.assertEquals("http://www.baeldung.com/path+1?key1=value 1&key2=value@!$2&key3=value%3#dummy Fragment", scheme + "://" + host + decodedPath + "?" + decodedQuery + "#" + decode(fragment)); + Assert.assertEquals("http://www.baeldung.com?key1=value 1&key2=value@!$2&key3=value%3", url.getProtocol() + "://" + url.getHost() + "?" + decodedQuery); } - private String getPath(String path) { + private String encodePath(String path) { try { path = new URI(null, null, path, null).getPath(); } catch (URISyntaxException e) { - e.printStackTrace(); + LOGGER.error("Error encoding parameter {}", e.getMessage(), e); } return path; } @@ -98,4 +93,22 @@ public class EncoderDecoderUnitTest { Assert.assertEquals("/Path 1/Path+2", uri.getPath()); Assert.assertEquals("/Path%201/Path+2", uri.getRawPath()); } + + @Test + public void givenPathAndRequestParam_whenUTF8Scheme_thenEncode() throws Exception { + Map requestParams = new HashMap<>(); + requestParams.put("key1", "value 1"); + requestParams.put("key2", "value@!$2"); + requestParams.put("key3", "value%3"); + + String path = "path+1"; + + String encodedURL = requestParams.keySet().stream() + .map(key -> key + "=" + encodeValue(requestParams.get(key))) + .collect(joining("&", "http://www.baeldung.com/" + encodePath(path) + "?", "")); + + Assert.assertThat(testUrlWithPath, is(encodedURL)); + } + + } From 74da012f6f3393328a142026174c6efe96360f31 Mon Sep 17 00:00:00 2001 From: eugenp Date: Sat, 10 Dec 2016 10:14:29 +0200 Subject: [PATCH 281/399] minor formatting work --- .../htmlunit/HtmlUnitAndSpringTest.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java index 45e441f47f..da1b0e484a 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java @@ -1,10 +1,7 @@ package com.baeldung.htmlunit; -import java.io.IOException; - import org.junit.Assert; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -14,7 +11,6 @@ import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.htmlunit.MockMvcWebClientBuilder; import org.springframework.web.context.WebApplicationContext; -import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; @@ -33,8 +29,7 @@ public class HtmlUnitAndSpringTest { @Before public void setup() { - webClient = MockMvcWebClientBuilder - .webAppContextSetup(wac).build(); + webClient = MockMvcWebClientBuilder.webAppContextSetup(wac).build(); } @Test @@ -44,18 +39,16 @@ public class HtmlUnitAndSpringTest { String url = "http://localhost/message/showForm"; page = webClient.getPage(url); - + HtmlTextInput messageText = page.getHtmlElementById("message"); messageText.setValueAttribute(text); HtmlForm form = page.getForms().get(0); - HtmlSubmitInput submit = form.getOneHtmlElementByAttribute( - "input", "type", "submit"); + HtmlSubmitInput submit = form.getOneHtmlElementByAttribute("input", "type", "submit"); HtmlPage newPage = submit.click(); - String receivedText = newPage.getHtmlElementById("received") - .getTextContent(); + String receivedText = newPage.getHtmlElementById("received").getTextContent(); - Assert.assertEquals(receivedText, text); + Assert.assertEquals(receivedText, text); } } From c75a9864f85bb811dbba104bf16bbd8b9b7a5db0 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sat, 10 Dec 2016 14:43:26 +0100 Subject: [PATCH 282/399] Refactor Servlet example --- javax-servlets/pom.xml | 12 ++++++++++++ .../src/test/java/com/root/FormServletTest.java | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml index 4fe4575e48..f1804b4d02 100644 --- a/javax-servlets/pom.xml +++ b/javax-servlets/pom.xml @@ -7,6 +7,18 @@ com.root ServletmavenExample 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.7 + 1.7 + + + + diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/root/FormServletTest.java index 437741e12d..67b419683f 100644 --- a/javax-servlets/src/test/java/com/root/FormServletTest.java +++ b/javax-servlets/src/test/java/com/root/FormServletTest.java @@ -21,7 +21,7 @@ public class FormServletTest { HttpClient client = new DefaultHttpClient(); HttpPost method = new HttpPost("http://localhost:8080/calculateServlet"); - List nvps = new ArrayList(); + List nvps = new ArrayList<>(); nvps.add(new BasicNameValuePair("height", String.valueOf(2))); nvps.add(new BasicNameValuePair("weight", String.valueOf(80))); From e986d707dafe964a60eb269241ce146b506e5065 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 10 Dec 2016 20:20:12 +0200 Subject: [PATCH 283/399] upgrade dependencies --- pdf/pom.xml | 25 +++++++---- querydsl/pom.xml | 29 +++++++----- redis/pom.xml | 12 +++-- rest-assured/pom.xml | 102 ++++++++++++++++++++++++++++--------------- rest-testing/pom.xml | 32 +++++++------- 5 files changed, 128 insertions(+), 72 deletions(-) diff --git a/pdf/pom.xml b/pdf/pom.xml index c6404c6b30..332e1f5244 100644 --- a/pdf/pom.xml +++ b/pdf/pom.xml @@ -14,6 +14,15 @@ UTF-8 + 4.12 + 2.0.3 + 1.6 + 5.5.10 + 5.5.10 + 3.15 + 1.8 + 3.15 + 3.5.1 @@ -21,43 +30,43 @@ junit junit - 3.8.1 + ${junit.version} test org.apache.pdfbox pdfbox-tools - 2.0.3 + ${pdfbox-tools.version} net.sf.cssbox pdf2dom - 1.6 + ${pdf2dom.version} com.itextpdf itextpdf - 5.5.10 + ${itextpdf.version} com.itextpdf.tool xmlworker - 5.5.10 + ${xmlworker.version} org.apache.poi poi-scratchpad - 3.15 + ${poi-scratchpad.version} org.apache.xmlgraphics batik-transcoder - 1.8 + ${batik-transcoder.version} org.apache.poi poi-ooxml - 3.15 + ${poi-ooxml.version} diff --git a/querydsl/pom.xml b/querydsl/pom.xml index 13528526ea..a9218e7751 100644 --- a/querydsl/pom.xml +++ b/querydsl/pom.xml @@ -16,10 +16,19 @@ UTF-8 1.8 4.12 - 4.3.1.RELEASE - 5.2.1.Final - 4.1.3 + 4.3.4.RELEASE + 5.2.5.Final + 1.0.0.Final + 4.1.4 + 2.3.4 + 1.6 + 1.4 + 1.7.21 + 1.1.7 + + 3.6.0 + 1.1.3 2.19.1 @@ -50,14 +59,14 @@ org.hibernate.javax.persistence hibernate-jpa-2.1-api - 1.0.0.Final + ${hibernate-jpa.version} compile commons-dbcp commons-dbcp - 1.4 + ${commons-dbcp.version} jar compile @@ -65,7 +74,7 @@ commons-pool commons-pool - 1.6 + ${commons-pool.version} jar compile @@ -74,7 +83,7 @@ org.hsqldb hsqldb - 2.3.4 + ${hsqldb.version} @@ -116,7 +125,7 @@ ch.qos.logback logback-classic - 1.1.7 + ${logback.version} org.slf4j @@ -142,7 +151,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} ${java.version} ${java.version} @@ -154,7 +163,7 @@ com.mysema.maven apt-maven-plugin - 1.1.3 + ${apt-maven-plugin.version} diff --git a/redis/pom.xml b/redis/pom.xml index a5d3af8097..8443564ffd 100644 --- a/redis/pom.xml +++ b/redis/pom.xml @@ -15,13 +15,13 @@ redis.clients jedis - 2.8.1 + ${jedis.version} com.github.kstyrc embedded-redis - 0.6 + ${embedded-redis.version} @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -50,7 +50,13 @@ UTF-8 + + 2.9.0 + 0.6 + 4.12 + + 3.6.0 diff --git a/rest-assured/pom.xml b/rest-assured/pom.xml index e2a2af9cd9..3d1abefeb1 100644 --- a/rest-assured/pom.xml +++ b/rest-assured/pom.xml @@ -10,106 +10,106 @@ javax.servlet javax.servlet-api - 3.1-b06 + ${javax.servlet-api.version} javax.servlet servlet-api - 2.5 + ${servlet-api.version} org.eclipse.jetty jetty-security - 9.2.0.M1 + ${jetty.version} org.eclipse.jetty jetty-servlet - 9.2.0.M1 + ${jetty.version} org.eclipse.jetty jetty-servlets - 9.2.0.M1 + ${jetty.version} org.eclipse.jetty jetty-io - 9.2.0.M1 + ${jetty.version} org.eclipse.jetty jetty-http - 9.2.0.M1 + ${jetty.version} org.eclipse.jetty jetty-server - 9.2.0.M1 + ${jetty.version} org.eclipse.jetty jetty-util - 9.2.0.M1 + ${jetty.version} org.slf4j slf4j-api - 1.7.21 + ${slf4j.version} log4j log4j - 1.2.17 + ${log4j.version} org.slf4j slf4j-log4j12 - 1.7.21 + ${slf4j.version} commons-logging commons-logging - 1.2 + ${commons-logging.version} org.apache.httpcomponents httpcore - 4.4.5 + ${httpcore.version} org.apache.commons commons-lang3 - 3.4 + ${commons-lang3.version} com.github.fge uri-template - 0.9 + ${uri-template.version} com.googlecode.libphonenumber libphonenumber - 7.4.5 + ${libphonenumber.version} javax.mail mail - 1.4.7 + ${javax.mail.version} joda-time joda-time - 2.9.4 + ${joda-time.version} @@ -126,13 +126,13 @@ com.github.fge msg-simple - 1.1 + ${msg-simple.version} com.github.fge jackson-coreutils - 1.8 + ${jackson-coreutils.version} @@ -143,63 +143,63 @@ com.github.fge btf - 1.2 + ${btf.version} org.apache.httpcomponents httpclient - 4.5.2 + ${httpclient.version} org.codehaus.groovy groovy-all - 2.4.7 + ${groovy.version} com.github.tomakehurst wiremock - 2.1.7 + ${wiremock.version} io.rest-assured rest-assured - 3.0.0 + ${rest-assured.version} test io.rest-assured json-schema-validator - 3.0.0 + ${rest-assured-json-schema-validator.version} com.github.fge json-schema-validator - 2.2.6 + ${github-json-schema-validator.version} com.github.fge json-schema-core - 1.2.5 + ${json-schema-core.version} junit junit - 4.3 + ${junit.version} test org.hamcrest hamcrest-all - 1.3 + ${hamcrest.version} commons-collections commons-collections - 3.2.2 + ${commons-collections.version} @@ -209,7 +209,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 8 8 @@ -219,8 +219,42 @@ - 2.8.3 + 2.8.5 + 1.8 19.0 + + 3.1.0 + 2.5 + 1.4.7 + 9.4.0.v20161208 + + 1.2.17 + 1.7.21 + + 3.5 + 1.2 + 3.2.2 + + 4.4.5 + 4.5.2 + + 0.9 + 8.0.0 + 2.9.6 + 1.1 + 1.2 + 2.4.7 + 2.4.1 + + 2.2.6 + 1.2.5 + + 1.3 + 3.0.1 + 3.0.1 + 4.12 + + 3.6.0 diff --git a/rest-testing/pom.xml b/rest-testing/pom.xml index 90c160af15..f7f94a49a6 100644 --- a/rest-testing/pom.xml +++ b/rest-testing/pom.xml @@ -20,7 +20,7 @@ commons-io commons-io - 2.4 + ${commons-io.version} @@ -106,20 +106,20 @@ com.github.tomakehurst wiremock - 1.58 + ${wiremock.version} test info.cukes cucumber-java - 1.2.4 + ${cucumber.version} test info.cukes cucumber-junit - 1.2.4 + ${cucumber.version} @@ -198,35 +198,33 @@ - 2.7.8 + 2.8.5 - 1.7.13 - 1.1.3 - - - 5.1.3.Final + 1.7.21 + 1.1.7 19.0 - 3.4 + 3.5 + 2.5 1.3 4.12 1.10.19 + 2.9.0 + 1.2.5 + 2.4.1 - 4.4.1 - 4.5 + 4.4.5 + 4.5.2 - 2.9.0 - 3.5.1 + 3.6.0 2.6 2.19.1 - 2.7 - 1.4.18 From 78b1f071a8c67383a8c55e5733cf49940e8c54f8 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 10 Dec 2016 21:23:57 +0200 Subject: [PATCH 284/399] upgrade dependencies --- mockito/pom.xml | 29 +++------------------------- mocks/jmockit/pom.xml | 4 ++-- mocks/mock-comparisons/pom.xml | 6 +++--- orika/pom.xml | 12 +++++++----- patterns/intercepting-filter/pom.xml | 6 +++++- patterns/pom.xml | 16 +++++++++++---- 6 files changed, 32 insertions(+), 41 deletions(-) diff --git a/mockito/pom.xml b/mockito/pom.xml index 16c7cb0dd8..83005668f3 100644 --- a/mockito/pom.xml +++ b/mockito/pom.xml @@ -101,42 +101,19 @@ - - 4.1.5.RELEASE - 3.2.5.RELEASE - - - 4.3.10.Final - 5.1.35 - - - 1.7.13 - 1.1.3 - - - 5.1.3.Final - 19.0 - 3.4 + 3.5 1.3 4.12 1.10.19 - 1.6.4 - - 4.4.1 - 4.5 - - 2.4.1 + 1.6.6 - 3.3 - 2.6 + 3.6.0 2.18.1 - 2.7 - 1.4.14 diff --git a/mocks/jmockit/pom.xml b/mocks/jmockit/pom.xml index 8b03313a51..44e886ec24 100644 --- a/mocks/jmockit/pom.xml +++ b/mocks/jmockit/pom.xml @@ -17,8 +17,8 @@ 1.24 - 3.3 - 2.18.1 + 3.6.0 + 2.19.1 diff --git a/mocks/mock-comparisons/pom.xml b/mocks/mock-comparisons/pom.xml index 692bfffd53..aa143dac66 100644 --- a/mocks/mock-comparisons/pom.xml +++ b/mocks/mock-comparisons/pom.xml @@ -16,13 +16,13 @@ 4.12 1.10.19 3.4 - 1.24 + 1.29 UTF-8 - 3.3 - 2.18.1 + 3.6.0 + 2.19.1 diff --git a/orika/pom.xml b/orika/pom.xml index c335b0dc22..94efbc77f3 100644 --- a/orika/pom.xml +++ b/orika/pom.xml @@ -6,10 +6,12 @@ 1.0 - 1.7.5 - 1.7.5 - 1.4.6 - 4.3 + 1.7.21 + 1.7.21 + 1.5.0 + 4.12 + + 3.6.0 Orika @@ -48,7 +50,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 7 7 diff --git a/patterns/intercepting-filter/pom.xml b/patterns/intercepting-filter/pom.xml index 2cf89246f9..c497307869 100644 --- a/patterns/intercepting-filter/pom.xml +++ b/patterns/intercepting-filter/pom.xml @@ -22,7 +22,7 @@ org.slf4j slf4j-api - 1.7.21 + ${slf4j.version} provided @@ -51,4 +51,8 @@ + + + 1.7.21 + diff --git a/patterns/pom.xml b/patterns/pom.xml index 6797891353..c18b0b3862 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -24,7 +24,7 @@ javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet-api.version} provided @@ -36,7 +36,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -45,14 +45,22 @@ org.apache.maven.plugins maven-war-plugin - 3.0.0 + ${maven-war-plugin.version} org.eclipse.jetty jetty-maven-plugin - 9.3.12.v20160915 + ${jetty-maven-plugin.version} + + + 3.1.0 + + 3.6.0 + 3.0.0 + 9.4.0.v20161208 + From e8758e8a8bb210ca021ec834025e82771d8269b7 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 10 Dec 2016 21:42:50 +0200 Subject: [PATCH 285/399] upgrade dependencies --- log4j2/pom.xml | 25 +++++++++++++++++-------- lombok/pom.xml | 10 +++++----- mapstruct/pom.xml | 18 +++++++++++------- 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/log4j2/pom.xml b/log4j2/pom.xml index 83904f2075..124b19330f 100644 --- a/log4j2/pom.xml +++ b/log4j2/pom.xml @@ -18,47 +18,47 @@ org.apache.logging.log4j log4j-core - 2.7 + ${log4j-core.version} com.fasterxml.jackson.core jackson-databind - 2.8.4 + ${jackson.version} com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.8.4 + ${jackson.version} com.h2database h2 - 1.4.192 + ${h2.version} org.apache.commons commons-dbcp2 - 2.1.1 + ${commons-dbcp2.version} org.apache.logging.log4j log4j-core - 2.7 + ${log4j-core.version} test-jar test junit junit - 4.12 + ${junit.version} test @@ -68,7 +68,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -76,4 +76,13 @@ + + + 2.8.5 + 1.4.193 + 2.1.1 + 2.7 + 4.12 + 3.6.0 + diff --git a/lombok/pom.xml b/lombok/pom.xml index b816642165..24c5722db9 100644 --- a/lombok/pom.xml +++ b/lombok/pom.xml @@ -128,24 +128,24 @@ 1.8 - 1.16.8 + 1.16.12 1.0.0.Final - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 4.12 - 3.5.1 + 3.6.0 2.19.1 - ${lombok.version}.0 + 1.16.10.0 diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index aaa3e95f8c..72a67d19db 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -10,7 +10,11 @@ jar - 1.0.0.Final + 1.1.0.Final + 4.12 + 4.3.4.RELEASE + 3.6.0 + 2.19.1 @@ -21,18 +25,18 @@ junit junit - 4.12 + ${junit.version} test org.springframework spring-context - 4.3.2.RELEASE + ${springframework.version} org.springframework spring-test - 4.3.2.RELEASE + ${springframework.version} test @@ -42,7 +46,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -56,10 +60,10 @@ - + org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + ${maven-surefire-plugin.version} **/*IntegrationTest.java From 7ae02ac089fa6b137503b7e93bef61da2f5582be Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 11 Dec 2016 00:51:42 +0200 Subject: [PATCH 286/399] upgrade dependencies --- jsf/pom.xml | 14 ++++++++------ json-path/pom.xml | 10 ++++++---- json/pom.xml | 11 ++++++++--- junit5/pom.xml | 11 +++++++---- log-mdc/pom.xml | 23 +++++++++++++++-------- log4j/pom.xml | 22 ++++++++++++++++------ 6 files changed, 60 insertions(+), 31 deletions(-) diff --git a/jsf/pom.xml b/jsf/pom.xml index 6a4b358252..271a869576 100644 --- a/jsf/pom.xml +++ b/jsf/pom.xml @@ -36,7 +36,7 @@ javax.servlet jstl - 1.2 + ${jstl.version} @@ -123,21 +123,23 @@ - 4.2.5.RELEASE + 4.3.4.RELEASE - 2.2.13 + 2.2.14 3.0.0 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 3.1.0 + + 1.2 - 3.5.1 + 3.6.0 2.6 diff --git a/json-path/pom.xml b/json-path/pom.xml index c03385cf1d..491120d635 100644 --- a/json-path/pom.xml +++ b/json-path/pom.xml @@ -42,7 +42,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -53,13 +53,15 @@ - 2.1.0 + 2.2.0 4.12 - 1.7.14 - 1.1.3 + 1.7.21 + 1.1.7 + + 3.6.0 \ No newline at end of file diff --git a/json/pom.xml b/json/pom.xml index 4d9efe56e4..2b2f80e987 100644 --- a/json/pom.xml +++ b/json/pom.xml @@ -10,22 +10,27 @@ org.everit.json org.everit.json.schema - 1.3.0 + ${everit.json.schema.version} com.alibaba fastjson - 1.2.13 + ${fastjson.version} junit junit - 4.12 + ${junit.version} test + + 1.4.1 + 1.2.21 + 4.12 + diff --git a/junit5/pom.xml b/junit5/pom.xml index 84d64e7b42..14aa51dbe2 100644 --- a/junit5/pom.xml +++ b/junit5/pom.xml @@ -13,15 +13,18 @@ UTF-8 1.8 - 5.0.0-M2 - 1.0.0-M2 + 5.0.0-M3 + 1.0.0-M3 + + 3.6.0 + 2.19.1 maven-compiler-plugin - 3.1 + ${maven-compiler-plugin.version} ${java.version} ${java.version} @@ -29,7 +32,7 @@ maven-surefire-plugin - 2.19 + ${maven-surefire-plugin.version} org.junit.platform diff --git a/log-mdc/pom.xml b/log-mdc/pom.xml index 7d68049cde..4cabce502e 100644 --- a/log-mdc/pom.xml +++ b/log-mdc/pom.xml @@ -12,19 +12,19 @@ org.springframework spring-context - 4.3.3.RELEASE + ${springframework.version} org.springframework spring-webmvc - 4.3.3.RELEASE + ${springframework.version} log4j log4j - 1.2.17 + ${log4j.version} @@ -36,31 +36,38 @@ org.apache.logging.log4j log4j-core - 2.7 + ${log4j-api.version} com.lmax disruptor - 3.3.4 + ${disruptor.version} ch.qos.logback logback-classic - 1.1.7 + ${logback.version} junit junit - 4.12 + ${junit.version} test - + + 4.3.4.RELEASE + 1.2.17 + 2.7 + 3.3.6 + 1.1.7 + 4.12 + \ No newline at end of file diff --git a/log4j/pom.xml b/log4j/pom.xml index ab384d4dd1..9b87c131b9 100644 --- a/log4j/pom.xml +++ b/log4j/pom.xml @@ -13,39 +13,39 @@ log4j log4j - 1.2.17 + ${log4j.version} org.apache.logging.log4j log4j-api - 2.7 + ${log4j-api.version} org.apache.logging.log4j log4j-core - 2.7 + ${log4j-core.version} com.lmax disruptor - 3.3.4 + ${disruptor.version} ch.qos.logback logback-classic - 1.1.7 + ${logback.version} maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} true true @@ -58,5 +58,15 @@ + + + 1.2.17 + 2.7 + 2.7 + 3.3.6 + 1.1.7 + + 3.6.0 + \ No newline at end of file From 4b3c52df0f2e07fb07b7ccf5f40e11a7fd8ea421 Mon Sep 17 00:00:00 2001 From: DianeDuan Date: Sun, 11 Dec 2016 18:27:47 +0800 Subject: [PATCH 287/399] examples --- .../baeldung/applicationcontext/Course.java | 21 +++++++ .../baeldung/applicationcontext/Dialog.java | 43 ++++++++++++++ .../baeldung/applicationcontext/Student.java | 35 +++++++++++ .../baeldung/applicationcontext/Teacher.java | 39 ++++++++++++ ...classpathxmlapplicationcontext-example.xml | 18 ++++++ ...pplicationcontext-internationalization.xml | 14 +++++ .../resources/dialog/dialog_en.properties | 3 + .../resources/dialog/dialog_zh_CN.properties | 3 + .../ClasspathXmlApplicationContextTest.java | 59 +++++++++++++++++++ 9 files changed, 235 insertions(+) create mode 100644 spring-core/src/main/java/com/baeldung/applicationcontext/Course.java create mode 100644 spring-core/src/main/java/com/baeldung/applicationcontext/Dialog.java create mode 100644 spring-core/src/main/java/com/baeldung/applicationcontext/Student.java create mode 100644 spring-core/src/main/java/com/baeldung/applicationcontext/Teacher.java create mode 100644 spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml create mode 100644 spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml create mode 100644 spring-core/src/main/resources/dialog/dialog_en.properties create mode 100644 spring-core/src/main/resources/dialog/dialog_zh_CN.properties create mode 100644 spring-core/src/test/java/com/baeldung/applicationcontext/ClasspathXmlApplicationContextTest.java diff --git a/spring-core/src/main/java/com/baeldung/applicationcontext/Course.java b/spring-core/src/main/java/com/baeldung/applicationcontext/Course.java new file mode 100644 index 0000000000..e67d99efb4 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/applicationcontext/Course.java @@ -0,0 +1,21 @@ +package com.baeldung.applicationcontext; + +public class Course { + + private String name; + + public Course() { + } + + public Course(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/spring-core/src/main/java/com/baeldung/applicationcontext/Dialog.java b/spring-core/src/main/java/com/baeldung/applicationcontext/Dialog.java new file mode 100644 index 0000000000..53688598da --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/applicationcontext/Dialog.java @@ -0,0 +1,43 @@ +package com.baeldung.applicationcontext; + +import java.util.Locale; + +public class Dialog { + + private Locale locale; + private String hello; + private String thanks; + + public Dialog() { + } + + public Dialog(Locale locale, String hello, String thanks) { + this.locale = locale; + this.hello = hello; + this.thanks = thanks; + } + + public Locale getLocale() { + return locale; + } + + public void setLocale(Locale locale) { + this.locale = locale; + } + + public String getHello() { + return hello; + } + + public void setHello(String hello) { + this.hello = hello; + } + + public String getThanks() { + return thanks; + } + + public void setThanks(String thanks) { + this.thanks = thanks; + } +} diff --git a/spring-core/src/main/java/com/baeldung/applicationcontext/Student.java b/spring-core/src/main/java/com/baeldung/applicationcontext/Student.java new file mode 100644 index 0000000000..fcfcb6f386 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/applicationcontext/Student.java @@ -0,0 +1,35 @@ +package com.baeldung.applicationcontext; + +public class Student { + + private int no; + private String name; + + public Student() { + } + + public Student(int no, String name) { + this.no = no; + this.name = name; + } + + public int getNo() { + return no; + } + + public void setNo(int no) { + this.no = no; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public void destroy() { + System.out.println("Student(no: " + no + ") is destroyed"); + } +} diff --git a/spring-core/src/main/java/com/baeldung/applicationcontext/Teacher.java b/spring-core/src/main/java/com/baeldung/applicationcontext/Teacher.java new file mode 100644 index 0000000000..7ef802a3d6 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/applicationcontext/Teacher.java @@ -0,0 +1,39 @@ +package com.baeldung.applicationcontext; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; + +public class Teacher { + + @Autowired + private ApplicationContext context; + private List courses = new ArrayList<>(); + + public Teacher() { + } + + @PostConstruct + public void addCourse() { + if (context.containsBean("math")) { + Course math = context.getBean("math", Course.class); + courses.add(math); + } + if (context.containsBean("physics")) { + Course physics = context.getBean("physics", Course.class); + courses.add(physics); + } + } + + public List getCourses() { + return courses; + } + + public void setCourses(List courses) { + this.courses = courses; + } +} diff --git a/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml b/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml new file mode 100644 index 0000000000..6b898ad11e --- /dev/null +++ b/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml b/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml new file mode 100644 index 0000000000..fcc09766f9 --- /dev/null +++ b/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml @@ -0,0 +1,14 @@ + + + + + + + dialog/dialog + + + + \ No newline at end of file diff --git a/spring-core/src/main/resources/dialog/dialog_en.properties b/spring-core/src/main/resources/dialog/dialog_en.properties new file mode 100644 index 0000000000..cf65b8990e --- /dev/null +++ b/spring-core/src/main/resources/dialog/dialog_en.properties @@ -0,0 +1,3 @@ +hello=hello +you=you +thanks=thank {0} \ No newline at end of file diff --git a/spring-core/src/main/resources/dialog/dialog_zh_CN.properties b/spring-core/src/main/resources/dialog/dialog_zh_CN.properties new file mode 100644 index 0000000000..ab09c8b39f --- /dev/null +++ b/spring-core/src/main/resources/dialog/dialog_zh_CN.properties @@ -0,0 +1,3 @@ +hello=\u4f60\u597d +you=\u4f60 +thanks=\u8c22\u8c22{0} \ No newline at end of file diff --git a/spring-core/src/test/java/com/baeldung/applicationcontext/ClasspathXmlApplicationContextTest.java b/spring-core/src/test/java/com/baeldung/applicationcontext/ClasspathXmlApplicationContextTest.java new file mode 100644 index 0000000000..8ee280a2e8 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/applicationcontext/ClasspathXmlApplicationContextTest.java @@ -0,0 +1,59 @@ +package com.baeldung.applicationcontext; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +import java.util.List; +import java.util.Locale; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.MessageSource; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class ClasspathXmlApplicationContextTest { + @Test + public void testBasicUsage() { + ApplicationContext context = new ClassPathXmlApplicationContext("classpathxmlapplicationcontext-example.xml"); + Student student = (Student) context.getBean("student"); + assertThat(student.getNo(), equalTo(15)); + assertThat(student.getName(), equalTo("Tom")); + + Student sameStudent = context.getBean("student", Student.class);// do not need cast class + assertThat(sameStudent.getNo(), equalTo(15)); + assertThat(sameStudent.getName(), equalTo("Tom")); + } + + @Test + public void testRegisterShutdownHook() { + ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("classpathxmlapplicationcontext-example.xml"); + context.registerShutdownHook(); + } + + @Test + public void testInternationalization() { + MessageSource resources = new ClassPathXmlApplicationContext("classpathxmlapplicationcontext-internationalization.xml"); + + String enHello = resources.getMessage("hello", null, "Default", Locale.ENGLISH); + String enYou = resources.getMessage("you", null, Locale.ENGLISH); + String enThanks = resources.getMessage("thanks", new Object[] { enYou }, Locale.ENGLISH); + assertThat(enHello, equalTo("hello")); + assertThat(enThanks, equalTo("thank you")); + + String chHello = resources.getMessage("hello", null, "Default", Locale.SIMPLIFIED_CHINESE); + String chYou = resources.getMessage("you", null, Locale.SIMPLIFIED_CHINESE); + String chThanks = resources.getMessage("thanks", new Object[] { chYou }, Locale.SIMPLIFIED_CHINESE); + assertThat(chHello, equalTo("你好")); + assertThat(chThanks, equalTo("谢谢你")); + } + + @Test + public void testApplicationContextAware() { + ApplicationContext context = new ClassPathXmlApplicationContext("classpathxmlapplicationcontext-example.xml"); + Teacher teacher = context.getBean("teacher", Teacher.class); + List courses = teacher.getCourses(); + assertThat(courses.size(), equalTo(1)); + assertThat(courses.get(0).getName(), equalTo("math")); + } +} From 2dc0cf6c3640d187d30f6ac64dfd32eb470d72f4 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sun, 11 Dec 2016 15:35:52 +0200 Subject: [PATCH 288/399] upgrade and cleanup --- spring-rest/pom.xml | 48 ++++++------------- .../baeldung/okhttp/OkHttpMiscLiveTest.java | 3 +- .../RedirectControllerIntegrationTest.java | 3 +- 3 files changed, 18 insertions(+), 36 deletions(-) diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index 3c23f1bca7..ec4b50bfa8 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -54,7 +54,7 @@ commons-fileupload commons-fileupload - 1.3.2 + ${commons-fileupload.version} @@ -85,7 +85,7 @@ com.thoughtworks.xstream xstream - 1.4.8 + ${xstream.version} @@ -99,7 +99,7 @@ org.apache.commons commons-lang3 - 3.5 + ${commons-lang3.version} @@ -171,18 +171,18 @@ com.google.protobuf protobuf-java - 3.1.0 + ${protobuf-java.version} com.googlecode.protobuf-java-format protobuf-java-format - 1.4 + ${protobuf-java-format.version} com.esotericsoftware kryo - 4.0.0 + ${kryo.version} @@ -337,38 +337,20 @@ - - - - 4.3.11.Final - 5.1.40 - - - 5.2.2.Final - + 1.3.2 + 4.0.0 + 1.4 + 3.1.0 + 3.5 + 1.4.9 + 20.0 - 3.4 - - - 1.3 - 4.12 - 1.10.19 - - 4.4.1 - 4.5 - 2.9.0 - - 1.7.13 - 1.1.3 - - 3.6.0 - 2.6 - 2.19.1 1.6.0 + 3.0.4 3.4.1 @@ -380,7 +362,7 @@ org.codehaus.mojo findbugs-maven-plugin - 3.0.4 + ${findbugs-maven-plugin.version} Max FindDeadLocalStores,FindNullDeref diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java index e6b3cc87b0..6ab485ee14 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpMiscLiveTest.java @@ -4,6 +4,7 @@ import static org.baeldung.client.Consts.APPLICATION_PORT; import java.io.File; import java.io.IOException; +import java.net.SocketTimeoutException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -32,7 +33,7 @@ public class OkHttpMiscLiveTest { client = new OkHttpClient(); } - @Test + @Test(expected = SocketTimeoutException.class) public void whenSetRequestTimeout_thenFail() throws IOException { final OkHttpClient clientWithTimeout = new OkHttpClient.Builder().readTimeout(1, TimeUnit.SECONDS).build(); diff --git a/spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java b/spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java index b31bfcf5ec..c604db596a 100644 --- a/spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java +++ b/spring-rest/src/test/java/org/baeldung/web/controller/redirect/RedirectControllerIntegrationTest.java @@ -1,7 +1,6 @@ package org.baeldung.web.controller.redirect; import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.nullValue; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.flash; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.forwardedUrl; @@ -51,7 +50,7 @@ public class RedirectControllerIntegrationTest { @Test public void whenRedirectOnUrlWithUsingRedirectAttributes_thenStatusRedirectionAndRedirectedOnUrlAndAddedAttributeToFlashScope() throws Exception { mockMvc.perform(get("/redirectWithRedirectAttributes")).andExpect(status().is3xxRedirection()).andExpect(flash().attribute("flashAttribute", equalTo("redirectWithRedirectAttributes"))) - .andExpect(model().attribute("attribute", equalTo("redirectWithRedirectAttributes"))).andExpect(model().attribute("flashAttribute", equalTo(nullValue()))).andExpect(redirectedUrl("redirectedUrl?attribute=redirectWithRedirectAttributes")); + .andExpect(model().attribute("attribute", equalTo("redirectWithRedirectAttributes"))).andExpect(model().attribute("flashAttribute", equalTo(null))).andExpect(redirectedUrl("redirectedUrl?attribute=redirectWithRedirectAttributes")); } @Test From d727a324344f9d066a048fbcb6d5fd6a4945b684 Mon Sep 17 00:00:00 2001 From: Ante Pocedulic Date: Sun, 11 Dec 2016 19:41:05 +0100 Subject: [PATCH 289/399] -added new files for integrations patterns with apache camel article (#887) --- .../camel/file/ContentBasedFileRouter.java | 16 ++++++ .../file/DeadLetterChannelFileRouter.java | 22 ++++++++ .../file/MessageTranslatorFileRouter.java | 14 +++++ .../camel/file/MulticastFileRouter.java | 18 ++++++ .../camel/file/SplitterFileRouter.java | 15 +++++ ...mel-context-ContentBasedFileRouterTest.xml | 13 +++++ ...el-context-DeadLetterChannelFileRouter.xml | 13 +++++ ...ontext-MessageTranslatorFileRouterTest.xml | 13 +++++ .../camel-context-MulticastFileRouterTest.xml | 13 +++++ .../camel-context-SplitterFileRouter.xml | 13 +++++ .../src/main/resources/log4j.xml | 18 ++++++ ...ContentBasedFileRouterIntegrationTest.java | 56 +++++++++++++++++++ ...etterChannelFileRouterIntegrationTest.java | 44 +++++++++++++++ ...geTranslatorFileRouterIntegrationTest.java | 50 +++++++++++++++++ .../MulticastFileRouterIntegrationTest.java | 53 ++++++++++++++++++ .../SplitterFileRouterIntegrationTest.java | 52 +++++++++++++++++ 16 files changed, 423 insertions(+) create mode 100644 spring-apache-camel/src/main/java/com/baeldung/camel/file/ContentBasedFileRouter.java create mode 100644 spring-apache-camel/src/main/java/com/baeldung/camel/file/DeadLetterChannelFileRouter.java create mode 100644 spring-apache-camel/src/main/java/com/baeldung/camel/file/MessageTranslatorFileRouter.java create mode 100644 spring-apache-camel/src/main/java/com/baeldung/camel/file/MulticastFileRouter.java create mode 100644 spring-apache-camel/src/main/java/com/baeldung/camel/file/SplitterFileRouter.java create mode 100644 spring-apache-camel/src/main/resources/camel-context-ContentBasedFileRouterTest.xml create mode 100644 spring-apache-camel/src/main/resources/camel-context-DeadLetterChannelFileRouter.xml create mode 100644 spring-apache-camel/src/main/resources/camel-context-MessageTranslatorFileRouterTest.xml create mode 100644 spring-apache-camel/src/main/resources/camel-context-MulticastFileRouterTest.xml create mode 100644 spring-apache-camel/src/main/resources/camel-context-SplitterFileRouter.xml create mode 100644 spring-apache-camel/src/main/resources/log4j.xml create mode 100644 spring-apache-camel/src/test/java/org/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java create mode 100644 spring-apache-camel/src/test/java/org/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java create mode 100644 spring-apache-camel/src/test/java/org/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java create mode 100644 spring-apache-camel/src/test/java/org/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java create mode 100644 spring-apache-camel/src/test/java/org/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java diff --git a/spring-apache-camel/src/main/java/com/baeldung/camel/file/ContentBasedFileRouter.java b/spring-apache-camel/src/main/java/com/baeldung/camel/file/ContentBasedFileRouter.java new file mode 100644 index 0000000000..9106e996c3 --- /dev/null +++ b/spring-apache-camel/src/main/java/com/baeldung/camel/file/ContentBasedFileRouter.java @@ -0,0 +1,16 @@ +package com.baeldung.camel.file; + +import org.apache.camel.builder.RouteBuilder; + +public class ContentBasedFileRouter extends RouteBuilder { + + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER_TXT = "src/test/destination-folder-txt"; + private static final String DESTINATION_FOLDER_OTHER = "src/test/destination-folder-other"; + + @Override + public void configure() throws Exception { + from("file://" + SOURCE_FOLDER + "?delete=true").choice().when(simple("${file:ext} == 'txt'")).to("file://" + DESTINATION_FOLDER_TXT).otherwise().to("file://" + DESTINATION_FOLDER_OTHER); + } + +} diff --git a/spring-apache-camel/src/main/java/com/baeldung/camel/file/DeadLetterChannelFileRouter.java b/spring-apache-camel/src/main/java/com/baeldung/camel/file/DeadLetterChannelFileRouter.java new file mode 100644 index 0000000000..0388560175 --- /dev/null +++ b/spring-apache-camel/src/main/java/com/baeldung/camel/file/DeadLetterChannelFileRouter.java @@ -0,0 +1,22 @@ +package com.baeldung.camel.file; + +import org.apache.camel.Exchange; +import org.apache.camel.LoggingLevel; +import org.apache.camel.Processor; +import org.apache.camel.builder.RouteBuilder; + +public class DeadLetterChannelFileRouter extends RouteBuilder { + private static final String SOURCE_FOLDER = "src/test/source-folder"; + + @Override + public void configure() throws Exception { + errorHandler(deadLetterChannel("log:dead?level=ERROR").maximumRedeliveries(3).redeliveryDelay(1000).retryAttemptedLogLevel(LoggingLevel.ERROR)); + + from("file://" + SOURCE_FOLDER + "?delete=true").process(new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + throw new IllegalArgumentException("Exception thrown!"); + } + }); + } +} diff --git a/spring-apache-camel/src/main/java/com/baeldung/camel/file/MessageTranslatorFileRouter.java b/spring-apache-camel/src/main/java/com/baeldung/camel/file/MessageTranslatorFileRouter.java new file mode 100644 index 0000000000..b99de99dac --- /dev/null +++ b/spring-apache-camel/src/main/java/com/baeldung/camel/file/MessageTranslatorFileRouter.java @@ -0,0 +1,14 @@ +package com.baeldung.camel.file; + +import org.apache.camel.Exchange; +import org.apache.camel.builder.RouteBuilder; + +public class MessageTranslatorFileRouter extends RouteBuilder { + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER = "src/test/destination-folder"; + + @Override + public void configure() throws Exception { + from("file://" + SOURCE_FOLDER + "?delete=true").transform(body().append(header(Exchange.FILE_NAME))).to("file://" + DESTINATION_FOLDER); + } +} diff --git a/spring-apache-camel/src/main/java/com/baeldung/camel/file/MulticastFileRouter.java b/spring-apache-camel/src/main/java/com/baeldung/camel/file/MulticastFileRouter.java new file mode 100644 index 0000000000..75a6e81d45 --- /dev/null +++ b/spring-apache-camel/src/main/java/com/baeldung/camel/file/MulticastFileRouter.java @@ -0,0 +1,18 @@ +package com.baeldung.camel.file; + +import org.apache.camel.builder.RouteBuilder; + +public class MulticastFileRouter extends RouteBuilder { + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER_WORLD = "src/test/destination-folder-world"; + private static final String DESTINATION_FOLDER_HELLO = "src/test/destination-folder-hello"; + + @Override + public void configure() throws Exception { + from("file://" + SOURCE_FOLDER + "?delete=true").multicast().to("direct:append", "direct:prepend").end(); + + from("direct:append").transform(body().append("World")).to("file://" + DESTINATION_FOLDER_WORLD); + + from("direct:prepend").transform(body().prepend("Hello")).to("file://" + DESTINATION_FOLDER_HELLO); + } +} diff --git a/spring-apache-camel/src/main/java/com/baeldung/camel/file/SplitterFileRouter.java b/spring-apache-camel/src/main/java/com/baeldung/camel/file/SplitterFileRouter.java new file mode 100644 index 0000000000..551f9c9685 --- /dev/null +++ b/spring-apache-camel/src/main/java/com/baeldung/camel/file/SplitterFileRouter.java @@ -0,0 +1,15 @@ +package com.baeldung.camel.file; + +import org.apache.camel.Exchange; +import org.apache.camel.builder.RouteBuilder; + +public class SplitterFileRouter extends RouteBuilder { + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER = "src/test/destination-folder"; + + @Override + public void configure() throws Exception { + + from("file://" + SOURCE_FOLDER + "?delete=true").split(body().convertToString().tokenize("\n")).setHeader(Exchange.FILE_NAME, body()).to("file://" + DESTINATION_FOLDER); + } +} diff --git a/spring-apache-camel/src/main/resources/camel-context-ContentBasedFileRouterTest.xml b/spring-apache-camel/src/main/resources/camel-context-ContentBasedFileRouterTest.xml new file mode 100644 index 0000000000..f6bf8c7503 --- /dev/null +++ b/spring-apache-camel/src/main/resources/camel-context-ContentBasedFileRouterTest.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-apache-camel/src/main/resources/camel-context-DeadLetterChannelFileRouter.xml b/spring-apache-camel/src/main/resources/camel-context-DeadLetterChannelFileRouter.xml new file mode 100644 index 0000000000..3ed80da7e0 --- /dev/null +++ b/spring-apache-camel/src/main/resources/camel-context-DeadLetterChannelFileRouter.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-apache-camel/src/main/resources/camel-context-MessageTranslatorFileRouterTest.xml b/spring-apache-camel/src/main/resources/camel-context-MessageTranslatorFileRouterTest.xml new file mode 100644 index 0000000000..d3d2706e22 --- /dev/null +++ b/spring-apache-camel/src/main/resources/camel-context-MessageTranslatorFileRouterTest.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-apache-camel/src/main/resources/camel-context-MulticastFileRouterTest.xml b/spring-apache-camel/src/main/resources/camel-context-MulticastFileRouterTest.xml new file mode 100644 index 0000000000..4982b61dbd --- /dev/null +++ b/spring-apache-camel/src/main/resources/camel-context-MulticastFileRouterTest.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-apache-camel/src/main/resources/camel-context-SplitterFileRouter.xml b/spring-apache-camel/src/main/resources/camel-context-SplitterFileRouter.xml new file mode 100644 index 0000000000..1f5945707a --- /dev/null +++ b/spring-apache-camel/src/main/resources/camel-context-SplitterFileRouter.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-apache-camel/src/main/resources/log4j.xml b/spring-apache-camel/src/main/resources/log4j.xml new file mode 100644 index 0000000000..4a86fb2357 --- /dev/null +++ b/spring-apache-camel/src/main/resources/log4j.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java new file mode 100644 index 0000000000..29a5b4fc0f --- /dev/null +++ b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java @@ -0,0 +1,56 @@ +package org.apache.camel.file.processor; + +import java.io.File; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +@RunWith(JUnit4.class) +public class ContentBasedFileRouterIntegrationTest { + + private static final long DURATION_MILIS = 10000; + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER_TXT = "src/test/destination-folder-txt"; + private static final String DESTINATION_FOLDER_OTHER = "src/test/destination-folder-other"; + + @Before + public void setUp() throws Exception { + File sourceFolder = new File(SOURCE_FOLDER); + File destinationFolderTxt = new File(DESTINATION_FOLDER_TXT); + File destinationFolderOther = new File(DESTINATION_FOLDER_OTHER); + + cleanFolder(sourceFolder); + cleanFolder(destinationFolderTxt); + cleanFolder(destinationFolderOther); + + sourceFolder.mkdirs(); + File file1 = new File(SOURCE_FOLDER + "/File1.txt"); + File file2 = new File(SOURCE_FOLDER + "/File2.csv"); + file1.createNewFile(); + file2.createNewFile(); + } + + private void cleanFolder(File folder) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile()) { + file.delete(); + } + } + } + } + + @Test + @Ignore + public void routeTest() throws InterruptedException { + ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-ContentBasedFileRouterTest.xml"); + Thread.sleep(DURATION_MILIS); + applicationContext.close(); + + } +} \ No newline at end of file diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java new file mode 100644 index 0000000000..49d91aa661 --- /dev/null +++ b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java @@ -0,0 +1,44 @@ +package org.apache.camel.file.processor; + +import java.io.File; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class DeadLetterChannelFileRouterIntegrationTest { + + private static final long DURATION_MILIS = 10000; + private static final String SOURCE_FOLDER = "src/test/source-folder"; + + @Before + public void setUp() throws Exception { + File sourceFolder = new File(SOURCE_FOLDER); + + cleanFolder(sourceFolder); + + sourceFolder.mkdirs(); + File file = new File(SOURCE_FOLDER + "/File.txt"); + file.createNewFile(); + } + + private void cleanFolder(File folder) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile()) { + file.delete(); + } + } + } + } + + @Test + public void routeTest() throws InterruptedException { + ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-DeadLetterChannelFileRouter.xml"); + Thread.sleep(DURATION_MILIS); + applicationContext.close(); + + } +} diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java new file mode 100644 index 0000000000..d9d889c4df --- /dev/null +++ b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java @@ -0,0 +1,50 @@ +package org.apache.camel.file.processor; + +import java.io.File; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class MessageTranslatorFileRouterIntegrationTest { + + private static final long DURATION_MILIS = 10000; + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER = "src/test/destination-folder"; + + @Before + public void setUp() throws Exception { + File sourceFolder = new File(SOURCE_FOLDER); + File destinationFolder = new File(DESTINATION_FOLDER); + + cleanFolder(sourceFolder); + cleanFolder(destinationFolder); + + sourceFolder.mkdirs(); + File file1 = new File(SOURCE_FOLDER + "/File1.txt"); + File file2 = new File(SOURCE_FOLDER + "/File2.txt"); + file1.createNewFile(); + file2.createNewFile(); + } + + private void cleanFolder(File folder) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile()) { + file.delete(); + } + } + } + } + + @Test + @Ignore + public void routeTest() throws InterruptedException { + ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-MessageTranslatorFileRouterTest.xml"); + Thread.sleep(DURATION_MILIS); + applicationContext.close(); + + } +} diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java new file mode 100644 index 0000000000..960d310692 --- /dev/null +++ b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java @@ -0,0 +1,53 @@ +package org.apache.camel.file.processor; + +import java.io.File; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class MulticastFileRouterIntegrationTest { + + private static final long DURATION_MILIS = 10000; + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER_WORLD = "src/test/destination-folder-world"; + private static final String DESTINATION_FOLDER_HELLO = "src/test/destination-folder-hello"; + + @Before + public void setUp() throws Exception { + File sourceFolder = new File(SOURCE_FOLDER); + File destinationFolderWorld = new File(DESTINATION_FOLDER_WORLD); + File destinationFolderHello = new File(DESTINATION_FOLDER_HELLO); + + cleanFolder(sourceFolder); + cleanFolder(destinationFolderWorld); + cleanFolder(destinationFolderHello); + + sourceFolder.mkdirs(); + File file1 = new File(SOURCE_FOLDER + "/File1.txt"); + File file2 = new File(SOURCE_FOLDER + "/File2.txt"); + file1.createNewFile(); + file2.createNewFile(); + } + + private void cleanFolder(File folder) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile()) { + file.delete(); + } + } + } + } + + @Test + @Ignore + public void routeTest() throws InterruptedException { + ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-MulticastFileRouterTest.xml"); + Thread.sleep(DURATION_MILIS); + applicationContext.close(); + + } +} diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java new file mode 100644 index 0000000000..9e942dd4c2 --- /dev/null +++ b/spring-apache-camel/src/test/java/org/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java @@ -0,0 +1,52 @@ +package org.apache.camel.file.processor; + +import java.io.File; +import java.io.FileWriter; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class SplitterFileRouterIntegrationTest { + + private static final long DURATION_MILIS = 10000; + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER = "src/test/destination-folder"; + + @Before + public void setUp() throws Exception { + File sourceFolder = new File(SOURCE_FOLDER); + File destinationFolder = new File(DESTINATION_FOLDER); + + cleanFolder(sourceFolder); + cleanFolder(destinationFolder); + + sourceFolder.mkdirs(); + File file = new File(SOURCE_FOLDER + "/File.txt"); + FileWriter fileWriter = new FileWriter(file, false); + fileWriter.write("Hello\nWorld"); + file.createNewFile(); + fileWriter.close(); + } + + private void cleanFolder(File folder) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile()) { + file.delete(); + } + } + } + } + + @Test + @Ignore + public void routeTests() throws InterruptedException { + ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-SplitterFileRouter.xml"); + Thread.sleep(DURATION_MILIS); + applicationContext.close(); + + } +} From 91f36f41e5b481c064980fb7485e51e64b6b4089 Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 12 Dec 2016 00:27:31 +0200 Subject: [PATCH 290/399] upgrade dependencies --- jackson-annotations/pom.xml | 31 ++++---------- jackson/pom.xml | 42 +++++++------------ java-cassandra/pom.xml | 11 ++--- javaxval/pom.xml | 20 ++++++--- jaxb/pom.xml | 9 ++-- jee7/pom.xml | 83 ++++++++++++++++++++----------------- jjwt/pom.xml | 5 ++- jpa-storedprocedure/pom.xml | 12 +++--- 8 files changed, 104 insertions(+), 109 deletions(-) diff --git a/jackson-annotations/pom.xml b/jackson-annotations/pom.xml index 4da0522a5b..559ef5709b 100644 --- a/jackson-annotations/pom.xml +++ b/jackson-annotations/pom.xml @@ -88,28 +88,28 @@ io.rest-assured rest-assured - 3.0.1 + ${rest-assured.version} test io.rest-assured json-schema-validator - 3.0.0 + ${rest-assured.version} test io.rest-assured json-path - 3.0.1 + ${rest-assured.version} test com.github.fge json-schema-validator - 2.2.6 + ${json-schema-validator.version} test @@ -123,7 +123,7 @@ org.assertj assertj-core - 3.6.1 + ${assertj.version} test @@ -187,11 +187,6 @@ - - - 4.3.11.Final - 5.1.38 - 2.8.5 @@ -200,7 +195,6 @@ 1.1.7 - 5.1.3.Final 2.9.6 2.8.0 4.1 @@ -211,21 +205,14 @@ 2.5 - 1.3 4.12 - 2.2.26 - - 4.4.1 - 4.5 - - 2.9.0 + 3.0.1 + 2.2.6 + 3.6.1 - 3.5.1 - 2.6 + 3.6.0 2.19.1 - 2.7 - 1.4.18 UTF-8 1.8 diff --git a/jackson/pom.xml b/jackson/pom.xml index e795ad11a2..9996af10f2 100644 --- a/jackson/pom.xml +++ b/jackson/pom.xml @@ -20,19 +20,19 @@ commons-io commons-io - 2.4 + ${commons-io.version} com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.7.4 + ${jackson.version} org.apache.commons commons-collections4 - 4.0 + ${commons-collections4.version} @@ -41,8 +41,6 @@ ${commons-lang3.version} - - @@ -66,19 +64,19 @@ com.fasterxml.jackson.module jackson-module-jsonSchema - 2.7.2 + ${jackson.version} joda-time joda-time - 2.9.2 + ${joda-time.version} com.google.code.gson gson - 2.6.2 + ${gson.version} @@ -169,40 +167,30 @@ - - 4.3.11.Final - 5.1.38 - - 2.7.8 + 2.8.5 - 1.7.13 - 1.1.3 - - - 5.1.3.Final + 1.7.21 + 1.1.7 19.0 - 3.4 + 3.5 + 2.5 + 2.9.6 + 2.8.0 + 4.1 1.3 4.12 1.10.19 - - 4.4.1 - 4.5 - 2.9.0 - 3.5.1 - 2.6 + 3.6.0 2.19.1 - 2.7 - 1.4.18 diff --git a/java-cassandra/pom.xml b/java-cassandra/pom.xml index 92d3a8ede6..5796043b95 100644 --- a/java-cassandra/pom.xml +++ b/java-cassandra/pom.xml @@ -20,7 +20,7 @@ org.cassandraunit cassandra-unit - 3.0.0.1 + ${cassandra-unit.version} @@ -135,18 +135,15 @@ 1.1.7 - 1.3 4.12 - 1.10.19 - 6.8 - 3.5.1 - 3.5.1 + 3.6.0 2.19.1 - 3.1.0 + 3.1.2 + 3.1.1.0 diff --git a/javaxval/pom.xml b/javaxval/pom.xml index 493119d92e..1503ca49a6 100644 --- a/javaxval/pom.xml +++ b/javaxval/pom.xml @@ -4,42 +4,50 @@ javaxval 0.1-SNAPSHOT + + 4.12 + 1.1.0.Final + 5.3.4.Final + 3.0.0 + 2.2.6 + + junit junit - 4.12 + ${junit.version} javax.validation validation-api - 1.1.0.Final + ${validation-api.version} org.hibernate hibernate-validator - 5.2.1.Final + ${hibernate-validator.version} org.hibernate hibernate-validator-annotation-processor - 5.2.1.Final + ${hibernate-validator.version} javax.el javax.el-api - 2.2.4 + ${javax.el-api.version} org.glassfish.web javax.el - 2.2.4 + ${javax.el.version} diff --git a/jaxb/pom.xml b/jaxb/pom.xml index cce40c55d4..6c36956913 100644 --- a/jaxb/pom.xml +++ b/jaxb/pom.xml @@ -23,7 +23,7 @@ com.sun.istack istack-commons-runtime - 3.0.2 + ${istack.version} @@ -60,7 +60,7 @@ org.eclipse.m2e lifecycle-mapping - 1.0.0 + ${lifecycle-mapping.version} @@ -158,12 +158,15 @@ 2.2.11 + 3.0.2 + 1.7.21 1.1.7 - 3.5.1 + 1.0.0 + 3.6.0 2.3 diff --git a/jee7/pom.xml b/jee7/pom.xml index 627b8723e3..ebe9b6aee9 100644 --- a/jee7/pom.xml +++ b/jee7/pom.xml @@ -12,12 +12,21 @@ 1.7 3.0.0 - 4.11 - 7.0 - - 1.1.4.Final - - 8.0.0.Final + 4.12 + 7.0 + 1.1.11.Final + 8.2.1.Final + 1.7.0 + 1.4.6.Final + 3.0.19.Final + 4.1.1 + 1.0.4 + 1.13 + 2.25 + 1.0.0.Final + + 3.6.0 + 2.6 @@ -29,7 +38,7 @@ org.jboss.arquillian arquillian-bom - ${version.arquillian_core} + ${arquillian_core.version} import pom @@ -40,14 +49,14 @@ javax javaee-api - ${version.javaee_api} + ${javaee_api.version} provided junit junit - ${version.junit} + ${junit.version} test @@ -58,7 +67,7 @@ com.jayway.awaitility awaitility - 1.6.0 + ${awaitility.version} test @@ -82,7 +91,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.1 + ${maven-compiler-plugin.version} ${java.min.version} ${java.min.version} @@ -91,7 +100,7 @@ org.apache.maven.plugins maven-war-plugin - 2.1.1 + ${maven-war-plugin.version} false @@ -114,31 +123,31 @@ io.undertow undertow-websockets-jsr - 1.0.0.Beta25 + ${undertow-websockets-jsr.version} test org.jboss.resteasy resteasy-client - 3.0.5.Final + ${resteasy.version} test org.jboss.resteasy resteasy-jaxb-provider - 3.0.5.Final + ${resteasy.version} test org.jboss.resteasy resteasy-json-p-provider - 3.0.5.Final + ${resteasy.version} test org.wildfly wildfly-arquillian-container-managed - ${version.wildfly} + ${wildfly.version} test @@ -162,7 +171,7 @@ org.wildfly wildfly-dist - ${version.wildfly} + ${wildfly.version} zip false ${project.build.directory} @@ -177,7 +186,7 @@ 2.17 - ${project.build.directory}/wildfly-${version.wildfly} + ${project.build.directory}/wildfly-${wildfly.version} @@ -190,31 +199,31 @@ io.undertow undertow-websockets-jsr - 1.0.0.Beta25 + ${undertow-websockets-jsr.version} test org.jboss.resteasy resteasy-client - 3.0.5.Final + ${resteasy.version} test org.jboss.resteasy resteasy-jaxb-provider - 3.0.5.Final + ${resteasy.version} test org.jboss.resteasy resteasy-json-p-provider - 3.0.5.Final + ${resteasy.version} test org.wildfly wildfly-arquillian-container-remote - ${version.wildfly} + ${wildfly.version} test @@ -225,37 +234,37 @@ org.glassfish.main.extras glassfish-embedded-all - 4.0 + ${glassfish-embedded-all.version} test org.glassfish javax.json - 1.0.4 + ${javax.json.version} test org.glassfish.tyrus tyrus-client - 1.3 + ${tyrus.version} test org.glassfish.tyrus tyrus-container-grizzly-client - 1.3 + ${tyrus.version} test org.glassfish.jersey.core jersey-client - 2.4 + ${jersey.version} test org.jboss.arquillian.container arquillian-glassfish-embedded-3.1 - 1.0.0.CR4 + ${arquillian-glassfish.version} test @@ -266,43 +275,43 @@ org.glassfish javax.json - 1.0.4 + ${javax.json.version} test org.glassfish.tyrus tyrus-client - 1.3 + ${tyrus.version} test org.glassfish.tyrus tyrus-container-grizzly-client - 1.3 + ${tyrus.version} test org.glassfish.jersey.core jersey-client - 2.4 + ${jersey.version} test org.glassfish.jersey.media jersey-media-json-jackson - 2.4 + ${jersey.version} test org.glassfish.jersey.media jersey-media-json-processing - 2.4 + ${jersey.version} test org.jboss.arquillian.container arquillian-glassfish-remote-3.1 - 1.0.0.CR4 + ${arquillian-glassfish.version} test diff --git a/jjwt/pom.xml b/jjwt/pom.xml index d2a3f1cdd8..c1332fa2d7 100644 --- a/jjwt/pom.xml +++ b/jjwt/pom.xml @@ -14,13 +14,14 @@ org.springframework.boot spring-boot-starter-parent - 1.3.5.RELEASE + 1.4.2.RELEASE UTF-8 1.8 + 0.7.0 @@ -48,7 +49,7 @@ io.jsonwebtoken jjwt - 0.6.0 + ${jjwt.version} diff --git a/jpa-storedprocedure/pom.xml b/jpa-storedprocedure/pom.xml index b5a2e8693c..797303dc29 100644 --- a/jpa-storedprocedure/pom.xml +++ b/jpa-storedprocedure/pom.xml @@ -9,8 +9,10 @@ 7.0 - 5.1.0.Final - 5.1.38 + 5.2.5.Final + 6.0.5 + 4.12 + 2.5 2.19.1 @@ -69,7 +71,7 @@ mysql mysql-connector-java - 5.1.38 + ${mysql.version} @@ -77,13 +79,13 @@ junit junit - 4.4 + ${junit.version} commons-io commons-io - 2.4 + ${commons-io.version} From cddeb95e8e6db8a82d39fe97e882692116068815 Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Mon, 12 Dec 2016 09:23:40 +0100 Subject: [PATCH 291/399] Format namespace --- .../resources/classpathxmlapplicationcontext-example.xml | 6 +++--- .../classpathxmlapplicationcontext-internationalization.xml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml b/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml index 6b898ad11e..d0ba03cec8 100644 --- a/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml +++ b/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml @@ -1,8 +1,8 @@ + xmlns:context="http://www.springframework.org/schema/context" + xmlns="http://www.springframework.org/schema/beans" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> diff --git a/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml b/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml index fcc09766f9..f68d623be7 100644 --- a/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml +++ b/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml @@ -1,7 +1,7 @@ + xmlns="http://www.springframework.org/schema/beans" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> From 3db2e80ab65a9f9f07e82bf91c1812e4e3640c0c Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Mon, 12 Dec 2016 09:58:08 +0100 Subject: [PATCH 292/399] Unify, simply, format --- .../JoinSplitCollectionsUnitTest.java | 128 ++++++++++-------- 1 file changed, 74 insertions(+), 54 deletions(-) diff --git a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java index 78f79f646b..16b3509925 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java @@ -15,85 +15,99 @@ public class JoinSplitCollectionsUnitTest { public void whenJoiningTwoArrays_thenJoined() { String[] animals1 = new String[] { "Dog", "Cat" }; String[] animals2 = new String[] { "Bird", "Cow" }; - String[] result = Stream.concat(Arrays.stream(animals1), Arrays.stream(animals2)).toArray(String[]::new); + String[] result = Stream.concat( + Arrays.stream(animals1), Arrays.stream(animals2)).toArray(String[]::new); assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); } @Test public void whenJoiningTwoCollections_thenJoined() { - Collection collection1 = Arrays.asList(7, 8, 9); - Collection collection2 = Arrays.asList(10, 11, 12); - Collection result = Stream.concat(collection1.stream(), collection2.stream()).collect(Collectors.toList()); + Collection collection1 = Arrays.asList("Dog", "Cat"); + Collection collection2 = Arrays.asList("Bird", "Cow", "Moose"); + Collection result = Stream.concat( + collection1.stream(), collection2.stream()) + .collect(Collectors.toList()); - assertTrue(result.equals(Arrays.asList(7, 8, 9, 10, 11, 12))); + assertTrue(result.equals(Arrays.asList("Dog", "Cat", "Bird", "Cow", "Moose"))); } @Test public void whenJoiningTwoCollectionsWithFilter_thenJoined() { - Collection collection1 = Arrays.asList(7, 8, 11); - Collection collection2 = Arrays.asList(9, 12, 10); - Collection result = Stream.concat(collection1.stream(), collection2.stream()).filter(next -> next <= 10).collect(Collectors.toList()); + Collection collection1 = Arrays.asList("Dog", "Cat"); + Collection collection2 = Arrays.asList("Bird", "Cow", "Moose"); + Collection result = Stream.concat( + collection1.stream(), collection2.stream()) + .filter(e -> e.length() == 3) + .collect(Collectors.toList()); - assertTrue(result.equals(Arrays.asList(7, 8, 9, 10))); + assertTrue(result.equals(Arrays.asList("Dog", "Cat", "Cow"))); } @Test public void whenConvertArrayToString_thenConverted() { - String[] colors = new String[] { "Red", "Blue", "Green", "Yellow" }; - String result = Arrays.stream(colors).collect(Collectors.joining(", ")); + String[] animals = new String[] { "Dog", "Cat", "Bird", "Cow" }; + String result = Arrays.stream(animals).collect(Collectors.joining(", ")); - assertEquals(result, "Red, Blue, Green, Yellow"); + assertEquals(result, "Dog, Cat, Bird, Cow"); } @Test public void whenConvertCollectionToString_thenConverted() { - Collection directions = Arrays.asList("Left", "Right", "Top", "Bottom"); - String result = directions.stream().collect(Collectors.joining(", ")); + Collection animals = Arrays.asList("Dog", "Cat", "Bird", "Cow"); + String result = animals.stream().collect(Collectors.joining(", ")); - assertEquals(result, "Left, Right, Top, Bottom"); + assertEquals(result, "Dog, Cat, Bird, Cow"); } @Test public void whenConvertMapToString_thenConverted() { - Map users = new HashMap<>(); - users.put(1, "John Doe"); - users.put(2, "Paul Smith"); - users.put(3, "Susan Anderson"); + Map animals = new HashMap<>(); + animals.put(1, "Dog"); + animals.put(2, "Cat"); + animals.put(3, "Cow"); - String result = users.entrySet().stream().map(entry -> entry.getKey() + " = " + entry.getValue()).collect(Collectors.joining(", ")); + String result = animals.entrySet().stream() + .map(entry -> entry.getKey() + " = " + entry.getValue()) + .collect(Collectors.joining(", ")); - assertEquals(result, "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"); + assertEquals(result, "1 = Dog, 2 = Cat, 3 = Cow"); } @Test public void whenConvertNestedCollectionToString_thenConverted() { Collection> nested = new ArrayList<>(); - nested.add(Arrays.asList("Left", "Right", "Top", "Bottom")); - nested.add(Arrays.asList("Red", "Blue", "Green", "Yellow")); + nested.add(Arrays.asList("Dog", "Cat")); + nested.add(Arrays.asList("Cow", "Pig")); - String result = nested.stream().map(nextList -> nextList.stream().collect(Collectors.joining("-"))).collect(Collectors.joining("; ")); + String result = nested.stream().map( + nextList -> nextList.stream() + .collect(Collectors.joining("-"))) + .collect(Collectors.joining("; ")); - assertEquals(result, "Left-Right-Top-Bottom; Red-Blue-Green-Yellow"); + assertEquals(result, "Dog-Cat; Cow-Pig"); } @Test public void whenConvertCollectionToStringAndSkipNull_thenConverted() { - Collection fruits = Arrays.asList("Apple", "Orange", null, "Grape"); - String result = fruits.stream().filter(Objects::nonNull).collect(Collectors.joining(", ")); + Collection animals = Arrays.asList("Dog", "Cat", null, "Moose"); + String result = animals.stream() + .filter(Objects::nonNull) + .collect(Collectors.joining(", ")); - assertEquals(result, "Apple, Orange, Grape"); + assertEquals(result, "Dog, Cat, Moose"); } @Test public void whenSplitCollectionHalf_thenConverted() { - Collection numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); - Collection result1 = new ArrayList<>(); - Collection result2 = new ArrayList<>(); + Collection animals = Arrays.asList( + "Dog", "Cat", "Cow", "Bird", "Moose", "Pig"); + Collection result1 = new ArrayList<>(); + Collection result2 = new ArrayList<>(); AtomicInteger count = new AtomicInteger(); - int midpoint = Math.round(numbers.size() / 2); + int midpoint = Math.round(animals.size() / 2); - numbers.forEach(next -> { + animals.forEach(next -> { int index = count.getAndIncrement(); if (index < midpoint) { result1.add(next); @@ -102,53 +116,59 @@ public class JoinSplitCollectionsUnitTest { } }); - assertTrue(result1.equals(Arrays.asList(1, 2, 3, 4, 5))); - assertTrue(result2.equals(Arrays.asList(6, 7, 8, 9, 10))); + assertTrue(result1.equals(Arrays.asList("Dog", "Cat", "Cow"))); + assertTrue(result2.equals(Arrays.asList("Bird", "Moose", "Pig"))); } @Test public void whenSplitArrayByWordLength_thenConverted() { - String[] words = new String[] { "bye", "cold", "it", "and", "my", "word" }; - Map> result = Arrays.stream(words).collect(Collectors.groupingBy(String::length)); + String[] animals = new String[] { "Dog", "Cat", "Bird", "Cow", "Pig", "Moose"}; + Map> result = Arrays.stream(animals) + .collect(Collectors.groupingBy(String::length)); - assertTrue(result.get(2).equals(Arrays.asList("it", "my"))); - assertTrue(result.get(3).equals(Arrays.asList("bye", "and"))); - assertTrue(result.get(4).equals(Arrays.asList("cold", "word"))); + assertTrue(result.get(3).equals(Arrays.asList("Dog", "Cat", "Cow", "Pig"))); + assertTrue(result.get(4).equals(Arrays.asList("Bird"))); + assertTrue(result.get(5).equals(Arrays.asList("Moose"))); } @Test public void whenConvertStringToArray_thenConverted() { - String colors = "Red, Blue, Green, Yellow"; - String[] result = colors.split(", "); + String animals = "Dog, Cat, Bird, Cow"; + String[] result = animals.split(", "); - assertArrayEquals(result, new String[] { "Red", "Blue", "Green", "Yellow" }); + assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); } @Test public void whenConvertStringToCollection_thenConverted() { - String colors = "Left, Right, Top, Bottom"; - Collection result = Arrays.asList(colors.split(", ")); + String animals = "Dog, Cat, Bird, Cow"; + Collection result = Arrays.asList(animals.split(", ")); - assertTrue(result.equals(Arrays.asList("Left", "Right", "Top", "Bottom"))); + assertTrue(result.equals(Arrays.asList("Dog", "Cat", "Bird", "Cow"))); } @Test public void whenConvertStringToMap_thenConverted() { - String users = "1 = John Doe, 2 = Paul Smith, 3 = Susan Anderson"; + String animals = "1 = Dog, 2 = Cat, 3 = Bird"; - Map result = Arrays.stream(users.split(", ")).map(next -> next.split(" = ")).collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); + Map result = Arrays.stream( + animals.split(", ")).map(next -> next.split(" = ")) + .collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); - assertEquals(result.get(1), "John Doe"); - assertEquals(result.get(2), "Paul Smith"); - assertEquals(result.get(3), "Susan Anderson"); + assertEquals(result.get(1), "Dog"); + assertEquals(result.get(2), "Cat"); + assertEquals(result.get(3), "Bird"); } @Test public void whenConvertCollectionToStringMultipleSeparators_thenConverted() { - String fruits = "Apple. , Orange, Grape. Lemon"; + String animals = "Dog. , Cat, Bird. Cow"; - Collection result = Arrays.stream(fruits.split("[,|.]")).map(String::trim).filter(next -> !next.isEmpty()).collect(Collectors.toList()); + Collection result = Arrays.stream(animals.split("[,|.]")) + .map(String::trim) + .filter(next -> !next.isEmpty()) + .collect(Collectors.toList()); - assertTrue(result.equals(Arrays.asList("Apple", "Orange", "Grape", "Lemon"))); + assertTrue(result.equals(Arrays.asList("Dog", "Cat", "Bird", "Cow"))); } } From a3e623622b857b39ce5b86df9f0bd9fcc7934eec Mon Sep 17 00:00:00 2001 From: Adam InTae Gerard Date: Mon, 12 Dec 2016 05:18:50 -0600 Subject: [PATCH 293/399] BAEL-426: Guide to JSP (#803) * JSP Servlets With Three Examples JSP Article! * Readme BAEL-426 - still needs permanent URL * Cleanup * BAEL-426 - Final spot for working code Tested. It's all good. * Root documentation added! * Cleanup * JSP added * Fixed Broken Module in Spring --- spring-mvc-java/README.md | 2 +- spring-mvc-java/src/test/README.md | 1 + spring-mvc-xml/README.md | 1 + .../java/com/baeldung/jsp/ExampleOne.java | 31 +++++++++++++++++++ .../java/com/baeldung/jsp/ExampleThree.java | 24 ++++++++++++++ .../contentManagementWebMvcConfig.xml | 2 +- .../src/main/webapp/WEB-INF/web.xml | 19 ++++++++++++ .../src/main/webapp/jsp/ExampleThree.jsp | 10 ++++++ .../src/main/webapp/jsp/ExampleTwo.jsp | 13 ++++++++ spring-mvc-xml/src/main/webapp/jsp/index.jsp | 12 +++++++ 10 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleOne.java create mode 100644 spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleThree.java create mode 100644 spring-mvc-xml/src/main/webapp/jsp/ExampleThree.jsp create mode 100644 spring-mvc-xml/src/main/webapp/jsp/ExampleTwo.jsp create mode 100644 spring-mvc-xml/src/main/webapp/jsp/index.jsp diff --git a/spring-mvc-java/README.md b/spring-mvc-java/README.md index 996a7d96b1..783e29f2f2 100644 --- a/spring-mvc-java/README.md +++ b/spring-mvc-java/README.md @@ -15,4 +15,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [A Quick Guide to Spring MVC Matrix Variables](http://www.baeldung.com/spring-mvc-matrix-variables) - [Intro to WebSockets with Spring](http://www.baeldung.com/websockets-spring) - [File Upload with Spring MVC](http://www.baeldung.com/spring-file-upload) -- [Spring MVC Content Negotiation](http://www.baeldung.com/spring-mvc-content-negotiation-json-xml) +- [Spring MVC Content Negotiation](http://www.baeldung.com/spring-mvc-content-negotiation-json-xml) \ No newline at end of file diff --git a/spring-mvc-java/src/test/README.md b/spring-mvc-java/src/test/README.md index 20ee1918af..260bbdca97 100644 --- a/spring-mvc-java/src/test/README.md +++ b/spring-mvc-java/src/test/README.md @@ -1,2 +1,3 @@ ### Relevant Articles: - [Circular Dependencies in Spring](http://www.baeldung.com/circular-dependencies-in-spring) +- [Guide to JSP](http://www.baeldung.com/guide-to-jsp) \ No newline at end of file diff --git a/spring-mvc-xml/README.md b/spring-mvc-xml/README.md index e96a8d0392..097353c88c 100644 --- a/spring-mvc-xml/README.md +++ b/spring-mvc-xml/README.md @@ -13,3 +13,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Basic Forms with Spring MVC](http://www.baeldung.com/spring-mvc-form-tutorial) - [Returning Image/Media Data with Spring MVC](http://www.baeldung.com/spring-mvc-image-media-data) - [Geolocation by IP in Java](http://www.baeldung.com/geolocation-by-ip-with-maxmind) +- [Guide to JSP](http://www.baeldung.com/guide-to-jsp) \ No newline at end of file diff --git a/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleOne.java b/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleOne.java new file mode 100644 index 0000000000..0b153bf8ec --- /dev/null +++ b/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleOne.java @@ -0,0 +1,31 @@ +package com.baeldung.jsp; + +import java.io.IOException; +import java.io.PrintWriter; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class ExampleOne extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + out.println( + "" + + "" + + "" + + "HTML Rendered by Servlet" + + "" + + "" + + "

HTML Rendered by Servlet


" + + "

This page was rendered by the ExampleOne Servlet!

" + + "" + + "" + ); + } +} \ No newline at end of file diff --git a/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleThree.java b/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleThree.java new file mode 100644 index 0000000000..49fefcffde --- /dev/null +++ b/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleThree.java @@ -0,0 +1,24 @@ +package com.baeldung.jsp; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@WebServlet( + name = "ExampleThree", + description = "JSP Servlet With Annotations", + urlPatterns = {"/ExampleThree"} +) +public class ExampleThree extends HttpServlet { + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String message = request.getParameter("message"); + request.setAttribute("text", message); + request.getRequestDispatcher("/jsp/ExampleThree.jsp").forward(request, response); + } +} diff --git a/spring-mvc-xml/src/main/resources/contentManagementWebMvcConfig.xml b/spring-mvc-xml/src/main/resources/contentManagementWebMvcConfig.xml index e68c88d19d..41422d8954 100644 --- a/spring-mvc-xml/src/main/resources/contentManagementWebMvcConfig.xml +++ b/spring-mvc-xml/src/main/resources/contentManagementWebMvcConfig.xml @@ -11,7 +11,7 @@ http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd"> - + diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml index 2240ac0a22..1ea3051426 100644 --- a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml @@ -34,6 +34,25 @@ / + + + + ExampleOne + com.baeldung.jsp.ExampleOne + + + ExampleOne + /jsp/ExampleOne + + + ExampleThree + com.baeldung.jsp.ExampleThree + + + ExampleThree + /jsp/ExampleThree + + diff --git a/spring-mvc-xml/src/main/webapp/jsp/ExampleThree.jsp b/spring-mvc-xml/src/main/webapp/jsp/ExampleThree.jsp new file mode 100644 index 0000000000..665eb86a30 --- /dev/null +++ b/spring-mvc-xml/src/main/webapp/jsp/ExampleThree.jsp @@ -0,0 +1,10 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Java Binding Example + + +

Bound Value

+

You said: ${text}

+ + \ No newline at end of file diff --git a/spring-mvc-xml/src/main/webapp/jsp/ExampleTwo.jsp b/spring-mvc-xml/src/main/webapp/jsp/ExampleTwo.jsp new file mode 100644 index 0000000000..7b2247638d --- /dev/null +++ b/spring-mvc-xml/src/main/webapp/jsp/ExampleTwo.jsp @@ -0,0 +1,13 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Java in Static Page Example + + +

Java in Static Page Example

+ <% String[] arr = {"What's up?", "Hello", "It's a nice day today!"}; + String greetings = arr[(int)(Math.random() * arr.length)]; + %> +

<%= greetings %>

+ + \ No newline at end of file diff --git a/spring-mvc-xml/src/main/webapp/jsp/index.jsp b/spring-mvc-xml/src/main/webapp/jsp/index.jsp new file mode 100644 index 0000000000..58c464125d --- /dev/null +++ b/spring-mvc-xml/src/main/webapp/jsp/index.jsp @@ -0,0 +1,12 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + JSP Examples + + +

Simple JSP Examples

+

Invoke HTML rendered by Servlet: here

+

Java in static page: here

+

Java injected by Servlet: here

+ + \ No newline at end of file From 237da5d16a1b2cddfa4a13105c24c99056ff4557 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 12 Dec 2016 13:23:12 +0200 Subject: [PATCH 294/399] minor readme work --- spring-mvc-java/README.md | 3 ++- spring-mvc-java/src/main/README.md | 2 -- spring-mvc-java/src/test/README.md | 3 --- 3 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 spring-mvc-java/src/main/README.md delete mode 100644 spring-mvc-java/src/test/README.md diff --git a/spring-mvc-java/README.md b/spring-mvc-java/README.md index 783e29f2f2..3da7b42fa3 100644 --- a/spring-mvc-java/README.md +++ b/spring-mvc-java/README.md @@ -15,4 +15,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [A Quick Guide to Spring MVC Matrix Variables](http://www.baeldung.com/spring-mvc-matrix-variables) - [Intro to WebSockets with Spring](http://www.baeldung.com/websockets-spring) - [File Upload with Spring MVC](http://www.baeldung.com/spring-file-upload) -- [Spring MVC Content Negotiation](http://www.baeldung.com/spring-mvc-content-negotiation-json-xml) \ No newline at end of file +- [Spring MVC Content Negotiation](http://www.baeldung.com/spring-mvc-content-negotiation-json-xml) +- [Circular Dependencies in Spring](http://www.baeldung.com/circular-dependencies-in-spring) diff --git a/spring-mvc-java/src/main/README.md b/spring-mvc-java/src/main/README.md deleted file mode 100644 index 20ee1918af..0000000000 --- a/spring-mvc-java/src/main/README.md +++ /dev/null @@ -1,2 +0,0 @@ -### Relevant Articles: -- [Circular Dependencies in Spring](http://www.baeldung.com/circular-dependencies-in-spring) diff --git a/spring-mvc-java/src/test/README.md b/spring-mvc-java/src/test/README.md deleted file mode 100644 index 260bbdca97..0000000000 --- a/spring-mvc-java/src/test/README.md +++ /dev/null @@ -1,3 +0,0 @@ -### Relevant Articles: -- [Circular Dependencies in Spring](http://www.baeldung.com/circular-dependencies-in-spring) -- [Guide to JSP](http://www.baeldung.com/guide-to-jsp) \ No newline at end of file From f73d5e917aa6176df263e2767c306c0c697b5911 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 12 Dec 2016 14:20:06 +0200 Subject: [PATCH 295/399] marking some long running unit tests --- ...itTest.java => JavaTryWithResourcesLongRunningUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename core-java/src/test/java/com/baeldung/java8/{JavaTryWithResourcesUnitTest.java => JavaTryWithResourcesLongRunningUnitTest.java} (98%) diff --git a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesUnitTest.java b/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesUnitTest.java rename to core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java index 4c843ccaaf..b5281f5bf4 100644 --- a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java @@ -8,7 +8,7 @@ import java.io.StringWriter; import java.util.Date; import java.util.Scanner; -public class JavaTryWithResourcesUnitTest { +public class JavaTryWithResourcesLongRunningUnitTest { private static final String TEST_STRING_HELLO_WORLD = "Hello World"; private Date resource1Date, resource2Date; From ca617e425a656f2ed1a25794836c2ce5cc35300d Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 12 Dec 2016 14:21:18 +0200 Subject: [PATCH 296/399] naming in maven cleanup --- spring-boot/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index cd2beb4201..68a5857865 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -5,7 +5,7 @@ spring-boot 0.0.1-SNAPSHOT war - Spring Boot Actuator + spring-boot This is simple boot application for Spring boot actuator test From 0f8a0223790de1d67a544b0af5e72c396f4a0ac9 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 12 Dec 2016 14:23:04 +0200 Subject: [PATCH 297/399] maven cleanup --- hystrix/pom.xml | 2 +- ...strixTimeoutTest.java => HystrixTimeoutIntegrationTest.java} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename hystrix/src/test/java/com/baeldung/hystrix/{HystrixTimeoutTest.java => HystrixTimeoutIntegrationTest.java} (99%) diff --git a/hystrix/pom.xml b/hystrix/pom.xml index 54c17f1487..25c5bb5286 100644 --- a/hystrix/pom.xml +++ b/hystrix/pom.xml @@ -11,7 +11,7 @@ org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE + 1.4.2.RELEASE diff --git a/hystrix/src/test/java/com/baeldung/hystrix/HystrixTimeoutTest.java b/hystrix/src/test/java/com/baeldung/hystrix/HystrixTimeoutIntegrationTest.java similarity index 99% rename from hystrix/src/test/java/com/baeldung/hystrix/HystrixTimeoutTest.java rename to hystrix/src/test/java/com/baeldung/hystrix/HystrixTimeoutIntegrationTest.java index d72895aab9..bf0c542980 100644 --- a/hystrix/src/test/java/com/baeldung/hystrix/HystrixTimeoutTest.java +++ b/hystrix/src/test/java/com/baeldung/hystrix/HystrixTimeoutIntegrationTest.java @@ -10,7 +10,7 @@ import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -public class HystrixTimeoutTest { +public class HystrixTimeoutIntegrationTest { @Test public void givenInputBobAndDefaultSettings_whenCommandExecuted_thenReturnHelloBob(){ From bd29501ed942f0dbb33181e9acc90ea15c6e9e3f Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 12 Dec 2016 14:39:09 +0200 Subject: [PATCH 298/399] upgrade dependencies --- javax-servlets/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml index f1804b4d02..2314b11b18 100644 --- a/javax-servlets/pom.xml +++ b/javax-servlets/pom.xml @@ -13,8 +13,8 @@ org.apache.maven.plugins maven-compiler-plugin - 1.7 - 1.7 + 1.8 + 1.8
@@ -45,7 +45,7 @@ 3.1.0 4.12 - 4.5 + 4.5.2 \ No newline at end of file From c52fddfc97f3682af440ae11709b4bbe30900d7b Mon Sep 17 00:00:00 2001 From: pivovarit Date: Mon, 12 Dec 2016 14:15:39 +0100 Subject: [PATCH 299/399] Fix module pom --- spring-cloud-data-flow/data-flow-shell/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-cloud-data-flow/data-flow-shell/pom.xml b/spring-cloud-data-flow/data-flow-shell/pom.xml index 2b825aa363..85ead9413e 100644 --- a/spring-cloud-data-flow/data-flow-shell/pom.xml +++ b/spring-cloud-data-flow/data-flow-shell/pom.xml @@ -22,7 +22,6 @@ UTF-8 UTF-8 1.8 - 1.1.0.RELEASE Brixton.SR7 From 69cd5e0b4d4970b2d55ecf346bb827fcb1d94c73 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 12 Dec 2016 15:16:08 +0200 Subject: [PATCH 300/399] minor cleanup work --- jee7/pom.xml | 631 +++++++++--------- ...=> AutomaticTimerBeanIntegrationTest.java} | 2 +- ...cAtFixedRateTimerBeanIntegrationTest.java} | 2 +- ...ProgrammaticTimerBeanIntegrationTest.java} | 2 +- ...thFixedDelayTimerBeanIntegrationTest.java} | 2 +- ... => ScheduleTimerBeanIntegrationTest.java} | 2 +- orika/pom.xml | 2 +- .../java/com/baeldung/orika/OrikaTest.java | 105 +-- 8 files changed, 364 insertions(+), 384 deletions(-) rename jee7/src/test/java/com/baeldung/timer/{AutomaticTimerBeanTest.java => AutomaticTimerBeanIntegrationTest.java} (98%) rename jee7/src/test/java/com/baeldung/timer/{ProgrammaticAtFixedRateTimerBeanTest.java => ProgrammaticAtFixedRateTimerBeanIntegrationTest.java} (96%) rename jee7/src/test/java/com/baeldung/timer/{ProgrammaticTimerBeanTest.java => ProgrammaticTimerBeanIntegrationTest.java} (97%) rename jee7/src/test/java/com/baeldung/timer/{ProgrammaticWithFixedDelayTimerBeanTest.java => ProgrammaticWithFixedDelayTimerBeanIntegrationTest.java} (96%) rename jee7/src/test/java/com/baeldung/timer/{ScheduleTimerBeanTest.java => ScheduleTimerBeanIntegrationTest.java} (97%) diff --git a/jee7/pom.xml b/jee7/pom.xml index ebe9b6aee9..66991d03a8 100644 --- a/jee7/pom.xml +++ b/jee7/pom.xml @@ -1,320 +1,335 @@ - - 4.0.0 + + 4.0.0 - com.baeldung - jee7schedule - 1.0-SNAPSHOT - JavaEE 7 Arquillian Archetype Sample - war + com.baeldung + jee7schedule + 1.0-SNAPSHOT + JavaEE 7 Arquillian Archetype Sample + war - - 1.7 - 3.0.0 + + 1.7 + 3.0.0 - 4.12 - 7.0 - 1.1.11.Final - 8.2.1.Final - 1.7.0 - 1.4.6.Final - 3.0.19.Final - 4.1.1 - 1.0.4 - 1.13 - 2.25 - 1.0.0.Final - - 3.6.0 - 2.6 - + 4.12 + 7.0 + 1.1.11.Final + 8.2.1.Final + 1.7.0 + 1.4.6.Final + 3.0.19.Final + 4.1.1 + 1.0.4 + 1.13 + 2.25 + 1.0.0.Final - - ${maven.min.version} - + 3.6.0 + 2.6 + - - - - org.jboss.arquillian - arquillian-bom - ${arquillian_core.version} - import - pom - - - + + ${maven.min.version} + - - - javax - javaee-api - ${javaee_api.version} - provided - - - - junit - junit - ${junit.version} - test - - - org.jboss.arquillian.junit - arquillian-junit-container - test - - - com.jayway.awaitility - awaitility - ${awaitility.version} - test - - - - org.jboss.shrinkwrap.resolver - shrinkwrap-resolver-impl-maven - test - jar - - - - org.jboss.shrinkwrap.resolver - shrinkwrap-resolver-impl-maven-archive - test - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${java.min.version} - ${java.min.version} - - - - org.apache.maven.plugins - maven-war-plugin - ${maven-war-plugin.version} - - false - - - - - - - - - wildfly-managed-arquillian - - true - - - standalone-full.xml - ${project.build.directory}/wildfly-${version.wildfly} - - + + - io.undertow - undertow-websockets-jsr - ${undertow-websockets-jsr.version} - test + org.jboss.arquillian + arquillian-bom + ${arquillian_core.version} + import + pom - - org.jboss.resteasy - resteasy-client - ${resteasy.version} - test - - - org.jboss.resteasy - resteasy-jaxb-provider - ${resteasy.version} - test - - - org.jboss.resteasy - resteasy-json-p-provider - ${resteasy.version} - test - - - org.wildfly - wildfly-arquillian-container-managed - ${wildfly.version} - test - - - - - - maven-dependency-plugin - 2.8 - - ${maven.test.skip} - - - - unpack - process-test-classes - - unpack - + + + + + + javax + javaee-api + ${javaee_api.version} + provided + + + + junit + junit + ${junit.version} + test + + + org.jboss.arquillian.junit + arquillian-junit-container + test + + + com.jayway.awaitility + awaitility + ${awaitility.version} + test + + + + org.jboss.shrinkwrap.resolver + shrinkwrap-resolver-impl-maven + test + jar + + + + org.jboss.shrinkwrap.resolver + shrinkwrap-resolver-impl-maven-archive + test + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${java.min.version} + ${java.min.version} + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + false + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + + + + + + + + + + wildfly-managed-arquillian + + true + + + standalone-full.xml + ${project.build.directory}/wildfly-${version.wildfly} + + + + io.undertow + undertow-websockets-jsr + ${undertow-websockets-jsr.version} + test + + + org.jboss.resteasy + resteasy-client + ${resteasy.version} + test + + + org.jboss.resteasy + resteasy-jaxb-provider + ${resteasy.version} + test + + + org.jboss.resteasy + resteasy-json-p-provider + ${resteasy.version} + test + + + org.wildfly + wildfly-arquillian-container-managed + ${wildfly.version} + test + + + + + + maven-dependency-plugin + 2.8 - - - org.wildfly - wildfly-dist - ${wildfly.version} - zip - false - ${project.build.directory} - - + ${maven.test.skip} - - - - - maven-surefire-plugin - 2.17 - - - ${project.build.directory}/wildfly-${wildfly.version} - - - - - - - - wildfly-remote-arquillian - - - io.undertow - undertow-websockets-jsr - ${undertow-websockets-jsr.version} - test - - - org.jboss.resteasy - resteasy-client - ${resteasy.version} - test - - - org.jboss.resteasy - resteasy-jaxb-provider - ${resteasy.version} - test - - - org.jboss.resteasy - resteasy-json-p-provider - ${resteasy.version} - test - - - org.wildfly - wildfly-arquillian-container-remote - ${wildfly.version} - test - - - - - glassfish-embedded-arquillian - - - org.glassfish.main.extras - glassfish-embedded-all - ${glassfish-embedded-all.version} - test - - - org.glassfish - javax.json - ${javax.json.version} - test - - - org.glassfish.tyrus - tyrus-client - ${tyrus.version} - test - - - org.glassfish.tyrus - tyrus-container-grizzly-client - ${tyrus.version} - test - - - org.glassfish.jersey.core - jersey-client - ${jersey.version} - test - - - org.jboss.arquillian.container - arquillian-glassfish-embedded-3.1 - ${arquillian-glassfish.version} - test - - - - - glassfish-remote-arquillian - - - org.glassfish - javax.json - ${javax.json.version} - test - - - org.glassfish.tyrus - tyrus-client - ${tyrus.version} - test - - - org.glassfish.tyrus - tyrus-container-grizzly-client - ${tyrus.version} - test - - - org.glassfish.jersey.core - jersey-client - ${jersey.version} - test - - - org.glassfish.jersey.media - jersey-media-json-jackson - ${jersey.version} - test - - - org.glassfish.jersey.media - jersey-media-json-processing - ${jersey.version} - test - - - org.jboss.arquillian.container - arquillian-glassfish-remote-3.1 - ${arquillian-glassfish.version} - test - - - - + + + unpack + process-test-classes + + unpack + + + + + org.wildfly + wildfly-dist + ${wildfly.version} + zip + false + ${project.build.directory} + + + + + +
+ + maven-surefire-plugin + 2.17 + + + ${project.build.directory}/wildfly-${wildfly.version} + + + + + + + + wildfly-remote-arquillian + + + io.undertow + undertow-websockets-jsr + ${undertow-websockets-jsr.version} + test + + + org.jboss.resteasy + resteasy-client + ${resteasy.version} + test + + + org.jboss.resteasy + resteasy-jaxb-provider + ${resteasy.version} + test + + + org.jboss.resteasy + resteasy-json-p-provider + ${resteasy.version} + test + + + org.wildfly + wildfly-arquillian-container-remote + ${wildfly.version} + test + + + + + glassfish-embedded-arquillian + + + org.glassfish.main.extras + glassfish-embedded-all + ${glassfish-embedded-all.version} + test + + + org.glassfish + javax.json + ${javax.json.version} + test + + + org.glassfish.tyrus + tyrus-client + ${tyrus.version} + test + + + org.glassfish.tyrus + tyrus-container-grizzly-client + ${tyrus.version} + test + + + org.glassfish.jersey.core + jersey-client + ${jersey.version} + test + + + org.jboss.arquillian.container + arquillian-glassfish-embedded-3.1 + ${arquillian-glassfish.version} + test + + + + + glassfish-remote-arquillian + + + org.glassfish + javax.json + ${javax.json.version} + test + + + org.glassfish.tyrus + tyrus-client + ${tyrus.version} + test + + + org.glassfish.tyrus + tyrus-container-grizzly-client + ${tyrus.version} + test + + + org.glassfish.jersey.core + jersey-client + ${jersey.version} + test + + + org.glassfish.jersey.media + jersey-media-json-jackson + ${jersey.version} + test + + + org.glassfish.jersey.media + jersey-media-json-processing + ${jersey.version} + test + + + org.jboss.arquillian.container + arquillian-glassfish-remote-3.1 + ${arquillian-glassfish.version} + test + + + + diff --git a/jee7/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/AutomaticTimerBeanIntegrationTest.java similarity index 98% rename from jee7/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/AutomaticTimerBeanIntegrationTest.java index df922b28df..0e4c91ad67 100644 --- a/jee7/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java +++ b/jee7/src/test/java/com/baeldung/timer/AutomaticTimerBeanIntegrationTest.java @@ -21,7 +21,7 @@ import static org.hamcrest.Matchers.equalTo; @RunWith(Arquillian.class) -public class AutomaticTimerBeanTest { +public class AutomaticTimerBeanIntegrationTest { //the @AutomaticTimerBean has a method called every 10 seconds //testing the difference ==> 100000 diff --git a/jee7/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanIntegrationTest.java similarity index 96% rename from jee7/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanIntegrationTest.java index 76c0e3e5b8..13cd1729db 100644 --- a/jee7/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java +++ b/jee7/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanIntegrationTest.java @@ -21,7 +21,7 @@ import static org.hamcrest.Matchers.is; @RunWith(Arquillian.class) -public class ProgrammaticAtFixedRateTimerBeanTest { +public class ProgrammaticAtFixedRateTimerBeanIntegrationTest { final static long TIMEOUT = 1000; final static long TOLERANCE = 500l; diff --git a/jee7/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanIntegrationTest.java similarity index 97% rename from jee7/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanIntegrationTest.java index f93ba61fe3..b90cb6d909 100644 --- a/jee7/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java +++ b/jee7/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanIntegrationTest.java @@ -19,7 +19,7 @@ import static org.hamcrest.Matchers.is; @RunWith(Arquillian.class) -public class ProgrammaticTimerBeanTest { +public class ProgrammaticTimerBeanIntegrationTest { final static long TIMEOUT = 5000l; final static long TOLERANCE = 1000l; diff --git a/jee7/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanIntegrationTest.java similarity index 96% rename from jee7/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanIntegrationTest.java index 6764aa386d..e2e660f79b 100644 --- a/jee7/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java +++ b/jee7/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanIntegrationTest.java @@ -21,7 +21,7 @@ import static org.hamcrest.Matchers.is; @RunWith(Arquillian.class) -public class ProgrammaticWithFixedDelayTimerBeanTest { +public class ProgrammaticWithFixedDelayTimerBeanIntegrationTest { final static long TIMEOUT = 15000l; final static long TOLERANCE = 1000l; diff --git a/jee7/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java b/jee7/src/test/java/com/baeldung/timer/ScheduleTimerBeanIntegrationTest.java similarity index 97% rename from jee7/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java rename to jee7/src/test/java/com/baeldung/timer/ScheduleTimerBeanIntegrationTest.java index 7a5b043101..c3c5ad44de 100644 --- a/jee7/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java +++ b/jee7/src/test/java/com/baeldung/timer/ScheduleTimerBeanIntegrationTest.java @@ -21,7 +21,7 @@ import static org.hamcrest.Matchers.equalTo; @RunWith(Arquillian.class) -public class ScheduleTimerBeanTest { +public class ScheduleTimerBeanIntegrationTest { final static long TIMEOUT = 5000l; final static long TOLERANCE = 1000l; diff --git a/orika/pom.xml b/orika/pom.xml index 94efbc77f3..e8ef696301 100644 --- a/orika/pom.xml +++ b/orika/pom.xml @@ -14,7 +14,7 @@ 3.6.0 - Orika + orika diff --git a/orika/src/test/java/com/baeldung/orika/OrikaTest.java b/orika/src/test/java/com/baeldung/orika/OrikaTest.java index 18dfcfa44e..f7f14a5f2d 100644 --- a/orika/src/test/java/com/baeldung/orika/OrikaTest.java +++ b/orika/src/test/java/com/baeldung/orika/OrikaTest.java @@ -4,31 +4,31 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.Arrays; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.junit.Before; +import org.junit.Test; + import ma.glasnost.orika.BoundMapperFacade; import ma.glasnost.orika.CustomMapper; import ma.glasnost.orika.MapperFacade; import ma.glasnost.orika.MapperFactory; -import ma.glasnost.orika.MappingContext; import ma.glasnost.orika.impl.DefaultMapperFactory; -import org.junit.Before; -import org.junit.Test; - public class OrikaTest { + MapperFactory mapperFactory; + CustomMapper customMapper; + // constant to help us cover time zone differences private final long GMT_DIFFERENCE = 46800000; + // + @Before public void before() { mapperFactory = new DefaultMapperFactory.Builder().build(); @@ -68,8 +68,7 @@ public class OrikaTest { @Test public void givenSrcAndDest_whenMapsUsingBoundMapper_thenCorrect() { - BoundMapperFacade boundMapper = mapperFactory - .getMapperFacade(Source.class, Dest.class); + BoundMapperFacade boundMapper = mapperFactory.getMapperFacade(Source.class, Dest.class); Source src = new Source("baeldung", 10); Dest dest = boundMapper.map(src); assertEquals(dest.getAge(), src.getAge()); @@ -78,8 +77,7 @@ public class OrikaTest { @Test public void givenSrcAndDest_whenMapsUsingBoundMapperInReverse_thenCorrect() { - BoundMapperFacade boundMapper = mapperFactory - .getMapperFacade(Source.class, Dest.class); + BoundMapperFacade boundMapper = mapperFactory.getMapperFacade(Source.class, Dest.class); Dest src = new Dest("baeldung", 10); Source dest = boundMapper.mapReverse(src); assertEquals(dest.getAge(), src.getAge()); @@ -88,8 +86,7 @@ public class OrikaTest { @Test public void givenSrcAndDest_whenMapsUsingBoundMapperByObject_thenCorrect() { - BoundMapperFacade boundMapper = mapperFactory - .getMapperFacade(Source.class, Dest.class); + BoundMapperFacade boundMapper = mapperFactory.getMapperFacade(Source.class, Dest.class); Source src = new Source("baeldung", 10); Dest dest = new Dest(); boundMapper.map(src, dest); @@ -99,8 +96,7 @@ public class OrikaTest { @Test public void givenSrcAndDest_whenMapsUsingBoundMapperByObjectInReverse_thenCorrect() { - BoundMapperFacade boundMapper = mapperFactory - .getMapperFacade(Source.class, Dest.class); + BoundMapperFacade boundMapper = mapperFactory.getMapperFacade(Source.class, Dest.class); Dest src = new Dest("baeldung", 10); Source dest = new Source(); boundMapper.mapReverse(src, dest); @@ -110,9 +106,7 @@ public class OrikaTest { @Test public void givenSrcAndDestWithDifferentFieldNames_whenMaps_thenCorrect() { - mapperFactory.classMap(Personne.class, Person.class) - .field("nom", "name").field("surnom", "nickname") - .field("age", "age").register(); + mapperFactory.classMap(Personne.class, Person.class).field("nom", "name").field("surnom", "nickname").field("age", "age").register(); MapperFacade mapper = mapperFactory.getMapperFacade(); @@ -127,8 +121,7 @@ public class OrikaTest { @Test public void givenBothDifferentAndSameFieldNames_whenFailsToMapSameNameFieldAutomatically_thenCorrect() { - mapperFactory.classMap(Personne.class, Person.class) - .field("nom", "name").field("surnom", "nickname").register(); + mapperFactory.classMap(Personne.class, Person.class).field("nom", "name").field("surnom", "nickname").register(); MapperFacade mapper = mapperFactory.getMapperFacade(); Personne frenchPerson = new Personne("Claire", "cla", 25); @@ -139,9 +132,7 @@ public class OrikaTest { @Test public void givenBothDifferentAndSameFieldNames_whenMapsSameNameFieldByDefault_thenCorrect() { - mapperFactory.classMap(Personne.class, Person.class) - .field("nom", "name").field("surnom", "nickname").byDefault() - .register(); + mapperFactory.classMap(Personne.class, Person.class).field("nom", "name").field("surnom", "nickname").byDefault().register(); MapperFacade mapper = mapperFactory.getMapperFacade(); Personne frenchPerson = new Personne("Claire", "cla", 25); @@ -155,9 +146,7 @@ public class OrikaTest { @Test public void givenUnidirectionalMappingSetup_whenMapsUnidirectionally_thenCorrect() { - mapperFactory.classMap(Personne.class, Person.class) - .fieldAToB("nom", "name").fieldAToB("surnom", "nickname") - .fieldAToB("age", "age").register(); + mapperFactory.classMap(Personne.class, Person.class).fieldAToB("nom", "name").fieldAToB("surnom", "nickname").fieldAToB("age", "age").register(); ; MapperFacade mapper = mapperFactory.getMapperFacade(); Personne frenchPerson = new Personne("Claire", "cla", 25); @@ -169,11 +158,9 @@ public class OrikaTest { } - @Test public void givenSrcAndDest_whenCanExcludeField_thenCorrect() { - mapperFactory.classMap(Personne.class, Person.class).exclude("nom") - .field("surnom", "nickname").field("age", "age").register(); + mapperFactory.classMap(Personne.class, Person.class).exclude("nom").field("surnom", "nickname").field("age", "age").register(); MapperFacade mapper = mapperFactory.getMapperFacade(); Personne frenchPerson = new Personne("Claire", "cla", 25); @@ -186,9 +173,7 @@ public class OrikaTest { @Test public void givenSpecificConstructorToUse_whenMaps_thenCorrect() { - mapperFactory.classMap(Personne.class, Person.class).constructorB() - .field("nom", "name").field("surnom", "nickname") - .field("age", "age").register(); + mapperFactory.classMap(Personne.class, Person.class).constructorB().field("nom", "name").field("surnom", "nickname").field("age", "age").register(); ; MapperFacade mapper = mapperFactory.getMapperFacade(); Personne frenchPerson = new Personne("Claire", "cla", 25); @@ -202,12 +187,9 @@ public class OrikaTest { @Test public void givenSrcWithListAndDestWithPrimitiveAttributes_whenMaps_thenCorrect() { - mapperFactory.classMap(PersonNameList.class, PersonNameParts.class) - .field("nameList[0]", "firstName") - .field("nameList[1]", "lastName").register(); + mapperFactory.classMap(PersonNameList.class, PersonNameParts.class).field("nameList[0]", "firstName").field("nameList[1]", "lastName").register(); MapperFacade mapper = mapperFactory.getMapperFacade(); - List nameList = Arrays.asList(new String[]{"Sylvester", - "Stallone"}); + List nameList = Arrays.asList(new String[] { "Sylvester", "Stallone" }); PersonNameList src = new PersonNameList(nameList); PersonNameParts dest = mapper.map(src, PersonNameParts.class); assertEquals(dest.getFirstName(), "Sylvester"); @@ -216,11 +198,9 @@ public class OrikaTest { @Test public void givenSrcWithArrayAndDestWithPrimitiveAttributes_whenMaps_thenCorrect() { - mapperFactory.classMap(PersonNameArray.class, PersonNameParts.class) - .field("nameArray[0]", "firstName") - .field("nameArray[1]", "lastName").register(); + mapperFactory.classMap(PersonNameArray.class, PersonNameParts.class).field("nameArray[0]", "firstName").field("nameArray[1]", "lastName").register(); MapperFacade mapper = mapperFactory.getMapperFacade(); - String[] nameArray = new String[]{"Vin", "Diesel"}; + String[] nameArray = new String[] { "Vin", "Diesel" }; PersonNameArray src = new PersonNameArray(nameArray); PersonNameParts dest = mapper.map(src, PersonNameParts.class); assertEquals(dest.getFirstName(), "Vin"); @@ -229,9 +209,7 @@ public class OrikaTest { @Test public void givenSrcWithMapAndDestWithPrimitiveAttributes_whenMaps_thenCorrect() { - mapperFactory.classMap(PersonNameMap.class, PersonNameParts.class) - .field("nameMap['first']", "firstName") - .field("nameMap[\"last\"]", "lastName").register(); + mapperFactory.classMap(PersonNameMap.class, PersonNameParts.class).field("nameMap['first']", "firstName").field("nameMap[\"last\"]", "lastName").register(); MapperFacade mapper = mapperFactory.getMapperFacade(); Map nameMap = new HashMap<>(); nameMap.put("first", "Leornado"); @@ -244,9 +222,7 @@ public class OrikaTest { @Test public void givenSrcWithNestedFields_whenMaps_thenCorrect() { - mapperFactory.classMap(PersonContainer.class, PersonNameParts.class) - .field("name.firstName", "firstName") - .field("name.lastName", "lastName").register(); + mapperFactory.classMap(PersonContainer.class, PersonNameParts.class).field("name.firstName", "firstName").field("name.lastName", "lastName").register(); MapperFacade mapper = mapperFactory.getMapperFacade(); PersonContainer src = new PersonContainer(new Name("Nick", "Canon")); PersonNameParts dest = mapper.map(src, PersonNameParts.class); @@ -266,8 +242,7 @@ public class OrikaTest { @Test public void givenSrcWithNullAndGlobalConfigForNoNull_whenFailsToMap_ThenCorrect() { - MapperFactory mapperFactory = new DefaultMapperFactory.Builder() - .mapNulls(false).build(); + MapperFactory mapperFactory = new DefaultMapperFactory.Builder().mapNulls(false).build(); mapperFactory.classMap(Source.class, Dest.class); MapperFacade mapper = mapperFactory.getMapperFacade(); Source src = new Source(null, 10); @@ -279,8 +254,7 @@ public class OrikaTest { @Test public void givenSrcWithNullAndLocalConfigForNoNull_whenFailsToMap_ThenCorrect() { - mapperFactory.classMap(Source.class, Dest.class).field("age", "age") - .mapNulls(false).field("name", "name").byDefault().register(); + mapperFactory.classMap(Source.class, Dest.class).field("age", "age").mapNulls(false).field("name", "name").byDefault().register(); MapperFacade mapper = mapperFactory.getMapperFacade(); Source src = new Source(null, 10); Dest dest = new Dest("Clinton", 55); @@ -302,9 +276,7 @@ public class OrikaTest { @Test public void givenDestWithNullReverseMappedToSourceAndLocalConfigForNoNull_whenFailsToMap_thenCorrect() { - mapperFactory.classMap(Source.class, Dest.class).field("age", "age") - .mapNullsInReverse(false).field("name", "name").byDefault() - .register(); + mapperFactory.classMap(Source.class, Dest.class).field("age", "age").mapNullsInReverse(false).field("name", "name").byDefault().register(); MapperFacade mapper = mapperFactory.getMapperFacade(); Dest src = new Dest(null, 10); Source dest = new Source("Vin", 44); @@ -315,9 +287,7 @@ public class OrikaTest { @Test public void givenSrcWithNullAndFieldLevelConfigForNoNull_whenFailsToMap_ThenCorrect() { - mapperFactory.classMap(Source.class, Dest.class).field("age", "age") - .fieldMap("name", "name").mapNulls(false).add().byDefault() - .register(); + mapperFactory.classMap(Source.class, Dest.class).field("age", "age").fieldMap("name", "name").mapNulls(false).add().byDefault().register(); MapperFacade mapper = mapperFactory.getMapperFacade(); Source src = new Source(null, 10); Dest dest = new Dest("Clinton", 55); @@ -328,8 +298,7 @@ public class OrikaTest { @Test public void givenSrcAndDest_whenCustomMapperWorks_thenCorrect() { - mapperFactory.classMap(Personne3.class, Person3.class) - .customize(customMapper).register(); + mapperFactory.classMap(Personne3.class, Person3.class).customize(customMapper).register(); MapperFacade mapper = mapperFactory.getMapperFacade(); long timestamp = new Long("1182882159000"); Personne3 personne3 = new Personne3("Leornardo", timestamp); @@ -339,14 +308,12 @@ public class OrikaTest { // since different timezones will resolve the timestamp to a different // datetime string, it suffices to check only for format rather than // specific date - assertTrue(timestampTest.charAt(10) == 'T' - && timestampTest.charAt(19) == 'Z'); + assertTrue(timestampTest.charAt(10) == 'T' && timestampTest.charAt(19) == 'Z'); } @Test public void givenSrcAndDest_whenCustomMapperWorksBidirectionally_thenCorrect() { - mapperFactory.classMap(Personne3.class, Person3.class) - .customize(customMapper).register(); + mapperFactory.classMap(Personne3.class, Person3.class).customize(customMapper).register(); MapperFacade mapper = mapperFactory.getMapperFacade(); String dateTime = "2007-06-26T21:22:39Z"; @@ -355,12 +322,10 @@ public class OrikaTest { Personne3 personne3 = mapper.map(person3, Personne3.class); long timestampToTest = personne3.getDtob(); /* - * since different timezones will resolve the datetime to a different - * unix timestamp, we must provide a range of tolerance - */ - assertTrue(timestampToTest == timestamp - || timestampToTest >= timestamp - GMT_DIFFERENCE - || timestampToTest <= timestamp + GMT_DIFFERENCE); + * since different timezones will resolve the datetime to a different + * unix timestamp, we must provide a range of tolerance + */ + assertTrue(timestampToTest == timestamp || timestampToTest >= timestamp - GMT_DIFFERENCE || timestampToTest <= timestamp + GMT_DIFFERENCE); } From c61a7ebdaa85770b505c01967cf427153d850b5c Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 12 Dec 2016 15:16:56 +0200 Subject: [PATCH 301/399] upgrade dependencies --- hazelcast/pom.xml | 4 ++-- httpclient/pom.xml | 31 +++++++++++-------------------- hystrix/pom.xml | 10 +++++----- immutables/pom.xml | 19 ++++++++++++++----- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/hazelcast/pom.xml b/hazelcast/pom.xml index 00960eadd2..91e2cd2c61 100644 --- a/hazelcast/pom.xml +++ b/hazelcast/pom.xml @@ -64,14 +64,14 @@ - 3.7.2 + 3.7.4 1.7.21 1.1.7 - 3.5.1 + 3.6.0 \ No newline at end of file diff --git a/httpclient/pom.xml b/httpclient/pom.xml index cac363c414..be0daae995 100644 --- a/httpclient/pom.xml +++ b/httpclient/pom.xml @@ -51,13 +51,13 @@ commons-codec commons-codec - 1.9 + ${commons-codec.version} org.apache.httpcomponents httpasyncclient - 4.1-beta1 + ${httpasyncclient.version} @@ -188,37 +188,28 @@ - - 4.3.11.Final - 5.1.38 - - 1.7.13 - 1.1.3 - - - 5.1.3.Final + 1.7.21 + 1.1.7 19.0 - 3.4 + 3.5 + 1.10 + 4.1.2 1.3 4.12 1.10.19 - 4.4.1 - 4.5 - - 2.9.0 + 4.4.5 + 4.5.2 - 3.5.1 - 2.6 + 3.6.0 2.19.1 - 2.7 - 1.4.18 + 1.6.1 diff --git a/hystrix/pom.xml b/hystrix/pom.xml index 25c5bb5286..5e050d726e 100644 --- a/hystrix/pom.xml +++ b/hystrix/pom.xml @@ -21,7 +21,7 @@ 1.8 - 1.5.4 + 1.5.8 0.20.7 @@ -29,13 +29,13 @@ 4.12 - 3.5.1 + 3.6.0 2.6 2.19.1 2.7 - 1.3.16 - 1.4.3 - 1.4.0.RELEASE + 1.5.8 + 1.5.8 + 1.4.2.RELEASE diff --git a/immutables/pom.xml b/immutables/pom.xml index 2b4aba59b1..054763b3d4 100644 --- a/immutables/pom.xml +++ b/immutables/pom.xml @@ -12,24 +12,24 @@ org.immutables value - 2.2.10 + ${immutables.version} junit junit - 4.12 + ${junit.version} test org.assertj assertj-core - 3.5.2 + ${assertj.version} test org.mutabilitydetector MutabilityDetector - 0.9.5 + ${mutabilitydetector.version} test @@ -39,7 +39,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -47,4 +47,13 @@ + + + 2.3.10 + 4.12 + 3.6.1 + 0.9.6 + + 3.6.0 + \ No newline at end of file From 15ed123945cc12113e8d5e18893452e8b4871c22 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 12 Dec 2016 15:21:26 +0200 Subject: [PATCH 302/399] fixing missing dependency --- .../data-flow-server/pom.xml | 158 +++++++++--------- .../data-flow-shell/pom.xml | 155 ++++++++--------- 2 files changed, 157 insertions(+), 156 deletions(-) diff --git a/spring-cloud-data-flow/data-flow-server/pom.xml b/spring-cloud-data-flow/data-flow-server/pom.xml index 689d09ead9..05684008c6 100644 --- a/spring-cloud-data-flow/data-flow-server/pom.xml +++ b/spring-cloud-data-flow/data-flow-server/pom.xml @@ -1,70 +1,70 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - org.baeldung.spring.cloud - data-flow-server - 0.0.1-SNAPSHOT - jar + org.baeldung.spring.cloud + data-flow-server + 0.0.1-SNAPSHOT + jar - data-flow-server - Demo project for Spring Boot + data-flow-server + Demo project for Spring Boot - - org.springframework.boot - spring-boot-starter-parent - 1.4.2.RELEASE - - - - - UTF-8 - UTF-8 - 1.8 - 1.1.0.RELEASE - Brixton.SR7 - - - - - org.springframework.cloud - spring-cloud-starter-dataflow-server-local - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.cloud - spring-cloud-dataflow-dependencies - ${spring-cloud-dataflow-dependencies.version} - pom - import - - - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud-dependencies.version} - pom - import - - - - - - - + org.springframework.boot - spring-boot-maven-plugin - - + spring-boot-starter-parent + 1.4.2.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + 1.1.0.RELEASE + Brixton.SR7 + + + + + org.springframework.cloud + spring-cloud-starter-dataflow-server-local + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-dataflow-dependencies + ${spring-cloud-dataflow-dependencies.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud-dependencies.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + org.apache.maven.plugins maven-surefire-plugin @@ -112,23 +112,23 @@ - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + diff --git a/spring-cloud-data-flow/data-flow-shell/pom.xml b/spring-cloud-data-flow/data-flow-shell/pom.xml index 85ead9413e..6711edcb42 100644 --- a/spring-cloud-data-flow/data-flow-shell/pom.xml +++ b/spring-cloud-data-flow/data-flow-shell/pom.xml @@ -1,68 +1,69 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - org.baeldung.spring.cloud - data-flow-shell - 0.0.1-SNAPSHOT - jar + org.baeldung.spring.cloud + data-flow-shell + 0.0.1-SNAPSHOT + jar - data-flow-shell - Demo project for Spring Boot + data-flow-shell + Demo project for Spring Boot - - org.springframework.boot - spring-boot-starter-parent - 1.4.2.RELEASE - - - - - UTF-8 - UTF-8 - 1.8 - Brixton.SR7 - - - - - org.springframework.cloud - spring-cloud-dataflow-shell - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.cloud - spring-cloud-dataflow-dependencies - ${spring-cloud-dataflow-dependencies.version} - pom - import - - - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud-dependencies.version} - pom - import - - - - - - - + org.springframework.boot - spring-boot-maven-plugin - + spring-boot-starter-parent + 1.4.2.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Brixton.SR7 + 1.1.0.RELEASE + + + + + org.springframework.cloud + spring-cloud-dataflow-shell + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-dataflow-dependencies + ${spring-cloud-dataflow-dependencies.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud-dependencies.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + org.apache.maven.plugins maven-surefire-plugin @@ -76,23 +77,23 @@ - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + From 3b53e82b8b7a61a8a5d0f4cbac764feca98e4c95 Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Mon, 12 Dec 2016 20:23:34 +0100 Subject: [PATCH 303/399] Rename args --- .../controller/SimpleControllerHandlerAdapterExample.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java index 48ece758a9..bac091ffeb 100644 --- a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java +++ b/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java @@ -9,8 +9,8 @@ import org.springframework.web.servlet.mvc.AbstractController; public class SimpleControllerHandlerAdapterExample extends AbstractController { @Override - protected ModelAndView handleRequestInternal(HttpServletRequest arg0, - HttpServletResponse arg1) throws Exception { + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { ModelAndView model = new ModelAndView("Greeting"); model.addObject("message", "Dinesh Madhwal"); return model; From f938c89321e7efe2b1845e0a4873f351d6ecccbb Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 12 Dec 2016 21:54:16 +0200 Subject: [PATCH 304/399] cleanup and upgrade --- gson/pom.xml | 36 +++++-------------- guava/pom.xml | 28 +++------------ guava18/pom.xml | 13 ++++--- guava19/pom.xml | 9 +++-- .../httpclient/HttpAsyncClientLiveTest.java | 4 +-- 5 files changed, 30 insertions(+), 60 deletions(-) diff --git a/gson/pom.xml b/gson/pom.xml index d864c289c2..f2a2f4f930 100644 --- a/gson/pom.xml +++ b/gson/pom.xml @@ -13,7 +13,7 @@ joda-time joda-time - 2.4 + ${joda-time.version} @@ -24,13 +24,13 @@ commons-io commons-io - 2.4 + ${commons-io.version} org.apache.commons commons-collections4 - 4.0 + ${commons-collections4.version} @@ -39,8 +39,6 @@ ${commons-lang3.version} - - @@ -112,40 +110,24 @@ - - 4.3.11.Final - 5.1.38 - - 2.3 - - - 1.7.13 - 1.1.3 - - - 5.1.3.Final + 2.8.0 19.0 - 3.4 + 3.5 + 4.1 + 2.5 + 2.9.6 1.3 4.12 1.10.19 - 4.4.1 - 4.5 - - 2.9.0 - - 3.5.1 - 2.6 + 3.6.0 2.19.1 - 2.7 - 1.4.18 diff --git a/guava/pom.xml b/guava/pom.xml index 59ca3aa1bb..a7b4e79e34 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -19,7 +19,7 @@ org.apache.commons commons-collections4 - 4.0 + ${commons-collections4.version} @@ -28,8 +28,6 @@ ${commons-lang3.version} - - @@ -93,37 +91,19 @@ - - 4.3.11.Final - 5.1.38 - - - 1.7.13 - 1.1.3 - - - 5.1.3.Final - 19.0 - 3.4 + 3.5 + 4.1 1.3 4.12 1.10.19 - 4.4.1 - 4.5 - - 2.9.0 - - 3.5.1 - 2.6 + 3.6.0 2.19.1 - 2.7 - 1.4.18 diff --git a/guava18/pom.xml b/guava18/pom.xml index 413e9c35b8..1118a13e07 100644 --- a/guava18/pom.xml +++ b/guava18/pom.xml @@ -11,13 +11,13 @@ com.google.guava guava - 18.0 + ${guava.version} junit junit - 4.12 + ${junit.version} test @@ -26,7 +26,7 @@ maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} true true @@ -39,5 +39,10 @@ - + + + 18.0 + 4.12 + 3.6.0 + \ No newline at end of file diff --git a/guava19/pom.xml b/guava19/pom.xml index 61fbf38575..75f87ccf4f 100644 --- a/guava19/pom.xml +++ b/guava19/pom.xml @@ -17,13 +17,13 @@ junit junit - 4.12 + ${junit.version} test org.hamcrest hamcrest-all - 1.3 + ${hamcrest.version} test @@ -32,7 +32,7 @@ maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} true true @@ -48,6 +48,9 @@ 19.0 + 4.12 + 1.3 + 3.6.0 \ No newline at end of file diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpAsyncClientLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpAsyncClientLiveTest.java index b1399dcab8..f2086f2633 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/HttpAsyncClientLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpAsyncClientLiveTest.java @@ -37,7 +37,7 @@ public class HttpAsyncClientLiveTest { private static final String HOST = "http://www.google.com"; private static final String HOST_WITH_SSL = "https://mms.nw.ru/"; - private static final String HOST_WITH_PROXY = "https://issues.apache.org/"; + private static final String HOST_WITH_PROXY = "http://httpbin.org/"; private static final String URL_SECURED_BY_BASIC_AUTHENTICATION = "http://browserspy.dk/password-ok.php";// "http://localhost:8080/spring-security-rest-basic-auth/api/foos/1"; private static final String DEFAULT_USER = "test";// "user1"; private static final String DEFAULT_PASS = "test";// "user1Pass"; @@ -89,7 +89,7 @@ public class HttpAsyncClientLiveTest { public void whenUseProxyWithHttpClient_thenCorrect() throws Exception { final CloseableHttpAsyncClient client = HttpAsyncClients.createDefault(); client.start(); - final HttpHost proxy = new HttpHost("74.50.126.248", 3127); + final HttpHost proxy = new HttpHost("127.0.0.1", 8080); final RequestConfig config = RequestConfig.custom().setProxy(proxy).build(); final HttpGet request = new HttpGet(HOST_WITH_PROXY); request.setConfig(config); From c89db35aaa8405c01bb8adac081bc57df6dda28e Mon Sep 17 00:00:00 2001 From: DOHA Date: Mon, 12 Dec 2016 22:38:42 +0200 Subject: [PATCH 305/399] upgrade dependencies --- flyway/pom.xml | 11 +++- handling-spring-static-resources/pom.xml | 59 +++++++------------ .../src/main/resources/webSecurityConfig.xml | 6 +- 3 files changed, 32 insertions(+), 44 deletions(-) diff --git a/flyway/pom.xml b/flyway/pom.xml index d53bc7dc41..155390b218 100644 --- a/flyway/pom.xml +++ b/flyway/pom.xml @@ -10,7 +10,7 @@ mysql mysql-connector-java - 6.0.3 + ${mysql.version} @@ -18,12 +18,12 @@ org.flywaydb flyway-maven-plugin - 4.0.3 + ${flyway-maven-plugin.version} org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -31,4 +31,9 @@ + + 6.0.5 + 4.0.3 + 3.6.0 + \ No newline at end of file diff --git a/handling-spring-static-resources/pom.xml b/handling-spring-static-resources/pom.xml index 6dd0c95026..9a14ce9372 100644 --- a/handling-spring-static-resources/pom.xml +++ b/handling-spring-static-resources/pom.xml @@ -91,14 +91,14 @@ javax.inject javax.inject - 1 + ${inject.version} javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet-api.version} javax.servlet.jsp @@ -108,7 +108,7 @@ javax.servlet jstl - 1.2 + ${jstl.version} com.fasterxml.jackson.core @@ -126,14 +126,14 @@ joda-time joda-time - 2.6 + ${joda-time.version} com.github.jknack handlebars - 1.3.2 + ${handlebars.version} @@ -175,7 +175,7 @@ net.alchim31.maven yuicompressor-maven-plugin - 1.5.1 + ${yuicompressor-maven-plugin.version} @@ -210,46 +210,29 @@ 1.8 - 4.2.5.RELEASE - 4.0.4.RELEASE + 4.3.4.RELEASE + 4.2.0.RELEASE - 1.8.1 - 2.3.2-b01 - - - 4.3.11.Final - 5.1.38 - 1.9.2.RELEASE + 1.8.9 + 2.3.2-b02 - 2.7.8 + 2.8.5 - 1.7.13 - 1.1.3 + 1.7.21 + 1.1.7 - - 5.2.2.Final - - - 19.0 - 3.4 - - - 1.3 - 4.12 - 1.10.19 - - 4.4.1 - 4.5 - - 2.9.0 + + 5.3.3.Final + 4.0.6 + 2.9.6 + 1.2 + 3.1.0 + 1 - 3.5.1 - 2.6 - 2.19.1 - 1.4.18 + 1.5.1 \ No newline at end of file diff --git a/handling-spring-static-resources/src/main/resources/webSecurityConfig.xml b/handling-spring-static-resources/src/main/resources/webSecurityConfig.xml index 76b5015e7b..cf944804db 100644 --- a/handling-spring-static-resources/src/main/resources/webSecurityConfig.xml +++ b/handling-spring-static-resources/src/main/resources/webSecurityConfig.xml @@ -2,10 +2,10 @@ From c9bc20ecd3b12ffd05d2000485ff060283753fb4 Mon Sep 17 00:00:00 2001 From: pivovarit Date: Mon, 12 Dec 2016 22:13:40 +0100 Subject: [PATCH 306/399] Refactor Java8CollectionCleanupUnitTest --- .../java8/Java8CollectionCleanupUnitTest.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java b/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java index ef4b80c6e8..4b900c31a7 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java @@ -4,6 +4,7 @@ import com.google.common.collect.Lists; import org.junit.Test; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import static org.hamcrest.Matchers.hasSize; @@ -16,7 +17,9 @@ public class Java8CollectionCleanupUnitTest { @Test public void givenListContainsNulls_whenFilteringParallel_thenCorrect() { final List list = Lists.newArrayList(null, 1, 2, null, 3, null); - final List listWithoutNulls = list.parallelStream().filter(i -> i != null).collect(Collectors.toList()); + final List listWithoutNulls = list.parallelStream() + .filter(Objects::nonNull) + .collect(Collectors.toList()); assertThat(listWithoutNulls, hasSize(3)); } @@ -24,7 +27,9 @@ public class Java8CollectionCleanupUnitTest { @Test public void givenListContainsNulls_whenFilteringSerial_thenCorrect() { final List list = Lists.newArrayList(null, 1, 2, null, 3, null); - final List listWithoutNulls = list.stream().filter(i -> i != null).collect(Collectors.toList()); + final List listWithoutNulls = list.stream() + .filter(Objects::nonNull) + .collect(Collectors.toList()); assertThat(listWithoutNulls, hasSize(3)); } @@ -32,7 +37,7 @@ public class Java8CollectionCleanupUnitTest { @Test public void givenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect() { final List listWithoutNulls = Lists.newArrayList(null, 1, 2, null, 3, null); - listWithoutNulls.removeIf(p -> p == null); + listWithoutNulls.removeIf(Objects::isNull); assertThat(listWithoutNulls, hasSize(3)); } @@ -40,7 +45,9 @@ public class Java8CollectionCleanupUnitTest { @Test public void givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() { final List listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3); - final List listWithoutDuplicates = listWithDuplicates.parallelStream().distinct().collect(Collectors.toList()); + final List listWithoutDuplicates = listWithDuplicates.parallelStream() + .distinct() + .collect(Collectors.toList()); assertThat(listWithoutDuplicates, hasSize(3)); } From 57b4201a9faae1f21094d4aff6ac9c0519fcfc51 Mon Sep 17 00:00:00 2001 From: Shubham Aggarwal Date: Tue, 13 Dec 2016 11:15:56 +0530 Subject: [PATCH 307/399] LiveTest included (#891) * Changed package name, made test as LiveTest * Changed test name to FormServletLiveTest --- javax-servlets/.gitignore | 3 ++- .../java/com/{root => baeldung.servlets}/FormServlet.java | 2 +- .../FormServletTest.java => baeldung.servlets/LiveTest.java} | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) rename javax-servlets/src/main/java/com/{root => baeldung.servlets}/FormServlet.java (97%) rename javax-servlets/src/test/java/com/{root/FormServletTest.java => baeldung.servlets/LiveTest.java} (94%) diff --git a/javax-servlets/.gitignore b/javax-servlets/.gitignore index a51a433798..dfbd063287 100644 --- a/javax-servlets/.gitignore +++ b/javax-servlets/.gitignore @@ -2,4 +2,5 @@ .idea classes target -*.iml \ No newline at end of file +*.iml +out \ No newline at end of file diff --git a/javax-servlets/src/main/java/com/root/FormServlet.java b/javax-servlets/src/main/java/com/baeldung.servlets/FormServlet.java similarity index 97% rename from javax-servlets/src/main/java/com/root/FormServlet.java rename to javax-servlets/src/main/java/com/baeldung.servlets/FormServlet.java index 4f55a02745..fcd9143dff 100644 --- a/javax-servlets/src/main/java/com/root/FormServlet.java +++ b/javax-servlets/src/main/java/com/baeldung.servlets/FormServlet.java @@ -1,4 +1,4 @@ -package com.root; +package com.baeldung.servlets; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; diff --git a/javax-servlets/src/test/java/com/root/FormServletTest.java b/javax-servlets/src/test/java/com/baeldung.servlets/LiveTest.java similarity index 94% rename from javax-servlets/src/test/java/com/root/FormServletTest.java rename to javax-servlets/src/test/java/com/baeldung.servlets/LiveTest.java index 67b419683f..fac4b6bb9c 100644 --- a/javax-servlets/src/test/java/com/root/FormServletTest.java +++ b/javax-servlets/src/test/java/com/baeldung.servlets/LiveTest.java @@ -1,4 +1,4 @@ -package com.root; +package com.baeldung.servlets; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; @@ -13,7 +13,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; -public class FormServletTest { +public class FormServletLiveTest { @Test public void whenPostRequestUsingHttpClient_thenCorrect() throws Exception { From dffbc5cbfa0ff32ef49f4839e2bfd38fd79f3128 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 13 Dec 2016 14:22:52 +0200 Subject: [PATCH 308/399] upgrade and cleanup --- couchbase-sdk/pom.xml | 21 +++++++++++---------- dozer/pom.xml | 20 ++++++++++++++------ ejb/ejb-client/pom.xml | 6 ++++++ ejb/ejb-remote/pom.xml | 9 +++++++-- ejb/pom.xml | 15 +++++++++++---- enterprise-patterns/pom.xml | 6 +++++- feign/pom.xml | 33 +++++++++++++++++++++------------ 7 files changed, 75 insertions(+), 35 deletions(-) diff --git a/couchbase-sdk/pom.xml b/couchbase-sdk/pom.xml index b7b3d1788f..6462cfb57a 100644 --- a/couchbase-sdk/pom.xml +++ b/couchbase-sdk/pom.xml @@ -79,10 +79,10 @@ maven-compiler-plugin - 2.3.2 + ${maven-compiler-plugin.version} - 1.7 - 1.7 + ${java.version} + ${java.version} @@ -100,14 +100,15 @@ - 1.7 + 1.8 UTF-8 - 2.2.6 - 4.2.4.RELEASE - 1.1.3 - 1.7.12 - 4.11 - 3.4 + 2.3.6 + 4.3.4.RELEASE + 1.1.7 + 1.7.21 + 4.12 + 3.5 + 3.6.0 2.19.1 diff --git a/dozer/pom.xml b/dozer/pom.xml index 35ac2394a6..363285f619 100644 --- a/dozer/pom.xml +++ b/dozer/pom.xml @@ -13,7 +13,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 7 7 @@ -26,33 +26,41 @@ org.slf4j slf4j-api - 1.7.5 + ${slf4j.version} org.slf4j jcl-over-slf4j - 1.7.5 + ${slf4j.version} org.apache.commons commons-lang3 - 3.2.1 + ${commons-lang3.version} net.sf.dozer dozer - 5.5.1 + ${dozer.version} junit junit - 4.3 + ${junit.version} test + + 1.7.21 + 3.5 + 5.5.1 + 4.12 + 3.6.0 + + diff --git a/ejb/ejb-client/pom.xml b/ejb/ejb-client/pom.xml index 6ece63572d..84656b40c5 100755 --- a/ejb/ejb-client/pom.xml +++ b/ejb/ejb-client/pom.xml @@ -44,4 +44,10 @@ + + + 4.12 + 2.19.1 + + \ No newline at end of file diff --git a/ejb/ejb-remote/pom.xml b/ejb/ejb-remote/pom.xml index d102edd8e3..601ad69447 100755 --- a/ejb/ejb-remote/pom.xml +++ b/ejb/ejb-remote/pom.xml @@ -15,7 +15,7 @@ javax javaee-api - 7.0 + ${javaee-api.version} provided @@ -25,7 +25,7 @@ org.wildfly.plugins wildfly-maven-plugin - 1.1.0.Alpha5 + ${wildfly-maven-plugin.version} 127.0.0.1 9990 @@ -37,4 +37,9 @@ + + + 7.0 + 1.1.0.Beta1 + \ No newline at end of file diff --git a/ejb/pom.xml b/ejb/pom.xml index 8176de7936..7676165b8b 100755 --- a/ejb/pom.xml +++ b/ejb/pom.xml @@ -38,14 +38,14 @@ javax javaee-api - 7.0 + ${javaee-api.version} provided org.wildfly wildfly-ejb-client-bom - 10.1.0.Final + ${wildfly.version} pom import @@ -57,7 +57,7 @@ maven-compiler-plugin - 3.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -66,7 +66,7 @@ maven-ejb-plugin - 2.4 + ${maven-ejb-plugin.version} 3.2 @@ -79,4 +79,11 @@ ejb-remote ejb-client + + + 7.0 + 10.1.0.Final + 3.6.0 + 2.5.1 + \ No newline at end of file diff --git a/enterprise-patterns/pom.xml b/enterprise-patterns/pom.xml index 036a61c44a..763227e45b 100644 --- a/enterprise-patterns/pom.xml +++ b/enterprise-patterns/pom.xml @@ -23,7 +23,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -32,4 +32,8 @@ + + + 3.6.0 + diff --git a/feign/pom.xml b/feign/pom.xml index af61883f1b..721fa76682 100644 --- a/feign/pom.xml +++ b/feign/pom.xml @@ -16,54 +16,62 @@ UTF-8 + 9.4.0 + 1.7.21 + 2.7 + 1.16.12 + 4.12 + 3.6.0 + 2.19.1 + 1.4.2.RELEASE io.github.openfeign feign-core - 9.3.1 + ${feign.version} io.github.openfeign feign-okhttp - 9.3.1 + ${feign.version} io.github.openfeign feign-gson - 9.3.1 + ${feign.version} io.github.openfeign feign-slf4j - 9.3.1 + ${feign.version} org.slf4j slf4j-api - 1.7.21 + ${slf4j.version} org.apache.logging.log4j log4j-core - 2.6.2 + ${log4j.version} org.apache.logging.log4j log4j-slf4j-impl - 2.6.2 + ${log4j.version} org.projectlombok lombok - 1.16.10 + ${lombok.version} provided junit junit - 4.12 + ${junit.version} test @@ -74,7 +82,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -83,7 +91,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + ${maven-surefire-plugin.version} true @@ -91,9 +99,10 @@ org.springframework.boot spring-boot-maven-plugin - 1.4.0.RELEASE + ${spring-boot-maven-plugin.version} + From a3e61b9427e63acd9bc1d6faa07bbe20c6788c61 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 13 Dec 2016 22:02:58 +0200 Subject: [PATCH 309/399] upgrade and cleanup --- apache-fop/pom.xml | 42 ++++++------------ aspectj/pom.xml | 3 +- assertj/pom.xml | 11 +++-- autovalue/pom.xml | 15 +++++-- cdi/pom.xml | 11 +++-- core-java-9/pom.xml | 4 +- core-java/pom.xml | 43 +++++++------------ .../ExitingExecutorServiceExample.java | 6 +-- deltaspike/pom.xml | 37 +++++++++------- 9 files changed, 79 insertions(+), 93 deletions(-) diff --git a/apache-fop/pom.xml b/apache-fop/pom.xml index 949843a47e..4dd61d8f4e 100644 --- a/apache-fop/pom.xml +++ b/apache-fop/pom.xml @@ -67,7 +67,7 @@ org.apache.xmlgraphics fop - 1.1 + ${fop.version} org.apache.avalon.framework @@ -83,18 +83,18 @@ avalon-framework avalon-framework-api - 4.2.0 + ${avalon-framework.version} avalon-framework avalon-framework-impl - 4.2.0 + ${avalon-framework.version} org.dbdoclet dbdoclet - 8.0.2 + ${dbdoclet.version} @@ -108,7 +108,7 @@ net.sf.jtidy jtidy - r938 + ${jtidy.version} @@ -187,40 +187,22 @@ - - 4.3.11.Final - 5.1.38 - - - 2.7.2 - + 1.1 + 4.3 + 8.0.2 + r938 - 1.7.9 - 1.1.2 - - - 5.1.3.Final - - - 19.0 - 3.3.2 + 1.7.21 + 1.1.7 1.3 4.12 1.10.19 - 4.4 - 4.4 - - 2.9.0 - - 3.5.1 - 2.6 + 3.6.0 2.19.1 - 2.7 - 1.4.18 diff --git a/aspectj/pom.xml b/aspectj/pom.xml index 1c409483ec..2fca4031fb 100644 --- a/aspectj/pom.xml +++ b/aspectj/pom.xml @@ -121,12 +121,11 @@ 1.8 - 1.6.11 UTF-8 1.8.9 1.7.21 1.1.7 - 3.5.1 + 3.6.0 4.12 diff --git a/assertj/pom.xml b/assertj/pom.xml index df55ebba4b..0b3bcbacdb 100644 --- a/assertj/pom.xml +++ b/assertj/pom.xml @@ -23,13 +23,13 @@ junit junit - 4.12 + ${junit.version} test org.assertj assertj-core - 3.5.1 + ${assertj-core.version} test @@ -40,7 +40,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -51,6 +51,11 @@ 19.0 + 3.1.0 + 4.12 + 3.6.1 + + 3.6.0 \ No newline at end of file diff --git a/autovalue/pom.xml b/autovalue/pom.xml index d1f8e825fc..2f6601c30d 100644 --- a/autovalue/pom.xml +++ b/autovalue/pom.xml @@ -5,12 +5,13 @@ autovalue-tutorial 1.0 AutoValue + org.apache.maven.plugins maven-compiler-plugin - 3.3 + ${maven-compiler-plugin.version} 7 7 @@ -19,19 +20,25 @@ + com.google.auto.value auto-value - 1.2 + ${auto-value.version} junit junit - 4.3 + ${junit.version} test - + + + 1.3 + 4.12 + 3.6.0 + diff --git a/cdi/pom.xml b/cdi/pom.xml index 30dd167fa8..231390ea5c 100644 --- a/cdi/pom.xml +++ b/cdi/pom.xml @@ -22,18 +22,18 @@ org.aspectj aspectjweaver - 1.8.9 + ${aspectjweaver.version} org.jboss.weld.se weld-se-core - 2.3.5.Final + ${weld-se-core.version} junit junit - 4.12 + ${junit.version} test @@ -97,7 +97,10 @@ - 4.3.1.RELEASE + 4.3.4.RELEASE + 1.8.9 + 2.4.1.Final + 4.12 2.19.1 diff --git a/core-java-9/pom.xml b/core-java-9/pom.xml index 844ad6a782..bf9325c935 100644 --- a/core-java-9/pom.xml +++ b/core-java-9/pom.xml @@ -76,9 +76,7 @@ - 1.7.13 - 1.0.13 - + 1.7.21 3.6-jigsaw-SNAPSHOT diff --git a/core-java/pom.xml b/core-java/pom.xml index c3a9611682..0c14da2245 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -14,7 +14,7 @@ net.sourceforge.collections collections-generic - 4.01 + ${collections-generic.version} com.google.guava @@ -25,13 +25,13 @@ org.apache.commons commons-collections4 - 4.0 + ${commons-collections4.version} commons-io commons-io - 2.4 + ${commons-io.version} @@ -43,7 +43,7 @@ org.apache.commons commons-math3 - 3.3 + ${commons-math3.version} @@ -122,8 +122,6 @@ test - - org.mockito mockito-core @@ -321,44 +319,33 @@ - - 4.3.11.Final - 5.1.38 - - 2.7.8 + 2.8.5 - 1.7.13 - 1.1.3 - - - 5.1.3.Final + 1.7.21 + 1.1.7 19.0 - 3.4 + 3.5 1.55 1.10 + 3.6.1 + 2.5 + 4.1 + 4.01 1.3 4.12 1.10.19 - 6.8 - 3.5.1 - - 4.4.1 - 4.5 - - 2.9.0 + 6.10 + 3.6.1 - 3.5.1 - 2.6 + 3.6.0 2.19.1 - 2.7 - 1.4.18 diff --git a/core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java b/core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java index 4775fde930..d14a290c46 100644 --- a/core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java +++ b/core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java @@ -16,10 +16,10 @@ public class ExitingExecutorServiceExample { public static void main(String... args) { - ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5); - ExecutorService executorService = MoreExecutors.getExitingExecutorService(executor, 100, TimeUnit.MILLISECONDS); + final ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5); + final ExecutorService executorService = MoreExecutors.getExitingExecutorService(executor, 100, TimeUnit.MILLISECONDS); - executorService.submit(() -> { + executorService.submit((Runnable) () -> { while (true) { } }); diff --git a/deltaspike/pom.xml b/deltaspike/pom.xml index 22cf8f935c..b4a7657e97 100644 --- a/deltaspike/pom.xml +++ b/deltaspike/pom.xml @@ -25,17 +25,22 @@ resources, i.e. build is platform dependent! --> UTF-8 + 1.7.21 + 3.7.4 + 1.7.2 + - 1.0.2.Final + 1.0.2.Final - 8.2.1.Final + 8.2.2.Final - 3.1 - 2.16 - 2.5 + 3.6.0 + 2.19.1 + 2.6 + 1.1.3 1.7 @@ -56,14 +61,14 @@ org.wildfly.bom jboss-javaee-7.0-with-tools - ${version.jboss.bom} + ${jboss.bom.version} pom import org.wildfly.bom jboss-javaee-7.0-with-hibernate - ${version.jboss.bom} + ${jboss.bom.version} pom import @@ -187,14 +192,14 @@ org.apache.deltaspike.modules deltaspike-data-module-api - 1.7.1 + ${deltaspike.version} compile org.apache.deltaspike.modules deltaspike-data-module-impl - 1.7.1 + ${deltaspike.version} runtime @@ -202,20 +207,20 @@ com.mysema.querydsl querydsl-apt - 3.7.4 + ${querydsl.version} provided com.mysema.querydsl querydsl-jpa - 3.7.4 + ${querydsl.version} org.slf4j slf4j-log4j12 - 1.6.1 + ${slf4j.version} @@ -226,7 +231,7 @@ maven-war-plugin - ${version.war.plugin} + ${war.plugin.version} false @@ -235,7 +240,7 @@ com.mysema.maven apt-maven-plugin - 1.0.9 + ${apt-maven-plugin.version} @@ -253,7 +258,7 @@ org.wildfly.plugins wildfly-maven-plugin - ${version.wildfly.maven.plugin} + ${wildfly.maven.plugin.version} @@ -272,7 +277,7 @@ maven-surefire-plugin - ${version.surefire.plugin} + ${surefire.plugin.version} true From 5d0972d334a68b1bfce1715c170fcacd2130dde9 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 13 Dec 2016 22:17:12 +0200 Subject: [PATCH 310/399] upgrade dependencies --- annotations/annotation-processing/pom.xml | 2 +- annotations/annotation-user/pom.xml | 9 +++++++-- apache-cxf/cxf-introduction/pom.xml | 8 ++++++-- apache-cxf/cxf-jaxrs-implementation/pom.xml | 8 ++++++-- apache-cxf/cxf-spring/pom.xml | 14 +++++++++----- apache-cxf/pom.xml | 15 ++++++++++++--- 6 files changed, 41 insertions(+), 15 deletions(-) diff --git a/annotations/annotation-processing/pom.xml b/annotations/annotation-processing/pom.xml index 6d07394b87..e88e441b3e 100644 --- a/annotations/annotation-processing/pom.xml +++ b/annotations/annotation-processing/pom.xml @@ -15,7 +15,7 @@ 1.0-rc2 - 3.5.1 + 3.6.0 diff --git a/annotations/annotation-user/pom.xml b/annotations/annotation-user/pom.xml index f76f691f93..a365f35c11 100644 --- a/annotations/annotation-user/pom.xml +++ b/annotations/annotation-user/pom.xml @@ -13,6 +13,11 @@ annotation-user + + 4.12 + 3.6.0 + + @@ -24,7 +29,7 @@ junit junit - 4.12 + ${junit.version} test @@ -37,7 +42,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 diff --git a/apache-cxf/cxf-introduction/pom.xml b/apache-cxf/cxf-introduction/pom.xml index 0902bd690e..6e0ceaba7e 100644 --- a/apache-cxf/cxf-introduction/pom.xml +++ b/apache-cxf/cxf-introduction/pom.xml @@ -4,15 +4,18 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 cxf-introduction + com.baeldung apache-cxf 0.0.1-SNAPSHOT + - 3.1.6 + 3.1.8 2.19.1 + @@ -24,7 +27,7 @@ maven-surefire-plugin - 2.19.1 + ${surefire.version} **/*LiveTest.java @@ -33,6 +36,7 @@ + org.apache.cxf diff --git a/apache-cxf/cxf-jaxrs-implementation/pom.xml b/apache-cxf/cxf-jaxrs-implementation/pom.xml index b3a81aef82..c3095be5a5 100644 --- a/apache-cxf/cxf-jaxrs-implementation/pom.xml +++ b/apache-cxf/cxf-jaxrs-implementation/pom.xml @@ -4,17 +4,20 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 cxf-jaxrs-implementation + com.baeldung apache-cxf 0.0.1-SNAPSHOT + UTF-8 - 3.1.7 + 3.1.8 4.5.2 2.19.1 + @@ -26,7 +29,7 @@ maven-surefire-plugin - 2.19.1 + ${surefire.version} **/*LiveTest.java @@ -35,6 +38,7 @@ + org.apache.cxf diff --git a/apache-cxf/cxf-spring/pom.xml b/apache-cxf/cxf-spring/pom.xml index 8f1dee965a..79a7650ced 100644 --- a/apache-cxf/cxf-spring/pom.xml +++ b/apache-cxf/cxf-spring/pom.xml @@ -33,7 +33,7 @@ javax.servlet javax.servlet-api - 3.1.0 + ${javax.servlet-api.version} @@ -41,7 +41,7 @@ maven-war-plugin - 2.6 + ${maven-war-plugin.version} false @@ -66,7 +66,7 @@ org.codehaus.cargo cargo-maven2-plugin - 1.4.19 + ${cargo-maven2-plugin.version} tomcat8x @@ -121,9 +121,13 @@ - 3.1.6 - 4.3.1.RELEASE + 3.1.8 + 4.3.4.RELEASE + 3.1.0 + + 2.6 2.19.1 + 1.6.1 diff --git a/apache-cxf/pom.xml b/apache-cxf/pom.xml index af7949bb6c..d407527c51 100644 --- a/apache-cxf/pom.xml +++ b/apache-cxf/pom.xml @@ -5,19 +5,28 @@ apache-cxf 0.0.1-SNAPSHOT pom + cxf-introduction cxf-spring cxf-jaxrs-implementation + + + 4.12 + 3.6.0 + 1.5.0 + + junit junit - 4.12 + ${junit.version} test + install @@ -25,7 +34,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 @@ -34,7 +43,7 @@ org.codehaus.mojo exec-maven-plugin - 1.5.0 + ${exec-maven-plugin.version} From 12afdf20a11c63cd9962a16ba2d52ed39137bf42 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 14 Dec 2016 00:10:02 +0200 Subject: [PATCH 311/399] minor fix --- .../java/org/baeldung/spring/Application.java | 22 +++++++++++++++++-- .../org/baeldung/spring/ListenerConfig.java | 16 -------------- .../src/main/resources/application.properties | 3 ++- 3 files changed, 22 insertions(+), 19 deletions(-) delete mode 100644 spring-security-rest-full/src/main/java/org/baeldung/spring/ListenerConfig.java diff --git a/spring-security-rest-full/src/main/java/org/baeldung/spring/Application.java b/spring-security-rest-full/src/main/java/org/baeldung/spring/Application.java index f8bc6c0160..a43b21c2b7 100644 --- a/spring-security-rest-full/src/main/java/org/baeldung/spring/Application.java +++ b/spring-security-rest-full/src/main/java/org/baeldung/spring/Application.java @@ -1,12 +1,18 @@ package org.baeldung.spring; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.context.request.RequestContextListener; import org.springframework.web.filter.ShallowEtagHeaderFilter; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * Main Application Class - uses Spring Boot. Just run this as a normal Java @@ -16,7 +22,19 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter @EnableScheduling @EnableAutoConfiguration @ComponentScan("org.baeldung") -public class Application extends WebMvcConfigurerAdapter { +@SpringBootApplication +public class Application extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(Application.class); + } + + @Override + public void onStartup(ServletContext sc) throws ServletException { + // Manages the lifecycle of the root application context + sc.addListener(new RequestContextListener()); + } public static void main(final String[] args) { SpringApplication.run(Application.class, args); diff --git a/spring-security-rest-full/src/main/java/org/baeldung/spring/ListenerConfig.java b/spring-security-rest-full/src/main/java/org/baeldung/spring/ListenerConfig.java deleted file mode 100644 index 3d727fc19f..0000000000 --- a/spring-security-rest-full/src/main/java/org/baeldung/spring/ListenerConfig.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.baeldung.spring; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; - -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.request.RequestContextListener; - -public class ListenerConfig implements WebApplicationInitializer { - - @Override - public void onStartup(ServletContext sc) throws ServletException { - // Manages the lifecycle of the root application context - sc.addListener(new RequestContextListener()); - } -} \ No newline at end of file diff --git a/spring-security-rest-full/src/main/resources/application.properties b/spring-security-rest-full/src/main/resources/application.properties index 58c6f8eec7..c3e1f0b4bb 100644 --- a/spring-security-rest-full/src/main/resources/application.properties +++ b/spring-security-rest-full/src/main/resources/application.properties @@ -1,2 +1,3 @@ server.port=8082 -server.context-path=/spring-security-rest-full \ No newline at end of file +server.context-path=/spring-security-rest-full +endpoints.metrics.enabled=true \ No newline at end of file From ca4d69bf75c7fd09cf3ac01d780c84af8178317f Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 14 Dec 2016 00:50:35 +0200 Subject: [PATCH 312/399] minor fix --- .../conn/HttpClientConnectionManagementLiveTest.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/httpclient/src/test/java/org/baeldung/httpclient/conn/HttpClientConnectionManagementLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/conn/HttpClientConnectionManagementLiveTest.java index e9db8c1e16..e04cd32d65 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/conn/HttpClientConnectionManagementLiveTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/conn/HttpClientConnectionManagementLiveTest.java @@ -218,7 +218,7 @@ public class HttpClientConnectionManagementLiveTest { final HeaderElement he = it.nextElement(); final String param = he.getName(); final String value = he.getValue(); - if (value != null && param.equalsIgnoreCase("timeout")) { + if ((value != null) && param.equalsIgnoreCase("timeout")) { return Long.parseLong(value) * 1000; } } @@ -251,9 +251,9 @@ public class HttpClientConnectionManagementLiveTest { basicConnManager.connect(conn, route, 1000, context); basicConnManager.routeComplete(conn, route, context); final HttpRequestExecutor exeRequest = new HttpRequestExecutor(); - context.setTargetHost((new HttpHost("www.baeldung.com", 80))); + context.setTargetHost((new HttpHost("http://httpbin.org", 80))); - final HttpGet get = new HttpGet("http://www.baeldung.com"); + final HttpGet get = new HttpGet("http://httpbin.org"); exeRequest.execute(get, conn, context); conn.isResponseAvailable(1000); basicConnManager.releaseConnection(conn, null, 1, TimeUnit.SECONDS); @@ -282,8 +282,9 @@ public class HttpClientConnectionManagementLiveTest { for (final MultiHttpClientConnThread thread : threads) { thread.join(10000); countConnMade++; - if (countConnMade == 0) + if (countConnMade == 0) { assertTrue(thread.getLeasedConn() == 5); + } } } @@ -356,7 +357,7 @@ public class HttpClientConnectionManagementLiveTest { // @Ignore // 8.2 ARTICLE VERSION public final void whenCustomizedIdleConnMonitor_thenNoExceptions() throws InterruptedException, IOException { - final HttpGet get = new HttpGet("http://google.com"); + new HttpGet("http://google.com"); poolingConnManager = new PoolingHttpClientConnectionManager(); client = HttpClients.custom().setConnectionManager(poolingConnManager).build(); final IdleConnectionMonitorThread staleMonitor = new IdleConnectionMonitorThread(poolingConnManager); From a6485735c5e6b2befb1e05996865018affc7cb8b Mon Sep 17 00:00:00 2001 From: pivovarit Date: Wed, 14 Dec 2016 16:20:46 +0100 Subject: [PATCH 313/399] Rename LiveTest --- .../{LiveTest.java => FormServletLiveTest.java} | 1 + 1 file changed, 1 insertion(+) rename javax-servlets/src/test/java/com/baeldung.servlets/{LiveTest.java => FormServletLiveTest.java} (99%) diff --git a/javax-servlets/src/test/java/com/baeldung.servlets/LiveTest.java b/javax-servlets/src/test/java/com/baeldung.servlets/FormServletLiveTest.java similarity index 99% rename from javax-servlets/src/test/java/com/baeldung.servlets/LiveTest.java rename to javax-servlets/src/test/java/com/baeldung.servlets/FormServletLiveTest.java index fac4b6bb9c..45f5e83c87 100644 --- a/javax-servlets/src/test/java/com/baeldung.servlets/LiveTest.java +++ b/javax-servlets/src/test/java/com/baeldung.servlets/FormServletLiveTest.java @@ -25,6 +25,7 @@ public class FormServletLiveTest { nvps.add(new BasicNameValuePair("height", String.valueOf(2))); nvps.add(new BasicNameValuePair("weight", String.valueOf(80))); + method.setEntity(new UrlEncodedFormEntity(nvps)); HttpResponse httpResponse = client.execute(method); From f8e9884c93c5c2863157ff970ede3ce2a693aefa Mon Sep 17 00:00:00 2001 From: pivovarit Date: Wed, 14 Dec 2016 16:37:26 +0100 Subject: [PATCH 314/399] Add LiveTest exclusion --- javax-servlets/pom.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml index 2314b11b18..5fee4b71c4 100644 --- a/javax-servlets/pom.xml +++ b/javax-servlets/pom.xml @@ -17,6 +17,17 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + From f7dacb83d85eacf7048552856bc5db9870a02792 Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 14 Dec 2016 23:24:41 +0200 Subject: [PATCH 315/399] minor fix --- javax-servlets/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml index 5fee4b71c4..a01a80077f 100644 --- a/javax-servlets/pom.xml +++ b/javax-servlets/pom.xml @@ -20,7 +20,6 @@ org.apache.maven.plugins maven-surefire-plugin - ${maven-surefire-plugin.version} **/*IntegrationTest.java From df3eebe576b343f8b407419b234c9e85d1ec6927 Mon Sep 17 00:00:00 2001 From: tschiman Date: Thu, 15 Dec 2016 07:13:50 -0700 Subject: [PATCH 316/399] BAEL-315 Removing the unnecessary version on spring session. Renaming the module from spring-cloud-integration to spring-could-bootstrap --- spring-cloud/spring-cloud-bootstrap/discovery/pom.xml | 2 -- spring-cloud/spring-cloud-bootstrap/gateway/pom.xml | 4 +--- spring-cloud/spring-cloud-bootstrap/pom.xml | 2 +- spring-cloud/spring-cloud-bootstrap/resource/pom.xml | 4 +--- 4 files changed, 3 insertions(+), 9 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml index 6d5d2cfe0b..be3bfbb0be 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml @@ -36,7 +36,6 @@ org.springframework.session spring-session - ${spring-session.version} org.springframework.boot @@ -75,7 +74,6 @@ - 1.2.2.RELEASE Brixton.SR7 3.6.0 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml index fb075e1e2c..d1bff0b14c 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml @@ -35,7 +35,6 @@ org.springframework.session spring-session - ${spring-session.version} org.springframework.boot @@ -80,8 +79,7 @@ - 1.2.2.RELEASE Brixton.SR7 3.6.0 - + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/pom.xml b/spring-cloud/spring-cloud-bootstrap/pom.xml index c14c277d7f..9a1b2e6d0e 100644 --- a/spring-cloud/spring-cloud-bootstrap/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/pom.xml @@ -18,7 +18,7 @@ - spring-cloud-integration + spring-cloud-bootstrap 1.0.0-SNAPSHOT pom diff --git a/spring-cloud/spring-cloud-bootstrap/resource/pom.xml b/spring-cloud/spring-cloud-bootstrap/resource/pom.xml index b1ea652be4..1472693de8 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/resource/pom.xml @@ -35,7 +35,6 @@ org.springframework.session spring-session - ${spring-session.version} org.springframework.boot @@ -79,8 +78,7 @@ - 1.2.2.RELEASE Brixton.SR7 3.6.0 - + \ No newline at end of file From dfd2d7a23801729314528a0f094f4ca71b132b33 Mon Sep 17 00:00:00 2001 From: Ante Pocedulic Date: Thu, 15 Dec 2016 16:23:08 +0100 Subject: [PATCH 317/399] - changed test package name from org.baeldung to com.baeldung (#897) - streams are added where neccessary - format fixes --- spring-apache-camel/pom.xml | 8 ++++++-- .../camel/file/DeadLetterChannelFileRouter.java | 12 ++++-------- .../camel-context-ContentBasedFileRouterTest.xml | 2 +- .../camel-context-DeadLetterChannelFileRouter.xml | 2 +- ...camel-context-MessageTranslatorFileRouterTest.xml | 2 +- .../camel-context-MulticastFileRouterTest.xml | 2 +- .../resources/camel-context-SplitterFileRouter.xml | 2 +- .../destination-folder/2016-12-14 23-33-25File1.txt | 0 .../destination-folder/2016-12-14 23-33-25File2.txt | 0 .../ContentBasedFileRouterIntegrationTest.java | 2 +- .../DeadLetterChannelFileRouterIntegrationTest.java | 3 +-- .../file/processor/FileProcessorIntegrationTest.java | 2 +- .../camel/file/processor/FileProcessorTest.java | 2 +- .../MessageTranslatorFileRouterIntegrationTest.java | 2 +- .../MulticastFileRouterIntegrationTest.java | 2 +- .../processor/SplitterFileRouterIntegrationTest.java | 2 +- .../apache/camel/main/AppIntegrationTest.java | 2 +- 17 files changed, 23 insertions(+), 24 deletions(-) create mode 100755 spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File1.txt create mode 100755 spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File2.txt rename spring-apache-camel/src/test/java/{org => com}/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java (97%) rename spring-apache-camel/src/test/java/{org => com}/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java (94%) rename spring-apache-camel/src/test/java/{org => com}/apache/camel/file/processor/FileProcessorIntegrationTest.java (98%) rename spring-apache-camel/src/test/java/{org => com}/apache/camel/file/processor/FileProcessorTest.java (98%) rename spring-apache-camel/src/test/java/{org => com}/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java (97%) rename spring-apache-camel/src/test/java/{org => com}/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java (97%) rename spring-apache-camel/src/test/java/{org => com}/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java (97%) rename spring-apache-camel/src/test/java/{org => com}/apache/camel/main/AppIntegrationTest.java (96%) diff --git a/spring-apache-camel/pom.xml b/spring-apache-camel/pom.xml index e68768a624..4daa3c1e9a 100644 --- a/spring-apache-camel/pom.xml +++ b/spring-apache-camel/pom.xml @@ -11,7 +11,7 @@ 2.16.1 4.3.4.RELEASE - 2.19.1 + 2.19.1 1.8 4.12 @@ -48,7 +48,11 @@ spring-context ${env.spring.version} - + + org.slf4j + slf4j-log4j12 + 1.7.21 + diff --git a/spring-apache-camel/src/main/java/com/baeldung/camel/file/DeadLetterChannelFileRouter.java b/spring-apache-camel/src/main/java/com/baeldung/camel/file/DeadLetterChannelFileRouter.java index 0388560175..fdcad99f02 100644 --- a/spring-apache-camel/src/main/java/com/baeldung/camel/file/DeadLetterChannelFileRouter.java +++ b/spring-apache-camel/src/main/java/com/baeldung/camel/file/DeadLetterChannelFileRouter.java @@ -1,8 +1,6 @@ package com.baeldung.camel.file; -import org.apache.camel.Exchange; import org.apache.camel.LoggingLevel; -import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; public class DeadLetterChannelFileRouter extends RouteBuilder { @@ -10,13 +8,11 @@ public class DeadLetterChannelFileRouter extends RouteBuilder { @Override public void configure() throws Exception { - errorHandler(deadLetterChannel("log:dead?level=ERROR").maximumRedeliveries(3).redeliveryDelay(1000).retryAttemptedLogLevel(LoggingLevel.ERROR)); + errorHandler(deadLetterChannel("log:dead?level=ERROR").maximumRedeliveries(3) + .redeliveryDelay(1000).retryAttemptedLogLevel(LoggingLevel.ERROR)); - from("file://" + SOURCE_FOLDER + "?delete=true").process(new Processor() { - @Override - public void process(Exchange exchange) throws Exception { - throw new IllegalArgumentException("Exception thrown!"); - } + from("file://" + SOURCE_FOLDER + "?delete=true").process((exchange) -> { + throw new IllegalArgumentException("Exception thrown!"); }); } } diff --git a/spring-apache-camel/src/main/resources/camel-context-ContentBasedFileRouterTest.xml b/spring-apache-camel/src/main/resources/camel-context-ContentBasedFileRouterTest.xml index f6bf8c7503..d6d3e62f1c 100644 --- a/spring-apache-camel/src/main/resources/camel-context-ContentBasedFileRouterTest.xml +++ b/spring-apache-camel/src/main/resources/camel-context-ContentBasedFileRouterTest.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> - + diff --git a/spring-apache-camel/src/main/resources/camel-context-DeadLetterChannelFileRouter.xml b/spring-apache-camel/src/main/resources/camel-context-DeadLetterChannelFileRouter.xml index 3ed80da7e0..ef61174b32 100644 --- a/spring-apache-camel/src/main/resources/camel-context-DeadLetterChannelFileRouter.xml +++ b/spring-apache-camel/src/main/resources/camel-context-DeadLetterChannelFileRouter.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> - + diff --git a/spring-apache-camel/src/main/resources/camel-context-MessageTranslatorFileRouterTest.xml b/spring-apache-camel/src/main/resources/camel-context-MessageTranslatorFileRouterTest.xml index d3d2706e22..7ab988ca8a 100644 --- a/spring-apache-camel/src/main/resources/camel-context-MessageTranslatorFileRouterTest.xml +++ b/spring-apache-camel/src/main/resources/camel-context-MessageTranslatorFileRouterTest.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> - + diff --git a/spring-apache-camel/src/main/resources/camel-context-MulticastFileRouterTest.xml b/spring-apache-camel/src/main/resources/camel-context-MulticastFileRouterTest.xml index 4982b61dbd..6f7e7cbb60 100644 --- a/spring-apache-camel/src/main/resources/camel-context-MulticastFileRouterTest.xml +++ b/spring-apache-camel/src/main/resources/camel-context-MulticastFileRouterTest.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> - + diff --git a/spring-apache-camel/src/main/resources/camel-context-SplitterFileRouter.xml b/spring-apache-camel/src/main/resources/camel-context-SplitterFileRouter.xml index 1f5945707a..9d4a890cc6 100644 --- a/spring-apache-camel/src/main/resources/camel-context-SplitterFileRouter.xml +++ b/spring-apache-camel/src/main/resources/camel-context-SplitterFileRouter.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> - + diff --git a/spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File1.txt b/spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File1.txt new file mode 100755 index 0000000000..e69de29bb2 diff --git a/spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File2.txt b/spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File2.txt new file mode 100755 index 0000000000..e69de29bb2 diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java similarity index 97% rename from spring-apache-camel/src/test/java/org/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java rename to spring-apache-camel/src/test/java/com/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java index 29a5b4fc0f..b0920fe3b5 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java +++ b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java @@ -1,4 +1,4 @@ -package org.apache.camel.file.processor; +package com.apache.camel.file.processor; import java.io.File; diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java similarity index 94% rename from spring-apache-camel/src/test/java/org/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java rename to spring-apache-camel/src/test/java/com/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java index 49d91aa661..eb684230c9 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java +++ b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/DeadLetterChannelFileRouterIntegrationTest.java @@ -1,9 +1,8 @@ -package org.apache.camel.file.processor; +package com.apache.camel.file.processor; import java.io.File; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorIntegrationTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java similarity index 98% rename from spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorIntegrationTest.java rename to spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java index e73ad1e4a4..1d88e8aeb4 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorIntegrationTest.java +++ b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorIntegrationTest.java @@ -1,4 +1,4 @@ -package org.apache.camel.file.processor; +package com.apache.camel.file.processor; import java.io.File; diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java similarity index 98% rename from spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java rename to spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java index 3d63f614e0..c4a3ced84f 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/FileProcessorTest.java +++ b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java @@ -1,4 +1,4 @@ -package org.apache.camel.file.processor; +package com.apache.camel.file.processor; import java.io.File; diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java similarity index 97% rename from spring-apache-camel/src/test/java/org/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java rename to spring-apache-camel/src/test/java/com/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java index d9d889c4df..bcd382dd6c 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java +++ b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/MessageTranslatorFileRouterIntegrationTest.java @@ -1,4 +1,4 @@ -package org.apache.camel.file.processor; +package com.apache.camel.file.processor; import java.io.File; diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java similarity index 97% rename from spring-apache-camel/src/test/java/org/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java rename to spring-apache-camel/src/test/java/com/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java index 960d310692..137480ac8e 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java +++ b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/MulticastFileRouterIntegrationTest.java @@ -1,4 +1,4 @@ -package org.apache.camel.file.processor; +package com.apache.camel.file.processor; import java.io.File; diff --git a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java similarity index 97% rename from spring-apache-camel/src/test/java/org/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java rename to spring-apache-camel/src/test/java/com/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java index 9e942dd4c2..1991dd8d21 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java +++ b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/SplitterFileRouterIntegrationTest.java @@ -1,4 +1,4 @@ -package org.apache.camel.file.processor; +package com.apache.camel.file.processor; import java.io.File; import java.io.FileWriter; diff --git a/spring-apache-camel/src/test/java/org/apache/camel/main/AppIntegrationTest.java b/spring-apache-camel/src/test/java/com/apache/camel/main/AppIntegrationTest.java similarity index 96% rename from spring-apache-camel/src/test/java/org/apache/camel/main/AppIntegrationTest.java rename to spring-apache-camel/src/test/java/com/apache/camel/main/AppIntegrationTest.java index fc7fa9653b..b33e6a3b29 100644 --- a/spring-apache-camel/src/test/java/org/apache/camel/main/AppIntegrationTest.java +++ b/spring-apache-camel/src/test/java/com/apache/camel/main/AppIntegrationTest.java @@ -1,4 +1,4 @@ -package org.apache.camel.main; +package com.apache.camel.main; import com.baeldung.camel.main.App; import junit.framework.TestCase; From 502777e8e881fc745c9c2f686416080388326b58 Mon Sep 17 00:00:00 2001 From: k0l0ssus Date: Thu, 15 Dec 2016 15:12:36 -0500 Subject: [PATCH 318/399] Update FileCopyConfig.java (#840) Changed the extension search to look for a wildcard extension Set expectReply(false)[service activator will throw exception after copying file without it) From 1825710b7915891ac6627cd4038c714a9dffc10d Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:15:34 +0600 Subject: [PATCH 319/399] Added relevant articles --- spring-security-basic-auth/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-security-basic-auth/README.md b/spring-security-basic-auth/README.md index 37ea545a9b..54d09dbf32 100644 --- a/spring-security-basic-auth/README.md +++ b/spring-security-basic-auth/README.md @@ -8,6 +8,7 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Article: - [Spring Security - security none, filters none, access permitAll](http://www.baeldung.com/security-none-filters-none-access-permitAll) - [Spring Security Basic Authentication](http://www.baeldung.com/spring-security-basic-authentication) +- [Writing a Custom Filter in Spring Security](http://www.baeldung.com/spring-security-custom-filter) ### Notes From 0556c1fe615ce4f23d4ba02cf9436a62bd9aa708 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:17:00 +0600 Subject: [PATCH 320/399] Added relevant articles --- spring-data-dynamodb/README.MD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-data-dynamodb/README.MD b/spring-data-dynamodb/README.MD index 8b13789179..9a6855ea0b 100644 --- a/spring-data-dynamodb/README.MD +++ b/spring-data-dynamodb/README.MD @@ -1 +1,2 @@ - +### Relevant Articles: +- [DynamoDB in a Spring Boot Application Using Spring Data](http://www.baeldung.com/spring-data-dynamodb) From f53fe18755cd4333d04a5114185b08149d1b1b7c Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:19:16 +0600 Subject: [PATCH 321/399] Created README.md and added relevant articles --- core-java/src/main/java/com/baeldung/printscreen/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/printscreen/README.md diff --git a/core-java/src/main/java/com/baeldung/printscreen/README.md b/core-java/src/main/java/com/baeldung/printscreen/README.md new file mode 100644 index 0000000000..7b3b40c102 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/printscreen/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) From 346c38b02a1bdf46e1e2ecffe90ca228c43d0ee1 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:21:57 +0600 Subject: [PATCH 322/399] Created README.md and added relevant articles --- apache-cxf/cxf-jaxrs-implementation/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 apache-cxf/cxf-jaxrs-implementation/README.md diff --git a/apache-cxf/cxf-jaxrs-implementation/README.md b/apache-cxf/cxf-jaxrs-implementation/README.md new file mode 100644 index 0000000000..28c01e6e36 --- /dev/null +++ b/apache-cxf/cxf-jaxrs-implementation/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Apache CXF Support for RESTful Web Services](http://www.baeldung.com/apache-cxf-rest-api) From b9a290fd7a8f957e7f2442fc0d793eb3a22fe5e9 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:28:55 +0600 Subject: [PATCH 323/399] Created README.md and added relevant articles: --- core-java/src/main/java/com/baeldung/java/networking/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/java/networking/README.md diff --git a/core-java/src/main/java/com/baeldung/java/networking/README.md b/core-java/src/main/java/com/baeldung/java/networking/README.md new file mode 100644 index 0000000000..e92122f3bb --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/networking/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [A Guide To UDP In Java](http://www.baeldung.com/udp-in-java) From 28e5917405e80eea782b3e661b1c00daf0a86521 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:30:26 +0600 Subject: [PATCH 324/399] Created README.md and added relevant articles --- hazelcast/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 hazelcast/README.md diff --git a/hazelcast/README.md b/hazelcast/README.md new file mode 100644 index 0000000000..b90f66a8d0 --- /dev/null +++ b/hazelcast/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Guide to Hazelcast with Java](http://www.baeldung.com/java-hazelcast) From 71ab5b5ad1804d3354fffe5a5a95946c5e0b80de Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:31:41 +0600 Subject: [PATCH 325/399] Created README.md and added relevant articles --- java-cassandra/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 java-cassandra/README.md diff --git a/java-cassandra/README.md b/java-cassandra/README.md new file mode 100644 index 0000000000..3ab6f5f099 --- /dev/null +++ b/java-cassandra/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [A Guide to Cassandra with Java](http://www.baeldung.com/cassandra-with-java) From ab5e8a5e61b11c3f566dfc34e2f17976df6bdff8 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:32:47 +0600 Subject: [PATCH 326/399] Added relevant articles --- spring-security-custom-permission/README.MD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-security-custom-permission/README.MD b/spring-security-custom-permission/README.MD index 0812a73090..d59aea97b4 100644 --- a/spring-security-custom-permission/README.MD +++ b/spring-security-custom-permission/README.MD @@ -3,4 +3,5 @@ The "REST With Spring" Classes: http://github.learnspringsecurity.com ###Relevant Articles: - [A Custom Security Expression with Spring Security](http://www.baeldung.com/spring-security-create-new-custom-security-expression) -- [Custom AccessDecisionVoters in Spring Security](http://www.baeldung.com/spring-security-custom-voter) \ No newline at end of file +- [Custom AccessDecisionVoters in Spring Security](http://www.baeldung.com/spring-security-custom-voter) +- [Spring Security: Authentication with a Database-backed UserDetailsService](http://www.baeldung.com/spring-security-authentication-with-a-database) From f20dfd4b549ff56b0f06ea2cad00652e86568cef Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:34:53 +0600 Subject: [PATCH 327/399] Created README.md and added relevant articles --- mapstruct/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mapstruct/README.md diff --git a/mapstruct/README.md b/mapstruct/README.md new file mode 100644 index 0000000000..e279a48f7a --- /dev/null +++ b/mapstruct/README.md @@ -0,0 +1,2 @@ +###Relevant Articles: +- [Quick Guide to MapStruct](http://www.baeldung.com/mapstruct) From e1692d66438874cc2c73cc61912e0903232a1f5e Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:36:23 +0600 Subject: [PATCH 328/399] Created README.md and added relevant articles --- spring-jms/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 spring-jms/README.md diff --git a/spring-jms/README.md b/spring-jms/README.md new file mode 100644 index 0000000000..9093937f44 --- /dev/null +++ b/spring-jms/README.md @@ -0,0 +1,2 @@ +###Relevant Articles: +- [An Introduction To Spring JMS](http://www.baeldung.com/spring-jms) From 27bb95f572f5cc1cd8677214a0c8b27c416e5ad2 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:37:14 +0600 Subject: [PATCH 329/399] Added relevant articles --- spring-boot/README.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot/README.MD b/spring-boot/README.MD index 1610d77e81..19203d2b8d 100644 --- a/spring-boot/README.MD +++ b/spring-boot/README.MD @@ -5,3 +5,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Quick Guide to @RestClientTest in Spring Boot](http://www.baeldung.com/restclienttest-in-spring-boot) - [Intro to Spring Boot Starters](http://www.baeldung.com/spring-boot-starters) - [A Guide to Spring in Eclipse STS](http://www.baeldung.com/eclipse-sts-spring) +- [Introduction to WebJars](http://www.baeldung.com/maven-webjars) From 804f7ebfa86103e648067e7d6e499bb89c537d04 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:43:14 +0600 Subject: [PATCH 330/399] Created README.md and added relevant articles --- .../src/main/java/com/baeldung/java/nio/selector/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/java/nio/selector/README.md diff --git a/core-java/src/main/java/com/baeldung/java/nio/selector/README.md b/core-java/src/main/java/com/baeldung/java/nio/selector/README.md new file mode 100644 index 0000000000..b28aae1397 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/nio/selector/README.md @@ -0,0 +1,2 @@ +###Relevant Articles: +- [Introduction to the Java NIO Selector](http://www.baeldung.com/java-nio-selector) From 2ef40b15a7b675d90133e2c2dec8570bd946a1df Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:44:13 +0600 Subject: [PATCH 331/399] Added relevant articles --- spring-thymeleaf/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-thymeleaf/README.md b/spring-thymeleaf/README.md index 98fb4b043b..6b12bb676c 100644 --- a/spring-thymeleaf/README.md +++ b/spring-thymeleaf/README.md @@ -5,7 +5,9 @@ ### Relevant Articles: - [Introduction to Using Thymeleaf in Spring](http://www.baeldung.com/thymeleaf-in-spring-mvc) - [CSRF Protection with Spring MVC and Thymeleaf](http://www.baeldung.com/csrf-thymeleaf-with-spring-security) - +- [Thymeleaf: Custom Layout Dialect](http://www.baeldung.com/thymeleaf-spring-layouts) +- [Spring and Thymeleaf 3: Expressions](http://www.baeldung.com/spring-thymeleaf-3-expressions) +- [Spring MVC + Thymeleaf 3.0: New Features](http://www.baeldung.com/spring-thymeleaf-3) ### Build the Project From f162243755116f83d55d92721140e12d1afda775 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Fri, 11 Nov 2016 16:45:34 +0600 Subject: [PATCH 332/399] Added relevant Articles --- log4j/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/log4j/README.md b/log4j/README.md index 7355372f23..40e1f33b30 100644 --- a/log4j/README.md +++ b/log4j/README.md @@ -1,2 +1,5 @@ ### Relevant Articles: - [Introduction to Java Logging](http://www.baeldung.com/java-logging-intro) +- [Introduction to SLF4J](http://www.baeldung.com/slf4j-with-log4j2-logback) +- [Generate equals() and hashCode() with Eclipse](http://www.baeldung.com/java-eclipse-equals-and-hashcode) +- [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java) From 43f3dc3ac9d3ef6c46277a96b7da3d5e0a00a060 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Sat, 12 Nov 2016 01:08:48 +0600 Subject: [PATCH 333/399] Added relevant articles --- log4j/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/log4j/README.md b/log4j/README.md index 40e1f33b30..de07d0c5b7 100644 --- a/log4j/README.md +++ b/log4j/README.md @@ -3,3 +3,4 @@ - [Introduction to SLF4J](http://www.baeldung.com/slf4j-with-log4j2-logback) - [Generate equals() and hashCode() with Eclipse](http://www.baeldung.com/java-eclipse-equals-and-hashcode) - [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java) +- [Introduction to SLF4J](http://www.baeldung.com/slf4j-with-log4j2-logback) From 0e8f896695365f6a1e2d8c3727e11efc60e81169 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Sat, 12 Nov 2016 01:10:01 +0600 Subject: [PATCH 334/399] Added relevant articles --- core-java/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core-java/README.md b/core-java/README.md index aca8deb9c9..36dabbef41 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -39,3 +39,5 @@ - [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) - [How to Convert String to different data types in Java](http://www.baeldung.com/java-string-conversions) - [Introduction to Java Generics](http://www.baeldung.com/java-generics) +- [Generate equals() and hashCode() with Eclipse](http://www.baeldung.com/java-eclipse-equals-and-hashcode) +- [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java) From 0d36fa8c582554c9746307339cc194aa1db718e8 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Sat, 12 Nov 2016 01:13:46 +0600 Subject: [PATCH 335/399] Created README.md and added relevant articles --- play-framework/README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 play-framework/README.md diff --git a/play-framework/README.md b/play-framework/README.md new file mode 100644 index 0000000000..0fd13fba27 --- /dev/null +++ b/play-framework/README.md @@ -0,0 +1,4 @@ +###Relevant Articles: +- [REST API with Play Framework in Java](http://www.baeldung.com/rest-api-with-play) +- [Routing In Play Applications in Java](http://www.baeldung.com/routing-in-play) +- [Introduction To Play In Java](http://www.baeldung.com/java-intro-to-the-play-framework) From b9071570148e93f65880d17df78f071d2aff5053 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Sat, 12 Nov 2016 01:14:37 +0600 Subject: [PATCH 336/399] Added relevant articles --- wicket/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wicket/README.md b/wicket/README.md index 614446e7ba..e873ee1ba1 100644 --- a/wicket/README.md +++ b/wicket/README.md @@ -2,3 +2,7 @@ From the same directory where pom.xml is, execute the following command to run the project: mvn jetty:run + + +###Relevant Articles: +- [Introduction to the Wicket Framework](http://www.baeldung.com/intro-to-the-wicket-framework) From 27c38bcba4f58cf5c5f1966aa718e7a4e1104581 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Sat, 12 Nov 2016 01:15:41 +0600 Subject: [PATCH 337/399] Created README.md and added relevant articles --- spring-mvc-tiles/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 spring-mvc-tiles/README.md diff --git a/spring-mvc-tiles/README.md b/spring-mvc-tiles/README.md new file mode 100644 index 0000000000..58991005f5 --- /dev/null +++ b/spring-mvc-tiles/README.md @@ -0,0 +1,2 @@ +###Relevant Articles: +- [Apache Tiles Integration with Spring MVC](http://www.baeldung.com/spring-mvc-apache-tiles) From 29f673a2782024a92beab2536d145e58f7e13ad9 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Sat, 12 Nov 2016 01:18:29 +0600 Subject: [PATCH 338/399] Created README.md and added relevant articles --- patterns/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 patterns/README.md diff --git a/patterns/README.md b/patterns/README.md new file mode 100644 index 0000000000..e5d8334a3e --- /dev/null +++ b/patterns/README.md @@ -0,0 +1,2 @@ +###Relevant Articles: +- [A Guide to the Front Controller Pattern in Java](http://www.baeldung.com/java-front-controller-pattern) From ff3574933872d8577463dc604035c89ddf6d5160 Mon Sep 17 00:00:00 2001 From: felipe-gdr Date: Fri, 16 Dec 2016 05:26:52 -0200 Subject: [PATCH 339/399] BAEL-127: @PreFilter and @PostFilter annotations (#898) * BAEL-127: simple app with filters * removed data rest dependency, final adjustments * added first live test for the rest api * move filters code to new module * moved to root of module, create service layer, standard pom --- spring-security-core/.gitignore | 13 ++ spring-security-core/README.md | 7 + spring-security-core/pom.xml | 168 ++++++++++++++++++ .../src/main/java/org/baeldung/app/App.java | 17 ++ .../org/baeldung/config/DatabaseLoader.java | 23 +++ .../baeldung/config/WebSecurityConfig.java | 39 ++++ .../baeldung/controller/TaskController.java | 32 ++++ .../main/java/org/baeldung/entity/Task.java | 46 +++++ .../baeldung/repository/TaskRepository.java | 8 + .../org/baeldung/service/TaskService.java | 26 +++ .../test/java/org/baeldung/test/LiveTest.java | 75 ++++++++ .../src/test/resources/.gitignore | 13 ++ 12 files changed, 467 insertions(+) create mode 100644 spring-security-core/.gitignore create mode 100644 spring-security-core/README.md create mode 100644 spring-security-core/pom.xml create mode 100644 spring-security-core/src/main/java/org/baeldung/app/App.java create mode 100644 spring-security-core/src/main/java/org/baeldung/config/DatabaseLoader.java create mode 100644 spring-security-core/src/main/java/org/baeldung/config/WebSecurityConfig.java create mode 100644 spring-security-core/src/main/java/org/baeldung/controller/TaskController.java create mode 100644 spring-security-core/src/main/java/org/baeldung/entity/Task.java create mode 100644 spring-security-core/src/main/java/org/baeldung/repository/TaskRepository.java create mode 100644 spring-security-core/src/main/java/org/baeldung/service/TaskService.java create mode 100644 spring-security-core/src/test/java/org/baeldung/test/LiveTest.java create mode 100644 spring-security-core/src/test/resources/.gitignore diff --git a/spring-security-core/.gitignore b/spring-security-core/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/spring-security-core/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/spring-security-core/README.md b/spring-security-core/README.md new file mode 100644 index 0000000000..c7e0f645c7 --- /dev/null +++ b/spring-security-core/README.md @@ -0,0 +1,7 @@ +## @PreFilter and @PostFilter annotations + +### Build the Project ### + +``` +mvn clean install +``` diff --git a/spring-security-core/pom.xml b/spring-security-core/pom.xml new file mode 100644 index 0000000000..519ee73296 --- /dev/null +++ b/spring-security-core/pom.xml @@ -0,0 +1,168 @@ + + 4.0.0 + com.baeldung + spring-security-core + 0.1-SNAPSHOT + + spring-security-core + war + + + org.springframework.boot + spring-boot-starter-parent + 1.4.2.RELEASE + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-devtools + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + com.h2database + h2 + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.security + spring-security-test + + + + + + spring-security-core + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + true + source + + + + + org.apache.maven.plugins + maven-war-plugin + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LiveTest.java + **/*ManualTest.java + + + + + + + + + + + + + + live + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + none + + + **/*LiveTest.java + + + cargo + + + + + + + + + + + + + 4.3.4.RELEASE + 4.2.0.RELEASE + + + 4.4.5 + 4.5.2 + + + 1.7.21 + 1.1.7 + + + 5.3.3.Final + 1.2 + 3.1.0 + 2.8.5 + + + 19.0 + 3.5 + + + 1.3 + 4.12 + 1.10.19 + + 2.9.0 + + + 3.6.0 + 2.6 + 2.19.1 + 1.6.1 + + + diff --git a/spring-security-core/src/main/java/org/baeldung/app/App.java b/spring-security-core/src/main/java/org/baeldung/app/App.java new file mode 100644 index 0000000000..06c295fcd7 --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/app/App.java @@ -0,0 +1,17 @@ +package org.baeldung.app; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@SpringBootApplication +@EnableJpaRepositories("org.baeldung.repository") +@ComponentScan("org.baeldung") +@EntityScan("org.baeldung.entity") +public class App { + public static void main(String[] args) { + SpringApplication.run(App.class, args); + } +} diff --git a/spring-security-core/src/main/java/org/baeldung/config/DatabaseLoader.java b/spring-security-core/src/main/java/org/baeldung/config/DatabaseLoader.java new file mode 100644 index 0000000000..e311f62fff --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/config/DatabaseLoader.java @@ -0,0 +1,23 @@ +package org.baeldung.config; + +import org.baeldung.entity.Task; +import org.baeldung.repository.TaskRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +@Component +public class DatabaseLoader implements CommandLineRunner { + + @Autowired + private TaskRepository taskRepository; + + @Override + public void run(String... strings) throws Exception { + this.taskRepository.save(new Task("Send a fax", "pam")); + this.taskRepository.save(new Task("Print a document", "pam")); + this.taskRepository.save(new Task("Answer the phone", "pam")); + this.taskRepository.save(new Task("Call a client", "jim")); + this.taskRepository.save(new Task("Organize a meeting", "michael")); + } +} \ No newline at end of file diff --git a/spring-security-core/src/main/java/org/baeldung/config/WebSecurityConfig.java b/spring-security-core/src/main/java/org/baeldung/config/WebSecurityConfig.java new file mode 100644 index 0000000000..02e60d29a2 --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/config/WebSecurityConfig.java @@ -0,0 +1,39 @@ +package org.baeldung.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .antMatchers("/css/**", "/js/**", "/loggedout").permitAll() + .anyRequest().authenticated() + .and() + .httpBasic() + .and() + .logout().disable() + .csrf().disable(); + } + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth + .inMemoryAuthentication() + .withUser("jim").password("jim").roles("USER") + .and() + .withUser("pam").password("pam").roles("USER") + .and() + .withUser("michael").password("michael").roles("MANAGER"); + } +} diff --git a/spring-security-core/src/main/java/org/baeldung/controller/TaskController.java b/spring-security-core/src/main/java/org/baeldung/controller/TaskController.java new file mode 100644 index 0000000000..d99109c543 --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/controller/TaskController.java @@ -0,0 +1,32 @@ +package org.baeldung.controller; + +import org.baeldung.entity.Task; +import org.baeldung.service.TaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Controller +@RequestMapping("api/tasks") +public class TaskController { + + @Autowired + private TaskService taskService; + + @RequestMapping(method = RequestMethod.GET) + public ResponseEntity> findAllTasks() { + Iterable tasks = taskService.findAll(); + + return ResponseEntity.ok().body(tasks); + } + + @RequestMapping(method = RequestMethod.POST, consumes = "application/json") + public ResponseEntity> addTasks(@RequestBody Iterable newTasks) { + Iterable tasks = taskService.save(newTasks); + + return ResponseEntity.ok().body(tasks); + } +} diff --git a/spring-security-core/src/main/java/org/baeldung/entity/Task.java b/spring-security-core/src/main/java/org/baeldung/entity/Task.java new file mode 100644 index 0000000000..5d3321ef2e --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/entity/Task.java @@ -0,0 +1,46 @@ +package org.baeldung.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity +public class Task { + private @Id @GeneratedValue Long id; + private String description; + + private String assignee; + + public Task() { + } + + public Task(String description, String assignee) { + this.description = description; + this.assignee = assignee; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getAssignee() { + return assignee; + } + + public void setAssignee(String assignee) { + this.assignee = assignee; + } + +} diff --git a/spring-security-core/src/main/java/org/baeldung/repository/TaskRepository.java b/spring-security-core/src/main/java/org/baeldung/repository/TaskRepository.java new file mode 100644 index 0000000000..651b11684f --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/repository/TaskRepository.java @@ -0,0 +1,8 @@ +package org.baeldung.repository; + +import org.baeldung.entity.Task; +import org.springframework.data.repository.CrudRepository; + +public interface TaskRepository extends CrudRepository { + +} diff --git a/spring-security-core/src/main/java/org/baeldung/service/TaskService.java b/spring-security-core/src/main/java/org/baeldung/service/TaskService.java new file mode 100644 index 0000000000..4a0dae3aac --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/service/TaskService.java @@ -0,0 +1,26 @@ +package org.baeldung.service; + +import org.baeldung.entity.Task; +import org.baeldung.repository.TaskRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PostFilter; +import org.springframework.security.access.prepost.PreFilter; +import org.springframework.stereotype.Service; + +@Service +public class TaskService { + + @Autowired + private TaskRepository taskRepository; + + @PostFilter("hasRole('MANAGER') or filterObject.assignee == authentication.name") + public Iterable findAll() { + return taskRepository.findAll(); + } + + @PreFilter("hasRole('MANAGER') or filterObject.assignee == authentication.name") + public Iterable save(Iterable entities) { + return taskRepository.save(entities); + } + +} diff --git a/spring-security-core/src/test/java/org/baeldung/test/LiveTest.java b/spring-security-core/src/test/java/org/baeldung/test/LiveTest.java new file mode 100644 index 0000000000..596476d058 --- /dev/null +++ b/spring-security-core/src/test/java/org/baeldung/test/LiveTest.java @@ -0,0 +1,75 @@ +package org.baeldung.test; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.baeldung.app.App; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = App.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class LiveTest { + + @Autowired + private WebApplicationContext context; + private MockMvc mockMvc; + + @Before + public void setUp() { + mockMvc = MockMvcBuilders.webAppContextSetup(context).dispatchOptions(true).build(); + } + + @Test + @WithMockUser(roles = "MANAGER") + public void givenUserIsManager_whenGetTasks_thenAllTasks() throws Exception { + String allTasks = "[{'id':1,'description':'Send a fax','assignee':'pam'}," + + "{'id':2,'description':'Print a document','assignee':'pam'}," + + "{'id':3,'description':'Answer the phone','assignee':'pam'}," + + "{'id':4,'description':'Call a client','assignee':'jim'}," + + "{'id':5,'description':'Organize a meeting','assignee':'michael'}]"; + + mockMvc.perform(get("/api/tasks")).andExpect(status().isOk()).andExpect(content().json(allTasks)); + } + + @Test + @WithMockUser(username = "jim") + public void givenUserNotManager_whenGetTasks_thenReturnAssignedToMe() throws Exception { + String myTasks = "[{'id':4,'description':'Call a client','assignee':'jim'}]"; + + mockMvc.perform(get("/api/tasks")).andExpect(status().isOk()).andExpect(content().json(myTasks)); + } + + @Test + @WithMockUser(roles = "MANAGER") + public void givenUserIsManager_whenPostTasks_thenIncludeAllTasks() throws Exception { + String newTasks = "[{\"description\":\"New to Michael\",\"assignee\":\"michael\"}," + + "{\"description\":\"New to Pam\",\"assignee\":\"pam\"}]"; + + mockMvc.perform(post("/api/tasks").contentType(MediaType.APPLICATION_JSON).content(newTasks)).andExpect(status().isOk()).andExpect(content().json("[{'id': 6,'description':'New to Michael','assignee':'michael'}, {'id': 7,'description':'New to Pam','assignee':'pam'}]")); + } + + @Test + @WithMockUser(username = "jim") + public void givenUserNotManager_whenPostTasks_thenIncludeOnlyAssignedToMe() throws Exception { + String newTasks = "[{\"description\":\"New to Jim\",\"assignee\":\"jim\"}," + + "{\"description\":\"New to Pam\",\"assignee\":\"pam\"}]"; + + mockMvc.perform(post("/api/tasks").contentType(MediaType.APPLICATION_JSON).content(newTasks)).andExpect(status().isOk()).andExpect(content().json("[{'id': 8,'description':'New to Jim','assignee':'jim'}]")); + } + +} diff --git a/spring-security-core/src/test/resources/.gitignore b/spring-security-core/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/spring-security-core/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file From e93714999e4343fefe9c599df6fc92f4c1ab615d Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Fri, 16 Dec 2016 09:58:13 +0100 Subject: [PATCH 340/399] Rename to spring-mvc-simple --- {spring-mvc-handlers => spring-mvc-simple}/pom.xml | 8 ++++---- .../controller/AnnotationMethodHandlerAdapterExample.java | 0 .../controller/RequestMappingHandlerAdapterExample.java | 0 .../controller/SimpleControllerHandlerAdapterExample.java | 0 .../spring-servlet_AnnotationMethodHandlerAdapter.xml | 0 .../spring-servlet_RequestMappingHandlerAdapter.xml | 0 .../spring-servlet_SimpleControllerHandlerAdapter.xml | 0 .../src/main/webapp/WEB-INF/Greeting.jsp | 0 .../src/main/webapp/WEB-INF/web.xml | 0 9 files changed, 4 insertions(+), 4 deletions(-) rename {spring-mvc-handlers => spring-mvc-simple}/pom.xml (92%) rename {spring-mvc-handlers => spring-mvc-simple}/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java (100%) rename {spring-mvc-handlers => spring-mvc-simple}/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java (100%) rename {spring-mvc-handlers => spring-mvc-simple}/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java (100%) rename {spring-mvc-handlers => spring-mvc-simple}/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml (100%) rename {spring-mvc-handlers => spring-mvc-simple}/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml (100%) rename {spring-mvc-handlers => spring-mvc-simple}/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml (100%) rename {spring-mvc-handlers => spring-mvc-simple}/src/main/webapp/WEB-INF/Greeting.jsp (100%) rename {spring-mvc-handlers => spring-mvc-simple}/src/main/webapp/WEB-INF/web.xml (100%) diff --git a/spring-mvc-handlers/pom.xml b/spring-mvc-simple/pom.xml similarity index 92% rename from spring-mvc-handlers/pom.xml rename to spring-mvc-simple/pom.xml index 0074898767..4ab5bd9d1e 100644 --- a/spring-mvc-handlers/pom.xml +++ b/spring-mvc-simple/pom.xml @@ -2,10 +2,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.baeldung - SpringMVCHandlers + spring-mvc-simple war 0.0.1-SNAPSHOT - SpringMVCHandlers Maven Webapp + Spring MVC simple Maven Webapp http://maven.apache.org @@ -59,12 +59,12 @@ ${maven-war-plugin.version} src/main/webapp - springMVCHandlers + springMvcSimple false - springMVCHandlers + springMvcSimple diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java similarity index 100% rename from spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java rename to spring-mvc-simple/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java similarity index 100% rename from spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java rename to spring-mvc-simple/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java diff --git a/spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java similarity index 100% rename from spring-mvc-handlers/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java rename to spring-mvc-simple/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml b/spring-mvc-simple/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml similarity index 100% rename from spring-mvc-handlers/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml rename to spring-mvc-simple/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml b/spring-mvc-simple/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml similarity index 100% rename from spring-mvc-handlers/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml rename to spring-mvc-simple/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml diff --git a/spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml b/spring-mvc-simple/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml similarity index 100% rename from spring-mvc-handlers/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml rename to spring-mvc-simple/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml diff --git a/spring-mvc-handlers/src/main/webapp/WEB-INF/Greeting.jsp b/spring-mvc-simple/src/main/webapp/WEB-INF/Greeting.jsp similarity index 100% rename from spring-mvc-handlers/src/main/webapp/WEB-INF/Greeting.jsp rename to spring-mvc-simple/src/main/webapp/WEB-INF/Greeting.jsp diff --git a/spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml b/spring-mvc-simple/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from spring-mvc-handlers/src/main/webapp/WEB-INF/web.xml rename to spring-mvc-simple/src/main/webapp/WEB-INF/web.xml From 0087a4ab3b694d8f43686d926dd8bf9147c9bd2c Mon Sep 17 00:00:00 2001 From: Marek Lewandowski Date: Fri, 16 Dec 2016 09:58:23 +0100 Subject: [PATCH 341/399] Add spring-mvc-simple as a module --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 1dde581d13..211c3b2c4d 100644 --- a/pom.xml +++ b/pom.xml @@ -117,6 +117,7 @@ spring-mvc-velocity spring-mvc-web-vs-initializer spring-mvc-xml + spring-mvc-simple spring-openid spring-protobuf spring-quartz From 8844871e2bd38f035f05a1808c404f368ab02661 Mon Sep 17 00:00:00 2001 From: maibin Date: Fri, 16 Dec 2016 10:14:48 +0100 Subject: [PATCH 342/399] @Async and SecurityContext (#872) * @Async and Spring Security * @Async with SecurityContext propagated * Spring and @Async * Simulated Annealing algorithm * Rebase * Rebase --- .../algorithms/SimulatedAnnealingTest.java | 13 +++++ .../baeldung/spring/SecurityJavaConfig.java | 33 ++++++++---- .../web/controller/AsyncController.java | 13 +++++ .../baeldung/web/service/AsyncService.java | 11 ++++ .../web/service/AsyncServiceImpl.java | 36 +++++++++++++ .../src/main/resources/webSecurityConfig.xml | 51 +++++++++++-------- 6 files changed, 126 insertions(+), 31 deletions(-) create mode 100644 core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java create mode 100644 spring-security-rest/src/main/java/org/baeldung/web/service/AsyncService.java create mode 100644 spring-security-rest/src/main/java/org/baeldung/web/service/AsyncServiceImpl.java diff --git a/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java b/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java new file mode 100644 index 0000000000..06b599dede --- /dev/null +++ b/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java @@ -0,0 +1,13 @@ +package com.baeldung.algorithms; + +import org.junit.Assert; +import org.junit.Test; + +public class SimulatedAnnealingTest { + + @Test + public void testSimulateAnnealing() { + Assert.assertTrue(SimulatedAnnealing.simulateAnnealing(10, 1000, 0.9) > 0); + } + +} diff --git a/spring-security-rest/src/main/java/org/baeldung/spring/SecurityJavaConfig.java b/spring-security-rest/src/main/java/org/baeldung/spring/SecurityJavaConfig.java index 3302482f48..448968a6c8 100644 --- a/spring-security-rest/src/main/java/org/baeldung/spring/SecurityJavaConfig.java +++ b/spring-security-rest/src/main/java/org/baeldung/spring/SecurityJavaConfig.java @@ -1,8 +1,7 @@ package org.baeldung.spring; import org.baeldung.security.MySavedRequestAwareAuthenticationSuccessHandler; -import org.baeldung.security.RestAuthenticationEntryPoint; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.MethodInvokingFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @@ -10,6 +9,7 @@ import org.springframework.security.config.annotation.authentication.builders.Au import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; @Configuration @@ -17,11 +17,11 @@ import org.springframework.security.web.authentication.SimpleUrlAuthenticationFa @ComponentScan("org.baeldung.security") public class SecurityJavaConfig extends WebSecurityConfigurerAdapter { - @Autowired - private RestAuthenticationEntryPoint restAuthenticationEntryPoint; +// @Autowired +// private RestAuthenticationEntryPoint restAuthenticationEntryPoint; - @Autowired - private MySavedRequestAwareAuthenticationSuccessHandler authenticationSuccessHandler; +// @Autowired +// private MySavedRequestAwareAuthenticationSuccessHandler authenticationSuccessHandler; public SecurityJavaConfig() { super(); @@ -38,17 +38,21 @@ public class SecurityJavaConfig extends WebSecurityConfigurerAdapter { protected void configure(final HttpSecurity http) throws Exception {// @formatter:off http .csrf().disable() + .authorizeRequests() + .and() .exceptionHandling() - .authenticationEntryPoint(restAuthenticationEntryPoint) +// .authenticationEntryPoint(restAuthenticationEntryPoint) .and() .authorizeRequests() .antMatchers("/api/csrfAttacker*").permitAll() .antMatchers("/api/customer/**").permitAll() .antMatchers("/api/foos/**").authenticated() + .antMatchers("/api/async/**").authenticated() .and() - .formLogin() - .successHandler(authenticationSuccessHandler) - .failureHandler(new SimpleUrlAuthenticationFailureHandler()) + .httpBasic() +// .and() +// .successHandler(authenticationSuccessHandler) +// .failureHandler(new SimpleUrlAuthenticationFailureHandler()) .and() .logout(); } // @formatter:on @@ -62,5 +66,14 @@ public class SecurityJavaConfig extends WebSecurityConfigurerAdapter { public SimpleUrlAuthenticationFailureHandler myFailureHandler() { return new SimpleUrlAuthenticationFailureHandler(); } + + @Bean + public MethodInvokingFactoryBean methodInvokingFactoryBean() { + MethodInvokingFactoryBean methodInvokingFactoryBean = new MethodInvokingFactoryBean(); + methodInvokingFactoryBean.setTargetClass(SecurityContextHolder.class); + methodInvokingFactoryBean.setTargetMethod("setStrategyName"); + methodInvokingFactoryBean.setArguments(new String[]{SecurityContextHolder.MODE_INHERITABLETHREADLOCAL}); + return methodInvokingFactoryBean; + } } \ No newline at end of file diff --git a/spring-security-rest/src/main/java/org/baeldung/web/controller/AsyncController.java b/spring-security-rest/src/main/java/org/baeldung/web/controller/AsyncController.java index bc59b4226a..9e78a62eed 100644 --- a/spring-security-rest/src/main/java/org/baeldung/web/controller/AsyncController.java +++ b/spring-security-rest/src/main/java/org/baeldung/web/controller/AsyncController.java @@ -2,13 +2,20 @@ package org.baeldung.web.controller; import java.util.concurrent.Callable; +import org.baeldung.web.service.AsyncService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; @Controller public class AsyncController { + + @Autowired + private AsyncService asyncService; @RequestMapping(method = RequestMethod.POST, value = "/upload") public Callable processUpload(final MultipartFile file) { @@ -20,5 +27,11 @@ public class AsyncController { } }; } + + @RequestMapping(method = RequestMethod.GET, value = "/async") + @ResponseBody + public Boolean checkIfContextPropagated() throws Exception{ + return asyncService.checkIfPrincipalPropagated().call() && asyncService.checkIfContextPropagated(SecurityContextHolder.getContext()); + } } diff --git a/spring-security-rest/src/main/java/org/baeldung/web/service/AsyncService.java b/spring-security-rest/src/main/java/org/baeldung/web/service/AsyncService.java new file mode 100644 index 0000000000..b7cf2b9f0c --- /dev/null +++ b/spring-security-rest/src/main/java/org/baeldung/web/service/AsyncService.java @@ -0,0 +1,11 @@ +package org.baeldung.web.service; + +import java.util.concurrent.Callable; + +public interface AsyncService { + + Callable checkIfPrincipalPropagated(); + + Boolean checkIfContextPropagated(Object context); + +} diff --git a/spring-security-rest/src/main/java/org/baeldung/web/service/AsyncServiceImpl.java b/spring-security-rest/src/main/java/org/baeldung/web/service/AsyncServiceImpl.java new file mode 100644 index 0000000000..51f8c5157b --- /dev/null +++ b/spring-security-rest/src/main/java/org/baeldung/web/service/AsyncServiceImpl.java @@ -0,0 +1,36 @@ +package org.baeldung.web.service; + +import java.util.concurrent.Callable; + +import org.apache.log4j.Logger; +import org.springframework.scheduling.annotation.Async; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +@Service +public class AsyncServiceImpl implements AsyncService { + + private static final Logger log = Logger.getLogger(AsyncService.class); + + @Override + public Callable checkIfPrincipalPropagated() { + Object before = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + log.info("Before new thread: " + before); + return new Callable() { + public Boolean call() throws Exception { + Object after = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + log.info("New thread: " + after); + return before == after; + } + }; + } + + @Async + @Override + public Boolean checkIfContextPropagated(Object context) { + log.info("Before @Async: " + context); + log.info("Inside @Async: " + SecurityContextHolder.getContext()); + return context == SecurityContextHolder.getContext(); + } + +} diff --git a/spring-security-rest/src/main/resources/webSecurityConfig.xml b/spring-security-rest/src/main/resources/webSecurityConfig.xml index cf8357633c..4172fe036f 100644 --- a/spring-security-rest/src/main/resources/webSecurityConfig.xml +++ b/spring-security-rest/src/main/resources/webSecurityConfig.xml @@ -1,33 +1,42 @@ - + http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"> - - + + - + - + - - + + - - + + - - - - - - - - + + + + + + + + + + \ No newline at end of file From 2fe2e2a971a1e545f3e881f64a4b33e9e831464b Mon Sep 17 00:00:00 2001 From: Sunil Mogadati Date: Fri, 16 Dec 2016 11:29:32 -0700 Subject: [PATCH 343/399] BAEL-40: Add NDC and JBoss Logging to the demo application (#880) * Add NDC and JBoss Logging to the demo application * NDC for Log4j, Log4j2 and JBoss Logging * Simplify NDC example by making it a single operation instead of two * Make NDC example as RestController, Use JBoss Logging only as a logging bridge * Fix merge conflicts in pull request - log-mdc pom.xml updated --- log-mdc/pom.xml | 90 +++++++++++++++---- .../com/baeldung/config/AppConfiguration.java | 19 ++++ .../com/baeldung/config/AppInitializer.java | 29 ++++++ .../java/com/baeldung/ndc/Investment.java | 41 +++++++++ .../controller/JBossLoggingController.java | 42 +++++++++ .../ndc/controller/Log4J2Controller.java | 41 +++++++++ .../ndc/controller/Log4JController.java | 41 +++++++++ .../ndc/service/InvestmentService.java | 31 +++++++ .../JBossLoggingInvestmentService.java | 21 +++++ .../ndc/service/Log4J2InvestmentService.java | 22 +++++ .../ndc/service/Log4JInvestmentService.java | 21 +++++ log-mdc/src/main/resources/log4j.properties | 6 +- log-mdc/src/main/resources/log4j2.xml | 9 +- .../java/com/baeldung/ndc/NDCLogTest.java | 61 +++++++++++++ 14 files changed, 457 insertions(+), 17 deletions(-) create mode 100644 log-mdc/src/main/java/com/baeldung/config/AppConfiguration.java create mode 100644 log-mdc/src/main/java/com/baeldung/config/AppInitializer.java create mode 100644 log-mdc/src/main/java/com/baeldung/ndc/Investment.java create mode 100644 log-mdc/src/main/java/com/baeldung/ndc/controller/JBossLoggingController.java create mode 100644 log-mdc/src/main/java/com/baeldung/ndc/controller/Log4J2Controller.java create mode 100644 log-mdc/src/main/java/com/baeldung/ndc/controller/Log4JController.java create mode 100644 log-mdc/src/main/java/com/baeldung/ndc/service/InvestmentService.java create mode 100644 log-mdc/src/main/java/com/baeldung/ndc/service/JBossLoggingInvestmentService.java create mode 100644 log-mdc/src/main/java/com/baeldung/ndc/service/Log4J2InvestmentService.java create mode 100644 log-mdc/src/main/java/com/baeldung/ndc/service/Log4JInvestmentService.java create mode 100644 log-mdc/src/test/java/com/baeldung/ndc/NDCLogTest.java diff --git a/log-mdc/pom.xml b/log-mdc/pom.xml index 4cabce502e..28c8bb820e 100644 --- a/log-mdc/pom.xml +++ b/log-mdc/pom.xml @@ -5,20 +5,37 @@ logmdc 0.0.1-SNAPSHOT logmdc - tutorial on logging with MDC + war + tutorial on logging with MDC and NDC - - org.springframework - spring-context - ${springframework.version} - - - org.springframework - spring-webmvc - ${springframework.version} - + + org.springframework + spring-core + ${springframework.version} + + + org.springframework + spring-web + ${springframework.version} + + + org.springframework + spring-webmvc + ${springframework.version} + + + javax.servlet + javax.servlet-api + ${javax.servlet.version} + provided + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.library} + @@ -31,12 +48,12 @@ org.apache.logging.log4j log4j-api - 2.7 + ${log4j2.version} org.apache.logging.log4j log4j-core - ${log4j-api.version} + ${log4j2.version} @@ -52,6 +69,13 @@ logback-classic ${logback.version} + + + + org.jboss.logging + jboss-logging + ${jbosslogging.version} + junit @@ -59,15 +83,51 @@ ${junit.version} test + + org.springframework + spring-test + ${springframework.version} + test + 4.3.4.RELEASE 1.2.17 - 2.7 + 2.7 3.3.6 1.1.7 + 3.3.0.Final + 3.1.0 + 2.8.5 4.12 - \ No newline at end of file + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.2 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-war-plugin + 2.4 + + src/main/webapp + logging-service + false + + + + + logging-service + + diff --git a/log-mdc/src/main/java/com/baeldung/config/AppConfiguration.java b/log-mdc/src/main/java/com/baeldung/config/AppConfiguration.java new file mode 100644 index 0000000000..5e52c5f25e --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/config/AppConfiguration.java @@ -0,0 +1,19 @@ +package com.baeldung.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@Configuration +@EnableWebMvc +@ComponentScan(basePackages = "com.baeldung") +public class AppConfiguration extends WebMvcConfigurerAdapter { + + @Override + public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { + configurer.enable(); + } + +} diff --git a/log-mdc/src/main/java/com/baeldung/config/AppInitializer.java b/log-mdc/src/main/java/com/baeldung/config/AppInitializer.java new file mode 100644 index 0000000000..828c2b2efa --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/config/AppInitializer.java @@ -0,0 +1,29 @@ +package com.baeldung.config; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { + + @Override + public void onStartup(ServletContext servletContext) throws ServletException { + super.onStartup(servletContext); + } + + @Override + protected Class[] getRootConfigClasses() { + return new Class[] { AppConfiguration.class }; + } + + @Override + protected Class[] getServletConfigClasses() { + return null; + } + + @Override + protected String[] getServletMappings() { + return new String[] { "/" }; + } +} diff --git a/log-mdc/src/main/java/com/baeldung/ndc/Investment.java b/log-mdc/src/main/java/com/baeldung/ndc/Investment.java new file mode 100644 index 0000000000..4275c6ef21 --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/ndc/Investment.java @@ -0,0 +1,41 @@ +package com.baeldung.ndc; + +public class Investment { + private String transactionId; + private String owner; + private Long amount; + + public Investment() { + } + + public Investment(String transactionId, String owner, Long amount) { + this.transactionId = transactionId; + this.owner = owner; + this.amount = amount; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public Long getAmount() { + return amount; + } + + public void setAmount(Long amount) { + this.amount = amount; + } + +} diff --git a/log-mdc/src/main/java/com/baeldung/ndc/controller/JBossLoggingController.java b/log-mdc/src/main/java/com/baeldung/ndc/controller/JBossLoggingController.java new file mode 100644 index 0000000000..b024f3ec81 --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/ndc/controller/JBossLoggingController.java @@ -0,0 +1,42 @@ +package com.baeldung.ndc.controller; + +import org.jboss.logging.NDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.ndc.Investment; +import com.baeldung.ndc.service.InvestmentService; + + +@RestController +public class JBossLoggingController { + @Autowired + @Qualifier("JBossLoggingInvestmentService") + private InvestmentService jbossLoggingBusinessService; + + @RequestMapping(value = "/ndc/jboss-logging", method = RequestMethod.POST) + public ResponseEntity postPayment(@RequestBody Investment investment) { + // Add transactionId and owner to NDC + NDC.push("tx.id=" + investment.getTransactionId()); + NDC.push("tx.owner=" + investment.getOwner()); + + try { + jbossLoggingBusinessService.transfer(investment.getAmount()); + } finally { + // take out owner from the NDC stack + NDC.pop(); + + // take out transactionId from the NDC stack + NDC.pop(); + + NDC.clear(); + } + return new ResponseEntity(investment, HttpStatus.OK); + } +} \ No newline at end of file diff --git a/log-mdc/src/main/java/com/baeldung/ndc/controller/Log4J2Controller.java b/log-mdc/src/main/java/com/baeldung/ndc/controller/Log4J2Controller.java new file mode 100644 index 0000000000..9cc57d9fa7 --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/ndc/controller/Log4J2Controller.java @@ -0,0 +1,41 @@ +package com.baeldung.ndc.controller; + +import org.apache.logging.log4j.ThreadContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.ndc.Investment; +import com.baeldung.ndc.service.InvestmentService; + +@RestController +public class Log4J2Controller { + @Autowired + @Qualifier("log4j2InvestmentService") + private InvestmentService log4j2BusinessService; + + @RequestMapping(value = "/ndc/log4j2", method = RequestMethod.POST) + public ResponseEntity postPayment(@RequestBody Investment investment) { + // Add transactionId and owner to NDC + ThreadContext.push("tx.id=" + investment.getTransactionId()); + ThreadContext.push("tx.owner=" + investment.getOwner()); + + try { + log4j2BusinessService.transfer(investment.getAmount()); + } finally { + // take out owner from the NDC stack + ThreadContext.pop(); + + // take out transactionId from the NDC stack + ThreadContext.pop(); + + ThreadContext.clearAll(); + } + return new ResponseEntity(investment, HttpStatus.OK); + } +} \ No newline at end of file diff --git a/log-mdc/src/main/java/com/baeldung/ndc/controller/Log4JController.java b/log-mdc/src/main/java/com/baeldung/ndc/controller/Log4JController.java new file mode 100644 index 0000000000..daf7994a88 --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/ndc/controller/Log4JController.java @@ -0,0 +1,41 @@ +package com.baeldung.ndc.controller; + +import org.apache.log4j.NDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.ndc.Investment; +import com.baeldung.ndc.service.InvestmentService; + +@RestController +public class Log4JController { + @Autowired + @Qualifier("log4jInvestmentService") + private InvestmentService log4jBusinessService; + + @RequestMapping(value = "/ndc/log4j", method = RequestMethod.POST) + public ResponseEntity postPayment(@RequestBody Investment investment) { + // Add transactionId and owner to NDC + NDC.push("tx.id=" + investment.getTransactionId()); + NDC.push("tx.owner=" + investment.getOwner()); + + try { + log4jBusinessService.transfer(investment.getAmount()); + } finally { + // take out owner from the NDC stack + NDC.pop(); + + // take out transactionId from the NDC stack + NDC.pop(); + + NDC.remove(); + } + return new ResponseEntity(investment, HttpStatus.OK); + } +} \ No newline at end of file diff --git a/log-mdc/src/main/java/com/baeldung/ndc/service/InvestmentService.java b/log-mdc/src/main/java/com/baeldung/ndc/service/InvestmentService.java new file mode 100644 index 0000000000..13d8e6a71b --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/ndc/service/InvestmentService.java @@ -0,0 +1,31 @@ +package com.baeldung.ndc.service; + +/** + * A fake investment service. + */ +public interface InvestmentService { + + /** + * Sample service transferring a given amount of money. + * @param amount + * @return {@code true} when the transfer complete successfully, {@code false} otherwise. + */ + default public boolean transfer(long amount) { + beforeTransfer(amount); + // exchange messages with a remote system to transfer the money + try { + // let's pause randomly to properly simulate an actual system. + Thread.sleep((long) (500 + Math.random() * 500)); + } catch (InterruptedException e) { + // should never happen + } + // let's simulate both failing and successful transfers + boolean outcome = Math.random() >= 0.25; + afterTransfer(amount, outcome); + return outcome; + } + + void beforeTransfer(long amount); + + void afterTransfer(long amount, boolean outcome); +} diff --git a/log-mdc/src/main/java/com/baeldung/ndc/service/JBossLoggingInvestmentService.java b/log-mdc/src/main/java/com/baeldung/ndc/service/JBossLoggingInvestmentService.java new file mode 100644 index 0000000000..e1e5e0a083 --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/ndc/service/JBossLoggingInvestmentService.java @@ -0,0 +1,21 @@ +package com.baeldung.ndc.service; + +import org.jboss.logging.Logger; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +@Qualifier("JBossLoggingInvestmentService") +public class JBossLoggingInvestmentService implements InvestmentService { + private static final Logger logger = Logger.getLogger(JBossLoggingInvestmentService.class); + + @Override + public void beforeTransfer(long amount) { + logger.infov("Preparing to transfer {0}$.", amount); + } + + @Override + public void afterTransfer(long amount, boolean outcome) { + logger.infov("Has transfer of {0}$ completed successfully ? {1}.", amount, outcome); + } +} \ No newline at end of file diff --git a/log-mdc/src/main/java/com/baeldung/ndc/service/Log4J2InvestmentService.java b/log-mdc/src/main/java/com/baeldung/ndc/service/Log4J2InvestmentService.java new file mode 100644 index 0000000000..6e55796574 --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/ndc/service/Log4J2InvestmentService.java @@ -0,0 +1,22 @@ +package com.baeldung.ndc.service; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +@Qualifier("log4j2InvestmentService") +public class Log4J2InvestmentService implements InvestmentService { + private static final Logger logger = LogManager.getLogger(); + + @Override + public void beforeTransfer(long amount) { + logger.info("Preparing to transfer {}$.", amount); + } + + @Override + public void afterTransfer(long amount, boolean outcome) { + logger.info("Has transfer of {}$ completed successfully ? {}.", amount, outcome); + } +} \ No newline at end of file diff --git a/log-mdc/src/main/java/com/baeldung/ndc/service/Log4JInvestmentService.java b/log-mdc/src/main/java/com/baeldung/ndc/service/Log4JInvestmentService.java new file mode 100644 index 0000000000..1f581554e5 --- /dev/null +++ b/log-mdc/src/main/java/com/baeldung/ndc/service/Log4JInvestmentService.java @@ -0,0 +1,21 @@ +package com.baeldung.ndc.service; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +@Qualifier("log4jInvestmentService") +public class Log4JInvestmentService implements InvestmentService { + private Logger logger = Logger.getLogger(Log4JInvestmentService.class); + + @Override + public void beforeTransfer(long amount) { + logger.info("Preparing to transfer " + amount + "$."); + } + + @Override + public void afterTransfer(long amount, boolean outcome) { + logger.info("Has transfer of " + amount + "$ completed successfully ? " + outcome + "."); + } +} \ No newline at end of file diff --git a/log-mdc/src/main/resources/log4j.properties b/log-mdc/src/main/resources/log4j.properties index 39be027f3f..575ebcca8d 100644 --- a/log-mdc/src/main/resources/log4j.properties +++ b/log-mdc/src/main/resources/log4j.properties @@ -3,6 +3,10 @@ log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout #note the %X{userName} - this is how you fetch data from Mapped Diagnostic Context (MDC) #log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %5p %c{1} %x - %m%n +# %x is used to fetch data from NDC. So below setting uses both MDC and NDC log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %5p %c{1} %x - %m - tx.id=%X{transaction.id} tx.owner=%X{transaction.owner}%n -log4j.rootLogger = TRACE, consoleAppender \ No newline at end of file +# NDC only setting - %x is used to fetch data from NDC +#log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %5p %c{1} - %m - [%x]%n + +log4j.rootLogger = INFO, consoleAppender \ No newline at end of file diff --git a/log-mdc/src/main/resources/log4j2.xml b/log-mdc/src/main/resources/log4j2.xml index 800cfacafe..cbdf02fc51 100644 --- a/log-mdc/src/main/resources/log4j2.xml +++ b/log-mdc/src/main/resources/log4j2.xml @@ -2,8 +2,15 @@ + + pattern="%-4r [%t] %5p %c{1} - %m - %x - tx.id=%X{transaction.id} tx.owner=%X{transaction.owner}%n" /> + + + + diff --git a/log-mdc/src/test/java/com/baeldung/ndc/NDCLogTest.java b/log-mdc/src/test/java/com/baeldung/ndc/NDCLogTest.java new file mode 100644 index 0000000000..8cba176f7e --- /dev/null +++ b/log-mdc/src/test/java/com/baeldung/ndc/NDCLogTest.java @@ -0,0 +1,61 @@ +package com.baeldung.ndc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import com.baeldung.config.AppConfiguration; +import com.fasterxml.jackson.databind.ObjectMapper; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = AppConfiguration.class) +@WebAppConfiguration +public class NDCLogTest { + + private MockMvc mockMvc; + + @Autowired + private WebApplicationContext webApplicationContext; + + private Investment investment; + + @Before + public void setUp() { + mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + + investment = new Investment(); + investment.setTransactionId("123"); + investment.setOwner("Mark"); + investment.setAmount(1000L); + } + + @Test + public void givenLog4jLogger_whenNDCAdded_thenResponseOkAndNDCInLog() throws Exception { + mockMvc.perform(post("/ndc/log4j", investment).contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(investment))).andExpect(status().is2xxSuccessful()); + + } + + @Test + public void givenLog4j2Logger_whenNDCAdded_thenResponseOkAndNDCInLog() throws Exception { + mockMvc.perform(post("/ndc/log4j2", investment).contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(investment))).andExpect(status().is2xxSuccessful()); + + } + + @Test + public void givenJBossLoggerBridge_whenNDCAdded_thenResponseOkAndNDCInLog() throws Exception { + mockMvc.perform(post("/ndc/jboss-logging", investment).contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(investment))).andExpect(status().is2xxSuccessful()); + + } + +} From 7f45d8f9c97949264852c68f7ebaac86a3aae4e0 Mon Sep 17 00:00:00 2001 From: maibin Date: Fri, 16 Dec 2016 21:10:54 +0100 Subject: [PATCH 344/399] Simulated Annealing algorithm (#900) * @Async and Spring Security * @Async with SecurityContext propagated * Spring and @Async * Simulated Annealing algorithm * Simulated Annealing algorithm * Rebase * Rebase --- core-java/pom.xml | 6 ++ .../java/com/baeldung/algorithms/City.java | 22 +++++++ .../algorithms/SimulatedAnnealing.java | 41 +++++++++++++ .../java/com/baeldung/algorithms/Travel.java | 60 +++++++++++++++++++ 4 files changed, 129 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/algorithms/City.java create mode 100644 core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java create mode 100644 core-java/src/main/java/com/baeldung/algorithms/Travel.java diff --git a/core-java/pom.xml b/core-java/pom.xml index 0c14da2245..f5a800d508 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -85,6 +85,12 @@ log4j-over-slf4j ${org.slf4j.version} + + org.projectlombok + lombok + 1.16.12 + provided + diff --git a/core-java/src/main/java/com/baeldung/algorithms/City.java b/core-java/src/main/java/com/baeldung/algorithms/City.java new file mode 100644 index 0000000000..1a96dc759d --- /dev/null +++ b/core-java/src/main/java/com/baeldung/algorithms/City.java @@ -0,0 +1,22 @@ +package com.baeldung.algorithms; + +import lombok.Data; + +@Data +public class City { + + private int x; + private int y; + + public City() { + this.x = (int) (Math.random() * 500); + this.y = (int) (Math.random() * 500); + } + + public double distanceToCity(City city) { + int x = Math.abs(getX() - city.getX()); + int y = Math.abs(getY() - city.getY()); + return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + } + +} diff --git a/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java b/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java new file mode 100644 index 0000000000..b62e861399 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java @@ -0,0 +1,41 @@ +package com.baeldung.algorithms; + +public class SimulatedAnnealing { + + private static Travel travel = new Travel(10); + + public static double simulateAnnealing(double startingTemperature, int numberOfIterations, double coolingRate) { + System.out.println("Starting SA with temperature: " + startingTemperature + ", # of iterations: " + + numberOfIterations + " and colling rate: " + coolingRate); + double t = startingTemperature; + travel.generateInitialTravel(); + double bestDistance = travel.getDistance(); + System.out.println("Initial distance of travel: " + bestDistance); + Travel bestSolution = travel; + Travel currentSolution = bestSolution; + + for (int i = 0; i < numberOfIterations; i++) { + if (t > 0.1) { + currentSolution.swapCities(); + double currentDistance = currentSolution.getDistance(); + if (currentDistance == 0) + continue; + if (currentDistance < bestDistance) { + bestDistance = currentDistance; + } else if (Math.exp((currentDistance - bestDistance) / t) < Math.random()) { + currentSolution.revertSwap(); + } + t *= coolingRate; + } + if (i % 100 == 0) { + System.out.println("Iteration #" + i); + } + } + return bestDistance; + } + + public static void main(String[] args) { + System.out.println("Optimized distance for travel: " + simulateAnnealing(10, 10000, 0.9)); + } + +} diff --git a/core-java/src/main/java/com/baeldung/algorithms/Travel.java b/core-java/src/main/java/com/baeldung/algorithms/Travel.java new file mode 100644 index 0000000000..9921b2516e --- /dev/null +++ b/core-java/src/main/java/com/baeldung/algorithms/Travel.java @@ -0,0 +1,60 @@ +package com.baeldung.algorithms; + +import java.util.ArrayList; +import java.util.Collections; + +import lombok.Data; + +@Data +public class Travel { + + private ArrayList travel = new ArrayList<>(); + private ArrayList previousTravel = new ArrayList<>(); + + public Travel(int numberOfCities) { + for (int i = 0; i < numberOfCities; i++) { + travel.add(new City()); + } + } + + public void generateInitialTravel() { + if (travel.isEmpty()) + new Travel(10); + Collections.shuffle(travel); + } + + public void swapCities() { + int a = generateRandomIndex(); + int b = generateRandomIndex(); + previousTravel = travel; + travel.set(a, travel.get(b)); + } + + public void revertSwap() { + travel = previousTravel; + } + + private int generateRandomIndex() { + return (int) (Math.random() * travel.size()); + } + + public City getCity(int index) { + return travel.get(index); + } + + public int getDistance() { + int distance = 0; + for (int index = 0; index < travel.size(); index++) { + City starting = getCity(index); + City destination; + if (index + 1 < travel.size()) { + destination = getCity(index + 1); + } else { + destination = getCity(0); + } + distance += starting.distanceToCity(destination); + } + return distance; + } + +} From a2c022f4dd415a03841f5964f37214ddd8f40fb7 Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 16 Dec 2016 23:01:10 +0200 Subject: [PATCH 345/399] create intelliJ formatter --- intelliJ/intelliJ-formatter.xml | 40 +++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 intelliJ/intelliJ-formatter.xml diff --git a/intelliJ/intelliJ-formatter.xml b/intelliJ/intelliJ-formatter.xml new file mode 100644 index 0000000000..c9aa35122b --- /dev/null +++ b/intelliJ/intelliJ-formatter.xml @@ -0,0 +1,40 @@ + + \ No newline at end of file From 5faf49eae2535df4c8560f98d64b3d487cc615a0 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 17 Dec 2016 01:42:47 +0200 Subject: [PATCH 346/399] fix intelliJ formatter --- intelliJ/intelliJ-formatter.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/intelliJ/intelliJ-formatter.xml b/intelliJ/intelliJ-formatter.xml index c9aa35122b..8c072cd161 100644 --- a/intelliJ/intelliJ-formatter.xml +++ b/intelliJ/intelliJ-formatter.xml @@ -4,6 +4,7 @@ + + + org.unix4j + unix4j-command + 0.4 + + + + com.googlecode.grep4j + grep4j + 1.8.7 + diff --git a/core-java/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java b/core-java/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java new file mode 100644 index 0000000000..c4920c51f6 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java @@ -0,0 +1,65 @@ +package com.baeldung.java8; + +import static org.junit.Assert.assertEquals; + +import java.io.File; +import java.io.IOException; +import java.nio.channels.FileChannel; +import java.nio.file.Path; +import java.nio.file.Paths; +import org.apache.commons.io.FileUtils; +import org.junit.Before; +import org.junit.Test; + +public class JavaFileSizeUnitTest { + private static final long EXPECTED_FILE_SIZE_IN_BYTES = 11; + private String filePath; + + @Before + public void init() { + final String separator = File.separator; + filePath = String.join(separator, new String[] {"src", "test", "resources", "testFolder", "sample_file_1.in"}); + } + + @Test + public void whenGetFileSize_thenCorrect() { + final File file = new File(filePath); + + final long size = getFileSize(file); + + assertEquals(EXPECTED_FILE_SIZE_IN_BYTES, size); + } + + @Test + public void whenGetFileSizeUsingNioApi_thenCorrect() throws IOException { + final Path path = Paths.get(this.filePath); + final FileChannel fileChannel = FileChannel.open(path); + + final long fileSize = fileChannel.size(); + + assertEquals(EXPECTED_FILE_SIZE_IN_BYTES, fileSize); + } + + @Test + public void whenGetFileSizeUsingApacheCommonsIO_thenCorrect() { + final File file = new File(filePath); + + final long size = FileUtils.sizeOf(file); + + assertEquals(EXPECTED_FILE_SIZE_IN_BYTES, size); + } + + @Test + public void whenGetReadableFileSize_thenCorrect() { + final File file = new File(filePath); + + final long size = getFileSize(file); + + assertEquals(EXPECTED_FILE_SIZE_IN_BYTES + " bytes", FileUtils.byteCountToDisplaySize(size)); + } + + private long getFileSize(final File file) { + final long length = file.length(); + return length; + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java b/core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java new file mode 100644 index 0000000000..d6efdfdf5c --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java @@ -0,0 +1,58 @@ +package com.baeldung.java8.unix.grep; + +import java.io.File; +import java.util.List; + +import org.junit.Before; +import org.junit.Test; +import org.unix4j.Unix4j; +import static org.unix4j.Unix4j.*; +import static org.junit.Assert.assertEquals; +import org.unix4j.line.Line; +import static org.unix4j.unix.Grep.*; +import static org.unix4j.unix.cut.CutOption.*; + +public class GrepWithUnix4JTest { + + private File fileToGrep; + + @Before + public void init() { + final String separator = File.separator; + final String filePath = String.join(separator, new String[] {"src", "test", "resources", "dictionary.in"}); + fileToGrep = new File(filePath); + } + + @Test + public void whenGrepWithSimpleString_thenCorrect() { + int expectedLineCount = 4; + + //grep "NINETEEN" dictionary.txt + List lines = Unix4j.grep("NINETEEN", fileToGrep).toLineList(); + + assertEquals(expectedLineCount, lines.size()); + } + + @Test + public void whenInverseGrepWithSimpleString_thenCorrect() { + int expectedLineCount = 178687; + + //grep -v "NINETEEN" dictionary.txt + List lines = grep(Options.v, "NINETEEN", fileToGrep). + toLineList(); + + assertEquals(expectedLineCount, lines.size()); + } + + + @Test + public void whenGrepWithRegex_thenCorrect() { + int expectedLineCount = 151; + + //grep -c ".*?NINE.*?" dictionary.txt + String patternCount = grep(Options.c, ".*?NINE.*?", fileToGrep). + cut(fields, ":", 1).toStringResult(); + + assertEquals(expectedLineCount, Integer.parseInt(patternCount)); + } +} diff --git a/core-java/src/test/resources/dictionary.in b/core-java/src/test/resources/dictionary.in new file mode 100644 index 0000000000..0cc22a20b0 --- /dev/null +++ b/core-java/src/test/resources/dictionary.in @@ -0,0 +1,178691 @@ +AA +AAH +AAHED +AAHING +AAHS +AAL +AALII +AALIIS +AALS +AARDVARK +AARDVARKS +AARDWOLF +AARDWOLVES +AARGH +AARRGH +AARRGHH +AAS +AASVOGEL +AASVOGELS +AB +ABA +ABACA +ABACAS +ABACI +ABACK +ABACTERIAL +ABACUS +ABACUSES +ABAFT +ABAKA +ABAKAS +ABALONE +ABALONES +ABAMP +ABAMPERE +ABAMPERES +ABAMPS +ABANDON +ABANDONED +ABANDONER +ABANDONERS +ABANDONING +ABANDONMENT +ABANDONMENTS +ABANDONS +ABAPICAL +ABAS +ABASE +ABASED +ABASEDLY +ABASEMENT +ABASEMENTS +ABASER +ABASERS +ABASES +ABASH +ABASHED +ABASHEDLY +ABASHES +ABASHING +ABASHMENT +ABASHMENTS +ABASIA +ABASIAS +ABASING +ABATABLE +ABATE +ABATED +ABATEMENT +ABATEMENTS +ABATER +ABATERS +ABATES +ABATING +ABATIS +ABATISES +ABATOR +ABATORS +ABATTIS +ABATTISES +ABATTOIR +ABATTOIRS +ABAXIAL +ABAXILE +ABAYA +ABAYAS +ABBA +ABBACIES +ABBACY +ABBAS +ABBATIAL +ABBE +ABBES +ABBESS +ABBESSES +ABBEY +ABBEYS +ABBOT +ABBOTCIES +ABBOTCY +ABBOTS +ABBOTSHIP +ABBOTSHIPS +ABBREVIATE +ABBREVIATED +ABBREVIATES +ABBREVIATING +ABBREVIATION +ABBREVIATIONS +ABBREVIATOR +ABBREVIATORS +ABCOULOMB +ABCOULOMBS +ABDICABLE +ABDICATE +ABDICATED +ABDICATES +ABDICATING +ABDICATION +ABDICATIONS +ABDICATOR +ABDICATORS +ABDOMEN +ABDOMENS +ABDOMINA +ABDOMINAL +ABDOMINALLY +ABDOMINALS +ABDUCE +ABDUCED +ABDUCENS +ABDUCENT +ABDUCENTES +ABDUCES +ABDUCING +ABDUCT +ABDUCTED +ABDUCTEE +ABDUCTEES +ABDUCTING +ABDUCTION +ABDUCTIONS +ABDUCTOR +ABDUCTORES +ABDUCTORS +ABDUCTS +ABEAM +ABECEDARIAN +ABECEDARIANS +ABED +ABEGGING +ABELE +ABELES +ABELIA +ABELIAN +ABELIAS +ABELMOSK +ABELMOSKS +ABERRANCE +ABERRANCES +ABERRANCIES +ABERRANCY +ABERRANT +ABERRANTLY +ABERRANTS +ABERRATED +ABERRATION +ABERRATIONAL +ABERRATIONS +ABET +ABETMENT +ABETMENTS +ABETS +ABETTAL +ABETTALS +ABETTED +ABETTER +ABETTERS +ABETTING +ABETTOR +ABETTORS +ABEYANCE +ABEYANCES +ABEYANCIES +ABEYANCY +ABEYANT +ABFARAD +ABFARADS +ABHENRIES +ABHENRY +ABHENRYS +ABHOR +ABHORRED +ABHORRENCE +ABHORRENCES +ABHORRENT +ABHORRENTLY +ABHORRER +ABHORRERS +ABHORRING +ABHORS +ABIDANCE +ABIDANCES +ABIDE +ABIDED +ABIDER +ABIDERS +ABIDES +ABIDING +ABIDINGLY +ABIGAIL +ABIGAILS +ABILITIES +ABILITY +ABIOGENESES +ABIOGENESIS +ABIOGENIC +ABIOGENICALLY +ABIOGENIST +ABIOGENISTS +ABIOLOGICAL +ABIOSES +ABIOSIS +ABIOTIC +ABIOTICALLY +ABJECT +ABJECTION +ABJECTIONS +ABJECTLY +ABJECTNESS +ABJECTNESSES +ABJURATION +ABJURATIONS +ABJURE +ABJURED +ABJURER +ABJURERS +ABJURES +ABJURING +ABLATE +ABLATED +ABLATES +ABLATING +ABLATION +ABLATIONS +ABLATIVE +ABLATIVELY +ABLATIVES +ABLATOR +ABLATORS +ABLAUT +ABLAUTS +ABLAZE +ABLE +ABLED +ABLEGATE +ABLEGATES +ABLEISM +ABLEISMS +ABLEIST +ABLEISTS +ABLER +ABLES +ABLEST +ABLINGS +ABLINS +ABLOOM +ABLUENT +ABLUENTS +ABLUSH +ABLUTED +ABLUTION +ABLUTIONARY +ABLUTIONS +ABLY +ABMHO +ABMHOS +ABNEGATE +ABNEGATED +ABNEGATES +ABNEGATING +ABNEGATION +ABNEGATIONS +ABNEGATOR +ABNEGATORS +ABNORMAL +ABNORMALITIES +ABNORMALITY +ABNORMALLY +ABNORMALS +ABNORMITIES +ABNORMITY +ABO +ABOARD +ABODE +ABODED +ABODES +ABODING +ABOHM +ABOHMS +ABOIDEAU +ABOIDEAUS +ABOIDEAUX +ABOIL +ABOITEAU +ABOITEAUS +ABOITEAUX +ABOLISH +ABOLISHABLE +ABOLISHED +ABOLISHER +ABOLISHERS +ABOLISHES +ABOLISHING +ABOLISHMENT +ABOLISHMENTS +ABOLITION +ABOLITIONARY +ABOLITIONISM +ABOLITIONISMS +ABOLITIONIST +ABOLITIONISTS +ABOLITIONS +ABOLLA +ABOLLAE +ABOMA +ABOMAS +ABOMASA +ABOMASAL +ABOMASI +ABOMASUM +ABOMASUS +ABOMINABLE +ABOMINABLY +ABOMINATE +ABOMINATED +ABOMINATES +ABOMINATING +ABOMINATION +ABOMINATIONS +ABOMINATOR +ABOMINATORS +ABOON +ABORAL +ABORALLY +ABORIGINAL +ABORIGINALLY +ABORIGINALS +ABORIGINE +ABORIGINES +ABORNING +ABORT +ABORTED +ABORTER +ABORTERS +ABORTIFACIENT +ABORTIFACIENTS +ABORTING +ABORTION +ABORTIONIST +ABORTIONISTS +ABORTIONS +ABORTIVE +ABORTIVELY +ABORTIVENESS +ABORTIVENESSES +ABORTS +ABORTUS +ABORTUSES +ABOS +ABOUGHT +ABOULIA +ABOULIAS +ABOULIC +ABOUND +ABOUNDED +ABOUNDING +ABOUNDS +ABOUT +ABOVE +ABOVEBOARD +ABOVEGROUND +ABOVES +ABRACADABRA +ABRACADABRAS +ABRACHIA +ABRACHIAS +ABRADABLE +ABRADANT +ABRADANTS +ABRADE +ABRADED +ABRADER +ABRADERS +ABRADES +ABRADING +ABRASION +ABRASIONS +ABRASIVE +ABRASIVELY +ABRASIVENESS +ABRASIVENESSES +ABRASIVES +ABREACT +ABREACTED +ABREACTING +ABREACTION +ABREACTIONS +ABREACTS +ABREAST +ABRI +ABRIDGE +ABRIDGED +ABRIDGEMENT +ABRIDGEMENTS +ABRIDGER +ABRIDGERS +ABRIDGES +ABRIDGING +ABRIDGMENT +ABRIDGMENTS +ABRIS +ABROACH +ABROAD +ABROGABLE +ABROGATE +ABROGATED +ABROGATES +ABROGATING +ABROGATION +ABROGATIONS +ABROGATOR +ABROGATORS +ABROSIA +ABROSIAS +ABRUPT +ABRUPTER +ABRUPTEST +ABRUPTION +ABRUPTIONS +ABRUPTLY +ABRUPTNESS +ABRUPTNESSES +ABS +ABSCESS +ABSCESSED +ABSCESSES +ABSCESSING +ABSCISE +ABSCISED +ABSCISES +ABSCISIN +ABSCISING +ABSCISINS +ABSCISSA +ABSCISSAE +ABSCISSAS +ABSCISSION +ABSCISSIONS +ABSCOND +ABSCONDED +ABSCONDER +ABSCONDERS +ABSCONDING +ABSCONDS +ABSEIL +ABSEILED +ABSEILING +ABSEILS +ABSENCE +ABSENCES +ABSENT +ABSENTED +ABSENTEE +ABSENTEEISM +ABSENTEEISMS +ABSENTEES +ABSENTER +ABSENTERS +ABSENTING +ABSENTLY +ABSENTMINDED +ABSENTMINDEDLY +ABSENTS +ABSINTH +ABSINTHE +ABSINTHES +ABSINTHS +ABSOLUTE +ABSOLUTELY +ABSOLUTENESS +ABSOLUTENESSES +ABSOLUTER +ABSOLUTES +ABSOLUTEST +ABSOLUTION +ABSOLUTIONS +ABSOLUTISM +ABSOLUTISMS +ABSOLUTIST +ABSOLUTISTIC +ABSOLUTISTS +ABSOLUTIVE +ABSOLUTIZE +ABSOLUTIZED +ABSOLUTIZES +ABSOLUTIZING +ABSOLVE +ABSOLVED +ABSOLVENT +ABSOLVENTS +ABSOLVER +ABSOLVERS +ABSOLVES +ABSOLVING +ABSONANT +ABSORB +ABSORBABILITIES +ABSORBABILITY +ABSORBABLE +ABSORBANCE +ABSORBANCES +ABSORBANCIES +ABSORBANCY +ABSORBANT +ABSORBANTS +ABSORBED +ABSORBENCIES +ABSORBENCY +ABSORBENT +ABSORBENTS +ABSORBER +ABSORBERS +ABSORBING +ABSORBINGLY +ABSORBS +ABSORPTANCE +ABSORPTANCES +ABSORPTION +ABSORPTIONS +ABSORPTIVE +ABSORPTIVITIES +ABSORPTIVITY +ABSTAIN +ABSTAINED +ABSTAINER +ABSTAINERS +ABSTAINING +ABSTAINS +ABSTEMIOUS +ABSTEMIOUSLY +ABSTEMIOUSNESS +ABSTENTION +ABSTENTIONS +ABSTENTIOUS +ABSTERGE +ABSTERGED +ABSTERGES +ABSTERGING +ABSTINENCE +ABSTINENCES +ABSTINENT +ABSTINENTLY +ABSTRACT +ABSTRACTABLE +ABSTRACTED +ABSTRACTEDLY +ABSTRACTEDNESS +ABSTRACTER +ABSTRACTERS +ABSTRACTEST +ABSTRACTING +ABSTRACTION +ABSTRACTIONAL +ABSTRACTIONISM +ABSTRACTIONISMS +ABSTRACTIONIST +ABSTRACTIONISTS +ABSTRACTIONS +ABSTRACTIVE +ABSTRACTLY +ABSTRACTNESS +ABSTRACTNESSES +ABSTRACTOR +ABSTRACTORS +ABSTRACTS +ABSTRICT +ABSTRICTED +ABSTRICTING +ABSTRICTS +ABSTRUSE +ABSTRUSELY +ABSTRUSENESS +ABSTRUSENESSES +ABSTRUSER +ABSTRUSEST +ABSTRUSITIES +ABSTRUSITY +ABSURD +ABSURDER +ABSURDEST +ABSURDISM +ABSURDISMS +ABSURDIST +ABSURDISTS +ABSURDITIES +ABSURDITY +ABSURDLY +ABSURDNESS +ABSURDNESSES +ABSURDS +ABUBBLE +ABUILDING +ABULIA +ABULIAS +ABULIC +ABUNDANCE +ABUNDANCES +ABUNDANT +ABUNDANTLY +ABUSABLE +ABUSE +ABUSED +ABUSER +ABUSERS +ABUSES +ABUSING +ABUSIVE +ABUSIVELY +ABUSIVENESS +ABUSIVENESSES +ABUT +ABUTILON +ABUTILONS +ABUTMENT +ABUTMENTS +ABUTS +ABUTTAL +ABUTTALS +ABUTTED +ABUTTER +ABUTTERS +ABUTTING +ABUZZ +ABVOLT +ABVOLTS +ABWATT +ABWATTS +ABY +ABYE +ABYES +ABYING +ABYS +ABYSM +ABYSMAL +ABYSMALLY +ABYSMS +ABYSS +ABYSSAL +ABYSSES +ACACIA +ACACIAS +ACADEME +ACADEMES +ACADEMIA +ACADEMIAS +ACADEMIC +ACADEMICAL +ACADEMICALLY +ACADEMICIAN +ACADEMICIANS +ACADEMICISM +ACADEMICISMS +ACADEMICS +ACADEMIES +ACADEMISM +ACADEMISMS +ACADEMY +ACAJOU +ACAJOUS +ACALEPH +ACALEPHAE +ACALEPHE +ACALEPHES +ACALEPHS +ACANTHA +ACANTHAE +ACANTHI +ACANTHINE +ACANTHOCEPHALAN +ACANTHOID +ACANTHOUS +ACANTHUS +ACANTHUSES +ACAPNIA +ACAPNIAS +ACARBOSE +ACARBOSES +ACARI +ACARIASES +ACARIASIS +ACARICIDAL +ACARICIDE +ACARICIDES +ACARID +ACARIDAN +ACARIDANS +ACARIDS +ACARINE +ACARINES +ACAROID +ACAROLOGIES +ACAROLOGY +ACARPOUS +ACARUS +ACATALECTIC +ACATALECTICS +ACAUDAL +ACAUDATE +ACAULESCENT +ACAULINE +ACAULOSE +ACAULOUS +ACCEDE +ACCEDED +ACCEDENCE +ACCEDENCES +ACCEDER +ACCEDERS +ACCEDES +ACCEDING +ACCELERANDO +ACCELERANDOS +ACCELERANT +ACCELERANTS +ACCELERATE +ACCELERATED +ACCELERATES +ACCELERATING +ACCELERATINGLY +ACCELERATION +ACCELERATIONS +ACCELERATIVE +ACCELERATOR +ACCELERATORS +ACCELEROMETER +ACCELEROMETERS +ACCENT +ACCENTED +ACCENTING +ACCENTLESS +ACCENTOR +ACCENTORS +ACCENTS +ACCENTUAL +ACCENTUALLY +ACCENTUATE +ACCENTUATED +ACCENTUATES +ACCENTUATING +ACCENTUATION +ACCENTUATIONS +ACCEPT +ACCEPTABILITIES +ACCEPTABILITY +ACCEPTABLE +ACCEPTABLENESS +ACCEPTABLY +ACCEPTANCE +ACCEPTANCES +ACCEPTANT +ACCEPTATION +ACCEPTATIONS +ACCEPTED +ACCEPTEDLY +ACCEPTEE +ACCEPTEES +ACCEPTER +ACCEPTERS +ACCEPTING +ACCEPTINGLY +ACCEPTINGNESS +ACCEPTINGNESSES +ACCEPTIVE +ACCEPTOR +ACCEPTORS +ACCEPTS +ACCESS +ACCESSARIES +ACCESSARY +ACCESSED +ACCESSES +ACCESSIBILITIES +ACCESSIBILITY +ACCESSIBLE +ACCESSIBLENESS +ACCESSIBLY +ACCESSING +ACCESSION +ACCESSIONAL +ACCESSIONED +ACCESSIONING +ACCESSIONS +ACCESSORIAL +ACCESSORIES +ACCESSORISE +ACCESSORISED +ACCESSORISES +ACCESSORISING +ACCESSORIZE +ACCESSORIZED +ACCESSORIZES +ACCESSORIZING +ACCESSORY +ACCIACCATURA +ACCIACCATURAS +ACCIDENCE +ACCIDENCES +ACCIDENT +ACCIDENTAL +ACCIDENTALLY +ACCIDENTALNESS +ACCIDENTALS +ACCIDENTLY +ACCIDENTS +ACCIDIA +ACCIDIAS +ACCIDIE +ACCIDIES +ACCIPITER +ACCIPITERS +ACCIPITRINE +ACCIPITRINES +ACCLAIM +ACCLAIMED +ACCLAIMER +ACCLAIMERS +ACCLAIMING +ACCLAIMS +ACCLAMATION +ACCLAMATIONS +ACCLIMATE +ACCLIMATED +ACCLIMATES +ACCLIMATING +ACCLIMATION +ACCLIMATIONS +ACCLIMATISE +ACCLIMATISED +ACCLIMATISES +ACCLIMATISING +ACCLIMATIZATION +ACCLIMATIZE +ACCLIMATIZED +ACCLIMATIZER +ACCLIMATIZERS +ACCLIMATIZES +ACCLIMATIZING +ACCLIVITIES +ACCLIVITY +ACCLIVOUS +ACCOLADE +ACCOLADED +ACCOLADES +ACCOLADING +ACCOMMODATE +ACCOMMODATED +ACCOMMODATES +ACCOMMODATING +ACCOMMODATINGLY +ACCOMMODATION +ACCOMMODATIONAL +ACCOMMODATIONS +ACCOMMODATIVE +ACCOMMODATOR +ACCOMMODATORS +ACCOMPANIED +ACCOMPANIES +ACCOMPANIMENT +ACCOMPANIMENTS +ACCOMPANIST +ACCOMPANISTS +ACCOMPANY +ACCOMPANYING +ACCOMPLICE +ACCOMPLICES +ACCOMPLISH +ACCOMPLISHABLE +ACCOMPLISHED +ACCOMPLISHER +ACCOMPLISHERS +ACCOMPLISHES +ACCOMPLISHING +ACCOMPLISHMENT +ACCOMPLISHMENTS +ACCORD +ACCORDANCE +ACCORDANCES +ACCORDANT +ACCORDANTLY +ACCORDED +ACCORDER +ACCORDERS +ACCORDING +ACCORDINGLY +ACCORDION +ACCORDIONIST +ACCORDIONISTS +ACCORDIONS +ACCORDS +ACCOST +ACCOSTED +ACCOSTING +ACCOSTS +ACCOUCHEMENT +ACCOUCHEMENTS +ACCOUCHEUR +ACCOUCHEURS +ACCOUNT +ACCOUNTABILITY +ACCOUNTABLE +ACCOUNTABLENESS +ACCOUNTABLY +ACCOUNTANCIES +ACCOUNTANCY +ACCOUNTANT +ACCOUNTANTS +ACCOUNTANTSHIP +ACCOUNTANTSHIPS +ACCOUNTED +ACCOUNTING +ACCOUNTINGS +ACCOUNTS +ACCOUTER +ACCOUTERED +ACCOUTERING +ACCOUTERMENT +ACCOUTERMENTS +ACCOUTERS +ACCOUTRE +ACCOUTRED +ACCOUTREMENT +ACCOUTREMENTS +ACCOUTRES +ACCOUTRING +ACCREDIT +ACCREDITABLE +ACCREDITATION +ACCREDITATIONS +ACCREDITED +ACCREDITING +ACCREDITS +ACCRETE +ACCRETED +ACCRETES +ACCRETING +ACCRETION +ACCRETIONARY +ACCRETIONS +ACCRETIVE +ACCRUABLE +ACCRUAL +ACCRUALS +ACCRUE +ACCRUED +ACCRUEMENT +ACCRUEMENTS +ACCRUES +ACCRUING +ACCULTURATE +ACCULTURATED +ACCULTURATES +ACCULTURATING +ACCULTURATION +ACCULTURATIONAL +ACCULTURATIONS +ACCULTURATIVE +ACCUMBENT +ACCUMULATE +ACCUMULATED +ACCUMULATES +ACCUMULATING +ACCUMULATION +ACCUMULATIONS +ACCUMULATIVE +ACCUMULATIVELY +ACCUMULATOR +ACCUMULATORS +ACCURACIES +ACCURACY +ACCURATE +ACCURATELY +ACCURATENESS +ACCURATENESSES +ACCURSED +ACCURSEDLY +ACCURSEDNESS +ACCURSEDNESSES +ACCURST +ACCUSABLE +ACCUSABLY +ACCUSAL +ACCUSALS +ACCUSANT +ACCUSANTS +ACCUSATION +ACCUSATIONS +ACCUSATIVE +ACCUSATIVES +ACCUSATORY +ACCUSE +ACCUSED +ACCUSER +ACCUSERS +ACCUSES +ACCUSING +ACCUSINGLY +ACCUSTOM +ACCUSTOMATION +ACCUSTOMATIONS +ACCUSTOMED +ACCUSTOMEDNESS +ACCUSTOMING +ACCUSTOMS +ACE +ACED +ACEDIA +ACEDIAS +ACELDAMA +ACELDAMAS +ACELLULAR +ACENTRIC +ACEPHALIC +ACEPHALOUS +ACEQUIA +ACEQUIAS +ACERATE +ACERATED +ACERB +ACERBATE +ACERBATED +ACERBATES +ACERBATING +ACERBER +ACERBEST +ACERBIC +ACERBICALLY +ACERBITIES +ACERBITY +ACEROLA +ACEROLAS +ACEROSE +ACEROUS +ACERVATE +ACERVULI +ACERVULUS +ACES +ACESCENT +ACESCENTS +ACETA +ACETABULA +ACETABULAR +ACETABULUM +ACETABULUMS +ACETAL +ACETALDEHYDE +ACETALDEHYDES +ACETALS +ACETAMID +ACETAMIDE +ACETAMIDES +ACETAMIDS +ACETAMINOPHEN +ACETAMINOPHENS +ACETANILID +ACETANILIDE +ACETANILIDES +ACETANILIDS +ACETATE +ACETATED +ACETATES +ACETAZOLAMIDE +ACETAZOLAMIDES +ACETIC +ACETIFICATION +ACETIFICATIONS +ACETIFIED +ACETIFIER +ACETIFIERS +ACETIFIES +ACETIFY +ACETIFYING +ACETIN +ACETINS +ACETONE +ACETONES +ACETONIC +ACETONITRILE +ACETONITRILES +ACETOPHENETIDIN +ACETOSE +ACETOUS +ACETOXYL +ACETOXYLS +ACETUM +ACETYL +ACETYLATE +ACETYLATED +ACETYLATES +ACETYLATING +ACETYLATION +ACETYLATIONS +ACETYLATIVE +ACETYLCHOLINE +ACETYLCHOLINES +ACETYLENE +ACETYLENES +ACETYLENIC +ACETYLIC +ACETYLS +ACHALASIA +ACHALASIAS +ACHE +ACHED +ACHENE +ACHENES +ACHENIAL +ACHES +ACHIER +ACHIEST +ACHIEVABLE +ACHIEVE +ACHIEVED +ACHIEVEMENT +ACHIEVEMENTS +ACHIEVER +ACHIEVERS +ACHIEVES +ACHIEVING +ACHILLEA +ACHILLEAS +ACHINESS +ACHINESSES +ACHING +ACHINGLY +ACHIOTE +ACHIOTES +ACHIRAL +ACHLORHYDRIA +ACHLORHYDRIAS +ACHLORHYDRIC +ACHOLIA +ACHOLIAS +ACHONDRITE +ACHONDRITES +ACHONDRITIC +ACHONDROPLASIA +ACHONDROPLASIAS +ACHONDROPLASTIC +ACHOO +ACHROMAT +ACHROMATIC +ACHROMATICALLY +ACHROMATISM +ACHROMATISMS +ACHROMATIZE +ACHROMATIZED +ACHROMATIZES +ACHROMATIZING +ACHROMATS +ACHROMIC +ACHROMOUS +ACHY +ACICULA +ACICULAE +ACICULAR +ACICULAS +ACICULATE +ACICULUM +ACICULUMS +ACID +ACIDEMIA +ACIDEMIAS +ACIDHEAD +ACIDHEADS +ACIDIC +ACIDIFICATION +ACIDIFICATIONS +ACIDIFIED +ACIDIFIER +ACIDIFIERS +ACIDIFIES +ACIDIFY +ACIDIFYING +ACIDIMETER +ACIDIMETERS +ACIDIMETRIC +ACIDIMETRIES +ACIDIMETRY +ACIDITIES +ACIDITY +ACIDLY +ACIDNESS +ACIDNESSES +ACIDOPHIL +ACIDOPHILE +ACIDOPHILES +ACIDOPHILIC +ACIDOPHILS +ACIDOSES +ACIDOSIS +ACIDOTIC +ACIDS +ACIDULATE +ACIDULATED +ACIDULATES +ACIDULATING +ACIDULATION +ACIDULATIONS +ACIDULENT +ACIDULOUS +ACIDURIA +ACIDURIAS +ACIDY +ACIERATE +ACIERATED +ACIERATES +ACIERATING +ACIFORM +ACINAR +ACING +ACINI +ACINIC +ACINIFORM +ACINOSE +ACINOUS +ACINUS +ACKEE +ACKEES +ACKNOWLEDGE +ACKNOWLEDGED +ACKNOWLEDGEDLY +ACKNOWLEDGEMENT +ACKNOWLEDGES +ACKNOWLEDGING +ACKNOWLEDGMENT +ACKNOWLEDGMENTS +ACLINIC +ACMATIC +ACME +ACMES +ACMIC +ACNE +ACNED +ACNES +ACNODE +ACNODES +ACOCK +ACOELOMATE +ACOELOMATES +ACOELOUS +ACOLD +ACOLYTE +ACOLYTES +ACONITE +ACONITES +ACONITIC +ACONITUM +ACONITUMS +ACORN +ACORNED +ACORNS +ACOUSTIC +ACOUSTICAL +ACOUSTICALLY +ACOUSTICIAN +ACOUSTICIANS +ACOUSTICS +ACQUAINT +ACQUAINTANCE +ACQUAINTANCES +ACQUAINTED +ACQUAINTING +ACQUAINTS +ACQUEST +ACQUESTS +ACQUIESCE +ACQUIESCED +ACQUIESCENCE +ACQUIESCENCES +ACQUIESCENT +ACQUIESCENTLY +ACQUIESCES +ACQUIESCING +ACQUIRABLE +ACQUIRE +ACQUIRED +ACQUIREE +ACQUIREES +ACQUIREMENT +ACQUIREMENTS +ACQUIRER +ACQUIRERS +ACQUIRES +ACQUIRING +ACQUISITION +ACQUISITIONAL +ACQUISITIONS +ACQUISITIVE +ACQUISITIVELY +ACQUISITIVENESS +ACQUISITOR +ACQUISITORS +ACQUIT +ACQUITS +ACQUITTAL +ACQUITTALS +ACQUITTANCE +ACQUITTANCES +ACQUITTED +ACQUITTER +ACQUITTERS +ACQUITTING +ACRASIA +ACRASIAS +ACRASIN +ACRASINS +ACRE +ACREAGE +ACREAGES +ACRED +ACRES +ACRID +ACRIDER +ACRIDEST +ACRIDINE +ACRIDINES +ACRIDITIES +ACRIDITY +ACRIDLY +ACRIDNESS +ACRIDNESSES +ACRIFLAVINE +ACRIFLAVINES +ACRIMONIES +ACRIMONIOUS +ACRIMONIOUSLY +ACRIMONIOUSNESS +ACRIMONY +ACRITARCH +ACRITARCHS +ACRITICAL +ACROBAT +ACROBATIC +ACROBATICALLY +ACROBATICS +ACROBATS +ACROCENTRIC +ACROCENTRICS +ACRODONT +ACRODONTS +ACROGEN +ACROGENIC +ACROGENS +ACROLECT +ACROLECTS +ACROLEIN +ACROLEINS +ACROLITH +ACROLITHS +ACROMEGALIC +ACROMEGALICS +ACROMEGALIES +ACROMEGALY +ACROMIA +ACROMIAL +ACROMION +ACRONIC +ACRONICAL +ACRONYCAL +ACRONYM +ACRONYMIC +ACRONYMICALLY +ACRONYMS +ACROPETAL +ACROPETALLY +ACROPHOBE +ACROPHOBES +ACROPHOBIA +ACROPHOBIAS +ACROPOLIS +ACROPOLISES +ACROSOMAL +ACROSOME +ACROSOMES +ACROSPIRE +ACROSPIRES +ACROSS +ACROSTIC +ACROSTICAL +ACROSTICALLY +ACROSTICS +ACROTIC +ACROTISM +ACROTISMS +ACRYLAMIDE +ACRYLAMIDES +ACRYLATE +ACRYLATES +ACRYLIC +ACRYLICS +ACRYLONITRILE +ACRYLONITRILES +ACT +ACTA +ACTABILITIES +ACTABILITY +ACTABLE +ACTED +ACTIN +ACTINAL +ACTINALLY +ACTING +ACTINGS +ACTINIA +ACTINIAE +ACTINIAN +ACTINIANS +ACTINIAS +ACTINIC +ACTINICALLY +ACTINIDE +ACTINIDES +ACTINISM +ACTINISMS +ACTINIUM +ACTINIUMS +ACTINOID +ACTINOIDS +ACTINOLITE +ACTINOLITES +ACTINOMETER +ACTINOMETERS +ACTINOMETRIC +ACTINOMETRIES +ACTINOMETRY +ACTINOMORPHIC +ACTINOMORPHIES +ACTINOMORPHY +ACTINOMYCES +ACTINOMYCETE +ACTINOMYCETES +ACTINOMYCETOUS +ACTINOMYCIN +ACTINOMYCINS +ACTINOMYCOSES +ACTINOMYCOSIS +ACTINOMYCOTIC +ACTINON +ACTINONS +ACTINS +ACTION +ACTIONABLE +ACTIONABLY +ACTIONER +ACTIONERS +ACTIONLESS +ACTIONS +ACTIVATE +ACTIVATED +ACTIVATES +ACTIVATING +ACTIVATION +ACTIVATIONS +ACTIVATOR +ACTIVATORS +ACTIVE +ACTIVELY +ACTIVENESS +ACTIVENESSES +ACTIVES +ACTIVISM +ACTIVISMS +ACTIVIST +ACTIVISTIC +ACTIVISTS +ACTIVITIES +ACTIVITY +ACTIVIZE +ACTIVIZED +ACTIVIZES +ACTIVIZING +ACTOMYOSIN +ACTOMYOSINS +ACTOR +ACTORISH +ACTORLY +ACTORS +ACTRESS +ACTRESSES +ACTRESSY +ACTS +ACTUAL +ACTUALITIES +ACTUALITY +ACTUALIZATION +ACTUALIZATIONS +ACTUALIZE +ACTUALIZED +ACTUALIZES +ACTUALIZING +ACTUALLY +ACTUARIAL +ACTUARIALLY +ACTUARIES +ACTUARY +ACTUATE +ACTUATED +ACTUATES +ACTUATING +ACTUATION +ACTUATIONS +ACTUATOR +ACTUATORS +ACUATE +ACUITIES +ACUITY +ACULEATE +ACULEATED +ACULEI +ACULEUS +ACUMEN +ACUMENS +ACUMINATE +ACUMINATED +ACUMINATES +ACUMINATING +ACUMINOUS +ACUPRESSURE +ACUPRESSURES +ACUPUNCTURE +ACUPUNCTURES +ACUPUNCTURIST +ACUPUNCTURISTS +ACUTANCE +ACUTANCES +ACUTE +ACUTELY +ACUTENESS +ACUTENESSES +ACUTER +ACUTES +ACUTEST +ACYCLIC +ACYCLOVIR +ACYCLOVIRS +ACYL +ACYLATE +ACYLATED +ACYLATES +ACYLATING +ACYLATION +ACYLATIONS +ACYLOIN +ACYLOINS +ACYLS +AD +ADAGE +ADAGES +ADAGIAL +ADAGIO +ADAGIOS +ADAMANCE +ADAMANCES +ADAMANCIES +ADAMANCY +ADAMANT +ADAMANTINE +ADAMANTLY +ADAMANTS +ADAMSITE +ADAMSITES +ADAPT +ADAPTABILITIES +ADAPTABILITY +ADAPTABLE +ADAPTATION +ADAPTATIONAL +ADAPTATIONALLY +ADAPTATIONS +ADAPTED +ADAPTEDNESS +ADAPTEDNESSES +ADAPTER +ADAPTERS +ADAPTING +ADAPTION +ADAPTIONS +ADAPTIVE +ADAPTIVELY +ADAPTIVENESS +ADAPTIVENESSES +ADAPTIVITIES +ADAPTIVITY +ADAPTOR +ADAPTORS +ADAPTS +ADAXIAL +ADD +ADDABLE +ADDAX +ADDAXES +ADDED +ADDEDLY +ADDEND +ADDENDA +ADDENDS +ADDENDUM +ADDENDUMS +ADDER +ADDERS +ADDIBLE +ADDICT +ADDICTED +ADDICTING +ADDICTION +ADDICTIONS +ADDICTIVE +ADDICTS +ADDING +ADDITION +ADDITIONAL +ADDITIONALLY +ADDITIONS +ADDITIVE +ADDITIVELY +ADDITIVES +ADDITIVITIES +ADDITIVITY +ADDITORY +ADDLE +ADDLED +ADDLEPATED +ADDLES +ADDLING +ADDRESS +ADDRESSABILITY +ADDRESSABLE +ADDRESSED +ADDRESSEE +ADDRESSEES +ADDRESSER +ADDRESSERS +ADDRESSES +ADDRESSING +ADDRESSOR +ADDRESSORS +ADDREST +ADDS +ADDUCE +ADDUCED +ADDUCENT +ADDUCER +ADDUCERS +ADDUCES +ADDUCIBLE +ADDUCING +ADDUCT +ADDUCTED +ADDUCTING +ADDUCTION +ADDUCTIONS +ADDUCTIVE +ADDUCTOR +ADDUCTORS +ADDUCTS +ADEEM +ADEEMED +ADEEMING +ADEEMS +ADEMPTION +ADEMPTIONS +ADENINE +ADENINES +ADENITIS +ADENITISES +ADENOCARCINOMA +ADENOCARCINOMAS +ADENOHYPOPHYSES +ADENOHYPOPHYSIS +ADENOID +ADENOIDAL +ADENOIDS +ADENOMA +ADENOMAS +ADENOMATA +ADENOMATOUS +ADENOSES +ADENOSINE +ADENOSINES +ADENOSIS +ADENOVIRAL +ADENOVIRUS +ADENOVIRUSES +ADENYL +ADENYLS +ADEPT +ADEPTER +ADEPTEST +ADEPTLY +ADEPTNESS +ADEPTNESSES +ADEPTS +ADEQUACIES +ADEQUACY +ADEQUATE +ADEQUATELY +ADEQUATENESS +ADEQUATENESSES +ADHERABLE +ADHERE +ADHERED +ADHERENCE +ADHERENCES +ADHEREND +ADHERENDS +ADHERENT +ADHERENTLY +ADHERENTS +ADHERER +ADHERERS +ADHERES +ADHERING +ADHESION +ADHESIONAL +ADHESIONS +ADHESIVE +ADHESIVELY +ADHESIVENESS +ADHESIVENESSES +ADHESIVES +ADHIBIT +ADHIBITED +ADHIBITING +ADHIBITS +ADIABATIC +ADIABATICALLY +ADIEU +ADIEUS +ADIEUX +ADIOS +ADIPIC +ADIPOCERE +ADIPOCERES +ADIPOCYTE +ADIPOCYTES +ADIPOSE +ADIPOSES +ADIPOSIS +ADIPOSITIES +ADIPOSITY +ADIPOUS +ADIT +ADITS +ADJACENCE +ADJACENCES +ADJACENCIES +ADJACENCY +ADJACENT +ADJACENTLY +ADJECTIVAL +ADJECTIVALLY +ADJECTIVE +ADJECTIVELY +ADJECTIVES +ADJOIN +ADJOINED +ADJOINING +ADJOINS +ADJOINT +ADJOINTS +ADJOURN +ADJOURNED +ADJOURNING +ADJOURNMENT +ADJOURNMENTS +ADJOURNS +ADJUDGE +ADJUDGED +ADJUDGES +ADJUDGING +ADJUDICATE +ADJUDICATED +ADJUDICATES +ADJUDICATING +ADJUDICATION +ADJUDICATIONS +ADJUDICATIVE +ADJUDICATOR +ADJUDICATORS +ADJUDICATORY +ADJUNCT +ADJUNCTION +ADJUNCTIONS +ADJUNCTIVE +ADJUNCTLY +ADJUNCTS +ADJURATION +ADJURATIONS +ADJURATORY +ADJURE +ADJURED +ADJURER +ADJURERS +ADJURES +ADJURING +ADJUROR +ADJURORS +ADJUST +ADJUSTABILITIES +ADJUSTABILITY +ADJUSTABLE +ADJUSTED +ADJUSTER +ADJUSTERS +ADJUSTING +ADJUSTIVE +ADJUSTMENT +ADJUSTMENTAL +ADJUSTMENTS +ADJUSTOR +ADJUSTORS +ADJUSTS +ADJUTANCIES +ADJUTANCY +ADJUTANT +ADJUTANTS +ADJUVANT +ADJUVANTS +ADMAN +ADMASS +ADMASSES +ADMEASURE +ADMEASURED +ADMEASUREMENT +ADMEASUREMENTS +ADMEASURES +ADMEASURING +ADMEN +ADMINISTER +ADMINISTERED +ADMINISTERING +ADMINISTERS +ADMINISTRABLE +ADMINISTRANT +ADMINISTRANTS +ADMINISTRATE +ADMINISTRATED +ADMINISTRATES +ADMINISTRATING +ADMINISTRATION +ADMINISTRATIONS +ADMINISTRATIVE +ADMINISTRATOR +ADMINISTRATORS +ADMINISTRATRIX +ADMIRABILITIES +ADMIRABILITY +ADMIRABLE +ADMIRABLENESS +ADMIRABLENESSES +ADMIRABLY +ADMIRAL +ADMIRALS +ADMIRALTIES +ADMIRALTY +ADMIRATION +ADMIRATIONS +ADMIRE +ADMIRED +ADMIRER +ADMIRERS +ADMIRES +ADMIRING +ADMIRINGLY +ADMISSIBILITIES +ADMISSIBILITY +ADMISSIBLE +ADMISSION +ADMISSIONS +ADMISSIVE +ADMIT +ADMITS +ADMITTANCE +ADMITTANCES +ADMITTED +ADMITTEDLY +ADMITTEE +ADMITTEES +ADMITTER +ADMITTERS +ADMITTING +ADMIX +ADMIXED +ADMIXES +ADMIXING +ADMIXT +ADMIXTURE +ADMIXTURES +ADMONISH +ADMONISHED +ADMONISHER +ADMONISHERS +ADMONISHES +ADMONISHING +ADMONISHINGLY +ADMONISHMENT +ADMONISHMENTS +ADMONITION +ADMONITIONS +ADMONITOR +ADMONITORILY +ADMONITORS +ADMONITORY +ADNATE +ADNATION +ADNATIONS +ADNEXA +ADNEXAL +ADNOUN +ADNOUNS +ADO +ADOBE +ADOBELIKE +ADOBES +ADOBO +ADOBOS +ADOLESCENCE +ADOLESCENCES +ADOLESCENT +ADOLESCENTLY +ADOLESCENTS +ADONIS +ADONISES +ADOPT +ADOPTABILITIES +ADOPTABILITY +ADOPTABLE +ADOPTED +ADOPTEE +ADOPTEES +ADOPTER +ADOPTERS +ADOPTIANISM +ADOPTIANISMS +ADOPTING +ADOPTION +ADOPTIONISM +ADOPTIONISMS +ADOPTIONIST +ADOPTIONISTS +ADOPTIONS +ADOPTIVE +ADOPTIVELY +ADOPTS +ADORABILITIES +ADORABILITY +ADORABLE +ADORABLENESS +ADORABLENESSES +ADORABLY +ADORATION +ADORATIONS +ADORE +ADORED +ADORER +ADORERS +ADORES +ADORING +ADORINGLY +ADORN +ADORNED +ADORNER +ADORNERS +ADORNING +ADORNMENT +ADORNMENTS +ADORNS +ADOS +ADOWN +ADOZE +ADRENAL +ADRENALECTOMIES +ADRENALECTOMY +ADRENALIN +ADRENALINE +ADRENALINES +ADRENALINS +ADRENALIZED +ADRENALLY +ADRENALS +ADRENERGIC +ADRENERGICALLY +ADRENOCHROME +ADRENOCHROMES +ADRENOCORTICAL +ADRIFT +ADROIT +ADROITER +ADROITEST +ADROITLY +ADROITNESS +ADROITNESSES +ADS +ADSCITITIOUS +ADSCRIPT +ADSCRIPTS +ADSORB +ADSORBABLE +ADSORBATE +ADSORBATES +ADSORBED +ADSORBENT +ADSORBENTS +ADSORBER +ADSORBERS +ADSORBING +ADSORBS +ADSORPTION +ADSORPTIONS +ADSORPTIVE +ADULARIA +ADULARIAS +ADULATE +ADULATED +ADULATES +ADULATING +ADULATION +ADULATIONS +ADULATOR +ADULATORS +ADULATORY +ADULT +ADULTERANT +ADULTERANTS +ADULTERATE +ADULTERATED +ADULTERATES +ADULTERATING +ADULTERATION +ADULTERATIONS +ADULTERATOR +ADULTERATORS +ADULTERER +ADULTERERS +ADULTERESS +ADULTERESSES +ADULTERIES +ADULTERINE +ADULTEROUS +ADULTEROUSLY +ADULTERY +ADULTHOOD +ADULTHOODS +ADULTLIKE +ADULTLY +ADULTNESS +ADULTNESSES +ADULTRESS +ADULTRESSES +ADULTS +ADUMBRAL +ADUMBRATE +ADUMBRATED +ADUMBRATES +ADUMBRATING +ADUMBRATION +ADUMBRATIONS +ADUMBRATIVE +ADUMBRATIVELY +ADUNC +ADUNCATE +ADUNCOUS +ADUST +ADVANCE +ADVANCED +ADVANCEMENT +ADVANCEMENTS +ADVANCER +ADVANCERS +ADVANCES +ADVANCING +ADVANTAGE +ADVANTAGED +ADVANTAGEOUS +ADVANTAGEOUSLY +ADVANTAGES +ADVANTAGING +ADVECT +ADVECTED +ADVECTING +ADVECTION +ADVECTIONS +ADVECTIVE +ADVECTS +ADVENT +ADVENTITIA +ADVENTITIAL +ADVENTITIAS +ADVENTITIOUS +ADVENTITIOUSLY +ADVENTIVE +ADVENTIVES +ADVENTS +ADVENTURE +ADVENTURED +ADVENTURER +ADVENTURERS +ADVENTURES +ADVENTURESOME +ADVENTURESS +ADVENTURESSES +ADVENTURING +ADVENTURISM +ADVENTURISMS +ADVENTURIST +ADVENTURISTIC +ADVENTURISTS +ADVENTUROUS +ADVENTUROUSLY +ADVENTUROUSNESS +ADVERB +ADVERBIAL +ADVERBIALLY +ADVERBIALS +ADVERBS +ADVERSARIAL +ADVERSARIES +ADVERSARINESS +ADVERSARINESSES +ADVERSARY +ADVERSATIVE +ADVERSATIVELY +ADVERSATIVES +ADVERSE +ADVERSELY +ADVERSENESS +ADVERSENESSES +ADVERSITIES +ADVERSITY +ADVERT +ADVERTED +ADVERTENCE +ADVERTENCES +ADVERTENCIES +ADVERTENCY +ADVERTENT +ADVERTENTLY +ADVERTING +ADVERTISE +ADVERTISED +ADVERTISEMENT +ADVERTISEMENTS +ADVERTISER +ADVERTISERS +ADVERTISES +ADVERTISING +ADVERTISINGS +ADVERTIZE +ADVERTIZED +ADVERTIZEMENT +ADVERTIZEMENTS +ADVERTIZES +ADVERTIZING +ADVERTORIAL +ADVERTORIALS +ADVERTS +ADVICE +ADVICES +ADVISABILITIES +ADVISABILITY +ADVISABLE +ADVISABLENESS +ADVISABLENESSES +ADVISABLY +ADVISE +ADVISED +ADVISEDLY +ADVISEE +ADVISEES +ADVISEMENT +ADVISEMENTS +ADVISER +ADVISERS +ADVISES +ADVISING +ADVISOR +ADVISORIES +ADVISORS +ADVISORY +ADVOCACIES +ADVOCACY +ADVOCATE +ADVOCATED +ADVOCATES +ADVOCATING +ADVOCATION +ADVOCATIONS +ADVOCATIVE +ADVOCATOR +ADVOCATORS +ADVOWSON +ADVOWSONS +ADWOMAN +ADWOMEN +ADYNAMIA +ADYNAMIAS +ADYNAMIC +ADYTA +ADYTUM +ADZ +ADZE +ADZED +ADZES +ADZING +ADZUKI +ADZUKIS +AE +AECIA +AECIAL +AECIDIA +AECIDIAL +AECIDIUM +AECIOSPORE +AECIOSPORES +AECIUM +AEDES +AEDILE +AEDILES +AEDINE +AEGIS +AEGISES +AENEOUS +AENEUS +AEOLIAN +AEON +AEONIAN +AEONIC +AEONS +AEPYORNIS +AEPYORNISES +AEQUORIN +AEQUORINS +AERATE +AERATED +AERATES +AERATING +AERATION +AERATIONS +AERATOR +AERATORS +AERENCHYMA +AERENCHYMAS +AERIAL +AERIALIST +AERIALISTS +AERIALLY +AERIALS +AERIE +AERIED +AERIER +AERIES +AERIEST +AERIFIED +AERIFIES +AERIFORM +AERIFY +AERIFYING +AERILY +AERO +AEROBAT +AEROBATIC +AEROBATICS +AEROBATS +AEROBE +AEROBES +AEROBIA +AEROBIC +AEROBICALLY +AEROBICIZE +AEROBICIZED +AEROBICIZES +AEROBICIZING +AEROBICS +AEROBIOLOGICAL +AEROBIOLOGIES +AEROBIOLOGY +AEROBIOSES +AEROBIOSIS +AEROBIUM +AEROBRAKE +AEROBRAKED +AEROBRAKES +AEROBRAKING +AERODROME +AERODROMES +AERODUCT +AERODUCTS +AERODYNAMIC +AERODYNAMICAL +AERODYNAMICALLY +AERODYNAMICIST +AERODYNAMICISTS +AERODYNAMICS +AERODYNE +AERODYNES +AEROELASTIC +AEROELASTICITY +AEROEMBOLISM +AEROEMBOLISMS +AEROFOIL +AEROFOILS +AEROGEL +AEROGELS +AEROGRAM +AEROGRAMME +AEROGRAMMES +AEROGRAMS +AEROLITE +AEROLITES +AEROLITH +AEROLITHS +AEROLITIC +AEROLOGIC +AEROLOGIES +AEROLOGY +AEROMAGNETIC +AEROMECHANICS +AEROMEDICAL +AEROMEDICINE +AEROMEDICINES +AEROMETER +AEROMETERS +AEROMETRIES +AEROMETRY +AERONAUT +AERONAUTIC +AERONAUTICAL +AERONAUTICALLY +AERONAUTICS +AERONAUTS +AERONOMER +AERONOMERS +AERONOMIC +AERONOMICAL +AERONOMIES +AERONOMIST +AERONOMISTS +AERONOMY +AEROPAUSE +AEROPAUSES +AEROPHOBE +AEROPHOBES +AEROPHORE +AEROPHORES +AEROPHYTE +AEROPHYTES +AEROPLANE +AEROPLANES +AEROPULSE +AEROPULSES +AEROSAT +AEROSATS +AEROSCOPE +AEROSCOPES +AEROSOL +AEROSOLIZATION +AEROSOLIZATIONS +AEROSOLIZE +AEROSOLIZED +AEROSOLIZES +AEROSOLIZING +AEROSOLS +AEROSPACE +AEROSPACES +AEROSTAT +AEROSTATICS +AEROSTATS +AERUGO +AERUGOS +AERY +AESTHESIA +AESTHESIAS +AESTHETE +AESTHETES +AESTHETIC +AESTHETICAL +AESTHETICALLY +AESTHETICIAN +AESTHETICIANS +AESTHETICISM +AESTHETICISMS +AESTHETICIZE +AESTHETICIZED +AESTHETICIZES +AESTHETICIZING +AESTHETICS +AESTIVAL +AESTIVATE +AESTIVATED +AESTIVATES +AESTIVATING +AESTIVATION +AESTIVATIONS +AETHER +AETHEREAL +AETHERIC +AETHERS +AETIOLOGIES +AETIOLOGY +AFAR +AFARS +AFEARD +AFEARED +AFEBRILE +AFF +AFFABILITIES +AFFABILITY +AFFABLE +AFFABLY +AFFAIR +AFFAIRE +AFFAIRES +AFFAIRS +AFFECT +AFFECTABILITIES +AFFECTABILITY +AFFECTABLE +AFFECTATION +AFFECTATIONS +AFFECTED +AFFECTEDLY +AFFECTEDNESS +AFFECTEDNESSES +AFFECTER +AFFECTERS +AFFECTING +AFFECTINGLY +AFFECTION +AFFECTIONAL +AFFECTIONALLY +AFFECTIONATE +AFFECTIONATELY +AFFECTIONED +AFFECTIONLESS +AFFECTIONS +AFFECTIVE +AFFECTIVELY +AFFECTIVITIES +AFFECTIVITY +AFFECTLESS +AFFECTLESSNESS +AFFECTS +AFFENPINSCHER +AFFENPINSCHERS +AFFERENT +AFFERENTLY +AFFERENTS +AFFIANCE +AFFIANCED +AFFIANCES +AFFIANCING +AFFIANT +AFFIANTS +AFFICHE +AFFICHES +AFFICIONADO +AFFICIONADOS +AFFIDAVIT +AFFIDAVITS +AFFILIATE +AFFILIATED +AFFILIATES +AFFILIATING +AFFILIATION +AFFILIATIONS +AFFINAL +AFFINE +AFFINED +AFFINELY +AFFINES +AFFINITIES +AFFINITY +AFFIRM +AFFIRMABLE +AFFIRMANCE +AFFIRMANCES +AFFIRMANT +AFFIRMANTS +AFFIRMATION +AFFIRMATIONS +AFFIRMATIVE +AFFIRMATIVELY +AFFIRMATIVES +AFFIRMED +AFFIRMER +AFFIRMERS +AFFIRMING +AFFIRMS +AFFIX +AFFIXABLE +AFFIXAL +AFFIXATION +AFFIXATIONS +AFFIXED +AFFIXER +AFFIXERS +AFFIXES +AFFIXIAL +AFFIXING +AFFIXMENT +AFFIXMENTS +AFFIXTURE +AFFIXTURES +AFFLATUS +AFFLATUSES +AFFLICT +AFFLICTED +AFFLICTER +AFFLICTERS +AFFLICTING +AFFLICTION +AFFLICTIONS +AFFLICTIVE +AFFLICTIVELY +AFFLICTS +AFFLUENCE +AFFLUENCES +AFFLUENCIES +AFFLUENCY +AFFLUENT +AFFLUENTLY +AFFLUENTS +AFFLUX +AFFLUXES +AFFORD +AFFORDABILITIES +AFFORDABILITY +AFFORDABLE +AFFORDABLY +AFFORDED +AFFORDING +AFFORDS +AFFOREST +AFFORESTATION +AFFORESTATIONS +AFFORESTED +AFFORESTING +AFFORESTS +AFFRAY +AFFRAYED +AFFRAYER +AFFRAYERS +AFFRAYING +AFFRAYS +AFFRICATE +AFFRICATED +AFFRICATES +AFFRICATING +AFFRICATIVE +AFFRICATIVES +AFFRIGHT +AFFRIGHTED +AFFRIGHTING +AFFRIGHTS +AFFRONT +AFFRONTED +AFFRONTING +AFFRONTS +AFFUSION +AFFUSIONS +AFGHAN +AFGHANI +AFGHANIS +AFGHANS +AFICIONADA +AFICIONADAS +AFICIONADO +AFICIONADOS +AFIELD +AFIRE +AFLAME +AFLATOXIN +AFLATOXINS +AFLOAT +AFLUTTER +AFOOT +AFORE +AFOREHAND +AFOREMENTIONED +AFORESAID +AFORETHOUGHT +AFORETIME +AFOUL +AFRAID +AFREET +AFREETS +AFRESH +AFRIT +AFRITS +AFT +AFTER +AFTERBIRTH +AFTERBIRTHS +AFTERBURNER +AFTERBURNERS +AFTERCARE +AFTERCARES +AFTERCLAP +AFTERCLAPS +AFTERDAMP +AFTERDAMPS +AFTERDECK +AFTERDECKS +AFTEREFFECT +AFTEREFFECTS +AFTERGLOW +AFTERGLOWS +AFTERIMAGE +AFTERIMAGES +AFTERLIFE +AFTERLIFES +AFTERLIVES +AFTERMARKET +AFTERMARKETS +AFTERMATH +AFTERMATHS +AFTERMOST +AFTERNOON +AFTERNOONS +AFTERPAIN +AFTERPAINS +AFTERPIECE +AFTERPIECES +AFTERS +AFTERSHAVE +AFTERSHAVES +AFTERSHOCK +AFTERSHOCKS +AFTERTASTE +AFTERTASTES +AFTERTAX +AFTERTHOUGHT +AFTERTHOUGHTS +AFTERTIME +AFTERTIMES +AFTERWARD +AFTERWARDS +AFTERWORD +AFTERWORDS +AFTERWORLD +AFTERWORLDS +AFTMOST +AFTOSA +AFTOSAS +AG +AGA +AGAIN +AGAINST +AGALACTIA +AGALACTIAS +AGALLOCH +AGALLOCHS +AGALWOOD +AGALWOODS +AGAMA +AGAMAS +AGAMETE +AGAMETES +AGAMIC +AGAMID +AGAMIDS +AGAMOSPERMIES +AGAMOSPERMY +AGAMOUS +AGAPAE +AGAPAI +AGAPANTHUS +AGAPANTHUSES +AGAPE +AGAPEIC +AGAPES +AGAR +AGARIC +AGARICS +AGAROSE +AGAROSES +AGARS +AGAS +AGATE +AGATES +AGATEWARE +AGATEWARES +AGATIZE +AGATIZED +AGATIZES +AGATIZING +AGATOID +AGAVE +AGAVES +AGAZE +AGE +AGED +AGEDLY +AGEDNESS +AGEDNESSES +AGEE +AGEING +AGEINGS +AGEISM +AGEISMS +AGEIST +AGEISTS +AGELESS +AGELESSLY +AGELESSNESS +AGELESSNESSES +AGELONG +AGEMATE +AGEMATES +AGENCIES +AGENCY +AGENDA +AGENDALESS +AGENDAS +AGENDUM +AGENDUMS +AGENE +AGENES +AGENESES +AGENESIA +AGENESIAS +AGENESIS +AGENETIC +AGENIZE +AGENIZED +AGENIZES +AGENIZING +AGENT +AGENTED +AGENTIAL +AGENTING +AGENTINGS +AGENTIVAL +AGENTIVE +AGENTIVES +AGENTRIES +AGENTRY +AGENTS +AGER +AGERATUM +AGERATUMS +AGERS +AGES +AGGADA +AGGADAH +AGGADAHS +AGGADAS +AGGADIC +AGGADOT +AGGADOTH +AGGER +AGGERS +AGGIE +AGGIES +AGGIORNAMENTO +AGGIORNAMENTOS +AGGLOMERATE +AGGLOMERATED +AGGLOMERATES +AGGLOMERATING +AGGLOMERATION +AGGLOMERATIONS +AGGLOMERATIVE +AGGLUTINABILITY +AGGLUTINABLE +AGGLUTINATE +AGGLUTINATED +AGGLUTINATES +AGGLUTINATING +AGGLUTINATION +AGGLUTINATIONS +AGGLUTINATIVE +AGGLUTININ +AGGLUTININS +AGGLUTINOGEN +AGGLUTINOGENIC +AGGLUTINOGENS +AGGRADATION +AGGRADATIONS +AGGRADE +AGGRADED +AGGRADES +AGGRADING +AGGRANDISE +AGGRANDISED +AGGRANDISES +AGGRANDISING +AGGRANDIZE +AGGRANDIZED +AGGRANDIZEMENT +AGGRANDIZEMENTS +AGGRANDIZER +AGGRANDIZERS +AGGRANDIZES +AGGRANDIZING +AGGRAVATE +AGGRAVATED +AGGRAVATES +AGGRAVATING +AGGRAVATION +AGGRAVATIONS +AGGREGATE +AGGREGATED +AGGREGATELY +AGGREGATENESS +AGGREGATENESSES +AGGREGATES +AGGREGATING +AGGREGATION +AGGREGATIONAL +AGGREGATIONS +AGGREGATIVE +AGGREGATIVELY +AGGRESS +AGGRESSED +AGGRESSES +AGGRESSING +AGGRESSION +AGGRESSIONS +AGGRESSIVE +AGGRESSIVELY +AGGRESSIVENESS +AGGRESSIVITIES +AGGRESSIVITY +AGGRESSOR +AGGRESSORS +AGGRIEVE +AGGRIEVED +AGGRIEVEDLY +AGGRIEVEMENT +AGGRIEVEMENTS +AGGRIEVES +AGGRIEVING +AGGRO +AGGROS +AGHA +AGHAS +AGHAST +AGILE +AGILELY +AGILENESS +AGILENESSES +AGILITIES +AGILITY +AGIN +AGING +AGINGS +AGINNER +AGINNERS +AGIO +AGIOS +AGIOTAGE +AGIOTAGES +AGISM +AGISMS +AGIST +AGISTED +AGISTING +AGISTS +AGITA +AGITABLE +AGITAS +AGITATE +AGITATED +AGITATEDLY +AGITATES +AGITATING +AGITATION +AGITATIONAL +AGITATIONS +AGITATIVE +AGITATO +AGITATOR +AGITATORS +AGITPROP +AGITPROPS +AGLARE +AGLEAM +AGLEE +AGLET +AGLETS +AGLEY +AGLIMMER +AGLITTER +AGLOW +AGLY +AGLYCON +AGLYCONE +AGLYCONES +AGLYCONS +AGMA +AGMAS +AGMINATE +AGNAIL +AGNAILS +AGNATE +AGNATES +AGNATIC +AGNATICAL +AGNATION +AGNATIONS +AGNIZE +AGNIZED +AGNIZES +AGNIZING +AGNOMEN +AGNOMENS +AGNOMINA +AGNOSIA +AGNOSIAS +AGNOSTIC +AGNOSTICISM +AGNOSTICISMS +AGNOSTICS +AGO +AGOG +AGON +AGONAL +AGONE +AGONES +AGONIC +AGONIES +AGONISE +AGONISED +AGONISES +AGONISING +AGONIST +AGONISTES +AGONISTIC +AGONISTICALLY +AGONISTS +AGONIZE +AGONIZED +AGONIZES +AGONIZING +AGONIZINGLY +AGONS +AGONY +AGORA +AGORAE +AGORAPHOBE +AGORAPHOBES +AGORAPHOBIA +AGORAPHOBIAS +AGORAPHOBIC +AGORAPHOBICS +AGORAS +AGOROT +AGOROTH +AGOUTI +AGOUTIES +AGOUTIS +AGOUTY +AGRAFE +AGRAFES +AGRAFFE +AGRAFFES +AGRANULOCYTE +AGRANULOCYTES +AGRANULOCYTOSES +AGRANULOCYTOSIS +AGRAPHA +AGRAPHIA +AGRAPHIAS +AGRAPHIC +AGRARIAN +AGRARIANISM +AGRARIANISMS +AGRARIANS +AGRAVIC +AGREE +AGREEABILITIES +AGREEABILITY +AGREEABLE +AGREEABLENESS +AGREEABLENESSES +AGREEABLY +AGREED +AGREEING +AGREEMENT +AGREEMENTS +AGREES +AGRESTAL +AGRESTIC +AGRIA +AGRIAS +AGRIBUSINESS +AGRIBUSINESSES +AGRIBUSINESSMAN +AGRIBUSINESSMEN +AGRICHEMICAL +AGRICHEMICALS +AGRICULTURAL +AGRICULTURALIST +AGRICULTURALLY +AGRICULTURE +AGRICULTURES +AGRICULTURIST +AGRICULTURISTS +AGRIMONIES +AGRIMONY +AGROCHEMICAL +AGROCHEMICALS +AGROFORESTER +AGROFORESTERS +AGROFORESTRIES +AGROFORESTRY +AGROLOGIC +AGROLOGIES +AGROLOGY +AGRONOMIC +AGRONOMICALLY +AGRONOMIES +AGRONOMIST +AGRONOMISTS +AGRONOMY +AGROUND +AGRYPNIA +AGRYPNIAS +AGS +AGUACATE +AGUACATES +AGUE +AGUELIKE +AGUES +AGUEWEED +AGUEWEEDS +AGUISH +AGUISHLY +AH +AHA +AHCHOO +AHEAD +AHED +AHEM +AHI +AHIMSA +AHIMSAS +AHING +AHIS +AHISTORIC +AHISTORICAL +AHOLD +AHOLDS +AHORSE +AHOY +AHS +AHULL +AI +AIBLINS +AID +AIDE +AIDED +AIDER +AIDERS +AIDES +AIDFUL +AIDING +AIDLESS +AIDMAN +AIDMEN +AIDS +AIGLET +AIGLETS +AIGRET +AIGRETS +AIGRETTE +AIGRETTES +AIGUILLE +AIGUILLES +AIGUILLETTE +AIGUILLETTES +AIKIDO +AIKIDOS +AIL +AILANTHIC +AILANTHUS +AILANTHUSES +AILED +AILERON +AILERONS +AILING +AILMENT +AILMENTS +AILS +AILUROPHILE +AILUROPHILES +AILUROPHOBE +AILUROPHOBES +AIM +AIMED +AIMER +AIMERS +AIMFUL +AIMFULLY +AIMING +AIMLESS +AIMLESSLY +AIMLESSNESS +AIMLESSNESSES +AIMS +AIN +AINS +AINSELL +AINSELLS +AIOLI +AIOLIS +AIR +AIRBAG +AIRBAGS +AIRBOAT +AIRBOATS +AIRBORNE +AIRBOUND +AIRBRUSH +AIRBRUSHED +AIRBRUSHES +AIRBRUSHING +AIRBURST +AIRBURSTS +AIRBUS +AIRBUSES +AIRBUSSES +AIRCHECK +AIRCHECKS +AIRCOACH +AIRCOACHES +AIRCRAFT +AIRCREW +AIRCREWS +AIRDATE +AIRDATES +AIRDROME +AIRDROMES +AIRDROP +AIRDROPPED +AIRDROPPING +AIRDROPS +AIRED +AIRER +AIRERS +AIREST +AIRFARE +AIRFARES +AIRFIELD +AIRFIELDS +AIRFLOW +AIRFLOWS +AIRFOIL +AIRFOILS +AIRFRAME +AIRFRAMES +AIRFREIGHT +AIRFREIGHTED +AIRFREIGHTING +AIRFREIGHTS +AIRGLOW +AIRGLOWS +AIRHEAD +AIRHEADED +AIRHEADS +AIRHOLE +AIRHOLES +AIRIER +AIRIEST +AIRILY +AIRINESS +AIRINESSES +AIRING +AIRINGS +AIRLESS +AIRLESSNESS +AIRLESSNESSES +AIRLIFT +AIRLIFTED +AIRLIFTING +AIRLIFTS +AIRLIKE +AIRLINE +AIRLINER +AIRLINERS +AIRLINES +AIRMAIL +AIRMAILED +AIRMAILING +AIRMAILS +AIRMAN +AIRMANSHIP +AIRMANSHIPS +AIRMEN +AIRMOBILE +AIRN +AIRNS +AIRPARK +AIRPARKS +AIRPLANE +AIRPLANES +AIRPLAY +AIRPLAYS +AIRPORT +AIRPORTS +AIRPOST +AIRPOSTS +AIRPOWER +AIRPOWERS +AIRPROOF +AIRPROOFED +AIRPROOFING +AIRPROOFS +AIRS +AIRSCAPE +AIRSCAPES +AIRSCREW +AIRSCREWS +AIRSHED +AIRSHEDS +AIRSHIP +AIRSHIPS +AIRSHOT +AIRSHOTS +AIRSHOW +AIRSHOWS +AIRSICK +AIRSICKNESS +AIRSICKNESSES +AIRSPACE +AIRSPACES +AIRSPEED +AIRSPEEDS +AIRSTREAM +AIRSTREAMS +AIRSTRIKE +AIRSTRIKES +AIRSTRIP +AIRSTRIPS +AIRT +AIRTED +AIRTH +AIRTHED +AIRTHING +AIRTHS +AIRTIGHT +AIRTIGHTNESS +AIRTIGHTNESSES +AIRTIME +AIRTIMES +AIRTING +AIRTS +AIRWARD +AIRWAVE +AIRWAVES +AIRWAY +AIRWAYS +AIRWISE +AIRWOMAN +AIRWOMEN +AIRWORTHIER +AIRWORTHIEST +AIRWORTHINESS +AIRWORTHINESSES +AIRWORTHY +AIRY +AIS +AISLE +AISLED +AISLES +AISLEWAY +AISLEWAYS +AIT +AITCH +AITCHBONE +AITCHBONES +AITCHES +AITS +AIVER +AIVERS +AJAR +AJEE +AJIVA +AJIVAS +AJOWAN +AJOWANS +AJUGA +AJUGAS +AKEE +AKEES +AKELA +AKELAS +AKENE +AKENES +AKIMBO +AKIN +AKINESIA +AKINESIAS +AKINETIC +AKVAVIT +AKVAVITS +AL +ALA +ALABASTER +ALABASTERS +ALABASTRINE +ALACHLOR +ALACHLORS +ALACK +ALACKADAY +ALACRITIES +ALACRITOUS +ALACRITY +ALAE +ALAMEDA +ALAMEDAS +ALAMO +ALAMODE +ALAMODES +ALAMOS +ALAN +ALAND +ALANDS +ALANE +ALANG +ALANIN +ALANINE +ALANINES +ALANINS +ALANS +ALANT +ALANTS +ALANYL +ALANYLS +ALAR +ALARM +ALARMABLE +ALARMED +ALARMEDLY +ALARMING +ALARMINGLY +ALARMISM +ALARMISMS +ALARMIST +ALARMISTS +ALARMS +ALARUM +ALARUMED +ALARUMING +ALARUMS +ALARY +ALAS +ALASKA +ALASKAS +ALASTOR +ALASTORS +ALATE +ALATED +ALATES +ALATION +ALATIONS +ALB +ALBA +ALBACORE +ALBACORES +ALBAS +ALBATA +ALBATAS +ALBATROSS +ALBATROSSES +ALBEDO +ALBEDOES +ALBEDOS +ALBEIT +ALBERTITE +ALBERTITES +ALBESCENT +ALBICORE +ALBICORES +ALBINAL +ALBINIC +ALBINISM +ALBINISMS +ALBINISTIC +ALBINO +ALBINOS +ALBINOTIC +ALBITE +ALBITES +ALBITIC +ALBITICAL +ALBIZIA +ALBIZIAS +ALBIZZIA +ALBIZZIAS +ALBS +ALBUM +ALBUMEN +ALBUMENS +ALBUMIN +ALBUMINOUS +ALBUMINS +ALBUMINURIA +ALBUMINURIAS +ALBUMINURIC +ALBUMOSE +ALBUMOSES +ALBUMS +ALBURNOUS +ALBURNUM +ALBURNUMS +ALBUTEROL +ALBUTEROLS +ALCADE +ALCADES +ALCAHEST +ALCAHESTS +ALCAIC +ALCAICS +ALCAIDE +ALCAIDES +ALCALDE +ALCALDES +ALCAYDE +ALCAYDES +ALCAZAR +ALCAZARS +ALCHEMIC +ALCHEMICAL +ALCHEMICALLY +ALCHEMIES +ALCHEMIST +ALCHEMISTIC +ALCHEMISTICAL +ALCHEMISTS +ALCHEMIZE +ALCHEMIZED +ALCHEMIZES +ALCHEMIZING +ALCHEMY +ALCHYMIES +ALCHYMY +ALCID +ALCIDINE +ALCIDS +ALCOHOL +ALCOHOLIC +ALCOHOLICALLY +ALCOHOLICS +ALCOHOLISM +ALCOHOLISMS +ALCOHOLS +ALCOVE +ALCOVED +ALCOVES +ALCYONARIAN +ALCYONARIANS +ALDEHYDE +ALDEHYDES +ALDEHYDIC +ALDER +ALDERFLIES +ALDERFLY +ALDERMAN +ALDERMANIC +ALDERMEN +ALDERS +ALDERWOMAN +ALDERWOMEN +ALDICARB +ALDICARBS +ALDOL +ALDOLASE +ALDOLASES +ALDOLIZATION +ALDOLIZATIONS +ALDOLS +ALDOSE +ALDOSES +ALDOSTERONE +ALDOSTERONES +ALDOSTERONISM +ALDOSTERONISMS +ALDRIN +ALDRINS +ALE +ALEATORIC +ALEATORY +ALEC +ALECITHAL +ALECS +ALEE +ALEF +ALEFS +ALEGAR +ALEGARS +ALEHOUSE +ALEHOUSES +ALEMBIC +ALEMBICS +ALENCON +ALENCONS +ALEPH +ALEPHS +ALERT +ALERTED +ALERTER +ALERTEST +ALERTING +ALERTLY +ALERTNESS +ALERTNESSES +ALERTS +ALES +ALEURON +ALEURONE +ALEURONES +ALEURONIC +ALEURONS +ALEVIN +ALEVINS +ALEWIFE +ALEWIVES +ALEXANDER +ALEXANDERS +ALEXANDRINE +ALEXANDRINES +ALEXANDRITE +ALEXANDRITES +ALEXIA +ALEXIAS +ALEXIN +ALEXINE +ALEXINES +ALEXINS +ALFA +ALFAKI +ALFAKIS +ALFALFA +ALFALFAS +ALFAQUI +ALFAQUIN +ALFAQUINS +ALFAQUIS +ALFAS +ALFILARIA +ALFILARIAS +ALFILERIA +ALFILERIAS +ALFORJA +ALFORJAS +ALFREDO +ALFRESCO +ALGA +ALGAE +ALGAECIDE +ALGAECIDES +ALGAL +ALGAROBA +ALGAROBAS +ALGARROBA +ALGARROBAS +ALGARROBO +ALGARROBOS +ALGAS +ALGEBRA +ALGEBRAIC +ALGEBRAICALLY +ALGEBRAIST +ALGEBRAISTS +ALGEBRAS +ALGERINE +ALGERINES +ALGICIDAL +ALGICIDE +ALGICIDES +ALGID +ALGIDITIES +ALGIDITY +ALGIDNESS +ALGIDNESSES +ALGIN +ALGINATE +ALGINATES +ALGINS +ALGOID +ALGOLAGNIA +ALGOLAGNIAC +ALGOLAGNIACS +ALGOLAGNIAS +ALGOLOGICAL +ALGOLOGIES +ALGOLOGIST +ALGOLOGISTS +ALGOLOGY +ALGOMETER +ALGOMETERS +ALGOMETRIES +ALGOMETRY +ALGOR +ALGORISM +ALGORISMS +ALGORITHM +ALGORITHMIC +ALGORITHMICALLY +ALGORITHMS +ALGORS +ALGUM +ALGUMS +ALIAS +ALIASES +ALIASING +ALIASINGS +ALIBI +ALIBIED +ALIBIES +ALIBIING +ALIBIS +ALIBLE +ALICYCLIC +ALIDAD +ALIDADE +ALIDADES +ALIDADS +ALIEN +ALIENABILITIES +ALIENABILITY +ALIENABLE +ALIENAGE +ALIENAGES +ALIENATE +ALIENATED +ALIENATES +ALIENATING +ALIENATION +ALIENATIONS +ALIENATOR +ALIENATORS +ALIENED +ALIENEE +ALIENEES +ALIENER +ALIENERS +ALIENING +ALIENISM +ALIENISMS +ALIENIST +ALIENISTS +ALIENLY +ALIENNESS +ALIENNESSES +ALIENOR +ALIENORS +ALIENS +ALIF +ALIFORM +ALIFS +ALIGHT +ALIGHTED +ALIGHTING +ALIGHTMENT +ALIGHTMENTS +ALIGHTS +ALIGN +ALIGNED +ALIGNER +ALIGNERS +ALIGNING +ALIGNMENT +ALIGNMENTS +ALIGNS +ALIKE +ALIKENESS +ALIKENESSES +ALIMENT +ALIMENTAL +ALIMENTARY +ALIMENTATION +ALIMENTATIONS +ALIMENTED +ALIMENTING +ALIMENTS +ALIMONIED +ALIMONIES +ALIMONY +ALINE +ALINED +ALINEMENT +ALINEMENTS +ALINER +ALINERS +ALINES +ALINING +ALIPED +ALIPEDS +ALIPHATIC +ALIQUANT +ALIQUOT +ALIQUOTS +ALIST +ALIT +ALITERACIES +ALITERACY +ALITERATE +ALITERATES +ALIUNDE +ALIVE +ALIVENESS +ALIVENESSES +ALIYA +ALIYAH +ALIYAHS +ALIYAS +ALIYOS +ALIYOT +ALIZARIN +ALIZARINE +ALIZARINES +ALIZARINS +ALKAHEST +ALKAHESTIC +ALKAHESTS +ALKALI +ALKALIC +ALKALIES +ALKALIFIED +ALKALIFIES +ALKALIFY +ALKALIFYING +ALKALIMETER +ALKALIMETERS +ALKALIMETRIES +ALKALIMETRY +ALKALIN +ALKALINE +ALKALINITIES +ALKALINITY +ALKALINIZATION +ALKALINIZATIONS +ALKALINIZE +ALKALINIZED +ALKALINIZES +ALKALINIZING +ALKALIS +ALKALISE +ALKALISED +ALKALISES +ALKALISING +ALKALIZE +ALKALIZED +ALKALIZER +ALKALIZERS +ALKALIZES +ALKALIZING +ALKALOID +ALKALOIDAL +ALKALOIDS +ALKALOSES +ALKALOSIS +ALKALOTIC +ALKANE +ALKANES +ALKANET +ALKANETS +ALKENE +ALKENES +ALKIE +ALKIES +ALKINE +ALKINES +ALKOXIDE +ALKOXIDES +ALKOXY +ALKY +ALKYD +ALKYDS +ALKYL +ALKYLATE +ALKYLATED +ALKYLATES +ALKYLATING +ALKYLATION +ALKYLATIONS +ALKYLIC +ALKYLS +ALKYNE +ALKYNES +ALL +ALLANITE +ALLANITES +ALLANTOIC +ALLANTOID +ALLANTOIDES +ALLANTOIDS +ALLANTOIN +ALLANTOINS +ALLANTOIS +ALLARGANDO +ALLAY +ALLAYED +ALLAYER +ALLAYERS +ALLAYING +ALLAYS +ALLEE +ALLEES +ALLEGATION +ALLEGATIONS +ALLEGE +ALLEGED +ALLEGEDLY +ALLEGER +ALLEGERS +ALLEGES +ALLEGIANCE +ALLEGIANCES +ALLEGIANT +ALLEGIANTS +ALLEGING +ALLEGORIC +ALLEGORICAL +ALLEGORICALLY +ALLEGORICALNESS +ALLEGORIES +ALLEGORISE +ALLEGORISED +ALLEGORISES +ALLEGORISING +ALLEGORIST +ALLEGORISTS +ALLEGORIZATION +ALLEGORIZATIONS +ALLEGORIZE +ALLEGORIZED +ALLEGORIZER +ALLEGORIZERS +ALLEGORIZES +ALLEGORIZING +ALLEGORY +ALLEGRETTO +ALLEGRETTOS +ALLEGRO +ALLEGROS +ALLELE +ALLELES +ALLELIC +ALLELISM +ALLELISMS +ALLELOMORPH +ALLELOMORPHIC +ALLELOMORPHISM +ALLELOMORPHISMS +ALLELOMORPHS +ALLELOPATHIC +ALLELOPATHIES +ALLELOPATHY +ALLELUIA +ALLELUIAS +ALLEMANDE +ALLEMANDES +ALLERGEN +ALLERGENIC +ALLERGENICITIES +ALLERGENICITY +ALLERGENS +ALLERGIC +ALLERGIES +ALLERGIN +ALLERGINS +ALLERGIST +ALLERGISTS +ALLERGY +ALLETHRIN +ALLETHRINS +ALLEVIANT +ALLEVIANTS +ALLEVIATE +ALLEVIATED +ALLEVIATES +ALLEVIATING +ALLEVIATION +ALLEVIATIONS +ALLEVIATOR +ALLEVIATORS +ALLEY +ALLEYS +ALLEYWAY +ALLEYWAYS +ALLHEAL +ALLHEALS +ALLIABLE +ALLIACEOUS +ALLIANCE +ALLIANCES +ALLICIN +ALLICINS +ALLIED +ALLIES +ALLIGATOR +ALLIGATORS +ALLITERATE +ALLITERATED +ALLITERATES +ALLITERATING +ALLITERATION +ALLITERATIONS +ALLITERATIVE +ALLITERATIVELY +ALLIUM +ALLIUMS +ALLOANTIBODIES +ALLOANTIBODY +ALLOANTIGEN +ALLOANTIGENS +ALLOBAR +ALLOBARS +ALLOCABLE +ALLOCATABLE +ALLOCATE +ALLOCATED +ALLOCATES +ALLOCATING +ALLOCATION +ALLOCATIONS +ALLOCATOR +ALLOCATORS +ALLOCUTION +ALLOCUTIONS +ALLOD +ALLODIA +ALLODIAL +ALLODIUM +ALLODS +ALLOGAMIES +ALLOGAMOUS +ALLOGAMY +ALLOGENEIC +ALLOGENIC +ALLOGRAFT +ALLOGRAFTED +ALLOGRAFTING +ALLOGRAFTS +ALLOGRAPH +ALLOGRAPHIC +ALLOGRAPHS +ALLOMETRIC +ALLOMETRIES +ALLOMETRY +ALLOMORPH +ALLOMORPHIC +ALLOMORPHISM +ALLOMORPHISMS +ALLOMORPHS +ALLONGE +ALLONGES +ALLONYM +ALLONYMS +ALLOPATH +ALLOPATHIES +ALLOPATHS +ALLOPATHY +ALLOPATRIC +ALLOPATRICALLY +ALLOPATRIES +ALLOPATRY +ALLOPHANE +ALLOPHANES +ALLOPHONE +ALLOPHONES +ALLOPHONIC +ALLOPLASM +ALLOPLASMS +ALLOPOLYPLOID +ALLOPOLYPLOIDS +ALLOPOLYPLOIDY +ALLOPURINOL +ALLOPURINOLS +ALLOSAUR +ALLOSAURS +ALLOSAURUS +ALLOSAURUSES +ALLOSTERIC +ALLOSTERICALLY +ALLOSTERIES +ALLOSTERY +ALLOT +ALLOTETRAPLOID +ALLOTETRAPLOIDS +ALLOTETRAPLOIDY +ALLOTMENT +ALLOTMENTS +ALLOTROPE +ALLOTROPES +ALLOTROPIC +ALLOTROPIES +ALLOTROPY +ALLOTS +ALLOTTED +ALLOTTEE +ALLOTTEES +ALLOTTER +ALLOTTERS +ALLOTTING +ALLOTYPE +ALLOTYPES +ALLOTYPIC +ALLOTYPICALLY +ALLOTYPIES +ALLOTYPY +ALLOVER +ALLOVERS +ALLOW +ALLOWABLE +ALLOWABLES +ALLOWABLY +ALLOWANCE +ALLOWANCED +ALLOWANCES +ALLOWANCING +ALLOWED +ALLOWEDLY +ALLOWING +ALLOWS +ALLOXAN +ALLOXANS +ALLOY +ALLOYED +ALLOYING +ALLOYS +ALLS +ALLSEED +ALLSEEDS +ALLSORTS +ALLSPICE +ALLSPICES +ALLUDE +ALLUDED +ALLUDES +ALLUDING +ALLURE +ALLURED +ALLUREMENT +ALLUREMENTS +ALLURER +ALLURERS +ALLURES +ALLURING +ALLURINGLY +ALLUSION +ALLUSIONS +ALLUSIVE +ALLUSIVELY +ALLUSIVENESS +ALLUSIVENESSES +ALLUVIA +ALLUVIAL +ALLUVIALS +ALLUVION +ALLUVIONS +ALLUVIUM +ALLUVIUMS +ALLY +ALLYING +ALLYL +ALLYLIC +ALLYLS +ALMA +ALMAGEST +ALMAGESTS +ALMAH +ALMAHS +ALMANAC +ALMANACK +ALMANACKS +ALMANACS +ALMANDINE +ALMANDINES +ALMANDITE +ALMANDITES +ALMAS +ALME +ALMEH +ALMEHS +ALMEMAR +ALMEMARS +ALMES +ALMIGHTINESS +ALMIGHTINESSES +ALMIGHTY +ALMNER +ALMNERS +ALMOND +ALMONDS +ALMONDY +ALMONER +ALMONERS +ALMONRIES +ALMONRY +ALMOST +ALMS +ALMSGIVER +ALMSGIVERS +ALMSGIVING +ALMSGIVINGS +ALMSHOUSE +ALMSHOUSES +ALMSMAN +ALMSMEN +ALMUCE +ALMUCES +ALMUD +ALMUDE +ALMUDES +ALMUDS +ALMUG +ALMUGS +ALNICO +ALNICOS +ALODIA +ALODIAL +ALODIUM +ALOE +ALOES +ALOETIC +ALOFT +ALOGICAL +ALOGICALLY +ALOHA +ALOHAS +ALOIN +ALOINS +ALONE +ALONENESS +ALONENESSES +ALONG +ALONGSHORE +ALONGSIDE +ALOOF +ALOOFLY +ALOOFNESS +ALOOFNESSES +ALOPECIA +ALOPECIAS +ALOPECIC +ALOUD +ALOW +ALP +ALPACA +ALPACAS +ALPENGLOW +ALPENGLOWS +ALPENHORN +ALPENHORNS +ALPENSTOCK +ALPENSTOCKS +ALPHA +ALPHABET +ALPHABETED +ALPHABETIC +ALPHABETICAL +ALPHABETICALLY +ALPHABETING +ALPHABETIZATION +ALPHABETIZE +ALPHABETIZED +ALPHABETIZER +ALPHABETIZERS +ALPHABETIZES +ALPHABETIZING +ALPHABETS +ALPHAMERIC +ALPHANUMERIC +ALPHANUMERICAL +ALPHANUMERICS +ALPHAS +ALPHORN +ALPHORNS +ALPHOSIS +ALPHOSISES +ALPHYL +ALPHYLS +ALPINE +ALPINELY +ALPINES +ALPINISM +ALPINISMS +ALPINIST +ALPINISTS +ALPS +ALREADY +ALRIGHT +ALS +ALSIKE +ALSIKES +ALSO +ALT +ALTAR +ALTARPIECE +ALTARPIECES +ALTARS +ALTAZIMUTH +ALTAZIMUTHS +ALTER +ALTERABILITIES +ALTERABILITY +ALTERABLE +ALTERABLY +ALTERANT +ALTERANTS +ALTERATION +ALTERATIONS +ALTERCATE +ALTERCATED +ALTERCATES +ALTERCATING +ALTERCATION +ALTERCATIONS +ALTERED +ALTERER +ALTERERS +ALTERING +ALTERITIES +ALTERITY +ALTERNANT +ALTERNANTS +ALTERNATE +ALTERNATED +ALTERNATELY +ALTERNATES +ALTERNATING +ALTERNATION +ALTERNATIONS +ALTERNATIVE +ALTERNATIVELY +ALTERNATIVENESS +ALTERNATIVES +ALTERNATOR +ALTERNATORS +ALTERS +ALTHAEA +ALTHAEAS +ALTHEA +ALTHEAS +ALTHO +ALTHORN +ALTHORNS +ALTHOUGH +ALTIGRAPH +ALTIGRAPHS +ALTIMETER +ALTIMETERS +ALTIMETRIES +ALTIMETRY +ALTIPLANO +ALTIPLANOS +ALTITUDE +ALTITUDES +ALTITUDINAL +ALTITUDINOUS +ALTO +ALTOCUMULI +ALTOCUMULUS +ALTOGETHER +ALTOGETHERS +ALTOIST +ALTOISTS +ALTOS +ALTOSTRATI +ALTOSTRATUS +ALTRICIAL +ALTRUISM +ALTRUISMS +ALTRUIST +ALTRUISTIC +ALTRUISTICALLY +ALTRUISTS +ALTS +ALUDEL +ALUDELS +ALULA +ALULAE +ALULAR +ALUM +ALUMIN +ALUMINA +ALUMINAS +ALUMINATE +ALUMINATES +ALUMINE +ALUMINES +ALUMINIC +ALUMINIUM +ALUMINIUMS +ALUMINIZE +ALUMINIZED +ALUMINIZES +ALUMINIZING +ALUMINOSILICATE +ALUMINOUS +ALUMINS +ALUMINUM +ALUMINUMS +ALUMNA +ALUMNAE +ALUMNI +ALUMNUS +ALUMROOT +ALUMROOTS +ALUMS +ALUMSTONE +ALUMSTONES +ALUNITE +ALUNITES +ALVEOLAR +ALVEOLARLY +ALVEOLARS +ALVEOLATE +ALVEOLI +ALVEOLUS +ALVINE +ALWAY +ALWAYS +ALYSSUM +ALYSSUMS +AM +AMA +AMADAVAT +AMADAVATS +AMADOU +AMADOUS +AMAH +AMAHS +AMAIN +AMALGAM +AMALGAMATE +AMALGAMATED +AMALGAMATES +AMALGAMATING +AMALGAMATION +AMALGAMATIONS +AMALGAMATOR +AMALGAMATORS +AMALGAMS +AMANDINE +AMANITA +AMANITAS +AMANITIN +AMANITINS +AMANTADINE +AMANTADINES +AMANUENSES +AMANUENSIS +AMARANTH +AMARANTHINE +AMARANTHS +AMARELLE +AMARELLES +AMARETTI +AMARETTO +AMARETTOS +AMARNA +AMARONE +AMARONES +AMARYLLIS +AMARYLLISES +AMAS +AMASS +AMASSABLE +AMASSED +AMASSER +AMASSERS +AMASSES +AMASSING +AMASSMENT +AMASSMENTS +AMATEUR +AMATEURISH +AMATEURISHLY +AMATEURISHNESS +AMATEURISM +AMATEURISMS +AMATEURS +AMATIVE +AMATIVELY +AMATIVENESS +AMATIVENESSES +AMATOL +AMATOLS +AMATORY +AMAUROSES +AMAUROSIS +AMAUROTIC +AMAZE +AMAZED +AMAZEDLY +AMAZEMENT +AMAZEMENTS +AMAZES +AMAZING +AMAZINGLY +AMAZON +AMAZONIAN +AMAZONIANS +AMAZONITE +AMAZONITES +AMAZONS +AMAZONSTONE +AMAZONSTONES +AMBAGE +AMBAGES +AMBAGIOUS +AMBARI +AMBARIES +AMBARIS +AMBARY +AMBASSADOR +AMBASSADORIAL +AMBASSADORS +AMBASSADORSHIP +AMBASSADORSHIPS +AMBASSADRESS +AMBASSADRESSES +AMBEER +AMBEERS +AMBER +AMBERGRIS +AMBERGRISES +AMBERIES +AMBERINA +AMBERINAS +AMBERJACK +AMBERJACKS +AMBEROID +AMBEROIDS +AMBERS +AMBERY +AMBIANCE +AMBIANCES +AMBIDEXTERITIES +AMBIDEXTERITY +AMBIDEXTROUS +AMBIDEXTROUSLY +AMBIENCE +AMBIENCES +AMBIENT +AMBIENTS +AMBIGUITIES +AMBIGUITY +AMBIGUOUS +AMBIGUOUSLY +AMBIGUOUSNESS +AMBIGUOUSNESSES +AMBIPOLAR +AMBISEXUAL +AMBISEXUALITIES +AMBISEXUALITY +AMBISEXUALS +AMBIT +AMBITION +AMBITIONED +AMBITIONING +AMBITIONLESS +AMBITIONS +AMBITIOUS +AMBITIOUSLY +AMBITIOUSNESS +AMBITIOUSNESSES +AMBITS +AMBIVALENCE +AMBIVALENCES +AMBIVALENT +AMBIVALENTLY +AMBIVERSION +AMBIVERSIONS +AMBIVERT +AMBIVERTS +AMBLE +AMBLED +AMBLER +AMBLERS +AMBLES +AMBLING +AMBLYGONITE +AMBLYGONITES +AMBLYOPIA +AMBLYOPIAS +AMBLYOPIC +AMBO +AMBOINA +AMBOINAS +AMBONES +AMBOS +AMBOYNA +AMBOYNAS +AMBRIES +AMBROID +AMBROIDS +AMBROSIA +AMBROSIAL +AMBROSIALLY +AMBROSIAN +AMBROSIAS +AMBROTYPE +AMBROTYPES +AMBRY +AMBSACE +AMBSACES +AMBULACRA +AMBULACRAL +AMBULACRUM +AMBULANCE +AMBULANCES +AMBULANT +AMBULATE +AMBULATED +AMBULATES +AMBULATING +AMBULATION +AMBULATIONS +AMBULATOR +AMBULATORIES +AMBULATORILY +AMBULATORS +AMBULATORY +AMBULETTE +AMBULETTES +AMBUSCADE +AMBUSCADED +AMBUSCADER +AMBUSCADERS +AMBUSCADES +AMBUSCADING +AMBUSH +AMBUSHED +AMBUSHER +AMBUSHERS +AMBUSHES +AMBUSHING +AMBUSHMENT +AMBUSHMENTS +AMEBA +AMEBAE +AMEBAN +AMEBAS +AMEBEAN +AMEBIASES +AMEBIASIS +AMEBIC +AMEBOCYTE +AMEBOCYTES +AMEBOID +AMEER +AMEERATE +AMEERATES +AMEERS +AMELCORN +AMELCORNS +AMELIORATE +AMELIORATED +AMELIORATES +AMELIORATING +AMELIORATION +AMELIORATIONS +AMELIORATIVE +AMELIORATOR +AMELIORATORS +AMELIORATORY +AMELOBLAST +AMELOBLASTS +AMEN +AMENABILITIES +AMENABILITY +AMENABLE +AMENABLY +AMEND +AMENDABLE +AMENDATORY +AMENDED +AMENDER +AMENDERS +AMENDING +AMENDMENT +AMENDMENTS +AMENDS +AMENITIES +AMENITY +AMENORRHEA +AMENORRHEAS +AMENORRHEIC +AMENS +AMENT +AMENTIA +AMENTIAS +AMENTIFEROUS +AMENTS +AMERCE +AMERCED +AMERCEMENT +AMERCEMENTS +AMERCER +AMERCERS +AMERCES +AMERCIABLE +AMERCING +AMERICIUM +AMERICIUMS +AMESACE +AMESACES +AMETHYST +AMETHYSTINE +AMETHYSTS +AMETROPIA +AMETROPIAS +AMETROPIC +AMI +AMIA +AMIABILITIES +AMIABILITY +AMIABLE +AMIABLENESS +AMIABLENESSES +AMIABLY +AMIANTHUS +AMIANTHUSES +AMIANTUS +AMIANTUSES +AMIAS +AMICABILITIES +AMICABILITY +AMICABLE +AMICABLENESS +AMICABLENESSES +AMICABLY +AMICE +AMICES +AMICI +AMICUS +AMID +AMIDASE +AMIDASES +AMIDE +AMIDES +AMIDIC +AMIDIN +AMIDINE +AMIDINES +AMIDINS +AMIDO +AMIDOGEN +AMIDOGENS +AMIDOL +AMIDOLS +AMIDONE +AMIDONES +AMIDS +AMIDSHIP +AMIDSHIPS +AMIDST +AMIE +AMIES +AMIGA +AMIGAS +AMIGO +AMIGOS +AMIN +AMINE +AMINES +AMINIC +AMINITIES +AMINITY +AMINO +AMINOACIDURIA +AMINOACIDURIAS +AMINOPEPTIDASE +AMINOPEPTIDASES +AMINOPHYLLINE +AMINOPHYLLINES +AMINOPTERIN +AMINOPTERINS +AMINOPYRINE +AMINOPYRINES +AMINS +AMIR +AMIRATE +AMIRATES +AMIRS +AMIS +AMISS +AMITIES +AMITOSES +AMITOSIS +AMITOTIC +AMITOTICALLY +AMITRIPTYLINE +AMITRIPTYLINES +AMITROLE +AMITROLES +AMITY +AMMETER +AMMETERS +AMMINE +AMMINES +AMMINO +AMMO +AMMOCETE +AMMOCETES +AMMONAL +AMMONALS +AMMONIA +AMMONIAC +AMMONIACAL +AMMONIACS +AMMONIAS +AMMONIATE +AMMONIATED +AMMONIATES +AMMONIATING +AMMONIATION +AMMONIATIONS +AMMONIC +AMMONIFICATION +AMMONIFICATIONS +AMMONIFIED +AMMONIFIES +AMMONIFY +AMMONIFYING +AMMONITE +AMMONITES +AMMONITIC +AMMONIUM +AMMONIUMS +AMMONO +AMMONOID +AMMONOIDS +AMMOS +AMMUNITION +AMMUNITIONS +AMNESIA +AMNESIAC +AMNESIACS +AMNESIAS +AMNESIC +AMNESICS +AMNESTIC +AMNESTIED +AMNESTIES +AMNESTY +AMNESTYING +AMNIA +AMNIC +AMNIO +AMNIOCENTESES +AMNIOCENTESIS +AMNION +AMNIONIC +AMNIONS +AMNIOS +AMNIOTE +AMNIOTES +AMNIOTIC +AMOBARBITAL +AMOBARBITALS +AMOEBA +AMOEBAE +AMOEBAEAN +AMOEBAN +AMOEBAS +AMOEBEAN +AMOEBIASES +AMOEBIASIS +AMOEBIC +AMOEBOCYTE +AMOEBOCYTES +AMOEBOID +AMOK +AMOKS +AMOLE +AMOLES +AMONG +AMONGST +AMONTILLADO +AMONTILLADOS +AMORAL +AMORALISM +AMORALISMS +AMORALITIES +AMORALITY +AMORALLY +AMORETTI +AMORETTO +AMORETTOS +AMORINI +AMORINO +AMORIST +AMORISTIC +AMORISTS +AMOROSO +AMOROUS +AMOROUSLY +AMOROUSNESS +AMOROUSNESSES +AMORPHISM +AMORPHISMS +AMORPHOUS +AMORPHOUSLY +AMORPHOUSNESS +AMORPHOUSNESSES +AMORT +AMORTISE +AMORTISED +AMORTISES +AMORTISING +AMORTIZABLE +AMORTIZATION +AMORTIZATIONS +AMORTIZE +AMORTIZED +AMORTIZES +AMORTIZING +AMOSITE +AMOSITES +AMOTION +AMOTIONS +AMOUNT +AMOUNTED +AMOUNTING +AMOUNTS +AMOUR +AMOURS +AMOXICILLIN +AMOXICILLINS +AMOXYCILLIN +AMOXYCILLINS +AMP +AMPED +AMPERAGE +AMPERAGES +AMPERE +AMPERES +AMPEROMETRIC +AMPERSAND +AMPERSANDS +AMPHETAMINE +AMPHETAMINES +AMPHIBIA +AMPHIBIAN +AMPHIBIANS +AMPHIBIOUS +AMPHIBIOUSLY +AMPHIBIOUSNESS +AMPHIBOLE +AMPHIBOLES +AMPHIBOLIES +AMPHIBOLITE +AMPHIBOLITES +AMPHIBOLOGIES +AMPHIBOLOGY +AMPHIBOLY +AMPHIBRACH +AMPHIBRACHIC +AMPHIBRACHS +AMPHICTYONIC +AMPHICTYONIES +AMPHICTYONY +AMPHIDIPLOID +AMPHIDIPLOIDIES +AMPHIDIPLOIDS +AMPHIDIPLOIDY +AMPHIGORIES +AMPHIGORY +AMPHIMACER +AMPHIMACERS +AMPHIMIXES +AMPHIMIXIS +AMPHIOXI +AMPHIOXUS +AMPHIOXUSES +AMPHIPATHIC +AMPHIPHILE +AMPHIPHILES +AMPHIPHILIC +AMPHIPLOID +AMPHIPLOIDIES +AMPHIPLOIDS +AMPHIPLOIDY +AMPHIPOD +AMPHIPODS +AMPHIPROSTYLE +AMPHIPROSTYLES +AMPHISBAENA +AMPHISBAENAS +AMPHISBAENIC +AMPHITHEATER +AMPHITHEATERS +AMPHITHEATRIC +AMPHITHEATRICAL +AMPHORA +AMPHORAE +AMPHORAL +AMPHORAS +AMPHOTERIC +AMPICILLIN +AMPICILLINS +AMPING +AMPLE +AMPLENESS +AMPLENESSES +AMPLER +AMPLEST +AMPLEXUS +AMPLEXUSES +AMPLIDYNE +AMPLIDYNES +AMPLIFICATION +AMPLIFICATIONS +AMPLIFIED +AMPLIFIER +AMPLIFIERS +AMPLIFIES +AMPLIFY +AMPLIFYING +AMPLITUDE +AMPLITUDES +AMPLY +AMPOULE +AMPOULES +AMPS +AMPUL +AMPULE +AMPULES +AMPULLA +AMPULLAE +AMPULLAR +AMPULLARY +AMPULS +AMPUTATE +AMPUTATED +AMPUTATES +AMPUTATING +AMPUTATION +AMPUTATIONS +AMPUTATOR +AMPUTATORS +AMPUTEE +AMPUTEES +AMREETA +AMREETAS +AMRITA +AMRITAS +AMSINCKIA +AMSINCKIAS +AMTRAC +AMTRACK +AMTRACKS +AMTRACS +AMU +AMUCK +AMUCKS +AMULET +AMULETS +AMUS +AMUSABLE +AMUSE +AMUSED +AMUSEDLY +AMUSEMENT +AMUSEMENTS +AMUSER +AMUSERS +AMUSES +AMUSIA +AMUSIAS +AMUSING +AMUSINGLY +AMUSINGNESS +AMUSINGNESSES +AMUSIVE +AMYGDALA +AMYGDALAE +AMYGDALE +AMYGDALES +AMYGDALIN +AMYGDALINS +AMYGDALOID +AMYGDALOIDAL +AMYGDALOIDS +AMYGDULE +AMYGDULES +AMYL +AMYLASE +AMYLASES +AMYLENE +AMYLENES +AMYLIC +AMYLOGEN +AMYLOGENS +AMYLOID +AMYLOIDOSES +AMYLOIDOSIS +AMYLOIDS +AMYLOLYTIC +AMYLOPECTIN +AMYLOPECTINS +AMYLOPLAST +AMYLOPLASTS +AMYLOPSIN +AMYLOPSINS +AMYLOSE +AMYLOSES +AMYLS +AMYLUM +AMYLUMS +AMYOTONIA +AMYOTONIAS +AN +ANA +ANABAENA +ANABAENAS +ANABAPTISM +ANABAPTISMS +ANABAS +ANABASES +ANABASIS +ANABATIC +ANABIOSES +ANABIOSIS +ANABIOTIC +ANABLEPS +ANABLEPSES +ANABOLIC +ANABOLISM +ANABOLISMS +ANABRANCH +ANABRANCHES +ANACHRONIC +ANACHRONISM +ANACHRONISMS +ANACHRONISTIC +ANACHRONOUS +ANACHRONOUSLY +ANACLISES +ANACLISIS +ANACLITIC +ANACOLUTHA +ANACOLUTHIC +ANACOLUTHICALLY +ANACOLUTHON +ANACOLUTHONS +ANACONDA +ANACONDAS +ANACREONTIC +ANACREONTICS +ANACRUSES +ANACRUSIS +ANADEM +ANADEMS +ANADIPLOSES +ANADIPLOSIS +ANADROMOUS +ANAEMIA +ANAEMIAS +ANAEMIC +ANAEROBE +ANAEROBES +ANAEROBIA +ANAEROBIC +ANAEROBICALLY +ANAEROBIOSES +ANAEROBIOSIS +ANAEROBIUM +ANAESTHESIA +ANAESTHESIAS +ANAESTHETIC +ANAESTHETICS +ANAGENESES +ANAGENESIS +ANAGLYPH +ANAGLYPHIC +ANAGLYPHS +ANAGNORISES +ANAGNORISIS +ANAGOGE +ANAGOGES +ANAGOGIC +ANAGOGICAL +ANAGOGICALLY +ANAGOGIES +ANAGOGY +ANAGRAM +ANAGRAMMATIC +ANAGRAMMATICAL +ANAGRAMMATIZE +ANAGRAMMATIZED +ANAGRAMMATIZES +ANAGRAMMATIZING +ANAGRAMMED +ANAGRAMMING +ANAGRAMS +ANAL +ANALCIME +ANALCIMES +ANALCIMIC +ANALCITE +ANALCITES +ANALECTA +ANALECTIC +ANALECTS +ANALEMMA +ANALEMMAS +ANALEMMATA +ANALEMMATIC +ANALEPTIC +ANALEPTICS +ANALGESIA +ANALGESIAS +ANALGESIC +ANALGESICS +ANALGETIC +ANALGETICS +ANALGIA +ANALGIAS +ANALITIES +ANALITY +ANALLY +ANALOG +ANALOGIC +ANALOGICAL +ANALOGICALLY +ANALOGIES +ANALOGISM +ANALOGISMS +ANALOGIST +ANALOGISTS +ANALOGIZE +ANALOGIZED +ANALOGIZES +ANALOGIZING +ANALOGOUS +ANALOGOUSLY +ANALOGOUSNESS +ANALOGOUSNESSES +ANALOGS +ANALOGUE +ANALOGUES +ANALOGY +ANALPHABET +ANALPHABETIC +ANALPHABETICS +ANALPHABETISM +ANALPHABETISMS +ANALPHABETS +ANALYSAND +ANALYSANDS +ANALYSE +ANALYSED +ANALYSER +ANALYSERS +ANALYSES +ANALYSING +ANALYSIS +ANALYST +ANALYSTS +ANALYTE +ANALYTES +ANALYTIC +ANALYTICAL +ANALYTICALLY +ANALYTICITIES +ANALYTICITY +ANALYTICS +ANALYZABILITIES +ANALYZABILITY +ANALYZABLE +ANALYZATION +ANALYZATIONS +ANALYZE +ANALYZED +ANALYZER +ANALYZERS +ANALYZES +ANALYZING +ANAMNESES +ANAMNESIS +ANAMNESTIC +ANAMORPHIC +ANANKE +ANANKES +ANAPAEST +ANAPAESTS +ANAPEST +ANAPESTIC +ANAPESTICS +ANAPESTS +ANAPHASE +ANAPHASES +ANAPHASIC +ANAPHOR +ANAPHORA +ANAPHORAL +ANAPHORAS +ANAPHORIC +ANAPHORICALLY +ANAPHORS +ANAPHRODISIAC +ANAPHRODISIACS +ANAPHYLACTIC +ANAPHYLACTOID +ANAPHYLAXES +ANAPHYLAXIS +ANAPLASIA +ANAPLASIAS +ANAPLASMOSES +ANAPLASMOSIS +ANAPLASTIC +ANAPTYXES +ANAPTYXIS +ANARCH +ANARCHIC +ANARCHICAL +ANARCHICALLY +ANARCHIES +ANARCHISM +ANARCHISMS +ANARCHIST +ANARCHISTIC +ANARCHISTS +ANARCHS +ANARCHY +ANARTHRIA +ANARTHRIAS +ANARTHRIC +ANAS +ANASARCA +ANASARCAS +ANASARCOUS +ANASTIGMAT +ANASTIGMATIC +ANASTIGMATS +ANASTOMOSE +ANASTOMOSED +ANASTOMOSES +ANASTOMOSING +ANASTOMOSIS +ANASTOMOTIC +ANASTROPHE +ANASTROPHES +ANATASE +ANATASES +ANATHEMA +ANATHEMAS +ANATHEMATA +ANATHEMATIZE +ANATHEMATIZED +ANATHEMATIZES +ANATHEMATIZING +ANATOMIC +ANATOMICAL +ANATOMICALLY +ANATOMIES +ANATOMISE +ANATOMISED +ANATOMISES +ANATOMISING +ANATOMIST +ANATOMISTS +ANATOMIZE +ANATOMIZED +ANATOMIZES +ANATOMIZING +ANATOMY +ANATOXIN +ANATOXINS +ANATROPOUS +ANATTO +ANATTOS +ANCESTOR +ANCESTORED +ANCESTORING +ANCESTORS +ANCESTRAL +ANCESTRALLY +ANCESTRESS +ANCESTRESSES +ANCESTRIES +ANCESTRY +ANCHO +ANCHOR +ANCHORAGE +ANCHORAGES +ANCHORED +ANCHORESS +ANCHORESSES +ANCHORET +ANCHORETS +ANCHORING +ANCHORITE +ANCHORITES +ANCHORITIC +ANCHORITICALLY +ANCHORLESS +ANCHORMAN +ANCHORMEN +ANCHORPEOPLE +ANCHORPERSON +ANCHORPERSONS +ANCHORS +ANCHORWOMAN +ANCHORWOMEN +ANCHOS +ANCHOVETA +ANCHOVETAS +ANCHOVETTA +ANCHOVETTAS +ANCHOVIES +ANCHOVY +ANCHUSA +ANCHUSAS +ANCHUSIN +ANCHUSINS +ANCHYLOSE +ANCHYLOSED +ANCHYLOSES +ANCHYLOSING +ANCIENT +ANCIENTER +ANCIENTEST +ANCIENTLY +ANCIENTNESS +ANCIENTNESSES +ANCIENTRIES +ANCIENTRY +ANCIENTS +ANCILLA +ANCILLAE +ANCILLARIES +ANCILLARY +ANCILLAS +ANCIPITAL +ANCON +ANCONAL +ANCONE +ANCONEAL +ANCONES +ANCONOID +ANCRESS +ANCRESSES +ANCYLOSTOMIASES +ANCYLOSTOMIASIS +AND +ANDALUSITE +ANDALUSITES +ANDANTE +ANDANTES +ANDANTINI +ANDANTINO +ANDANTINOS +ANDESITE +ANDESITES +ANDESITIC +ANDESYTE +ANDESYTES +ANDIRON +ANDIRONS +ANDOUILLE +ANDOUILLES +ANDOUILLETTE +ANDOUILLETTES +ANDRADITE +ANDRADITES +ANDRO +ANDROCENTRIC +ANDROECIA +ANDROECIUM +ANDROGEN +ANDROGENESES +ANDROGENESIS +ANDROGENETIC +ANDROGENIC +ANDROGENS +ANDROGYNE +ANDROGYNES +ANDROGYNIES +ANDROGYNOUS +ANDROGYNY +ANDROID +ANDROIDS +ANDROLOGIES +ANDROLOGY +ANDROMEDA +ANDROMEDAS +ANDROS +ANDROSTERONE +ANDROSTERONES +ANDS +ANE +ANEAR +ANEARED +ANEARING +ANEARS +ANECDOTA +ANECDOTAGE +ANECDOTAGES +ANECDOTAL +ANECDOTALISM +ANECDOTALISMS +ANECDOTALIST +ANECDOTALISTS +ANECDOTALLY +ANECDOTE +ANECDOTES +ANECDOTIC +ANECDOTICAL +ANECDOTICALLY +ANECDOTIST +ANECDOTISTS +ANECHOIC +ANELASTIC +ANELASTICITIES +ANELASTICITY +ANELE +ANELED +ANELES +ANELING +ANEMIA +ANEMIAS +ANEMIC +ANEMICALLY +ANEMOGRAPH +ANEMOGRAPHS +ANEMOLOGIES +ANEMOLOGY +ANEMOMETER +ANEMOMETERS +ANEMOMETRIES +ANEMOMETRY +ANEMONE +ANEMONES +ANEMOPHILOUS +ANEMOSES +ANEMOSIS +ANENCEPHALIC +ANENCEPHALIES +ANENCEPHALY +ANENST +ANENT +ANERGIA +ANERGIAS +ANERGIC +ANERGIES +ANERGY +ANEROID +ANEROIDS +ANES +ANESTHESIA +ANESTHESIAS +ANESTHESIOLOGY +ANESTHETIC +ANESTHETICALLY +ANESTHETICS +ANESTHETIST +ANESTHETISTS +ANESTHETIZE +ANESTHETIZED +ANESTHETIZES +ANESTHETIZING +ANESTRI +ANESTROUS +ANESTRUS +ANETHOL +ANETHOLE +ANETHOLES +ANETHOLS +ANEUPLOID +ANEUPLOIDIES +ANEUPLOIDS +ANEUPLOIDY +ANEURIN +ANEURINS +ANEURISM +ANEURISMS +ANEURYSM +ANEURYSMAL +ANEURYSMS +ANEW +ANFRACTUOSITIES +ANFRACTUOSITY +ANFRACTUOUS +ANGA +ANGAKOK +ANGAKOKS +ANGARIA +ANGARIAS +ANGARIES +ANGARY +ANGAS +ANGEL +ANGELED +ANGELFISH +ANGELFISHES +ANGELIC +ANGELICA +ANGELICAL +ANGELICALLY +ANGELICAS +ANGELING +ANGELOLOGIES +ANGELOLOGIST +ANGELOLOGISTS +ANGELOLOGY +ANGELS +ANGELUS +ANGELUSES +ANGER +ANGERED +ANGERING +ANGERLESS +ANGERLY +ANGERS +ANGINA +ANGINAL +ANGINAS +ANGINOSE +ANGINOUS +ANGIOGENESES +ANGIOGENESIS +ANGIOGENIC +ANGIOGRAM +ANGIOGRAMS +ANGIOGRAPHIC +ANGIOGRAPHIES +ANGIOGRAPHY +ANGIOLOGIES +ANGIOLOGY +ANGIOMA +ANGIOMAS +ANGIOMATA +ANGIOMATOUS +ANGIOPLASTIES +ANGIOPLASTY +ANGIOSPERM +ANGIOSPERMOUS +ANGIOSPERMS +ANGIOTENSIN +ANGIOTENSINS +ANGLE +ANGLED +ANGLEPOD +ANGLEPODS +ANGLER +ANGLERFISH +ANGLERFISHES +ANGLERS +ANGLES +ANGLESITE +ANGLESITES +ANGLEWORM +ANGLEWORMS +ANGLICE +ANGLICISE +ANGLICISED +ANGLICISES +ANGLICISING +ANGLICISM +ANGLICISMS +ANGLICIZATION +ANGLICIZATIONS +ANGLICIZE +ANGLICIZED +ANGLICIZES +ANGLICIZING +ANGLING +ANGLINGS +ANGLO +ANGLOPHONE +ANGLOS +ANGORA +ANGORAS +ANGOSTURA +ANGOSTURAS +ANGRIER +ANGRIEST +ANGRILY +ANGRINESS +ANGRINESSES +ANGRY +ANGST +ANGSTROM +ANGSTROMS +ANGSTS +ANGUINE +ANGUISH +ANGUISHED +ANGUISHES +ANGUISHING +ANGULAR +ANGULARITIES +ANGULARITY +ANGULARLY +ANGULATE +ANGULATED +ANGULATES +ANGULATING +ANGULATION +ANGULATIONS +ANGULOSE +ANGULOUS +ANHEDONIA +ANHEDONIAS +ANHEDONIC +ANHINGA +ANHINGAS +ANHYDRIDE +ANHYDRIDES +ANHYDRITE +ANHYDRITES +ANHYDROUS +ANI +ANIL +ANILE +ANILIN +ANILINCTUS +ANILINCTUSES +ANILINE +ANILINES +ANILINGUS +ANILINGUSES +ANILINS +ANILITIES +ANILITY +ANILS +ANIMA +ANIMACIES +ANIMACY +ANIMADVERSION +ANIMADVERSIONS +ANIMADVERT +ANIMADVERTED +ANIMADVERTING +ANIMADVERTS +ANIMAL +ANIMALCULA +ANIMALCULE +ANIMALCULES +ANIMALCULUM +ANIMALIAN +ANIMALIC +ANIMALIER +ANIMALIERS +ANIMALISM +ANIMALISMS +ANIMALIST +ANIMALISTIC +ANIMALISTS +ANIMALITIES +ANIMALITY +ANIMALIZATION +ANIMALIZATIONS +ANIMALIZE +ANIMALIZED +ANIMALIZES +ANIMALIZING +ANIMALLIKE +ANIMALLY +ANIMALS +ANIMAS +ANIMATE +ANIMATED +ANIMATEDLY +ANIMATELY +ANIMATENESS +ANIMATENESSES +ANIMATER +ANIMATERS +ANIMATES +ANIMATING +ANIMATION +ANIMATIONS +ANIMATISM +ANIMATISMS +ANIMATIST +ANIMATISTS +ANIMATO +ANIMATOR +ANIMATORS +ANIMATRONIC +ANIMATRONICALLY +ANIME +ANIMES +ANIMI +ANIMIS +ANIMISM +ANIMISMS +ANIMIST +ANIMISTIC +ANIMISTS +ANIMOSITIES +ANIMOSITY +ANIMUS +ANIMUSES +ANION +ANIONIC +ANIONS +ANIS +ANISE +ANISEED +ANISEEDS +ANISEIKONIA +ANISEIKONIAS +ANISEIKONIC +ANISES +ANISETTE +ANISETTES +ANISIC +ANISOGAMIES +ANISOGAMOUS +ANISOGAMY +ANISOLE +ANISOLES +ANISOMETROPIA +ANISOMETROPIAS +ANISOMETROPIC +ANISOTROPIC +ANISOTROPICALLY +ANISOTROPIES +ANISOTROPISM +ANISOTROPISMS +ANISOTROPY +ANKERITE +ANKERITES +ANKH +ANKHS +ANKLE +ANKLEBONE +ANKLEBONES +ANKLED +ANKLES +ANKLET +ANKLETS +ANKLING +ANKUS +ANKUSES +ANKUSH +ANKUSHES +ANKYLOSAUR +ANKYLOSAURS +ANKYLOSAURUS +ANKYLOSAURUSES +ANKYLOSE +ANKYLOSED +ANKYLOSES +ANKYLOSING +ANKYLOSIS +ANKYLOSTOMIASES +ANKYLOSTOMIASIS +ANKYLOTIC +ANLACE +ANLACES +ANLAGE +ANLAGEN +ANLAGES +ANLAS +ANLASES +ANNA +ANNAL +ANNALIST +ANNALISTIC +ANNALISTS +ANNALS +ANNAS +ANNATES +ANNATTO +ANNATTOS +ANNEAL +ANNEALED +ANNEALER +ANNEALERS +ANNEALING +ANNEALS +ANNELID +ANNELIDAN +ANNELIDANS +ANNELIDS +ANNEX +ANNEXATION +ANNEXATIONAL +ANNEXATIONIST +ANNEXATIONISTS +ANNEXATIONS +ANNEXE +ANNEXED +ANNEXES +ANNEXING +ANNIHILATE +ANNIHILATED +ANNIHILATES +ANNIHILATING +ANNIHILATION +ANNIHILATIONS +ANNIHILATOR +ANNIHILATORS +ANNIHILATORY +ANNIVERSARIES +ANNIVERSARY +ANNONA +ANNONAS +ANNOTATE +ANNOTATED +ANNOTATES +ANNOTATING +ANNOTATION +ANNOTATIONS +ANNOTATIVE +ANNOTATOR +ANNOTATORS +ANNOUNCE +ANNOUNCED +ANNOUNCEMENT +ANNOUNCEMENTS +ANNOUNCER +ANNOUNCERS +ANNOUNCES +ANNOUNCING +ANNOY +ANNOYANCE +ANNOYANCES +ANNOYED +ANNOYER +ANNOYERS +ANNOYING +ANNOYINGLY +ANNOYS +ANNUAL +ANNUALIZE +ANNUALIZED +ANNUALIZES +ANNUALIZING +ANNUALLY +ANNUALS +ANNUITANT +ANNUITANTS +ANNUITIES +ANNUITY +ANNUL +ANNULAR +ANNULARLY +ANNULATE +ANNULATED +ANNULATION +ANNULATIONS +ANNULET +ANNULETS +ANNULI +ANNULLED +ANNULLING +ANNULMENT +ANNULMENTS +ANNULOSE +ANNULS +ANNULUS +ANNULUSES +ANNUNCIATE +ANNUNCIATED +ANNUNCIATES +ANNUNCIATING +ANNUNCIATION +ANNUNCIATIONS +ANNUNCIATOR +ANNUNCIATORS +ANNUNCIATORY +ANOA +ANOAS +ANODAL +ANODALLY +ANODE +ANODES +ANODIC +ANODICALLY +ANODIZATION +ANODIZATIONS +ANODIZE +ANODIZED +ANODIZES +ANODIZING +ANODYNE +ANODYNES +ANODYNIC +ANOINT +ANOINTED +ANOINTER +ANOINTERS +ANOINTING +ANOINTMENT +ANOINTMENTS +ANOINTS +ANOLE +ANOLES +ANOLYTE +ANOLYTES +ANOMALIES +ANOMALOUS +ANOMALOUSLY +ANOMALOUSNESS +ANOMALOUSNESSES +ANOMALY +ANOMIC +ANOMIE +ANOMIES +ANOMY +ANON +ANONYM +ANONYMITIES +ANONYMITY +ANONYMOUS +ANONYMOUSLY +ANONYMOUSNESS +ANONYMOUSNESSES +ANONYMS +ANOOPSIA +ANOOPSIAS +ANOPHELES +ANOPHELINE +ANOPHELINES +ANOPIA +ANOPIAS +ANOPSIA +ANOPSIAS +ANORAK +ANORAKS +ANORECTIC +ANORECTICS +ANORETIC +ANORETICS +ANOREXIA +ANOREXIAS +ANOREXIC +ANOREXICS +ANOREXIES +ANOREXIGENIC +ANOREXY +ANORTHIC +ANORTHITE +ANORTHITES +ANORTHITIC +ANORTHOSITE +ANORTHOSITES +ANORTHOSITIC +ANOSMATIC +ANOSMIA +ANOSMIAS +ANOSMIC +ANOTHER +ANOVULANT +ANOVULANTS +ANOVULAR +ANOVULATORY +ANOXEMIA +ANOXEMIAS +ANOXEMIC +ANOXIA +ANOXIAS +ANOXIC +ANSA +ANSAE +ANSATE +ANSATED +ANSERINE +ANSERINES +ANSEROUS +ANSWER +ANSWERABLE +ANSWERED +ANSWERER +ANSWERERS +ANSWERING +ANSWERS +ANT +ANTA +ANTACID +ANTACIDS +ANTAE +ANTAGONISM +ANTAGONISMS +ANTAGONIST +ANTAGONISTIC +ANTAGONISTS +ANTAGONIZE +ANTAGONIZED +ANTAGONIZES +ANTAGONIZING +ANTALGIC +ANTALGICS +ANTALKALI +ANTALKALIES +ANTALKALIS +ANTARCTIC +ANTAS +ANTBEAR +ANTBEARS +ANTE +ANTEATER +ANTEATERS +ANTEBELLUM +ANTECEDE +ANTECEDED +ANTECEDENCE +ANTECEDENCES +ANTECEDENT +ANTECEDENTLY +ANTECEDENTS +ANTECEDES +ANTECEDING +ANTECESSOR +ANTECESSORS +ANTECHAMBER +ANTECHAMBERS +ANTECHAPEL +ANTECHAPELS +ANTECHOIR +ANTECHOIRS +ANTED +ANTEDATE +ANTEDATED +ANTEDATES +ANTEDATING +ANTEDILUVIAN +ANTEDILUVIANS +ANTEED +ANTEFIX +ANTEFIXA +ANTEFIXAE +ANTEFIXAL +ANTEFIXES +ANTEING +ANTELOPE +ANTELOPES +ANTEMORTEM +ANTENATAL +ANTENATALLY +ANTENNA +ANTENNAE +ANTENNAL +ANTENNAS +ANTENNULAR +ANTENNULE +ANTENNULES +ANTENUPTIAL +ANTEPAST +ANTEPASTS +ANTEPENDIA +ANTEPENDIUM +ANTEPENDIUMS +ANTEPENULT +ANTEPENULTIMA +ANTEPENULTIMAS +ANTEPENULTIMATE +ANTEPENULTS +ANTERIOR +ANTERIORLY +ANTEROOM +ANTEROOMS +ANTES +ANTETYPE +ANTETYPES +ANTEVERT +ANTEVERTED +ANTEVERTING +ANTEVERTS +ANTHELIA +ANTHELICES +ANTHELION +ANTHELIONS +ANTHELIX +ANTHELIXES +ANTHELMINTIC +ANTHELMINTICS +ANTHEM +ANTHEMED +ANTHEMIA +ANTHEMIC +ANTHEMING +ANTHEMION +ANTHEMS +ANTHER +ANTHERAL +ANTHERID +ANTHERIDIA +ANTHERIDIAL +ANTHERIDIUM +ANTHERIDS +ANTHERS +ANTHESES +ANTHESIS +ANTHILL +ANTHILLS +ANTHOCYAN +ANTHOCYANIN +ANTHOCYANINS +ANTHOCYANS +ANTHODIA +ANTHODIUM +ANTHOID +ANTHOLOGICAL +ANTHOLOGIES +ANTHOLOGIST +ANTHOLOGISTS +ANTHOLOGIZE +ANTHOLOGIZED +ANTHOLOGIZER +ANTHOLOGIZERS +ANTHOLOGIZES +ANTHOLOGIZING +ANTHOLOGY +ANTHOPHILOUS +ANTHOPHYLLITE +ANTHOPHYLLITES +ANTHOZOAN +ANTHOZOANS +ANTHOZOIC +ANTHRACENE +ANTHRACENES +ANTHRACES +ANTHRACITE +ANTHRACITES +ANTHRACITIC +ANTHRACNOSE +ANTHRACNOSES +ANTHRANILATE +ANTHRANILATES +ANTHRAQUINONE +ANTHRAQUINONES +ANTHRAX +ANTHROPIC +ANTHROPICAL +ANTHROPOCENTRIC +ANTHROPOGENIC +ANTHROPOID +ANTHROPOIDS +ANTHROPOLOGICAL +ANTHROPOLOGIES +ANTHROPOLOGIST +ANTHROPOLOGISTS +ANTHROPOLOGY +ANTHROPOMETRIC +ANTHROPOMETRIES +ANTHROPOMETRY +ANTHROPOMORPH +ANTHROPOMORPHIC +ANTHROPOMORPHS +ANTHROPOPATHISM +ANTHROPOPHAGI +ANTHROPOPHAGIES +ANTHROPOPHAGOUS +ANTHROPOPHAGUS +ANTHROPOPHAGY +ANTHROPOSOPHIES +ANTHROPOSOPHY +ANTHURIUM +ANTHURIUMS +ANTI +ANTIABORTION +ANTIABORTIONIST +ANTIABUSE +ANTIACADEMIC +ANTIACNE +ANTIAGGRESSION +ANTIAGING +ANTIAIR +ANTIAIRCRAFT +ANTIAIRCRAFTS +ANTIALCOHOL +ANTIALCOHOLISM +ANTIALIEN +ANTIALLERGENIC +ANTIANEMIA +ANTIANXIETY +ANTIAPARTHEID +ANTIAPHRODISIAC +ANTIAR +ANTIARIN +ANTIARINS +ANTIARMOR +ANTIARRHYTHMIC +ANTIARS +ANTIARTHRITIC +ANTIARTHRITICS +ANTIARTHRITIS +ANTIASTHMA +ANTIATOM +ANTIATOMS +ANTIAUTHORITY +ANTIAUXIN +ANTIAUXINS +ANTIBACKLASH +ANTIBACTERIAL +ANTIBACTERIALS +ANTIBIAS +ANTIBILLBOARD +ANTIBIOSES +ANTIBIOSIS +ANTIBIOTIC +ANTIBIOTICALLY +ANTIBIOTICS +ANTIBLACK +ANTIBLACKISM +ANTIBLACKISMS +ANTIBODIES +ANTIBODY +ANTIBOSS +ANTIBOURGEOIS +ANTIBOYCOTT +ANTIBUG +ANTIBURGLAR +ANTIBURGLARY +ANTIBUSER +ANTIBUSERS +ANTIBUSINESS +ANTIBUSING +ANTIC +ANTICAKING +ANTICALLY +ANTICANCER +ANTICAPITALISM +ANTICAPITALISMS +ANTICAPITALIST +ANTICAR +ANTICARCINOGEN +ANTICARCINOGENS +ANTICARIES +ANTICELLULITE +ANTICENSORSHIP +ANTICHLOR +ANTICHLORS +ANTICHOICE +ANTICHOICER +ANTICHOICERS +ANTICHOLESTEROL +ANTICHOLINERGIC +ANTICHURCH +ANTICIGARETTE +ANTICIPANT +ANTICIPANTS +ANTICIPATABLE +ANTICIPATE +ANTICIPATED +ANTICIPATES +ANTICIPATING +ANTICIPATION +ANTICIPATIONS +ANTICIPATOR +ANTICIPATORS +ANTICIPATORY +ANTICITY +ANTICIVIC +ANTICK +ANTICKED +ANTICKING +ANTICKS +ANTICLASSICAL +ANTICLERICAL +ANTICLERICALISM +ANTICLERICALS +ANTICLIMACTIC +ANTICLIMACTICAL +ANTICLIMAX +ANTICLIMAXES +ANTICLINAL +ANTICLINE +ANTICLINES +ANTICLING +ANTICLOCKWISE +ANTICLOTTING +ANTICLY +ANTICOAGULANT +ANTICOAGULANTS +ANTICODON +ANTICODONS +ANTICOLD +ANTICOLLISION +ANTICOLONIAL +ANTICOLONIALISM +ANTICOLONIALIST +ANTICOMMERCIAL +ANTICOMMUNISM +ANTICOMMUNISMS +ANTICOMMUNIST +ANTICOMMUNISTS +ANTICOMPETITIVE +ANTICONSUMER +ANTICONVULSANT +ANTICONVULSANTS +ANTICONVULSIVE +ANTICONVULSIVES +ANTICORPORATE +ANTICORROSION +ANTICORROSIVE +ANTICORROSIVES +ANTICORRUPTION +ANTICRACK +ANTICREATIVE +ANTICRIME +ANTICRUELTY +ANTICS +ANTICULT +ANTICULTS +ANTICULTURAL +ANTICYCLONE +ANTICYCLONES +ANTICYCLONIC +ANTIDANDRUFF +ANTIDEFAMATION +ANTIDEMOCRATIC +ANTIDEPRESSANT +ANTIDEPRESSANTS +ANTIDEPRESSION +ANTIDERIVATIVE +ANTIDERIVATIVES +ANTIDESICCANT +ANTIDEVELOPMENT +ANTIDIABETIC +ANTIDIARRHEAL +ANTIDIARRHEALS +ANTIDILUTION +ANTIDOGMATIC +ANTIDORA +ANTIDOTAL +ANTIDOTALLY +ANTIDOTE +ANTIDOTED +ANTIDOTES +ANTIDOTING +ANTIDRAFT +ANTIDROMIC +ANTIDROMICALLY +ANTIDRUG +ANTIDUMPING +ANTIECONOMIC +ANTIEDUCATIONAL +ANTIEGALITARIAN +ANTIELECTRON +ANTIELECTRONS +ANTIELITE +ANTIELITES +ANTIELITISM +ANTIELITISMS +ANTIELITIST +ANTIEMETIC +ANTIEMETICS +ANTIENTROPIC +ANTIEPILEPSY +ANTIEPILEPTIC +ANTIEPILEPTICS +ANTIEROTIC +ANTIESTROGEN +ANTIESTROGENS +ANTIEVOLUTION +ANTIFAMILY +ANTIFASCISM +ANTIFASCISMS +ANTIFASCIST +ANTIFASCISTS +ANTIFASHION +ANTIFASHIONABLE +ANTIFASHIONS +ANTIFAT +ANTIFATIGUE +ANTIFEMALE +ANTIFEMININE +ANTIFEMINISM +ANTIFEMINISMS +ANTIFEMINIST +ANTIFEMINISTS +ANTIFERROMAGNET +ANTIFERTILITY +ANTIFILIBUSTER +ANTIFLU +ANTIFOAM +ANTIFOAMING +ANTIFOG +ANTIFOGGING +ANTIFORECLOSURE +ANTIFOREIGN +ANTIFOREIGNER +ANTIFORMALIST +ANTIFOULING +ANTIFRAUD +ANTIFREEZE +ANTIFREEZES +ANTIFRICTION +ANTIFUNGAL +ANTIFUNGALS +ANTIFUR +ANTIGAMBLING +ANTIGANG +ANTIGAY +ANTIGEN +ANTIGENE +ANTIGENES +ANTIGENIC +ANTIGENICALLY +ANTIGENICITIES +ANTIGENICITY +ANTIGENS +ANTIGLARE +ANTIGLOBULIN +ANTIGLOBULINS +ANTIGOVERNMENT +ANTIGRAFT +ANTIGRAVITIES +ANTIGRAVITY +ANTIGROWTH +ANTIGUERRILLA +ANTIGUN +ANTIHELICES +ANTIHELIX +ANTIHELIXES +ANTIHERO +ANTIHEROES +ANTIHEROIC +ANTIHEROINE +ANTIHEROINES +ANTIHERPES +ANTIHIJACK +ANTIHISTAMINE +ANTIHISTAMINES +ANTIHISTAMINIC +ANTIHISTAMINICS +ANTIHISTORICAL +ANTIHOMOSEXUAL +ANTIHUMAN +ANTIHUMANISM +ANTIHUMANISMS +ANTIHUMANISTIC +ANTIHUNTER +ANTIHUNTING +ANTIHYSTERIC +ANTIHYSTERICS +ANTIJAM +ANTIJAMMING +ANTIKICKBACK +ANTIKING +ANTIKINGS +ANTIKNOCK +ANTIKNOCKS +ANTILABOR +ANTILEAK +ANTILEFT +ANTILEPROSY +ANTILEUKEMIC +ANTILIBERAL +ANTILIBERALISM +ANTILIBERALISMS +ANTILIBERALS +ANTILIBERTARIAN +ANTILIFE +ANTILIFER +ANTILIFERS +ANTILITERATE +ANTILITTER +ANTILITTERING +ANTILOCK +ANTILOG +ANTILOGARITHM +ANTILOGARITHMS +ANTILOGICAL +ANTILOGIES +ANTILOGS +ANTILOGY +ANTILYNCHING +ANTIMACASSAR +ANTIMACASSARS +ANTIMACHO +ANTIMAGNETIC +ANTIMALARIA +ANTIMALARIAL +ANTIMALARIALS +ANTIMALE +ANTIMAN +ANTIMANAGEMENT +ANTIMARIJUANA +ANTIMARKET +ANTIMASK +ANTIMASKS +ANTIMATERIALISM +ANTIMATERIALIST +ANTIMATTER +ANTIMATTERS +ANTIMECHANIST +ANTIMECHANISTS +ANTIMERE +ANTIMERES +ANTIMERGER +ANTIMERIC +ANTIMETABOLIC +ANTIMETABOLITE +ANTIMETABOLITES +ANTIMICROBIAL +ANTIMICROBIALS +ANTIMILITARISM +ANTIMILITARISMS +ANTIMILITARIST +ANTIMILITARISTS +ANTIMILITARY +ANTIMINE +ANTIMISSILE +ANTIMITOTIC +ANTIMITOTICS +ANTIMODERN +ANTIMODERNIST +ANTIMODERNISTS +ANTIMONARCHICAL +ANTIMONARCHIST +ANTIMONARCHISTS +ANTIMONIAL +ANTIMONIALS +ANTIMONIC +ANTIMONIDE +ANTIMONIDES +ANTIMONIES +ANTIMONOPOLIST +ANTIMONOPOLISTS +ANTIMONOPOLY +ANTIMONY +ANTIMONYL +ANTIMONYLS +ANTIMOSQUITO +ANTIMUSIC +ANTIMUSICAL +ANTIMUSICS +ANTIMYCIN +ANTIMYCINS +ANTINARRATIVE +ANTINARRATIVES +ANTINATIONAL +ANTINATIONALIST +ANTINATURAL +ANTINATURE +ANTINAUSEA +ANTINEOPLASTIC +ANTINEPOTISM +ANTINEUTRINO +ANTINEUTRINOS +ANTINEUTRON +ANTINEUTRONS +ANTING +ANTINGS +ANTINODAL +ANTINODE +ANTINODES +ANTINOISE +ANTINOME +ANTINOMES +ANTINOMIAN +ANTINOMIANISM +ANTINOMIANISMS +ANTINOMIANS +ANTINOMIC +ANTINOMIES +ANTINOMY +ANTINOVEL +ANTINOVELIST +ANTINOVELISTS +ANTINOVELS +ANTINUCLEAR +ANTINUCLEON +ANTINUCLEONS +ANTINUKE +ANTINUKER +ANTINUKERS +ANTINUKES +ANTIOBESITY +ANTIOBSCENITY +ANTIOXIDANT +ANTIOXIDANTS +ANTIOZONANT +ANTIOZONANTS +ANTIPAPAL +ANTIPARALLEL +ANTIPARASITIC +ANTIPARTICLE +ANTIPARTICLES +ANTIPARTIES +ANTIPARTY +ANTIPASTI +ANTIPASTO +ANTIPASTOS +ANTIPATHETIC +ANTIPATHIES +ANTIPATHY +ANTIPERSONNEL +ANTIPERSPIRANT +ANTIPERSPIRANTS +ANTIPESTICIDE +ANTIPHLOGISTIC +ANTIPHON +ANTIPHONAL +ANTIPHONALLY +ANTIPHONALS +ANTIPHONARIES +ANTIPHONARY +ANTIPHONIES +ANTIPHONS +ANTIPHONY +ANTIPHRASES +ANTIPHRASIS +ANTIPILL +ANTIPIRACY +ANTIPLAGUE +ANTIPLAQUE +ANTIPLEASURE +ANTIPOACHING +ANTIPODAL +ANTIPODALS +ANTIPODE +ANTIPODEAN +ANTIPODEANS +ANTIPODES +ANTIPOETIC +ANTIPOLAR +ANTIPOLE +ANTIPOLES +ANTIPOLICE +ANTIPOLITICAL +ANTIPOLITICS +ANTIPOLLUTION +ANTIPOLLUTIONS +ANTIPOPE +ANTIPOPES +ANTIPOPULAR +ANTIPORN +ANTIPORNOGRAPHY +ANTIPOT +ANTIPOVERTY +ANTIPREDATOR +ANTIPRESS +ANTIPROGRESSIVE +ANTIPROTON +ANTIPROTONS +ANTIPRURITIC +ANTIPRURITICS +ANTIPSYCHOTIC +ANTIPSYCHOTICS +ANTIPYIC +ANTIPYICS +ANTIPYRETIC +ANTIPYRETICS +ANTIPYRINE +ANTIPYRINES +ANTIQUARIAN +ANTIQUARIANISM +ANTIQUARIANISMS +ANTIQUARIANS +ANTIQUARIES +ANTIQUARK +ANTIQUARKS +ANTIQUARY +ANTIQUATE +ANTIQUATED +ANTIQUATES +ANTIQUATING +ANTIQUATION +ANTIQUATIONS +ANTIQUE +ANTIQUED +ANTIQUELY +ANTIQUER +ANTIQUERS +ANTIQUES +ANTIQUING +ANTIQUITIES +ANTIQUITY +ANTIRABIES +ANTIRACHITIC +ANTIRACISM +ANTIRACISMS +ANTIRACIST +ANTIRACISTS +ANTIRADAR +ANTIRADARS +ANTIRADICAL +ANTIRADICALISM +ANTIRADICALISMS +ANTIRAPE +ANTIRATIONAL +ANTIRATIONALISM +ANTIRATIONALIST +ANTIRATIONALITY +ANTIREALISM +ANTIREALISMS +ANTIREALIST +ANTIREALISTS +ANTIRECESSION +ANTIRED +ANTIREFLECTION +ANTIREFLECTIVE +ANTIREFORM +ANTIREGULATORY +ANTIREJECTION +ANTIRELIGION +ANTIRELIGIOUS +ANTIRHEUMATIC +ANTIRHEUMATICS +ANTIRIOT +ANTIRITUALISM +ANTIRITUALISMS +ANTIROCK +ANTIROLL +ANTIROMANTIC +ANTIROMANTICISM +ANTIROMANTICS +ANTIROYAL +ANTIROYALIST +ANTIROYALISTS +ANTIRRHINUM +ANTIRRHINUMS +ANTIRUST +ANTIRUSTS +ANTIS +ANTISAG +ANTISATELLITE +ANTISCIENCE +ANTISCIENCES +ANTISCIENTIFIC +ANTISCORBUTIC +ANTISCORBUTICS +ANTISECRECY +ANTISEGREGATION +ANTISEIZURE +ANTISENSE +ANTISENTIMENTAL +ANTISEPARATIST +ANTISEPARATISTS +ANTISEPSES +ANTISEPSIS +ANTISEPTIC +ANTISEPTICALLY +ANTISEPTICS +ANTISERA +ANTISERUM +ANTISERUMS +ANTISEX +ANTISEXIST +ANTISEXISTS +ANTISEXUAL +ANTISEXUALITIES +ANTISEXUALITY +ANTISHARK +ANTISHIP +ANTISHOCK +ANTISHOCKS +ANTISHOPLIFTING +ANTISKID +ANTISLAVERY +ANTISLEEP +ANTISLIP +ANTISMOG +ANTISMOKE +ANTISMOKER +ANTISMOKERS +ANTISMOKING +ANTISMUGGLING +ANTISMUT +ANTISNOB +ANTISNOBS +ANTISOCIAL +ANTISOCIALIST +ANTISOCIALISTS +ANTISOCIALLY +ANTISOLAR +ANTISPAM +ANTISPASMODIC +ANTISPASMODICS +ANTISPECULATION +ANTISPECULATIVE +ANTISPENDING +ANTISTAT +ANTISTATE +ANTISTATIC +ANTISTATS +ANTISTICK +ANTISTORIES +ANTISTORY +ANTISTRESS +ANTISTRIKE +ANTISTROPHE +ANTISTROPHES +ANTISTROPHIC +ANTISTUDENT +ANTISTYLE +ANTISTYLES +ANTISUBMARINE +ANTISUBSIDY +ANTISUBVERSION +ANTISUBVERSIVE +ANTISUICIDE +ANTISYMMETRIC +ANTISYPHILITIC +ANTISYPHILITICS +ANTITAKEOVER +ANTITANK +ANTITARNISH +ANTITAX +ANTITECHNOLOGY +ANTITERRORISM +ANTITERRORISMS +ANTITERRORIST +ANTITERRORISTS +ANTITHEFT +ANTITHEORETICAL +ANTITHESES +ANTITHESIS +ANTITHETIC +ANTITHETICAL +ANTITHETICALLY +ANTITHROMBIN +ANTITHROMBINS +ANTITHYROID +ANTITOBACCO +ANTITOXIC +ANTITOXIN +ANTITOXINS +ANTITRADE +ANTITRADES +ANTITRADITIONAL +ANTITRAGI +ANTITRAGUS +ANTITRUST +ANTITRUSTER +ANTITRUSTERS +ANTITUBERCULAR +ANTITUBERCULOUS +ANTITUMOR +ANTITUMORAL +ANTITUMORS +ANTITUSSIVE +ANTITUSSIVES +ANTITYPE +ANTITYPES +ANTITYPHOID +ANTITYPIC +ANTIULCER +ANTIUNION +ANTIUNIVERSITY +ANTIURBAN +ANTIVENIN +ANTIVENINS +ANTIVENOM +ANTIVENOMS +ANTIVIOLENCE +ANTIVIRAL +ANTIVIRUS +ANTIVIRUSES +ANTIVITAMIN +ANTIVITAMINS +ANTIVIVISECTION +ANTIWAR +ANTIWEAR +ANTIWEED +ANTIWELFARE +ANTIWHALING +ANTIWHITE +ANTIWOMAN +ANTIWRINKLE +ANTLER +ANTLERED +ANTLERS +ANTLIKE +ANTLION +ANTLIONS +ANTONOMASIA +ANTONOMASIAS +ANTONYM +ANTONYMIC +ANTONYMIES +ANTONYMOUS +ANTONYMS +ANTONYMY +ANTRA +ANTRAL +ANTRE +ANTRES +ANTRORSE +ANTRUM +ANTRUMS +ANTS +ANTSIER +ANTSIEST +ANTSINESS +ANTSINESSES +ANTSY +ANURAL +ANURAN +ANURANS +ANURESES +ANURESIS +ANURETIC +ANURIA +ANURIAS +ANURIC +ANUROUS +ANUS +ANUSES +ANVIL +ANVILED +ANVILING +ANVILLED +ANVILLING +ANVILS +ANVILTOP +ANVILTOPS +ANXIETIES +ANXIETY +ANXIOLYTIC +ANXIOLYTICS +ANXIOUS +ANXIOUSLY +ANXIOUSNESS +ANXIOUSNESSES +ANY +ANYBODIES +ANYBODY +ANYHOW +ANYMORE +ANYON +ANYONE +ANYONS +ANYPLACE +ANYTHING +ANYTHINGS +ANYTIME +ANYWAY +ANYWAYS +ANYWHERE +ANYWHERES +ANYWISE +AORIST +AORISTIC +AORISTICALLY +AORISTS +AORTA +AORTAE +AORTAL +AORTAS +AORTIC +AORTOGRAPHIC +AORTOGRAPHIES +AORTOGRAPHY +AOUDAD +AOUDADS +APACE +APACHE +APACHES +APAGOGE +APAGOGES +APAGOGIC +APANAGE +APANAGES +APAREJO +APAREJOS +APART +APARTHEID +APARTHEIDS +APARTMENT +APARTMENTAL +APARTMENTS +APARTNESS +APARTNESSES +APATETIC +APATHETIC +APATHETICALLY +APATHIES +APATHY +APATITE +APATITES +APATOSAUR +APATOSAURS +APATOSAURUS +APATOSAURUSES +APE +APEAK +APED +APEEK +APELIKE +APER +APERCU +APERCUS +APERIENT +APERIENTS +APERIES +APERIODIC +APERIODICALLY +APERIODICITIES +APERIODICITY +APERITIF +APERITIFS +APERS +APERTURAL +APERTURE +APERTURED +APERTURES +APERY +APES +APETALIES +APETALOUS +APETALY +APEX +APEXES +APHAERESES +APHAERESIS +APHAERETIC +APHAGIA +APHAGIAS +APHANITE +APHANITES +APHANITIC +APHASIA +APHASIAC +APHASIACS +APHASIAS +APHASIC +APHASICS +APHELIA +APHELIAN +APHELION +APHELIONS +APHERESES +APHERESIS +APHERETIC +APHESES +APHESIS +APHETIC +APHETICALLY +APHID +APHIDES +APHIDIAN +APHIDIANS +APHIDS +APHIS +APHOLATE +APHOLATES +APHONIA +APHONIAS +APHONIC +APHONICS +APHORISE +APHORISED +APHORISES +APHORISING +APHORISM +APHORISMS +APHORIST +APHORISTIC +APHORISTICALLY +APHORISTS +APHORIZE +APHORIZED +APHORIZER +APHORIZERS +APHORIZES +APHORIZING +APHOTIC +APHRODISIAC +APHRODISIACAL +APHRODISIACS +APHRODITE +APHRODITES +APHTHA +APHTHAE +APHTHOUS +APHYLLIES +APHYLLOUS +APHYLLY +APIACEOUS +APIAN +APIARIAN +APIARIANS +APIARIES +APIARIST +APIARISTS +APIARY +APICAL +APICALLY +APICALS +APICES +APICULATE +APICULI +APICULTURAL +APICULTURE +APICULTURES +APICULTURIST +APICULTURISTS +APICULUS +APIECE +APIMANIA +APIMANIAS +APING +APIOLOGIES +APIOLOGY +APISH +APISHLY +APISHNESS +APISHNESSES +APIVOROUS +APLANATIC +APLASIA +APLASIAS +APLASTIC +APLENTY +APLITE +APLITES +APLITIC +APLOMB +APLOMBS +APNEA +APNEAL +APNEAS +APNEIC +APNOEA +APNOEAL +APNOEAS +APNOEIC +APO +APOAPSES +APOAPSIDES +APOAPSIS +APOCALYPSE +APOCALYPSES +APOCALYPTIC +APOCALYPTICAL +APOCALYPTICALLY +APOCALYPTICISM +APOCALYPTICISMS +APOCALYPTISM +APOCALYPTISMS +APOCALYPTIST +APOCALYPTISTS +APOCARP +APOCARPIES +APOCARPS +APOCARPY +APOCHROMATIC +APOCOPATE +APOCOPATED +APOCOPATES +APOCOPATING +APOCOPE +APOCOPES +APOCOPIC +APOCRINE +APOCRYPHA +APOCRYPHAL +APOCRYPHALLY +APOCRYPHALNESS +APOD +APODAL +APODEICTIC +APODICTIC +APODICTICALLY +APODOSES +APODOSIS +APODOUS +APODS +APOENZYME +APOENZYMES +APOGAMIC +APOGAMIES +APOGAMOUS +APOGAMY +APOGEAL +APOGEAN +APOGEE +APOGEES +APOGEIC +APOLIPOPROTEIN +APOLIPOPROTEINS +APOLITICAL +APOLITICALLY +APOLLO +APOLLOS +APOLOG +APOLOGAL +APOLOGETIC +APOLOGETICALLY +APOLOGETICS +APOLOGIA +APOLOGIAE +APOLOGIAS +APOLOGIES +APOLOGISE +APOLOGISED +APOLOGISES +APOLOGISING +APOLOGIST +APOLOGISTS +APOLOGIZE +APOLOGIZED +APOLOGIZER +APOLOGIZERS +APOLOGIZES +APOLOGIZING +APOLOGS +APOLOGUE +APOLOGUES +APOLOGY +APOLUNE +APOLUNES +APOMICT +APOMICTIC +APOMICTICALLY +APOMICTS +APOMIXES +APOMIXIS +APOMORPHINE +APOMORPHINES +APONEUROSES +APONEUROSIS +APONEUROTIC +APOPHASES +APOPHASIS +APOPHONIES +APOPHONY +APOPHTHEGM +APOPHTHEGMS +APOPHYGE +APOPHYGES +APOPHYLLITE +APOPHYLLITES +APOPHYSEAL +APOPHYSES +APOPHYSIS +APOPLECTIC +APOPLECTICALLY +APOPLEXIES +APOPLEXY +APOPTOSES +APOPTOSIS +APOPTOTIC +APORIA +APORIAS +APORT +APOS +APOSEMATIC +APOSEMATICALLY +APOSIOPESES +APOSIOPESIS +APOSIOPETIC +APOSPORIC +APOSPORIES +APOSPOROUS +APOSPORY +APOSTACIES +APOSTACY +APOSTASIES +APOSTASY +APOSTATE +APOSTATES +APOSTATISE +APOSTATISED +APOSTATISES +APOSTATISING +APOSTATIZE +APOSTATIZED +APOSTATIZES +APOSTATIZING +APOSTIL +APOSTILLE +APOSTILLES +APOSTILS +APOSTLE +APOSTLES +APOSTLESHIP +APOSTLESHIPS +APOSTOLATE +APOSTOLATES +APOSTOLIC +APOSTOLICITIES +APOSTOLICITY +APOSTROPHE +APOSTROPHES +APOSTROPHIC +APOSTROPHISE +APOSTROPHISED +APOSTROPHISES +APOSTROPHISING +APOSTROPHIZE +APOSTROPHIZED +APOSTROPHIZES +APOSTROPHIZING +APOTHECARIES +APOTHECARY +APOTHECE +APOTHECES +APOTHECIA +APOTHECIAL +APOTHECIUM +APOTHEGM +APOTHEGMATIC +APOTHEGMS +APOTHEM +APOTHEMS +APOTHEOSES +APOTHEOSIS +APOTHEOSIZE +APOTHEOSIZED +APOTHEOSIZES +APOTHEOSIZING +APOTROPAIC +APOTROPAICALLY +APP +APPAL +APPALL +APPALLED +APPALLING +APPALLINGLY +APPALLS +APPALOOSA +APPALOOSAS +APPALS +APPANAGE +APPANAGES +APPARAT +APPARATCHIK +APPARATCHIKI +APPARATCHIKS +APPARATS +APPARATUS +APPARATUSES +APPAREL +APPARELED +APPARELING +APPARELLED +APPARELLING +APPARELS +APPARENT +APPARENTLY +APPARENTNESS +APPARENTNESSES +APPARITION +APPARITIONAL +APPARITIONS +APPARITOR +APPARITORS +APPEAL +APPEALABILITIES +APPEALABILITY +APPEALABLE +APPEALED +APPEALER +APPEALERS +APPEALING +APPEALINGLY +APPEALS +APPEAR +APPEARANCE +APPEARANCES +APPEARED +APPEARING +APPEARS +APPEASABLE +APPEASE +APPEASED +APPEASEMENT +APPEASEMENTS +APPEASER +APPEASERS +APPEASES +APPEASING +APPEL +APPELLANT +APPELLANTS +APPELLATE +APPELLATION +APPELLATIONS +APPELLATIVE +APPELLATIVELY +APPELLATIVES +APPELLEE +APPELLEES +APPELLOR +APPELLORS +APPELS +APPEND +APPENDAGE +APPENDAGES +APPENDANT +APPENDANTS +APPENDECTOMIES +APPENDECTOMY +APPENDED +APPENDENT +APPENDENTS +APPENDICECTOMY +APPENDICES +APPENDICITIS +APPENDICITISES +APPENDICULAR +APPENDING +APPENDIX +APPENDIXES +APPENDS +APPERCEIVE +APPERCEIVED +APPERCEIVES +APPERCEIVING +APPERCEPTION +APPERCEPTIONS +APPERCEPTIVE +APPERTAIN +APPERTAINED +APPERTAINING +APPERTAINS +APPESTAT +APPESTATS +APPETENCE +APPETENCES +APPETENCIES +APPETENCY +APPETENT +APPETISER +APPETISERS +APPETISING +APPETITE +APPETITES +APPETITIVE +APPETIZER +APPETIZERS +APPETIZING +APPETIZINGLY +APPLAUD +APPLAUDABLE +APPLAUDABLY +APPLAUDED +APPLAUDER +APPLAUDERS +APPLAUDING +APPLAUDS +APPLAUSE +APPLAUSES +APPLE +APPLECART +APPLECARTS +APPLEJACK +APPLEJACKS +APPLES +APPLESAUCE +APPLESAUCES +APPLET +APPLETS +APPLIABLE +APPLIANCE +APPLIANCES +APPLICABILITIES +APPLICABILITY +APPLICABLE +APPLICANT +APPLICANTS +APPLICATION +APPLICATIONS +APPLICATIVE +APPLICATIVELY +APPLICATOR +APPLICATORS +APPLICATORY +APPLIED +APPLIER +APPLIERS +APPLIES +APPLIQUE +APPLIQUED +APPLIQUEING +APPLIQUES +APPLY +APPLYING +APPOGGIATURA +APPOGGIATURAS +APPOINT +APPOINTED +APPOINTEE +APPOINTEES +APPOINTER +APPOINTERS +APPOINTING +APPOINTIVE +APPOINTMENT +APPOINTMENTS +APPOINTOR +APPOINTORS +APPOINTS +APPORTION +APPORTIONABLE +APPORTIONED +APPORTIONING +APPORTIONMENT +APPORTIONMENTS +APPORTIONS +APPOSABLE +APPOSE +APPOSED +APPOSER +APPOSERS +APPOSES +APPOSING +APPOSITE +APPOSITELY +APPOSITENESS +APPOSITENESSES +APPOSITION +APPOSITIONAL +APPOSITIONS +APPOSITIVE +APPOSITIVELY +APPOSITIVES +APPRAISAL +APPRAISALS +APPRAISE +APPRAISED +APPRAISEE +APPRAISEES +APPRAISEMENT +APPRAISEMENTS +APPRAISER +APPRAISERS +APPRAISES +APPRAISING +APPRAISINGLY +APPRAISIVE +APPRECIABLE +APPRECIABLY +APPRECIATE +APPRECIATED +APPRECIATES +APPRECIATING +APPRECIATION +APPRECIATIONS +APPRECIATIVE +APPRECIATIVELY +APPRECIATOR +APPRECIATORS +APPRECIATORY +APPREHEND +APPREHENDED +APPREHENDING +APPREHENDS +APPREHENSIBLE +APPREHENSIBLY +APPREHENSION +APPREHENSIONS +APPREHENSIVE +APPREHENSIVELY +APPRENTICE +APPRENTICED +APPRENTICES +APPRENTICESHIP +APPRENTICESHIPS +APPRENTICING +APPRESSED +APPRESSORIA +APPRESSORIUM +APPRISE +APPRISED +APPRISER +APPRISERS +APPRISES +APPRISING +APPRIZE +APPRIZED +APPRIZER +APPRIZERS +APPRIZES +APPRIZING +APPROACH +APPROACHABILITY +APPROACHABLE +APPROACHED +APPROACHES +APPROACHING +APPROBATE +APPROBATED +APPROBATES +APPROBATING +APPROBATION +APPROBATIONS +APPROBATORY +APPROPRIABLE +APPROPRIATE +APPROPRIATED +APPROPRIATELY +APPROPRIATENESS +APPROPRIATES +APPROPRIATING +APPROPRIATION +APPROPRIATIONS +APPROPRIATIVE +APPROPRIATOR +APPROPRIATORS +APPROVABLE +APPROVABLY +APPROVAL +APPROVALS +APPROVE +APPROVED +APPROVER +APPROVERS +APPROVES +APPROVING +APPROVINGLY +APPROXIMATE +APPROXIMATED +APPROXIMATELY +APPROXIMATES +APPROXIMATING +APPROXIMATION +APPROXIMATIONS +APPROXIMATIVE +APPS +APPULSE +APPULSES +APPURTENANCE +APPURTENANCES +APPURTENANT +APPURTENANTS +APRACTIC +APRAXIA +APRAXIAS +APRAXIC +APRES +APRICOT +APRICOTS +APRIORITIES +APRIORITY +APRON +APRONED +APRONING +APRONLIKE +APRONS +APROPOS +APROTIC +APSE +APSES +APSIDAL +APSIDES +APSIS +APT +APTER +APTERAL +APTERIA +APTERIUM +APTEROUS +APTERYX +APTERYXES +APTEST +APTITUDE +APTITUDES +APTITUDINAL +APTITUDINALLY +APTLY +APTNESS +APTNESSES +APYRASE +APYRASES +APYRETIC +AQUA +AQUACADE +AQUACADES +AQUACULTURAL +AQUACULTURE +AQUACULTURES +AQUACULTURIST +AQUACULTURISTS +AQUAE +AQUAFARM +AQUAFARMED +AQUAFARMING +AQUAFARMS +AQUALUNG +AQUALUNGS +AQUAMARINE +AQUAMARINES +AQUANAUT +AQUANAUTS +AQUAPLANE +AQUAPLANED +AQUAPLANER +AQUAPLANERS +AQUAPLANES +AQUAPLANING +AQUARELLE +AQUARELLES +AQUARELLIST +AQUARELLISTS +AQUARIA +AQUARIAL +AQUARIAN +AQUARIANS +AQUARIST +AQUARISTS +AQUARIUM +AQUARIUMS +AQUAS +AQUATIC +AQUATICALLY +AQUATICS +AQUATINT +AQUATINTED +AQUATINTER +AQUATINTERS +AQUATINTING +AQUATINTIST +AQUATINTISTS +AQUATINTS +AQUATONE +AQUATONES +AQUAVIT +AQUAVITS +AQUEDUCT +AQUEDUCTS +AQUEOUS +AQUEOUSLY +AQUICULTURE +AQUICULTURES +AQUIFER +AQUIFEROUS +AQUIFERS +AQUILEGIA +AQUILEGIAS +AQUILINE +AQUILINITIES +AQUILINITY +AQUIVER +AR +ARABESK +ARABESKS +ARABESQUE +ARABESQUES +ARABIC +ARABICA +ARABICAS +ARABICIZATION +ARABICIZATIONS +ARABICIZE +ARABICIZED +ARABICIZES +ARABICIZING +ARABILITIES +ARABILITY +ARABINOSE +ARABINOSES +ARABINOSIDE +ARABINOSIDES +ARABIZE +ARABIZED +ARABIZES +ARABIZING +ARABLE +ARABLES +ARACEOUS +ARACHNID +ARACHNIDS +ARACHNOID +ARACHNOIDS +ARAGONITE +ARAGONITES +ARAGONITIC +ARAK +ARAKS +ARAME +ARAMES +ARAMID +ARAMIDS +ARANEID +ARANEIDAN +ARANEIDS +ARAPAIMA +ARAPAIMAS +ARAROBA +ARAROBAS +ARAUCARIA +ARAUCARIAN +ARAUCARIAS +ARB +ARBALEST +ARBALESTS +ARBALIST +ARBALISTS +ARBELEST +ARBELESTS +ARBITER +ARBITERS +ARBITRABLE +ARBITRAGE +ARBITRAGED +ARBITRAGER +ARBITRAGERS +ARBITRAGES +ARBITRAGEUR +ARBITRAGEURS +ARBITRAGING +ARBITRAL +ARBITRAMENT +ARBITRAMENTS +ARBITRARILY +ARBITRARINESS +ARBITRARINESSES +ARBITRARY +ARBITRATE +ARBITRATED +ARBITRATES +ARBITRATING +ARBITRATION +ARBITRATIONAL +ARBITRATIONS +ARBITRATIVE +ARBITRATOR +ARBITRATORS +ARBITRESS +ARBITRESSES +ARBOR +ARBOREAL +ARBOREALLY +ARBORED +ARBOREOUS +ARBORES +ARBORESCENCE +ARBORESCENCES +ARBORESCENT +ARBORETA +ARBORETUM +ARBORETUMS +ARBORICULTURAL +ARBORICULTURE +ARBORICULTURES +ARBORIST +ARBORISTS +ARBORIZATION +ARBORIZATIONS +ARBORIZE +ARBORIZED +ARBORIZES +ARBORIZING +ARBOROUS +ARBORS +ARBORVITAE +ARBORVITAES +ARBOUR +ARBOURED +ARBOURS +ARBOVIRAL +ARBOVIRUS +ARBOVIRUSES +ARBS +ARBUSCLE +ARBUSCLES +ARBUTE +ARBUTEAN +ARBUTES +ARBUTUS +ARBUTUSES +ARC +ARCADE +ARCADED +ARCADES +ARCADIA +ARCADIAN +ARCADIANS +ARCADIAS +ARCADING +ARCADINGS +ARCANA +ARCANE +ARCANUM +ARCANUMS +ARCATURE +ARCATURES +ARCCOSINE +ARCCOSINES +ARCED +ARCH +ARCHAEA +ARCHAEAL +ARCHAEAN +ARCHAEANS +ARCHAEBACTERIA +ARCHAEBACTERIUM +ARCHAEOLOGICAL +ARCHAEOLOGIES +ARCHAEOLOGIST +ARCHAEOLOGISTS +ARCHAEOLOGY +ARCHAEON +ARCHAEOPTERYX +ARCHAEOPTERYXES +ARCHAIC +ARCHAICAL +ARCHAICALLY +ARCHAISE +ARCHAISED +ARCHAISES +ARCHAISING +ARCHAISM +ARCHAISMS +ARCHAIST +ARCHAISTIC +ARCHAISTS +ARCHAIZE +ARCHAIZED +ARCHAIZER +ARCHAIZERS +ARCHAIZES +ARCHAIZING +ARCHANGEL +ARCHANGELIC +ARCHANGELS +ARCHBISHOP +ARCHBISHOPRIC +ARCHBISHOPRICS +ARCHBISHOPS +ARCHDEACON +ARCHDEACONRIES +ARCHDEACONRY +ARCHDEACONS +ARCHDIOCESAN +ARCHDIOCESE +ARCHDIOCESES +ARCHDUCAL +ARCHDUCHESS +ARCHDUCHESSES +ARCHDUCHIES +ARCHDUCHY +ARCHDUKE +ARCHDUKEDOM +ARCHDUKEDOMS +ARCHDUKES +ARCHEAN +ARCHED +ARCHEGONIA +ARCHEGONIAL +ARCHEGONIATE +ARCHEGONIATES +ARCHEGONIUM +ARCHENEMIES +ARCHENEMY +ARCHENTERON +ARCHENTERONS +ARCHEOLOGIES +ARCHEOLOGY +ARCHER +ARCHERFISH +ARCHERFISHES +ARCHERIES +ARCHERS +ARCHERY +ARCHES +ARCHESPORIA +ARCHESPORIAL +ARCHESPORIUM +ARCHETYPAL +ARCHETYPALLY +ARCHETYPE +ARCHETYPES +ARCHETYPICAL +ARCHFIEND +ARCHFIENDS +ARCHFOE +ARCHFOES +ARCHICARP +ARCHICARPS +ARCHIDIACONAL +ARCHIEPISCOPAL +ARCHIEPISCOPATE +ARCHIL +ARCHILS +ARCHIMANDRITE +ARCHIMANDRITES +ARCHINE +ARCHINES +ARCHING +ARCHINGS +ARCHIPELAGIC +ARCHIPELAGO +ARCHIPELAGOES +ARCHIPELAGOS +ARCHITECT +ARCHITECTONIC +ARCHITECTONICS +ARCHITECTS +ARCHITECTURAL +ARCHITECTURALLY +ARCHITECTURE +ARCHITECTURES +ARCHITRAVE +ARCHITRAVES +ARCHIVAL +ARCHIVE +ARCHIVED +ARCHIVES +ARCHIVING +ARCHIVIST +ARCHIVISTS +ARCHIVOLT +ARCHIVOLTS +ARCHLY +ARCHNESS +ARCHNESSES +ARCHON +ARCHONS +ARCHOSAUR +ARCHOSAURIAN +ARCHOSAURS +ARCHPRIEST +ARCHPRIESTS +ARCHRIVAL +ARCHRIVALS +ARCHWAY +ARCHWAYS +ARCIFORM +ARCING +ARCKED +ARCKING +ARCO +ARCS +ARCSINE +ARCSINES +ARCTANGENT +ARCTANGENTS +ARCTIC +ARCTICALLY +ARCTICS +ARCUATE +ARCUATED +ARCUATELY +ARCUATION +ARCUATIONS +ARCUS +ARCUSES +ARDEB +ARDEBS +ARDENCIES +ARDENCY +ARDENT +ARDENTLY +ARDOR +ARDORS +ARDOUR +ARDOURS +ARDUOUS +ARDUOUSLY +ARDUOUSNESS +ARDUOUSNESSES +ARE +AREA +AREAE +AREAL +AREALLY +AREAS +AREAWAY +AREAWAYS +ARECA +ARECAS +ARECOLINE +ARECOLINES +AREIC +ARENA +ARENACEOUS +ARENAS +ARENE +ARENES +ARENICOLOUS +ARENITE +ARENITES +ARENOSE +ARENOUS +AREOCENTRIC +AREOLA +AREOLAE +AREOLAR +AREOLAS +AREOLATE +AREOLATED +AREOLE +AREOLES +AREOLOGIES +AREOLOGY +AREPA +AREPAS +ARES +ARETE +ARETES +ARETHUSA +ARETHUSAS +ARF +ARFS +ARGAL +ARGALA +ARGALAS +ARGALI +ARGALIS +ARGALS +ARGENT +ARGENTAL +ARGENTIC +ARGENTIFEROUS +ARGENTINE +ARGENTINES +ARGENTITE +ARGENTITES +ARGENTOUS +ARGENTS +ARGENTUM +ARGENTUMS +ARGIL +ARGILLACEOUS +ARGILLITE +ARGILLITES +ARGILS +ARGINASE +ARGINASES +ARGININE +ARGININES +ARGLE +ARGLED +ARGLES +ARGLING +ARGOL +ARGOLS +ARGON +ARGONAUT +ARGONAUTS +ARGONS +ARGOSIES +ARGOSY +ARGOT +ARGOTIC +ARGOTS +ARGUABLE +ARGUABLY +ARGUE +ARGUED +ARGUER +ARGUERS +ARGUES +ARGUFIED +ARGUFIER +ARGUFIERS +ARGUFIES +ARGUFY +ARGUFYING +ARGUING +ARGUMENT +ARGUMENTA +ARGUMENTATION +ARGUMENTATIONS +ARGUMENTATIVE +ARGUMENTATIVELY +ARGUMENTIVE +ARGUMENTS +ARGUMENTUM +ARGUS +ARGUSES +ARGYLE +ARGYLES +ARGYLL +ARGYLLS +ARHAT +ARHATS +ARHATSHIP +ARHATSHIPS +ARIA +ARIARY +ARIAS +ARIBOFLAVINOSES +ARIBOFLAVINOSIS +ARID +ARIDER +ARIDEST +ARIDITIES +ARIDITY +ARIDLY +ARIDNESS +ARIDNESSES +ARIEL +ARIELS +ARIETTA +ARIETTAS +ARIETTE +ARIETTES +ARIGHT +ARIL +ARILED +ARILLATE +ARILLODE +ARILLODES +ARILLOID +ARILS +ARIOSE +ARIOSI +ARIOSO +ARIOSOS +ARISE +ARISEN +ARISES +ARISING +ARISTA +ARISTAE +ARISTAS +ARISTATE +ARISTO +ARISTOCRACIES +ARISTOCRACY +ARISTOCRAT +ARISTOCRATIC +ARISTOCRATS +ARISTOS +ARITHMETIC +ARITHMETICAL +ARITHMETICALLY +ARITHMETICIAN +ARITHMETICIANS +ARITHMETICS +ARK +ARKOSE +ARKOSES +ARKOSIC +ARKS +ARLES +ARM +ARMADA +ARMADAS +ARMADILLO +ARMADILLOS +ARMAGNAC +ARMAGNACS +ARMAMENT +ARMAMENTARIA +ARMAMENTARIUM +ARMAMENTS +ARMATURE +ARMATURED +ARMATURES +ARMATURING +ARMBAND +ARMBANDS +ARMCHAIR +ARMCHAIRS +ARMED +ARMER +ARMERS +ARMET +ARMETS +ARMFUL +ARMFULS +ARMHOLE +ARMHOLES +ARMIES +ARMIGER +ARMIGERAL +ARMIGERO +ARMIGEROS +ARMIGEROUS +ARMIGERS +ARMILLA +ARMILLAE +ARMILLARY +ARMILLAS +ARMING +ARMINGS +ARMISTICE +ARMISTICES +ARMLESS +ARMLET +ARMLETS +ARMLIKE +ARMLOAD +ARMLOADS +ARMLOCK +ARMLOCKS +ARMOIRE +ARMOIRES +ARMONICA +ARMONICAS +ARMOR +ARMORED +ARMORER +ARMORERS +ARMORIAL +ARMORIALLY +ARMORIALS +ARMORIES +ARMORING +ARMORLESS +ARMORS +ARMORY +ARMOUR +ARMOURED +ARMOURER +ARMOURERS +ARMOURIES +ARMOURING +ARMOURS +ARMOURY +ARMPIT +ARMPITS +ARMREST +ARMRESTS +ARMS +ARMSFUL +ARMURE +ARMURES +ARMY +ARMYWORM +ARMYWORMS +ARNATTO +ARNATTOS +ARNICA +ARNICAS +ARNOTTO +ARNOTTOS +AROID +AROIDS +AROINT +AROINTED +AROINTING +AROINTS +AROMA +AROMAS +AROMATASE +AROMATASES +AROMATHERAPIES +AROMATHERAPIST +AROMATHERAPISTS +AROMATHERAPY +AROMATIC +AROMATICALLY +AROMATICITIES +AROMATICITY +AROMATICS +AROMATIZATION +AROMATIZATIONS +AROMATIZE +AROMATIZED +AROMATIZES +AROMATIZING +AROSE +AROUND +AROUSABLE +AROUSAL +AROUSALS +AROUSE +AROUSED +AROUSER +AROUSERS +AROUSES +AROUSING +AROYNT +AROYNTED +AROYNTING +AROYNTS +ARPEGGIATE +ARPEGGIATED +ARPEGGIATES +ARPEGGIATING +ARPEGGIO +ARPEGGIOS +ARPEN +ARPENS +ARPENT +ARPENTS +ARQUEBUS +ARQUEBUSES +ARRACK +ARRACKS +ARRAIGN +ARRAIGNED +ARRAIGNER +ARRAIGNERS +ARRAIGNING +ARRAIGNMENT +ARRAIGNMENTS +ARRAIGNS +ARRANGE +ARRANGED +ARRANGEMENT +ARRANGEMENTS +ARRANGER +ARRANGERS +ARRANGES +ARRANGING +ARRANT +ARRANTLY +ARRAS +ARRASED +ARRASES +ARRAY +ARRAYAL +ARRAYALS +ARRAYED +ARRAYER +ARRAYERS +ARRAYING +ARRAYS +ARREAR +ARREARAGE +ARREARAGES +ARREARS +ARREST +ARRESTANT +ARRESTANTS +ARRESTED +ARRESTEE +ARRESTEES +ARRESTER +ARRESTERS +ARRESTING +ARRESTINGLY +ARRESTIVE +ARRESTMENT +ARRESTMENTS +ARRESTOR +ARRESTORS +ARRESTS +ARRHIZAL +ARRHYTHMIA +ARRHYTHMIAS +ARRHYTHMIC +ARRIBA +ARRIS +ARRISES +ARRIVAL +ARRIVALS +ARRIVE +ARRIVED +ARRIVER +ARRIVERS +ARRIVES +ARRIVING +ARRIVISTE +ARRIVISTES +ARROBA +ARROBAS +ARROGANCE +ARROGANCES +ARROGANCIES +ARROGANCY +ARROGANT +ARROGANTLY +ARROGATE +ARROGATED +ARROGATES +ARROGATING +ARROGATION +ARROGATIONS +ARROGATOR +ARROGATORS +ARRONDISSEMENT +ARRONDISSEMENTS +ARROW +ARROWED +ARROWHEAD +ARROWHEADS +ARROWING +ARROWLESS +ARROWLIKE +ARROWROOT +ARROWROOTS +ARROWS +ARROWWOOD +ARROWWOODS +ARROWWORM +ARROWWORMS +ARROWY +ARROYO +ARROYOS +ARS +ARSE +ARSENAL +ARSENALS +ARSENATE +ARSENATES +ARSENIC +ARSENICAL +ARSENICALS +ARSENICS +ARSENIDE +ARSENIDES +ARSENIOUS +ARSENITE +ARSENITES +ARSENO +ARSENOPYRITE +ARSENOPYRITES +ARSENOUS +ARSES +ARSHIN +ARSHINS +ARSINE +ARSINES +ARSINO +ARSIS +ARSON +ARSONIST +ARSONISTS +ARSONOUS +ARSONS +ARSPHENAMINE +ARSPHENAMINES +ART +ARTAL +ARTEFACT +ARTEFACTS +ARTEL +ARTELS +ARTEMISIA +ARTEMISIAS +ARTERIAL +ARTERIALLY +ARTERIALS +ARTERIES +ARTERIOGRAM +ARTERIOGRAMS +ARTERIOGRAPHIC +ARTERIOGRAPHIES +ARTERIOGRAPHY +ARTERIOLAR +ARTERIOLE +ARTERIOLES +ARTERIOVENOUS +ARTERITIDES +ARTERITIS +ARTERY +ARTFUL +ARTFULLY +ARTFULNESS +ARTFULNESSES +ARTHRALGIA +ARTHRALGIAS +ARTHRALGIC +ARTHRITIC +ARTHRITICALLY +ARTHRITICS +ARTHRITIDES +ARTHRITIS +ARTHRODESES +ARTHRODESIS +ARTHROPATHIES +ARTHROPATHY +ARTHROPOD +ARTHROPODAN +ARTHROPODS +ARTHROSCOPE +ARTHROSCOPES +ARTHROSCOPIC +ARTHROSCOPIES +ARTHROSCOPY +ARTHROSES +ARTHROSIS +ARTHROSPORE +ARTHROSPORES +ARTICHOKE +ARTICHOKES +ARTICLE +ARTICLED +ARTICLES +ARTICLING +ARTICULABLE +ARTICULACIES +ARTICULACY +ARTICULAR +ARTICULATE +ARTICULATED +ARTICULATELY +ARTICULATENESS +ARTICULATES +ARTICULATING +ARTICULATION +ARTICULATIONS +ARTICULATIVE +ARTICULATOR +ARTICULATORS +ARTICULATORY +ARTIER +ARTIEST +ARTIFACT +ARTIFACTS +ARTIFACTUAL +ARTIFICE +ARTIFICER +ARTIFICERS +ARTIFICES +ARTIFICIAL +ARTIFICIALITIES +ARTIFICIALITY +ARTIFICIALLY +ARTIFICIALNESS +ARTILLERIES +ARTILLERIST +ARTILLERISTS +ARTILLERY +ARTILLERYMAN +ARTILLERYMEN +ARTILY +ARTINESS +ARTINESSES +ARTIODACTYL +ARTIODACTYLS +ARTISAN +ARTISANAL +ARTISANS +ARTISANSHIP +ARTISANSHIPS +ARTIST +ARTISTE +ARTISTES +ARTISTIC +ARTISTICALLY +ARTISTRIES +ARTISTRY +ARTISTS +ARTLESS +ARTLESSLY +ARTLESSNESS +ARTLESSNESSES +ARTS +ARTSIER +ARTSIEST +ARTSINESS +ARTSINESSES +ARTSY +ARTWORK +ARTWORKS +ARTY +ARUGOLA +ARUGOLAS +ARUGULA +ARUGULAS +ARUM +ARUMS +ARUSPEX +ARUSPICES +ARVAL +ARVO +ARVOS +ARYL +ARYLS +ARYTENOID +ARYTENOIDS +ARYTHMIA +ARYTHMIAS +ARYTHMIC +AS +ASAFETIDA +ASAFETIDAS +ASAFOETIDA +ASAFOETIDAS +ASANA +ASANAS +ASARUM +ASARUMS +ASBESTIC +ASBESTINE +ASBESTOS +ASBESTOSES +ASBESTOSIS +ASBESTOUS +ASBESTUS +ASBESTUSES +ASCARED +ASCARIASES +ASCARIASIS +ASCARID +ASCARIDES +ASCARIDS +ASCARIS +ASCEND +ASCENDABLE +ASCENDANCE +ASCENDANCES +ASCENDANCIES +ASCENDANCY +ASCENDANT +ASCENDANTLY +ASCENDANTS +ASCENDED +ASCENDENCE +ASCENDENCES +ASCENDENCIES +ASCENDENCY +ASCENDENT +ASCENDENTS +ASCENDER +ASCENDERS +ASCENDIBLE +ASCENDING +ASCENDS +ASCENSION +ASCENSIONAL +ASCENSIONS +ASCENSIVE +ASCENT +ASCENTS +ASCERTAIN +ASCERTAINABLE +ASCERTAINED +ASCERTAINING +ASCERTAINMENT +ASCERTAINMENTS +ASCERTAINS +ASCESES +ASCESIS +ASCETIC +ASCETICAL +ASCETICALLY +ASCETICISM +ASCETICISMS +ASCETICS +ASCI +ASCIDIA +ASCIDIAN +ASCIDIANS +ASCIDIATE +ASCIDIUM +ASCITES +ASCITIC +ASCLEPIAD +ASCLEPIADS +ASCOCARP +ASCOCARPIC +ASCOCARPS +ASCOGONIA +ASCOGONIUM +ASCOMYCETE +ASCOMYCETES +ASCOMYCETOUS +ASCORBATE +ASCORBATES +ASCORBIC +ASCOSPORE +ASCOSPORES +ASCOSPORIC +ASCOT +ASCOTS +ASCRIBABLE +ASCRIBE +ASCRIBED +ASCRIBES +ASCRIBING +ASCRIPTION +ASCRIPTIONS +ASCRIPTIVE +ASCUS +ASDIC +ASDICS +ASEA +ASEPSES +ASEPSIS +ASEPTIC +ASEPTICALLY +ASEXUAL +ASEXUALITIES +ASEXUALITY +ASEXUALLY +ASH +ASHAMED +ASHAMEDLY +ASHCAKE +ASHCAKES +ASHCAN +ASHCANS +ASHED +ASHEN +ASHES +ASHFALL +ASHFALLS +ASHIER +ASHIEST +ASHINESS +ASHINESSES +ASHING +ASHLAR +ASHLARED +ASHLARING +ASHLARS +ASHLER +ASHLERED +ASHLERING +ASHLERS +ASHLESS +ASHMAN +ASHMEN +ASHORE +ASHPLANT +ASHPLANTS +ASHRAM +ASHRAMS +ASHTRAY +ASHTRAYS +ASHY +ASIDE +ASIDES +ASININE +ASININELY +ASININITIES +ASININITY +ASK +ASKANCE +ASKANT +ASKED +ASKER +ASKERS +ASKESES +ASKESIS +ASKEW +ASKEWNESS +ASKEWNESSES +ASKING +ASKINGS +ASKOI +ASKOS +ASKS +ASLANT +ASLEEP +ASLOPE +ASLOSH +ASOCIAL +ASOCIALS +ASP +ASPARAGINE +ASPARAGINES +ASPARAGUS +ASPARAGUSES +ASPARKLE +ASPARTAME +ASPARTAMES +ASPARTATE +ASPARTATES +ASPECT +ASPECTS +ASPECTUAL +ASPEN +ASPENS +ASPER +ASPERATE +ASPERATED +ASPERATES +ASPERATING +ASPERGES +ASPERGILL +ASPERGILLA +ASPERGILLI +ASPERGILLOSES +ASPERGILLOSIS +ASPERGILLS +ASPERGILLUM +ASPERGILLUMS +ASPERGILLUS +ASPERITIES +ASPERITY +ASPERS +ASPERSE +ASPERSED +ASPERSER +ASPERSERS +ASPERSES +ASPERSING +ASPERSION +ASPERSIONS +ASPERSIVE +ASPERSOR +ASPERSORS +ASPHALT +ASPHALTED +ASPHALTIC +ASPHALTING +ASPHALTITE +ASPHALTITES +ASPHALTS +ASPHALTUM +ASPHALTUMS +ASPHERIC +ASPHERICAL +ASPHODEL +ASPHODELS +ASPHYXIA +ASPHYXIAL +ASPHYXIAS +ASPHYXIATE +ASPHYXIATED +ASPHYXIATES +ASPHYXIATING +ASPHYXIATION +ASPHYXIATIONS +ASPHYXIES +ASPHYXY +ASPIC +ASPICS +ASPIDISTRA +ASPIDISTRAS +ASPIRANT +ASPIRANTS +ASPIRATA +ASPIRATAE +ASPIRATE +ASPIRATED +ASPIRATES +ASPIRATING +ASPIRATION +ASPIRATIONAL +ASPIRATIONS +ASPIRATOR +ASPIRATORS +ASPIRE +ASPIRED +ASPIRER +ASPIRERS +ASPIRES +ASPIRIN +ASPIRING +ASPIRINS +ASPIS +ASPISES +ASPISH +ASPS +ASQUINT +ASRAMA +ASRAMAS +ASS +ASSAGAI +ASSAGAIED +ASSAGAIING +ASSAGAIS +ASSAI +ASSAIL +ASSAILABLE +ASSAILANT +ASSAILANTS +ASSAILED +ASSAILER +ASSAILERS +ASSAILING +ASSAILS +ASSAIS +ASSASSIN +ASSASSINATE +ASSASSINATED +ASSASSINATES +ASSASSINATING +ASSASSINATION +ASSASSINATIONS +ASSASSINATOR +ASSASSINATORS +ASSASSINS +ASSAULT +ASSAULTED +ASSAULTER +ASSAULTERS +ASSAULTING +ASSAULTIVE +ASSAULTIVELY +ASSAULTIVENESS +ASSAULTS +ASSAY +ASSAYABLE +ASSAYED +ASSAYER +ASSAYERS +ASSAYING +ASSAYS +ASSEGAI +ASSEGAIED +ASSEGAIING +ASSEGAIS +ASSEMBLAGE +ASSEMBLAGES +ASSEMBLAGIST +ASSEMBLAGISTS +ASSEMBLE +ASSEMBLED +ASSEMBLER +ASSEMBLERS +ASSEMBLES +ASSEMBLIES +ASSEMBLING +ASSEMBLY +ASSEMBLYMAN +ASSEMBLYMEN +ASSEMBLYWOMAN +ASSEMBLYWOMEN +ASSENT +ASSENTATION +ASSENTATIONS +ASSENTED +ASSENTER +ASSENTERS +ASSENTING +ASSENTIVE +ASSENTOR +ASSENTORS +ASSENTS +ASSERT +ASSERTED +ASSERTEDLY +ASSERTER +ASSERTERS +ASSERTING +ASSERTION +ASSERTIONS +ASSERTIVE +ASSERTIVELY +ASSERTIVENESS +ASSERTIVENESSES +ASSERTOR +ASSERTORS +ASSERTS +ASSES +ASSESS +ASSESSABLE +ASSESSED +ASSESSES +ASSESSING +ASSESSMENT +ASSESSMENTS +ASSESSOR +ASSESSORS +ASSET +ASSETLESS +ASSETS +ASSEVERATE +ASSEVERATED +ASSEVERATES +ASSEVERATING +ASSEVERATION +ASSEVERATIONS +ASSEVERATIVE +ASSHOLE +ASSHOLES +ASSIDUITIES +ASSIDUITY +ASSIDUOUS +ASSIDUOUSLY +ASSIDUOUSNESS +ASSIDUOUSNESSES +ASSIGN +ASSIGNABILITIES +ASSIGNABILITY +ASSIGNABLE +ASSIGNAT +ASSIGNATION +ASSIGNATIONS +ASSIGNATS +ASSIGNED +ASSIGNEE +ASSIGNEES +ASSIGNER +ASSIGNERS +ASSIGNING +ASSIGNMENT +ASSIGNMENTS +ASSIGNOR +ASSIGNORS +ASSIGNS +ASSIMILABILITY +ASSIMILABLE +ASSIMILATE +ASSIMILATED +ASSIMILATES +ASSIMILATING +ASSIMILATION +ASSIMILATIONISM +ASSIMILATIONIST +ASSIMILATIONS +ASSIMILATIVE +ASSIMILATOR +ASSIMILATORS +ASSIMILATORY +ASSIST +ASSISTANCE +ASSISTANCES +ASSISTANT +ASSISTANTS +ASSISTANTSHIP +ASSISTANTSHIPS +ASSISTED +ASSISTER +ASSISTERS +ASSISTING +ASSISTIVE +ASSISTOR +ASSISTORS +ASSISTS +ASSIZE +ASSIZES +ASSLIKE +ASSOCIATE +ASSOCIATED +ASSOCIATES +ASSOCIATESHIP +ASSOCIATESHIPS +ASSOCIATING +ASSOCIATION +ASSOCIATIONAL +ASSOCIATIONISM +ASSOCIATIONISMS +ASSOCIATIONIST +ASSOCIATIONISTS +ASSOCIATIONS +ASSOCIATIVE +ASSOCIATIVELY +ASSOCIATIVITIES +ASSOCIATIVITY +ASSOIL +ASSOILED +ASSOILING +ASSOILMENT +ASSOILMENTS +ASSOILS +ASSONANCE +ASSONANCES +ASSONANT +ASSONANTAL +ASSONANTS +ASSORT +ASSORTATIVE +ASSORTATIVELY +ASSORTED +ASSORTER +ASSORTERS +ASSORTING +ASSORTMENT +ASSORTMENTS +ASSORTS +ASSUAGE +ASSUAGED +ASSUAGEMENT +ASSUAGEMENTS +ASSUAGER +ASSUAGERS +ASSUAGES +ASSUAGING +ASSUASIVE +ASSUMABILITIES +ASSUMABILITY +ASSUMABLE +ASSUMABLY +ASSUME +ASSUMED +ASSUMEDLY +ASSUMER +ASSUMERS +ASSUMES +ASSUMING +ASSUMPSIT +ASSUMPSITS +ASSUMPTION +ASSUMPTIONS +ASSUMPTIVE +ASSURABLE +ASSURANCE +ASSURANCES +ASSURE +ASSURED +ASSUREDLY +ASSUREDNESS +ASSUREDNESSES +ASSUREDS +ASSURER +ASSURERS +ASSURES +ASSURGENT +ASSURING +ASSUROR +ASSURORS +ASSWAGE +ASSWAGED +ASSWAGES +ASSWAGING +ASTARBOARD +ASTASIA +ASTASIAS +ASTATIC +ASTATINE +ASTATINES +ASTER +ASTERIA +ASTERIAS +ASTERIATED +ASTERISK +ASTERISKED +ASTERISKING +ASTERISKLESS +ASTERISKS +ASTERISM +ASTERISMS +ASTERN +ASTERNAL +ASTEROID +ASTEROIDAL +ASTEROIDS +ASTERS +ASTHENIA +ASTHENIAS +ASTHENIC +ASTHENICS +ASTHENIES +ASTHENOSPHERE +ASTHENOSPHERES +ASTHENOSPHERIC +ASTHENY +ASTHMA +ASTHMAS +ASTHMATIC +ASTHMATICALLY +ASTHMATICS +ASTIGMATIC +ASTIGMATICS +ASTIGMATISM +ASTIGMATISMS +ASTIGMIA +ASTIGMIAS +ASTILBE +ASTILBES +ASTIR +ASTOMATAL +ASTOMOUS +ASTONIED +ASTONIES +ASTONISH +ASTONISHED +ASTONISHES +ASTONISHING +ASTONISHINGLY +ASTONISHMENT +ASTONISHMENTS +ASTONY +ASTONYING +ASTOUND +ASTOUNDED +ASTOUNDING +ASTOUNDINGLY +ASTOUNDS +ASTRACHAN +ASTRACHANS +ASTRADDLE +ASTRAGAL +ASTRAGALI +ASTRAGALS +ASTRAGALUS +ASTRAKHAN +ASTRAKHANS +ASTRAL +ASTRALLY +ASTRALS +ASTRAY +ASTRICT +ASTRICTED +ASTRICTING +ASTRICTS +ASTRIDE +ASTRINGE +ASTRINGED +ASTRINGENCIES +ASTRINGENCY +ASTRINGENT +ASTRINGENTLY +ASTRINGENTS +ASTRINGES +ASTRINGING +ASTROBIOLOGIES +ASTROBIOLOGIST +ASTROBIOLOGISTS +ASTROBIOLOGY +ASTROCYTE +ASTROCYTES +ASTROCYTIC +ASTROCYTOMA +ASTROCYTOMAS +ASTROCYTOMATA +ASTRODOME +ASTRODOMES +ASTROLABE +ASTROLABES +ASTROLOGER +ASTROLOGERS +ASTROLOGICAL +ASTROLOGICALLY +ASTROLOGIES +ASTROLOGY +ASTROMETRIC +ASTROMETRIES +ASTROMETRY +ASTRONAUT +ASTRONAUTIC +ASTRONAUTICAL +ASTRONAUTICALLY +ASTRONAUTICS +ASTRONAUTS +ASTRONOMER +ASTRONOMERS +ASTRONOMIC +ASTRONOMICAL +ASTRONOMICALLY +ASTRONOMIES +ASTRONOMY +ASTROPHOTOGRAPH +ASTROPHYSICAL +ASTROPHYSICALLY +ASTROPHYSICIST +ASTROPHYSICISTS +ASTROPHYSICS +ASTUTE +ASTUTELY +ASTUTENESS +ASTUTENESSES +ASTYLAR +ASUNDER +ASWARM +ASWIRL +ASWOON +ASYLA +ASYLLABIC +ASYLUM +ASYLUMS +ASYMMETRIC +ASYMMETRICAL +ASYMMETRICALLY +ASYMMETRIES +ASYMMETRY +ASYMPTOMATIC +ASYMPTOTE +ASYMPTOTES +ASYMPTOTIC +ASYMPTOTICALLY +ASYNAPSES +ASYNAPSIS +ASYNCHRONIES +ASYNCHRONISM +ASYNCHRONISMS +ASYNCHRONOUS +ASYNCHRONOUSLY +ASYNCHRONY +ASYNDETA +ASYNDETIC +ASYNDETICALLY +ASYNDETON +ASYNDETONS +AT +ATABAL +ATABALS +ATABRINE +ATABRINES +ATACTIC +ATAGHAN +ATAGHANS +ATALAYA +ATALAYAS +ATAMAN +ATAMANS +ATAMASCO +ATAMASCOS +ATAP +ATAPS +ATARACTIC +ATARACTICS +ATARAXIA +ATARAXIAS +ATARAXIC +ATARAXICS +ATARAXIES +ATARAXY +ATAVIC +ATAVISM +ATAVISMS +ATAVIST +ATAVISTIC +ATAVISTICALLY +ATAVISTS +ATAXIA +ATAXIAS +ATAXIC +ATAXICS +ATAXIES +ATAXY +ATE +ATECHNIC +ATELECTASES +ATELECTASIS +ATELIC +ATELIER +ATELIERS +ATEMOYA +ATEMOYAS +ATEMPORAL +ATENOLOL +ATENOLOLS +ATES +ATHANASIES +ATHANASY +ATHEISM +ATHEISMS +ATHEIST +ATHEISTIC +ATHEISTICAL +ATHEISTICALLY +ATHEISTS +ATHELING +ATHELINGS +ATHENAEUM +ATHENAEUMS +ATHENEUM +ATHENEUMS +ATHEORETICAL +ATHEROGENESES +ATHEROGENESIS +ATHEROGENIC +ATHEROMA +ATHEROMAS +ATHEROMATA +ATHEROMATOUS +ATHEROSCLEROSES +ATHEROSCLEROSIS +ATHEROSCLEROTIC +ATHETOID +ATHETOSES +ATHETOSIS +ATHETOTIC +ATHIRST +ATHLETE +ATHLETES +ATHLETIC +ATHLETICALLY +ATHLETICISM +ATHLETICISMS +ATHLETICS +ATHODYD +ATHODYDS +ATHROCYTE +ATHROCYTES +ATHWART +ATHWARTSHIP +ATHWARTSHIPS +ATILT +ATINGLE +ATLANTES +ATLAS +ATLASES +ATLATL +ATLATLS +ATMA +ATMAN +ATMANS +ATMAS +ATMOMETER +ATMOMETERS +ATMOSPHERE +ATMOSPHERED +ATMOSPHERES +ATMOSPHERIC +ATMOSPHERICALLY +ATMOSPHERICS +ATOLL +ATOLLS +ATOM +ATOMIC +ATOMICAL +ATOMICALLY +ATOMICITIES +ATOMICITY +ATOMICS +ATOMIES +ATOMISE +ATOMISED +ATOMISER +ATOMISERS +ATOMISES +ATOMISING +ATOMISM +ATOMISMS +ATOMIST +ATOMISTIC +ATOMISTICALLY +ATOMISTS +ATOMIZATION +ATOMIZATIONS +ATOMIZE +ATOMIZED +ATOMIZER +ATOMIZERS +ATOMIZES +ATOMIZING +ATOMS +ATOMY +ATONABLE +ATONAL +ATONALISM +ATONALISMS +ATONALIST +ATONALISTS +ATONALITIES +ATONALITY +ATONALLY +ATONE +ATONEABLE +ATONED +ATONEMENT +ATONEMENTS +ATONER +ATONERS +ATONES +ATONIA +ATONIAS +ATONIC +ATONICITIES +ATONICITY +ATONICS +ATONIES +ATONING +ATONINGLY +ATONY +ATOP +ATOPIC +ATOPIES +ATOPY +ATRABILIOUS +ATRABILIOUSNESS +ATRAZINE +ATRAZINES +ATREMBLE +ATRESIA +ATRESIAS +ATRESIC +ATRETIC +ATRIA +ATRIAL +ATRIP +ATRIUM +ATRIUMS +ATROCIOUS +ATROCIOUSLY +ATROCIOUSNESS +ATROCIOUSNESSES +ATROCITIES +ATROCITY +ATROPHIA +ATROPHIAS +ATROPHIC +ATROPHIED +ATROPHIES +ATROPHY +ATROPHYING +ATROPIN +ATROPINE +ATROPINES +ATROPINS +ATROPISM +ATROPISMS +ATT +ATTABOY +ATTACH +ATTACHABLE +ATTACHE +ATTACHED +ATTACHER +ATTACHERS +ATTACHES +ATTACHING +ATTACHMENT +ATTACHMENTS +ATTACK +ATTACKED +ATTACKER +ATTACKERS +ATTACKING +ATTACKMAN +ATTACKMEN +ATTACKS +ATTAGIRL +ATTAIN +ATTAINABILITIES +ATTAINABILITY +ATTAINABLE +ATTAINDER +ATTAINDERS +ATTAINED +ATTAINER +ATTAINERS +ATTAINING +ATTAINMENT +ATTAINMENTS +ATTAINS +ATTAINT +ATTAINTED +ATTAINTING +ATTAINTS +ATTAR +ATTARS +ATTEMPER +ATTEMPERED +ATTEMPERING +ATTEMPERS +ATTEMPT +ATTEMPTABLE +ATTEMPTED +ATTEMPTER +ATTEMPTERS +ATTEMPTING +ATTEMPTS +ATTEND +ATTENDANCE +ATTENDANCES +ATTENDANT +ATTENDANTS +ATTENDED +ATTENDEE +ATTENDEES +ATTENDER +ATTENDERS +ATTENDING +ATTENDINGS +ATTENDS +ATTENT +ATTENTION +ATTENTIONAL +ATTENTIONS +ATTENTIVE +ATTENTIVELY +ATTENTIVENESS +ATTENTIVENESSES +ATTENUATE +ATTENUATED +ATTENUATES +ATTENUATING +ATTENUATION +ATTENUATIONS +ATTENUATOR +ATTENUATORS +ATTEST +ATTESTANT +ATTESTANTS +ATTESTATION +ATTESTATIONS +ATTESTED +ATTESTER +ATTESTERS +ATTESTING +ATTESTOR +ATTESTORS +ATTESTS +ATTIC +ATTICISM +ATTICISMS +ATTICIST +ATTICISTS +ATTICIZE +ATTICIZED +ATTICIZES +ATTICIZING +ATTICS +ATTIRE +ATTIRED +ATTIRES +ATTIRING +ATTITUDE +ATTITUDES +ATTITUDINAL +ATTITUDINALLY +ATTITUDINISE +ATTITUDINISED +ATTITUDINISES +ATTITUDINISING +ATTITUDINIZE +ATTITUDINIZED +ATTITUDINIZES +ATTITUDINIZING +ATTORN +ATTORNED +ATTORNEY +ATTORNEYS +ATTORNEYSHIP +ATTORNEYSHIPS +ATTORNING +ATTORNMENT +ATTORNMENTS +ATTORNS +ATTRACT +ATTRACTANCE +ATTRACTANCES +ATTRACTANCIES +ATTRACTANCY +ATTRACTANT +ATTRACTANTS +ATTRACTED +ATTRACTER +ATTRACTERS +ATTRACTING +ATTRACTION +ATTRACTIONS +ATTRACTIVE +ATTRACTIVELY +ATTRACTIVENESS +ATTRACTOR +ATTRACTORS +ATTRACTS +ATTRIBUTABLE +ATTRIBUTE +ATTRIBUTED +ATTRIBUTES +ATTRIBUTING +ATTRIBUTION +ATTRIBUTIONAL +ATTRIBUTIONS +ATTRIBUTIVE +ATTRIBUTIVELY +ATTRIBUTIVES +ATTRIT +ATTRITE +ATTRITED +ATTRITES +ATTRITING +ATTRITION +ATTRITIONAL +ATTRITIONS +ATTRITIVE +ATTRITS +ATTRITTED +ATTRITTING +ATTUNE +ATTUNED +ATTUNEMENT +ATTUNEMENTS +ATTUNES +ATTUNING +ATWAIN +ATWEEN +ATWITTER +ATYPIC +ATYPICAL +ATYPICALITIES +ATYPICALITY +ATYPICALLY +AUBADE +AUBADES +AUBERGE +AUBERGES +AUBERGINE +AUBERGINES +AUBRETIA +AUBRETIAS +AUBRIETA +AUBRIETAS +AUBRIETIA +AUBRIETIAS +AUBURN +AUBURNS +AUCTION +AUCTIONED +AUCTIONEER +AUCTIONEERS +AUCTIONING +AUCTIONS +AUCTORIAL +AUCUBA +AUCUBAS +AUDACIOUS +AUDACIOUSLY +AUDACIOUSNESS +AUDACIOUSNESSES +AUDACITIES +AUDACITY +AUDAD +AUDADS +AUDIAL +AUDIBILITIES +AUDIBILITY +AUDIBLE +AUDIBLED +AUDIBLES +AUDIBLING +AUDIBLY +AUDIENCE +AUDIENCES +AUDIENT +AUDIENTS +AUDILE +AUDILES +AUDING +AUDINGS +AUDIO +AUDIOBOOK +AUDIOBOOKS +AUDIOCASSETTE +AUDIOCASSETTES +AUDIOGENIC +AUDIOGRAM +AUDIOGRAMS +AUDIOLOGIC +AUDIOLOGICAL +AUDIOLOGIES +AUDIOLOGIST +AUDIOLOGISTS +AUDIOLOGY +AUDIOMETER +AUDIOMETERS +AUDIOMETRIC +AUDIOMETRIES +AUDIOMETRY +AUDIOPHILE +AUDIOPHILES +AUDIOS +AUDIOTAPE +AUDIOTAPED +AUDIOTAPES +AUDIOTAPING +AUDIOVISUAL +AUDIOVISUALS +AUDIPHONE +AUDIPHONES +AUDIT +AUDITABLE +AUDITED +AUDITEE +AUDITEES +AUDITING +AUDITION +AUDITIONED +AUDITIONING +AUDITIONS +AUDITIVE +AUDITIVES +AUDITOR +AUDITORIA +AUDITORIES +AUDITORILY +AUDITORIUM +AUDITORIUMS +AUDITORS +AUDITORY +AUDITS +AUGEND +AUGENDS +AUGER +AUGERS +AUGHT +AUGHTS +AUGITE +AUGITES +AUGITIC +AUGMENT +AUGMENTATION +AUGMENTATIONS +AUGMENTATIVE +AUGMENTATIVES +AUGMENTED +AUGMENTER +AUGMENTERS +AUGMENTING +AUGMENTOR +AUGMENTORS +AUGMENTS +AUGUR +AUGURAL +AUGURED +AUGURER +AUGURERS +AUGURIES +AUGURING +AUGURS +AUGURY +AUGUST +AUGUSTER +AUGUSTEST +AUGUSTLY +AUGUSTNESS +AUGUSTNESSES +AUK +AUKLET +AUKLETS +AUKS +AULD +AULDER +AULDEST +AULIC +AUNT +AUNTHOOD +AUNTHOODS +AUNTIE +AUNTIES +AUNTLIER +AUNTLIEST +AUNTLIKE +AUNTLY +AUNTS +AUNTY +AURA +AURAE +AURAL +AURALITIES +AURALITY +AURALLY +AURAR +AURAS +AURATE +AURATED +AUREATE +AUREATELY +AUREI +AUREOLA +AUREOLAE +AUREOLAS +AUREOLE +AUREOLED +AUREOLES +AUREOLING +AURES +AUREUS +AURIC +AURICLE +AURICLED +AURICLES +AURICULA +AURICULAE +AURICULAR +AURICULARS +AURICULAS +AURICULATE +AURIFEROUS +AURIFORM +AURIS +AURIST +AURISTS +AUROCHS +AUROCHSES +AURORA +AURORAE +AURORAL +AURORALLY +AURORAS +AUROREAN +AUROUS +AURUM +AURUMS +AUSCULTATE +AUSCULTATED +AUSCULTATES +AUSCULTATING +AUSCULTATION +AUSCULTATIONS +AUSCULTATORY +AUSFORM +AUSFORMED +AUSFORMING +AUSFORMS +AUSLANDER +AUSLANDERS +AUSPEX +AUSPICATE +AUSPICATED +AUSPICATES +AUSPICATING +AUSPICE +AUSPICES +AUSPICIOUS +AUSPICIOUSLY +AUSPICIOUSNESS +AUSTENITE +AUSTENITES +AUSTENITIC +AUSTERE +AUSTERELY +AUSTERENESS +AUSTERENESSES +AUSTERER +AUSTEREST +AUSTERITIES +AUSTERITY +AUSTRAL +AUSTRALES +AUSTRALS +AUSUBO +AUSUBOS +AUTACOID +AUTACOIDS +AUTARCH +AUTARCHIC +AUTARCHICAL +AUTARCHIES +AUTARCHS +AUTARCHY +AUTARKIC +AUTARKICAL +AUTARKIES +AUTARKIST +AUTARKISTS +AUTARKY +AUTECIOUS +AUTECISM +AUTECISMS +AUTECOLOGICAL +AUTECOLOGIES +AUTECOLOGY +AUTEUR +AUTEURISM +AUTEURISMS +AUTEURIST +AUTEURISTS +AUTEURS +AUTHENTIC +AUTHENTICALLY +AUTHENTICATE +AUTHENTICATED +AUTHENTICATES +AUTHENTICATING +AUTHENTICATION +AUTHENTICATIONS +AUTHENTICATOR +AUTHENTICATORS +AUTHENTICITIES +AUTHENTICITY +AUTHOR +AUTHORED +AUTHORESS +AUTHORESSES +AUTHORIAL +AUTHORING +AUTHORISE +AUTHORISED +AUTHORISES +AUTHORISING +AUTHORITARIAN +AUTHORITARIANS +AUTHORITATIVE +AUTHORITATIVELY +AUTHORITIES +AUTHORITY +AUTHORIZATION +AUTHORIZATIONS +AUTHORIZE +AUTHORIZED +AUTHORIZER +AUTHORIZERS +AUTHORIZES +AUTHORIZING +AUTHORS +AUTHORSHIP +AUTHORSHIPS +AUTISM +AUTISMS +AUTIST +AUTISTIC +AUTISTICALLY +AUTISTICS +AUTISTS +AUTO +AUTOANTIBODIES +AUTOANTIBODY +AUTOBAHN +AUTOBAHNEN +AUTOBAHNS +AUTOBIOGRAPHER +AUTOBIOGRAPHERS +AUTOBIOGRAPHIC +AUTOBIOGRAPHIES +AUTOBIOGRAPHY +AUTOBUS +AUTOBUSES +AUTOBUSSES +AUTOCADE +AUTOCADES +AUTOCATALYSES +AUTOCATALYSIS +AUTOCATALYTIC +AUTOCEPHALIES +AUTOCEPHALOUS +AUTOCEPHALY +AUTOCHTHON +AUTOCHTHONES +AUTOCHTHONOUS +AUTOCHTHONOUSLY +AUTOCHTHONS +AUTOCLAVE +AUTOCLAVED +AUTOCLAVES +AUTOCLAVING +AUTOCOID +AUTOCOIDS +AUTOCORRELATION +AUTOCRACIES +AUTOCRACY +AUTOCRAT +AUTOCRATIC +AUTOCRATICAL +AUTOCRATICALLY +AUTOCRATS +AUTOCRINE +AUTOCROSS +AUTOCROSSES +AUTODIDACT +AUTODIDACTIC +AUTODIDACTS +AUTODYNE +AUTODYNES +AUTOECIOUS +AUTOECIOUSLY +AUTOECISM +AUTOECISMS +AUTOED +AUTOEROTIC +AUTOEROTICISM +AUTOEROTICISMS +AUTOEROTISM +AUTOEROTISMS +AUTOFOCUS +AUTOFOCUSES +AUTOGAMIC +AUTOGAMIES +AUTOGAMOUS +AUTOGAMY +AUTOGENIC +AUTOGENIES +AUTOGENOUS +AUTOGENOUSLY +AUTOGENY +AUTOGIRO +AUTOGIROS +AUTOGRAFT +AUTOGRAFTED +AUTOGRAFTING +AUTOGRAFTS +AUTOGRAPH +AUTOGRAPHED +AUTOGRAPHIC +AUTOGRAPHICALLY +AUTOGRAPHIES +AUTOGRAPHING +AUTOGRAPHS +AUTOGRAPHY +AUTOGYRO +AUTOGYROS +AUTOHARP +AUTOHARPS +AUTOHYPNOSES +AUTOHYPNOSIS +AUTOHYPNOTIC +AUTOIMMUNE +AUTOIMMUNITIES +AUTOIMMUNITY +AUTOINFECTION +AUTOINFECTIONS +AUTOING +AUTOLOADING +AUTOLOGOUS +AUTOLYSATE +AUTOLYSATES +AUTOLYSE +AUTOLYSED +AUTOLYSES +AUTOLYSIN +AUTOLYSING +AUTOLYSINS +AUTOLYSIS +AUTOLYTIC +AUTOLYZATE +AUTOLYZATES +AUTOLYZE +AUTOLYZED +AUTOLYZES +AUTOLYZING +AUTOMAKER +AUTOMAKERS +AUTOMAN +AUTOMAT +AUTOMATA +AUTOMATABLE +AUTOMATE +AUTOMATED +AUTOMATES +AUTOMATIC +AUTOMATICALLY +AUTOMATICITIES +AUTOMATICITY +AUTOMATICS +AUTOMATING +AUTOMATION +AUTOMATIONS +AUTOMATISM +AUTOMATISMS +AUTOMATIST +AUTOMATISTS +AUTOMATIZATION +AUTOMATIZATIONS +AUTOMATIZE +AUTOMATIZED +AUTOMATIZES +AUTOMATIZING +AUTOMATON +AUTOMATONS +AUTOMATS +AUTOMEN +AUTOMOBILE +AUTOMOBILED +AUTOMOBILES +AUTOMOBILING +AUTOMOBILIST +AUTOMOBILISTS +AUTOMOBILITIES +AUTOMOBILITY +AUTOMORPHISM +AUTOMORPHISMS +AUTOMOTIVE +AUTONOMIC +AUTONOMICALLY +AUTONOMIES +AUTONOMIST +AUTONOMISTS +AUTONOMOUS +AUTONOMOUSLY +AUTONOMY +AUTONYM +AUTONYMS +AUTOPEN +AUTOPENS +AUTOPHAGIES +AUTOPHAGY +AUTOPHYTE +AUTOPHYTES +AUTOPILOT +AUTOPILOTS +AUTOPOLYPLOID +AUTOPOLYPLOIDS +AUTOPOLYPLOIDY +AUTOPSIC +AUTOPSIED +AUTOPSIES +AUTOPSIST +AUTOPSISTS +AUTOPSY +AUTOPSYING +AUTORADIOGRAM +AUTORADIOGRAMS +AUTORADIOGRAPH +AUTORADIOGRAPHS +AUTORADIOGRAPHY +AUTOROTATE +AUTOROTATED +AUTOROTATES +AUTOROTATING +AUTOROTATION +AUTOROTATIONS +AUTOROUTE +AUTOROUTES +AUTOS +AUTOSEXING +AUTOSOMAL +AUTOSOMALLY +AUTOSOME +AUTOSOMES +AUTOSTRADA +AUTOSTRADAS +AUTOSTRADE +AUTOSUGGEST +AUTOSUGGESTED +AUTOSUGGESTING +AUTOSUGGESTION +AUTOSUGGESTIONS +AUTOSUGGESTS +AUTOTELIC +AUTOTETRAPLOID +AUTOTETRAPLOIDS +AUTOTETRAPLOIDY +AUTOTOMIC +AUTOTOMIES +AUTOTOMIZE +AUTOTOMIZED +AUTOTOMIZES +AUTOTOMIZING +AUTOTOMOUS +AUTOTOMY +AUTOTOXIC +AUTOTOXIN +AUTOTOXINS +AUTOTRANSFORMER +AUTOTRANSFUSION +AUTOTROPH +AUTOTROPHIC +AUTOTROPHICALLY +AUTOTROPHIES +AUTOTROPHS +AUTOTROPHY +AUTOTYPE +AUTOTYPES +AUTOTYPIES +AUTOTYPY +AUTOWORKER +AUTOWORKERS +AUTOXIDATION +AUTOXIDATIONS +AUTUMN +AUTUMNAL +AUTUMNALLY +AUTUMNS +AUTUNITE +AUTUNITES +AUXESES +AUXESIS +AUXETIC +AUXETICS +AUXILIARIES +AUXILIARY +AUXIN +AUXINIC +AUXINS +AUXOTROPH +AUXOTROPHIC +AUXOTROPHIES +AUXOTROPHS +AUXOTROPHY +AVA +AVADAVAT +AVADAVATS +AVAIL +AVAILABILITIES +AVAILABILITY +AVAILABLE +AVAILABLENESS +AVAILABLENESSES +AVAILABLY +AVAILED +AVAILING +AVAILS +AVALANCHE +AVALANCHED +AVALANCHES +AVALANCHING +AVANT +AVARICE +AVARICES +AVARICIOUS +AVARICIOUSLY +AVARICIOUSNESS +AVASCULAR +AVASCULARITIES +AVASCULARITY +AVAST +AVATAR +AVATARS +AVAUNT +AVE +AVELLAN +AVELLANE +AVENGE +AVENGED +AVENGEFUL +AVENGER +AVENGERS +AVENGES +AVENGING +AVENS +AVENSES +AVENTAIL +AVENTAILS +AVENTURIN +AVENTURINE +AVENTURINES +AVENTURINS +AVENUE +AVENUES +AVER +AVERAGE +AVERAGED +AVERAGELY +AVERAGENESS +AVERAGENESSES +AVERAGES +AVERAGING +AVERMENT +AVERMENTS +AVERRABLE +AVERRED +AVERRING +AVERS +AVERSE +AVERSELY +AVERSENESS +AVERSENESSES +AVERSION +AVERSIONS +AVERSIVE +AVERSIVELY +AVERSIVENESS +AVERSIVENESSES +AVERSIVES +AVERT +AVERTABLE +AVERTED +AVERTER +AVERTERS +AVERTIBLE +AVERTING +AVERTS +AVES +AVGAS +AVGASES +AVGASSES +AVGOLEMONO +AVGOLEMONOS +AVIAN +AVIANIZE +AVIANIZED +AVIANIZES +AVIANIZING +AVIANS +AVIARIES +AVIARIST +AVIARISTS +AVIARY +AVIATE +AVIATED +AVIATES +AVIATIC +AVIATING +AVIATION +AVIATIONS +AVIATOR +AVIATORS +AVIATRESS +AVIATRESSES +AVIATRICE +AVIATRICES +AVIATRIX +AVIATRIXES +AVICULAR +AVICULTURE +AVICULTURES +AVICULTURIST +AVICULTURISTS +AVID +AVIDIN +AVIDINS +AVIDITIES +AVIDITY +AVIDLY +AVIDNESS +AVIDNESSES +AVIFAUNA +AVIFAUNAE +AVIFAUNAL +AVIFAUNAS +AVIGATOR +AVIGATORS +AVION +AVIONIC +AVIONICS +AVIONS +AVIRULENT +AVISO +AVISOS +AVITAMINOSES +AVITAMINOSIS +AVITAMINOTIC +AVO +AVOCADO +AVOCADOES +AVOCADOS +AVOCATION +AVOCATIONAL +AVOCATIONALLY +AVOCATIONS +AVOCET +AVOCETS +AVODIRE +AVODIRES +AVOID +AVOIDABLE +AVOIDABLY +AVOIDANCE +AVOIDANCES +AVOIDED +AVOIDER +AVOIDERS +AVOIDING +AVOIDS +AVOIRDUPOIS +AVOS +AVOSET +AVOSETS +AVOUCH +AVOUCHED +AVOUCHER +AVOUCHERS +AVOUCHES +AVOUCHING +AVOUCHMENT +AVOUCHMENTS +AVOW +AVOWABLE +AVOWABLY +AVOWAL +AVOWALS +AVOWED +AVOWEDLY +AVOWER +AVOWERS +AVOWING +AVOWS +AVULSE +AVULSED +AVULSES +AVULSING +AVULSION +AVULSIONS +AVUNCULAR +AVUNCULARITIES +AVUNCULARITY +AVUNCULARLY +AW +AWA +AWAIT +AWAITED +AWAITER +AWAITERS +AWAITING +AWAITS +AWAKE +AWAKED +AWAKEN +AWAKENED +AWAKENER +AWAKENERS +AWAKENING +AWAKENINGS +AWAKENS +AWAKES +AWAKING +AWARD +AWARDABLE +AWARDED +AWARDEE +AWARDEES +AWARDER +AWARDERS +AWARDING +AWARDS +AWARE +AWARENESS +AWARENESSES +AWASH +AWAY +AWAYNESS +AWAYNESSES +AWE +AWEARY +AWEATHER +AWED +AWEE +AWEIGH +AWEING +AWELESS +AWES +AWESOME +AWESOMELY +AWESOMENESS +AWESOMENESSES +AWESTRICKEN +AWESTRUCK +AWFUL +AWFULLER +AWFULLEST +AWFULLY +AWFULNESS +AWFULNESSES +AWHILE +AWHIRL +AWING +AWKWARD +AWKWARDER +AWKWARDEST +AWKWARDLY +AWKWARDNESS +AWKWARDNESSES +AWL +AWLESS +AWLS +AWLWORT +AWLWORTS +AWMOUS +AWN +AWNED +AWNING +AWNINGED +AWNINGS +AWNLESS +AWNS +AWNY +AWOKE +AWOKEN +AWOL +AWOLS +AWRY +AX +AXAL +AXE +AXED +AXEL +AXELS +AXEMAN +AXEMEN +AXENIC +AXENICALLY +AXES +AXIAL +AXIALITIES +AXIALITY +AXIALLY +AXIL +AXILE +AXILLA +AXILLAE +AXILLAR +AXILLARIES +AXILLARS +AXILLARY +AXILLAS +AXILS +AXING +AXIOLOGICAL +AXIOLOGICALLY +AXIOLOGIES +AXIOLOGY +AXIOM +AXIOMATIC +AXIOMATICALLY +AXIOMATISATION +AXIOMATISATIONS +AXIOMATIZATION +AXIOMATIZATIONS +AXIOMATIZE +AXIOMATIZED +AXIOMATIZES +AXIOMATIZING +AXIOMS +AXION +AXIONS +AXIS +AXISED +AXISES +AXISYMMETRIC +AXISYMMETRICAL +AXISYMMETRIES +AXISYMMETRY +AXITE +AXITES +AXLE +AXLED +AXLES +AXLETREE +AXLETREES +AXLIKE +AXMAN +AXMEN +AXOLOTL +AXOLOTLS +AXON +AXONAL +AXONE +AXONEMAL +AXONEME +AXONEMES +AXONES +AXONIC +AXONOMETRIC +AXONS +AXOPLASM +AXOPLASMIC +AXOPLASMS +AXSEED +AXSEEDS +AY +AYAH +AYAHS +AYAHUASCA +AYAHUASCAS +AYATOLLAH +AYATOLLAHS +AYE +AYES +AYIN +AYINS +AYS +AYURVEDA +AYURVEDAS +AYURVEDIC +AYURVEDICS +AZALEA +AZALEAS +AZAN +AZANS +AZATHIOPRINE +AZATHIOPRINES +AZEDARACH +AZEDARACHS +AZEOTROPE +AZEOTROPES +AZEOTROPIES +AZEOTROPY +AZIDE +AZIDES +AZIDO +AZIDOTHYMIDINE +AZIDOTHYMIDINES +AZIMUTH +AZIMUTHAL +AZIMUTHALLY +AZIMUTHS +AZINE +AZINES +AZLON +AZLONS +AZO +AZOIC +AZOLE +AZOLES +AZON +AZONAL +AZONIC +AZONS +AZOOSPERMIA +AZOOSPERMIAS +AZOTE +AZOTED +AZOTEMIA +AZOTEMIAS +AZOTEMIC +AZOTES +AZOTH +AZOTHS +AZOTIC +AZOTISE +AZOTISED +AZOTISES +AZOTISING +AZOTIZE +AZOTIZED +AZOTIZES +AZOTIZING +AZOTOBACTER +AZOTOBACTERS +AZOTURIA +AZOTURIAS +AZUKI +AZUKIS +AZULEJO +AZULEJOS +AZURE +AZURES +AZURITE +AZURITES +AZYGOS +AZYGOSES +AZYGOUS +BA +BAA +BAAED +BAAING +BAAL +BAALIM +BAALISM +BAALISMS +BAALS +BAAS +BAASES +BAASKAAP +BAASKAAPS +BAASKAP +BAASKAPS +BAASSKAP +BAASSKAPS +BABA +BABAS +BABASSU +BABASSUS +BABBITRIES +BABBITRY +BABBITT +BABBITTED +BABBITTING +BABBITTRIES +BABBITTRY +BABBITTS +BABBLE +BABBLED +BABBLEMENT +BABBLEMENTS +BABBLER +BABBLERS +BABBLES +BABBLING +BABBLINGS +BABE +BABEL +BABELS +BABES +BABESIA +BABESIAS +BABESIOSES +BABESIOSIS +BABICHE +BABICHES +BABIED +BABIER +BABIES +BABIEST +BABIRUSA +BABIRUSAS +BABIRUSSA +BABIRUSSAS +BABKA +BABKAS +BABOO +BABOOL +BABOOLS +BABOON +BABOONERIES +BABOONERY +BABOONISH +BABOONS +BABOOS +BABU +BABUL +BABULS +BABUS +BABUSHKA +BABUSHKAS +BABY +BABYDOLL +BABYDOLLS +BABYHOOD +BABYHOODS +BABYING +BABYISH +BABYISHLY +BABYPROOF +BABYPROOFED +BABYPROOFING +BABYPROOFS +BABYSAT +BABYSIT +BABYSITS +BABYSITTING +BACALAO +BACALAOS +BACCA +BACCAE +BACCALAUREATE +BACCALAUREATES +BACCARA +BACCARAS +BACCARAT +BACCARATS +BACCATE +BACCATED +BACCHANAL +BACCHANALIA +BACCHANALIAN +BACCHANALIANS +BACCHANALS +BACCHANT +BACCHANTE +BACCHANTES +BACCHANTS +BACCHIC +BACCHII +BACCHIUS +BACCIFORM +BACH +BACHED +BACHELOR +BACHELORDOM +BACHELORDOMS +BACHELORETTE +BACHELORETTES +BACHELORHOOD +BACHELORHOODS +BACHELORS +BACHES +BACHING +BACILLAR +BACILLARY +BACILLI +BACILLUS +BACITRACIN +BACITRACINS +BACK +BACKACHE +BACKACHES +BACKBEAT +BACKBEATS +BACKBENCH +BACKBENCHER +BACKBENCHERS +BACKBENCHES +BACKBEND +BACKBENDS +BACKBIT +BACKBITE +BACKBITER +BACKBITERS +BACKBITES +BACKBITING +BACKBITINGS +BACKBITTEN +BACKBLOCK +BACKBLOCKS +BACKBOARD +BACKBOARDS +BACKBONE +BACKBONED +BACKBONES +BACKBREAKER +BACKBREAKERS +BACKBREAKING +BACKCAST +BACKCASTS +BACKCHAT +BACKCHATS +BACKCHECK +BACKCHECKED +BACKCHECKING +BACKCHECKS +BACKCLOTH +BACKCLOTHS +BACKCOUNTRIES +BACKCOUNTRY +BACKCOURT +BACKCOURTMAN +BACKCOURTMEN +BACKCOURTS +BACKCROSS +BACKCROSSED +BACKCROSSES +BACKCROSSING +BACKDATE +BACKDATED +BACKDATES +BACKDATING +BACKDOOR +BACKDRAFT +BACKDRAFTS +BACKDROP +BACKDROPPED +BACKDROPPING +BACKDROPS +BACKDROPT +BACKED +BACKER +BACKERS +BACKFIELD +BACKFIELDS +BACKFILL +BACKFILLED +BACKFILLING +BACKFILLS +BACKFIRE +BACKFIRED +BACKFIRES +BACKFIRING +BACKFIT +BACKFITS +BACKFITTED +BACKFITTING +BACKFLIP +BACKFLIPPED +BACKFLIPPING +BACKFLIPS +BACKFLOW +BACKFLOWS +BACKGAMMON +BACKGAMMONS +BACKGROUND +BACKGROUNDED +BACKGROUNDER +BACKGROUNDERS +BACKGROUNDING +BACKGROUNDS +BACKHAND +BACKHANDED +BACKHANDEDLY +BACKHANDER +BACKHANDERS +BACKHANDING +BACKHANDS +BACKHAUL +BACKHAULED +BACKHAULING +BACKHAULS +BACKHOE +BACKHOED +BACKHOEING +BACKHOES +BACKHOUSE +BACKHOUSES +BACKING +BACKINGS +BACKLAND +BACKLANDS +BACKLASH +BACKLASHED +BACKLASHER +BACKLASHERS +BACKLASHES +BACKLASHING +BACKLESS +BACKLIGHT +BACKLIGHTED +BACKLIGHTING +BACKLIGHTS +BACKLIST +BACKLISTED +BACKLISTING +BACKLISTS +BACKLIT +BACKLOAD +BACKLOADED +BACKLOADING +BACKLOADS +BACKLOG +BACKLOGGED +BACKLOGGING +BACKLOGS +BACKMOST +BACKOUT +BACKOUTS +BACKPACK +BACKPACKED +BACKPACKER +BACKPACKERS +BACKPACKING +BACKPACKS +BACKPEDAL +BACKPEDALED +BACKPEDALING +BACKPEDALLED +BACKPEDALLING +BACKPEDALS +BACKREST +BACKRESTS +BACKROOM +BACKROOMS +BACKRUSH +BACKRUSHES +BACKS +BACKSAW +BACKSAWS +BACKSCATTER +BACKSCATTERED +BACKSCATTERING +BACKSCATTERINGS +BACKSCATTERS +BACKSEAT +BACKSEATS +BACKSET +BACKSETS +BACKSHORE +BACKSHORES +BACKSIDE +BACKSIDES +BACKSLAP +BACKSLAPPED +BACKSLAPPER +BACKSLAPPERS +BACKSLAPPING +BACKSLAPS +BACKSLASH +BACKSLASHES +BACKSLID +BACKSLIDDEN +BACKSLIDE +BACKSLIDER +BACKSLIDERS +BACKSLIDES +BACKSLIDING +BACKSPACE +BACKSPACED +BACKSPACES +BACKSPACING +BACKSPIN +BACKSPINS +BACKSPLASH +BACKSPLASHES +BACKSTAB +BACKSTABBED +BACKSTABBER +BACKSTABBERS +BACKSTABBING +BACKSTABBINGS +BACKSTABS +BACKSTAGE +BACKSTAGES +BACKSTAIR +BACKSTAIRS +BACKSTAMP +BACKSTAMPED +BACKSTAMPING +BACKSTAMPS +BACKSTAY +BACKSTAYS +BACKSTITCH +BACKSTITCHED +BACKSTITCHES +BACKSTITCHING +BACKSTOP +BACKSTOPPED +BACKSTOPPING +BACKSTOPS +BACKSTORIES +BACKSTORY +BACKSTREET +BACKSTREETS +BACKSTRETCH +BACKSTRETCHES +BACKSTROKE +BACKSTROKES +BACKSWEPT +BACKSWING +BACKSWINGS +BACKSWORD +BACKSWORDS +BACKTRACK +BACKTRACKED +BACKTRACKING +BACKTRACKS +BACKUP +BACKUPS +BACKWARD +BACKWARDLY +BACKWARDNESS +BACKWARDNESSES +BACKWARDS +BACKWASH +BACKWASHED +BACKWASHES +BACKWASHING +BACKWATER +BACKWATERS +BACKWOOD +BACKWOODS +BACKWOODSMAN +BACKWOODSMEN +BACKWOODSY +BACKWRAP +BACKWRAPS +BACKYARD +BACKYARDS +BACLOFEN +BACLOFENS +BACON +BACONS +BACTEREMIA +BACTEREMIAS +BACTEREMIC +BACTERIA +BACTERIAL +BACTERIALLY +BACTERIALS +BACTERIAS +BACTERICIDAL +BACTERICIDALLY +BACTERICIDE +BACTERICIDES +BACTERIN +BACTERINS +BACTERIOCIN +BACTERIOCINS +BACTERIOLOGIC +BACTERIOLOGICAL +BACTERIOLOGIES +BACTERIOLOGIST +BACTERIOLOGISTS +BACTERIOLOGY +BACTERIOLYSES +BACTERIOLYSIS +BACTERIOLYTIC +BACTERIOPHAGE +BACTERIOPHAGES +BACTERIOPHAGIES +BACTERIOPHAGY +BACTERIOSTASES +BACTERIOSTASIS +BACTERIOSTAT +BACTERIOSTATIC +BACTERIOSTATS +BACTERIUM +BACTERIURIA +BACTERIURIAS +BACTERIZATION +BACTERIZATIONS +BACTERIZE +BACTERIZED +BACTERIZES +BACTERIZING +BACTEROID +BACTEROIDS +BACULA +BACULINE +BACULUM +BACULUMS +BAD +BADASS +BADASSED +BADASSES +BADDER +BADDEST +BADDIE +BADDIES +BADDY +BADE +BADGE +BADGED +BADGELESS +BADGER +BADGERED +BADGERING +BADGERLY +BADGERS +BADGES +BADGING +BADINAGE +BADINAGED +BADINAGES +BADINAGING +BADLAND +BADLANDS +BADLY +BADMAN +BADMEN +BADMINTON +BADMINTONS +BADMOUTH +BADMOUTHED +BADMOUTHING +BADMOUTHS +BADNESS +BADNESSES +BADS +BAFF +BAFFED +BAFFIES +BAFFING +BAFFLE +BAFFLED +BAFFLEGAB +BAFFLEGABS +BAFFLEMENT +BAFFLEMENTS +BAFFLER +BAFFLERS +BAFFLES +BAFFLING +BAFFLINGLY +BAFFS +BAFFY +BAG +BAGASS +BAGASSE +BAGASSES +BAGATELLE +BAGATELLES +BAGEL +BAGELS +BAGFUL +BAGFULS +BAGGAGE +BAGGAGES +BAGGED +BAGGER +BAGGERS +BAGGIE +BAGGIER +BAGGIES +BAGGIEST +BAGGILY +BAGGINESS +BAGGINESSES +BAGGING +BAGGINGS +BAGGY +BAGHOUSE +BAGHOUSES +BAGLIKE +BAGMAN +BAGMEN +BAGNIO +BAGNIOS +BAGPIPE +BAGPIPED +BAGPIPER +BAGPIPERS +BAGPIPES +BAGPIPING +BAGS +BAGSFUL +BAGUET +BAGUETS +BAGUETTE +BAGUETTES +BAGWIG +BAGWIGS +BAGWORM +BAGWORMS +BAH +BAHADUR +BAHADURS +BAHT +BAHTS +BAHUVRIHI +BAHUVRIHIS +BAIDARKA +BAIDARKAS +BAIL +BAILABLE +BAILED +BAILEE +BAILEES +BAILER +BAILERS +BAILEY +BAILEYS +BAILIE +BAILIES +BAILIFF +BAILIFFS +BAILIFFSHIP +BAILIFFSHIPS +BAILING +BAILIWICK +BAILIWICKS +BAILMENT +BAILMENTS +BAILOR +BAILORS +BAILOUT +BAILOUTS +BAILS +BAILSMAN +BAILSMEN +BAIRN +BAIRNISH +BAIRNLIER +BAIRNLIEST +BAIRNLY +BAIRNS +BAIT +BAITED +BAITER +BAITERS +BAITFISH +BAITFISHES +BAITH +BAITING +BAITS +BAIZA +BAIZAS +BAIZE +BAIZES +BAKE +BAKEAPPLE +BAKEAPPLES +BAKED +BAKEHOUSE +BAKEHOUSES +BAKELITE +BAKELITES +BAKEMEAT +BAKEMEATS +BAKER +BAKERIES +BAKERS +BAKERY +BAKES +BAKESHOP +BAKESHOPS +BAKEWARE +BAKEWARES +BAKING +BAKINGS +BAKLAVA +BAKLAVAS +BAKLAWA +BAKLAWAS +BAKSHEESH +BAKSHEESHES +BAKSHISH +BAKSHISHED +BAKSHISHES +BAKSHISHING +BAL +BALACLAVA +BALACLAVAS +BALALAIKA +BALALAIKAS +BALANCE +BALANCED +BALANCER +BALANCERS +BALANCES +BALANCING +BALAS +BALASES +BALATA +BALATAS +BALBOA +BALBOAS +BALBRIGGAN +BALBRIGGANS +BALCONIED +BALCONIES +BALCONY +BALD +BALDACHIN +BALDACHINO +BALDACHINOS +BALDACHINS +BALDAQUIN +BALDAQUINS +BALDED +BALDER +BALDERDASH +BALDERDASHES +BALDEST +BALDFACED +BALDHEAD +BALDHEADS +BALDIES +BALDING +BALDISH +BALDLY +BALDNESS +BALDNESSES +BALDPATE +BALDPATED +BALDPATES +BALDRIC +BALDRICK +BALDRICKS +BALDRICS +BALDS +BALDY +BALE +BALED +BALEEN +BALEENS +BALEFIRE +BALEFIRES +BALEFUL +BALEFULLY +BALEFULNESS +BALEFULNESSES +BALER +BALERS +BALES +BALING +BALISAUR +BALISAURS +BALK +BALKANIZATION +BALKANIZATIONS +BALKANIZE +BALKANIZED +BALKANIZES +BALKANIZING +BALKED +BALKER +BALKERS +BALKIER +BALKIEST +BALKILY +BALKINESS +BALKINESSES +BALKING +BALKLINE +BALKLINES +BALKS +BALKY +BALL +BALLAD +BALLADE +BALLADEER +BALLADEERS +BALLADES +BALLADIC +BALLADIST +BALLADISTS +BALLADRIES +BALLADRY +BALLADS +BALLAST +BALLASTED +BALLASTER +BALLASTERS +BALLASTING +BALLASTS +BALLCARRIER +BALLCARRIERS +BALLED +BALLER +BALLERINA +BALLERINAS +BALLERS +BALLET +BALLETIC +BALLETOMANE +BALLETOMANES +BALLETOMANIA +BALLETOMANIAS +BALLETS +BALLGAME +BALLGAMES +BALLHANDLING +BALLHANDLINGS +BALLHAWK +BALLHAWKS +BALLIES +BALLING +BALLISTA +BALLISTAE +BALLISTIC +BALLISTICALLY +BALLISTICS +BALLON +BALLONET +BALLONETS +BALLONNE +BALLONNES +BALLONS +BALLOON +BALLOONED +BALLOONING +BALLOONINGS +BALLOONIST +BALLOONISTS +BALLOONS +BALLOT +BALLOTED +BALLOTER +BALLOTERS +BALLOTING +BALLOTS +BALLPARK +BALLPARKS +BALLPLAYER +BALLPLAYERS +BALLPOINT +BALLPOINTS +BALLROOM +BALLROOMS +BALLS +BALLSIER +BALLSIEST +BALLSY +BALLUTE +BALLUTES +BALLY +BALLYARD +BALLYARDS +BALLYHOO +BALLYHOOED +BALLYHOOING +BALLYHOOS +BALLYRAG +BALLYRAGGED +BALLYRAGGING +BALLYRAGS +BALM +BALMACAAN +BALMACAANS +BALMIER +BALMIEST +BALMILY +BALMINESS +BALMINESSES +BALMLIKE +BALMORAL +BALMORALS +BALMS +BALMY +BALNEAL +BALNEOLOGIES +BALNEOLOGY +BALONEY +BALONEYS +BALS +BALSA +BALSAM +BALSAMED +BALSAMIC +BALSAMING +BALSAMS +BALSAS +BALUSTER +BALUSTERS +BALUSTRADE +BALUSTRADED +BALUSTRADES +BAM +BAMBINI +BAMBINO +BAMBINOS +BAMBOO +BAMBOOS +BAMBOOZLE +BAMBOOZLED +BAMBOOZLEMENT +BAMBOOZLEMENTS +BAMBOOZLES +BAMBOOZLING +BAMMED +BAMMING +BAMS +BAN +BANAL +BANALITIES +BANALITY +BANALIZE +BANALIZED +BANALIZES +BANALIZING +BANALLY +BANANA +BANANAS +BANAUSIC +BANCO +BANCOS +BAND +BANDA +BANDAGE +BANDAGED +BANDAGER +BANDAGERS +BANDAGES +BANDAGING +BANDAID +BANDANA +BANDANAS +BANDANNA +BANDANNAS +BANDAS +BANDBOX +BANDBOXES +BANDEAU +BANDEAUS +BANDEAUX +BANDED +BANDER +BANDERILLA +BANDERILLAS +BANDERILLERO +BANDERILLEROS +BANDEROL +BANDEROLE +BANDEROLES +BANDEROLS +BANDERS +BANDICOOT +BANDICOOTS +BANDIED +BANDIES +BANDINESS +BANDINESSES +BANDING +BANDIT +BANDITO +BANDITOS +BANDITRIES +BANDITRY +BANDITS +BANDITTI +BANDLEADER +BANDLEADERS +BANDMASTER +BANDMASTERS +BANDMATE +BANDMATES +BANDOG +BANDOGS +BANDOLEER +BANDOLEERS +BANDOLIER +BANDOLIERS +BANDONEON +BANDONEONS +BANDORA +BANDORAS +BANDORE +BANDORES +BANDS +BANDSAW +BANDSAWS +BANDSHELL +BANDSHELLS +BANDSMAN +BANDSMEN +BANDSTAND +BANDSTANDS +BANDWAGON +BANDWAGONS +BANDWIDTH +BANDWIDTHS +BANDY +BANDYING +BANE +BANEBERRIES +BANEBERRY +BANED +BANEFUL +BANEFULLY +BANES +BANG +BANGED +BANGER +BANGERS +BANGING +BANGKOK +BANGKOKS +BANGLE +BANGLES +BANGS +BANGTAIL +BANGTAILS +BANI +BANIAN +BANIANS +BANING +BANISH +BANISHED +BANISHER +BANISHERS +BANISHES +BANISHING +BANISHMENT +BANISHMENTS +BANISTER +BANISTERED +BANISTERS +BANJAX +BANJAXED +BANJAXES +BANJAXING +BANJO +BANJOES +BANJOIST +BANJOISTS +BANJOS +BANK +BANKABILITIES +BANKABILITY +BANKABLE +BANKBOOK +BANKBOOKS +BANKCARD +BANKCARDS +BANKED +BANKER +BANKERLY +BANKERS +BANKING +BANKINGS +BANKIT +BANKITS +BANKNOTE +BANKNOTES +BANKROLL +BANKROLLED +BANKROLLER +BANKROLLERS +BANKROLLING +BANKROLLS +BANKRUPT +BANKRUPTCIES +BANKRUPTCY +BANKRUPTED +BANKRUPTING +BANKRUPTS +BANKS +BANKSIA +BANKSIAS +BANKSIDE +BANKSIDES +BANNABLE +BANNED +BANNER +BANNERED +BANNERET +BANNERETS +BANNERETTE +BANNERETTES +BANNERING +BANNEROL +BANNEROLS +BANNERS +BANNET +BANNETS +BANNING +BANNISTER +BANNISTERS +BANNOCK +BANNOCKS +BANNS +BANQUET +BANQUETED +BANQUETER +BANQUETERS +BANQUETING +BANQUETS +BANQUETTE +BANQUETTES +BANS +BANSHEE +BANSHEES +BANSHIE +BANSHIES +BANTAM +BANTAMS +BANTAMWEIGHT +BANTAMWEIGHTS +BANTENG +BANTENGS +BANTER +BANTERED +BANTERER +BANTERERS +BANTERING +BANTERINGLY +BANTERS +BANTIES +BANTLING +BANTLINGS +BANTY +BANYAN +BANYANS +BANZAI +BANZAIS +BAOBAB +BAOBABS +BAP +BAPS +BAPTISE +BAPTISED +BAPTISES +BAPTISIA +BAPTISIAS +BAPTISING +BAPTISM +BAPTISMAL +BAPTISMALLY +BAPTISMS +BAPTIST +BAPTISTERIES +BAPTISTERY +BAPTISTRIES +BAPTISTRY +BAPTISTS +BAPTIZE +BAPTIZED +BAPTIZER +BAPTIZERS +BAPTIZES +BAPTIZING +BAR +BARATHEA +BARATHEAS +BARB +BARBAL +BARBARIAN +BARBARIANISM +BARBARIANISMS +BARBARIANS +BARBARIC +BARBARICALLY +BARBARISM +BARBARISMS +BARBARITIES +BARBARITY +BARBARIZATION +BARBARIZATIONS +BARBARIZE +BARBARIZED +BARBARIZES +BARBARIZING +BARBAROUS +BARBAROUSLY +BARBAROUSNESS +BARBAROUSNESSES +BARBASCO +BARBASCOES +BARBASCOS +BARBATE +BARBE +BARBECUE +BARBECUED +BARBECUER +BARBECUERS +BARBECUES +BARBECUING +BARBED +BARBEL +BARBELL +BARBELLS +BARBELS +BARBEQUE +BARBEQUED +BARBEQUES +BARBEQUING +BARBER +BARBERED +BARBERING +BARBERRIES +BARBERRY +BARBERS +BARBERSHOP +BARBERSHOPS +BARBES +BARBET +BARBETS +BARBETTE +BARBETTES +BARBICAN +BARBICANS +BARBICEL +BARBICELS +BARBIE +BARBIES +BARBING +BARBITAL +BARBITALS +BARBITONE +BARBITONES +BARBITURATE +BARBITURATES +BARBLESS +BARBS +BARBULE +BARBULES +BARBUT +BARBUTS +BARBWIRE +BARBWIRES +BARCA +BARCAROLE +BARCAROLES +BARCAROLLE +BARCAROLLES +BARCAS +BARCHAN +BARCHANS +BARD +BARDE +BARDED +BARDES +BARDIC +BARDING +BARDOLATER +BARDOLATERS +BARDOLATRIES +BARDOLATRY +BARDS +BARE +BAREBACK +BAREBACKED +BAREBOAT +BAREBOATS +BAREBONED +BARED +BAREFACED +BAREFACEDLY +BAREFACEDNESS +BAREFACEDNESSES +BAREFIT +BAREFOOT +BAREFOOTED +BAREGE +BAREGES +BAREHAND +BAREHANDED +BAREHANDING +BAREHANDS +BAREHEAD +BAREHEADED +BARELY +BARENESS +BARENESSES +BARER +BARES +BARESARK +BARESARKS +BAREST +BARF +BARFED +BARFING +BARFLIES +BARFLY +BARFS +BARGAIN +BARGAINED +BARGAINER +BARGAINERS +BARGAINING +BARGAINS +BARGE +BARGEBOARD +BARGEBOARDS +BARGED +BARGEE +BARGEES +BARGELLO +BARGELLOS +BARGEMAN +BARGEMEN +BARGES +BARGHEST +BARGHESTS +BARGING +BARGUEST +BARGUESTS +BARHOP +BARHOPPED +BARHOPPING +BARHOPS +BARIATRIC +BARIC +BARILLA +BARILLAS +BARING +BARISTA +BARISTAS +BARITE +BARITES +BARITONAL +BARITONE +BARITONES +BARIUM +BARIUMS +BARK +BARKED +BARKEEP +BARKEEPER +BARKEEPERS +BARKEEPS +BARKENTINE +BARKENTINES +BARKER +BARKERS +BARKIER +BARKIEST +BARKING +BARKLESS +BARKS +BARKY +BARLEDUC +BARLEDUCS +BARLESS +BARLEY +BARLEYCORN +BARLEYCORNS +BARLEYS +BARLOW +BARLOWS +BARM +BARMAID +BARMAIDS +BARMAN +BARMEN +BARMIE +BARMIER +BARMIEST +BARMS +BARMY +BARN +BARNACLE +BARNACLED +BARNACLES +BARNED +BARNEY +BARNEYS +BARNIER +BARNIEST +BARNING +BARNLIKE +BARNS +BARNSTORM +BARNSTORMED +BARNSTORMER +BARNSTORMERS +BARNSTORMING +BARNSTORMS +BARNY +BARNYARD +BARNYARDS +BAROCEPTOR +BAROCEPTORS +BAROGRAM +BAROGRAMS +BAROGRAPH +BAROGRAPHIC +BAROGRAPHS +BAROMETER +BAROMETERS +BAROMETRIC +BAROMETRICALLY +BAROMETRIES +BAROMETRY +BARON +BARONAGE +BARONAGES +BARONESS +BARONESSES +BARONET +BARONETAGE +BARONETAGES +BARONETCIES +BARONETCY +BARONETS +BARONG +BARONGS +BARONIAL +BARONIES +BARONNE +BARONNES +BARONS +BARONY +BAROQUE +BAROQUELY +BAROQUES +BARORECEPTOR +BARORECEPTORS +BAROSAUR +BAROSAURS +BAROSCOPE +BAROSCOPES +BAROUCHE +BAROUCHES +BARQUE +BARQUENTINE +BARQUENTINES +BARQUES +BARQUETTE +BARQUETTES +BARRABLE +BARRACK +BARRACKED +BARRACKER +BARRACKERS +BARRACKING +BARRACKS +BARRACOON +BARRACOONS +BARRACOUTA +BARRACOUTAS +BARRACUDA +BARRACUDAS +BARRAGE +BARRAGED +BARRAGES +BARRAGING +BARRAMUNDA +BARRAMUNDAS +BARRAMUNDI +BARRAMUNDIS +BARRANCA +BARRANCAS +BARRANCO +BARRANCOS +BARRATER +BARRATERS +BARRATOR +BARRATORS +BARRATRIES +BARRATRY +BARRE +BARRED +BARREL +BARRELAGE +BARRELAGES +BARRELED +BARRELFUL +BARRELFULS +BARRELHEAD +BARRELHEADS +BARRELHOUSE +BARRELHOUSES +BARRELING +BARRELLED +BARRELLING +BARRELS +BARRELSFUL +BARREN +BARRENER +BARRENEST +BARRENLY +BARRENNESS +BARRENNESSES +BARRENS +BARRES +BARRET +BARRETOR +BARRETORS +BARRETRIES +BARRETRY +BARRETS +BARRETTE +BARRETTES +BARRICADE +BARRICADED +BARRICADES +BARRICADING +BARRICADO +BARRICADOED +BARRICADOES +BARRICADOING +BARRICADOS +BARRIER +BARRIERS +BARRING +BARRIO +BARRIOS +BARRISTER +BARRISTERS +BARROOM +BARROOMS +BARROW +BARROWS +BARS +BARSTOOL +BARSTOOLS +BARTEND +BARTENDED +BARTENDER +BARTENDERS +BARTENDING +BARTENDS +BARTER +BARTERED +BARTERER +BARTERERS +BARTERING +BARTERS +BARTISAN +BARTISANS +BARTIZAN +BARTIZANS +BARWARE +BARWARES +BARYE +BARYES +BARYON +BARYONIC +BARYONS +BARYTA +BARYTAS +BARYTE +BARYTES +BARYTIC +BARYTON +BARYTONE +BARYTONES +BARYTONS +BAS +BASAL +BASALLY +BASALT +BASALTES +BASALTIC +BASALTINE +BASALTS +BASCULE +BASCULES +BASE +BASEBALL +BASEBALLS +BASEBOARD +BASEBOARDS +BASEBORN +BASED +BASELESS +BASELINE +BASELINER +BASELINERS +BASELINES +BASELY +BASEMAN +BASEMEN +BASEMENT +BASEMENTLESS +BASEMENTS +BASENESS +BASENESSES +BASENJI +BASENJIS +BASEPLATE +BASEPLATES +BASER +BASERUNNING +BASERUNNINGS +BASES +BASEST +BASH +BASHAW +BASHAWS +BASHED +BASHER +BASHERS +BASHES +BASHFUL +BASHFULLY +BASHFULNESS +BASHFULNESSES +BASHING +BASHINGS +BASHLYK +BASHLYKS +BASIC +BASICALLY +BASICITIES +BASICITY +BASICS +BASIDIA +BASIDIAL +BASIDIOMYCETE +BASIDIOMYCETES +BASIDIOMYCETOUS +BASIDIOSPORE +BASIDIOSPORES +BASIDIUM +BASIFICATION +BASIFICATIONS +BASIFIED +BASIFIER +BASIFIERS +BASIFIES +BASIFIXED +BASIFY +BASIFYING +BASIL +BASILAR +BASILARY +BASILECT +BASILECTS +BASILIC +BASILICA +BASILICAE +BASILICAL +BASILICAN +BASILICAS +BASILISK +BASILISKS +BASILS +BASIN +BASINAL +BASINED +BASINET +BASINETS +BASINFUL +BASINFULS +BASING +BASINLIKE +BASINS +BASION +BASIONS +BASIPETAL +BASIPETALLY +BASIS +BASK +BASKED +BASKET +BASKETBALL +BASKETBALLS +BASKETFUL +BASKETFULS +BASKETLIKE +BASKETRIES +BASKETRY +BASKETS +BASKETSFUL +BASKETWORK +BASKETWORKS +BASKING +BASKS +BASMATI +BASMATIS +BASOPHIL +BASOPHILE +BASOPHILES +BASOPHILIA +BASOPHILIAS +BASOPHILIC +BASOPHILS +BASQUE +BASQUES +BASS +BASSES +BASSET +BASSETED +BASSETING +BASSETS +BASSETT +BASSETTED +BASSETTING +BASSETTS +BASSI +BASSINET +BASSINETS +BASSIST +BASSISTS +BASSLY +BASSNESS +BASSNESSES +BASSO +BASSOON +BASSOONIST +BASSOONISTS +BASSOONS +BASSOS +BASSWOOD +BASSWOODS +BASSY +BAST +BASTARD +BASTARDIES +BASTARDISE +BASTARDISED +BASTARDISES +BASTARDISING +BASTARDIZATION +BASTARDIZATIONS +BASTARDIZE +BASTARDIZED +BASTARDIZES +BASTARDIZING +BASTARDLY +BASTARDS +BASTARDY +BASTE +BASTED +BASTER +BASTERS +BASTES +BASTILE +BASTILES +BASTILLE +BASTILLES +BASTINADE +BASTINADED +BASTINADES +BASTINADING +BASTINADO +BASTINADOED +BASTINADOES +BASTINADOING +BASTING +BASTINGS +BASTION +BASTIONED +BASTIONS +BASTS +BAT +BATBOY +BATBOYS +BATCH +BATCHED +BATCHER +BATCHERS +BATCHES +BATCHING +BATE +BATEAU +BATEAUX +BATED +BATES +BATFISH +BATFISHES +BATFOWL +BATFOWLED +BATFOWLER +BATFOWLERS +BATFOWLING +BATFOWLS +BATGIRL +BATGIRLS +BATH +BATHE +BATHED +BATHER +BATHERS +BATHES +BATHETIC +BATHETICALLY +BATHHOUSE +BATHHOUSES +BATHING +BATHLESS +BATHMAT +BATHMATS +BATHOLITH +BATHOLITHIC +BATHOLITHS +BATHOS +BATHOSES +BATHROBE +BATHROBES +BATHROOM +BATHROOMS +BATHS +BATHTUB +BATHTUBS +BATHWATER +BATHWATERS +BATHYAL +BATHYMETRIC +BATHYMETRICAL +BATHYMETRICALLY +BATHYMETRIES +BATHYMETRY +BATHYPELAGIC +BATHYSCAPH +BATHYSCAPHE +BATHYSCAPHES +BATHYSCAPHS +BATHYSPHERE +BATHYSPHERES +BATIK +BATIKED +BATIKING +BATIKS +BATING +BATISTE +BATISTES +BATLIKE +BATMAN +BATMEN +BATON +BATONS +BATRACHIAN +BATRACHIANS +BATS +BATSMAN +BATSMEN +BATT +BATTAILOUS +BATTALIA +BATTALIAS +BATTALION +BATTALIONS +BATTEAU +BATTEAUX +BATTED +BATTEMENT +BATTEMENTS +BATTEN +BATTENED +BATTENER +BATTENERS +BATTENING +BATTENS +BATTER +BATTERED +BATTERER +BATTERERS +BATTERIE +BATTERIES +BATTERING +BATTERS +BATTERY +BATTIER +BATTIEST +BATTIK +BATTIKS +BATTINESS +BATTINESSES +BATTING +BATTINGS +BATTLE +BATTLED +BATTLEFIELD +BATTLEFIELDS +BATTLEFRONT +BATTLEFRONTS +BATTLEGROUND +BATTLEGROUNDS +BATTLEMENT +BATTLEMENTED +BATTLEMENTS +BATTLER +BATTLERS +BATTLES +BATTLESHIP +BATTLESHIPS +BATTLEWAGON +BATTLEWAGONS +BATTLING +BATTS +BATTU +BATTUE +BATTUES +BATTY +BATWING +BAUBEE +BAUBEES +BAUBLE +BAUBLES +BAUD +BAUDEKIN +BAUDEKINS +BAUDRONS +BAUDRONSES +BAUDS +BAUHINIA +BAUHINIAS +BAULK +BAULKED +BAULKIER +BAULKIEST +BAULKING +BAULKS +BAULKY +BAUSOND +BAUXITE +BAUXITES +BAUXITIC +BAWBEE +BAWBEES +BAWCOCK +BAWCOCKS +BAWD +BAWDIER +BAWDIES +BAWDIEST +BAWDILY +BAWDINESS +BAWDINESSES +BAWDRIC +BAWDRICS +BAWDRIES +BAWDRY +BAWDS +BAWDY +BAWL +BAWLED +BAWLER +BAWLERS +BAWLING +BAWLS +BAWSUNT +BAWTIE +BAWTIES +BAWTY +BAY +BAYADEER +BAYADEERS +BAYADERE +BAYADERES +BAYAMO +BAYAMOS +BAYARD +BAYARDS +BAYBERRIES +BAYBERRY +BAYED +BAYING +BAYMAN +BAYMEN +BAYONET +BAYONETED +BAYONETING +BAYONETS +BAYONETTED +BAYONETTING +BAYOU +BAYOUS +BAYS +BAYWOOD +BAYWOODS +BAZAAR +BAZAARS +BAZAR +BAZARS +BAZILLION +BAZILLIONS +BAZOO +BAZOOKA +BAZOOKAS +BAZOOMS +BAZOOS +BDELLIUM +BDELLIUMS +BE +BEACH +BEACHBALL +BEACHBALLS +BEACHBOY +BEACHBOYS +BEACHCOMB +BEACHCOMBED +BEACHCOMBER +BEACHCOMBERS +BEACHCOMBING +BEACHCOMBS +BEACHED +BEACHES +BEACHFRONT +BEACHFRONTS +BEACHGOER +BEACHGOERS +BEACHHEAD +BEACHHEADS +BEACHIER +BEACHIEST +BEACHING +BEACHSIDE +BEACHWEAR +BEACHY +BEACON +BEACONED +BEACONING +BEACONS +BEAD +BEADED +BEADER +BEADERS +BEADHOUSE +BEADHOUSES +BEADIER +BEADIEST +BEADILY +BEADINESS +BEADINESSES +BEADING +BEADINGS +BEADLE +BEADLEDOM +BEADLEDOMS +BEADLES +BEADLIKE +BEADMAN +BEADMEN +BEADROLL +BEADROLLS +BEADS +BEADSMAN +BEADSMEN +BEADWORK +BEADWORKS +BEADY +BEAGLE +BEAGLES +BEAK +BEAKED +BEAKER +BEAKERS +BEAKIER +BEAKIEST +BEAKLESS +BEAKLIKE +BEAKS +BEAKY +BEAM +BEAMED +BEAMIER +BEAMIEST +BEAMILY +BEAMING +BEAMINGLY +BEAMISH +BEAMISHLY +BEAMLESS +BEAMLIKE +BEAMS +BEAMY +BEAN +BEANBAG +BEANBAGS +BEANBALL +BEANBALLS +BEANED +BEANERIES +BEANERY +BEANIE +BEANIES +BEANING +BEANLIKE +BEANO +BEANOS +BEANPOLE +BEANPOLES +BEANS +BEANSTALK +BEANSTALKS +BEAR +BEARABILITIES +BEARABILITY +BEARABLE +BEARABLY +BEARBAITING +BEARBAITINGS +BEARBERRIES +BEARBERRY +BEARCAT +BEARCATS +BEARD +BEARDED +BEARDEDNESS +BEARDEDNESSES +BEARDING +BEARDLESS +BEARDS +BEARDTONGUE +BEARDTONGUES +BEARER +BEARERS +BEARGRASS +BEARGRASSES +BEARHUG +BEARHUGS +BEARING +BEARINGS +BEARISH +BEARISHLY +BEARISHNESS +BEARISHNESSES +BEARLIKE +BEARS +BEARSKIN +BEARSKINS +BEARWOOD +BEARWOODS +BEAST +BEASTIE +BEASTIES +BEASTINGS +BEASTLIER +BEASTLIEST +BEASTLINESS +BEASTLINESSES +BEASTLY +BEASTS +BEAT +BEATABLE +BEATEN +BEATER +BEATERS +BEATIFIC +BEATIFICALLY +BEATIFICATION +BEATIFICATIONS +BEATIFIED +BEATIFIES +BEATIFY +BEATIFYING +BEATING +BEATINGS +BEATITUDE +BEATITUDES +BEATLESS +BEATNIK +BEATNIKS +BEATS +BEAU +BEAUCOUP +BEAUCOUPS +BEAUISH +BEAUS +BEAUT +BEAUTEOUS +BEAUTEOUSLY +BEAUTEOUSNESS +BEAUTEOUSNESSES +BEAUTICIAN +BEAUTICIANS +BEAUTIES +BEAUTIFICATION +BEAUTIFICATIONS +BEAUTIFIED +BEAUTIFIER +BEAUTIFIERS +BEAUTIFIES +BEAUTIFUL +BEAUTIFULLER +BEAUTIFULLEST +BEAUTIFULLY +BEAUTIFULNESS +BEAUTIFULNESSES +BEAUTIFY +BEAUTIFYING +BEAUTS +BEAUTY +BEAUX +BEAVER +BEAVERBOARD +BEAVERBOARDS +BEAVERED +BEAVERING +BEAVERS +BEBEERINE +BEBEERINES +BEBEERU +BEBEERUS +BEBLOOD +BEBLOODED +BEBLOODING +BEBLOODS +BEBOP +BEBOPPER +BEBOPPERS +BEBOPS +BECALM +BECALMED +BECALMING +BECALMS +BECAME +BECAP +BECAPPED +BECAPPING +BECAPS +BECARPET +BECARPETED +BECARPETING +BECARPETS +BECAUSE +BECCAFICO +BECCAFICOS +BECHALK +BECHALKED +BECHALKING +BECHALKS +BECHAMEL +BECHAMELS +BECHANCE +BECHANCED +BECHANCES +BECHANCING +BECHARM +BECHARMED +BECHARMING +BECHARMS +BECK +BECKED +BECKET +BECKETS +BECKING +BECKON +BECKONED +BECKONER +BECKONERS +BECKONING +BECKONS +BECKS +BECLAMOR +BECLAMORED +BECLAMORING +BECLAMORS +BECLASP +BECLASPED +BECLASPING +BECLASPS +BECLOAK +BECLOAKED +BECLOAKING +BECLOAKS +BECLOG +BECLOGGED +BECLOGGING +BECLOGS +BECLOTHE +BECLOTHED +BECLOTHES +BECLOTHING +BECLOUD +BECLOUDED +BECLOUDING +BECLOUDS +BECLOWN +BECLOWNED +BECLOWNING +BECLOWNS +BECOME +BECOMES +BECOMING +BECOMINGLY +BECOMINGS +BECOWARD +BECOWARDED +BECOWARDING +BECOWARDS +BECQUEREL +BECQUERELS +BECRAWL +BECRAWLED +BECRAWLING +BECRAWLS +BECRIME +BECRIMED +BECRIMES +BECRIMING +BECROWD +BECROWDED +BECROWDING +BECROWDS +BECRUST +BECRUSTED +BECRUSTING +BECRUSTS +BECUDGEL +BECUDGELED +BECUDGELING +BECUDGELLED +BECUDGELLING +BECUDGELS +BECURSE +BECURSED +BECURSES +BECURSING +BECURST +BED +BEDABBLE +BEDABBLED +BEDABBLES +BEDABBLING +BEDAMN +BEDAMNED +BEDAMNING +BEDAMNS +BEDARKEN +BEDARKENED +BEDARKENING +BEDARKENS +BEDAUB +BEDAUBED +BEDAUBING +BEDAUBS +BEDAZZLE +BEDAZZLED +BEDAZZLEMENT +BEDAZZLEMENTS +BEDAZZLES +BEDAZZLING +BEDBOARD +BEDBOARDS +BEDBUG +BEDBUGS +BEDCHAIR +BEDCHAIRS +BEDCHAMBER +BEDCHAMBERS +BEDCLOTHES +BEDCOVER +BEDCOVERING +BEDCOVERINGS +BEDCOVERS +BEDDABLE +BEDDED +BEDDER +BEDDERS +BEDDING +BEDDINGS +BEDEAFEN +BEDEAFENED +BEDEAFENING +BEDEAFENS +BEDECK +BEDECKED +BEDECKING +BEDECKS +BEDEHOUSE +BEDEHOUSES +BEDEL +BEDELL +BEDELLS +BEDELS +BEDEMAN +BEDEMEN +BEDESMAN +BEDESMEN +BEDEVIL +BEDEVILED +BEDEVILING +BEDEVILLED +BEDEVILLING +BEDEVILMENT +BEDEVILMENTS +BEDEVILS +BEDEW +BEDEWED +BEDEWING +BEDEWS +BEDFAST +BEDFELLOW +BEDFELLOWS +BEDFRAME +BEDFRAMES +BEDGOWN +BEDGOWNS +BEDIAPER +BEDIAPERED +BEDIAPERING +BEDIAPERS +BEDIGHT +BEDIGHTED +BEDIGHTING +BEDIGHTS +BEDIM +BEDIMMED +BEDIMMING +BEDIMPLE +BEDIMPLED +BEDIMPLES +BEDIMPLING +BEDIMS +BEDIRTIED +BEDIRTIES +BEDIRTY +BEDIRTYING +BEDIZEN +BEDIZENED +BEDIZENING +BEDIZENMENT +BEDIZENMENTS +BEDIZENS +BEDLAM +BEDLAMITE +BEDLAMITES +BEDLAMP +BEDLAMPS +BEDLAMS +BEDLESS +BEDLIKE +BEDMAKER +BEDMAKERS +BEDMATE +BEDMATES +BEDOTTED +BEDOUIN +BEDOUINS +BEDPAN +BEDPANS +BEDPLATE +BEDPLATES +BEDPOST +BEDPOSTS +BEDQUILT +BEDQUILTS +BEDRAGGLE +BEDRAGGLED +BEDRAGGLES +BEDRAGGLING +BEDRAIL +BEDRAILS +BEDRAPE +BEDRAPED +BEDRAPES +BEDRAPING +BEDRENCH +BEDRENCHED +BEDRENCHES +BEDRENCHING +BEDRID +BEDRIDDEN +BEDRIVEL +BEDRIVELED +BEDRIVELING +BEDRIVELLED +BEDRIVELLING +BEDRIVELS +BEDROCK +BEDROCKS +BEDROLL +BEDROLLS +BEDROOM +BEDROOMED +BEDROOMS +BEDRUG +BEDRUGGED +BEDRUGGING +BEDRUGS +BEDS +BEDSHEET +BEDSHEETS +BEDSIDE +BEDSIDES +BEDSIT +BEDSITS +BEDSONIA +BEDSONIAS +BEDSORE +BEDSORES +BEDSPREAD +BEDSPREADS +BEDSPRING +BEDSPRINGS +BEDSTAND +BEDSTANDS +BEDSTEAD +BEDSTEADS +BEDSTRAW +BEDSTRAWS +BEDTICK +BEDTICKS +BEDTIME +BEDTIMES +BEDU +BEDUIN +BEDUINS +BEDUMB +BEDUMBED +BEDUMBING +BEDUMBS +BEDUNCE +BEDUNCED +BEDUNCES +BEDUNCING +BEDWARD +BEDWARDS +BEDWARF +BEDWARFED +BEDWARFING +BEDWARFS +BEDWARMER +BEDWARMERS +BEDWETTER +BEDWETTERS +BEE +BEEBEE +BEEBEES +BEEBREAD +BEEBREADS +BEECH +BEECHDROPS +BEECHEN +BEECHES +BEECHIER +BEECHIEST +BEECHMAST +BEECHMASTS +BEECHNUT +BEECHNUTS +BEECHWOOD +BEECHWOODS +BEECHY +BEEDI +BEEDIES +BEEF +BEEFALO +BEEFALOES +BEEFALOS +BEEFCAKE +BEEFCAKES +BEEFEATER +BEEFEATERS +BEEFED +BEEFIER +BEEFIEST +BEEFILY +BEEFINESS +BEEFINESSES +BEEFING +BEEFLESS +BEEFS +BEEFSTEAK +BEEFSTEAKS +BEEFWOOD +BEEFWOODS +BEEFY +BEEHIVE +BEEHIVES +BEEKEEPER +BEEKEEPERS +BEEKEEPING +BEEKEEPINGS +BEELIKE +BEELINE +BEELINED +BEELINES +BEELINING +BEEN +BEEP +BEEPED +BEEPER +BEEPERS +BEEPING +BEEPS +BEER +BEERIER +BEERIEST +BEERINESS +BEERINESSES +BEERS +BEERY +BEES +BEESTINGS +BEESWAX +BEESWAXES +BEESWING +BEESWINGS +BEET +BEETLE +BEETLED +BEETLER +BEETLERS +BEETLES +BEETLING +BEETROOT +BEETROOTS +BEETS +BEEVES +BEEYARD +BEEYARDS +BEEZER +BEEZERS +BEFALL +BEFALLEN +BEFALLING +BEFALLS +BEFELL +BEFINGER +BEFINGERED +BEFINGERING +BEFINGERS +BEFIT +BEFITS +BEFITTED +BEFITTING +BEFITTINGLY +BEFLAG +BEFLAGGED +BEFLAGGING +BEFLAGS +BEFLEA +BEFLEAED +BEFLEAING +BEFLEAS +BEFLECK +BEFLECKED +BEFLECKING +BEFLECKS +BEFLOWER +BEFLOWERED +BEFLOWERING +BEFLOWERS +BEFOG +BEFOGGED +BEFOGGING +BEFOGS +BEFOOL +BEFOOLED +BEFOOLING +BEFOOLS +BEFORE +BEFOREHAND +BEFORETIME +BEFOUL +BEFOULED +BEFOULER +BEFOULERS +BEFOULING +BEFOULS +BEFRET +BEFRETS +BEFRETTED +BEFRETTING +BEFRIEND +BEFRIENDED +BEFRIENDING +BEFRIENDS +BEFRINGE +BEFRINGED +BEFRINGES +BEFRINGING +BEFUDDLE +BEFUDDLED +BEFUDDLEMENT +BEFUDDLEMENTS +BEFUDDLES +BEFUDDLING +BEG +BEGALL +BEGALLED +BEGALLING +BEGALLS +BEGAN +BEGAT +BEGAZE +BEGAZED +BEGAZES +BEGAZING +BEGET +BEGETS +BEGETTER +BEGETTERS +BEGETTING +BEGGAR +BEGGARDOM +BEGGARDOMS +BEGGARED +BEGGARIES +BEGGARING +BEGGARLINESS +BEGGARLINESSES +BEGGARLY +BEGGARS +BEGGARWEED +BEGGARWEEDS +BEGGARY +BEGGED +BEGGING +BEGIN +BEGINNER +BEGINNERS +BEGINNING +BEGINNINGS +BEGINS +BEGIRD +BEGIRDED +BEGIRDING +BEGIRDLE +BEGIRDLED +BEGIRDLES +BEGIRDLING +BEGIRDS +BEGIRT +BEGLAD +BEGLADDED +BEGLADDING +BEGLADS +BEGLAMOR +BEGLAMORED +BEGLAMORING +BEGLAMORS +BEGLAMOUR +BEGLAMOURED +BEGLAMOURING +BEGLAMOURS +BEGLOOM +BEGLOOMED +BEGLOOMING +BEGLOOMS +BEGOGGLED +BEGONE +BEGONIA +BEGONIAS +BEGORAH +BEGORRA +BEGORRAH +BEGOT +BEGOTTEN +BEGRIM +BEGRIME +BEGRIMED +BEGRIMES +BEGRIMING +BEGRIMMED +BEGRIMMING +BEGRIMS +BEGROAN +BEGROANED +BEGROANING +BEGROANS +BEGRUDGE +BEGRUDGED +BEGRUDGER +BEGRUDGERS +BEGRUDGES +BEGRUDGING +BEGRUDGINGLY +BEGS +BEGUILE +BEGUILED +BEGUILEMENT +BEGUILEMENTS +BEGUILER +BEGUILERS +BEGUILES +BEGUILING +BEGUILINGLY +BEGUINE +BEGUINES +BEGULF +BEGULFED +BEGULFING +BEGULFS +BEGUM +BEGUMS +BEGUN +BEHALF +BEHALVES +BEHAVE +BEHAVED +BEHAVER +BEHAVERS +BEHAVES +BEHAVING +BEHAVIOR +BEHAVIORAL +BEHAVIORALLY +BEHAVIORISM +BEHAVIORISMS +BEHAVIORIST +BEHAVIORISTIC +BEHAVIORISTS +BEHAVIORS +BEHAVIOUR +BEHAVIOURS +BEHEAD +BEHEADAL +BEHEADALS +BEHEADED +BEHEADER +BEHEADERS +BEHEADING +BEHEADS +BEHELD +BEHEMOTH +BEHEMOTHS +BEHEST +BEHESTS +BEHIND +BEHINDHAND +BEHINDS +BEHOLD +BEHOLDEN +BEHOLDER +BEHOLDERS +BEHOLDING +BEHOLDS +BEHOOF +BEHOOVE +BEHOOVED +BEHOOVES +BEHOOVING +BEHOVE +BEHOVED +BEHOVES +BEHOVING +BEHOWL +BEHOWLED +BEHOWLING +BEHOWLS +BEIGE +BEIGES +BEIGNE +BEIGNES +BEIGNET +BEIGNETS +BEIGY +BEING +BEINGS +BEJABBERS +BEJABERS +BEJEEBERS +BEJEEZUS +BEJESUS +BEJEWEL +BEJEWELED +BEJEWELING +BEJEWELLED +BEJEWELLING +BEJEWELS +BEJUMBLE +BEJUMBLED +BEJUMBLES +BEJUMBLING +BEKISS +BEKISSED +BEKISSES +BEKISSING +BEKNIGHT +BEKNIGHTED +BEKNIGHTING +BEKNIGHTS +BEKNOT +BEKNOTS +BEKNOTTED +BEKNOTTING +BEL +BELABOR +BELABORED +BELABORING +BELABORS +BELABOUR +BELABOURED +BELABOURING +BELABOURS +BELACED +BELADIED +BELADIES +BELADY +BELADYING +BELATED +BELATEDLY +BELATEDNESS +BELATEDNESSES +BELAUD +BELAUDED +BELAUDING +BELAUDS +BELAY +BELAYED +BELAYER +BELAYERS +BELAYING +BELAYS +BELCH +BELCHED +BELCHER +BELCHERS +BELCHES +BELCHING +BELDAM +BELDAME +BELDAMES +BELDAMS +BELEAGUER +BELEAGUERED +BELEAGUERING +BELEAGUERMENT +BELEAGUERMENTS +BELEAGUERS +BELEAP +BELEAPED +BELEAPING +BELEAPS +BELEAPT +BELEMNITE +BELEMNITES +BELFRIED +BELFRIES +BELFRY +BELGA +BELGAS +BELIE +BELIED +BELIEF +BELIEFS +BELIER +BELIERS +BELIES +BELIEVABILITIES +BELIEVABILITY +BELIEVABLE +BELIEVABLY +BELIEVE +BELIEVED +BELIEVER +BELIEVERS +BELIEVES +BELIEVING +BELIKE +BELIQUOR +BELIQUORED +BELIQUORING +BELIQUORS +BELITTLE +BELITTLED +BELITTLEMENT +BELITTLEMENTS +BELITTLER +BELITTLERS +BELITTLES +BELITTLING +BELIVE +BELL +BELLADONNA +BELLADONNAS +BELLBIRD +BELLBIRDS +BELLBOY +BELLBOYS +BELLE +BELLED +BELLEEK +BELLEEKS +BELLES +BELLETRIST +BELLETRISTIC +BELLETRISTS +BELLFLOWER +BELLFLOWERS +BELLHOP +BELLHOPS +BELLICOSE +BELLICOSITIES +BELLICOSITY +BELLIED +BELLIES +BELLIGERENCE +BELLIGERENCES +BELLIGERENCIES +BELLIGERENCY +BELLIGERENT +BELLIGERENTLY +BELLIGERENTS +BELLING +BELLINGS +BELLMAN +BELLMEN +BELLOW +BELLOWED +BELLOWER +BELLOWERS +BELLOWING +BELLOWS +BELLPULL +BELLPULLS +BELLS +BELLWETHER +BELLWETHERS +BELLWORT +BELLWORTS +BELLY +BELLYACHE +BELLYACHED +BELLYACHER +BELLYACHERS +BELLYACHES +BELLYACHING +BELLYBAND +BELLYBANDS +BELLYFUL +BELLYFULS +BELLYING +BELLYLIKE +BELON +BELONG +BELONGED +BELONGING +BELONGINGNESS +BELONGINGNESSES +BELONGINGS +BELONGS +BELONS +BELOVED +BELOVEDS +BELOW +BELOWDECKS +BELOWGROUND +BELOWS +BELS +BELT +BELTED +BELTER +BELTERS +BELTING +BELTINGS +BELTLESS +BELTLINE +BELTLINES +BELTS +BELTWAY +BELTWAYS +BELUGA +BELUGAS +BELVEDERE +BELVEDERES +BELYING +BEMA +BEMADAM +BEMADAMED +BEMADAMING +BEMADAMS +BEMADDEN +BEMADDENED +BEMADDENING +BEMADDENS +BEMAS +BEMATA +BEMEAN +BEMEANED +BEMEANING +BEMEANS +BEMEDALED +BEMEDALLED +BEMINGLE +BEMINGLED +BEMINGLES +BEMINGLING +BEMIRE +BEMIRED +BEMIRES +BEMIRING +BEMIST +BEMISTED +BEMISTING +BEMISTS +BEMIX +BEMIXED +BEMIXES +BEMIXING +BEMIXT +BEMOAN +BEMOANED +BEMOANING +BEMOANS +BEMOCK +BEMOCKED +BEMOCKING +BEMOCKS +BEMUDDLE +BEMUDDLED +BEMUDDLES +BEMUDDLING +BEMURMUR +BEMURMURED +BEMURMURING +BEMURMURS +BEMUSE +BEMUSED +BEMUSEDLY +BEMUSEMENT +BEMUSEMENTS +BEMUSES +BEMUSING +BEMUZZLE +BEMUZZLED +BEMUZZLES +BEMUZZLING +BEN +BENADRYL +BENADRYLS +BENAME +BENAMED +BENAMES +BENAMING +BENCH +BENCHED +BENCHER +BENCHERS +BENCHES +BENCHING +BENCHLAND +BENCHLANDS +BENCHLESS +BENCHMARK +BENCHMARKED +BENCHMARKING +BENCHMARKINGS +BENCHMARKS +BENCHTOP +BENCHWARMER +BENCHWARMERS +BEND +BENDABLE +BENDAY +BENDAYED +BENDAYING +BENDAYS +BENDED +BENDEE +BENDEES +BENDER +BENDERS +BENDIER +BENDIEST +BENDING +BENDS +BENDWAYS +BENDWISE +BENDY +BENDYS +BENE +BENEATH +BENEDICK +BENEDICKS +BENEDICT +BENEDICTION +BENEDICTIONS +BENEDICTORY +BENEDICTS +BENEFACTION +BENEFACTIONS +BENEFACTOR +BENEFACTORS +BENEFACTRESS +BENEFACTRESSES +BENEFIC +BENEFICE +BENEFICED +BENEFICENCE +BENEFICENCES +BENEFICENT +BENEFICENTLY +BENEFICES +BENEFICIAL +BENEFICIALLY +BENEFICIALNESS +BENEFICIARIES +BENEFICIARY +BENEFICIATE +BENEFICIATED +BENEFICIATES +BENEFICIATING +BENEFICIATION +BENEFICIATIONS +BENEFICING +BENEFIT +BENEFITED +BENEFITER +BENEFITERS +BENEFITING +BENEFITS +BENEFITTED +BENEFITTING +BENEMPT +BENEMPTED +BENES +BENEVOLENCE +BENEVOLENCES +BENEVOLENT +BENEVOLENTLY +BENEVOLENTNESS +BENGALINE +BENGALINES +BENIGHTED +BENIGHTEDLY +BENIGHTEDNESS +BENIGHTEDNESSES +BENIGN +BENIGNANCIES +BENIGNANCY +BENIGNANT +BENIGNANTLY +BENIGNITIES +BENIGNITY +BENIGNLY +BENISON +BENISONS +BENJAMIN +BENJAMINS +BENNE +BENNES +BENNET +BENNETS +BENNI +BENNIES +BENNIS +BENNY +BENOMYL +BENOMYLS +BENS +BENT +BENTGRASS +BENTGRASSES +BENTHAL +BENTHIC +BENTHON +BENTHONIC +BENTHONS +BENTHOS +BENTHOSES +BENTO +BENTONITE +BENTONITES +BENTONITIC +BENTOS +BENTS +BENTWOOD +BENTWOODS +BENUMB +BENUMBED +BENUMBING +BENUMBS +BENZAL +BENZALDEHYDE +BENZALDEHYDES +BENZANTHRACENE +BENZANTHRACENES +BENZENE +BENZENES +BENZENOID +BENZENOIDS +BENZIDIN +BENZIDINE +BENZIDINES +BENZIDINS +BENZIMIDAZOLE +BENZIMIDAZOLES +BENZIN +BENZINE +BENZINES +BENZINS +BENZOAPYRENE +BENZOAPYRENES +BENZOATE +BENZOATES +BENZOCAINE +BENZOCAINES +BENZODIAZEPINE +BENZODIAZEPINES +BENZOFURAN +BENZOFURANS +BENZOIC +BENZOIN +BENZOINS +BENZOL +BENZOLE +BENZOLES +BENZOLS +BENZOPHENONE +BENZOPHENONES +BENZOYL +BENZOYLS +BENZYL +BENZYLIC +BENZYLS +BEPAINT +BEPAINTED +BEPAINTING +BEPAINTS +BEPIMPLE +BEPIMPLED +BEPIMPLES +BEPIMPLING +BEQUEATH +BEQUEATHAL +BEQUEATHALS +BEQUEATHED +BEQUEATHING +BEQUEATHS +BEQUEST +BEQUESTS +BERAKE +BERAKED +BERAKES +BERAKING +BERASCAL +BERASCALED +BERASCALING +BERASCALS +BERATE +BERATED +BERATES +BERATING +BERBERIN +BERBERINE +BERBERINES +BERBERINS +BERBERIS +BERBERISES +BERCEUSE +BERCEUSES +BERDACHE +BERDACHES +BEREAVE +BEREAVED +BEREAVEMENT +BEREAVEMENTS +BEREAVER +BEREAVERS +BEREAVES +BEREAVING +BEREFT +BERET +BERETS +BERETTA +BERETTAS +BERG +BERGAMOT +BERGAMOTS +BERGERE +BERGERES +BERGS +BERHYME +BERHYMED +BERHYMES +BERHYMING +BERIBBONED +BERIBERI +BERIBERIS +BERIMBAU +BERIMBAUS +BERIME +BERIMED +BERIMES +BERIMING +BERINGED +BERK +BERKELIUM +BERKELIUMS +BERKS +BERLIN +BERLINE +BERLINES +BERLINS +BERM +BERME +BERMED +BERMES +BERMING +BERMS +BERMUDAS +BERNICLE +BERNICLES +BEROBED +BEROUGED +BERRETTA +BERRETTAS +BERRIED +BERRIES +BERRY +BERRYING +BERRYLESS +BERRYLIKE +BERSEEM +BERSEEMS +BERSERK +BERSERKER +BERSERKERS +BERSERKLY +BERSERKS +BERTH +BERTHA +BERTHAS +BERTHED +BERTHING +BERTHS +BERYL +BERYLINE +BERYLLIUM +BERYLLIUMS +BERYLS +BES +BESCORCH +BESCORCHED +BESCORCHES +BESCORCHING +BESCOUR +BESCOURED +BESCOURING +BESCOURS +BESCREEN +BESCREENED +BESCREENING +BESCREENS +BESEECH +BESEECHED +BESEECHER +BESEECHERS +BESEECHES +BESEECHING +BESEECHINGLY +BESEEM +BESEEMED +BESEEMING +BESEEMS +BESES +BESET +BESETMENT +BESETMENTS +BESETS +BESETTER +BESETTERS +BESETTING +BESHADOW +BESHADOWED +BESHADOWING +BESHADOWS +BESHAME +BESHAMED +BESHAMES +BESHAMING +BESHIVER +BESHIVERED +BESHIVERING +BESHIVERS +BESHOUT +BESHOUTED +BESHOUTING +BESHOUTS +BESHREW +BESHREWED +BESHREWING +BESHREWS +BESHROUD +BESHROUDED +BESHROUDING +BESHROUDS +BESIDE +BESIDES +BESIEGE +BESIEGED +BESIEGER +BESIEGERS +BESIEGES +BESIEGING +BESLAVED +BESLIME +BESLIMED +BESLIMES +BESLIMING +BESMEAR +BESMEARED +BESMEARER +BESMEARERS +BESMEARING +BESMEARS +BESMILE +BESMILED +BESMILES +BESMILING +BESMIRCH +BESMIRCHED +BESMIRCHES +BESMIRCHING +BESMOKE +BESMOKED +BESMOKES +BESMOKING +BESMOOTH +BESMOOTHED +BESMOOTHING +BESMOOTHS +BESMUDGE +BESMUDGED +BESMUDGES +BESMUDGING +BESMUT +BESMUTS +BESMUTTED +BESMUTTING +BESNOW +BESNOWED +BESNOWING +BESNOWS +BESOM +BESOMS +BESOOTHE +BESOOTHED +BESOOTHES +BESOOTHING +BESOT +BESOTS +BESOTTED +BESOTTING +BESOUGHT +BESPAKE +BESPANGLE +BESPANGLED +BESPANGLES +BESPANGLING +BESPATTER +BESPATTERED +BESPATTERING +BESPATTERS +BESPEAK +BESPEAKING +BESPEAKS +BESPECTACLED +BESPOKE +BESPOKEN +BESPOUSE +BESPOUSED +BESPOUSES +BESPOUSING +BESPREAD +BESPREADING +BESPREADS +BESPRENT +BESPRINKLE +BESPRINKLED +BESPRINKLES +BESPRINKLING +BEST +BESTEAD +BESTEADED +BESTEADING +BESTEADS +BESTED +BESTIAL +BESTIALITIES +BESTIALITY +BESTIALIZE +BESTIALIZED +BESTIALIZES +BESTIALIZING +BESTIALLY +BESTIARIES +BESTIARY +BESTING +BESTIR +BESTIRRED +BESTIRRING +BESTIRS +BESTOW +BESTOWAL +BESTOWALS +BESTOWED +BESTOWER +BESTOWERS +BESTOWING +BESTOWS +BESTREW +BESTREWED +BESTREWING +BESTREWN +BESTREWS +BESTRID +BESTRIDDEN +BESTRIDE +BESTRIDES +BESTRIDING +BESTRODE +BESTROW +BESTROWED +BESTROWING +BESTROWN +BESTROWS +BESTS +BESTSELLERDOM +BESTSELLERDOMS +BESTUD +BESTUDDED +BESTUDDING +BESTUDS +BESWARM +BESWARMED +BESWARMING +BESWARMS +BET +BETA +BETAINE +BETAINES +BETAKE +BETAKEN +BETAKES +BETAKING +BETAS +BETATRON +BETATRONS +BETATTER +BETATTERED +BETATTERING +BETATTERS +BETAXED +BETEL +BETELNUT +BETELNUTS +BETELS +BETH +BETHANK +BETHANKED +BETHANKING +BETHANKS +BETHEL +BETHELS +BETHESDA +BETHESDAS +BETHINK +BETHINKING +BETHINKS +BETHORN +BETHORNED +BETHORNING +BETHORNS +BETHOUGHT +BETHS +BETHUMP +BETHUMPED +BETHUMPING +BETHUMPS +BETIDE +BETIDED +BETIDES +BETIDING +BETIME +BETIMES +BETISE +BETISES +BETOKEN +BETOKENED +BETOKENING +BETOKENS +BETON +BETONIES +BETONS +BETONY +BETOOK +BETRAY +BETRAYAL +BETRAYALS +BETRAYED +BETRAYER +BETRAYERS +BETRAYING +BETRAYS +BETROTH +BETROTHAL +BETROTHALS +BETROTHED +BETROTHEDS +BETROTHING +BETROTHS +BETS +BETTA +BETTAS +BETTED +BETTER +BETTERED +BETTERING +BETTERMENT +BETTERMENTS +BETTERS +BETTING +BETTOR +BETTORS +BETWEEN +BETWEENBRAIN +BETWEENBRAINS +BETWEENNESS +BETWEENNESSES +BETWEENTIMES +BETWEENWHILES +BETWIXT +BEUNCLED +BEVATRON +BEVATRONS +BEVEL +BEVELED +BEVELER +BEVELERS +BEVELING +BEVELLED +BEVELLER +BEVELLERS +BEVELLING +BEVELS +BEVERAGE +BEVERAGES +BEVIES +BEVOMIT +BEVOMITED +BEVOMITING +BEVOMITS +BEVOR +BEVORS +BEVY +BEWAIL +BEWAILED +BEWAILER +BEWAILERS +BEWAILING +BEWAILS +BEWARE +BEWARED +BEWARES +BEWARING +BEWEARIED +BEWEARIES +BEWEARY +BEWEARYING +BEWEEP +BEWEEPING +BEWEEPS +BEWEPT +BEWHISKERED +BEWIG +BEWIGGED +BEWIGGING +BEWIGS +BEWILDER +BEWILDERED +BEWILDEREDLY +BEWILDEREDNESS +BEWILDERING +BEWILDERINGLY +BEWILDERMENT +BEWILDERMENTS +BEWILDERS +BEWINGED +BEWITCH +BEWITCHED +BEWITCHER +BEWITCHERIES +BEWITCHERS +BEWITCHERY +BEWITCHES +BEWITCHING +BEWITCHINGLY +BEWITCHMENT +BEWITCHMENTS +BEWORM +BEWORMED +BEWORMING +BEWORMS +BEWORRIED +BEWORRIES +BEWORRY +BEWORRYING +BEWRAP +BEWRAPPED +BEWRAPPING +BEWRAPS +BEWRAPT +BEWRAY +BEWRAYED +BEWRAYER +BEWRAYERS +BEWRAYING +BEWRAYS +BEY +BEYLIC +BEYLICS +BEYLIK +BEYLIKS +BEYOND +BEYONDS +BEYS +BEZANT +BEZANTS +BEZAZZ +BEZAZZES +BEZEL +BEZELS +BEZIL +BEZILS +BEZIQUE +BEZIQUES +BEZOAR +BEZOARS +BEZZANT +BEZZANTS +BHAKTA +BHAKTAS +BHAKTI +BHAKTIS +BHANG +BHANGRA +BHANGRAS +BHANGS +BHARAL +BHARALS +BHEESTIE +BHEESTIES +BHEESTY +BHISTIE +BHISTIES +BHOOT +BHOOTS +BHUT +BHUTS +BI +BIACETYL +BIACETYLS +BIALI +BIALIES +BIALIS +BIALY +BIALYS +BIANNUAL +BIANNUALLY +BIAS +BIASED +BIASEDLY +BIASES +BIASING +BIASNESS +BIASNESSES +BIASSED +BIASSEDLY +BIASSES +BIASSING +BIATHLETE +BIATHLETES +BIATHLON +BIATHLONS +BIAXAL +BIAXIAL +BIAXIALLY +BIB +BIBASIC +BIBB +BIBBED +BIBBER +BIBBERIES +BIBBERS +BIBBERY +BIBBING +BIBBS +BIBCOCK +BIBCOCKS +BIBELOT +BIBELOTS +BIBLE +BIBLES +BIBLESS +BIBLICAL +BIBLICALLY +BIBLICISM +BIBLICISMS +BIBLICIST +BIBLICISTS +BIBLIKE +BIBLIOGRAPHER +BIBLIOGRAPHERS +BIBLIOGRAPHIC +BIBLIOGRAPHICAL +BIBLIOGRAPHIES +BIBLIOGRAPHY +BIBLIOLATER +BIBLIOLATERS +BIBLIOLATRIES +BIBLIOLATROUS +BIBLIOLATRY +BIBLIOLOGIES +BIBLIOLOGY +BIBLIOMANIA +BIBLIOMANIAC +BIBLIOMANIACAL +BIBLIOMANIACS +BIBLIOMANIAS +BIBLIOPEGIC +BIBLIOPEGIES +BIBLIOPEGIST +BIBLIOPEGISTS +BIBLIOPEGY +BIBLIOPHILE +BIBLIOPHILES +BIBLIOPHILIC +BIBLIOPHILIES +BIBLIOPHILISM +BIBLIOPHILISMS +BIBLIOPHILY +BIBLIOPOLE +BIBLIOPOLES +BIBLIOPOLIST +BIBLIOPOLISTS +BIBLIOTHECA +BIBLIOTHECAE +BIBLIOTHECAL +BIBLIOTHECAS +BIBLIOTHERAPIES +BIBLIOTHERAPY +BIBLIOTIC +BIBLIOTICS +BIBLIOTIST +BIBLIOTISTS +BIBLIST +BIBLISTS +BIBS +BIBULOUS +BIBULOUSLY +BIBULOUSNESS +BIBULOUSNESSES +BICAMERAL +BICAMERALISM +BICAMERALISMS +BICARB +BICARBONATE +BICARBONATES +BICARBS +BICAUDAL +BICE +BICENTENARIES +BICENTENARY +BICENTENNIAL +BICENTENNIALS +BICENTRIC +BICEP +BICEPS +BICEPSES +BICES +BICHROMATE +BICHROMATED +BICHROMATES +BICHROME +BICIPITAL +BICKER +BICKERED +BICKERER +BICKERERS +BICKERING +BICKERS +BICOASTAL +BICOLOR +BICOLORED +BICOLORS +BICOLOUR +BICOLOURS +BICOMPONENT +BICONCAVE +BICONCAVITIES +BICONCAVITY +BICONDITIONAL +BICONDITIONALS +BICONVEX +BICONVEXITIES +BICONVEXITY +BICORN +BICORNE +BICORNES +BICORNS +BICRON +BICRONS +BICULTURAL +BICULTURALISM +BICULTURALISMS +BICUSPID +BICUSPIDS +BICYCLE +BICYCLED +BICYCLER +BICYCLERS +BICYCLES +BICYCLIC +BICYCLING +BICYCLIST +BICYCLISTS +BID +BIDARKA +BIDARKAS +BIDARKEE +BIDARKEES +BIDDABILITIES +BIDDABILITY +BIDDABLE +BIDDABLY +BIDDEN +BIDDER +BIDDERS +BIDDIES +BIDDING +BIDDINGS +BIDDY +BIDE +BIDED +BIDENTAL +BIDENTATE +BIDER +BIDERS +BIDES +BIDET +BIDETS +BIDI +BIDIALECTAL +BIDIALECTALISM +BIDIALECTALISMS +BIDING +BIDIRECTIONAL +BIDIRECTIONALLY +BIDIS +BIDONVILLE +BIDONVILLES +BIDS +BIELD +BIELDED +BIELDING +BIELDS +BIENNALE +BIENNALES +BIENNIA +BIENNIAL +BIENNIALLY +BIENNIALS +BIENNIUM +BIENNIUMS +BIER +BIERS +BIESTINGS +BIFACE +BIFACES +BIFACIAL +BIFACIALLY +BIFARIOUS +BIFF +BIFFED +BIFFIES +BIFFIN +BIFFING +BIFFINS +BIFFS +BIFFY +BIFID +BIFIDITIES +BIFIDITY +BIFIDLY +BIFILAR +BIFILARLY +BIFLAGELLATE +BIFLEX +BIFOCAL +BIFOCALED +BIFOCALS +BIFOLD +BIFOLIATE +BIFORATE +BIFORKED +BIFORM +BIFORMED +BIFUNCTIONAL +BIFURCATE +BIFURCATED +BIFURCATES +BIFURCATING +BIFURCATION +BIFURCATIONS +BIG +BIGAMIES +BIGAMIST +BIGAMISTS +BIGAMOUS +BIGAMOUSLY +BIGAMY +BIGARADE +BIGARADES +BIGAROON +BIGAROONS +BIGARREAU +BIGARREAUS +BIGEMINAL +BIGEMINIES +BIGEMINY +BIGENERIC +BIGEYE +BIGEYES +BIGFEET +BIGFOOT +BIGFOOTED +BIGFOOTING +BIGFOOTS +BIGGER +BIGGEST +BIGGETY +BIGGIE +BIGGIES +BIGGIN +BIGGING +BIGGINGS +BIGGINS +BIGGISH +BIGGITY +BIGGY +BIGHEAD +BIGHEADED +BIGHEADS +BIGHEARTED +BIGHEARTEDLY +BIGHEARTEDNESS +BIGHORN +BIGHORNS +BIGHT +BIGHTED +BIGHTING +BIGHTS +BIGLY +BIGMOUTH +BIGMOUTHED +BIGMOUTHS +BIGNESS +BIGNESSES +BIGNONIA +BIGNONIAS +BIGOS +BIGOSES +BIGOT +BIGOTED +BIGOTEDLY +BIGOTRIES +BIGOTRY +BIGOTS +BIGS +BIGSTICK +BIGTIME +BIGWIG +BIGWIGS +BIHOURLY +BIJECTION +BIJECTIONS +BIJECTIVE +BIJOU +BIJOUS +BIJOUTERIE +BIJOUTERIES +BIJOUX +BIJUGATE +BIJUGOUS +BIKE +BIKED +BIKER +BIKERS +BIKES +BIKEWAY +BIKEWAYS +BIKIE +BIKIES +BIKING +BIKINI +BIKINIED +BIKINIS +BILABIAL +BILABIALS +BILABIATE +BILANDER +BILANDERS +BILATERAL +BILATERALISM +BILATERALISMS +BILATERALLY +BILAYER +BILAYERS +BILBERRIES +BILBERRY +BILBIES +BILBO +BILBOA +BILBOAS +BILBOES +BILBOS +BILBY +BILDUNGSROMAN +BILDUNGSROMANS +BILE +BILECTION +BILECTIONS +BILES +BILEVEL +BILEVELS +BILGE +BILGED +BILGES +BILGEWATER +BILGEWATERS +BILGIER +BILGIEST +BILGING +BILGY +BILHARZIA +BILHARZIAL +BILHARZIAS +BILHARZIASES +BILHARZIASIS +BILIARY +BILINEAR +BILINGUAL +BILINGUALISM +BILINGUALISMS +BILINGUALLY +BILINGUALS +BILIOUS +BILIOUSLY +BILIOUSNESS +BILIOUSNESSES +BILIRUBIN +BILIRUBINS +BILIVERDIN +BILIVERDINS +BILK +BILKED +BILKER +BILKERS +BILKING +BILKS +BILL +BILLABLE +BILLABONG +BILLABONGS +BILLBOARD +BILLBOARDED +BILLBOARDING +BILLBOARDS +BILLBUG +BILLBUGS +BILLED +BILLER +BILLERS +BILLET +BILLETED +BILLETER +BILLETERS +BILLETING +BILLETS +BILLFISH +BILLFISHES +BILLFOLD +BILLFOLDS +BILLHEAD +BILLHEADS +BILLHOOK +BILLHOOKS +BILLIARD +BILLIARDS +BILLIE +BILLIES +BILLING +BILLINGS +BILLINGSGATE +BILLINGSGATES +BILLION +BILLIONAIRE +BILLIONAIRES +BILLIONS +BILLIONTH +BILLIONTHS +BILLON +BILLONS +BILLOW +BILLOWED +BILLOWIER +BILLOWIEST +BILLOWING +BILLOWS +BILLOWY +BILLS +BILLY +BILLYCAN +BILLYCANS +BILLYCOCK +BILLYCOCKS +BILOBATE +BILOBATED +BILOBED +BILOBULAR +BILOCATION +BILOCATIONS +BILOCULAR +BILSTED +BILSTEDS +BILTONG +BILTONGS +BIMA +BIMAH +BIMAHS +BIMANOUS +BIMANUAL +BIMANUALLY +BIMAS +BIMBETTE +BIMBETTES +BIMBO +BIMBOES +BIMBOS +BIMENSAL +BIMESTER +BIMESTERS +BIMETAL +BIMETALLIC +BIMETALLICS +BIMETALLISM +BIMETALLISMS +BIMETALLIST +BIMETALLISTIC +BIMETALLISTS +BIMETALS +BIMETHYL +BIMETHYLS +BIMILLENARIES +BIMILLENARY +BIMILLENNIAL +BIMILLENNIALS +BIMODAL +BIMODALITIES +BIMODALITY +BIMOLECULAR +BIMOLECULARLY +BIMONTHLIES +BIMONTHLY +BIMORPH +BIMORPHEMIC +BIMORPHS +BIN +BINAL +BINARIES +BINARISM +BINARISMS +BINARY +BINATE +BINATELY +BINATIONAL +BINAURAL +BINAURALLY +BIND +BINDABLE +BINDER +BINDERIES +BINDERS +BINDERY +BINDI +BINDING +BINDINGLY +BINDINGNESS +BINDINGNESSES +BINDINGS +BINDIS +BINDLE +BINDLES +BINDS +BINDWEED +BINDWEEDS +BINE +BINER +BINERS +BINES +BINGE +BINGED +BINGEING +BINGER +BINGERS +BINGES +BINGING +BINGO +BINGOES +BINGOS +BINIT +BINITS +BINNACLE +BINNACLES +BINNED +BINNING +BINOCLE +BINOCLES +BINOCS +BINOCULAR +BINOCULARITIES +BINOCULARITY +BINOCULARLY +BINOCULARS +BINOMIAL +BINOMIALLY +BINOMIALS +BINS +BINT +BINTS +BINTURONG +BINTURONGS +BINUCLEAR +BINUCLEATE +BINUCLEATED +BIO +BIOACOUSTICS +BIOACTIVE +BIOACTIVITIES +BIOACTIVITY +BIOASSAY +BIOASSAYED +BIOASSAYING +BIOASSAYS +BIOAVAILABILITY +BIOAVAILABLE +BIOCENOSE +BIOCENOSES +BIOCENOSIS +BIOCHEMIC +BIOCHEMICAL +BIOCHEMICALLY +BIOCHEMICALS +BIOCHEMIST +BIOCHEMISTRIES +BIOCHEMISTRY +BIOCHEMISTS +BIOCHIP +BIOCHIPS +BIOCIDAL +BIOCIDE +BIOCIDES +BIOCLEAN +BIOCLIMATIC +BIOCOENOSES +BIOCOENOSIS +BIOCOMPATIBLE +BIOCONTROL +BIOCONTROLS +BIOCONVERSION +BIOCONVERSIONS +BIOCYCLE +BIOCYCLES +BIODEGRADABLE +BIODEGRADATION +BIODEGRADATIONS +BIODEGRADE +BIODEGRADED +BIODEGRADES +BIODEGRADING +BIODIVERSITIES +BIODIVERSITY +BIODYNAMIC +BIOELECTRIC +BIOELECTRICAL +BIOELECTRICITY +BIOENERGETIC +BIOENERGETICS +BIOENGINEER +BIOENGINEERED +BIOENGINEERING +BIOENGINEERINGS +BIOENGINEERS +BIOETHIC +BIOETHICAL +BIOETHICIST +BIOETHICISTS +BIOETHICS +BIOFEEDBACK +BIOFEEDBACKS +BIOFILM +BIOFILMS +BIOFOULER +BIOFOULERS +BIOFOULING +BIOFOULINGS +BIOFUEL +BIOFUELED +BIOFUELS +BIOG +BIOGAS +BIOGASES +BIOGASSES +BIOGEN +BIOGENESES +BIOGENESIS +BIOGENETIC +BIOGENETICALLY +BIOGENIC +BIOGENIES +BIOGENOUS +BIOGENS +BIOGENY +BIOGEOCHEMICAL +BIOGEOCHEMICALS +BIOGEOCHEMISTRY +BIOGEOGRAPHER +BIOGEOGRAPHERS +BIOGEOGRAPHIC +BIOGEOGRAPHICAL +BIOGEOGRAPHIES +BIOGEOGRAPHY +BIOGRAPHEE +BIOGRAPHEES +BIOGRAPHER +BIOGRAPHERS +BIOGRAPHIC +BIOGRAPHICAL +BIOGRAPHICALLY +BIOGRAPHIES +BIOGRAPHY +BIOGS +BIOHAZARD +BIOHAZARDS +BIOHERM +BIOHERMS +BIOLOGIC +BIOLOGICAL +BIOLOGICALLY +BIOLOGICALS +BIOLOGICS +BIOLOGIES +BIOLOGISM +BIOLOGISMS +BIOLOGIST +BIOLOGISTIC +BIOLOGISTS +BIOLOGY +BIOLUMINESCENCE +BIOLUMINESCENT +BIOLYSES +BIOLYSIS +BIOLYTIC +BIOMARKER +BIOMARKERS +BIOMASS +BIOMASSES +BIOMATERIAL +BIOMATERIALS +BIOMATHEMATICAL +BIOMATHEMATICS +BIOME +BIOMECHANICAL +BIOMECHANICALLY +BIOMECHANICS +BIOMEDICAL +BIOMEDICINE +BIOMEDICINES +BIOMES +BIOMETEOROLOGY +BIOMETER +BIOMETERS +BIOMETRIC +BIOMETRICAL +BIOMETRICIAN +BIOMETRICIANS +BIOMETRICS +BIOMETRIES +BIOMETRY +BIOMIMETIC +BIOMIMETICS +BIOMOLECULAR +BIOMOLECULE +BIOMOLECULES +BIOMORPH +BIOMORPHIC +BIOMORPHS +BIONIC +BIONICS +BIONOMIC +BIONOMICS +BIONOMIES +BIONOMIST +BIONOMISTS +BIONOMY +BIONT +BIONTIC +BIONTS +BIOPHILIA +BIOPHILIAS +BIOPHYSICAL +BIOPHYSICIST +BIOPHYSICISTS +BIOPHYSICS +BIOPIC +BIOPICS +BIOPIRACIES +BIOPIRACY +BIOPIRATE +BIOPIRATES +BIOPLASM +BIOPLASMS +BIOPOLYMER +BIOPOLYMERS +BIOPSIC +BIOPSIED +BIOPSIES +BIOPSY +BIOPSYING +BIOPTIC +BIOREACTOR +BIOREACTORS +BIOREGION +BIOREGIONAL +BIOREGIONALISM +BIOREGIONALISMS +BIOREGIONALIST +BIOREGIONALISTS +BIOREGIONS +BIOREMEDIATION +BIOREMEDIATIONS +BIORHYTHM +BIORHYTHMIC +BIORHYTHMS +BIOS +BIOSAFETIES +BIOSAFETY +BIOSCIENCE +BIOSCIENCES +BIOSCIENTIFIC +BIOSCIENTIST +BIOSCIENTISTS +BIOSCOPE +BIOSCOPES +BIOSCOPIES +BIOSCOPY +BIOSENSOR +BIOSENSORS +BIOSOCIAL +BIOSOCIALLY +BIOSOLID +BIOSOLIDS +BIOSPHERE +BIOSPHERES +BIOSPHERIC +BIOSTATISTICAL +BIOSTATISTICIAN +BIOSTATISTICS +BIOSTRATIGRAPHY +BIOSTROME +BIOSTROMES +BIOSYNTHESES +BIOSYNTHESIS +BIOSYNTHETIC +BIOSYSTEMATIC +BIOSYSTEMATICS +BIOSYSTEMATIST +BIOSYSTEMATISTS +BIOTA +BIOTAS +BIOTECH +BIOTECHNICAL +BIOTECHNOLOGIES +BIOTECHNOLOGIST +BIOTECHNOLOGY +BIOTECHS +BIOTELEMETRIC +BIOTELEMETRIES +BIOTELEMETRY +BIOTERROR +BIOTERRORS +BIOTIC +BIOTICAL +BIOTICS +BIOTIN +BIOTINS +BIOTITE +BIOTITES +BIOTITIC +BIOTOPE +BIOTOPES +BIOTOXIN +BIOTOXINS +BIOTRON +BIOTRONS +BIOTURBED +BIOTYPE +BIOTYPES +BIOTYPIC +BIOVULAR +BIOWEAPON +BIOWEAPONS +BIPACK +BIPACKS +BIPARENTAL +BIPARENTALLY +BIPAROUS +BIPARTED +BIPARTISAN +BIPARTISANISM +BIPARTISANISMS +BIPARTISANSHIP +BIPARTISANSHIPS +BIPARTITE +BIPARTITELY +BIPARTITION +BIPARTITIONS +BIPARTY +BIPED +BIPEDAL +BIPEDALISM +BIPEDALISMS +BIPEDALITIES +BIPEDALITY +BIPEDALLY +BIPEDS +BIPHASIC +BIPHENYL +BIPHENYLS +BIPINNATE +BIPINNATELY +BIPLANE +BIPLANES +BIPOD +BIPODS +BIPOLAR +BIPOLARITIES +BIPOLARITY +BIPOLARIZATION +BIPOLARIZATIONS +BIPOLARIZE +BIPOLARIZED +BIPOLARIZES +BIPOLARIZING +BIPROPELLANT +BIPROPELLANTS +BIPYRAMID +BIPYRAMIDAL +BIPYRAMIDS +BIQUADRATIC +BIQUADRATICS +BIRACIAL +BIRACIALISM +BIRACIALISMS +BIRADIAL +BIRADICAL +BIRADICALS +BIRAMOSE +BIRAMOUS +BIRCH +BIRCHED +BIRCHEN +BIRCHES +BIRCHING +BIRD +BIRDBATH +BIRDBATHS +BIRDBRAIN +BIRDBRAINED +BIRDBRAINS +BIRDCAGE +BIRDCAGES +BIRDCALL +BIRDCALLS +BIRDDOG +BIRDDOGGED +BIRDDOGGING +BIRDDOGS +BIRDED +BIRDER +BIRDERS +BIRDFARM +BIRDFARMS +BIRDFEED +BIRDFEEDS +BIRDHOUSE +BIRDHOUSES +BIRDIE +BIRDIED +BIRDIEING +BIRDIES +BIRDING +BIRDINGS +BIRDLIFE +BIRDLIKE +BIRDLIME +BIRDLIMED +BIRDLIMES +BIRDLIMING +BIRDMAN +BIRDMEN +BIRDS +BIRDSEED +BIRDSEEDS +BIRDSEYE +BIRDSEYES +BIRDSHOT +BIRDSONG +BIRDSONGS +BIRDWATCH +BIRDWATCHED +BIRDWATCHES +BIRDWATCHING +BIREFRINGENCE +BIREFRINGENCES +BIREFRINGENT +BIREME +BIREMES +BIRETTA +BIRETTAS +BIRIANI +BIRIANIS +BIRK +BIRKIE +BIRKIES +BIRKS +BIRL +BIRLE +BIRLED +BIRLER +BIRLERS +BIRLES +BIRLING +BIRLINGS +BIRLS +BIRO +BIROS +BIRR +BIRRED +BIRRETTA +BIRRETTAS +BIRRING +BIRROTCH +BIRRS +BIRSE +BIRSES +BIRTH +BIRTHDAY +BIRTHDAYS +BIRTHED +BIRTHING +BIRTHINGS +BIRTHMARK +BIRTHMARKS +BIRTHNAME +BIRTHNAMES +BIRTHPLACE +BIRTHPLACES +BIRTHRATE +BIRTHRATES +BIRTHRIGHT +BIRTHRIGHTS +BIRTHROOT +BIRTHROOTS +BIRTHS +BIRTHSTONE +BIRTHSTONES +BIRTHWORT +BIRTHWORTS +BIRYANI +BIRYANIS +BIS +BISCOTTI +BISCOTTO +BISCUIT +BISCUITS +BISCUITY +BISE +BISECT +BISECTED +BISECTING +BISECTION +BISECTIONAL +BISECTIONALLY +BISECTIONS +BISECTOR +BISECTORS +BISECTRICES +BISECTRIX +BISECTS +BISERIATE +BISERRATE +BISES +BISEXUAL +BISEXUALITIES +BISEXUALITY +BISEXUALLY +BISEXUALS +BISHOP +BISHOPED +BISHOPING +BISHOPRIC +BISHOPRICS +BISHOPS +BISK +BISKS +BISMUTH +BISMUTHAL +BISMUTHIC +BISMUTHS +BISNAGA +BISNAGAS +BISON +BISONS +BISONTINE +BISQUE +BISQUES +BISTATE +BISTER +BISTERED +BISTERS +BISTORT +BISTORTS +BISTOURIES +BISTOURY +BISTRE +BISTRED +BISTRES +BISTRO +BISTROIC +BISTROS +BISULCATE +BISULFATE +BISULFATES +BISULFIDE +BISULFIDES +BISULFITE +BISULFITES +BIT +BITABLE +BITARTRATE +BITARTRATES +BITCH +BITCHED +BITCHEN +BITCHERIES +BITCHERY +BITCHES +BITCHIER +BITCHIEST +BITCHILY +BITCHINESS +BITCHINESSES +BITCHING +BITCHY +BITE +BITEABLE +BITEPLATE +BITEPLATES +BITER +BITERS +BITES +BITEWING +BITEWINGS +BITING +BITINGLY +BITMAP +BITMAPPED +BITMAPS +BITS +BITSIER +BITSIEST +BITSTOCK +BITSTOCKS +BITSTREAM +BITSTREAMS +BITSY +BITT +BITTED +BITTEN +BITTER +BITTERBRUSH +BITTERBRUSHES +BITTERED +BITTERER +BITTEREST +BITTERING +BITTERISH +BITTERLY +BITTERN +BITTERNESS +BITTERNESSES +BITTERNS +BITTERNUT +BITTERNUTS +BITTERROOT +BITTERROOTS +BITTERS +BITTERSWEET +BITTERSWEETLY +BITTERSWEETNESS +BITTERSWEETS +BITTERWEED +BITTERWEEDS +BITTIER +BITTIEST +BITTINESS +BITTINESSES +BITTING +BITTINGS +BITTOCK +BITTOCKS +BITTS +BITTY +BITUMEN +BITUMENS +BITUMINIZATION +BITUMINIZATIONS +BITUMINIZE +BITUMINIZED +BITUMINIZES +BITUMINIZING +BITUMINOUS +BIUNIQUE +BIUNIQUENESS +BIUNIQUENESSES +BIVALENCE +BIVALENCES +BIVALENCIES +BIVALENCY +BIVALENT +BIVALENTS +BIVALVE +BIVALVED +BIVALVES +BIVARIATE +BIVINYL +BIVINYLS +BIVOUAC +BIVOUACKED +BIVOUACKING +BIVOUACKS +BIVOUACS +BIWEEKLIES +BIWEEKLY +BIYEARLY +BIZ +BIZARRE +BIZARRELY +BIZARRENESS +BIZARRENESSES +BIZARRERIE +BIZARRERIES +BIZARRES +BIZARRO +BIZARROS +BIZE +BIZES +BIZNAGA +BIZNAGAS +BIZONAL +BIZONE +BIZONES +BIZZES +BLAB +BLABBED +BLABBER +BLABBERED +BLABBERING +BLABBERMOUTH +BLABBERMOUTHS +BLABBERS +BLABBING +BLABBY +BLABS +BLACK +BLACKAMOOR +BLACKAMOORS +BLACKBALL +BLACKBALLED +BLACKBALLING +BLACKBALLS +BLACKBERRIES +BLACKBERRY +BLACKBIRD +BLACKBIRDED +BLACKBIRDER +BLACKBIRDERS +BLACKBIRDING +BLACKBIRDS +BLACKBOARD +BLACKBOARDS +BLACKBODIES +BLACKBODY +BLACKBOY +BLACKBOYS +BLACKBUCK +BLACKBUCKS +BLACKCAP +BLACKCAPS +BLACKCOCK +BLACKCOCKS +BLACKDAMP +BLACKDAMPS +BLACKED +BLACKEN +BLACKENED +BLACKENER +BLACKENERS +BLACKENING +BLACKENINGS +BLACKENS +BLACKER +BLACKEST +BLACKFACE +BLACKFACES +BLACKFIN +BLACKFINS +BLACKFISH +BLACKFISHES +BLACKFLIES +BLACKFLY +BLACKGUARD +BLACKGUARDED +BLACKGUARDING +BLACKGUARDISM +BLACKGUARDISMS +BLACKGUARDLY +BLACKGUARDS +BLACKGUM +BLACKGUMS +BLACKHANDER +BLACKHANDERS +BLACKHEAD +BLACKHEADS +BLACKHEART +BLACKHEARTS +BLACKING +BLACKINGS +BLACKISH +BLACKJACK +BLACKJACKED +BLACKJACKING +BLACKJACKS +BLACKLAND +BLACKLANDS +BLACKLEAD +BLACKLEADS +BLACKLEG +BLACKLEGS +BLACKLIST +BLACKLISTED +BLACKLISTER +BLACKLISTERS +BLACKLISTING +BLACKLISTS +BLACKLY +BLACKMAIL +BLACKMAILED +BLACKMAILER +BLACKMAILERS +BLACKMAILING +BLACKMAILS +BLACKNESS +BLACKNESSES +BLACKOUT +BLACKOUTS +BLACKPOLL +BLACKPOLLS +BLACKS +BLACKSMITH +BLACKSMITHING +BLACKSMITHINGS +BLACKSMITHS +BLACKSNAKE +BLACKSNAKES +BLACKTAIL +BLACKTAILS +BLACKTHORN +BLACKTHORNS +BLACKTOP +BLACKTOPPED +BLACKTOPPING +BLACKTOPS +BLACKWATER +BLACKWATERS +BLACKWOOD +BLACKWOODS +BLADDER +BLADDERLIKE +BLADDERNUT +BLADDERNUTS +BLADDERS +BLADDERWORT +BLADDERWORTS +BLADDERY +BLADE +BLADED +BLADELESS +BLADELIKE +BLADER +BLADERS +BLADES +BLADING +BLADINGS +BLAE +BLAEBERRIES +BLAEBERRY +BLAFF +BLAFFS +BLAGGING +BLAGGINGS +BLAH +BLAHS +BLAIN +BLAINS +BLAM +BLAMABLE +BLAMABLY +BLAME +BLAMEABLE +BLAMED +BLAMEFUL +BLAMEFULLY +BLAMELESS +BLAMELESSLY +BLAMELESSNESS +BLAMELESSNESSES +BLAMER +BLAMERS +BLAMES +BLAMEWORTHINESS +BLAMEWORTHY +BLAMING +BLAMS +BLANCH +BLANCHED +BLANCHER +BLANCHERS +BLANCHES +BLANCHING +BLANCMANGE +BLANCMANGES +BLAND +BLANDER +BLANDEST +BLANDISH +BLANDISHED +BLANDISHER +BLANDISHERS +BLANDISHES +BLANDISHING +BLANDISHMENT +BLANDISHMENTS +BLANDLY +BLANDNESS +BLANDNESSES +BLANK +BLANKED +BLANKER +BLANKEST +BLANKET +BLANKETED +BLANKETFLOWER +BLANKETFLOWERS +BLANKETING +BLANKETLIKE +BLANKETS +BLANKING +BLANKLY +BLANKNESS +BLANKNESSES +BLANKS +BLANQUETTE +BLANQUETTES +BLARE +BLARED +BLARES +BLARING +BLARNEY +BLARNEYED +BLARNEYING +BLARNEYS +BLASE +BLASPHEME +BLASPHEMED +BLASPHEMER +BLASPHEMERS +BLASPHEMES +BLASPHEMIES +BLASPHEMING +BLASPHEMOUS +BLASPHEMOUSLY +BLASPHEMOUSNESS +BLASPHEMY +BLAST +BLASTED +BLASTEMA +BLASTEMAL +BLASTEMAS +BLASTEMATA +BLASTEMATIC +BLASTEMIC +BLASTER +BLASTERS +BLASTIE +BLASTIER +BLASTIES +BLASTIEST +BLASTING +BLASTINGS +BLASTMENT +BLASTMENTS +BLASTOCOEL +BLASTOCOELE +BLASTOCOELES +BLASTOCOELIC +BLASTOCOELS +BLASTOCYST +BLASTOCYSTS +BLASTODERM +BLASTODERMS +BLASTODISC +BLASTODISCS +BLASTOFF +BLASTOFFS +BLASTOMA +BLASTOMAS +BLASTOMATA +BLASTOMERE +BLASTOMERES +BLASTOMYCOSES +BLASTOMYCOSIS +BLASTOPORE +BLASTOPORES +BLASTOPORIC +BLASTOSPORE +BLASTOSPORES +BLASTS +BLASTULA +BLASTULAE +BLASTULAR +BLASTULAS +BLASTULATION +BLASTULATIONS +BLASTY +BLAT +BLATANCIES +BLATANCY +BLATANT +BLATANTLY +BLATE +BLATHER +BLATHERED +BLATHERER +BLATHERERS +BLATHERING +BLATHERS +BLATHERSKITE +BLATHERSKITES +BLATS +BLATTED +BLATTER +BLATTERED +BLATTERING +BLATTERS +BLATTING +BLAUBOK +BLAUBOKS +BLAW +BLAWED +BLAWING +BLAWN +BLAWS +BLAXPLOITATION +BLAXPLOITATIONS +BLAZE +BLAZED +BLAZER +BLAZERED +BLAZERS +BLAZES +BLAZING +BLAZINGLY +BLAZON +BLAZONED +BLAZONER +BLAZONERS +BLAZONING +BLAZONINGS +BLAZONRIES +BLAZONRY +BLAZONS +BLEACH +BLEACHABLE +BLEACHED +BLEACHER +BLEACHERITE +BLEACHERITES +BLEACHERS +BLEACHES +BLEACHING +BLEAK +BLEAKER +BLEAKEST +BLEAKISH +BLEAKLY +BLEAKNESS +BLEAKNESSES +BLEAKS +BLEAR +BLEARED +BLEAREYED +BLEARIER +BLEARIEST +BLEARILY +BLEARINESS +BLEARINESSES +BLEARING +BLEARS +BLEARY +BLEAT +BLEATED +BLEATER +BLEATERS +BLEATING +BLEATS +BLEB +BLEBBING +BLEBBINGS +BLEBBY +BLEBS +BLED +BLEED +BLEEDER +BLEEDERS +BLEEDING +BLEEDINGS +BLEEDS +BLEEP +BLEEPED +BLEEPER +BLEEPERS +BLEEPING +BLEEPS +BLELLUM +BLELLUMS +BLEMISH +BLEMISHED +BLEMISHER +BLEMISHERS +BLEMISHES +BLEMISHING +BLENCH +BLENCHED +BLENCHER +BLENCHERS +BLENCHES +BLENCHING +BLEND +BLENDE +BLENDED +BLENDER +BLENDERS +BLENDES +BLENDING +BLENDS +BLENNIES +BLENNIOID +BLENNY +BLENT +BLEPHAROPLAST +BLEPHAROPLASTS +BLEPHAROPLASTY +BLEPHAROSPASM +BLEPHAROSPASMS +BLESBOK +BLESBOKS +BLESBUCK +BLESBUCKS +BLESS +BLESSED +BLESSEDER +BLESSEDEST +BLESSEDLY +BLESSEDNESS +BLESSEDNESSES +BLESSER +BLESSERS +BLESSES +BLESSING +BLESSINGS +BLEST +BLET +BLETHER +BLETHERED +BLETHERING +BLETHERS +BLETS +BLEW +BLIGHT +BLIGHTED +BLIGHTER +BLIGHTERS +BLIGHTIES +BLIGHTING +BLIGHTS +BLIGHTY +BLIMEY +BLIMP +BLIMPISH +BLIMPISHLY +BLIMPISHNESS +BLIMPISHNESSES +BLIMPS +BLIMY +BLIN +BLIND +BLINDAGE +BLINDAGES +BLINDED +BLINDER +BLINDERS +BLINDEST +BLINDFISH +BLINDFISHES +BLINDFOLD +BLINDFOLDED +BLINDFOLDING +BLINDFOLDS +BLINDGUT +BLINDGUTS +BLINDING +BLINDINGLY +BLINDLY +BLINDNESS +BLINDNESSES +BLINDS +BLINDSIDE +BLINDSIDED +BLINDSIDES +BLINDSIDING +BLINDWORM +BLINDWORMS +BLINI +BLINIS +BLINK +BLINKARD +BLINKARDS +BLINKED +BLINKER +BLINKERED +BLINKERING +BLINKERS +BLINKING +BLINKS +BLINTZ +BLINTZE +BLINTZES +BLIP +BLIPPED +BLIPPING +BLIPS +BLISS +BLISSED +BLISSES +BLISSFUL +BLISSFULLY +BLISSFULNESS +BLISSFULNESSES +BLISSING +BLISSLESS +BLISTER +BLISTERED +BLISTERING +BLISTERINGLY +BLISTERS +BLISTERY +BLITE +BLITES +BLITHE +BLITHEFUL +BLITHELY +BLITHER +BLITHERED +BLITHERING +BLITHERS +BLITHESOME +BLITHESOMELY +BLITHEST +BLITZ +BLITZED +BLITZER +BLITZERS +BLITZES +BLITZING +BLITZKRIEG +BLITZKRIEGS +BLIZZARD +BLIZZARDLY +BLIZZARDS +BLIZZARDY +BLOAT +BLOATED +BLOATER +BLOATERS +BLOATING +BLOATS +BLOATWARE +BLOATWARES +BLOB +BLOBBED +BLOBBING +BLOBS +BLOC +BLOCK +BLOCKABLE +BLOCKADE +BLOCKADED +BLOCKADER +BLOCKADERS +BLOCKADES +BLOCKADING +BLOCKAGE +BLOCKAGES +BLOCKBUST +BLOCKBUSTED +BLOCKBUSTER +BLOCKBUSTERS +BLOCKBUSTING +BLOCKBUSTINGS +BLOCKBUSTS +BLOCKED +BLOCKER +BLOCKERS +BLOCKHEAD +BLOCKHEADS +BLOCKHOUSE +BLOCKHOUSES +BLOCKIER +BLOCKIEST +BLOCKING +BLOCKISH +BLOCKS +BLOCKY +BLOCS +BLOG +BLOGGER +BLOGGERS +BLOGGING +BLOGGINGS +BLOGS +BLOKE +BLOKES +BLOND +BLONDE +BLONDER +BLONDES +BLONDEST +BLONDINE +BLONDINED +BLONDINES +BLONDINING +BLONDISH +BLONDNESS +BLONDNESSES +BLONDS +BLOOD +BLOODBATH +BLOODBATHS +BLOODCURDLING +BLOODED +BLOODFIN +BLOODFINS +BLOODGUILT +BLOODGUILTINESS +BLOODGUILTS +BLOODGUILTY +BLOODHOUND +BLOODHOUNDS +BLOODIED +BLOODIER +BLOODIES +BLOODIEST +BLOODILY +BLOODINESS +BLOODINESSES +BLOODING +BLOODINGS +BLOODLESS +BLOODLESSLY +BLOODLESSNESS +BLOODLESSNESSES +BLOODLETTING +BLOODLETTINGS +BLOODLIKE +BLOODLINE +BLOODLINES +BLOODLUST +BLOODLUSTS +BLOODMOBILE +BLOODMOBILES +BLOODRED +BLOODROOT +BLOODROOTS +BLOODS +BLOODSHED +BLOODSHEDS +BLOODSHOT +BLOODSTAIN +BLOODSTAINED +BLOODSTAINS +BLOODSTOCK +BLOODSTOCKS +BLOODSTONE +BLOODSTONES +BLOODSTREAM +BLOODSTREAMS +BLOODSUCKER +BLOODSUCKERS +BLOODSUCKING +BLOODTHIRSTILY +BLOODTHIRSTY +BLOODWORM +BLOODWORMS +BLOODWORT +BLOODWORTS +BLOODY +BLOODYING +BLOOEY +BLOOIE +BLOOM +BLOOMED +BLOOMER +BLOOMERIES +BLOOMERS +BLOOMERY +BLOOMIER +BLOOMIEST +BLOOMING +BLOOMLESS +BLOOMS +BLOOMY +BLOOP +BLOOPED +BLOOPER +BLOOPERS +BLOOPING +BLOOPS +BLOSSOM +BLOSSOMED +BLOSSOMING +BLOSSOMS +BLOSSOMY +BLOT +BLOTCH +BLOTCHED +BLOTCHES +BLOTCHIER +BLOTCHIEST +BLOTCHILY +BLOTCHING +BLOTCHY +BLOTLESS +BLOTS +BLOTTED +BLOTTER +BLOTTERS +BLOTTIER +BLOTTIEST +BLOTTING +BLOTTO +BLOTTY +BLOUSE +BLOUSED +BLOUSES +BLOUSIER +BLOUSIEST +BLOUSILY +BLOUSING +BLOUSON +BLOUSONS +BLOUSY +BLOVIATE +BLOVIATED +BLOVIATES +BLOVIATING +BLOVIATION +BLOVIATIONS +BLOW +BLOWBACK +BLOWBACKS +BLOWBALL +BLOWBALLS +BLOWBY +BLOWBYS +BLOWDOWN +BLOWDOWNS +BLOWED +BLOWER +BLOWERS +BLOWFISH +BLOWFISHES +BLOWFLIES +BLOWFLY +BLOWGUN +BLOWGUNS +BLOWHARD +BLOWHARDS +BLOWHOLE +BLOWHOLES +BLOWIER +BLOWIEST +BLOWINESS +BLOWINESSES +BLOWING +BLOWJOB +BLOWJOBS +BLOWN +BLOWOFF +BLOWOFFS +BLOWOUT +BLOWOUTS +BLOWPIPE +BLOWPIPES +BLOWS +BLOWSED +BLOWSIER +BLOWSIEST +BLOWSILY +BLOWSY +BLOWTORCH +BLOWTORCHED +BLOWTORCHES +BLOWTORCHING +BLOWTUBE +BLOWTUBES +BLOWUP +BLOWUPS +BLOWY +BLOWZED +BLOWZIER +BLOWZIEST +BLOWZILY +BLOWZY +BLUB +BLUBBED +BLUBBER +BLUBBERED +BLUBBERER +BLUBBERERS +BLUBBERING +BLUBBERS +BLUBBERY +BLUBBING +BLUBS +BLUCHER +BLUCHERS +BLUDGE +BLUDGED +BLUDGEON +BLUDGEONED +BLUDGEONING +BLUDGEONS +BLUDGER +BLUDGERS +BLUDGES +BLUDGING +BLUE +BLUEBALL +BLUEBALLS +BLUEBEARD +BLUEBEARDS +BLUEBEAT +BLUEBEATS +BLUEBELL +BLUEBELLS +BLUEBERRIES +BLUEBERRY +BLUEBILL +BLUEBILLS +BLUEBIRD +BLUEBIRDS +BLUEBLOOD +BLUEBLOODS +BLUEBONNET +BLUEBONNETS +BLUEBOOK +BLUEBOOKS +BLUEBOTTLE +BLUEBOTTLES +BLUECAP +BLUECAPS +BLUECOAT +BLUECOATS +BLUECURLS +BLUED +BLUEFIN +BLUEFINS +BLUEFISH +BLUEFISHES +BLUEGILL +BLUEGILLS +BLUEGRASS +BLUEGRASSES +BLUEGUM +BLUEGUMS +BLUEHEAD +BLUEHEADS +BLUEING +BLUEINGS +BLUEISH +BLUEJACK +BLUEJACKET +BLUEJACKETS +BLUEJACKS +BLUEJAY +BLUEJAYS +BLUEJEANS +BLUELINE +BLUELINER +BLUELINERS +BLUELINES +BLUELY +BLUENESS +BLUENESSES +BLUENOSE +BLUENOSED +BLUENOSES +BLUEPOINT +BLUEPOINTS +BLUEPRINT +BLUEPRINTED +BLUEPRINTING +BLUEPRINTS +BLUER +BLUES +BLUESHIFT +BLUESHIFTED +BLUESHIFTS +BLUESIER +BLUESIEST +BLUESMAN +BLUESMEN +BLUEST +BLUESTEM +BLUESTEMS +BLUESTOCKING +BLUESTOCKINGS +BLUESTONE +BLUESTONES +BLUESY +BLUET +BLUETICK +BLUETICKS +BLUETONGUE +BLUETONGUES +BLUETS +BLUEWEED +BLUEWEEDS +BLUEWOOD +BLUEWOODS +BLUEY +BLUEYS +BLUFF +BLUFFABLE +BLUFFED +BLUFFER +BLUFFERS +BLUFFEST +BLUFFING +BLUFFLY +BLUFFNESS +BLUFFNESSES +BLUFFS +BLUING +BLUINGS +BLUISH +BLUISHNESS +BLUISHNESSES +BLUME +BLUMED +BLUMES +BLUMING +BLUNDER +BLUNDERBUSS +BLUNDERBUSSES +BLUNDERED +BLUNDERER +BLUNDERERS +BLUNDERING +BLUNDERINGLY +BLUNDERS +BLUNGE +BLUNGED +BLUNGER +BLUNGERS +BLUNGES +BLUNGING +BLUNT +BLUNTED +BLUNTER +BLUNTEST +BLUNTING +BLUNTLY +BLUNTNESS +BLUNTNESSES +BLUNTS +BLUR +BLURB +BLURBED +BLURBING +BLURBIST +BLURBISTS +BLURBS +BLURRED +BLURREDLY +BLURRIER +BLURRIEST +BLURRILY +BLURRINESS +BLURRINESSES +BLURRING +BLURRINGLY +BLURRY +BLURS +BLURT +BLURTED +BLURTER +BLURTERS +BLURTING +BLURTS +BLUSH +BLUSHED +BLUSHER +BLUSHERS +BLUSHES +BLUSHFUL +BLUSHING +BLUSHINGLY +BLUSTER +BLUSTERED +BLUSTERER +BLUSTERERS +BLUSTERING +BLUSTERINGLY +BLUSTEROUS +BLUSTERS +BLUSTERY +BLYPE +BLYPES +BO +BOA +BOAR +BOARD +BOARDABLE +BOARDED +BOARDER +BOARDERS +BOARDING +BOARDINGHOUSE +BOARDINGHOUSES +BOARDINGS +BOARDLIKE +BOARDMAN +BOARDMEN +BOARDROOM +BOARDROOMS +BOARDS +BOARDSAILING +BOARDSAILINGS +BOARDSAILOR +BOARDSAILORS +BOARDWALK +BOARDWALKS +BOARFISH +BOARFISHES +BOARHOUND +BOARHOUNDS +BOARISH +BOARS +BOART +BOARTS +BOAS +BOAST +BOASTED +BOASTER +BOASTERS +BOASTFUL +BOASTFULLY +BOASTFULNESS +BOASTFULNESSES +BOASTING +BOASTS +BOAT +BOATABLE +BOATBILL +BOATBILLS +BOATBUILDER +BOATBUILDERS +BOATBUILDING +BOATBUILDINGS +BOATED +BOATEL +BOATELS +BOATER +BOATERS +BOATFUL +BOATFULS +BOATHOOK +BOATHOOKS +BOATHOUSE +BOATHOUSES +BOATING +BOATINGS +BOATLIFT +BOATLIFTED +BOATLIFTING +BOATLIFTS +BOATLIKE +BOATLOAD +BOATLOADS +BOATMAN +BOATMEN +BOATNECK +BOATNECKS +BOATS +BOATSMAN +BOATSMEN +BOATSWAIN +BOATSWAINS +BOATYARD +BOATYARDS +BOB +BOBBED +BOBBER +BOBBERIES +BOBBERS +BOBBERY +BOBBIES +BOBBIN +BOBBINET +BOBBINETS +BOBBING +BOBBINS +BOBBLE +BOBBLED +BOBBLES +BOBBLING +BOBBY +BOBBYSOX +BOBCAT +BOBCATS +BOBECHE +BOBECHES +BOBOLINK +BOBOLINKS +BOBS +BOBSLED +BOBSLEDDED +BOBSLEDDER +BOBSLEDDERS +BOBSLEDDING +BOBSLEDDINGS +BOBSLEDS +BOBSLEIGH +BOBSLEIGHS +BOBSTAY +BOBSTAYS +BOBTAIL +BOBTAILED +BOBTAILING +BOBTAILS +BOBWHITE +BOBWHITES +BOCACCIO +BOCACCIOS +BOCCE +BOCCES +BOCCI +BOCCIA +BOCCIAS +BOCCIE +BOCCIES +BOCCIS +BOCHE +BOCHES +BOCK +BOCKS +BOD +BODACIOUS +BODACIOUSLY +BODDHISATTVA +BODDHISATTVAS +BODE +BODED +BODEGA +BODEGAS +BODEMENT +BODEMENTS +BODES +BODHISATTVA +BODHISATTVAS +BODHRAN +BODHRANS +BODICE +BODICES +BODIED +BODIES +BODILESS +BODILY +BODING +BODINGLY +BODINGS +BODKIN +BODKINS +BODS +BODY +BODYBOARD +BODYBOARDED +BODYBOARDING +BODYBOARDS +BODYBUILDER +BODYBUILDERS +BODYBUILDING +BODYBUILDINGS +BODYCHECK +BODYCHECKED +BODYCHECKING +BODYCHECKS +BODYGUARD +BODYGUARDED +BODYGUARDING +BODYGUARDS +BODYING +BODYSUIT +BODYSUITS +BODYSURF +BODYSURFED +BODYSURFER +BODYSURFERS +BODYSURFING +BODYSURFS +BODYWORK +BODYWORKS +BOEHMITE +BOEHMITES +BOFF +BOFFED +BOFFIN +BOFFING +BOFFINS +BOFFO +BOFFOLA +BOFFOLAS +BOFFOS +BOFFS +BOG +BOGAN +BOGANS +BOGART +BOGARTED +BOGARTING +BOGARTS +BOGBEAN +BOGBEANS +BOGEY +BOGEYED +BOGEYING +BOGEYMAN +BOGEYMEN +BOGEYS +BOGGED +BOGGIER +BOGGIEST +BOGGINESS +BOGGINESSES +BOGGING +BOGGISH +BOGGLE +BOGGLED +BOGGLER +BOGGLERS +BOGGLES +BOGGLING +BOGGY +BOGIE +BOGIES +BOGLE +BOGLES +BOGS +BOGUS +BOGUSLY +BOGUSNESS +BOGUSNESSES +BOGWOOD +BOGWOODS +BOGY +BOGYISM +BOGYISMS +BOGYMAN +BOGYMEN +BOHEA +BOHEAS +BOHEMIA +BOHEMIAN +BOHEMIANISM +BOHEMIANISMS +BOHEMIANS +BOHEMIAS +BOHO +BOHOS +BOHRIUM +BOHRIUMS +BOHUNK +BOHUNKS +BOIL +BOILABLE +BOILED +BOILER +BOILERMAKER +BOILERMAKERS +BOILERPLATE +BOILERPLATES +BOILERS +BOILERSUIT +BOILERSUITS +BOILING +BOILINGLY +BOILOFF +BOILOFFS +BOILOVER +BOILOVERS +BOILS +BOING +BOINGS +BOINK +BOINKED +BOINKING +BOINKS +BOISERIE +BOISERIES +BOISTEROUS +BOISTEROUSLY +BOISTEROUSNESS +BOITE +BOITES +BOLA +BOLAR +BOLAS +BOLASES +BOLD +BOLDER +BOLDEST +BOLDFACE +BOLDFACED +BOLDFACES +BOLDFACING +BOLDLY +BOLDNESS +BOLDNESSES +BOLDS +BOLE +BOLECTION +BOLECTIONS +BOLERO +BOLEROS +BOLES +BOLETE +BOLETES +BOLETI +BOLETUS +BOLETUSES +BOLIDE +BOLIDES +BOLIVAR +BOLIVARES +BOLIVARS +BOLIVIA +BOLIVIANO +BOLIVIANOS +BOLIVIAS +BOLL +BOLLARD +BOLLARDS +BOLLED +BOLLING +BOLLIX +BOLLIXED +BOLLIXES +BOLLIXING +BOLLOCKS +BOLLOX +BOLLOXED +BOLLOXES +BOLLOXING +BOLLS +BOLLWORM +BOLLWORMS +BOLO +BOLOGNA +BOLOGNAS +BOLOGRAPH +BOLOGRAPHS +BOLOMETER +BOLOMETERS +BOLOMETRIC +BOLOMETRICALLY +BOLONEY +BOLONEYS +BOLOS +BOLSHEVIK +BOLSHEVIKI +BOLSHEVIKS +BOLSHEVISM +BOLSHEVISMS +BOLSHEVIZE +BOLSHEVIZED +BOLSHEVIZES +BOLSHEVIZING +BOLSHIE +BOLSHIES +BOLSHY +BOLSON +BOLSONS +BOLSTER +BOLSTERED +BOLSTERER +BOLSTERERS +BOLSTERING +BOLSTERS +BOLT +BOLTED +BOLTER +BOLTERS +BOLTHEAD +BOLTHEADS +BOLTHOLE +BOLTHOLES +BOLTING +BOLTLESS +BOLTLIKE +BOLTONIA +BOLTONIAS +BOLTROPE +BOLTROPES +BOLTS +BOLUS +BOLUSES +BOMB +BOMBABLE +BOMBARD +BOMBARDED +BOMBARDER +BOMBARDERS +BOMBARDIER +BOMBARDIERS +BOMBARDING +BOMBARDMENT +BOMBARDMENTS +BOMBARDON +BOMBARDONS +BOMBARDS +BOMBAST +BOMBASTER +BOMBASTERS +BOMBASTIC +BOMBASTICALLY +BOMBASTS +BOMBAX +BOMBAZINE +BOMBAZINES +BOMBE +BOMBED +BOMBER +BOMBERS +BOMBES +BOMBESIN +BOMBESINS +BOMBINATE +BOMBINATED +BOMBINATES +BOMBINATING +BOMBINATION +BOMBINATIONS +BOMBING +BOMBINGS +BOMBLET +BOMBLETS +BOMBLOAD +BOMBLOADS +BOMBPROOF +BOMBPROOFED +BOMBPROOFING +BOMBPROOFS +BOMBS +BOMBSHELL +BOMBSHELLS +BOMBSIGHT +BOMBSIGHTS +BOMBYCID +BOMBYCIDS +BOMBYCOID +BOMBYX +BOMBYXES +BONACI +BONACIS +BONANZA +BONANZAS +BONBON +BONBONS +BOND +BONDABLE +BONDAGE +BONDAGES +BONDED +BONDER +BONDERS +BONDHOLDER +BONDHOLDERS +BONDING +BONDINGS +BONDLESS +BONDMAID +BONDMAIDS +BONDMAN +BONDMEN +BONDS +BONDSMAN +BONDSMEN +BONDSTONE +BONDSTONES +BONDUC +BONDUCS +BONDWOMAN +BONDWOMEN +BONE +BONEBLACK +BONEBLACKS +BONED +BONEFISH +BONEFISHES +BONEFISHING +BONEFISHINGS +BONEHEAD +BONEHEADED +BONEHEADEDNESS +BONEHEADS +BONELESS +BONEMEAL +BONEMEALS +BONER +BONERS +BONES +BONESET +BONESETS +BONESETTER +BONESETTERS +BONEY +BONEYARD +BONEYARDS +BONEYER +BONEYEST +BONFIRE +BONFIRES +BONG +BONGED +BONGING +BONGO +BONGOES +BONGOIST +BONGOISTS +BONGOS +BONGS +BONHOMIE +BONHOMIES +BONHOMOUS +BONIATO +BONIATOS +BONIER +BONIEST +BONIFACE +BONIFACES +BONINESS +BONINESSES +BONING +BONITA +BONITAS +BONITO +BONITOES +BONITOS +BONK +BONKED +BONKERS +BONKING +BONKS +BONNE +BONNES +BONNET +BONNETED +BONNETING +BONNETS +BONNIE +BONNIER +BONNIEST +BONNILY +BONNINESS +BONNINESSES +BONNOCK +BONNOCKS +BONNY +BONNYCLABBER +BONNYCLABBERS +BONOBO +BONOBOS +BONSAI +BONSPELL +BONSPELLS +BONSPIEL +BONSPIELS +BONTEBOK +BONTEBOKS +BONUS +BONUSES +BONY +BONZE +BONZER +BONZES +BOO +BOOB +BOOBED +BOOBIE +BOOBIES +BOOBING +BOOBIRD +BOOBIRDS +BOOBISH +BOOBOISIE +BOOBOISIES +BOOBOO +BOOBOOS +BOOBS +BOOBY +BOOCOO +BOOCOOS +BOODIES +BOODLE +BOODLED +BOODLER +BOODLERS +BOODLES +BOODLING +BOODY +BOOED +BOOGER +BOOGERMAN +BOOGERMEN +BOOGERS +BOOGEY +BOOGEYED +BOOGEYING +BOOGEYMAN +BOOGEYMEN +BOOGEYS +BOOGIE +BOOGIED +BOOGIEING +BOOGIEMAN +BOOGIEMEN +BOOGIES +BOOGY +BOOGYING +BOOGYMAN +BOOGYMEN +BOOHOO +BOOHOOED +BOOHOOING +BOOHOOS +BOOING +BOOJUM +BOOJUMS +BOOK +BOOKABLE +BOOKBINDER +BOOKBINDERIES +BOOKBINDERS +BOOKBINDERY +BOOKBINDING +BOOKBINDINGS +BOOKCASE +BOOKCASES +BOOKED +BOOKEND +BOOKENDS +BOOKER +BOOKERS +BOOKFUL +BOOKFULS +BOOKIE +BOOKIES +BOOKING +BOOKINGS +BOOKISH +BOOKISHLY +BOOKISHNESS +BOOKISHNESSES +BOOKKEEPER +BOOKKEEPERS +BOOKKEEPING +BOOKKEEPINGS +BOOKLET +BOOKLETS +BOOKLICE +BOOKLORE +BOOKLORES +BOOKLOUSE +BOOKMAKER +BOOKMAKERS +BOOKMAKING +BOOKMAKINGS +BOOKMAN +BOOKMARK +BOOKMARKED +BOOKMARKER +BOOKMARKERS +BOOKMARKING +BOOKMARKS +BOOKMEN +BOOKMOBILE +BOOKMOBILES +BOOKOO +BOOKOOS +BOOKPLATE +BOOKPLATES +BOOKRACK +BOOKRACKS +BOOKREST +BOOKRESTS +BOOKS +BOOKSELLER +BOOKSELLERS +BOOKSELLING +BOOKSELLINGS +BOOKSHELF +BOOKSHELVES +BOOKSHOP +BOOKSHOPS +BOOKSTALL +BOOKSTALLS +BOOKSTAND +BOOKSTANDS +BOOKSTORE +BOOKSTORES +BOOKWORM +BOOKWORMS +BOOM +BOOMBOX +BOOMBOXES +BOOMED +BOOMER +BOOMERANG +BOOMERANGED +BOOMERANGING +BOOMERANGS +BOOMERS +BOOMIER +BOOMIEST +BOOMING +BOOMINGLY +BOOMKIN +BOOMKINS +BOOMLET +BOOMLETS +BOOMS +BOOMTOWN +BOOMTOWNS +BOOMY +BOON +BOONDOCK +BOONDOCKS +BOONDOGGLE +BOONDOGGLED +BOONDOGGLER +BOONDOGGLERS +BOONDOGGLES +BOONDOGGLING +BOONIES +BOONLESS +BOONS +BOOR +BOORISH +BOORISHLY +BOORISHNESS +BOORISHNESSES +BOORS +BOOS +BOOST +BOOSTED +BOOSTER +BOOSTERISM +BOOSTERISMS +BOOSTERS +BOOSTING +BOOSTS +BOOT +BOOTABLE +BOOTBLACK +BOOTBLACKS +BOOTED +BOOTEE +BOOTEES +BOOTERIES +BOOTERY +BOOTH +BOOTHS +BOOTIE +BOOTIES +BOOTING +BOOTJACK +BOOTJACKS +BOOTLACE +BOOTLACES +BOOTLEG +BOOTLEGGED +BOOTLEGGER +BOOTLEGGERS +BOOTLEGGING +BOOTLEGS +BOOTLESS +BOOTLESSLY +BOOTLESSNESS +BOOTLESSNESSES +BOOTLICK +BOOTLICKED +BOOTLICKER +BOOTLICKERS +BOOTLICKING +BOOTLICKS +BOOTS +BOOTSTRAP +BOOTSTRAPPED +BOOTSTRAPPING +BOOTSTRAPS +BOOTY +BOOZE +BOOZED +BOOZER +BOOZERS +BOOZES +BOOZIER +BOOZIEST +BOOZILY +BOOZINESS +BOOZINESSES +BOOZING +BOOZY +BOP +BOPEEP +BOPEEPS +BOPPED +BOPPER +BOPPERS +BOPPING +BOPS +BORA +BORACES +BORACIC +BORACITE +BORACITES +BORAGE +BORAGES +BORAL +BORALS +BORANE +BORANES +BORAS +BORATE +BORATED +BORATES +BORATING +BORAX +BORAXES +BORBORYGMI +BORBORYGMUS +BORDEAUX +BORDEL +BORDELLO +BORDELLOS +BORDELS +BORDER +BORDEREAU +BORDEREAUX +BORDERED +BORDERER +BORDERERS +BORDERING +BORDERLAND +BORDERLANDS +BORDERLINE +BORDERLINES +BORDERS +BORDURE +BORDURES +BORE +BOREAL +BOREAS +BOREASES +BORECOLE +BORECOLES +BORED +BOREDOM +BOREDOMS +BOREEN +BOREENS +BOREHOLE +BOREHOLES +BORER +BORERS +BORES +BORESCOPE +BORESCOPES +BORESOME +BORIC +BORIDE +BORIDES +BORING +BORINGLY +BORINGNESS +BORINGNESSES +BORINGS +BORK +BORKED +BORKING +BORKS +BORN +BORNE +BORNEOL +BORNEOLS +BORNITE +BORNITES +BORNITIC +BOROHYDRIDE +BOROHYDRIDES +BORON +BORONIC +BORONS +BOROSILICATE +BOROSILICATES +BOROUGH +BOROUGHS +BORRELIA +BORRELIAS +BORROW +BORROWED +BORROWER +BORROWERS +BORROWING +BORROWINGS +BORROWS +BORSCH +BORSCHES +BORSCHT +BORSCHTS +BORSHT +BORSHTS +BORSTAL +BORSTALS +BORT +BORTS +BORTY +BORTZ +BORTZES +BORZOI +BORZOIS +BOS +BOSCAGE +BOSCAGES +BOSCHBOK +BOSCHBOKS +BOSCHVARK +BOSCHVARKS +BOSH +BOSHBOK +BOSHBOKS +BOSHES +BOSHVARK +BOSHVARKS +BOSK +BOSKAGE +BOSKAGES +BOSKER +BOSKET +BOSKETS +BOSKIER +BOSKIEST +BOSKINESS +BOSKINESSES +BOSKS +BOSKY +BOSOM +BOSOMED +BOSOMING +BOSOMS +BOSOMY +BOSON +BOSONIC +BOSONS +BOSQUE +BOSQUES +BOSQUET +BOSQUETS +BOSS +BOSSDOM +BOSSDOMS +BOSSED +BOSSES +BOSSIER +BOSSIES +BOSSIEST +BOSSILY +BOSSINESS +BOSSINESSES +BOSSING +BOSSISM +BOSSISMS +BOSSY +BOSTON +BOSTONS +BOSUN +BOSUNS +BOT +BOTA +BOTANIC +BOTANICA +BOTANICAL +BOTANICALLY +BOTANICALS +BOTANICAS +BOTANIES +BOTANISE +BOTANISED +BOTANISES +BOTANISING +BOTANIST +BOTANISTS +BOTANIZE +BOTANIZED +BOTANIZER +BOTANIZERS +BOTANIZES +BOTANIZING +BOTANY +BOTAS +BOTCH +BOTCHED +BOTCHEDLY +BOTCHER +BOTCHERIES +BOTCHERS +BOTCHERY +BOTCHES +BOTCHIER +BOTCHIEST +BOTCHILY +BOTCHING +BOTCHY +BOTEL +BOTELS +BOTFLIES +BOTFLY +BOTH +BOTHER +BOTHERATION +BOTHERATIONS +BOTHERED +BOTHERING +BOTHERS +BOTHERSOME +BOTHIES +BOTHRIA +BOTHRIUM +BOTHRIUMS +BOTHY +BOTONEE +BOTONNEE +BOTRYOID +BOTRYOIDAL +BOTRYOSE +BOTRYTIS +BOTRYTISES +BOTS +BOTT +BOTTLE +BOTTLEBRUSH +BOTTLEBRUSHES +BOTTLED +BOTTLEFUL +BOTTLEFULS +BOTTLENECK +BOTTLENECKED +BOTTLENECKING +BOTTLENECKS +BOTTLER +BOTTLERS +BOTTLES +BOTTLING +BOTTLINGS +BOTTOM +BOTTOMED +BOTTOMER +BOTTOMERS +BOTTOMING +BOTTOMLAND +BOTTOMLANDS +BOTTOMLESS +BOTTOMLESSLY +BOTTOMLESSNESS +BOTTOMMOST +BOTTOMRIES +BOTTOMRY +BOTTOMS +BOTTS +BOTULIN +BOTULINAL +BOTULINS +BOTULINUM +BOTULINUMS +BOTULINUS +BOTULINUSES +BOTULISM +BOTULISMS +BOUBOU +BOUBOUS +BOUCHEE +BOUCHEES +BOUCLE +BOUCLES +BOUDIN +BOUDINS +BOUDOIR +BOUDOIRS +BOUFFANT +BOUFFANTS +BOUFFE +BOUFFES +BOUGAINVILLAEA +BOUGAINVILLAEAS +BOUGAINVILLEA +BOUGAINVILLEAS +BOUGH +BOUGHED +BOUGHLESS +BOUGHPOT +BOUGHPOTS +BOUGHS +BOUGHT +BOUGHTEN +BOUGIE +BOUGIES +BOUILLABAISSE +BOUILLABAISSES +BOUILLON +BOUILLONS +BOULDER +BOULDERED +BOULDERER +BOULDERERS +BOULDERING +BOULDERS +BOULDERY +BOULE +BOULES +BOULEVARD +BOULEVARDIER +BOULEVARDIERS +BOULEVARDS +BOULEVERSEMENT +BOULEVERSEMENTS +BOULLE +BOULLES +BOUNCE +BOUNCED +BOUNCER +BOUNCERS +BOUNCES +BOUNCIER +BOUNCIEST +BOUNCILY +BOUNCING +BOUNCINGLY +BOUNCY +BOUND +BOUNDABLE +BOUNDARIES +BOUNDARY +BOUNDED +BOUNDEDNESS +BOUNDEDNESSES +BOUNDEN +BOUNDER +BOUNDERISH +BOUNDERS +BOUNDING +BOUNDLESS +BOUNDLESSLY +BOUNDLESSNESS +BOUNDLESSNESSES +BOUNDNESS +BOUNDNESSES +BOUNDS +BOUNTEOUS +BOUNTEOUSLY +BOUNTEOUSNESS +BOUNTEOUSNESSES +BOUNTIED +BOUNTIES +BOUNTIFUL +BOUNTIFULLY +BOUNTIFULNESS +BOUNTIFULNESSES +BOUNTY +BOUQUET +BOUQUETS +BOURBON +BOURBONISM +BOURBONISMS +BOURBONS +BOURDON +BOURDONS +BOURG +BOURGEOIS +BOURGEOISE +BOURGEOISES +BOURGEOISIE +BOURGEOISIES +BOURGEOISIFIED +BOURGEOISIFIES +BOURGEOISIFY +BOURGEOISIFYING +BOURGEON +BOURGEONED +BOURGEONING +BOURGEONS +BOURGS +BOURGUIGNON +BOURGUIGNONNE +BOURN +BOURNE +BOURNES +BOURNS +BOURREE +BOURREES +BOURRIDE +BOURRIDES +BOURSE +BOURSES +BOURSIN +BOURSINS +BOURTREE +BOURTREES +BOUSE +BOUSED +BOUSES +BOUSING +BOUSOUKI +BOUSOUKIA +BOUSOUKIS +BOUSTROPHEDON +BOUSTROPHEDONIC +BOUSTROPHEDONS +BOUSY +BOUT +BOUTIQUE +BOUTIQUES +BOUTIQUEY +BOUTON +BOUTONNIERE +BOUTONNIERES +BOUTONS +BOUTS +BOUVARDIA +BOUVARDIAS +BOUVIER +BOUVIERS +BOUZOUKI +BOUZOUKIA +BOUZOUKIS +BOVID +BOVIDS +BOVINE +BOVINELY +BOVINES +BOVINITIES +BOVINITY +BOW +BOWDLERISE +BOWDLERISED +BOWDLERISES +BOWDLERISING +BOWDLERIZATION +BOWDLERIZATIONS +BOWDLERIZE +BOWDLERIZED +BOWDLERIZER +BOWDLERIZERS +BOWDLERIZES +BOWDLERIZING +BOWED +BOWEL +BOWELED +BOWELING +BOWELLED +BOWELLESS +BOWELLING +BOWELS +BOWER +BOWERBIRD +BOWERBIRDS +BOWERED +BOWERIES +BOWERING +BOWERS +BOWERY +BOWFIN +BOWFINS +BOWFRONT +BOWHEAD +BOWHEADS +BOWHUNTER +BOWHUNTERS +BOWING +BOWINGLY +BOWINGS +BOWKNOT +BOWKNOTS +BOWL +BOWLDER +BOWLDERS +BOWLED +BOWLEG +BOWLEGGED +BOWLEGS +BOWLER +BOWLERS +BOWLESS +BOWLFUL +BOWLFULS +BOWLIKE +BOWLINE +BOWLINES +BOWLING +BOWLINGS +BOWLLIKE +BOWLS +BOWMAN +BOWMEN +BOWPOT +BOWPOTS +BOWS +BOWSE +BOWSED +BOWSES +BOWSHOT +BOWSHOTS +BOWSING +BOWSPRIT +BOWSPRITS +BOWSTRING +BOWSTRINGED +BOWSTRINGING +BOWSTRINGS +BOWSTRUNG +BOWWOW +BOWWOWED +BOWWOWING +BOWWOWS +BOWYER +BOWYERS +BOX +BOXBALL +BOXBALLS +BOXBERRIES +BOXBERRY +BOXBOARD +BOXBOARDS +BOXCAR +BOXCARS +BOXED +BOXER +BOXERS +BOXES +BOXFISH +BOXFISHES +BOXFUL +BOXFULS +BOXHAUL +BOXHAULED +BOXHAULING +BOXHAULS +BOXIER +BOXIEST +BOXILY +BOXINESS +BOXINESSES +BOXING +BOXINGS +BOXLIKE +BOXTHORN +BOXTHORNS +BOXWOOD +BOXWOODS +BOXY +BOY +BOYAR +BOYARD +BOYARDS +BOYARISM +BOYARISMS +BOYARS +BOYCHICK +BOYCHICKS +BOYCHIK +BOYCHIKS +BOYCOTT +BOYCOTTED +BOYCOTTER +BOYCOTTERS +BOYCOTTING +BOYCOTTS +BOYFRIEND +BOYFRIENDS +BOYHOOD +BOYHOODS +BOYISH +BOYISHLY +BOYISHNESS +BOYISHNESSES +BOYLA +BOYLAS +BOYO +BOYOS +BOYS +BOYSENBERRIES +BOYSENBERRY +BOZO +BOZOS +BRA +BRABBLE +BRABBLED +BRABBLER +BRABBLERS +BRABBLES +BRABBLING +BRACE +BRACED +BRACELET +BRACELETS +BRACER +BRACERO +BRACEROS +BRACERS +BRACES +BRACH +BRACHES +BRACHET +BRACHETS +BRACHIA +BRACHIAL +BRACHIALS +BRACHIATE +BRACHIATED +BRACHIATES +BRACHIATING +BRACHIATION +BRACHIATIONS +BRACHIATOR +BRACHIATORS +BRACHIOPOD +BRACHIOPODS +BRACHIUM +BRACHS +BRACHYCEPHALIC +BRACHYCEPHALIES +BRACHYCEPHALY +BRACHYPTEROUS +BRACING +BRACINGLY +BRACINGS +BRACIOLA +BRACIOLAS +BRACIOLE +BRACIOLES +BRACKEN +BRACKENS +BRACKET +BRACKETED +BRACKETING +BRACKETS +BRACKISH +BRACKISHNESS +BRACKISHNESSES +BRACONID +BRACONIDS +BRACT +BRACTEAL +BRACTEATE +BRACTED +BRACTEOLE +BRACTEOLES +BRACTLESS +BRACTLET +BRACTLETS +BRACTS +BRAD +BRADAWL +BRADAWLS +BRADDED +BRADDING +BRADOON +BRADOONS +BRADS +BRADYCARDIA +BRADYCARDIAS +BRADYKININ +BRADYKININS +BRAE +BRAES +BRAG +BRAGGADOCIO +BRAGGADOCIOS +BRAGGART +BRAGGARTS +BRAGGED +BRAGGER +BRAGGERS +BRAGGEST +BRAGGIER +BRAGGIEST +BRAGGING +BRAGGY +BRAGS +BRAHMA +BRAHMAS +BRAID +BRAIDED +BRAIDER +BRAIDERS +BRAIDING +BRAIDINGS +BRAIDS +BRAIL +BRAILED +BRAILING +BRAILLE +BRAILLED +BRAILLER +BRAILLERS +BRAILLES +BRAILLEWRITER +BRAILLEWRITERS +BRAILLING +BRAILLIST +BRAILLISTS +BRAILS +BRAIN +BRAINCASE +BRAINCASES +BRAINCHILD +BRAINCHILDREN +BRAINED +BRAINIAC +BRAINIACS +BRAINIER +BRAINIEST +BRAINILY +BRAININESS +BRAININESSES +BRAINING +BRAINISH +BRAINLESS +BRAINLESSLY +BRAINLESSNESS +BRAINLESSNESSES +BRAINPAN +BRAINPANS +BRAINPOWER +BRAINPOWERS +BRAINS +BRAINSICK +BRAINSICKLY +BRAINSTEM +BRAINSTEMS +BRAINSTORM +BRAINSTORMED +BRAINSTORMER +BRAINSTORMERS +BRAINSTORMING +BRAINSTORMINGS +BRAINSTORMS +BRAINTEASER +BRAINTEASERS +BRAINWASH +BRAINWASHED +BRAINWASHER +BRAINWASHERS +BRAINWASHES +BRAINWASHING +BRAINWASHINGS +BRAINY +BRAISE +BRAISED +BRAISES +BRAISING +BRAIZE +BRAIZES +BRAKE +BRAKEAGE +BRAKEAGES +BRAKED +BRAKELESS +BRAKEMAN +BRAKEMEN +BRAKES +BRAKIER +BRAKIEST +BRAKING +BRAKY +BRALESS +BRAMBLE +BRAMBLED +BRAMBLES +BRAMBLIER +BRAMBLIEST +BRAMBLING +BRAMBLINGS +BRAMBLY +BRAN +BRANCH +BRANCHED +BRANCHES +BRANCHIA +BRANCHIAE +BRANCHIAL +BRANCHIER +BRANCHIEST +BRANCHING +BRANCHIOPOD +BRANCHIOPODS +BRANCHLESS +BRANCHLET +BRANCHLETS +BRANCHLINE +BRANCHLINES +BRANCHY +BRAND +BRANDED +BRANDER +BRANDERS +BRANDIED +BRANDIES +BRANDING +BRANDINGS +BRANDISH +BRANDISHED +BRANDISHES +BRANDISHING +BRANDLESS +BRANDLING +BRANDLINGS +BRANDS +BRANDY +BRANDYING +BRANK +BRANKS +BRANNED +BRANNER +BRANNERS +BRANNIER +BRANNIEST +BRANNIGAN +BRANNIGANS +BRANNING +BRANNY +BRANS +BRANT +BRANTAIL +BRANTAILS +BRANTS +BRAS +BRASH +BRASHER +BRASHES +BRASHEST +BRASHIER +BRASHIEST +BRASHLY +BRASHNESS +BRASHNESSES +BRASHY +BRASIER +BRASIERS +BRASIL +BRASILEIN +BRASILEINS +BRASILIN +BRASILINS +BRASILS +BRASS +BRASSAGE +BRASSAGES +BRASSARD +BRASSARDS +BRASSART +BRASSARTS +BRASSBOUND +BRASSED +BRASSERIE +BRASSERIES +BRASSES +BRASSICA +BRASSICAS +BRASSIE +BRASSIER +BRASSIERE +BRASSIERES +BRASSIES +BRASSIEST +BRASSILY +BRASSINESS +BRASSINESSES +BRASSING +BRASSISH +BRASSWARE +BRASSWARES +BRASSY +BRAT +BRATS +BRATTICE +BRATTICED +BRATTICES +BRATTICING +BRATTIER +BRATTIEST +BRATTINESS +BRATTINESSES +BRATTISH +BRATTLE +BRATTLED +BRATTLES +BRATTLING +BRATTY +BRATWURST +BRATWURSTS +BRAUNITE +BRAUNITES +BRAUNSCHWEIGER +BRAUNSCHWEIGERS +BRAVA +BRAVADO +BRAVADOES +BRAVADOS +BRAVAS +BRAVE +BRAVED +BRAVELY +BRAVENESS +BRAVENESSES +BRAVER +BRAVERIES +BRAVERS +BRAVERY +BRAVES +BRAVEST +BRAVI +BRAVING +BRAVO +BRAVOED +BRAVOES +BRAVOING +BRAVOS +BRAVURA +BRAVURAS +BRAVURE +BRAW +BRAWER +BRAWEST +BRAWL +BRAWLED +BRAWLER +BRAWLERS +BRAWLIE +BRAWLIER +BRAWLIEST +BRAWLING +BRAWLS +BRAWLY +BRAWN +BRAWNIER +BRAWNIEST +BRAWNILY +BRAWNINESS +BRAWNINESSES +BRAWNS +BRAWNY +BRAWS +BRAXIES +BRAXY +BRAY +BRAYED +BRAYER +BRAYERS +BRAYING +BRAYS +BRAZA +BRAZAS +BRAZE +BRAZED +BRAZEN +BRAZENED +BRAZENING +BRAZENLY +BRAZENNESS +BRAZENNESSES +BRAZENS +BRAZER +BRAZERS +BRAZES +BRAZIER +BRAZIERS +BRAZIL +BRAZILEIN +BRAZILEINS +BRAZILIN +BRAZILINS +BRAZILS +BRAZILWOOD +BRAZILWOODS +BRAZING +BREACH +BREACHED +BREACHER +BREACHERS +BREACHES +BREACHING +BREAD +BREADBASKET +BREADBASKETS +BREADBOARD +BREADBOARDED +BREADBOARDING +BREADBOARDS +BREADBOX +BREADBOXES +BREADED +BREADFRUIT +BREADFRUITS +BREADING +BREADLESS +BREADLINE +BREADLINES +BREADNUT +BREADNUTS +BREADROOT +BREADROOTS +BREADS +BREADSTUFF +BREADSTUFFS +BREADTH +BREADTHS +BREADTHWISE +BREADWINNER +BREADWINNERS +BREADWINNING +BREADWINNINGS +BREADY +BREAK +BREAKABLE +BREAKABLES +BREAKAGE +BREAKAGES +BREAKAWAY +BREAKAWAYS +BREAKDOWN +BREAKDOWNS +BREAKER +BREAKERS +BREAKEVEN +BREAKEVENS +BREAKFAST +BREAKFASTED +BREAKFASTER +BREAKFASTERS +BREAKFASTING +BREAKFASTS +BREAKFRONT +BREAKFRONTS +BREAKING +BREAKINGS +BREAKNECK +BREAKOUT +BREAKOUTS +BREAKS +BREAKTHROUGH +BREAKTHROUGHS +BREAKUP +BREAKUPS +BREAKWALL +BREAKWALLS +BREAKWATER +BREAKWATERS +BREAM +BREAMED +BREAMING +BREAMS +BREAST +BREASTBONE +BREASTBONES +BREASTED +BREASTFED +BREASTFEED +BREASTFEEDING +BREASTFEEDS +BREASTING +BREASTPIN +BREASTPINS +BREASTPLATE +BREASTPLATES +BREASTS +BREASTSTROKE +BREASTSTROKER +BREASTSTROKERS +BREASTSTROKES +BREASTWORK +BREASTWORKS +BREATH +BREATHABILITIES +BREATHABILITY +BREATHABLE +BREATHE +BREATHED +BREATHER +BREATHERS +BREATHES +BREATHIER +BREATHIEST +BREATHILY +BREATHINESS +BREATHINESSES +BREATHING +BREATHINGS +BREATHLESS +BREATHLESSLY +BREATHLESSNESS +BREATHS +BREATHTAKING +BREATHTAKINGLY +BREATHY +BRECCIA +BRECCIAL +BRECCIAS +BRECCIATE +BRECCIATED +BRECCIATES +BRECCIATING +BRECCIATION +BRECCIATIONS +BRECHAM +BRECHAMS +BRECHAN +BRECHANS +BRED +BREDE +BREDES +BREE +BREECH +BREECHBLOCK +BREECHBLOCKS +BREECHCLOTH +BREECHCLOTHS +BREECHCLOUT +BREECHCLOUTS +BREECHED +BREECHES +BREECHING +BREECHINGS +BREECHLOADER +BREECHLOADERS +BREED +BREEDER +BREEDERS +BREEDING +BREEDINGS +BREEDS +BREEKS +BREES +BREEZE +BREEZED +BREEZELESS +BREEZES +BREEZEWAY +BREEZEWAYS +BREEZIER +BREEZIEST +BREEZILY +BREEZINESS +BREEZINESSES +BREEZING +BREEZY +BREGMA +BREGMATA +BREGMATE +BREGMATIC +BREMSSTRAHLUNG +BREMSSTRAHLUNGS +BREN +BRENS +BRENT +BRENTS +BRETHREN +BREVE +BREVES +BREVET +BREVETCIES +BREVETCY +BREVETED +BREVETING +BREVETS +BREVETTED +BREVETTING +BREVIARIES +BREVIARY +BREVIER +BREVIERS +BREVITIES +BREVITY +BREW +BREWAGE +BREWAGES +BREWED +BREWER +BREWERIES +BREWERS +BREWERY +BREWING +BREWINGS +BREWIS +BREWISES +BREWPUB +BREWPUBS +BREWS +BREWSKI +BREWSKIES +BREWSKIS +BRIAR +BRIARD +BRIARDS +BRIARROOT +BRIARROOTS +BRIARS +BRIARWOOD +BRIARWOODS +BRIARY +BRIBABLE +BRIBE +BRIBED +BRIBEE +BRIBEES +BRIBER +BRIBERIES +BRIBERS +BRIBERY +BRIBES +BRIBING +BRICK +BRICKBAT +BRICKBATS +BRICKED +BRICKFIELD +BRICKFIELDS +BRICKIER +BRICKIEST +BRICKING +BRICKKILN +BRICKKILNS +BRICKLAYER +BRICKLAYERS +BRICKLAYING +BRICKLAYINGS +BRICKLE +BRICKLES +BRICKLIKE +BRICKS +BRICKWORK +BRICKWORKS +BRICKY +BRICKYARD +BRICKYARDS +BRICOLAGE +BRICOLAGES +BRICOLE +BRICOLES +BRIDAL +BRIDALLY +BRIDALS +BRIDE +BRIDEGROOM +BRIDEGROOMS +BRIDES +BRIDESMAID +BRIDESMAIDS +BRIDEWELL +BRIDEWELLS +BRIDGE +BRIDGEABLE +BRIDGED +BRIDGEHEAD +BRIDGEHEADS +BRIDGELESS +BRIDGES +BRIDGEWORK +BRIDGEWORKS +BRIDGING +BRIDGINGS +BRIDLE +BRIDLED +BRIDLER +BRIDLERS +BRIDLES +BRIDLING +BRIDOON +BRIDOONS +BRIE +BRIEF +BRIEFCASE +BRIEFCASES +BRIEFED +BRIEFER +BRIEFERS +BRIEFEST +BRIEFING +BRIEFINGS +BRIEFLESS +BRIEFLY +BRIEFNESS +BRIEFNESSES +BRIEFS +BRIER +BRIERROOT +BRIERROOTS +BRIERS +BRIERWOOD +BRIERWOODS +BRIERY +BRIES +BRIG +BRIGADE +BRIGADED +BRIGADES +BRIGADIER +BRIGADIERS +BRIGADING +BRIGAND +BRIGANDAGE +BRIGANDAGES +BRIGANDINE +BRIGANDINES +BRIGANDS +BRIGANTINE +BRIGANTINES +BRIGHT +BRIGHTEN +BRIGHTENED +BRIGHTENER +BRIGHTENERS +BRIGHTENING +BRIGHTENS +BRIGHTER +BRIGHTEST +BRIGHTISH +BRIGHTLY +BRIGHTNESS +BRIGHTNESSES +BRIGHTS +BRIGHTWORK +BRIGHTWORKS +BRIGS +BRILL +BRILLIANCE +BRILLIANCES +BRILLIANCIES +BRILLIANCY +BRILLIANT +BRILLIANTINE +BRILLIANTINES +BRILLIANTLY +BRILLIANTS +BRILLO +BRILLOS +BRILLS +BRIM +BRIMFUL +BRIMFULL +BRIMFULLY +BRIMLESS +BRIMMED +BRIMMER +BRIMMERS +BRIMMING +BRIMS +BRIMSTONE +BRIMSTONES +BRIMSTONY +BRIN +BRINDED +BRINDLE +BRINDLED +BRINDLES +BRINE +BRINED +BRINELESS +BRINER +BRINERS +BRINES +BRING +BRINGDOWN +BRINGDOWNS +BRINGER +BRINGERS +BRINGING +BRINGS +BRINIER +BRINIES +BRINIEST +BRININESS +BRININESSES +BRINING +BRINISH +BRINK +BRINKMANSHIP +BRINKMANSHIPS +BRINKS +BRINKSMANSHIP +BRINKSMANSHIPS +BRINS +BRINY +BRIO +BRIOCHE +BRIOCHES +BRIOLETTE +BRIOLETTES +BRIONIES +BRIONY +BRIOS +BRIQUET +BRIQUETS +BRIQUETTE +BRIQUETTED +BRIQUETTES +BRIQUETTING +BRIS +BRISANCE +BRISANCES +BRISANT +BRISES +BRISK +BRISKED +BRISKER +BRISKEST +BRISKET +BRISKETS +BRISKING +BRISKLY +BRISKNESS +BRISKNESSES +BRISKS +BRISLING +BRISLINGS +BRISS +BRISSES +BRISTLE +BRISTLED +BRISTLELIKE +BRISTLES +BRISTLETAIL +BRISTLETAILS +BRISTLIER +BRISTLIEST +BRISTLING +BRISTLY +BRISTOL +BRISTOLS +BRIT +BRITANNIA +BRITANNIAS +BRITCHES +BRITH +BRITHS +BRITS +BRITSKA +BRITSKAS +BRITT +BRITTANIA +BRITTANIAS +BRITTLE +BRITTLED +BRITTLELY +BRITTLENESS +BRITTLENESSES +BRITTLER +BRITTLES +BRITTLEST +BRITTLING +BRITTLY +BRITTS +BRITZKA +BRITZKAS +BRITZSKA +BRITZSKAS +BRO +BROACH +BROACHED +BROACHER +BROACHERS +BROACHES +BROACHING +BROAD +BROADAX +BROADAXE +BROADAXES +BROADBAND +BROADBANDS +BROADBEAN +BROADBEANS +BROADBILL +BROADBILLS +BROADCAST +BROADCASTED +BROADCASTER +BROADCASTERS +BROADCASTING +BROADCASTS +BROADCLOTH +BROADCLOTHS +BROADEN +BROADENED +BROADENER +BROADENERS +BROADENING +BROADENS +BROADER +BROADEST +BROADISH +BROADLEAF +BROADLEAVES +BROADLOOM +BROADLOOMS +BROADLY +BROADNESS +BROADNESSES +BROADS +BROADSCALE +BROADSHEET +BROADSHEETS +BROADSIDE +BROADSIDED +BROADSIDES +BROADSIDING +BROADSWORD +BROADSWORDS +BROADTAIL +BROADTAILS +BROCADE +BROCADED +BROCADES +BROCADING +BROCATEL +BROCATELLE +BROCATELLES +BROCATELS +BROCCOLI +BROCCOLIS +BROCHE +BROCHETTE +BROCHETTES +BROCHURE +BROCHURES +BROCK +BROCKAGE +BROCKAGES +BROCKET +BROCKETS +BROCKS +BROCOLI +BROCOLIS +BROGAN +BROGANS +BROGUE +BROGUERIES +BROGUERY +BROGUES +BROGUISH +BROIDER +BROIDERED +BROIDERER +BROIDERERS +BROIDERIES +BROIDERING +BROIDERS +BROIDERY +BROIL +BROILED +BROILER +BROILERS +BROILING +BROILS +BROKAGE +BROKAGES +BROKE +BROKEN +BROKENHEARTED +BROKENLY +BROKENNESS +BROKENNESSES +BROKER +BROKERAGE +BROKERAGES +BROKERED +BROKERING +BROKERINGS +BROKERS +BROKING +BROKINGS +BROLLIES +BROLLY +BROMAL +BROMALS +BROMATE +BROMATED +BROMATES +BROMATING +BROME +BROMEGRASS +BROMEGRASSES +BROMELAIN +BROMELAINS +BROMELIAD +BROMELIADS +BROMELIN +BROMELINS +BROMES +BROMIC +BROMID +BROMIDE +BROMIDES +BROMIDIC +BROMIDS +BROMIN +BROMINATE +BROMINATED +BROMINATES +BROMINATING +BROMINATION +BROMINATIONS +BROMINE +BROMINES +BROMINISM +BROMINISMS +BROMINS +BROMISM +BROMISMS +BROMIZE +BROMIZED +BROMIZES +BROMIZING +BROMO +BROMOCRIPTINE +BROMOCRIPTINES +BROMOS +BROMOURACIL +BROMOURACILS +BRONC +BRONCHI +BRONCHIA +BRONCHIAL +BRONCHIALLY +BRONCHIECTASES +BRONCHIECTASIS +BRONCHIOLAR +BRONCHIOLE +BRONCHIOLES +BRONCHITIC +BRONCHITIS +BRONCHITISES +BRONCHIUM +BRONCHO +BRONCHODILATOR +BRONCHODILATORS +BRONCHOGENIC +BRONCHOS +BRONCHOSCOPE +BRONCHOSCOPES +BRONCHOSCOPIC +BRONCHOSCOPIES +BRONCHOSCOPIST +BRONCHOSCOPISTS +BRONCHOSCOPY +BRONCHOSPASM +BRONCHOSPASMS +BRONCHOSPASTIC +BRONCHUS +BRONCO +BRONCOBUSTER +BRONCOBUSTERS +BRONCOS +BRONCS +BRONTOSAUR +BRONTOSAURS +BRONTOSAURUS +BRONTOSAURUSES +BRONZE +BRONZED +BRONZER +BRONZERS +BRONZES +BRONZIER +BRONZIEST +BRONZING +BRONZINGS +BRONZY +BROO +BROOCH +BROOCHES +BROOD +BROODED +BROODER +BROODERS +BROODIER +BROODIEST +BROODILY +BROODINESS +BROODINESSES +BROODING +BROODINGLY +BROODLESS +BROODMARE +BROODMARES +BROODS +BROODY +BROOK +BROOKED +BROOKIE +BROOKIES +BROOKING +BROOKITE +BROOKITES +BROOKLET +BROOKLETS +BROOKLIKE +BROOKLIME +BROOKLIMES +BROOKS +BROOM +BROOMBALL +BROOMBALLER +BROOMBALLERS +BROOMBALLS +BROOMCORN +BROOMCORNS +BROOMED +BROOMIER +BROOMIEST +BROOMING +BROOMRAPE +BROOMRAPES +BROOMS +BROOMSTICK +BROOMSTICKS +BROOMY +BROOS +BROS +BROSE +BROSES +BROSY +BROTH +BROTHEL +BROTHELS +BROTHER +BROTHERED +BROTHERHOOD +BROTHERHOODS +BROTHERING +BROTHERLINESS +BROTHERLINESSES +BROTHERLY +BROTHERS +BROTHS +BROTHY +BROUGHAM +BROUGHAMS +BROUGHT +BROUHAHA +BROUHAHAS +BROW +BROWALLIA +BROWALLIAS +BROWBAND +BROWBANDS +BROWBEAT +BROWBEATEN +BROWBEATING +BROWBEATS +BROWED +BROWLESS +BROWN +BROWNED +BROWNER +BROWNEST +BROWNFIELD +BROWNFIELDS +BROWNIE +BROWNIER +BROWNIES +BROWNIEST +BROWNING +BROWNISH +BROWNNESS +BROWNNESSES +BROWNNOSE +BROWNNOSED +BROWNNOSER +BROWNNOSERS +BROWNNOSES +BROWNNOSING +BROWNOUT +BROWNOUTS +BROWNS +BROWNSHIRT +BROWNSHIRTS +BROWNSTONE +BROWNSTONES +BROWNY +BROWRIDGE +BROWRIDGES +BROWS +BROWSABLE +BROWSABLES +BROWSE +BROWSED +BROWSER +BROWSERS +BROWSES +BROWSING +BRR +BRRR +BRUCELLA +BRUCELLAE +BRUCELLAS +BRUCELLOSES +BRUCELLOSIS +BRUCIN +BRUCINE +BRUCINES +BRUCINS +BRUGH +BRUGHS +BRUIN +BRUINS +BRUISE +BRUISED +BRUISER +BRUISERS +BRUISES +BRUISING +BRUIT +BRUITED +BRUITER +BRUITERS +BRUITING +BRUITS +BRULOT +BRULOTS +BRULYIE +BRULYIES +BRULZIE +BRULZIES +BRUMAL +BRUMBIES +BRUMBY +BRUME +BRUMES +BRUMMAGEM +BRUMMAGEMS +BRUMOUS +BRUNCH +BRUNCHED +BRUNCHER +BRUNCHERS +BRUNCHES +BRUNCHING +BRUNET +BRUNETS +BRUNETTE +BRUNETTES +BRUNG +BRUNIZEM +BRUNIZEMS +BRUNT +BRUNTS +BRUSH +BRUSHABILITIES +BRUSHABILITY +BRUSHBACK +BRUSHBACKS +BRUSHED +BRUSHER +BRUSHERS +BRUSHES +BRUSHFIRE +BRUSHFIRES +BRUSHIER +BRUSHIEST +BRUSHING +BRUSHLAND +BRUSHLANDS +BRUSHLESS +BRUSHOFF +BRUSHOFFS +BRUSHUP +BRUSHUPS +BRUSHWOOD +BRUSHWOODS +BRUSHWORK +BRUSHWORKS +BRUSHY +BRUSK +BRUSKER +BRUSKEST +BRUSQUE +BRUSQUELY +BRUSQUENESS +BRUSQUENESSES +BRUSQUER +BRUSQUERIE +BRUSQUERIES +BRUSQUEST +BRUT +BRUTAL +BRUTALISE +BRUTALISED +BRUTALISES +BRUTALISING +BRUTALITIES +BRUTALITY +BRUTALIZATION +BRUTALIZATIONS +BRUTALIZE +BRUTALIZED +BRUTALIZES +BRUTALIZING +BRUTALLY +BRUTE +BRUTED +BRUTELY +BRUTES +BRUTIFIED +BRUTIFIES +BRUTIFY +BRUTIFYING +BRUTING +BRUTISH +BRUTISHLY +BRUTISHNESS +BRUTISHNESSES +BRUTISM +BRUTISMS +BRUTS +BRUX +BRUXED +BRUXES +BRUXING +BRUXISM +BRUXISMS +BRYOLOGICAL +BRYOLOGIES +BRYOLOGIST +BRYOLOGISTS +BRYOLOGY +BRYONIES +BRYONY +BRYOPHYLLUM +BRYOPHYLLUMS +BRYOPHYTE +BRYOPHYTES +BRYOPHYTIC +BRYOZOAN +BRYOZOANS +BUB +BUBAL +BUBALE +BUBALES +BUBALINE +BUBALIS +BUBALISES +BUBALS +BUBBA +BUBBAS +BUBBIES +BUBBLE +BUBBLED +BUBBLEGUM +BUBBLEGUMS +BUBBLEHEAD +BUBBLEHEADED +BUBBLEHEADS +BUBBLER +BUBBLERS +BUBBLES +BUBBLIER +BUBBLIES +BUBBLIEST +BUBBLING +BUBBLY +BUBBY +BUBINGA +BUBINGAS +BUBKES +BUBO +BUBOED +BUBOES +BUBONIC +BUBS +BUBU +BUBUS +BUCCAL +BUCCALLY +BUCCANEER +BUCCANEERED +BUCCANEERING +BUCCANEERISH +BUCCANEERS +BUCCINATOR +BUCCINATORS +BUCK +BUCKAROO +BUCKAROOS +BUCKAYRO +BUCKAYROS +BUCKBEAN +BUCKBEANS +BUCKBOARD +BUCKBOARDS +BUCKBRUSH +BUCKBRUSHES +BUCKED +BUCKEEN +BUCKEENS +BUCKER +BUCKEROO +BUCKEROOS +BUCKERS +BUCKET +BUCKETED +BUCKETFUL +BUCKETFULS +BUCKETING +BUCKETS +BUCKETSFUL +BUCKEYE +BUCKEYES +BUCKHOUND +BUCKHOUNDS +BUCKING +BUCKISH +BUCKLE +BUCKLED +BUCKLER +BUCKLERED +BUCKLERING +BUCKLERS +BUCKLES +BUCKLING +BUCKO +BUCKOES +BUCKOS +BUCKRA +BUCKRAM +BUCKRAMED +BUCKRAMING +BUCKRAMS +BUCKRAS +BUCKS +BUCKSAW +BUCKSAWS +BUCKSHEE +BUCKSHEES +BUCKSHOT +BUCKSKIN +BUCKSKINNED +BUCKSKINS +BUCKTAIL +BUCKTAILS +BUCKTEETH +BUCKTHORN +BUCKTHORNS +BUCKTOOTH +BUCKTOOTHED +BUCKWHEAT +BUCKWHEATS +BUCKYBALL +BUCKYBALLS +BUCKYTUBE +BUCKYTUBES +BUCOLIC +BUCOLICALLY +BUCOLICS +BUD +BUDDED +BUDDER +BUDDERS +BUDDHA +BUDDHAS +BUDDIED +BUDDIES +BUDDING +BUDDINGS +BUDDLE +BUDDLEIA +BUDDLEIAS +BUDDLES +BUDDY +BUDDYING +BUDGE +BUDGED +BUDGER +BUDGERIGAR +BUDGERIGARS +BUDGERS +BUDGES +BUDGET +BUDGETARY +BUDGETED +BUDGETEER +BUDGETEERS +BUDGETER +BUDGETERS +BUDGETING +BUDGETS +BUDGIE +BUDGIES +BUDGING +BUDLESS +BUDLIKE +BUDS +BUDWORM +BUDWORMS +BUFF +BUFFABLE +BUFFALO +BUFFALOBERRIES +BUFFALOBERRY +BUFFALOED +BUFFALOES +BUFFALOFISH +BUFFALOFISHES +BUFFALOING +BUFFALOS +BUFFED +BUFFER +BUFFERED +BUFFERING +BUFFERS +BUFFEST +BUFFET +BUFFETED +BUFFETER +BUFFETERS +BUFFETING +BUFFETS +BUFFI +BUFFIER +BUFFIEST +BUFFING +BUFFLEHEAD +BUFFLEHEADS +BUFFO +BUFFOON +BUFFOONERIES +BUFFOONERY +BUFFOONISH +BUFFOONS +BUFFOS +BUFFS +BUFFY +BUG +BUGABOO +BUGABOOS +BUGBANE +BUGBANES +BUGBEAR +BUGBEARS +BUGEYE +BUGEYES +BUGGED +BUGGER +BUGGERED +BUGGERIES +BUGGERING +BUGGERS +BUGGERY +BUGGIER +BUGGIES +BUGGIEST +BUGGINESS +BUGGINESSES +BUGGING +BUGGY +BUGHOUSE +BUGHOUSES +BUGLE +BUGLED +BUGLER +BUGLERS +BUGLES +BUGLEWEED +BUGLEWEEDS +BUGLING +BUGLOSS +BUGLOSSES +BUGOUT +BUGOUTS +BUGS +BUGSEED +BUGSEEDS +BUGSHA +BUGSHAS +BUHL +BUHLS +BUHLWORK +BUHLWORKS +BUHR +BUHRS +BUHRSTONE +BUHRSTONES +BUILD +BUILDABLE +BUILDDOWN +BUILDDOWNS +BUILDED +BUILDER +BUILDERS +BUILDING +BUILDINGS +BUILDS +BUILDUP +BUILDUPS +BUILT +BUIRDLY +BULB +BULBAR +BULBED +BULBEL +BULBELS +BULBIL +BULBILS +BULBLET +BULBLETS +BULBOUS +BULBOUSLY +BULBS +BULBUL +BULBULS +BULGE +BULGED +BULGER +BULGERS +BULGES +BULGHUR +BULGHURS +BULGIER +BULGIEST +BULGINESS +BULGINESSES +BULGING +BULGINGLY +BULGUR +BULGURS +BULGY +BULIMIA +BULIMIAC +BULIMIAS +BULIMIC +BULIMICS +BULK +BULKAGE +BULKAGES +BULKED +BULKHEAD +BULKHEADS +BULKIER +BULKIEST +BULKILY +BULKINESS +BULKINESSES +BULKING +BULKS +BULKY +BULL +BULLA +BULLACE +BULLACES +BULLAE +BULLATE +BULLBAITING +BULLBAITINGS +BULLBAT +BULLBATS +BULLBRIER +BULLBRIERS +BULLDOG +BULLDOGGED +BULLDOGGER +BULLDOGGERS +BULLDOGGING +BULLDOGGINGS +BULLDOGS +BULLDOZE +BULLDOZED +BULLDOZER +BULLDOZERS +BULLDOZES +BULLDOZING +BULLDYKE +BULLDYKES +BULLED +BULLET +BULLETED +BULLETIN +BULLETINED +BULLETING +BULLETINING +BULLETINS +BULLETPROOF +BULLETS +BULLFIGHT +BULLFIGHTER +BULLFIGHTERS +BULLFIGHTING +BULLFIGHTINGS +BULLFIGHTS +BULLFINCH +BULLFINCHES +BULLFROG +BULLFROGS +BULLHEAD +BULLHEADED +BULLHEADEDLY +BULLHEADEDNESS +BULLHEADS +BULLHORN +BULLHORNS +BULLIED +BULLIER +BULLIES +BULLIEST +BULLING +BULLION +BULLIONS +BULLISH +BULLISHLY +BULLISHNESS +BULLISHNESSES +BULLMASTIFF +BULLMASTIFFS +BULLNECK +BULLNECKED +BULLNECKS +BULLNOSE +BULLNOSES +BULLOCK +BULLOCKS +BULLOCKY +BULLOUS +BULLPEN +BULLPENS +BULLPOUT +BULLPOUTS +BULLRING +BULLRINGS +BULLRUSH +BULLRUSHES +BULLS +BULLSHAT +BULLSHIT +BULLSHITS +BULLSHITTED +BULLSHITTING +BULLSHOT +BULLSHOTS +BULLSNAKE +BULLSNAKES +BULLTERRIER +BULLTERRIERS +BULLWEED +BULLWEEDS +BULLWHIP +BULLWHIPPED +BULLWHIPPING +BULLWHIPS +BULLY +BULLYBOY +BULLYBOYS +BULLYING +BULLYRAG +BULLYRAGGED +BULLYRAGGING +BULLYRAGS +BULRUSH +BULRUSHES +BULWARK +BULWARKED +BULWARKING +BULWARKS +BUM +BUMBERSHOOT +BUMBERSHOOTS +BUMBLE +BUMBLEBEE +BUMBLEBEES +BUMBLED +BUMBLER +BUMBLERS +BUMBLES +BUMBLING +BUMBLINGLY +BUMBLINGS +BUMBOAT +BUMBOATS +BUMELIA +BUMELIAS +BUMF +BUMFS +BUMFUZZLE +BUMFUZZLED +BUMFUZZLES +BUMFUZZLING +BUMKIN +BUMKINS +BUMMALO +BUMMALOS +BUMMED +BUMMER +BUMMERS +BUMMEST +BUMMING +BUMP +BUMPED +BUMPER +BUMPERED +BUMPERING +BUMPERS +BUMPH +BUMPHS +BUMPIER +BUMPIEST +BUMPILY +BUMPINESS +BUMPINESSES +BUMPING +BUMPKIN +BUMPKINISH +BUMPKINLY +BUMPKINS +BUMPS +BUMPTIOUS +BUMPTIOUSLY +BUMPTIOUSNESS +BUMPTIOUSNESSES +BUMPY +BUMS +BUN +BUNA +BUNAS +BUNCH +BUNCHBERRIES +BUNCHBERRY +BUNCHED +BUNCHES +BUNCHGRASS +BUNCHGRASSES +BUNCHIER +BUNCHIEST +BUNCHILY +BUNCHING +BUNCHY +BUNCO +BUNCOED +BUNCOING +BUNCOMBE +BUNCOMBES +BUNCOS +BUND +BUNDIST +BUNDISTS +BUNDLE +BUNDLED +BUNDLER +BUNDLERS +BUNDLES +BUNDLING +BUNDLINGS +BUNDS +BUNDT +BUNDTS +BUNG +BUNGALOW +BUNGALOWS +BUNGED +BUNGEE +BUNGEES +BUNGHOLE +BUNGHOLES +BUNGING +BUNGLE +BUNGLED +BUNGLER +BUNGLERS +BUNGLES +BUNGLESOME +BUNGLING +BUNGLINGLY +BUNGLINGS +BUNGS +BUNION +BUNIONS +BUNK +BUNKED +BUNKER +BUNKERED +BUNKERING +BUNKERS +BUNKHOUSE +BUNKHOUSES +BUNKING +BUNKMATE +BUNKMATES +BUNKO +BUNKOED +BUNKOING +BUNKOS +BUNKS +BUNKUM +BUNKUMS +BUNN +BUNNIES +BUNNS +BUNNY +BUNRAKU +BUNRAKUS +BUNS +BUNT +BUNTED +BUNTER +BUNTERS +BUNTING +BUNTINGS +BUNTLINE +BUNTLINES +BUNTS +BUNYA +BUNYAS +BUOY +BUOYAGE +BUOYAGES +BUOYANCE +BUOYANCES +BUOYANCIES +BUOYANCY +BUOYANT +BUOYANTLY +BUOYED +BUOYING +BUOYS +BUPKES +BUPKUS +BUPPIE +BUPPIES +BUPPY +BUPRESTID +BUPRESTIDS +BUQSHA +BUQSHAS +BUR +BURA +BURAN +BURANS +BURAS +BURB +BURBLE +BURBLED +BURBLER +BURBLERS +BURBLES +BURBLIER +BURBLIEST +BURBLING +BURBLY +BURBOT +BURBOTS +BURBS +BURD +BURDEN +BURDENED +BURDENER +BURDENERS +BURDENING +BURDENS +BURDENSOME +BURDIE +BURDIES +BURDOCK +BURDOCKS +BURDS +BUREAU +BUREAUCRACIES +BUREAUCRACY +BUREAUCRAT +BUREAUCRATESE +BUREAUCRATESES +BUREAUCRATIC +BUREAUCRATISE +BUREAUCRATISED +BUREAUCRATISES +BUREAUCRATISING +BUREAUCRATISM +BUREAUCRATISMS +BUREAUCRATIZE +BUREAUCRATIZED +BUREAUCRATIZES +BUREAUCRATIZING +BUREAUCRATS +BUREAUS +BUREAUX +BURET +BURETS +BURETTE +BURETTES +BURG +BURGAGE +BURGAGES +BURGEE +BURGEES +BURGEON +BURGEONED +BURGEONING +BURGEONS +BURGER +BURGERS +BURGESS +BURGESSES +BURGH +BURGHAL +BURGHER +BURGHERS +BURGHS +BURGLAR +BURGLARIES +BURGLARIOUS +BURGLARIOUSLY +BURGLARIZE +BURGLARIZED +BURGLARIZES +BURGLARIZING +BURGLARPROOF +BURGLARS +BURGLARY +BURGLE +BURGLED +BURGLES +BURGLING +BURGOMASTER +BURGOMASTERS +BURGONET +BURGONETS +BURGOO +BURGOOS +BURGOUT +BURGOUTS +BURGRAVE +BURGRAVES +BURGS +BURGUNDIES +BURGUNDY +BURIAL +BURIALS +BURIED +BURIER +BURIERS +BURIES +BURIN +BURINS +BURKA +BURKAS +BURKE +BURKED +BURKER +BURKERS +BURKES +BURKING +BURKITE +BURKITES +BURL +BURLADERO +BURLADEROS +BURLAP +BURLAPS +BURLED +BURLER +BURLERS +BURLESK +BURLESKS +BURLESQUE +BURLESQUED +BURLESQUELY +BURLESQUER +BURLESQUERS +BURLESQUES +BURLESQUING +BURLEY +BURLEYS +BURLIER +BURLIEST +BURLILY +BURLINESS +BURLINESSES +BURLING +BURLS +BURLY +BURN +BURNABLE +BURNABLES +BURNED +BURNER +BURNERS +BURNET +BURNETS +BURNIE +BURNIES +BURNING +BURNINGLY +BURNINGS +BURNISH +BURNISHED +BURNISHER +BURNISHERS +BURNISHES +BURNISHING +BURNISHINGS +BURNOOSE +BURNOOSED +BURNOOSES +BURNOUS +BURNOUSES +BURNOUT +BURNOUTS +BURNS +BURNSIDES +BURNT +BURP +BURPED +BURPING +BURPS +BURQA +BURQAS +BURR +BURRED +BURRER +BURRERS +BURRIER +BURRIEST +BURRING +BURRITO +BURRITOS +BURRO +BURROS +BURROW +BURROWED +BURROWER +BURROWERS +BURROWING +BURROWS +BURRS +BURRSTONE +BURRSTONES +BURRY +BURS +BURSA +BURSAE +BURSAL +BURSAR +BURSARIAL +BURSARIES +BURSARS +BURSARY +BURSAS +BURSATE +BURSE +BURSEED +BURSEEDS +BURSERA +BURSES +BURSIFORM +BURSITIS +BURSITISES +BURST +BURSTED +BURSTER +BURSTERS +BURSTING +BURSTONE +BURSTONES +BURSTS +BURTHEN +BURTHENED +BURTHENING +BURTHENS +BURTON +BURTONS +BURWEED +BURWEEDS +BURY +BURYING +BUS +BUSBAR +BUSBARS +BUSBIES +BUSBOY +BUSBOYS +BUSBY +BUSED +BUSES +BUSGIRL +BUSGIRLS +BUSH +BUSHBUCK +BUSHBUCKS +BUSHED +BUSHEL +BUSHELED +BUSHELER +BUSHELERS +BUSHELING +BUSHELLED +BUSHELLER +BUSHELLERS +BUSHELLING +BUSHELMAN +BUSHELMEN +BUSHELS +BUSHER +BUSHERS +BUSHES +BUSHFIRE +BUSHFIRES +BUSHGOAT +BUSHGOATS +BUSHIDO +BUSHIDOS +BUSHIER +BUSHIEST +BUSHILY +BUSHINESS +BUSHINESSES +BUSHING +BUSHINGS +BUSHLAND +BUSHLANDS +BUSHLESS +BUSHLIKE +BUSHMAN +BUSHMASTER +BUSHMASTERS +BUSHMEN +BUSHPIG +BUSHPIGS +BUSHRANGER +BUSHRANGERS +BUSHRANGING +BUSHRANGINGS +BUSHTIT +BUSHTITS +BUSHVELD +BUSHVELDS +BUSHWA +BUSHWAH +BUSHWAHS +BUSHWAS +BUSHWHACK +BUSHWHACKED +BUSHWHACKER +BUSHWHACKERS +BUSHWHACKING +BUSHWHACKS +BUSHY +BUSIED +BUSIER +BUSIES +BUSIEST +BUSILY +BUSINESS +BUSINESSES +BUSINESSLIKE +BUSINESSMAN +BUSINESSMEN +BUSINESSPEOPLE +BUSINESSPERSON +BUSINESSPERSONS +BUSINESSWOMAN +BUSINESSWOMEN +BUSING +BUSINGS +BUSK +BUSKED +BUSKER +BUSKERS +BUSKIN +BUSKINED +BUSKING +BUSKINS +BUSKS +BUSLOAD +BUSLOADS +BUSMAN +BUSMEN +BUSS +BUSSED +BUSSES +BUSSING +BUSSINGS +BUST +BUSTARD +BUSTARDS +BUSTED +BUSTER +BUSTERS +BUSTIC +BUSTICATE +BUSTICATED +BUSTICATES +BUSTICATING +BUSTICS +BUSTIER +BUSTIERS +BUSTIEST +BUSTINESS +BUSTINESSES +BUSTING +BUSTLE +BUSTLED +BUSTLER +BUSTLERS +BUSTLES +BUSTLINE +BUSTLINES +BUSTLING +BUSTLINGLY +BUSTS +BUSTY +BUSULFAN +BUSULFANS +BUSY +BUSYBODIES +BUSYBODY +BUSYING +BUSYNESS +BUSYNESSES +BUSYWORK +BUSYWORKS +BUT +BUTADIENE +BUTADIENES +BUTANE +BUTANES +BUTANOL +BUTANOLS +BUTANONE +BUTANONES +BUTCH +BUTCHER +BUTCHERED +BUTCHERER +BUTCHERERS +BUTCHERIES +BUTCHERING +BUTCHERLY +BUTCHERS +BUTCHERY +BUTCHES +BUTCHNESS +BUTCHNESSES +BUTE +BUTENE +BUTENES +BUTEO +BUTEONINE +BUTEONINES +BUTEOS +BUTES +BUTLE +BUTLED +BUTLER +BUTLERIES +BUTLERS +BUTLERY +BUTLES +BUTLING +BUTS +BUTT +BUTTALS +BUTTE +BUTTED +BUTTER +BUTTERBALL +BUTTERBALLS +BUTTERBUR +BUTTERBURS +BUTTERCUP +BUTTERCUPS +BUTTERED +BUTTERFAT +BUTTERFATS +BUTTERFINGERED +BUTTERFINGERS +BUTTERFISH +BUTTERFISHES +BUTTERFLIED +BUTTERFLIES +BUTTERFLY +BUTTERFLYER +BUTTERFLYERS +BUTTERFLYING +BUTTERIER +BUTTERIES +BUTTERIEST +BUTTERING +BUTTERLESS +BUTTERMILK +BUTTERMILKS +BUTTERNUT +BUTTERNUTS +BUTTERS +BUTTERSCOTCH +BUTTERSCOTCHES +BUTTERWEED +BUTTERWEEDS +BUTTERWORT +BUTTERWORTS +BUTTERY +BUTTES +BUTTHEAD +BUTTHEADS +BUTTIES +BUTTING +BUTTINSKI +BUTTINSKIES +BUTTINSKIS +BUTTINSKY +BUTTOCK +BUTTOCKS +BUTTON +BUTTONBALL +BUTTONBALLS +BUTTONBUSH +BUTTONBUSHES +BUTTONED +BUTTONER +BUTTONERS +BUTTONHOLE +BUTTONHOLED +BUTTONHOLER +BUTTONHOLERS +BUTTONHOLES +BUTTONHOLING +BUTTONHOOK +BUTTONHOOKED +BUTTONHOOKING +BUTTONHOOKS +BUTTONING +BUTTONLESS +BUTTONS +BUTTONWOOD +BUTTONWOODS +BUTTONY +BUTTRESS +BUTTRESSED +BUTTRESSES +BUTTRESSING +BUTTS +BUTTSTOCK +BUTTSTOCKS +BUTTY +BUTUT +BUTUTS +BUTYL +BUTYLATE +BUTYLATED +BUTYLATES +BUTYLATING +BUTYLATION +BUTYLATIONS +BUTYLENE +BUTYLENES +BUTYLS +BUTYRAL +BUTYRALDEHYDE +BUTYRALDEHYDES +BUTYRALS +BUTYRATE +BUTYRATES +BUTYRIC +BUTYRIN +BUTYRINS +BUTYROPHENONE +BUTYROPHENONES +BUTYROUS +BUTYRYL +BUTYRYLS +BUXOM +BUXOMER +BUXOMEST +BUXOMLY +BUXOMNESS +BUXOMNESSES +BUY +BUYABLE +BUYBACK +BUYBACKS +BUYER +BUYERS +BUYING +BUYOFF +BUYOFFS +BUYOUT +BUYOUTS +BUYS +BUZUKI +BUZUKIA +BUZUKIS +BUZZ +BUZZARD +BUZZARDS +BUZZCUT +BUZZCUTS +BUZZED +BUZZER +BUZZERS +BUZZES +BUZZING +BUZZINGLY +BUZZWIG +BUZZWIGS +BUZZWORD +BUZZWORDS +BWANA +BWANAS +BY +BYCATCH +BYCATCHES +BYE +BYELAW +BYELAWS +BYES +BYGONE +BYGONES +BYLAW +BYLAWS +BYLINE +BYLINED +BYLINER +BYLINERS +BYLINES +BYLINING +BYNAME +BYNAMES +BYPASS +BYPASSED +BYPASSES +BYPASSING +BYPAST +BYPATH +BYPATHS +BYPLAY +BYPLAYS +BYPRODUCT +BYPRODUCTS +BYRE +BYRES +BYRL +BYRLED +BYRLING +BYRLS +BYRNIE +BYRNIES +BYROAD +BYROADS +BYS +BYSSAL +BYSSI +BYSSINOSES +BYSSINOSIS +BYSSUS +BYSSUSES +BYSTANDER +BYSTANDERS +BYSTREET +BYSTREETS +BYTALK +BYTALKS +BYTE +BYTES +BYWAY +BYWAYS +BYWORD +BYWORDS +BYWORK +BYWORKS +BYZANT +BYZANTINE +BYZANTS +CAB +CABAL +CABALA +CABALAS +CABALETTA +CABALETTAS +CABALETTE +CABALISM +CABALISMS +CABALIST +CABALISTIC +CABALISTS +CABALLED +CABALLERO +CABALLEROS +CABALLING +CABALS +CABANA +CABANAS +CABARET +CABARETS +CABBAGE +CABBAGED +CABBAGES +CABBAGEWORM +CABBAGEWORMS +CABBAGEY +CABBAGING +CABBAGY +CABBALA +CABBALAH +CABBALAHS +CABBALAS +CABBALISM +CABBALISMS +CABBALIST +CABBALISTS +CABBED +CABBIE +CABBIES +CABBING +CABBY +CABDRIVER +CABDRIVERS +CABER +CABERNET +CABERNETS +CABERS +CABESTRO +CABESTROS +CABEZON +CABEZONE +CABEZONES +CABEZONS +CABILDO +CABILDOS +CABIN +CABINED +CABINET +CABINETMAKER +CABINETMAKERS +CABINETMAKING +CABINETMAKINGS +CABINETRIES +CABINETRY +CABINETS +CABINETWORK +CABINETWORKS +CABINING +CABINMATE +CABINMATES +CABINS +CABLE +CABLECAST +CABLECASTED +CABLECASTING +CABLECASTS +CABLED +CABLEGRAM +CABLEGRAMS +CABLER +CABLERS +CABLES +CABLET +CABLETS +CABLEWAY +CABLEWAYS +CABLING +CABMAN +CABMEN +CABOB +CABOBS +CABOCHED +CABOCHON +CABOCHONS +CABOMBA +CABOMBAS +CABOODLE +CABOODLES +CABOOSE +CABOOSES +CABOSHED +CABOTAGE +CABOTAGES +CABRESTA +CABRESTAS +CABRESTO +CABRESTOS +CABRETTA +CABRETTAS +CABRILLA +CABRILLAS +CABRIOLE +CABRIOLES +CABRIOLET +CABRIOLETS +CABS +CABSTAND +CABSTANDS +CACA +CACAO +CACAOS +CACAS +CACCIATORE +CACHALOT +CACHALOTS +CACHE +CACHECTIC +CACHED +CACHEPOT +CACHEPOTS +CACHES +CACHET +CACHETED +CACHETING +CACHETS +CACHEXIA +CACHEXIAS +CACHEXIC +CACHEXIES +CACHEXY +CACHING +CACHINNATE +CACHINNATED +CACHINNATES +CACHINNATING +CACHINNATION +CACHINNATIONS +CACHOU +CACHOUS +CACHUCHA +CACHUCHAS +CACIQUE +CACIQUES +CACIQUISM +CACIQUISMS +CACKLE +CACKLED +CACKLER +CACKLERS +CACKLES +CACKLING +CACODEMON +CACODEMONIC +CACODEMONS +CACODYL +CACODYLIC +CACODYLS +CACOETHES +CACOGRAPHICAL +CACOGRAPHIES +CACOGRAPHY +CACOMISTLE +CACOMISTLES +CACOMIXL +CACOMIXLE +CACOMIXLES +CACOMIXLS +CACONYM +CACONYMIES +CACONYMS +CACONYMY +CACOPHONIES +CACOPHONOUS +CACOPHONOUSLY +CACOPHONY +CACTI +CACTOID +CACTUS +CACTUSES +CACUMINAL +CACUMINALS +CAD +CADASTER +CADASTERS +CADASTRAL +CADASTRALLY +CADASTRE +CADASTRES +CADAVER +CADAVERIC +CADAVERINE +CADAVERINES +CADAVEROUS +CADAVEROUSLY +CADAVERS +CADDICE +CADDICES +CADDIE +CADDIED +CADDIES +CADDIS +CADDISED +CADDISES +CADDISFLIES +CADDISFLY +CADDISH +CADDISHLY +CADDISHNESS +CADDISHNESSES +CADDISWORM +CADDISWORMS +CADDY +CADDYING +CADE +CADELLE +CADELLES +CADENCE +CADENCED +CADENCES +CADENCIES +CADENCING +CADENCY +CADENT +CADENTIAL +CADENZA +CADENZAS +CADES +CADET +CADETS +CADETSHIP +CADETSHIPS +CADGE +CADGED +CADGER +CADGERS +CADGES +CADGING +CADGY +CADI +CADIS +CADMIC +CADMIUM +CADMIUMS +CADRE +CADRES +CADS +CADUCEAN +CADUCEI +CADUCEUS +CADUCITIES +CADUCITY +CADUCOUS +CAECA +CAECAL +CAECALLY +CAECILIAN +CAECILIANS +CAECUM +CAEOMA +CAEOMAS +CAESAR +CAESAREAN +CAESAREANS +CAESARIAN +CAESARIANS +CAESARISM +CAESARISMS +CAESARS +CAESIUM +CAESIUMS +CAESPITOSE +CAESTUS +CAESTUSES +CAESURA +CAESURAE +CAESURAL +CAESURAS +CAESURIC +CAFE +CAFES +CAFETERIA +CAFETERIAS +CAFETORIA +CAFETORIUM +CAFETORIUMS +CAFF +CAFFEIN +CAFFEINATED +CAFFEINE +CAFFEINES +CAFFEINIC +CAFFEINS +CAFFS +CAFTAN +CAFTANED +CAFTANS +CAGE +CAGED +CAGEFUL +CAGEFULS +CAGELIKE +CAGELING +CAGELINGS +CAGER +CAGERS +CAGES +CAGEY +CAGEYNESS +CAGEYNESSES +CAGIER +CAGIEST +CAGILY +CAGINESS +CAGINESSES +CAGING +CAGY +CAHIER +CAHIERS +CAHOOT +CAHOOTS +CAHOW +CAHOWS +CAID +CAIDS +CAIMAN +CAIMANS +CAIN +CAINS +CAIQUE +CAIQUES +CAIRD +CAIRDS +CAIRN +CAIRNED +CAIRNGORM +CAIRNGORMS +CAIRNS +CAIRNY +CAISSON +CAISSONS +CAITIFF +CAITIFFS +CAJAPUT +CAJAPUTS +CAJEPUT +CAJEPUTS +CAJOLE +CAJOLED +CAJOLEMENT +CAJOLEMENTS +CAJOLER +CAJOLERIES +CAJOLERS +CAJOLERY +CAJOLES +CAJOLING +CAJON +CAJONES +CAJUPUT +CAJUPUTS +CAKE +CAKED +CAKES +CAKEWALK +CAKEWALKED +CAKEWALKER +CAKEWALKERS +CAKEWALKING +CAKEWALKS +CAKEY +CAKIER +CAKIEST +CAKINESS +CAKINESSES +CAKING +CAKY +CALABASH +CALABASHES +CALABAZA +CALABAZAS +CALABOOSE +CALABOOSES +CALADIUM +CALADIUMS +CALAMANCO +CALAMANCOES +CALAMANCOS +CALAMANDER +CALAMANDERS +CALAMAR +CALAMARI +CALAMARIES +CALAMARIS +CALAMARS +CALAMARY +CALAMATA +CALAMATAS +CALAMI +CALAMINE +CALAMINED +CALAMINES +CALAMINING +CALAMINT +CALAMINTS +CALAMITE +CALAMITES +CALAMITIES +CALAMITOUS +CALAMITOUSLY +CALAMITY +CALAMONDIN +CALAMONDINS +CALAMUS +CALANDO +CALASH +CALASHES +CALATHI +CALATHOS +CALATHUS +CALCANEA +CALCANEAL +CALCANEI +CALCANEUM +CALCANEUS +CALCAR +CALCARATE +CALCAREOUS +CALCAREOUSLY +CALCARIA +CALCARS +CALCEATE +CALCEDONIES +CALCEDONY +CALCES +CALCIC +CALCICOLE +CALCICOLES +CALCICOLOUS +CALCIFEROL +CALCIFEROLS +CALCIFEROUS +CALCIFIC +CALCIFICATION +CALCIFICATIONS +CALCIFIED +CALCIFIES +CALCIFUGE +CALCIFUGES +CALCIFUGOUS +CALCIFY +CALCIFYING +CALCIMINE +CALCIMINED +CALCIMINES +CALCIMINING +CALCINATION +CALCINATIONS +CALCINE +CALCINED +CALCINES +CALCINING +CALCINOSES +CALCINOSIS +CALCITE +CALCITES +CALCITIC +CALCITONIN +CALCITONINS +CALCIUM +CALCIUMS +CALCSPAR +CALCSPARS +CALCTUFA +CALCTUFAS +CALCTUFF +CALCTUFFS +CALCULABLE +CALCULATE +CALCULATED +CALCULATEDLY +CALCULATEDNESS +CALCULATES +CALCULATING +CALCULATINGLY +CALCULATION +CALCULATIONAL +CALCULATIONS +CALCULATOR +CALCULATORS +CALCULI +CALCULOUS +CALCULUS +CALCULUSES +CALDARIA +CALDARIUM +CALDERA +CALDERAS +CALDRON +CALDRONS +CALECHE +CALECHES +CALEFACTORIES +CALEFACTORY +CALENDAL +CALENDAR +CALENDARED +CALENDARING +CALENDARS +CALENDER +CALENDERED +CALENDERER +CALENDERERS +CALENDERING +CALENDERS +CALENDRIC +CALENDRICAL +CALENDS +CALENDULA +CALENDULAS +CALENTURE +CALENTURES +CALESA +CALESAS +CALESCENT +CALF +CALFLIKE +CALFS +CALFSKIN +CALFSKINS +CALIBER +CALIBERS +CALIBRATE +CALIBRATED +CALIBRATES +CALIBRATING +CALIBRATION +CALIBRATIONS +CALIBRATOR +CALIBRATORS +CALIBRE +CALIBRED +CALIBRES +CALICES +CALICHE +CALICHES +CALICLE +CALICLES +CALICO +CALICOES +CALICOS +CALIF +CALIFATE +CALIFATES +CALIFORNIUM +CALIFORNIUMS +CALIFS +CALIGINOUS +CALIPASH +CALIPASHES +CALIPEE +CALIPEES +CALIPER +CALIPERED +CALIPERING +CALIPERS +CALIPH +CALIPHAL +CALIPHATE +CALIPHATES +CALIPHS +CALISAYA +CALISAYAS +CALISTHENIC +CALISTHENICS +CALIX +CALK +CALKED +CALKER +CALKERS +CALKIN +CALKING +CALKINGS +CALKINS +CALKS +CALL +CALLA +CALLABLE +CALLALOO +CALLALOOS +CALLAN +CALLANS +CALLANT +CALLANTS +CALLAS +CALLBACK +CALLBACKS +CALLBOARD +CALLBOARDS +CALLBOY +CALLBOYS +CALLED +CALLEE +CALLEES +CALLER +CALLERS +CALLET +CALLETS +CALLIGRAPHER +CALLIGRAPHERS +CALLIGRAPHIC +CALLIGRAPHIES +CALLIGRAPHIST +CALLIGRAPHISTS +CALLIGRAPHY +CALLING +CALLINGS +CALLIOPE +CALLIOPES +CALLIPEE +CALLIPEES +CALLIPER +CALLIPERED +CALLIPERING +CALLIPERS +CALLIPYGIAN +CALLIPYGOUS +CALLITHUMP +CALLITHUMPIAN +CALLITHUMPS +CALLOSE +CALLOSES +CALLOSITIES +CALLOSITY +CALLOUS +CALLOUSED +CALLOUSES +CALLOUSING +CALLOUSLY +CALLOUSNESS +CALLOUSNESSES +CALLOW +CALLOWER +CALLOWEST +CALLOWNESS +CALLOWNESSES +CALLS +CALLUS +CALLUSED +CALLUSES +CALLUSING +CALM +CALMATIVE +CALMATIVES +CALMED +CALMER +CALMEST +CALMING +CALMINGLY +CALMLY +CALMNESS +CALMNESSES +CALMODULIN +CALMODULINS +CALMS +CALO +CALOMEL +CALOMELS +CALORIC +CALORICALLY +CALORICS +CALORIE +CALORIES +CALORIFIC +CALORIMETER +CALORIMETERS +CALORIMETRIC +CALORIMETRIES +CALORIMETRY +CALORIZE +CALORIZED +CALORIZES +CALORIZING +CALORY +CALOS +CALOTTE +CALOTTES +CALOTYPE +CALOTYPES +CALOYER +CALOYERS +CALPAC +CALPACK +CALPACKS +CALPACS +CALPAIN +CALPAINS +CALQUE +CALQUED +CALQUES +CALQUING +CALTHROP +CALTHROPS +CALTRAP +CALTRAPS +CALTROP +CALTROPS +CALUMET +CALUMETS +CALUMNIATE +CALUMNIATED +CALUMNIATES +CALUMNIATING +CALUMNIATION +CALUMNIATIONS +CALUMNIATOR +CALUMNIATORS +CALUMNIES +CALUMNIOUS +CALUMNIOUSLY +CALUMNY +CALUTRON +CALUTRONS +CALVADOS +CALVADOSES +CALVARIA +CALVARIAL +CALVARIAN +CALVARIAS +CALVARIES +CALVARIUM +CALVARIUMS +CALVARY +CALVE +CALVED +CALVES +CALVING +CALVITIES +CALX +CALXES +CALYCATE +CALYCEAL +CALYCES +CALYCINAL +CALYCINE +CALYCLE +CALYCLES +CALYCULAR +CALYCULI +CALYCULUS +CALYPSO +CALYPSOES +CALYPSONIAN +CALYPSONIANS +CALYPSOS +CALYPTER +CALYPTERS +CALYPTRA +CALYPTRAS +CALYX +CALYXES +CALZONE +CALZONES +CAM +CAMAIL +CAMAILED +CAMAILS +CAMARADERIE +CAMARADERIES +CAMARILLA +CAMARILLAS +CAMAS +CAMASES +CAMASS +CAMASSES +CAMBER +CAMBERED +CAMBERING +CAMBERS +CAMBIA +CAMBIAL +CAMBISM +CAMBISMS +CAMBIST +CAMBISTS +CAMBIUM +CAMBIUMS +CAMBOGIA +CAMBOGIAS +CAMBRIC +CAMBRICS +CAMCORDER +CAMCORDERS +CAME +CAMEL +CAMELBACK +CAMELBACKS +CAMELEER +CAMELEERS +CAMELHAIR +CAMELHAIRS +CAMELIA +CAMELIAS +CAMELID +CAMELIDS +CAMELLIA +CAMELLIAS +CAMELLIKE +CAMELOPARD +CAMELOPARDS +CAMELS +CAMEO +CAMEOED +CAMEOING +CAMEOS +CAMERA +CAMERAE +CAMERAL +CAMERAMAN +CAMERAMEN +CAMERAPERSON +CAMERAPERSONS +CAMERAS +CAMERAWOMAN +CAMERAWOMEN +CAMERLENGO +CAMERLENGOS +CAMES +CAMION +CAMIONS +CAMISA +CAMISADE +CAMISADES +CAMISADO +CAMISADOES +CAMISADOS +CAMISAS +CAMISE +CAMISES +CAMISIA +CAMISIAS +CAMISOLE +CAMISOLES +CAMLET +CAMLETS +CAMMIE +CAMMIES +CAMO +CAMOMILE +CAMOMILES +CAMORRA +CAMORRAS +CAMORRIST +CAMORRISTA +CAMORRISTI +CAMORRISTS +CAMOS +CAMOUFLAGE +CAMOUFLAGEABLE +CAMOUFLAGED +CAMOUFLAGES +CAMOUFLAGIC +CAMOUFLAGING +CAMP +CAMPAGNA +CAMPAGNE +CAMPAIGN +CAMPAIGNED +CAMPAIGNER +CAMPAIGNERS +CAMPAIGNING +CAMPAIGNS +CAMPANILE +CAMPANILES +CAMPANILI +CAMPANOLOGIES +CAMPANOLOGIST +CAMPANOLOGISTS +CAMPANOLOGY +CAMPANULA +CAMPANULAS +CAMPANULATE +CAMPCRAFT +CAMPCRAFTS +CAMPED +CAMPER +CAMPERS +CAMPESINO +CAMPESINOS +CAMPESTRAL +CAMPFIRE +CAMPFIRES +CAMPGROUND +CAMPGROUNDS +CAMPHENE +CAMPHENES +CAMPHINE +CAMPHINES +CAMPHIRE +CAMPHIRES +CAMPHOL +CAMPHOLS +CAMPHOR +CAMPHORACEOUS +CAMPHORATE +CAMPHORATED +CAMPHORATES +CAMPHORATING +CAMPHORIC +CAMPHORS +CAMPI +CAMPIER +CAMPIEST +CAMPILY +CAMPINESS +CAMPINESSES +CAMPING +CAMPINGS +CAMPION +CAMPIONS +CAMPO +CAMPONG +CAMPONGS +CAMPOREE +CAMPOREES +CAMPOS +CAMPOUT +CAMPOUTS +CAMPS +CAMPSHIRT +CAMPSHIRTS +CAMPSITE +CAMPSITES +CAMPSTOOL +CAMPSTOOLS +CAMPUS +CAMPUSED +CAMPUSES +CAMPUSING +CAMPY +CAMPYLOBACTER +CAMPYLOBACTERS +CAMPYLOTROPOUS +CAMS +CAMSHAFT +CAMSHAFTS +CAN +CANAILLE +CANAILLES +CANAKIN +CANAKINS +CANAL +CANALBOAT +CANALBOATS +CANALED +CANALICULAR +CANALICULI +CANALICULUS +CANALING +CANALISE +CANALISED +CANALISES +CANALISING +CANALIZATION +CANALIZATIONS +CANALIZE +CANALIZED +CANALIZES +CANALIZING +CANALLED +CANALLER +CANALLERS +CANALLING +CANALS +CANAPE +CANAPES +CANARD +CANARDS +CANARIES +CANARY +CANASTA +CANASTAS +CANCAN +CANCANS +CANCEL +CANCELABLE +CANCELATION +CANCELATIONS +CANCELED +CANCELER +CANCELERS +CANCELING +CANCELLABLE +CANCELLATION +CANCELLATIONS +CANCELLED +CANCELLER +CANCELLERS +CANCELLING +CANCELLOUS +CANCELS +CANCER +CANCERED +CANCEROUS +CANCEROUSLY +CANCERS +CANCHA +CANCHAS +CANCROID +CANCROIDS +CANDELA +CANDELABRA +CANDELABRAS +CANDELABRUM +CANDELABRUMS +CANDELAS +CANDENT +CANDESCENCE +CANDESCENCES +CANDESCENT +CANDID +CANDIDA +CANDIDACIES +CANDIDACY +CANDIDAL +CANDIDAS +CANDIDATE +CANDIDATES +CANDIDATURE +CANDIDATURES +CANDIDER +CANDIDEST +CANDIDIASES +CANDIDIASIS +CANDIDLY +CANDIDNESS +CANDIDNESSES +CANDIDS +CANDIED +CANDIES +CANDLE +CANDLEBERRIES +CANDLEBERRY +CANDLED +CANDLEFISH +CANDLEFISHES +CANDLEHOLDER +CANDLEHOLDERS +CANDLELIGHT +CANDLELIGHTED +CANDLELIGHTER +CANDLELIGHTERS +CANDLELIGHTS +CANDLELIT +CANDLENUT +CANDLENUTS +CANDLEPIN +CANDLEPINS +CANDLEPOWER +CANDLEPOWERS +CANDLER +CANDLERS +CANDLES +CANDLESNUFFER +CANDLESNUFFERS +CANDLESTICK +CANDLESTICKS +CANDLEWICK +CANDLEWICKS +CANDLEWOOD +CANDLEWOODS +CANDLING +CANDOR +CANDORS +CANDOUR +CANDOURS +CANDY +CANDYFLOSS +CANDYFLOSSES +CANDYGRAM +CANDYGRAMS +CANDYING +CANDYTUFT +CANDYTUFTS +CANE +CANEBRAKE +CANEBRAKES +CANED +CANELLA +CANELLAS +CANEPHOR +CANEPHORS +CANER +CANERS +CANES +CANESCENT +CANEWARE +CANEWARES +CANFIELD +CANFIELDS +CANFUL +CANFULS +CANGUE +CANGUES +CANICULAR +CANID +CANIDS +CANIKIN +CANIKINS +CANINE +CANINES +CANING +CANINITIES +CANINITY +CANISTEL +CANISTELS +CANISTER +CANISTERS +CANITIES +CANKER +CANKERED +CANKERING +CANKEROUS +CANKERS +CANKERWORM +CANKERWORMS +CANNA +CANNABIC +CANNABIN +CANNABINOID +CANNABINOIDS +CANNABINOL +CANNABINOLS +CANNABINS +CANNABIS +CANNABISES +CANNAS +CANNED +CANNEL +CANNELLONI +CANNELON +CANNELONS +CANNELS +CANNER +CANNERIES +CANNERS +CANNERY +CANNIBAL +CANNIBALISE +CANNIBALISED +CANNIBALISES +CANNIBALISING +CANNIBALISM +CANNIBALISMS +CANNIBALISTIC +CANNIBALIZATION +CANNIBALIZE +CANNIBALIZED +CANNIBALIZES +CANNIBALIZING +CANNIBALS +CANNIE +CANNIER +CANNIEST +CANNIKIN +CANNIKINS +CANNILY +CANNINESS +CANNINESSES +CANNING +CANNINGS +CANNISTER +CANNISTERS +CANNOLI +CANNOLIS +CANNON +CANNONADE +CANNONADED +CANNONADES +CANNONADING +CANNONBALL +CANNONBALLED +CANNONBALLING +CANNONBALLS +CANNONED +CANNONEER +CANNONEERS +CANNONING +CANNONRIES +CANNONRY +CANNONS +CANNOT +CANNULA +CANNULAE +CANNULAR +CANNULAS +CANNULATE +CANNULATED +CANNULATES +CANNULATING +CANNY +CANOE +CANOEABLE +CANOED +CANOEING +CANOEIST +CANOEISTS +CANOER +CANOERS +CANOES +CANOLA +CANOLAS +CANON +CANONESS +CANONESSES +CANONIC +CANONICAL +CANONICALLY +CANONICALS +CANONICITIES +CANONICITY +CANONISE +CANONISED +CANONISES +CANONISING +CANONIST +CANONISTS +CANONIZATION +CANONIZATIONS +CANONIZE +CANONIZED +CANONIZER +CANONIZERS +CANONIZES +CANONIZING +CANONRIES +CANONRY +CANONS +CANOODLE +CANOODLED +CANOODLES +CANOODLING +CANOPIC +CANOPIED +CANOPIES +CANOPY +CANOPYING +CANOROUS +CANOROUSLY +CANOROUSNESS +CANOROUSNESSES +CANS +CANSFUL +CANSO +CANSOS +CANST +CANT +CANTABILE +CANTABILES +CANTAL +CANTALA +CANTALAS +CANTALOUP +CANTALOUPE +CANTALOUPES +CANTALOUPS +CANTALS +CANTANKEROUS +CANTANKEROUSLY +CANTATA +CANTATAS +CANTATRICE +CANTATRICES +CANTATRICI +CANTDOG +CANTDOGS +CANTED +CANTEEN +CANTEENS +CANTER +CANTERED +CANTERING +CANTERS +CANTHAL +CANTHARIDES +CANTHARIDIN +CANTHARIDINS +CANTHARIS +CANTHAXANTHIN +CANTHAXANTHINS +CANTHI +CANTHITIS +CANTHITISES +CANTHUS +CANTIC +CANTICLE +CANTICLES +CANTILENA +CANTILENAS +CANTILEVER +CANTILEVERED +CANTILEVERING +CANTILEVERS +CANTILLATE +CANTILLATED +CANTILLATES +CANTILLATING +CANTILLATION +CANTILLATIONS +CANTINA +CANTINAS +CANTING +CANTLE +CANTLES +CANTO +CANTON +CANTONAL +CANTONED +CANTONING +CANTONMENT +CANTONMENTS +CANTONS +CANTOR +CANTORIAL +CANTORS +CANTOS +CANTRAIP +CANTRAIPS +CANTRAP +CANTRAPS +CANTRIP +CANTRIPS +CANTS +CANTUS +CANTY +CANULA +CANULAE +CANULAR +CANULAS +CANULATE +CANULATED +CANULATES +CANULATING +CANVAS +CANVASBACK +CANVASBACKS +CANVASED +CANVASER +CANVASERS +CANVASES +CANVASING +CANVASLIKE +CANVASS +CANVASSED +CANVASSER +CANVASSERS +CANVASSES +CANVASSING +CANYON +CANYONEER +CANYONEERS +CANYONING +CANYONINGS +CANYONS +CANZONA +CANZONAS +CANZONE +CANZONES +CANZONET +CANZONETS +CANZONI +CAOUTCHOUC +CAOUTCHOUCS +CAP +CAPABILITIES +CAPABILITY +CAPABLE +CAPABLENESS +CAPABLENESSES +CAPABLER +CAPABLEST +CAPABLY +CAPACIOUS +CAPACIOUSLY +CAPACIOUSNESS +CAPACIOUSNESSES +CAPACITANCE +CAPACITANCES +CAPACITATE +CAPACITATED +CAPACITATES +CAPACITATING +CAPACITATION +CAPACITATIONS +CAPACITIES +CAPACITIVE +CAPACITIVELY +CAPACITOR +CAPACITORS +CAPACITY +CAPARISON +CAPARISONED +CAPARISONING +CAPARISONS +CAPE +CAPED +CAPELAN +CAPELANS +CAPELET +CAPELETS +CAPELIN +CAPELINS +CAPELLINI +CAPER +CAPERCAILLIE +CAPERCAILLIES +CAPERCAILZIE +CAPERCAILZIES +CAPERED +CAPERER +CAPERERS +CAPERING +CAPERS +CAPES +CAPESKIN +CAPESKINS +CAPEWORK +CAPEWORKS +CAPFUL +CAPFULS +CAPH +CAPHS +CAPIAS +CAPIASES +CAPILLARIES +CAPILLARITIES +CAPILLARITY +CAPILLARY +CAPITA +CAPITAL +CAPITALISE +CAPITALISED +CAPITALISES +CAPITALISING +CAPITALISM +CAPITALISMS +CAPITALIST +CAPITALISTIC +CAPITALISTS +CAPITALIZATION +CAPITALIZATIONS +CAPITALIZE +CAPITALIZED +CAPITALIZES +CAPITALIZING +CAPITALLY +CAPITALS +CAPITATE +CAPITATED +CAPITATION +CAPITATIONS +CAPITELLA +CAPITELLUM +CAPITOL +CAPITOLS +CAPITULA +CAPITULAR +CAPITULARIES +CAPITULARY +CAPITULATE +CAPITULATED +CAPITULATES +CAPITULATING +CAPITULATION +CAPITULATIONS +CAPITULUM +CAPIZ +CAPIZES +CAPLESS +CAPLET +CAPLETS +CAPLIN +CAPLINS +CAPMAKER +CAPMAKERS +CAPO +CAPOEIRA +CAPOEIRAS +CAPON +CAPONATA +CAPONATAS +CAPONIER +CAPONIERS +CAPONIZE +CAPONIZED +CAPONIZES +CAPONIZING +CAPONS +CAPORAL +CAPORALS +CAPOS +CAPOTE +CAPOTES +CAPOUCH +CAPOUCHES +CAPPED +CAPPELLETTI +CAPPER +CAPPERS +CAPPING +CAPPINGS +CAPPUCCINO +CAPPUCCINOS +CAPRIC +CAPRICCI +CAPRICCIO +CAPRICCIOS +CAPRICE +CAPRICES +CAPRICIOUS +CAPRICIOUSLY +CAPRICIOUSNESS +CAPRIFICATION +CAPRIFICATIONS +CAPRIFIG +CAPRIFIGS +CAPRINE +CAPRIOLE +CAPRIOLED +CAPRIOLES +CAPRIOLING +CAPRIS +CAPROCK +CAPROCKS +CAPROLACTAM +CAPROLACTAMS +CAPS +CAPSAICIN +CAPSAICINS +CAPSICIN +CAPSICINS +CAPSICUM +CAPSICUMS +CAPSID +CAPSIDAL +CAPSIDS +CAPSIZE +CAPSIZED +CAPSIZES +CAPSIZING +CAPSOMER +CAPSOMERE +CAPSOMERES +CAPSOMERS +CAPSTAN +CAPSTANS +CAPSTONE +CAPSTONES +CAPSULAR +CAPSULATE +CAPSULATED +CAPSULE +CAPSULED +CAPSULES +CAPSULING +CAPSULIZE +CAPSULIZED +CAPSULIZES +CAPSULIZING +CAPTAIN +CAPTAINCIES +CAPTAINCY +CAPTAINED +CAPTAINING +CAPTAINS +CAPTAINSHIP +CAPTAINSHIPS +CAPTAN +CAPTANS +CAPTION +CAPTIONED +CAPTIONING +CAPTIONLESS +CAPTIONS +CAPTIOUS +CAPTIOUSLY +CAPTIOUSNESS +CAPTIOUSNESSES +CAPTIVATE +CAPTIVATED +CAPTIVATES +CAPTIVATING +CAPTIVATION +CAPTIVATIONS +CAPTIVATOR +CAPTIVATORS +CAPTIVE +CAPTIVES +CAPTIVITIES +CAPTIVITY +CAPTOPRIL +CAPTOPRILS +CAPTOR +CAPTORS +CAPTURE +CAPTURED +CAPTURER +CAPTURERS +CAPTURES +CAPTURING +CAPUCHE +CAPUCHED +CAPUCHES +CAPUCHIN +CAPUCHINS +CAPUT +CAPYBARA +CAPYBARAS +CAR +CARABAO +CARABAOS +CARABID +CARABIDS +CARABIN +CARABINE +CARABINEER +CARABINEERS +CARABINER +CARABINERO +CARABINEROS +CARABINERS +CARABINES +CARABINIER +CARABINIERE +CARABINIERI +CARABINIERS +CARABINS +CARACAL +CARACALS +CARACARA +CARACARAS +CARACK +CARACKS +CARACOL +CARACOLE +CARACOLED +CARACOLER +CARACOLERS +CARACOLES +CARACOLING +CARACOLLED +CARACOLLING +CARACOLS +CARACUL +CARACULS +CARAFE +CARAFES +CARAGANA +CARAGANAS +CARAGEEN +CARAGEENS +CARAMBA +CARAMBOLA +CARAMBOLAS +CARAMEL +CARAMELISE +CARAMELISED +CARAMELISES +CARAMELISING +CARAMELIZE +CARAMELIZED +CARAMELIZES +CARAMELIZING +CARAMELS +CARANGID +CARANGIDS +CARANGOID +CARAPACE +CARAPACED +CARAPACES +CARAPAX +CARAPAXES +CARASSOW +CARASSOWS +CARAT +CARATE +CARATES +CARATS +CARAVAN +CARAVANED +CARAVANER +CARAVANERS +CARAVANING +CARAVANNED +CARAVANNER +CARAVANNERS +CARAVANNING +CARAVANS +CARAVANSARIES +CARAVANSARY +CARAVANSERAI +CARAVANSERAIS +CARAVEL +CARAVELLE +CARAVELLES +CARAVELS +CARAWAY +CARAWAYS +CARB +CARBACHOL +CARBACHOLS +CARBAMATE +CARBAMATES +CARBAMIC +CARBAMIDE +CARBAMIDES +CARBAMINO +CARBAMOYL +CARBAMOYLS +CARBAMYL +CARBAMYLS +CARBANION +CARBANIONS +CARBARN +CARBARNS +CARBARYL +CARBARYLS +CARBAZOLE +CARBAZOLES +CARBIDE +CARBIDES +CARBINE +CARBINEER +CARBINEERS +CARBINES +CARBINOL +CARBINOLS +CARBO +CARBOCYCLIC +CARBOHYDRASE +CARBOHYDRASES +CARBOHYDRATE +CARBOHYDRATES +CARBOLIC +CARBOLICS +CARBOLIZE +CARBOLIZED +CARBOLIZES +CARBOLIZING +CARBON +CARBONACEOUS +CARBONADE +CARBONADES +CARBONADO +CARBONADOED +CARBONADOES +CARBONADOING +CARBONADOS +CARBONARA +CARBONARAS +CARBONATE +CARBONATED +CARBONATES +CARBONATING +CARBONATION +CARBONATIONS +CARBONIC +CARBONIFEROUS +CARBONIUM +CARBONIUMS +CARBONIZATION +CARBONIZATIONS +CARBONIZE +CARBONIZED +CARBONIZES +CARBONIZING +CARBONLESS +CARBONNADE +CARBONNADES +CARBONOUS +CARBONS +CARBONYL +CARBONYLATION +CARBONYLATIONS +CARBONYLIC +CARBONYLS +CARBORA +CARBORAS +CARBOS +CARBOXYL +CARBOXYLASE +CARBOXYLASES +CARBOXYLATE +CARBOXYLATED +CARBOXYLATES +CARBOXYLATING +CARBOXYLATION +CARBOXYLATIONS +CARBOXYLIC +CARBOXYLS +CARBOY +CARBOYED +CARBOYS +CARBS +CARBUNCLE +CARBUNCLED +CARBUNCLES +CARBUNCULAR +CARBURET +CARBURETED +CARBURETING +CARBURETION +CARBURETIONS +CARBURETOR +CARBURETORS +CARBURETS +CARBURETTED +CARBURETTER +CARBURETTERS +CARBURETTING +CARBURETTOR +CARBURETTORS +CARBURISE +CARBURISED +CARBURISES +CARBURISING +CARBURIZATION +CARBURIZATIONS +CARBURIZE +CARBURIZED +CARBURIZES +CARBURIZING +CARCAJOU +CARCAJOUS +CARCANET +CARCANETS +CARCASE +CARCASES +CARCASS +CARCASSES +CARCEL +CARCELS +CARCERAL +CARCINOGEN +CARCINOGENESES +CARCINOGENESIS +CARCINOGENIC +CARCINOGENICITY +CARCINOGENS +CARCINOID +CARCINOIDS +CARCINOMA +CARCINOMAS +CARCINOMATA +CARCINOMATOSES +CARCINOMATOSIS +CARCINOMATOUS +CARCINOSARCOMA +CARCINOSARCOMAS +CARD +CARDAMOM +CARDAMOMS +CARDAMON +CARDAMONS +CARDAMUM +CARDAMUMS +CARDBOARD +CARDBOARDS +CARDCASE +CARDCASES +CARDED +CARDER +CARDERS +CARDHOLDER +CARDHOLDERS +CARDIA +CARDIAC +CARDIACS +CARDIAE +CARDIAS +CARDIGAN +CARDIGANS +CARDINAL +CARDINALATE +CARDINALATES +CARDINALITIES +CARDINALITY +CARDINALLY +CARDINALS +CARDINALSHIP +CARDINALSHIPS +CARDING +CARDINGS +CARDIO +CARDIOGENIC +CARDIOGRAM +CARDIOGRAMS +CARDIOGRAPH +CARDIOGRAPHIC +CARDIOGRAPHIES +CARDIOGRAPHS +CARDIOGRAPHY +CARDIOID +CARDIOIDS +CARDIOLOGICAL +CARDIOLOGIES +CARDIOLOGIST +CARDIOLOGISTS +CARDIOLOGY +CARDIOMYOPATHY +CARDIOPATHIES +CARDIOPATHY +CARDIOPULMONARY +CARDIOTHORACIC +CARDIOTONIC +CARDIOTONICS +CARDIOVASCULAR +CARDITIC +CARDITIS +CARDITISES +CARDON +CARDONS +CARDOON +CARDOONS +CARDPLAYER +CARDPLAYERS +CARDS +CARDSHARP +CARDSHARPER +CARDSHARPERS +CARDSHARPS +CARE +CARED +CAREEN +CAREENED +CAREENER +CAREENERS +CAREENING +CAREENS +CAREER +CAREERED +CAREERER +CAREERERS +CAREERING +CAREERISM +CAREERISMS +CAREERIST +CAREERISTS +CAREERS +CAREFREE +CAREFUL +CAREFULLER +CAREFULLEST +CAREFULLY +CAREFULNESS +CAREFULNESSES +CAREGIVER +CAREGIVERS +CAREGIVING +CAREGIVINGS +CARELESS +CARELESSLY +CARELESSNESS +CARELESSNESSES +CARER +CARERS +CARES +CARESS +CARESSED +CARESSER +CARESSERS +CARESSES +CARESSING +CARESSINGLY +CARESSIVE +CARESSIVELY +CARET +CARETAKE +CARETAKEN +CARETAKER +CARETAKERS +CARETAKES +CARETAKING +CARETAKINGS +CARETOOK +CARETS +CAREWORN +CAREX +CARFARE +CARFARES +CARFUL +CARFULS +CARGO +CARGOES +CARGOS +CARHOP +CARHOPPED +CARHOPPING +CARHOPS +CARIBE +CARIBES +CARIBOU +CARIBOUS +CARICATURAL +CARICATURE +CARICATURED +CARICATURES +CARICATURING +CARICATURIST +CARICATURISTS +CARICES +CARIED +CARIES +CARILLON +CARILLONNED +CARILLONNEUR +CARILLONNEURS +CARILLONNING +CARILLONS +CARINA +CARINAE +CARINAL +CARINAS +CARINATE +CARINATED +CARING +CARIOCA +CARIOCAS +CARIOGENIC +CARIOLE +CARIOLES +CARIOSITIES +CARIOSITY +CARIOUS +CARITAS +CARITASES +CARJACK +CARJACKED +CARJACKER +CARJACKERS +CARJACKING +CARJACKINGS +CARJACKS +CARK +CARKED +CARKING +CARKS +CARL +CARLE +CARLES +CARLESS +CARLIN +CARLINE +CARLINES +CARLING +CARLINGS +CARLINS +CARLISH +CARLOAD +CARLOADS +CARLS +CARMAGNOLE +CARMAGNOLES +CARMAKER +CARMAKERS +CARMAN +CARMEN +CARMINATIVE +CARMINATIVES +CARMINE +CARMINES +CARN +CARNAGE +CARNAGES +CARNAL +CARNALITIES +CARNALITY +CARNALLITE +CARNALLITES +CARNALLY +CARNASSIAL +CARNASSIALS +CARNATION +CARNATIONS +CARNAUBA +CARNAUBAS +CARNELIAN +CARNELIANS +CARNET +CARNETS +CARNEY +CARNEYS +CARNIE +CARNIES +CARNIFIED +CARNIFIES +CARNIFY +CARNIFYING +CARNITINE +CARNITINES +CARNIVAL +CARNIVALS +CARNIVORA +CARNIVORE +CARNIVORES +CARNIVORIES +CARNIVOROUS +CARNIVOROUSLY +CARNIVOROUSNESS +CARNIVORY +CARNOSAUR +CARNOSAURS +CARNOTITE +CARNOTITES +CARNS +CARNY +CAROACH +CAROACHES +CAROB +CAROBS +CAROCH +CAROCHE +CAROCHES +CAROL +CAROLED +CAROLER +CAROLERS +CAROLI +CAROLING +CAROLLED +CAROLLER +CAROLLERS +CAROLLING +CAROLS +CAROLUS +CAROLUSES +CAROM +CAROMED +CAROMING +CAROMS +CAROTENE +CAROTENES +CAROTENOID +CAROTENOIDS +CAROTID +CAROTIDAL +CAROTIDS +CAROTIN +CAROTINOID +CAROTINOIDS +CAROTINS +CAROUSAL +CAROUSALS +CAROUSE +CAROUSED +CAROUSEL +CAROUSELS +CAROUSER +CAROUSERS +CAROUSES +CAROUSING +CARP +CARPACCIO +CARPACCIOS +CARPAL +CARPALE +CARPALIA +CARPALS +CARPED +CARPEL +CARPELLARY +CARPELLATE +CARPELS +CARPENTER +CARPENTERED +CARPENTERING +CARPENTERS +CARPENTRIES +CARPENTRY +CARPER +CARPERS +CARPET +CARPETBAG +CARPETBAGGED +CARPETBAGGER +CARPETBAGGERIES +CARPETBAGGERS +CARPETBAGGERY +CARPETBAGGING +CARPETBAGS +CARPETED +CARPETING +CARPETINGS +CARPETS +CARPETWEED +CARPETWEEDS +CARPI +CARPING +CARPINGLY +CARPINGS +CARPOGONIA +CARPOGONIAL +CARPOGONIUM +CARPOLOGIES +CARPOLOGY +CARPOOL +CARPOOLED +CARPOOLER +CARPOOLERS +CARPOOLING +CARPOOLS +CARPOPHORE +CARPOPHORES +CARPORT +CARPORTS +CARPOSPORE +CARPOSPORES +CARPS +CARPUS +CARR +CARRACK +CARRACKS +CARRAGEEN +CARRAGEENAN +CARRAGEENANS +CARRAGEENIN +CARRAGEENINS +CARRAGEENS +CARRAGHEEN +CARRAGHEENS +CARREFOUR +CARREFOURS +CARREL +CARRELL +CARRELLS +CARRELS +CARRIAGE +CARRIAGES +CARRIAGEWAY +CARRIAGEWAYS +CARRIED +CARRIER +CARRIERS +CARRIES +CARRIOLE +CARRIOLES +CARRION +CARRIONS +CARRITCH +CARRITCHES +CARROCH +CARROCHES +CARROM +CARROMED +CARROMING +CARROMS +CARRONADE +CARRONADES +CARROT +CARROTIER +CARROTIEST +CARROTIN +CARROTINS +CARROTS +CARROTTOP +CARROTTOPPED +CARROTTOPS +CARROTY +CARROUSEL +CARROUSELS +CARRS +CARRY +CARRYALL +CARRYALLS +CARRYBACK +CARRYBACKS +CARRYFORWARD +CARRYFORWARDS +CARRYING +CARRYON +CARRYONS +CARRYOUT +CARRYOUTS +CARRYOVER +CARRYOVERS +CARS +CARSE +CARSES +CARSICK +CART +CARTABLE +CARTAGE +CARTAGES +CARTE +CARTED +CARTEL +CARTELISE +CARTELISED +CARTELISES +CARTELISING +CARTELIZATION +CARTELIZATIONS +CARTELIZE +CARTELIZED +CARTELIZES +CARTELIZING +CARTELS +CARTER +CARTERS +CARTES +CARTHORSE +CARTHORSES +CARTILAGE +CARTILAGES +CARTILAGINOUS +CARTING +CARTLOAD +CARTLOADS +CARTOGRAM +CARTOGRAMS +CARTOGRAPHER +CARTOGRAPHERS +CARTOGRAPHIC +CARTOGRAPHICAL +CARTOGRAPHIES +CARTOGRAPHY +CARTON +CARTONED +CARTONING +CARTONS +CARTOON +CARTOONED +CARTOONING +CARTOONINGS +CARTOONISH +CARTOONISHLY +CARTOONIST +CARTOONISTS +CARTOONLIKE +CARTOONS +CARTOONY +CARTOP +CARTOPPER +CARTOPPERS +CARTOUCH +CARTOUCHE +CARTOUCHES +CARTRIDGE +CARTRIDGES +CARTS +CARTULARIES +CARTULARY +CARTWHEEL +CARTWHEELED +CARTWHEELER +CARTWHEELERS +CARTWHEELING +CARTWHEELS +CARUNCLE +CARUNCLES +CARVACROL +CARVACROLS +CARVE +CARVED +CARVEL +CARVELS +CARVEN +CARVER +CARVERS +CARVES +CARVING +CARVINGS +CARWASH +CARWASHES +CARYATIC +CARYATID +CARYATIDES +CARYATIDS +CARYOPSES +CARYOPSIDES +CARYOPSIS +CARYOTIN +CARYOTINS +CASA +CASABA +CASABAS +CASAS +CASAVA +CASAVAS +CASBAH +CASBAHS +CASCABEL +CASCABELS +CASCABLE +CASCABLES +CASCADE +CASCADED +CASCADES +CASCADING +CASCARA +CASCARAS +CASCARILLA +CASCARILLAS +CASE +CASEASE +CASEASES +CASEATE +CASEATED +CASEATES +CASEATING +CASEATION +CASEATIONS +CASEBEARER +CASEBEARERS +CASEBOOK +CASEBOOKS +CASED +CASEFIED +CASEFIES +CASEFY +CASEFYING +CASEIC +CASEIN +CASEINATE +CASEINATES +CASEINS +CASELOAD +CASELOADS +CASEMATE +CASEMATED +CASEMATES +CASEMENT +CASEMENTS +CASEOSE +CASEOSES +CASEOUS +CASERN +CASERNE +CASERNES +CASERNS +CASES +CASETTE +CASETTES +CASEWORK +CASEWORKER +CASEWORKERS +CASEWORKS +CASEWORM +CASEWORMS +CASH +CASHABLE +CASHAW +CASHAWS +CASHBOOK +CASHBOOKS +CASHBOX +CASHBOXES +CASHED +CASHES +CASHEW +CASHEWS +CASHIER +CASHIERED +CASHIERING +CASHIERS +CASHING +CASHLESS +CASHMERE +CASHMERES +CASHOO +CASHOOS +CASHPOINT +CASHPOINTS +CASIMERE +CASIMERES +CASIMIRE +CASIMIRES +CASING +CASINGS +CASINI +CASINO +CASINOS +CASITA +CASITAS +CASK +CASKED +CASKET +CASKETED +CASKETING +CASKETS +CASKING +CASKS +CASKY +CASQUE +CASQUED +CASQUES +CASSABA +CASSABAS +CASSATA +CASSATAS +CASSATION +CASSATIONS +CASSAVA +CASSAVAS +CASSENA +CASSENAS +CASSENE +CASSENES +CASSEROLE +CASSEROLES +CASSETTE +CASSETTES +CASSIA +CASSIAS +CASSIMERE +CASSIMERES +CASSINA +CASSINAS +CASSINE +CASSINES +CASSINGLE +CASSINGLES +CASSINO +CASSINOS +CASSIS +CASSISES +CASSITERITE +CASSITERITES +CASSOCK +CASSOCKS +CASSOULET +CASSOULETS +CASSOWARIES +CASSOWARY +CAST +CASTABILITIES +CASTABILITY +CASTABLE +CASTANET +CASTANETS +CASTAWAY +CASTAWAYS +CASTE +CASTEISM +CASTEISMS +CASTELLAN +CASTELLANS +CASTELLATED +CASTER +CASTERS +CASTES +CASTIGATE +CASTIGATED +CASTIGATES +CASTIGATING +CASTIGATION +CASTIGATIONS +CASTIGATOR +CASTIGATORS +CASTING +CASTINGS +CASTLE +CASTLED +CASTLES +CASTLING +CASTOFF +CASTOFFS +CASTOR +CASTOREUM +CASTOREUMS +CASTORS +CASTRATE +CASTRATED +CASTRATER +CASTRATERS +CASTRATES +CASTRATI +CASTRATING +CASTRATION +CASTRATIONS +CASTRATO +CASTRATOR +CASTRATORS +CASTRATORY +CASTRATOS +CASTS +CASUAL +CASUALLY +CASUALNESS +CASUALNESSES +CASUALS +CASUALTIES +CASUALTY +CASUARINA +CASUARINAS +CASUIST +CASUISTIC +CASUISTICAL +CASUISTRIES +CASUISTRY +CASUISTS +CASUS +CAT +CATABOLIC +CATABOLICALLY +CATABOLISM +CATABOLISMS +CATABOLITE +CATABOLITES +CATABOLIZE +CATABOLIZED +CATABOLIZES +CATABOLIZING +CATACHRESES +CATACHRESIS +CATACHRESTIC +CATACHRESTICAL +CATACLYSM +CATACLYSMAL +CATACLYSMIC +CATACLYSMICALLY +CATACLYSMS +CATACOMB +CATACOMBS +CATADIOPTRIC +CATADROMOUS +CATAFALQUE +CATAFALQUES +CATALASE +CATALASES +CATALATIC +CATALECTIC +CATALECTICS +CATALEPSIES +CATALEPSY +CATALEPTIC +CATALEPTICALLY +CATALEPTICS +CATALEXES +CATALEXIS +CATALO +CATALOES +CATALOG +CATALOGED +CATALOGER +CATALOGERS +CATALOGIC +CATALOGING +CATALOGS +CATALOGUE +CATALOGUED +CATALOGUER +CATALOGUERS +CATALOGUES +CATALOGUING +CATALOS +CATALPA +CATALPAS +CATALYSES +CATALYSIS +CATALYST +CATALYSTS +CATALYTIC +CATALYTICALLY +CATALYZE +CATALYZED +CATALYZER +CATALYZERS +CATALYZES +CATALYZING +CATAMARAN +CATAMARANS +CATAMENIA +CATAMENIAL +CATAMITE +CATAMITES +CATAMOUNT +CATAMOUNTS +CATAPHORA +CATAPHORAS +CATAPHORESES +CATAPHORESIS +CATAPHORETIC +CATAPHORIC +CATAPHYLL +CATAPHYLLS +CATAPLASM +CATAPLASMS +CATAPLEXIES +CATAPLEXY +CATAPULT +CATAPULTED +CATAPULTING +CATAPULTS +CATARACT +CATARACTOUS +CATARACTS +CATARRH +CATARRHAL +CATARRHALLY +CATARRHINE +CATARRHINES +CATARRHS +CATASTROPHE +CATASTROPHES +CATASTROPHIC +CATASTROPHISM +CATASTROPHISMS +CATASTROPHIST +CATASTROPHISTS +CATATONIA +CATATONIAS +CATATONIC +CATATONICALLY +CATATONICS +CATAWBA +CATAWBAS +CATBIRD +CATBIRDS +CATBOAT +CATBOATS +CATBRIER +CATBRIERS +CATCALL +CATCALLED +CATCALLER +CATCALLERS +CATCALLING +CATCALLS +CATCH +CATCHABLE +CATCHALL +CATCHALLS +CATCHER +CATCHERS +CATCHES +CATCHFLIES +CATCHFLY +CATCHIER +CATCHIEST +CATCHING +CATCHMENT +CATCHMENTS +CATCHPENNY +CATCHPHRASE +CATCHPHRASES +CATCHPOLE +CATCHPOLES +CATCHPOLL +CATCHPOLLS +CATCHUP +CATCHUPS +CATCHWORD +CATCHWORDS +CATCHY +CATCLAW +CATCLAWS +CATE +CATECHESES +CATECHESIS +CATECHETICAL +CATECHIN +CATECHINS +CATECHISE +CATECHISED +CATECHISES +CATECHISING +CATECHISM +CATECHISMAL +CATECHISMS +CATECHIST +CATECHISTIC +CATECHISTS +CATECHIZATION +CATECHIZATIONS +CATECHIZE +CATECHIZED +CATECHIZER +CATECHIZERS +CATECHIZES +CATECHIZING +CATECHOL +CATECHOLAMINE +CATECHOLAMINES +CATECHOLS +CATECHU +CATECHUMEN +CATECHUMENS +CATECHUS +CATEGORIC +CATEGORICAL +CATEGORICALLY +CATEGORIES +CATEGORISE +CATEGORISED +CATEGORISES +CATEGORISING +CATEGORIZATION +CATEGORIZATIONS +CATEGORIZE +CATEGORIZED +CATEGORIZES +CATEGORIZING +CATEGORY +CATENA +CATENAE +CATENARIES +CATENARY +CATENAS +CATENATE +CATENATED +CATENATES +CATENATING +CATENATION +CATENATIONS +CATENOID +CATENOIDS +CATER +CATERAN +CATERANS +CATERCORNER +CATERCORNERED +CATERED +CATERER +CATERERS +CATERESS +CATERESSES +CATERING +CATERPILLAR +CATERPILLARS +CATERS +CATERWAUL +CATERWAULED +CATERWAULING +CATERWAULS +CATES +CATFACE +CATFACES +CATFACING +CATFACINGS +CATFALL +CATFALLS +CATFIGHT +CATFIGHTS +CATFISH +CATFISHES +CATGUT +CATGUTS +CATHARSES +CATHARSIS +CATHARTIC +CATHARTICS +CATHEAD +CATHEADS +CATHECT +CATHECTED +CATHECTIC +CATHECTING +CATHECTS +CATHEDRA +CATHEDRAE +CATHEDRAL +CATHEDRALS +CATHEDRAS +CATHEPSIN +CATHEPSINS +CATHEPTIC +CATHETER +CATHETERIZATION +CATHETERIZE +CATHETERIZED +CATHETERIZES +CATHETERIZING +CATHETERS +CATHEXES +CATHEXIS +CATHODAL +CATHODALLY +CATHODE +CATHODES +CATHODIC +CATHODICALLY +CATHOLIC +CATHOLICALLY +CATHOLICATE +CATHOLICATES +CATHOLICITIES +CATHOLICITY +CATHOLICIZE +CATHOLICIZED +CATHOLICIZES +CATHOLICIZING +CATHOLICOI +CATHOLICON +CATHOLICONS +CATHOLICOS +CATHOLICOSES +CATHOLICS +CATHOUSE +CATHOUSES +CATION +CATIONIC +CATIONICALLY +CATIONS +CATJANG +CATJANGS +CATKIN +CATKINATE +CATKINS +CATLIKE +CATLIN +CATLING +CATLINGS +CATLINS +CATMINT +CATMINTS +CATNAP +CATNAPER +CATNAPERS +CATNAPPED +CATNAPPER +CATNAPPERS +CATNAPPING +CATNAPS +CATNIP +CATNIPS +CATOPTRIC +CATRIGGED +CATS +CATSPAW +CATSPAWS +CATSUIT +CATSUITS +CATSUP +CATSUPS +CATTAIL +CATTAILS +CATTALO +CATTALOES +CATTALOS +CATTED +CATTERIES +CATTERY +CATTIE +CATTIER +CATTIES +CATTIEST +CATTILY +CATTINESS +CATTINESSES +CATTING +CATTISH +CATTISHLY +CATTLE +CATTLEMAN +CATTLEMEN +CATTLEYA +CATTLEYAS +CATTY +CATWALK +CATWALKS +CAUCUS +CAUCUSED +CAUCUSES +CAUCUSING +CAUCUSSED +CAUCUSSES +CAUCUSSING +CAUDAD +CAUDAL +CAUDALLY +CAUDATE +CAUDATED +CAUDATES +CAUDATION +CAUDATIONS +CAUDEX +CAUDEXES +CAUDICES +CAUDILLISMO +CAUDILLISMOS +CAUDILLO +CAUDILLOS +CAUDLE +CAUDLES +CAUGHT +CAUL +CAULD +CAULDRON +CAULDRONS +CAULDS +CAULES +CAULICLE +CAULICLES +CAULIFLOWER +CAULIFLOWERET +CAULIFLOWERETS +CAULIFLOWERS +CAULINE +CAULIS +CAULK +CAULKED +CAULKER +CAULKERS +CAULKING +CAULKINGS +CAULKS +CAULS +CAUSABLE +CAUSAL +CAUSALGIA +CAUSALGIAS +CAUSALGIC +CAUSALITIES +CAUSALITY +CAUSALLY +CAUSALS +CAUSATION +CAUSATIONS +CAUSATIVE +CAUSATIVELY +CAUSATIVES +CAUSE +CAUSED +CAUSELESS +CAUSER +CAUSERIE +CAUSERIES +CAUSERS +CAUSES +CAUSEWAY +CAUSEWAYED +CAUSEWAYING +CAUSEWAYS +CAUSEY +CAUSEYS +CAUSING +CAUSTIC +CAUSTICALLY +CAUSTICITIES +CAUSTICITY +CAUSTICS +CAUTERANT +CAUTERANTS +CAUTERIES +CAUTERIZATION +CAUTERIZATIONS +CAUTERIZE +CAUTERIZED +CAUTERIZES +CAUTERIZING +CAUTERY +CAUTION +CAUTIONARY +CAUTIONED +CAUTIONER +CAUTIONERS +CAUTIONING +CAUTIONS +CAUTIOUS +CAUTIOUSLY +CAUTIOUSNESS +CAUTIOUSNESSES +CAVALCADE +CAVALCADES +CAVALERO +CAVALEROS +CAVALETTI +CAVALIER +CAVALIERED +CAVALIERING +CAVALIERISM +CAVALIERISMS +CAVALIERLY +CAVALIERS +CAVALLA +CAVALLAS +CAVALLETTI +CAVALLIES +CAVALLY +CAVALRIES +CAVALRY +CAVALRYMAN +CAVALRYMEN +CAVATINA +CAVATINAS +CAVATINE +CAVE +CAVEAT +CAVEATED +CAVEATING +CAVEATOR +CAVEATORS +CAVEATS +CAVED +CAVEFISH +CAVEFISHES +CAVELIKE +CAVEMAN +CAVEMEN +CAVENDISH +CAVENDISHES +CAVER +CAVERN +CAVERNED +CAVERNICOLOUS +CAVERNING +CAVERNOUS +CAVERNOUSLY +CAVERNS +CAVERS +CAVES +CAVETTI +CAVETTO +CAVETTOS +CAVIAR +CAVIARE +CAVIARES +CAVIARS +CAVICORN +CAVIE +CAVIES +CAVIL +CAVILED +CAVILER +CAVILERS +CAVILING +CAVILLED +CAVILLER +CAVILLERS +CAVILLING +CAVILS +CAVING +CAVINGS +CAVITARY +CAVITATE +CAVITATED +CAVITATES +CAVITATING +CAVITATION +CAVITATIONS +CAVITIED +CAVITIES +CAVITY +CAVORT +CAVORTED +CAVORTER +CAVORTERS +CAVORTING +CAVORTS +CAVY +CAW +CAWED +CAWING +CAWS +CAY +CAYENNE +CAYENNED +CAYENNES +CAYMAN +CAYMANS +CAYS +CAYUSE +CAYUSES +CAZIQUE +CAZIQUES +CEANOTHUS +CEANOTHUSES +CEASE +CEASED +CEASEFIRE +CEASEFIRES +CEASELESS +CEASELESSLY +CEASELESSNESS +CEASELESSNESSES +CEASES +CEASING +CEBID +CEBIDS +CEBOID +CEBOIDS +CECA +CECAL +CECALLY +CECITIES +CECITY +CECROPIA +CECROPIAS +CECUM +CEDAR +CEDARBIRD +CEDARBIRDS +CEDARN +CEDARS +CEDARWOOD +CEDARWOODS +CEDARY +CEDE +CEDED +CEDER +CEDERS +CEDES +CEDI +CEDILLA +CEDILLAS +CEDING +CEDIS +CEDULA +CEDULAS +CEE +CEES +CEIBA +CEIBAS +CEIL +CEILED +CEILER +CEILERS +CEILI +CEILIDH +CEILIDHS +CEILING +CEILINGED +CEILINGS +CEILIS +CEILOMETER +CEILOMETERS +CEILS +CEINTURE +CEINTURES +CEL +CELADON +CELADONS +CELANDINE +CELANDINES +CELEB +CELEBRANT +CELEBRANTS +CELEBRATE +CELEBRATED +CELEBRATEDNESS +CELEBRATES +CELEBRATING +CELEBRATION +CELEBRATIONS +CELEBRATOR +CELEBRATORS +CELEBRATORY +CELEBRITIES +CELEBRITY +CELEBS +CELERIAC +CELERIACS +CELERIES +CELERITIES +CELERITY +CELERY +CELESTA +CELESTAS +CELESTE +CELESTES +CELESTIAL +CELESTIALLY +CELESTIALS +CELESTINE +CELESTINES +CELESTITE +CELESTITES +CELIAC +CELIACS +CELIBACIES +CELIBACY +CELIBATE +CELIBATES +CELIBATIC +CELL +CELLA +CELLAE +CELLAR +CELLARAGE +CELLARAGES +CELLARED +CELLARER +CELLARERS +CELLARET +CELLARETS +CELLARETTE +CELLARETTES +CELLARING +CELLARS +CELLARWAY +CELLARWAYS +CELLBLOCK +CELLBLOCKS +CELLED +CELLI +CELLING +CELLIST +CELLISTS +CELLMATE +CELLMATES +CELLO +CELLOBIOSE +CELLOBIOSES +CELLOIDIN +CELLOIDINS +CELLOPHANE +CELLOPHANES +CELLOS +CELLPHONE +CELLPHONES +CELLS +CELLULAR +CELLULARITIES +CELLULARITY +CELLULARS +CELLULASE +CELLULASES +CELLULE +CELLULES +CELLULITE +CELLULITES +CELLULITIS +CELLULITISES +CELLULOID +CELLULOIDS +CELLULOLYTIC +CELLULOSE +CELLULOSES +CELLULOSIC +CELLULOSICS +CELLULOUS +CELOM +CELOMATA +CELOMS +CELOSIA +CELOSIAS +CELOTEX +CELOTEXES +CELS +CELT +CELTS +CEMBALI +CEMBALIST +CEMBALISTS +CEMBALO +CEMBALOS +CEMENT +CEMENTA +CEMENTATION +CEMENTATIONS +CEMENTED +CEMENTER +CEMENTERS +CEMENTING +CEMENTITE +CEMENTITES +CEMENTITIOUS +CEMENTS +CEMENTUM +CEMENTUMS +CEMETERIES +CEMETERY +CENACLE +CENACLES +CENOBITE +CENOBITES +CENOBITIC +CENOSPECIES +CENOTAPH +CENOTAPHS +CENOTE +CENOTES +CENOZOIC +CENSE +CENSED +CENSER +CENSERS +CENSES +CENSING +CENSOR +CENSORED +CENSORIAL +CENSORING +CENSORIOUS +CENSORIOUSLY +CENSORIOUSNESS +CENSORS +CENSORSHIP +CENSORSHIPS +CENSUAL +CENSURABLE +CENSURE +CENSURED +CENSURER +CENSURERS +CENSURES +CENSURING +CENSUS +CENSUSED +CENSUSES +CENSUSING +CENT +CENTAI +CENTAL +CENTALS +CENTARE +CENTARES +CENTAS +CENTAUR +CENTAUREA +CENTAUREAS +CENTAURIC +CENTAURIES +CENTAURS +CENTAURY +CENTAVO +CENTAVOS +CENTENARIAN +CENTENARIANS +CENTENARIES +CENTENARY +CENTENNIAL +CENTENNIALLY +CENTENNIALS +CENTER +CENTERBOARD +CENTERBOARDS +CENTERED +CENTEREDNESS +CENTEREDNESSES +CENTERFOLD +CENTERFOLDS +CENTERING +CENTERINGS +CENTERLESS +CENTERLINE +CENTERLINES +CENTERPIECE +CENTERPIECES +CENTERS +CENTESES +CENTESIMAL +CENTESIMI +CENTESIMO +CENTESIMOS +CENTESIS +CENTIARE +CENTIARES +CENTIGRADE +CENTIGRAM +CENTIGRAMS +CENTILE +CENTILES +CENTILITER +CENTILITERS +CENTILLION +CENTILLIONS +CENTIME +CENTIMES +CENTIMETER +CENTIMETERS +CENTIMO +CENTIMORGAN +CENTIMORGANS +CENTIMOS +CENTIPEDE +CENTIPEDES +CENTNER +CENTNERS +CENTO +CENTONES +CENTOS +CENTRA +CENTRAL +CENTRALER +CENTRALEST +CENTRALISE +CENTRALISED +CENTRALISES +CENTRALISING +CENTRALISM +CENTRALISMS +CENTRALIST +CENTRALISTIC +CENTRALISTS +CENTRALITIES +CENTRALITY +CENTRALIZATION +CENTRALIZATIONS +CENTRALIZE +CENTRALIZED +CENTRALIZER +CENTRALIZERS +CENTRALIZES +CENTRALIZING +CENTRALLY +CENTRALS +CENTRE +CENTRED +CENTRES +CENTRIC +CENTRICAL +CENTRICALLY +CENTRICITIES +CENTRICITY +CENTRIFUGAL +CENTRIFUGALLY +CENTRIFUGALS +CENTRIFUGATION +CENTRIFUGATIONS +CENTRIFUGE +CENTRIFUGED +CENTRIFUGES +CENTRIFUGING +CENTRING +CENTRINGS +CENTRIOLE +CENTRIOLES +CENTRIPETAL +CENTRIPETALLY +CENTRISM +CENTRISMS +CENTRIST +CENTRISTS +CENTROID +CENTROIDS +CENTROMERE +CENTROMERES +CENTROMERIC +CENTROSOME +CENTROSOMES +CENTROSYMMETRIC +CENTRUM +CENTRUMS +CENTS +CENTU +CENTUM +CENTUMS +CENTUPLE +CENTUPLED +CENTUPLES +CENTUPLING +CENTURIAL +CENTURIES +CENTURION +CENTURIONS +CENTURY +CEORL +CEORLISH +CEORLS +CEP +CEPE +CEPES +CEPHALAD +CEPHALEXIN +CEPHALEXINS +CEPHALIC +CEPHALICALLY +CEPHALIN +CEPHALINS +CEPHALIZATION +CEPHALIZATIONS +CEPHALOMETRIC +CEPHALOMETRIES +CEPHALOMETRY +CEPHALOPOD +CEPHALOPODS +CEPHALORIDINE +CEPHALORIDINES +CEPHALOSPORIN +CEPHALOSPORINS +CEPHALOTHIN +CEPHALOTHINS +CEPHALOTHORACES +CEPHALOTHORAX +CEPHALOTHORAXES +CEPHALOUS +CEPHEID +CEPHEIDS +CEPS +CERACEOUS +CERAMAL +CERAMALS +CERAMIC +CERAMICIST +CERAMICISTS +CERAMICS +CERAMIDE +CERAMIDES +CERAMIST +CERAMISTS +CERASTES +CERATE +CERATED +CERATES +CERATIN +CERATINS +CERATODUS +CERATODUSES +CERATOID +CERATOPSIAN +CERATOPSIANS +CERCAL +CERCARIA +CERCARIAE +CERCARIAL +CERCARIAN +CERCARIANS +CERCARIAS +CERCI +CERCIS +CERCISES +CERCUS +CERE +CEREAL +CEREALS +CEREBELLA +CEREBELLAR +CEREBELLUM +CEREBELLUMS +CEREBRA +CEREBRAL +CEREBRALLY +CEREBRALS +CEREBRATE +CEREBRATED +CEREBRATES +CEREBRATING +CEREBRATION +CEREBRATIONS +CEREBRIC +CEREBROSIDE +CEREBROSIDES +CEREBROSPINAL +CEREBROVASCULAR +CEREBRUM +CEREBRUMS +CERECLOTH +CERECLOTHS +CERED +CEREMENT +CEREMENTS +CEREMONIAL +CEREMONIALISM +CEREMONIALISMS +CEREMONIALIST +CEREMONIALISTS +CEREMONIALLY +CEREMONIALS +CEREMONIES +CEREMONIOUS +CEREMONIOUSLY +CEREMONIOUSNESS +CEREMONY +CERES +CEREUS +CEREUSES +CERIA +CERIAS +CERIC +CERING +CERIPH +CERIPHS +CERISE +CERISES +CERITE +CERITES +CERIUM +CERIUMS +CERMET +CERMETS +CERNUOUS +CERO +CEROS +CEROTIC +CEROTYPE +CEROTYPES +CEROUS +CERTAIN +CERTAINER +CERTAINEST +CERTAINLY +CERTAINTIES +CERTAINTY +CERTES +CERTIFIABLE +CERTIFIABLY +CERTIFICATE +CERTIFICATED +CERTIFICATES +CERTIFICATING +CERTIFICATION +CERTIFICATIONS +CERTIFICATORY +CERTIFIED +CERTIFIER +CERTIFIERS +CERTIFIES +CERTIFY +CERTIFYING +CERTIORARI +CERTIORARIS +CERTITUDE +CERTITUDES +CERULEAN +CERULEANS +CERULOPLASMIN +CERULOPLASMINS +CERUMEN +CERUMENS +CERUMINOUS +CERUSE +CERUSES +CERUSITE +CERUSITES +CERUSSITE +CERUSSITES +CERVELAS +CERVELASES +CERVELAT +CERVELATS +CERVEZA +CERVEZAS +CERVICAL +CERVICES +CERVICITIS +CERVICITISES +CERVID +CERVINE +CERVIX +CERVIXES +CESAREAN +CESAREANS +CESARIAN +CESARIANS +CESIUM +CESIUMS +CESPITOSE +CESS +CESSATION +CESSATIONS +CESSED +CESSES +CESSING +CESSION +CESSIONS +CESSPIT +CESSPITS +CESSPOOL +CESSPOOLS +CESTA +CESTAS +CESTI +CESTODE +CESTODES +CESTOI +CESTOID +CESTOIDS +CESTOS +CESTUS +CESTUSES +CESURA +CESURAE +CESURAS +CETACEAN +CETACEANS +CETACEOUS +CETANE +CETANES +CETE +CETES +CETOLOGIES +CETOLOGIST +CETOLOGISTS +CETOLOGY +CEVICHE +CEVICHES +CHABAZITE +CHABAZITES +CHABLIS +CHABOUK +CHABOUKS +CHABUK +CHABUKS +CHACHKA +CHACHKAS +CHACMA +CHACMAS +CHACONNE +CHACONNES +CHAD +CHADAR +CHADARIM +CHADARS +CHADLESS +CHADOR +CHADORS +CHADRI +CHADS +CHAEBOL +CHAEBOLS +CHAETA +CHAETAE +CHAETAL +CHAETOGNATH +CHAETOGNATHS +CHAETOPOD +CHAETOPODS +CHAFE +CHAFED +CHAFER +CHAFERS +CHAFES +CHAFF +CHAFFED +CHAFFER +CHAFFERED +CHAFFERER +CHAFFERERS +CHAFFERING +CHAFFERS +CHAFFIER +CHAFFIEST +CHAFFINCH +CHAFFINCHES +CHAFFING +CHAFFS +CHAFFY +CHAFING +CHAGRIN +CHAGRINED +CHAGRINING +CHAGRINNED +CHAGRINNING +CHAGRINS +CHAI +CHAIN +CHAINE +CHAINED +CHAINES +CHAINFALL +CHAINFALLS +CHAINING +CHAINMAN +CHAINMEN +CHAINS +CHAINSAW +CHAINSAWED +CHAINSAWING +CHAINSAWS +CHAINWHEEL +CHAINWHEELS +CHAIR +CHAIRED +CHAIRING +CHAIRLIFT +CHAIRLIFTS +CHAIRMAN +CHAIRMANED +CHAIRMANING +CHAIRMANNED +CHAIRMANNING +CHAIRMANS +CHAIRMANSHIP +CHAIRMANSHIPS +CHAIRMEN +CHAIRPERSON +CHAIRPERSONS +CHAIRS +CHAIRWOMAN +CHAIRWOMEN +CHAIS +CHAISE +CHAISES +CHAKRA +CHAKRAS +CHALAH +CHALAHS +CHALAZA +CHALAZAE +CHALAZAL +CHALAZAS +CHALAZIA +CHALAZION +CHALAZIONS +CHALCEDONIC +CHALCEDONIES +CHALCEDONY +CHALCID +CHALCIDS +CHALCOCITE +CHALCOCITES +CHALCOGEN +CHALCOGENIDE +CHALCOGENIDES +CHALCOGENS +CHALCOPYRITE +CHALCOPYRITES +CHALDRON +CHALDRONS +CHALEH +CHALEHS +CHALET +CHALETS +CHALICE +CHALICED +CHALICES +CHALK +CHALKBOARD +CHALKBOARDS +CHALKED +CHALKIER +CHALKIEST +CHALKING +CHALKS +CHALKY +CHALLA +CHALLAH +CHALLAHS +CHALLAS +CHALLENGE +CHALLENGED +CHALLENGER +CHALLENGERS +CHALLENGES +CHALLENGING +CHALLENGINGLY +CHALLIE +CHALLIES +CHALLIS +CHALLISES +CHALLOT +CHALLOTH +CHALLY +CHALONE +CHALONES +CHALOT +CHALOTH +CHALUMEAU +CHALUMEAUS +CHALUPA +CHALUPAS +CHALUTZ +CHALUTZIM +CHALYBEATE +CHALYBEATES +CHAM +CHAMADE +CHAMADES +CHAMAEPHYTE +CHAMAEPHYTES +CHAMBER +CHAMBERED +CHAMBERING +CHAMBERLAIN +CHAMBERLAINS +CHAMBERMAID +CHAMBERMAIDS +CHAMBERS +CHAMBRAY +CHAMBRAYS +CHAMELEON +CHAMELEONIC +CHAMELEONLIKE +CHAMELEONS +CHAMFER +CHAMFERED +CHAMFERER +CHAMFERERS +CHAMFERING +CHAMFERS +CHAMFRAIN +CHAMFRAINS +CHAMFRON +CHAMFRONS +CHAMISA +CHAMISAS +CHAMISE +CHAMISES +CHAMISO +CHAMISOS +CHAMMIED +CHAMMIES +CHAMMY +CHAMMYING +CHAMOIS +CHAMOISED +CHAMOISES +CHAMOISING +CHAMOIX +CHAMOMILE +CHAMOMILES +CHAMP +CHAMPAC +CHAMPACA +CHAMPACAS +CHAMPACS +CHAMPAGNE +CHAMPAGNES +CHAMPAIGN +CHAMPAIGNS +CHAMPAK +CHAMPAKS +CHAMPED +CHAMPER +CHAMPERS +CHAMPERTIES +CHAMPERTOUS +CHAMPERTY +CHAMPIGNON +CHAMPIGNONS +CHAMPING +CHAMPION +CHAMPIONED +CHAMPIONING +CHAMPIONS +CHAMPIONSHIP +CHAMPIONSHIPS +CHAMPLEVE +CHAMPLEVES +CHAMPS +CHAMPY +CHAMS +CHANCE +CHANCED +CHANCEFUL +CHANCEL +CHANCELLERIES +CHANCELLERY +CHANCELLOR +CHANCELLORIES +CHANCELLORS +CHANCELLORSHIP +CHANCELLORSHIPS +CHANCELLORY +CHANCELS +CHANCER +CHANCERIES +CHANCERS +CHANCERY +CHANCES +CHANCIER +CHANCIEST +CHANCILY +CHANCINESS +CHANCINESSES +CHANCING +CHANCRE +CHANCRES +CHANCROID +CHANCROIDAL +CHANCROIDS +CHANCROUS +CHANCY +CHANDELIER +CHANDELIERED +CHANDELIERS +CHANDELLE +CHANDELLED +CHANDELLES +CHANDELLING +CHANDLER +CHANDLERIES +CHANDLERS +CHANDLERY +CHANFRON +CHANFRONS +CHANG +CHANGE +CHANGEABILITIES +CHANGEABILITY +CHANGEABLE +CHANGEABLENESS +CHANGEABLY +CHANGED +CHANGEFUL +CHANGEFULLY +CHANGEFULNESS +CHANGEFULNESSES +CHANGELESS +CHANGELESSLY +CHANGELESSNESS +CHANGELING +CHANGELINGS +CHANGEOVER +CHANGEOVERS +CHANGER +CHANGERS +CHANGES +CHANGEUP +CHANGEUPS +CHANGING +CHANGS +CHANNEL +CHANNELED +CHANNELER +CHANNELERS +CHANNELING +CHANNELIZATION +CHANNELIZATIONS +CHANNELIZE +CHANNELIZED +CHANNELIZES +CHANNELIZING +CHANNELLED +CHANNELLING +CHANNELS +CHANOYU +CHANOYUS +CHANSON +CHANSONNIER +CHANSONNIERS +CHANSONS +CHANT +CHANTABLE +CHANTAGE +CHANTAGES +CHANTED +CHANTER +CHANTERELLE +CHANTERELLES +CHANTERS +CHANTEUSE +CHANTEUSES +CHANTEY +CHANTEYS +CHANTICLEER +CHANTICLEERS +CHANTIES +CHANTING +CHANTOR +CHANTORS +CHANTRIES +CHANTRY +CHANTS +CHANTY +CHAO +CHAOS +CHAOSES +CHAOTIC +CHAOTICALLY +CHAP +CHAPARAJOS +CHAPAREJOS +CHAPARRAL +CHAPARRALS +CHAPATI +CHAPATIS +CHAPATTI +CHAPATTIS +CHAPBOOK +CHAPBOOKS +CHAPE +CHAPEAU +CHAPEAUS +CHAPEAUX +CHAPEL +CHAPELS +CHAPERON +CHAPERONAGE +CHAPERONAGES +CHAPERONE +CHAPERONED +CHAPERONES +CHAPERONING +CHAPERONS +CHAPES +CHAPFALLEN +CHAPITER +CHAPITERS +CHAPLAIN +CHAPLAINCIES +CHAPLAINCY +CHAPLAINS +CHAPLET +CHAPLETED +CHAPLETS +CHAPMAN +CHAPMEN +CHAPPATI +CHAPPATIS +CHAPPED +CHAPPIE +CHAPPIES +CHAPPING +CHAPS +CHAPT +CHAPTER +CHAPTERAL +CHAPTERED +CHAPTERING +CHAPTERS +CHAQUETA +CHAQUETAS +CHAR +CHARABANC +CHARABANCS +CHARACID +CHARACIDS +CHARACIN +CHARACINS +CHARACTER +CHARACTERED +CHARACTERFUL +CHARACTERIES +CHARACTERING +CHARACTERISTIC +CHARACTERISTICS +CHARACTERIZE +CHARACTERIZED +CHARACTERIZES +CHARACTERIZING +CHARACTERLESS +CHARACTERS +CHARACTERY +CHARADE +CHARADES +CHARAS +CHARASES +CHARBROIL +CHARBROILED +CHARBROILER +CHARBROILERS +CHARBROILING +CHARBROILS +CHARCOAL +CHARCOALED +CHARCOALING +CHARCOALS +CHARCOALY +CHARCUTERIE +CHARCUTERIES +CHARD +CHARDONNAY +CHARDONNAYS +CHARDS +CHARE +CHARED +CHARES +CHARGE +CHARGEABLE +CHARGED +CHARGEHAND +CHARGEHANDS +CHARGER +CHARGERS +CHARGES +CHARGING +CHARGRILL +CHARGRILLED +CHARGRILLING +CHARGRILLS +CHARIER +CHARIEST +CHARILY +CHARINESS +CHARINESSES +CHARING +CHARIOT +CHARIOTED +CHARIOTEER +CHARIOTEERS +CHARIOTING +CHARIOTS +CHARISM +CHARISMA +CHARISMAS +CHARISMATA +CHARISMATIC +CHARISMATICS +CHARISMS +CHARITABLE +CHARITABLENESS +CHARITABLY +CHARITIES +CHARITY +CHARIVARI +CHARIVARIED +CHARIVARIING +CHARIVARIS +CHARK +CHARKA +CHARKAS +CHARKED +CHARKHA +CHARKHAS +CHARKING +CHARKS +CHARLADIES +CHARLADY +CHARLATAN +CHARLATANISM +CHARLATANISMS +CHARLATANRIES +CHARLATANRY +CHARLATANS +CHARLEY +CHARLEYS +CHARLIE +CHARLIES +CHARLOCK +CHARLOCKS +CHARLOTTE +CHARLOTTES +CHARM +CHARMED +CHARMER +CHARMERS +CHARMEUSE +CHARMEUSES +CHARMING +CHARMINGER +CHARMINGEST +CHARMINGLY +CHARMLESS +CHARMS +CHARNEL +CHARNELS +CHARPAI +CHARPAIS +CHARPOY +CHARPOYS +CHARQUI +CHARQUID +CHARQUIS +CHARR +CHARRED +CHARRIER +CHARRIEST +CHARRING +CHARRO +CHARROS +CHARRS +CHARRY +CHARS +CHART +CHARTABLE +CHARTED +CHARTER +CHARTERED +CHARTERER +CHARTERERS +CHARTERING +CHARTERS +CHARTING +CHARTIST +CHARTISTS +CHARTLESS +CHARTREUSE +CHARTREUSES +CHARTS +CHARTULARIES +CHARTULARY +CHARWOMAN +CHARWOMEN +CHARY +CHASE +CHASEABLE +CHASED +CHASER +CHASERS +CHASES +CHASING +CHASINGS +CHASM +CHASMAL +CHASMED +CHASMIC +CHASMS +CHASMY +CHASSE +CHASSED +CHASSEING +CHASSEPOT +CHASSEPOTS +CHASSES +CHASSEUR +CHASSEURS +CHASSIS +CHASTE +CHASTELY +CHASTEN +CHASTENED +CHASTENER +CHASTENERS +CHASTENESS +CHASTENESSES +CHASTENING +CHASTENS +CHASTER +CHASTEST +CHASTISE +CHASTISED +CHASTISEMENT +CHASTISEMENTS +CHASTISER +CHASTISERS +CHASTISES +CHASTISING +CHASTITIES +CHASTITY +CHASUBLE +CHASUBLES +CHAT +CHATCHKA +CHATCHKAS +CHATCHKE +CHATCHKES +CHATEAU +CHATEAUBRIAND +CHATEAUBRIANDS +CHATEAUS +CHATEAUX +CHATELAIN +CHATELAINE +CHATELAINES +CHATELAINS +CHATOYANCE +CHATOYANCES +CHATOYANCIES +CHATOYANCY +CHATOYANT +CHATOYANTS +CHATROOM +CHATROOMS +CHATS +CHATTED +CHATTEL +CHATTELS +CHATTER +CHATTERBOX +CHATTERBOXES +CHATTERED +CHATTERER +CHATTERERS +CHATTERING +CHATTERS +CHATTERY +CHATTIER +CHATTIEST +CHATTILY +CHATTINESS +CHATTINESSES +CHATTING +CHATTY +CHAUFER +CHAUFERS +CHAUFFER +CHAUFFERS +CHAUFFEUR +CHAUFFEURED +CHAUFFEURING +CHAUFFEURS +CHAULMOOGRA +CHAULMOOGRAS +CHAUNT +CHAUNTED +CHAUNTER +CHAUNTERS +CHAUNTING +CHAUNTS +CHAUSSES +CHAUSSURE +CHAUSSURES +CHAUTAUQUA +CHAUTAUQUAS +CHAUVINISM +CHAUVINISMS +CHAUVINIST +CHAUVINISTIC +CHAUVINISTS +CHAW +CHAWBACON +CHAWBACONS +CHAWED +CHAWER +CHAWERS +CHAWING +CHAWS +CHAY +CHAYOTE +CHAYOTES +CHAYS +CHAZAN +CHAZANIM +CHAZANS +CHAZZAN +CHAZZANIM +CHAZZANS +CHAZZEN +CHAZZENIM +CHAZZENS +CHEAP +CHEAPEN +CHEAPENED +CHEAPENER +CHEAPENERS +CHEAPENING +CHEAPENS +CHEAPER +CHEAPEST +CHEAPIE +CHEAPIES +CHEAPISH +CHEAPISHLY +CHEAPJACK +CHEAPJACKS +CHEAPLY +CHEAPNESS +CHEAPNESSES +CHEAPO +CHEAPOS +CHEAPS +CHEAPSKATE +CHEAPSKATES +CHEAT +CHEATABLE +CHEATED +CHEATER +CHEATERS +CHEATING +CHEATS +CHEBEC +CHEBECS +CHECHAKO +CHECHAKOS +CHECK +CHECKABLE +CHECKBOOK +CHECKBOOKS +CHECKED +CHECKER +CHECKERBERRIES +CHECKERBERRY +CHECKERBOARD +CHECKERBOARDS +CHECKERED +CHECKERING +CHECKERS +CHECKING +CHECKLESS +CHECKLIST +CHECKLISTED +CHECKLISTING +CHECKLISTS +CHECKMARK +CHECKMARKED +CHECKMARKING +CHECKMARKS +CHECKMATE +CHECKMATED +CHECKMATES +CHECKMATING +CHECKOFF +CHECKOFFS +CHECKOUT +CHECKOUTS +CHECKPOINT +CHECKPOINTS +CHECKREIN +CHECKREINS +CHECKROOM +CHECKROOMS +CHECKROW +CHECKROWED +CHECKROWING +CHECKROWS +CHECKS +CHECKSUM +CHECKSUMS +CHECKUP +CHECKUPS +CHEDDAR +CHEDDARS +CHEDDARY +CHEDDITE +CHEDDITES +CHEDER +CHEDERS +CHEDITE +CHEDITES +CHEECHAKO +CHEECHAKOS +CHEEK +CHEEKBONE +CHEEKBONES +CHEEKED +CHEEKFUL +CHEEKFULS +CHEEKIER +CHEEKIEST +CHEEKILY +CHEEKINESS +CHEEKINESSES +CHEEKING +CHEEKLESS +CHEEKS +CHEEKY +CHEEP +CHEEPED +CHEEPER +CHEEPERS +CHEEPING +CHEEPS +CHEER +CHEERED +CHEERER +CHEERERS +CHEERFUL +CHEERFULLER +CHEERFULLEST +CHEERFULLY +CHEERFULNESS +CHEERFULNESSES +CHEERIER +CHEERIEST +CHEERILY +CHEERINESS +CHEERINESSES +CHEERING +CHEERIO +CHEERIOS +CHEERLEAD +CHEERLEADER +CHEERLEADERS +CHEERLEADING +CHEERLEADS +CHEERLED +CHEERLESS +CHEERLESSLY +CHEERLESSNESS +CHEERLESSNESSES +CHEERLY +CHEERO +CHEEROS +CHEERS +CHEERY +CHEESE +CHEESEBURGER +CHEESEBURGERS +CHEESECAKE +CHEESECAKES +CHEESECLOTH +CHEESECLOTHS +CHEESED +CHEESEPARING +CHEESEPARINGS +CHEESES +CHEESIER +CHEESIEST +CHEESILY +CHEESINESS +CHEESINESSES +CHEESING +CHEESY +CHEETAH +CHEETAHS +CHEF +CHEFDOM +CHEFDOMS +CHEFED +CHEFFED +CHEFFING +CHEFING +CHEFS +CHEGOE +CHEGOES +CHELA +CHELAE +CHELAS +CHELASHIP +CHELASHIPS +CHELATABLE +CHELATE +CHELATED +CHELATES +CHELATING +CHELATION +CHELATIONS +CHELATOR +CHELATORS +CHELICERA +CHELICERAE +CHELICERAL +CHELIFORM +CHELIPED +CHELIPEDS +CHELOID +CHELOIDS +CHELONIAN +CHELONIANS +CHEMIC +CHEMICAL +CHEMICALLY +CHEMICALS +CHEMICS +CHEMIOSMOTIC +CHEMISE +CHEMISES +CHEMISETTE +CHEMISETTES +CHEMISM +CHEMISMS +CHEMISORB +CHEMISORBED +CHEMISORBING +CHEMISORBS +CHEMISORPTION +CHEMISORPTIONS +CHEMIST +CHEMISTRIES +CHEMISTRY +CHEMISTS +CHEMO +CHEMOAUTOTROPHY +CHEMOKINE +CHEMOKINES +CHEMORECEPTION +CHEMORECEPTIONS +CHEMORECEPTIVE +CHEMORECEPTOR +CHEMORECEPTORS +CHEMOS +CHEMOSORB +CHEMOSORBED +CHEMOSORBING +CHEMOSORBS +CHEMOSTAT +CHEMOSTATS +CHEMOSURGERIES +CHEMOSURGERY +CHEMOSURGICAL +CHEMOSYNTHESES +CHEMOSYNTHESIS +CHEMOSYNTHETIC +CHEMOTACTIC +CHEMOTACTICALLY +CHEMOTAXES +CHEMOTAXIS +CHEMOTAXONOMIC +CHEMOTAXONOMIES +CHEMOTAXONOMIST +CHEMOTAXONOMY +CHEMOTHERAPIES +CHEMOTHERAPIST +CHEMOTHERAPISTS +CHEMOTHERAPY +CHEMOTROPISM +CHEMOTROPISMS +CHEMURGIC +CHEMURGIES +CHEMURGY +CHENILLE +CHENILLES +CHENOPOD +CHENOPODS +CHEONGSAM +CHEONGSAMS +CHEQUE +CHEQUER +CHEQUERED +CHEQUERING +CHEQUERS +CHEQUES +CHERIMOYA +CHERIMOYAS +CHERISH +CHERISHABLE +CHERISHED +CHERISHER +CHERISHERS +CHERISHES +CHERISHING +CHERNOZEM +CHERNOZEMIC +CHERNOZEMS +CHEROOT +CHEROOTS +CHERRIES +CHERRY +CHERRYLIKE +CHERRYSTONE +CHERRYSTONES +CHERT +CHERTIER +CHERTIEST +CHERTS +CHERTY +CHERUB +CHERUBIC +CHERUBICALLY +CHERUBIM +CHERUBIMS +CHERUBLIKE +CHERUBS +CHERVIL +CHERVILS +CHESHIRE +CHESHIRES +CHESS +CHESSBOARD +CHESSBOARDS +CHESSES +CHESSMAN +CHESSMEN +CHEST +CHESTED +CHESTERFIELD +CHESTERFIELDS +CHESTFUL +CHESTFULS +CHESTIER +CHESTIEST +CHESTILY +CHESTNUT +CHESTNUTS +CHESTS +CHESTY +CHETAH +CHETAHS +CHETH +CHETHS +CHETRUM +CHETRUMS +CHEVALET +CHEVALETS +CHEVALIER +CHEVALIERS +CHEVELURE +CHEVELURES +CHEVERON +CHEVERONS +CHEVIED +CHEVIES +CHEVIOT +CHEVIOTS +CHEVRE +CHEVRES +CHEVRET +CHEVRETS +CHEVRON +CHEVRONS +CHEVY +CHEVYING +CHEW +CHEWABLE +CHEWED +CHEWER +CHEWERS +CHEWIER +CHEWIEST +CHEWINESS +CHEWINESSES +CHEWING +CHEWINK +CHEWINKS +CHEWS +CHEWY +CHEZ +CHI +CHIA +CHIANTI +CHIANTIS +CHIAO +CHIAROSCURIST +CHIAROSCURISTS +CHIAROSCURO +CHIAROSCUROS +CHIAS +CHIASM +CHIASMA +CHIASMAL +CHIASMAS +CHIASMATA +CHIASMATIC +CHIASMI +CHIASMIC +CHIASMS +CHIASMUS +CHIASTIC +CHIAUS +CHIAUSES +CHIBOUK +CHIBOUKS +CHIBOUQUE +CHIBOUQUES +CHIC +CHICA +CHICALOTE +CHICALOTES +CHICANE +CHICANED +CHICANER +CHICANERIES +CHICANERS +CHICANERY +CHICANES +CHICANING +CHICANO +CHICANOS +CHICAS +CHICCORIES +CHICCORY +CHICER +CHICEST +CHICHI +CHICHIER +CHICHIEST +CHICHIS +CHICK +CHICKADEE +CHICKADEES +CHICKAREE +CHICKAREES +CHICKEE +CHICKEES +CHICKEN +CHICKENED +CHICKENHEARTED +CHICKENING +CHICKENS +CHICKENSHIT +CHICKENSHITS +CHICKORIES +CHICKORY +CHICKPEA +CHICKPEAS +CHICKS +CHICKWEED +CHICKWEEDS +CHICLE +CHICLES +CHICLY +CHICNESS +CHICNESSES +CHICO +CHICORIES +CHICORY +CHICOS +CHICS +CHID +CHIDDEN +CHIDE +CHIDED +CHIDER +CHIDERS +CHIDES +CHIDING +CHIDINGLY +CHIEF +CHIEFDOM +CHIEFDOMS +CHIEFER +CHIEFEST +CHIEFLY +CHIEFS +CHIEFSHIP +CHIEFSHIPS +CHIEFTAIN +CHIEFTAINCIES +CHIEFTAINCY +CHIEFTAINS +CHIEFTAINSHIP +CHIEFTAINSHIPS +CHIEL +CHIELD +CHIELDS +CHIELS +CHIFFCHAFF +CHIFFCHAFFS +CHIFFON +CHIFFONADE +CHIFFONADES +CHIFFONIER +CHIFFONIERS +CHIFFONS +CHIFFOROBE +CHIFFOROBES +CHIGETAI +CHIGETAIS +CHIGGER +CHIGGERS +CHIGNON +CHIGNONED +CHIGNONS +CHIGOE +CHIGOES +CHILBLAIN +CHILBLAINS +CHILD +CHILDBEARING +CHILDBEARINGS +CHILDBED +CHILDBEDS +CHILDBIRTH +CHILDBIRTHS +CHILDCARE +CHILDCARES +CHILDE +CHILDES +CHILDHOOD +CHILDHOODS +CHILDING +CHILDISH +CHILDISHLY +CHILDISHNESS +CHILDISHNESSES +CHILDLESS +CHILDLESSNESS +CHILDLESSNESSES +CHILDLIER +CHILDLIEST +CHILDLIKE +CHILDLIKENESS +CHILDLIKENESSES +CHILDLY +CHILDPROOF +CHILDREN +CHILE +CHILES +CHILI +CHILIAD +CHILIADAL +CHILIADIC +CHILIADS +CHILIARCH +CHILIARCHS +CHILIASM +CHILIASMS +CHILIAST +CHILIASTIC +CHILIASTS +CHILIDOG +CHILIDOGS +CHILIES +CHILIS +CHILL +CHILLED +CHILLER +CHILLERS +CHILLEST +CHILLI +CHILLIER +CHILLIES +CHILLIEST +CHILLILY +CHILLINESS +CHILLINESSES +CHILLING +CHILLINGLY +CHILLIS +CHILLNESS +CHILLNESSES +CHILLS +CHILLUM +CHILLUMS +CHILLY +CHILOPOD +CHILOPODS +CHILTEPIN +CHILTEPINS +CHIMAERA +CHIMAERAS +CHIMAERIC +CHIMAERISM +CHIMAERISMS +CHIMAR +CHIMARS +CHIMB +CHIMBLEY +CHIMBLEYS +CHIMBLIES +CHIMBLY +CHIMBS +CHIME +CHIMED +CHIMER +CHIMERA +CHIMERAS +CHIMERE +CHIMERES +CHIMERIC +CHIMERICAL +CHIMERICALLY +CHIMERISM +CHIMERISMS +CHIMERS +CHIMES +CHIMICHANGA +CHIMICHANGAS +CHIMING +CHIMLA +CHIMLAS +CHIMLEY +CHIMLEYS +CHIMNEY +CHIMNEYLIKE +CHIMNEYPIECE +CHIMNEYPIECES +CHIMNEYS +CHIMP +CHIMPANZEE +CHIMPANZEES +CHIMPS +CHIN +CHINA +CHINABERRIES +CHINABERRY +CHINAS +CHINAWARE +CHINAWARES +CHINBONE +CHINBONES +CHINCAPIN +CHINCAPINS +CHINCH +CHINCHERINCHEE +CHINCHERINCHEES +CHINCHES +CHINCHIER +CHINCHIEST +CHINCHILLA +CHINCHILLAS +CHINCHY +CHINE +CHINED +CHINES +CHINING +CHINK +CHINKAPIN +CHINKAPINS +CHINKED +CHINKIER +CHINKIEST +CHINKING +CHINKS +CHINKY +CHINLESS +CHINNED +CHINNING +CHINO +CHINOISERIE +CHINOISERIES +CHINONE +CHINONES +CHINOOK +CHINOOKS +CHINOS +CHINQUAPIN +CHINQUAPINS +CHINS +CHINSTRAP +CHINSTRAPS +CHINTS +CHINTSES +CHINTZ +CHINTZES +CHINTZIER +CHINTZIEST +CHINTZY +CHINWAG +CHINWAGGED +CHINWAGGING +CHINWAGS +CHIONODOXA +CHIONODOXAS +CHIP +CHIPBOARD +CHIPBOARDS +CHIPMUCK +CHIPMUCKS +CHIPMUNK +CHIPMUNKS +CHIPOTLE +CHIPOTLES +CHIPPABLE +CHIPPED +CHIPPER +CHIPPERED +CHIPPERING +CHIPPERS +CHIPPIE +CHIPPIER +CHIPPIES +CHIPPIEST +CHIPPING +CHIPPY +CHIPS +CHIRAL +CHIRALITIES +CHIRALITY +CHIRIMOYA +CHIRIMOYAS +CHIRK +CHIRKED +CHIRKER +CHIRKEST +CHIRKING +CHIRKS +CHIRM +CHIRMED +CHIRMING +CHIRMS +CHIRO +CHIROGRAPHER +CHIROGRAPHERS +CHIROGRAPHIC +CHIROGRAPHICAL +CHIROGRAPHIES +CHIROGRAPHY +CHIROMANCER +CHIROMANCERS +CHIROMANCIES +CHIROMANCY +CHIRONOMID +CHIRONOMIDS +CHIROPODIES +CHIROPODIST +CHIROPODISTS +CHIROPODY +CHIROPRACTIC +CHIROPRACTICS +CHIROPRACTOR +CHIROPRACTORS +CHIROPTER +CHIROPTERAN +CHIROPTERANS +CHIROPTERS +CHIROS +CHIRP +CHIRPED +CHIRPER +CHIRPERS +CHIRPIER +CHIRPIEST +CHIRPILY +CHIRPING +CHIRPS +CHIRPY +CHIRR +CHIRRE +CHIRRED +CHIRREN +CHIRRES +CHIRRING +CHIRRS +CHIRRUP +CHIRRUPED +CHIRRUPING +CHIRRUPS +CHIRRUPY +CHIRU +CHIRURGEON +CHIRURGEONS +CHIRUS +CHIS +CHISEL +CHISELED +CHISELER +CHISELERS +CHISELING +CHISELLED +CHISELLER +CHISELLERS +CHISELLING +CHISELS +CHIT +CHITAL +CHITCHAT +CHITCHATS +CHITCHATTED +CHITCHATTING +CHITIN +CHITINOID +CHITINOUS +CHITINS +CHITLIN +CHITLING +CHITLINGS +CHITLINS +CHITON +CHITONS +CHITOSAN +CHITOSANS +CHITS +CHITTER +CHITTERED +CHITTERING +CHITTERLINGS +CHITTERS +CHITTIES +CHITTY +CHIVALRIC +CHIVALRIES +CHIVALROUS +CHIVALROUSLY +CHIVALROUSNESS +CHIVALRY +CHIVAREE +CHIVAREED +CHIVAREEING +CHIVAREES +CHIVARI +CHIVARIED +CHIVARIES +CHIVARIING +CHIVE +CHIVES +CHIVIED +CHIVIES +CHIVVIED +CHIVVIES +CHIVVY +CHIVVYING +CHIVY +CHIVYING +CHLAMYDES +CHLAMYDIA +CHLAMYDIAE +CHLAMYDIAL +CHLAMYDOSPORE +CHLAMYDOSPORES +CHLAMYS +CHLAMYSES +CHLOASMA +CHLOASMAS +CHLOASMATA +CHLORACNE +CHLORACNES +CHLORAL +CHLORALOSE +CHLORALOSED +CHLORALOSES +CHLORALS +CHLORAMINE +CHLORAMINES +CHLORAMPHENICOL +CHLORATE +CHLORATES +CHLORDAN +CHLORDANE +CHLORDANES +CHLORDANS +CHLORELLA +CHLORELLAS +CHLORENCHYMA +CHLORENCHYMAS +CHLORIC +CHLORID +CHLORIDE +CHLORIDES +CHLORIDIC +CHLORIDS +CHLORIN +CHLORINATE +CHLORINATED +CHLORINATES +CHLORINATING +CHLORINATION +CHLORINATIONS +CHLORINATOR +CHLORINATORS +CHLORINE +CHLORINES +CHLORINITIES +CHLORINITY +CHLORINS +CHLORITE +CHLORITES +CHLORITIC +CHLOROBENZENE +CHLOROBENZENES +CHLOROFORM +CHLOROFORMED +CHLOROFORMING +CHLOROFORMS +CHLOROHYDRIN +CHLOROHYDRINS +CHLOROPHYLL +CHLOROPHYLLOUS +CHLOROPHYLLS +CHLOROPICRIN +CHLOROPICRINS +CHLOROPLAST +CHLOROPLASTIC +CHLOROPLASTS +CHLOROPRENE +CHLOROPRENES +CHLOROQUINE +CHLOROQUINES +CHLOROSES +CHLOROSIS +CHLOROTHIAZIDE +CHLOROTHIAZIDES +CHLOROTIC +CHLOROUS +CHLORPROMAZINE +CHLORPROMAZINES +CHLORPROPAMIDE +CHLORPROPAMIDES +CHOANA +CHOANAE +CHOANOCYTE +CHOANOCYTES +CHOCK +CHOCKABLOCK +CHOCKED +CHOCKFUL +CHOCKFULL +CHOCKING +CHOCKS +CHOCOHOLIC +CHOCOHOLICS +CHOCOLATE +CHOCOLATES +CHOCOLATEY +CHOCOLATIER +CHOCOLATIERS +CHOCOLATY +CHOICE +CHOICELY +CHOICENESS +CHOICENESSES +CHOICER +CHOICES +CHOICEST +CHOIR +CHOIRBOY +CHOIRBOYS +CHOIRED +CHOIRGIRL +CHOIRGIRLS +CHOIRING +CHOIRMASTER +CHOIRMASTERS +CHOIRS +CHOKE +CHOKEABLE +CHOKEBERRIES +CHOKEBERRY +CHOKEBORE +CHOKEBORES +CHOKECHERRIES +CHOKECHERRY +CHOKED +CHOKEDAMP +CHOKEDAMPS +CHOKEHOLD +CHOKEHOLDS +CHOKER +CHOKERS +CHOKES +CHOKEY +CHOKIER +CHOKIEST +CHOKING +CHOKINGLY +CHOKY +CHOLA +CHOLANGIOGRAM +CHOLANGIOGRAMS +CHOLANGIOGRAPHY +CHOLAS +CHOLATE +CHOLATES +CHOLECALCIFEROL +CHOLECYST +CHOLECYSTECTOMY +CHOLECYSTITIS +CHOLECYSTITISES +CHOLECYSTOKININ +CHOLECYSTS +CHOLELITHIASES +CHOLELITHIASIS +CHOLENT +CHOLENTS +CHOLER +CHOLERA +CHOLERAIC +CHOLERAS +CHOLERIC +CHOLERICALLY +CHOLEROID +CHOLERS +CHOLESTASES +CHOLESTASIS +CHOLESTATIC +CHOLESTERIC +CHOLESTEROL +CHOLESTEROLS +CHOLESTYRAMINE +CHOLESTYRAMINES +CHOLINE +CHOLINERGIC +CHOLINERGICALLY +CHOLINES +CHOLINESTERASE +CHOLINESTERASES +CHOLLA +CHOLLAS +CHOLO +CHOLOS +CHOMP +CHOMPED +CHOMPER +CHOMPERS +CHOMPING +CHOMPS +CHON +CHONDRIOSOME +CHONDRIOSOMES +CHONDRITE +CHONDRITES +CHONDRITIC +CHONDROCRANIA +CHONDROCRANIUM +CHONDROCRANIUMS +CHONDROITIN +CHONDROITINS +CHONDROMA +CHONDROMAS +CHONDROMATA +CHONDRULE +CHONDRULES +CHOOK +CHOOKS +CHOOSE +CHOOSER +CHOOSERS +CHOOSES +CHOOSEY +CHOOSIER +CHOOSIEST +CHOOSING +CHOOSY +CHOP +CHOPFALLEN +CHOPHOUSE +CHOPHOUSES +CHOPIN +CHOPINE +CHOPINES +CHOPINS +CHOPLOGIC +CHOPLOGICS +CHOPPED +CHOPPER +CHOPPERED +CHOPPERING +CHOPPERS +CHOPPIER +CHOPPIEST +CHOPPILY +CHOPPINESS +CHOPPINESSES +CHOPPING +CHOPPY +CHOPS +CHOPSOCKIES +CHOPSOCKY +CHOPSTICK +CHOPSTICKS +CHORAGI +CHORAGIC +CHORAGUS +CHORAGUSES +CHORAL +CHORALE +CHORALES +CHORALLY +CHORALS +CHORD +CHORDAL +CHORDAMESODERM +CHORDAMESODERMS +CHORDATE +CHORDATES +CHORDED +CHORDING +CHORDS +CHORE +CHOREA +CHOREAL +CHOREAS +CHOREATIC +CHORED +CHOREGI +CHOREGUS +CHOREGUSES +CHOREIC +CHOREIFORM +CHOREMAN +CHOREMEN +CHOREOGRAPH +CHOREOGRAPHED +CHOREOGRAPHER +CHOREOGRAPHERS +CHOREOGRAPHIC +CHOREOGRAPHIES +CHOREOGRAPHING +CHOREOGRAPHS +CHOREOGRAPHY +CHOREOID +CHORES +CHORIAL +CHORIAMB +CHORIAMBS +CHORIC +CHORINE +CHORINES +CHORING +CHORIOALLANTOIC +CHORIOALLANTOIS +CHORIOCARCINOMA +CHORIOID +CHORIOIDS +CHORION +CHORIONIC +CHORIONS +CHORISTER +CHORISTERS +CHORIZO +CHORIZOS +CHOROGRAPHER +CHOROGRAPHERS +CHOROGRAPHIC +CHOROGRAPHIES +CHOROGRAPHY +CHOROID +CHOROIDAL +CHOROIDS +CHORTEN +CHORTENS +CHORTLE +CHORTLED +CHORTLER +CHORTLERS +CHORTLES +CHORTLING +CHORUS +CHORUSED +CHORUSES +CHORUSING +CHORUSSED +CHORUSSES +CHORUSSING +CHOSE +CHOSEN +CHOSES +CHOTT +CHOTTS +CHOUGH +CHOUGHS +CHOUSE +CHOUSED +CHOUSER +CHOUSERS +CHOUSES +CHOUSH +CHOUSHES +CHOUSING +CHOW +CHOWCHOW +CHOWCHOWS +CHOWDER +CHOWDERED +CHOWDERHEAD +CHOWDERHEADED +CHOWDERHEADS +CHOWDERING +CHOWDERS +CHOWED +CHOWHOUND +CHOWHOUNDS +CHOWING +CHOWS +CHOWSE +CHOWSED +CHOWSES +CHOWSING +CHOWTIME +CHOWTIMES +CHRESARD +CHRESARDS +CHRESTOMATHIES +CHRESTOMATHY +CHRISM +CHRISMA +CHRISMAL +CHRISMATION +CHRISMATIONS +CHRISMON +CHRISMONS +CHRISMS +CHRISOM +CHRISOMS +CHRISTEN +CHRISTENED +CHRISTENING +CHRISTENINGS +CHRISTENS +CHRISTIANIA +CHRISTIANIAS +CHRISTIE +CHRISTIES +CHRISTY +CHROMA +CHROMAFFIN +CHROMAS +CHROMATE +CHROMATES +CHROMATIC +CHROMATICALLY +CHROMATICISM +CHROMATICISMS +CHROMATICITIES +CHROMATICITY +CHROMATICS +CHROMATID +CHROMATIDS +CHROMATIN +CHROMATINIC +CHROMATINS +CHROMATOGRAM +CHROMATOGRAMS +CHROMATOGRAPH +CHROMATOGRAPHED +CHROMATOGRAPHER +CHROMATOGRAPHIC +CHROMATOGRAPHS +CHROMATOGRAPHY +CHROMATOLYSES +CHROMATOLYSIS +CHROMATOLYTIC +CHROMATOPHORE +CHROMATOPHORES +CHROME +CHROMED +CHROMES +CHROMIC +CHROMIDE +CHROMIDES +CHROMIER +CHROMIEST +CHROMINANCE +CHROMINANCES +CHROMING +CHROMINGS +CHROMITE +CHROMITES +CHROMIUM +CHROMIUMS +CHROMIZE +CHROMIZED +CHROMIZES +CHROMIZING +CHROMO +CHROMOCENTER +CHROMOCENTERS +CHROMODYNAMICS +CHROMOGEN +CHROMOGENIC +CHROMOGENS +CHROMOMERE +CHROMOMERES +CHROMOMERIC +CHROMONEMA +CHROMONEMATA +CHROMONEMATIC +CHROMOPHIL +CHROMOPHOBE +CHROMOPHORE +CHROMOPHORES +CHROMOPHORIC +CHROMOPLAST +CHROMOPLASTS +CHROMOPROTEIN +CHROMOPROTEINS +CHROMOS +CHROMOSOMAL +CHROMOSOMALLY +CHROMOSOME +CHROMOSOMES +CHROMOSPHERE +CHROMOSPHERES +CHROMOSPHERIC +CHROMOUS +CHROMY +CHROMYL +CHROMYLS +CHRONAXIE +CHRONAXIES +CHRONAXY +CHRONIC +CHRONICALLY +CHRONICITIES +CHRONICITY +CHRONICLE +CHRONICLED +CHRONICLER +CHRONICLERS +CHRONICLES +CHRONICLING +CHRONICS +CHRONOBIOLOGIC +CHRONOBIOLOGIES +CHRONOBIOLOGIST +CHRONOBIOLOGY +CHRONOGRAM +CHRONOGRAMS +CHRONOGRAPH +CHRONOGRAPHIC +CHRONOGRAPHIES +CHRONOGRAPHS +CHRONOGRAPHY +CHRONOLOGER +CHRONOLOGERS +CHRONOLOGIC +CHRONOLOGICAL +CHRONOLOGICALLY +CHRONOLOGIES +CHRONOLOGIST +CHRONOLOGISTS +CHRONOLOGY +CHRONOMETER +CHRONOMETERS +CHRONOMETRIC +CHRONOMETRICAL +CHRONOMETRIES +CHRONOMETRY +CHRONON +CHRONONS +CHRONOTHERAPIES +CHRONOTHERAPY +CHRYSALID +CHRYSALIDES +CHRYSALIDS +CHRYSALIS +CHRYSALISES +CHRYSANTHEMUM +CHRYSANTHEMUMS +CHRYSAROBIN +CHRYSAROBINS +CHRYSOBERYL +CHRYSOBERYLS +CHRYSOLITE +CHRYSOLITES +CHRYSOMELID +CHRYSOMELIDS +CHRYSOPHYTE +CHRYSOPHYTES +CHRYSOPRASE +CHRYSOPRASES +CHRYSOTILE +CHRYSOTILES +CHTHONIAN +CHTHONIC +CHUB +CHUBASCO +CHUBASCOS +CHUBBIER +CHUBBIEST +CHUBBILY +CHUBBINESS +CHUBBINESSES +CHUBBY +CHUBS +CHUCK +CHUCKAWALLA +CHUCKAWALLAS +CHUCKED +CHUCKHOLE +CHUCKHOLES +CHUCKIES +CHUCKING +CHUCKLE +CHUCKLED +CHUCKLEHEAD +CHUCKLEHEADED +CHUCKLEHEADS +CHUCKLER +CHUCKLERS +CHUCKLES +CHUCKLESOME +CHUCKLING +CHUCKLINGLY +CHUCKS +CHUCKWALLA +CHUCKWALLAS +CHUCKY +CHUDDAH +CHUDDAHS +CHUDDAR +CHUDDARS +CHUDDER +CHUDDERS +CHUFA +CHUFAS +CHUFF +CHUFFED +CHUFFER +CHUFFEST +CHUFFIER +CHUFFIEST +CHUFFING +CHUFFS +CHUFFY +CHUG +CHUGALUG +CHUGALUGGED +CHUGALUGGING +CHUGALUGS +CHUGGED +CHUGGER +CHUGGERS +CHUGGING +CHUGS +CHUKAR +CHUKARS +CHUKKA +CHUKKAR +CHUKKARS +CHUKKAS +CHUKKER +CHUKKERS +CHUM +CHUMMED +CHUMMIER +CHUMMIEST +CHUMMILY +CHUMMINESS +CHUMMINESSES +CHUMMING +CHUMMY +CHUMP +CHUMPED +CHUMPING +CHUMPS +CHUMS +CHUMSHIP +CHUMSHIPS +CHUNK +CHUNKED +CHUNKIER +CHUNKIEST +CHUNKILY +CHUNKING +CHUNKS +CHUNKY +CHUNNEL +CHUNNELS +CHUNTER +CHUNTERED +CHUNTERING +CHUNTERS +CHUPPA +CHUPPAH +CHUPPAHS +CHUPPAS +CHURCH +CHURCHED +CHURCHES +CHURCHGOER +CHURCHGOERS +CHURCHGOING +CHURCHGOINGS +CHURCHIANITIES +CHURCHIANITY +CHURCHIER +CHURCHIEST +CHURCHING +CHURCHINGS +CHURCHLESS +CHURCHLIER +CHURCHLIEST +CHURCHLINESS +CHURCHLINESSES +CHURCHLY +CHURCHMAN +CHURCHMANSHIP +CHURCHMANSHIPS +CHURCHMEN +CHURCHWARDEN +CHURCHWARDENS +CHURCHWOMAN +CHURCHWOMEN +CHURCHY +CHURCHYARD +CHURCHYARDS +CHURL +CHURLISH +CHURLISHLY +CHURLISHNESS +CHURLISHNESSES +CHURLS +CHURN +CHURNED +CHURNER +CHURNERS +CHURNING +CHURNINGS +CHURNS +CHURR +CHURRED +CHURRIGUERESQUE +CHURRING +CHURRO +CHURROS +CHURRS +CHUTE +CHUTED +CHUTES +CHUTING +CHUTIST +CHUTISTS +CHUTNEE +CHUTNEES +CHUTNEY +CHUTNEYS +CHUTZPA +CHUTZPAH +CHUTZPAHS +CHUTZPAS +CHYLE +CHYLES +CHYLOMICRON +CHYLOMICRONS +CHYLOUS +CHYME +CHYMES +CHYMIC +CHYMICS +CHYMIST +CHYMISTS +CHYMOSIN +CHYMOSINS +CHYMOTRYPSIN +CHYMOTRYPSINS +CHYMOTRYPTIC +CHYMOUS +CHYTRID +CHYTRIDS +CIAO +CIBOL +CIBOLS +CIBORIA +CIBORIUM +CIBOULE +CIBOULES +CICADA +CICADAE +CICADAS +CICALA +CICALAS +CICALE +CICATRICE +CICATRICES +CICATRICIAL +CICATRIX +CICATRIXES +CICATRIZATION +CICATRIZATIONS +CICATRIZE +CICATRIZED +CICATRIZES +CICATRIZING +CICELIES +CICELY +CICERO +CICERONE +CICERONES +CICERONI +CICEROS +CICHLID +CICHLIDAE +CICHLIDS +CICISBEI +CICISBEISM +CICISBEISMS +CICISBEO +CICISBEOS +CICOREE +CICOREES +CIDER +CIDERS +CIG +CIGAR +CIGARET +CIGARETS +CIGARETTE +CIGARETTES +CIGARILLO +CIGARILLOS +CIGARLIKE +CIGARS +CIGS +CIGUATERA +CIGUATERAS +CILANTRO +CILANTROS +CILIA +CILIARY +CILIATE +CILIATED +CILIATELY +CILIATES +CILIATION +CILIATIONS +CILICE +CILICES +CILIOLATE +CILIUM +CIMBALOM +CIMBALOMS +CIMETIDINE +CIMETIDINES +CIMEX +CIMICES +CINCH +CINCHED +CINCHES +CINCHING +CINCHONA +CINCHONAS +CINCHONIC +CINCHONINE +CINCHONINES +CINCHONISM +CINCHONISMS +CINCTURE +CINCTURED +CINCTURES +CINCTURING +CINDER +CINDERED +CINDERING +CINDEROUS +CINDERS +CINDERY +CINE +CINEAST +CINEASTE +CINEASTES +CINEASTS +CINEMA +CINEMAGOER +CINEMAGOERS +CINEMAS +CINEMATHEQUE +CINEMATHEQUES +CINEMATIC +CINEMATICALLY +CINEMATIZE +CINEMATIZED +CINEMATIZES +CINEMATIZING +CINEMATOGRAPH +CINEMATOGRAPHER +CINEMATOGRAPHIC +CINEMATOGRAPHS +CINEMATOGRAPHY +CINEOL +CINEOLE +CINEOLES +CINEOLS +CINEPHILE +CINEPHILES +CINERARIA +CINERARIAS +CINERARIUM +CINERARY +CINEREOUS +CINERIN +CINERINS +CINES +CINGULA +CINGULAR +CINGULATE +CINGULUM +CINNABAR +CINNABARINE +CINNABARS +CINNAMIC +CINNAMON +CINNAMONS +CINNAMONY +CINNAMYL +CINNAMYLS +CINQUAIN +CINQUAINS +CINQUE +CINQUECENTIST +CINQUECENTISTS +CINQUECENTO +CINQUECENTOS +CINQUEFOIL +CINQUEFOILS +CINQUES +CION +CIONS +CIOPPINO +CIOPPINOS +CIPHER +CIPHERED +CIPHERER +CIPHERERS +CIPHERING +CIPHERS +CIPHERTEXT +CIPHERTEXTS +CIPHONIES +CIPHONY +CIPOLIN +CIPOLINS +CIPOLLINO +CIPOLLINOS +CIRCA +CIRCADIAN +CIRCINATE +CIRCINATELY +CIRCLE +CIRCLED +CIRCLER +CIRCLERS +CIRCLES +CIRCLET +CIRCLETS +CIRCLING +CIRCUIT +CIRCUITAL +CIRCUITED +CIRCUITIES +CIRCUITING +CIRCUITOUS +CIRCUITOUSLY +CIRCUITOUSNESS +CIRCUITRIES +CIRCUITRY +CIRCUITS +CIRCUITY +CIRCULAR +CIRCULARISE +CIRCULARISED +CIRCULARISES +CIRCULARISING +CIRCULARITIES +CIRCULARITY +CIRCULARIZATION +CIRCULARIZE +CIRCULARIZED +CIRCULARIZES +CIRCULARIZING +CIRCULARLY +CIRCULARNESS +CIRCULARNESSES +CIRCULARS +CIRCULATABLE +CIRCULATE +CIRCULATED +CIRCULATES +CIRCULATING +CIRCULATION +CIRCULATIONS +CIRCULATIVE +CIRCULATOR +CIRCULATORS +CIRCULATORY +CIRCUMAMBIENT +CIRCUMAMBIENTLY +CIRCUMAMBULATE +CIRCUMAMBULATED +CIRCUMAMBULATES +CIRCUMCENTER +CIRCUMCENTERS +CIRCUMCIRCLE +CIRCUMCIRCLES +CIRCUMCISE +CIRCUMCISED +CIRCUMCISER +CIRCUMCISERS +CIRCUMCISES +CIRCUMCISING +CIRCUMCISION +CIRCUMCISIONS +CIRCUMFERENCE +CIRCUMFERENCES +CIRCUMFERENTIAL +CIRCUMFLEX +CIRCUMFLEXES +CIRCUMFLUENT +CIRCUMFLUOUS +CIRCUMFUSE +CIRCUMFUSED +CIRCUMFUSES +CIRCUMFUSING +CIRCUMFUSION +CIRCUMFUSIONS +CIRCUMJACENT +CIRCUMLOCUTION +CIRCUMLOCUTIONS +CIRCUMLOCUTORY +CIRCUMLUNAR +CIRCUMNAVIGATE +CIRCUMNAVIGATED +CIRCUMNAVIGATES +CIRCUMNAVIGATOR +CIRCUMPOLAR +CIRCUMSCISSILE +CIRCUMSCRIBE +CIRCUMSCRIBED +CIRCUMSCRIBES +CIRCUMSCRIBING +CIRCUMSCRIPTION +CIRCUMSPECT +CIRCUMSPECTION +CIRCUMSPECTIONS +CIRCUMSPECTLY +CIRCUMSTANCE +CIRCUMSTANCED +CIRCUMSTANCES +CIRCUMSTANTIAL +CIRCUMSTANTIATE +CIRCUMSTELLAR +CIRCUMVALLATE +CIRCUMVALLATED +CIRCUMVALLATES +CIRCUMVALLATING +CIRCUMVALLATION +CIRCUMVENT +CIRCUMVENTED +CIRCUMVENTING +CIRCUMVENTION +CIRCUMVENTIONS +CIRCUMVENTS +CIRCUMVOLUTION +CIRCUMVOLUTIONS +CIRCUS +CIRCUSES +CIRCUSY +CIRE +CIRES +CIRQUE +CIRQUES +CIRRATE +CIRRHOSED +CIRRHOSES +CIRRHOSIS +CIRRHOTIC +CIRRHOTICS +CIRRI +CIRRIFORM +CIRRIPED +CIRRIPEDE +CIRRIPEDES +CIRRIPEDS +CIRROCUMULI +CIRROCUMULUS +CIRROSE +CIRROSTRATI +CIRROSTRATUS +CIRROUS +CIRRUS +CIRSOID +CIS +CISALPINE +CISCO +CISCOES +CISCOS +CISLUNAR +CISPLATIN +CISPLATINS +CISSIES +CISSOID +CISSOIDS +CISSY +CIST +CISTED +CISTERN +CISTERNA +CISTERNAE +CISTERNAL +CISTERNS +CISTRON +CISTRONIC +CISTRONS +CISTS +CISTUS +CISTUSES +CITABLE +CITADEL +CITADELS +CITATION +CITATIONAL +CITATIONS +CITATOR +CITATORS +CITATORY +CITE +CITEABLE +CITED +CITER +CITERS +CITES +CITHARA +CITHARAS +CITHER +CITHERN +CITHERNS +CITHERS +CITHREN +CITHRENS +CITIED +CITIES +CITIFICATION +CITIFICATIONS +CITIFIED +CITIFIES +CITIFY +CITIFYING +CITING +CITIZEN +CITIZENESS +CITIZENESSES +CITIZENLY +CITIZENRIES +CITIZENRY +CITIZENS +CITIZENSHIP +CITIZENSHIPS +CITOLA +CITOLAS +CITOLE +CITOLES +CITRAL +CITRALS +CITRATE +CITRATED +CITRATES +CITREOUS +CITRIC +CITRICULTURE +CITRICULTURES +CITRICULTURIST +CITRICULTURISTS +CITRIN +CITRINE +CITRINES +CITRININ +CITRININS +CITRINS +CITRON +CITRONELLA +CITRONELLAL +CITRONELLALS +CITRONELLAS +CITRONELLOL +CITRONELLOLS +CITRONS +CITROUS +CITRULLINE +CITRULLINES +CITRUS +CITRUSES +CITRUSY +CITTERN +CITTERNS +CITY +CITYFIED +CITYSCAPE +CITYSCAPES +CITYWARD +CITYWIDE +CIVET +CIVETLIKE +CIVETS +CIVIC +CIVICALLY +CIVICISM +CIVICISMS +CIVICS +CIVIE +CIVIES +CIVIL +CIVILIAN +CIVILIANIZATION +CIVILIANIZE +CIVILIANIZED +CIVILIANIZES +CIVILIANIZING +CIVILIANS +CIVILISATION +CIVILISATIONS +CIVILISE +CIVILISED +CIVILISES +CIVILISING +CIVILITIES +CIVILITY +CIVILIZATION +CIVILIZATIONAL +CIVILIZATIONS +CIVILIZE +CIVILIZED +CIVILIZER +CIVILIZERS +CIVILIZES +CIVILIZING +CIVILLY +CIVILNESS +CIVILNESSES +CIVISM +CIVISMS +CIVVIES +CIVVY +CLABBER +CLABBERED +CLABBERING +CLABBERS +CLACH +CLACHAN +CLACHANS +CLACHS +CLACK +CLACKED +CLACKER +CLACKERS +CLACKING +CLACKS +CLAD +CLADDAGH +CLADDAGHS +CLADDED +CLADDING +CLADDINGS +CLADE +CLADES +CLADISM +CLADISMS +CLADIST +CLADISTIC +CLADISTICALLY +CLADISTICS +CLADISTS +CLADOCERAN +CLADOCERANS +CLADODE +CLADODES +CLADODIAL +CLADOGENESES +CLADOGENESIS +CLADOGENETIC +CLADOGRAM +CLADOGRAMS +CLADOPHYLL +CLADOPHYLLS +CLADS +CLAFOUTI +CLAFOUTIS +CLAG +CLAGGED +CLAGGING +CLAGS +CLAIM +CLAIMABLE +CLAIMANT +CLAIMANTS +CLAIMED +CLAIMER +CLAIMERS +CLAIMING +CLAIMS +CLAIRAUDIENCE +CLAIRAUDIENCES +CLAIRAUDIENT +CLAIRAUDIENTLY +CLAIRVOYANCE +CLAIRVOYANCES +CLAIRVOYANT +CLAIRVOYANTLY +CLAIRVOYANTS +CLAM +CLAMANT +CLAMANTLY +CLAMBAKE +CLAMBAKES +CLAMBER +CLAMBERED +CLAMBERER +CLAMBERERS +CLAMBERING +CLAMBERS +CLAMLIKE +CLAMMED +CLAMMER +CLAMMERS +CLAMMIER +CLAMMIEST +CLAMMILY +CLAMMINESS +CLAMMINESSES +CLAMMING +CLAMMY +CLAMOR +CLAMORED +CLAMORER +CLAMORERS +CLAMORING +CLAMOROUS +CLAMOROUSLY +CLAMOROUSNESS +CLAMOROUSNESSES +CLAMORS +CLAMOUR +CLAMOURED +CLAMOURING +CLAMOURS +CLAMP +CLAMPDOWN +CLAMPDOWNS +CLAMPED +CLAMPER +CLAMPERS +CLAMPING +CLAMPS +CLAMS +CLAMSHELL +CLAMSHELLS +CLAMWORM +CLAMWORMS +CLAN +CLANDESTINE +CLANDESTINELY +CLANDESTINENESS +CLANDESTINITIES +CLANDESTINITY +CLANG +CLANGED +CLANGER +CLANGERS +CLANGING +CLANGOR +CLANGORED +CLANGORING +CLANGOROUS +CLANGOROUSLY +CLANGORS +CLANGOUR +CLANGOURED +CLANGOURING +CLANGOURS +CLANGS +CLANK +CLANKED +CLANKIER +CLANKIEST +CLANKING +CLANKINGLY +CLANKS +CLANKY +CLANNISH +CLANNISHLY +CLANNISHNESS +CLANNISHNESSES +CLANS +CLANSMAN +CLANSMEN +CLAP +CLAPBOARD +CLAPBOARDED +CLAPBOARDING +CLAPBOARDS +CLAPPED +CLAPPER +CLAPPERCLAW +CLAPPERCLAWED +CLAPPERCLAWING +CLAPPERCLAWS +CLAPPERS +CLAPPING +CLAPS +CLAPT +CLAPTRAP +CLAPTRAPS +CLAQUE +CLAQUER +CLAQUERS +CLAQUES +CLAQUEUR +CLAQUEURS +CLARENCE +CLARENCES +CLARET +CLARETS +CLARIES +CLARIFICATION +CLARIFICATIONS +CLARIFIED +CLARIFIER +CLARIFIERS +CLARIFIES +CLARIFY +CLARIFYING +CLARINET +CLARINETIST +CLARINETISTS +CLARINETS +CLARINETTIST +CLARINETTISTS +CLARION +CLARIONED +CLARIONET +CLARIONETS +CLARIONING +CLARIONS +CLARITIES +CLARITY +CLARKIA +CLARKIAS +CLARO +CLAROES +CLAROS +CLARY +CLASH +CLASHED +CLASHER +CLASHERS +CLASHES +CLASHING +CLASP +CLASPED +CLASPER +CLASPERS +CLASPING +CLASPS +CLASPT +CLASS +CLASSABLE +CLASSED +CLASSER +CLASSERS +CLASSES +CLASSIC +CLASSICAL +CLASSICALITIES +CLASSICALITY +CLASSICALLY +CLASSICALS +CLASSICISM +CLASSICISMS +CLASSICIST +CLASSICISTIC +CLASSICISTS +CLASSICIZE +CLASSICIZED +CLASSICIZES +CLASSICIZING +CLASSICO +CLASSICS +CLASSIER +CLASSIEST +CLASSIFIABLE +CLASSIFICATION +CLASSIFICATIONS +CLASSIFICATORY +CLASSIFIED +CLASSIFIER +CLASSIFIERS +CLASSIFIES +CLASSIFY +CLASSIFYING +CLASSILY +CLASSINESS +CLASSINESSES +CLASSING +CLASSIS +CLASSISM +CLASSISMS +CLASSIST +CLASSISTS +CLASSLESS +CLASSLESSNESS +CLASSLESSNESSES +CLASSMATE +CLASSMATES +CLASSON +CLASSONS +CLASSROOM +CLASSROOMS +CLASSWORK +CLASSWORKS +CLASSY +CLAST +CLASTIC +CLASTICS +CLASTS +CLATHRATE +CLATHRATES +CLATTER +CLATTERED +CLATTERER +CLATTERERS +CLATTERING +CLATTERINGLY +CLATTERS +CLATTERY +CLAUCHT +CLAUDICATION +CLAUDICATIONS +CLAUGHT +CLAUGHTED +CLAUGHTING +CLAUGHTS +CLAUSAL +CLAUSE +CLAUSES +CLAUSTRA +CLAUSTRAL +CLAUSTROPHOBE +CLAUSTROPHOBES +CLAUSTROPHOBIA +CLAUSTROPHOBIAS +CLAUSTROPHOBIC +CLAUSTRUM +CLAVATE +CLAVATELY +CLAVATION +CLAVATIONS +CLAVE +CLAVER +CLAVERED +CLAVERING +CLAVERS +CLAVES +CLAVI +CLAVICHORD +CLAVICHORDIST +CLAVICHORDISTS +CLAVICHORDS +CLAVICLE +CLAVICLES +CLAVICORN +CLAVICULAR +CLAVIER +CLAVIERIST +CLAVIERISTIC +CLAVIERISTS +CLAVIERS +CLAVIFORM +CLAVUS +CLAW +CLAWBACK +CLAWBACKS +CLAWED +CLAWER +CLAWERS +CLAWHAMMER +CLAWING +CLAWLESS +CLAWLIKE +CLAWS +CLAXON +CLAXONS +CLAY +CLAYBANK +CLAYBANKS +CLAYED +CLAYEY +CLAYIER +CLAYIEST +CLAYING +CLAYISH +CLAYLIKE +CLAYMORE +CLAYMORES +CLAYPAN +CLAYPANS +CLAYS +CLAYSTONE +CLAYSTONES +CLAYTONIA +CLAYTONIAS +CLAYWARE +CLAYWARES +CLEAN +CLEANABILITIES +CLEANABILITY +CLEANABLE +CLEANED +CLEANER +CLEANERS +CLEANEST +CLEANHANDED +CLEANING +CLEANLIER +CLEANLIEST +CLEANLINESS +CLEANLINESSES +CLEANLY +CLEANNESS +CLEANNESSES +CLEANS +CLEANSE +CLEANSED +CLEANSER +CLEANSERS +CLEANSES +CLEANSING +CLEANUP +CLEANUPS +CLEAR +CLEARABLE +CLEARANCE +CLEARANCES +CLEARCUT +CLEARCUTS +CLEARCUTTING +CLEARED +CLEARER +CLEARERS +CLEAREST +CLEAREYED +CLEARHEADED +CLEARHEADEDLY +CLEARHEADEDNESS +CLEARING +CLEARINGHOUSE +CLEARINGHOUSES +CLEARINGS +CLEARLY +CLEARNESS +CLEARNESSES +CLEARS +CLEARSTORIES +CLEARSTORY +CLEARWEED +CLEARWEEDS +CLEARWING +CLEARWINGS +CLEAT +CLEATED +CLEATING +CLEATS +CLEAVABLE +CLEAVAGE +CLEAVAGES +CLEAVE +CLEAVED +CLEAVER +CLEAVERS +CLEAVES +CLEAVING +CLEEK +CLEEKED +CLEEKING +CLEEKS +CLEF +CLEFS +CLEFT +CLEFTED +CLEFTING +CLEFTS +CLEIDOIC +CLEISTOGAMIC +CLEISTOGAMIES +CLEISTOGAMOUS +CLEISTOGAMOUSLY +CLEISTOGAMY +CLEMATIS +CLEMATISES +CLEMENCIES +CLEMENCY +CLEMENT +CLEMENTLY +CLENCH +CLENCHED +CLENCHER +CLENCHERS +CLENCHES +CLENCHING +CLEOME +CLEOMES +CLEPE +CLEPED +CLEPES +CLEPING +CLEPSYDRA +CLEPSYDRAE +CLEPSYDRAS +CLEPT +CLERESTORIES +CLERESTORY +CLERGIES +CLERGY +CLERGYMAN +CLERGYMEN +CLERGYWOMAN +CLERGYWOMEN +CLERIC +CLERICAL +CLERICALISM +CLERICALISMS +CLERICALIST +CLERICALISTS +CLERICALLY +CLERICALS +CLERICS +CLERID +CLERIDS +CLERIHEW +CLERIHEWS +CLERISIES +CLERISY +CLERK +CLERKDOM +CLERKDOMS +CLERKED +CLERKING +CLERKISH +CLERKLIER +CLERKLIEST +CLERKLY +CLERKS +CLERKSHIP +CLERKSHIPS +CLEVEITE +CLEVEITES +CLEVER +CLEVERER +CLEVEREST +CLEVERISH +CLEVERLY +CLEVERNESS +CLEVERNESSES +CLEVIS +CLEVISES +CLEW +CLEWED +CLEWING +CLEWS +CLICHE +CLICHED +CLICHES +CLICK +CLICKABLE +CLICKED +CLICKER +CLICKERS +CLICKING +CLICKLESS +CLICKS +CLICKWRAP +CLIENT +CLIENTAGE +CLIENTAGES +CLIENTAL +CLIENTELE +CLIENTELES +CLIENTLESS +CLIENTS +CLIFF +CLIFFIER +CLIFFIEST +CLIFFLIKE +CLIFFS +CLIFFY +CLIFT +CLIFTS +CLIMACTERIC +CLIMACTERICS +CLIMACTIC +CLIMACTICALLY +CLIMATAL +CLIMATE +CLIMATES +CLIMATIC +CLIMATICALLY +CLIMATIZE +CLIMATIZED +CLIMATIZES +CLIMATIZING +CLIMATOLOGICAL +CLIMATOLOGIES +CLIMATOLOGIST +CLIMATOLOGISTS +CLIMATOLOGY +CLIMAX +CLIMAXED +CLIMAXES +CLIMAXING +CLIMAXLESS +CLIMB +CLIMBABLE +CLIMBDOWN +CLIMBDOWNS +CLIMBED +CLIMBER +CLIMBERS +CLIMBING +CLIMBS +CLIME +CLIMES +CLINAL +CLINALLY +CLINCH +CLINCHED +CLINCHER +CLINCHERS +CLINCHES +CLINCHING +CLINCHINGLY +CLINE +CLINES +CLING +CLINGED +CLINGER +CLINGERS +CLINGFISH +CLINGFISHES +CLINGIER +CLINGIEST +CLINGING +CLINGS +CLINGSTONE +CLINGSTONES +CLINGY +CLINIC +CLINICAL +CLINICALLY +CLINICIAN +CLINICIANS +CLINICS +CLINK +CLINKED +CLINKER +CLINKERED +CLINKERING +CLINKERS +CLINKING +CLINKS +CLINOMETER +CLINOMETERS +CLINQUANT +CLINQUANTS +CLINTONIA +CLINTONIAS +CLIOMETRIC +CLIOMETRICIAN +CLIOMETRICIANS +CLIOMETRICS +CLIP +CLIPBOARD +CLIPBOARDS +CLIPPABLE +CLIPPED +CLIPPER +CLIPPERS +CLIPPING +CLIPPINGS +CLIPS +CLIPSHEET +CLIPSHEETS +CLIPT +CLIQUE +CLIQUED +CLIQUES +CLIQUEY +CLIQUIER +CLIQUIEST +CLIQUING +CLIQUISH +CLIQUISHLY +CLIQUISHNESS +CLIQUISHNESSES +CLIQUY +CLITELLA +CLITELLUM +CLITIC +CLITICIZE +CLITICIZED +CLITICIZES +CLITICIZING +CLITICS +CLITORAL +CLITORECTOMIES +CLITORECTOMY +CLITORIC +CLITORIDECTOMY +CLITORIDES +CLITORIS +CLITORISES +CLIVERS +CLIVIA +CLIVIAS +CLOACA +CLOACAE +CLOACAL +CLOACAS +CLOAK +CLOAKED +CLOAKING +CLOAKROOM +CLOAKROOMS +CLOAKS +CLOBBER +CLOBBERED +CLOBBERING +CLOBBERS +CLOCHARD +CLOCHARDS +CLOCHE +CLOCHES +CLOCK +CLOCKED +CLOCKER +CLOCKERS +CLOCKING +CLOCKLIKE +CLOCKS +CLOCKWISE +CLOCKWORK +CLOCKWORKS +CLOD +CLODDIER +CLODDIEST +CLODDISH +CLODDISHNESS +CLODDISHNESSES +CLODDY +CLODHOPPER +CLODHOPPERS +CLODHOPPING +CLODPATE +CLODPATES +CLODPOLE +CLODPOLES +CLODPOLL +CLODPOLLS +CLODS +CLOFIBRATE +CLOFIBRATES +CLOG +CLOGGED +CLOGGER +CLOGGERS +CLOGGIER +CLOGGIEST +CLOGGILY +CLOGGING +CLOGGY +CLOGS +CLOISONNE +CLOISONNES +CLOISTER +CLOISTERED +CLOISTERING +CLOISTERS +CLOISTRAL +CLOISTRESS +CLOISTRESSES +CLOMB +CLOMIPHENE +CLOMIPHENES +CLOMP +CLOMPED +CLOMPING +CLOMPS +CLON +CLONAL +CLONALLY +CLONE +CLONED +CLONER +CLONERS +CLONES +CLONIC +CLONICITIES +CLONICITY +CLONIDINE +CLONIDINES +CLONING +CLONINGS +CLONISM +CLONISMS +CLONK +CLONKED +CLONKING +CLONKS +CLONS +CLONUS +CLONUSES +CLOOT +CLOOTS +CLOP +CLOPPED +CLOPPING +CLOPS +CLOQUE +CLOQUES +CLOSABLE +CLOSE +CLOSEABLE +CLOSED +CLOSEDOWN +CLOSEDOWNS +CLOSEFISTED +CLOSELY +CLOSEMOUTHED +CLOSENESS +CLOSENESSES +CLOSEOUT +CLOSEOUTS +CLOSER +CLOSERS +CLOSES +CLOSEST +CLOSESTOOL +CLOSESTOOLS +CLOSET +CLOSETED +CLOSETFUL +CLOSETFULS +CLOSETING +CLOSETS +CLOSEUP +CLOSEUPS +CLOSING +CLOSINGS +CLOSTRIDIA +CLOSTRIDIAL +CLOSTRIDIUM +CLOSURE +CLOSURED +CLOSURES +CLOSURING +CLOT +CLOTH +CLOTHBOUND +CLOTHE +CLOTHED +CLOTHES +CLOTHESHORSE +CLOTHESHORSES +CLOTHESLINE +CLOTHESLINED +CLOTHESLINES +CLOTHESLINING +CLOTHESPIN +CLOTHESPINS +CLOTHESPRESS +CLOTHESPRESSES +CLOTHIER +CLOTHIERS +CLOTHING +CLOTHINGS +CLOTHLIKE +CLOTHS +CLOTS +CLOTTED +CLOTTING +CLOTTY +CLOTURE +CLOTURED +CLOTURES +CLOTURING +CLOUD +CLOUDBERRIES +CLOUDBERRY +CLOUDBURST +CLOUDBURSTS +CLOUDED +CLOUDIER +CLOUDIEST +CLOUDILY +CLOUDINESS +CLOUDINESSES +CLOUDING +CLOUDLAND +CLOUDLANDS +CLOUDLESS +CLOUDLESSLY +CLOUDLESSNESS +CLOUDLESSNESSES +CLOUDLET +CLOUDLETS +CLOUDLIKE +CLOUDS +CLOUDSCAPE +CLOUDSCAPES +CLOUDY +CLOUGH +CLOUGHS +CLOUR +CLOURED +CLOURING +CLOURS +CLOUT +CLOUTED +CLOUTER +CLOUTERS +CLOUTING +CLOUTS +CLOVE +CLOVEN +CLOVER +CLOVERED +CLOVERLEAF +CLOVERLEAFS +CLOVERLEAVES +CLOVERS +CLOVERY +CLOVES +CLOWDER +CLOWDERS +CLOWN +CLOWNED +CLOWNERIES +CLOWNERY +CLOWNING +CLOWNISH +CLOWNISHLY +CLOWNISHNESS +CLOWNISHNESSES +CLOWNS +CLOXACILLIN +CLOXACILLINS +CLOY +CLOYED +CLOYING +CLOYINGLY +CLOYS +CLOZAPINE +CLOZAPINES +CLOZE +CLOZES +CLUB +CLUBABLE +CLUBBABLE +CLUBBED +CLUBBER +CLUBBERS +CLUBBIER +CLUBBIEST +CLUBBINESS +CLUBBINESSES +CLUBBING +CLUBBISH +CLUBBY +CLUBFACE +CLUBFACES +CLUBFEET +CLUBFOOT +CLUBFOOTED +CLUBHAND +CLUBHANDS +CLUBHAUL +CLUBHAULED +CLUBHAULING +CLUBHAULS +CLUBHEAD +CLUBHEADS +CLUBHOUSE +CLUBHOUSES +CLUBMAN +CLUBMEN +CLUBROOM +CLUBROOMS +CLUBROOT +CLUBROOTS +CLUBS +CLUBWOMAN +CLUBWOMEN +CLUCK +CLUCKED +CLUCKING +CLUCKS +CLUE +CLUED +CLUEING +CLUELESS +CLUES +CLUING +CLUMBER +CLUMBERS +CLUMP +CLUMPED +CLUMPIER +CLUMPIEST +CLUMPING +CLUMPISH +CLUMPLIKE +CLUMPS +CLUMPY +CLUMSIER +CLUMSIEST +CLUMSILY +CLUMSINESS +CLUMSINESSES +CLUMSY +CLUNG +CLUNK +CLUNKED +CLUNKER +CLUNKERS +CLUNKIER +CLUNKIEST +CLUNKING +CLUNKS +CLUNKY +CLUPEID +CLUPEIDS +CLUPEOID +CLUPEOIDS +CLUSTER +CLUSTERED +CLUSTERING +CLUSTERS +CLUSTERY +CLUTCH +CLUTCHED +CLUTCHES +CLUTCHING +CLUTCHY +CLUTTER +CLUTTERED +CLUTTERING +CLUTTERS +CLUTTERY +CLYPEAL +CLYPEATE +CLYPEI +CLYPEUS +CLYSTER +CLYSTERS +CNIDA +CNIDAE +CNIDARIAN +CNIDARIANS +COACERVATE +COACERVATES +COACERVATION +COACERVATIONS +COACH +COACHABLE +COACHED +COACHER +COACHERS +COACHES +COACHING +COACHMAN +COACHMEN +COACHWORK +COACHWORKS +COACT +COACTED +COACTING +COACTION +COACTIONS +COACTIVE +COACTOR +COACTORS +COACTS +COADAPTATION +COADAPTATIONS +COADAPTED +COADJUTOR +COADJUTORS +COADJUTRICES +COADJUTRIX +COADMIRE +COADMIRED +COADMIRES +COADMIRING +COADMIT +COADMITS +COADMITTED +COADMITTING +COADUNATE +COAEVAL +COAEVALS +COAGENCIES +COAGENCY +COAGENT +COAGENTS +COAGULA +COAGULABILITIES +COAGULABILITY +COAGULABLE +COAGULANT +COAGULANTS +COAGULASE +COAGULASES +COAGULATE +COAGULATED +COAGULATES +COAGULATING +COAGULATION +COAGULATIONS +COAGULUM +COAGULUMS +COAL +COALA +COALAS +COALBIN +COALBINS +COALBOX +COALBOXES +COALED +COALER +COALERS +COALESCE +COALESCED +COALESCENCE +COALESCENCES +COALESCENT +COALESCES +COALESCING +COALFIELD +COALFIELDS +COALFISH +COALFISHES +COALHOLE +COALHOLES +COALIER +COALIEST +COALIFICATION +COALIFICATIONS +COALIFIED +COALIFIES +COALIFY +COALIFYING +COALING +COALITION +COALITIONIST +COALITIONISTS +COALITIONS +COALLESS +COALPIT +COALPITS +COALS +COALSACK +COALSACKS +COALSHED +COALSHEDS +COALY +COALYARD +COALYARDS +COAMING +COAMINGS +COANCHOR +COANCHORED +COANCHORING +COANCHORS +COANNEX +COANNEXED +COANNEXES +COANNEXING +COAPPEAR +COAPPEARED +COAPPEARING +COAPPEARS +COAPT +COAPTATION +COAPTATIONS +COAPTED +COAPTING +COAPTS +COARCTATE +COARCTATION +COARCTATIONS +COARSE +COARSELY +COARSEN +COARSENED +COARSENESS +COARSENESSES +COARSENING +COARSENS +COARSER +COARSEST +COASSIST +COASSISTED +COASSISTING +COASSISTS +COASSUME +COASSUMED +COASSUMES +COASSUMING +COAST +COASTAL +COASTALLY +COASTED +COASTER +COASTERS +COASTGUARD +COASTGUARDMAN +COASTGUARDMEN +COASTGUARDS +COASTGUARDSMAN +COASTGUARDSMEN +COASTING +COASTINGS +COASTLAND +COASTLANDS +COASTLINE +COASTLINES +COASTS +COASTWARD +COASTWARDS +COASTWISE +COAT +COATDRESS +COATDRESSES +COATED +COATEE +COATEES +COATER +COATERS +COATI +COATIMUNDI +COATIMUNDIS +COATING +COATINGS +COATIS +COATLESS +COATRACK +COATRACKS +COATROOM +COATROOMS +COATS +COATTAIL +COATTAILS +COATTEND +COATTENDED +COATTENDING +COATTENDS +COATTEST +COATTESTED +COATTESTING +COATTESTS +COAUTHOR +COAUTHORED +COAUTHORING +COAUTHORS +COAUTHORSHIP +COAUTHORSHIPS +COAX +COAXAL +COAXED +COAXER +COAXERS +COAXES +COAXIAL +COAXIALLY +COAXING +COAXINGLY +COB +COBALAMIN +COBALAMINS +COBALT +COBALTIC +COBALTINE +COBALTINES +COBALTITE +COBALTITES +COBALTOUS +COBALTS +COBB +COBBER +COBBERS +COBBIER +COBBIEST +COBBLE +COBBLED +COBBLER +COBBLERS +COBBLES +COBBLESTONE +COBBLESTONED +COBBLESTONES +COBBLING +COBBS +COBBY +COBELLIGERENT +COBELLIGERENTS +COBIA +COBIAS +COBLE +COBLES +COBNUT +COBNUTS +COBRA +COBRAS +COBS +COBWEB +COBWEBBED +COBWEBBIER +COBWEBBIEST +COBWEBBING +COBWEBBY +COBWEBS +COCA +COCAIN +COCAINE +COCAINES +COCAINISM +COCAINISMS +COCAINIZATION +COCAINIZATIONS +COCAINIZE +COCAINIZED +COCAINIZES +COCAINIZING +COCAINS +COCAPTAIN +COCAPTAINED +COCAPTAINING +COCAPTAINS +COCARBOXYLASE +COCARBOXYLASES +COCARCINOGEN +COCARCINOGENIC +COCARCINOGENS +COCAS +COCATALYST +COCATALYSTS +COCCAL +COCCI +COCCIC +COCCID +COCCIDIA +COCCIDIOSES +COCCIDIOSIS +COCCIDIUM +COCCIDS +COCCOID +COCCOIDAL +COCCOIDS +COCCOLITH +COCCOLITHS +COCCOUS +COCCUS +COCCYGEAL +COCCYGES +COCCYX +COCCYXES +COCHAIR +COCHAIRED +COCHAIRING +COCHAIRMAN +COCHAIRMEN +COCHAIRPERSON +COCHAIRPERSONS +COCHAIRS +COCHAIRWOMAN +COCHAIRWOMEN +COCHAMPION +COCHAMPIONS +COCHIN +COCHINEAL +COCHINEALS +COCHINS +COCHLEA +COCHLEAE +COCHLEAR +COCHLEAS +COCHLEATE +COCINERA +COCINERAS +COCK +COCKADE +COCKADED +COCKADES +COCKALORUM +COCKALORUMS +COCKAMAMIE +COCKAMAMY +COCKAPOO +COCKAPOOS +COCKATEEL +COCKATEELS +COCKATIEL +COCKATIELS +COCKATOO +COCKATOOS +COCKATRICE +COCKATRICES +COCKBILL +COCKBILLED +COCKBILLING +COCKBILLS +COCKBOAT +COCKBOATS +COCKCHAFER +COCKCHAFERS +COCKCROW +COCKCROWS +COCKED +COCKER +COCKERED +COCKEREL +COCKERELS +COCKERING +COCKERS +COCKEYE +COCKEYED +COCKEYEDLY +COCKEYEDNESS +COCKEYEDNESSES +COCKEYES +COCKFIGHT +COCKFIGHTING +COCKFIGHTINGS +COCKFIGHTS +COCKHORSE +COCKHORSES +COCKIER +COCKIEST +COCKILY +COCKINESS +COCKINESSES +COCKING +COCKISH +COCKLE +COCKLEBUR +COCKLEBURS +COCKLED +COCKLES +COCKLESHELL +COCKLESHELLS +COCKLIKE +COCKLING +COCKLOFT +COCKLOFTS +COCKNEY +COCKNEYFIED +COCKNEYFIES +COCKNEYFY +COCKNEYFYING +COCKNEYISH +COCKNEYISM +COCKNEYISMS +COCKNEYS +COCKPIT +COCKPITS +COCKROACH +COCKROACHES +COCKS +COCKSCOMB +COCKSCOMBS +COCKSFOOT +COCKSFOOTS +COCKSHIES +COCKSHUT +COCKSHUTS +COCKSHY +COCKSPUR +COCKSPURS +COCKSUCKER +COCKSUCKERS +COCKSURE +COCKSURELY +COCKSURENESS +COCKSURENESSES +COCKSWAIN +COCKSWAINS +COCKTAIL +COCKTAILED +COCKTAILING +COCKTAILS +COCKUP +COCKUPS +COCKY +COCO +COCOA +COCOANUT +COCOANUTS +COCOAS +COCOBOLA +COCOBOLAS +COCOBOLO +COCOBOLOS +COCOMAT +COCOMATS +COCOMPOSER +COCOMPOSERS +COCONSPIRATOR +COCONSPIRATORS +COCONUT +COCONUTS +COCOON +COCOONED +COCOONING +COCOONINGS +COCOONS +COCOPLUM +COCOPLUMS +COCOS +COCOTTE +COCOTTES +COCOUNSEL +COCOUNSELED +COCOUNSELING +COCOUNSELLED +COCOUNSELLING +COCOUNSELS +COCOYAM +COCOYAMS +COCOZELLE +COCOZELLES +COCREATE +COCREATED +COCREATES +COCREATING +COCREATOR +COCREATORS +COCULTIVATE +COCULTIVATED +COCULTIVATES +COCULTIVATING +COCULTIVATION +COCULTIVATIONS +COCULTURE +COCULTURED +COCULTURES +COCULTURING +COCURATOR +COCURATORS +COCURRICULAR +COD +CODA +CODABLE +CODAS +CODDED +CODDER +CODDERS +CODDING +CODDLE +CODDLED +CODDLER +CODDLERS +CODDLES +CODDLING +CODE +CODEBOOK +CODEBOOKS +CODEBTOR +CODEBTORS +CODEC +CODECS +CODED +CODEFENDANT +CODEFENDANTS +CODEIA +CODEIAS +CODEIN +CODEINA +CODEINAS +CODEINE +CODEINES +CODEINS +CODELESS +CODEN +CODENS +CODEPENDENCE +CODEPENDENCES +CODEPENDENCIES +CODEPENDENCY +CODEPENDENT +CODEPENDENTS +CODER +CODERIVE +CODERIVED +CODERIVES +CODERIVING +CODERS +CODES +CODESIGN +CODESIGNED +CODESIGNING +CODESIGNS +CODETERMINATION +CODEVELOP +CODEVELOPED +CODEVELOPER +CODEVELOPERS +CODEVELOPING +CODEVELOPS +CODEX +CODFISH +CODFISHES +CODGER +CODGERS +CODICES +CODICIL +CODICILLARY +CODICILS +CODICOLOGICAL +CODICOLOGIES +CODICOLOGY +CODIFIABILITIES +CODIFIABILITY +CODIFICATION +CODIFICATIONS +CODIFIED +CODIFIER +CODIFIERS +CODIFIES +CODIFY +CODIFYING +CODING +CODIRECT +CODIRECTED +CODIRECTING +CODIRECTION +CODIRECTIONS +CODIRECTOR +CODIRECTORS +CODIRECTS +CODISCOVER +CODISCOVERED +CODISCOVERER +CODISCOVERERS +CODISCOVERING +CODISCOVERS +CODLIN +CODLING +CODLINGS +CODLINS +CODOMINANT +CODOMINANTS +CODON +CODONS +CODPIECE +CODPIECES +CODRIVE +CODRIVEN +CODRIVER +CODRIVERS +CODRIVES +CODRIVING +CODROVE +CODS +CODSWALLOP +CODSWALLOPS +COED +COEDIT +COEDITED +COEDITING +COEDITOR +COEDITORS +COEDITS +COEDS +COEDUCATION +COEDUCATIONAL +COEDUCATIONALLY +COEDUCATIONS +COEFFECT +COEFFECTS +COEFFICIENT +COEFFICIENTS +COELACANTH +COELACANTHS +COELENTERA +COELENTERATE +COELENTERATES +COELENTERON +COELIAC +COELOM +COELOMATA +COELOMATE +COELOMATES +COELOME +COELOMES +COELOMIC +COELOMS +COELOSTAT +COELOSTATS +COEMBODIED +COEMBODIES +COEMBODY +COEMBODYING +COEMPLOY +COEMPLOYED +COEMPLOYING +COEMPLOYS +COEMPT +COEMPTED +COEMPTING +COEMPTS +COENACT +COENACTED +COENACTING +COENACTS +COENAMOR +COENAMORED +COENAMORING +COENAMORS +COENDURE +COENDURED +COENDURES +COENDURING +COENOBITE +COENOBITES +COENOCYTE +COENOCYTES +COENOCYTIC +COENOSARC +COENOSARCS +COENURE +COENURES +COENURI +COENURUS +COENZYMATIC +COENZYMATICALLY +COENZYME +COENZYMES +COEQUAL +COEQUALITIES +COEQUALITY +COEQUALLY +COEQUALS +COEQUATE +COEQUATED +COEQUATES +COEQUATING +COERCE +COERCED +COERCER +COERCERS +COERCES +COERCIBLE +COERCIBLY +COERCING +COERCION +COERCIONS +COERCIVE +COERCIVELY +COERCIVENESS +COERCIVENESSES +COERCIVITIES +COERCIVITY +COERECT +COERECTED +COERECTING +COERECTS +COESITE +COESITES +COETANEOUS +COETERNAL +COEVAL +COEVALITIES +COEVALITY +COEVALLY +COEVALS +COEVOLUTION +COEVOLUTIONARY +COEVOLUTIONS +COEVOLVE +COEVOLVED +COEVOLVES +COEVOLVING +COEXECUTOR +COEXECUTORS +COEXERT +COEXERTED +COEXERTING +COEXERTS +COEXIST +COEXISTED +COEXISTENCE +COEXISTENCES +COEXISTENT +COEXISTING +COEXISTS +COEXTEND +COEXTENDED +COEXTENDING +COEXTENDS +COEXTENSIVE +COEXTENSIVELY +COFACTOR +COFACTORS +COFAVORITE +COFAVORITES +COFEATURE +COFEATURED +COFEATURES +COFEATURING +COFF +COFFEE +COFFEEHOUSE +COFFEEHOUSES +COFFEEMAKER +COFFEEMAKERS +COFFEEPOT +COFFEEPOTS +COFFEES +COFFER +COFFERDAM +COFFERDAMS +COFFERED +COFFERING +COFFERS +COFFIN +COFFINED +COFFING +COFFINING +COFFINS +COFFLE +COFFLED +COFFLES +COFFLING +COFFRET +COFFRETS +COFFS +COFINANCE +COFINANCED +COFINANCES +COFINANCING +COFOUND +COFOUNDED +COFOUNDER +COFOUNDERS +COFOUNDING +COFOUNDS +COFT +COFUNCTION +COFUNCTIONS +COG +COGENCIES +COGENCY +COGENERATION +COGENERATIONS +COGENERATOR +COGENERATORS +COGENT +COGENTLY +COGGED +COGGING +COGITABLE +COGITATE +COGITATED +COGITATES +COGITATING +COGITATION +COGITATIONS +COGITATIVE +COGITATOR +COGITATORS +COGITO +COGITOS +COGNAC +COGNACS +COGNATE +COGNATELY +COGNATES +COGNATION +COGNATIONS +COGNISE +COGNISED +COGNISES +COGNISING +COGNITION +COGNITIONAL +COGNITIONS +COGNITIVE +COGNITIVELY +COGNIZABLE +COGNIZABLY +COGNIZANCE +COGNIZANCES +COGNIZANT +COGNIZE +COGNIZED +COGNIZER +COGNIZERS +COGNIZES +COGNIZING +COGNOMEN +COGNOMENS +COGNOMINA +COGNOMINAL +COGNOSCENTE +COGNOSCENTI +COGNOSCIBLE +COGNOVIT +COGNOVITS +COGON +COGONS +COGS +COGWAY +COGWAYS +COGWHEEL +COGWHEELS +COHABIT +COHABITANT +COHABITANTS +COHABITATION +COHABITATIONS +COHABITED +COHABITER +COHABITERS +COHABITING +COHABITS +COHEAD +COHEADED +COHEADING +COHEADS +COHEIR +COHEIRESS +COHEIRESSES +COHEIRS +COHERE +COHERED +COHERENCE +COHERENCES +COHERENCIES +COHERENCY +COHERENT +COHERENTLY +COHERER +COHERERS +COHERES +COHERING +COHESION +COHESIONLESS +COHESIONS +COHESIVE +COHESIVELY +COHESIVENESS +COHESIVENESSES +COHO +COHOBATE +COHOBATED +COHOBATES +COHOBATING +COHOG +COHOGS +COHOLDER +COHOLDERS +COHOMOLOGICAL +COHOMOLOGIES +COHOMOLOGY +COHORT +COHORTS +COHOS +COHOSH +COHOSHES +COHOST +COHOSTED +COHOSTESS +COHOSTESSED +COHOSTESSES +COHOSTESSING +COHOSTING +COHOSTS +COHOUSING +COHOUSINGS +COHUNE +COHUNES +COIF +COIFED +COIFFE +COIFFED +COIFFES +COIFFEUR +COIFFEURS +COIFFEUSE +COIFFEUSES +COIFFING +COIFFURE +COIFFURED +COIFFURES +COIFFURING +COIFING +COIFS +COIGN +COIGNE +COIGNED +COIGNES +COIGNING +COIGNS +COIL +COILABILITIES +COILABILITY +COILED +COILER +COILERS +COILING +COILS +COIN +COINABLE +COINAGE +COINAGES +COINCIDE +COINCIDED +COINCIDENCE +COINCIDENCES +COINCIDENT +COINCIDENTAL +COINCIDENTALLY +COINCIDENTLY +COINCIDES +COINCIDING +COINED +COINER +COINERS +COINFECT +COINFECTED +COINFECTING +COINFECTS +COINFER +COINFERRED +COINFERRING +COINFERS +COINHERE +COINHERED +COINHERES +COINHERING +COINING +COINMATE +COINMATES +COINS +COINSURANCE +COINSURANCES +COINSURE +COINSURED +COINSURER +COINSURERS +COINSURES +COINSURING +COINTER +COINTERRED +COINTERRING +COINTERS +COINTREAU +COINTREAUS +COINVENT +COINVENTED +COINVENTING +COINVENTOR +COINVENTORS +COINVENTS +COINVESTIGATOR +COINVESTIGATORS +COINVESTOR +COINVESTORS +COIR +COIRS +COISTREL +COISTRELS +COISTRIL +COISTRILS +COITAL +COITALLY +COITION +COITIONAL +COITIONS +COITUS +COITUSES +COJOIN +COJOINED +COJOINING +COJOINS +COJONES +COKE +COKED +COKEHEAD +COKEHEADS +COKELIKE +COKES +COKING +COKY +COL +COLA +COLANDER +COLANDERS +COLAS +COLATITUDE +COLATITUDES +COLBY +COLBYS +COLCANNON +COLCANNONS +COLCHICINE +COLCHICINES +COLCHICUM +COLCHICUMS +COLCOTHAR +COLCOTHARS +COLD +COLDBLOOD +COLDCOCK +COLDCOCKED +COLDCOCKING +COLDCOCKS +COLDER +COLDEST +COLDHEARTED +COLDHEARTEDLY +COLDHEARTEDNESS +COLDISH +COLDLY +COLDNESS +COLDNESSES +COLDS +COLE +COLEAD +COLEADER +COLEADERS +COLEADING +COLEADS +COLECTOMIES +COLECTOMY +COLED +COLEMANITE +COLEMANITES +COLEOPTERA +COLEOPTERAN +COLEOPTERANS +COLEOPTERIST +COLEOPTERISTS +COLEOPTEROUS +COLEOPTILE +COLEOPTILES +COLEORHIZA +COLEORHIZAE +COLES +COLESEED +COLESEEDS +COLESLAW +COLESLAWS +COLESSEE +COLESSEES +COLESSOR +COLESSORS +COLEUS +COLEUSES +COLEWORT +COLEWORTS +COLIC +COLICIN +COLICINE +COLICINES +COLICINS +COLICKIER +COLICKIEST +COLICKY +COLICROOT +COLICROOTS +COLICS +COLICWEED +COLICWEEDS +COLIES +COLIFORM +COLIFORMS +COLIN +COLINEAR +COLINEARITIES +COLINEARITY +COLINS +COLIPHAGE +COLIPHAGES +COLISEUM +COLISEUMS +COLISTIN +COLISTINS +COLITIC +COLITIS +COLITISES +COLLABORATE +COLLABORATED +COLLABORATES +COLLABORATING +COLLABORATION +COLLABORATIONS +COLLABORATIVE +COLLABORATIVELY +COLLABORATIVES +COLLABORATOR +COLLABORATORS +COLLAGE +COLLAGED +COLLAGEN +COLLAGENASE +COLLAGENASES +COLLAGENOUS +COLLAGENS +COLLAGES +COLLAGING +COLLAGIST +COLLAGISTS +COLLAPSE +COLLAPSED +COLLAPSES +COLLAPSIBILITY +COLLAPSIBLE +COLLAPSING +COLLAR +COLLARBONE +COLLARBONES +COLLARD +COLLARDS +COLLARED +COLLARET +COLLARETS +COLLARING +COLLARLESS +COLLARS +COLLATE +COLLATED +COLLATERAL +COLLATERALITIES +COLLATERALITY +COLLATERALIZE +COLLATERALIZED +COLLATERALIZES +COLLATERALIZING +COLLATERALLY +COLLATERALS +COLLATES +COLLATING +COLLATION +COLLATIONS +COLLATOR +COLLATORS +COLLEAGUE +COLLEAGUES +COLLEAGUESHIP +COLLEAGUESHIPS +COLLECT +COLLECTABLE +COLLECTABLES +COLLECTANEA +COLLECTED +COLLECTEDLY +COLLECTEDNESS +COLLECTEDNESSES +COLLECTIBLE +COLLECTIBLES +COLLECTING +COLLECTION +COLLECTIONS +COLLECTIVE +COLLECTIVELY +COLLECTIVES +COLLECTIVISE +COLLECTIVISED +COLLECTIVISES +COLLECTIVISING +COLLECTIVISM +COLLECTIVISMS +COLLECTIVIST +COLLECTIVISTIC +COLLECTIVISTS +COLLECTIVITIES +COLLECTIVITY +COLLECTIVIZE +COLLECTIVIZED +COLLECTIVIZES +COLLECTIVIZING +COLLECTOR +COLLECTORS +COLLECTORSHIP +COLLECTORSHIPS +COLLECTS +COLLEEN +COLLEENS +COLLEGE +COLLEGER +COLLEGERS +COLLEGES +COLLEGIA +COLLEGIAL +COLLEGIALITIES +COLLEGIALITY +COLLEGIALLY +COLLEGIAN +COLLEGIANS +COLLEGIATE +COLLEGIATELY +COLLEGIUM +COLLEGIUMS +COLLEMBOLAN +COLLEMBOLANS +COLLEMBOLOUS +COLLENCHYMA +COLLENCHYMAS +COLLENCHYMATOUS +COLLET +COLLETED +COLLETING +COLLETS +COLLIDE +COLLIDED +COLLIDER +COLLIDERS +COLLIDES +COLLIDING +COLLIE +COLLIED +COLLIER +COLLIERIES +COLLIERS +COLLIERY +COLLIES +COLLIESHANGIE +COLLIESHANGIES +COLLIGATE +COLLIGATED +COLLIGATES +COLLIGATING +COLLIGATION +COLLIGATIONS +COLLIGATIVE +COLLIMATE +COLLIMATED +COLLIMATES +COLLIMATING +COLLIMATION +COLLIMATIONS +COLLIMATOR +COLLIMATORS +COLLINEAR +COLLINEARITIES +COLLINEARITY +COLLINS +COLLINSES +COLLINSIA +COLLINSIAS +COLLISION +COLLISIONAL +COLLISIONALLY +COLLISIONS +COLLOCATE +COLLOCATED +COLLOCATES +COLLOCATING +COLLOCATION +COLLOCATIONAL +COLLOCATIONS +COLLODION +COLLODIONS +COLLOGUE +COLLOGUED +COLLOGUES +COLLOGUING +COLLOID +COLLOIDAL +COLLOIDALLY +COLLOIDS +COLLOP +COLLOPS +COLLOQUIA +COLLOQUIAL +COLLOQUIALISM +COLLOQUIALISMS +COLLOQUIALITIES +COLLOQUIALITY +COLLOQUIALLY +COLLOQUIALS +COLLOQUIES +COLLOQUIST +COLLOQUISTS +COLLOQUIUM +COLLOQUIUMS +COLLOQUY +COLLOTYPE +COLLOTYPES +COLLOTYPIES +COLLOTYPY +COLLUDE +COLLUDED +COLLUDER +COLLUDERS +COLLUDES +COLLUDING +COLLUSION +COLLUSIONS +COLLUSIVE +COLLUSIVELY +COLLUVIA +COLLUVIAL +COLLUVIUM +COLLUVIUMS +COLLY +COLLYING +COLLYRIA +COLLYRIUM +COLLYRIUMS +COLLYWOBBLES +COLOBI +COLOBOMA +COLOBOMATA +COLOBUS +COLOBUSES +COLOCATE +COLOCATED +COLOCATES +COLOCATING +COLOCYNTH +COLOCYNTHS +COLOG +COLOGARITHM +COLOGARITHMS +COLOGNE +COLOGNED +COLOGNES +COLOGS +COLOMBARD +COLOMBARDS +COLON +COLONE +COLONEL +COLONELCIES +COLONELCY +COLONELS +COLONES +COLONI +COLONIAL +COLONIALISM +COLONIALISMS +COLONIALIST +COLONIALISTIC +COLONIALISTS +COLONIALIZE +COLONIALIZED +COLONIALIZES +COLONIALIZING +COLONIALLY +COLONIALNESS +COLONIALNESSES +COLONIALS +COLONIC +COLONICS +COLONIES +COLONISATION +COLONISATIONS +COLONISE +COLONISED +COLONISES +COLONISING +COLONIST +COLONISTS +COLONITIS +COLONITISES +COLONIZATION +COLONIZATIONIST +COLONIZATIONS +COLONIZE +COLONIZED +COLONIZER +COLONIZERS +COLONIZES +COLONIZING +COLONNADE +COLONNADED +COLONNADES +COLONS +COLONUS +COLONY +COLOPHON +COLOPHONIES +COLOPHONS +COLOPHONY +COLOR +COLORABLE +COLORABLY +COLORADO +COLORANT +COLORANTS +COLORATION +COLORATIONS +COLORATURA +COLORATURAS +COLORBRED +COLORBREED +COLORBREEDING +COLORBREEDS +COLORCAST +COLORCASTED +COLORCASTING +COLORCASTS +COLORECTAL +COLORED +COLOREDS +COLORER +COLORERS +COLORFAST +COLORFASTNESS +COLORFASTNESSES +COLORFUL +COLORFULLY +COLORFULNESS +COLORFULNESSES +COLORIFIC +COLORIMETER +COLORIMETERS +COLORIMETRIC +COLORIMETRIES +COLORIMETRY +COLORING +COLORINGS +COLORISM +COLORISMS +COLORIST +COLORISTIC +COLORISTICALLY +COLORISTS +COLORIZATION +COLORIZATIONS +COLORIZE +COLORIZED +COLORIZER +COLORIZERS +COLORIZES +COLORIZING +COLORLESS +COLORLESSLY +COLORLESSNESS +COLORLESSNESSES +COLORMAN +COLORMEN +COLORPOINT +COLORPOINTS +COLORS +COLORWAY +COLORWAYS +COLOSSAL +COLOSSALLY +COLOSSEUM +COLOSSEUMS +COLOSSI +COLOSSUS +COLOSSUSES +COLOSTOMIES +COLOSTOMY +COLOSTRAL +COLOSTRUM +COLOSTRUMS +COLOTOMIES +COLOTOMY +COLOUR +COLOURED +COLOURER +COLOURERS +COLOURING +COLOURS +COLPITIS +COLPITISES +COLPORTAGE +COLPORTAGES +COLPORTEUR +COLPORTEURS +COLS +COLT +COLTER +COLTERS +COLTISH +COLTISHLY +COLTISHNESS +COLTISHNESSES +COLTS +COLTSFOOT +COLTSFOOTS +COLUBRID +COLUBRIDS +COLUBRINE +COLUGO +COLUGOS +COLUMBARIA +COLUMBARIES +COLUMBARIUM +COLUMBARY +COLUMBIC +COLUMBINE +COLUMBINES +COLUMBITE +COLUMBITES +COLUMBIUM +COLUMBIUMS +COLUMEL +COLUMELLA +COLUMELLAE +COLUMELLAR +COLUMELS +COLUMN +COLUMNAL +COLUMNAR +COLUMNEA +COLUMNEAS +COLUMNED +COLUMNIATION +COLUMNIATIONS +COLUMNIST +COLUMNISTIC +COLUMNISTS +COLUMNS +COLURE +COLURES +COLY +COLZA +COLZAS +COMA +COMADE +COMAE +COMAKE +COMAKER +COMAKERS +COMAKES +COMAKING +COMAL +COMANAGE +COMANAGED +COMANAGEMENT +COMANAGEMENTS +COMANAGER +COMANAGERS +COMANAGES +COMANAGING +COMAS +COMATE +COMATES +COMATIC +COMATIK +COMATIKS +COMATOSE +COMATULA +COMATULAE +COMATULID +COMATULIDS +COMB +COMBAT +COMBATANT +COMBATANTS +COMBATED +COMBATER +COMBATERS +COMBATING +COMBATIVE +COMBATIVELY +COMBATIVENESS +COMBATIVENESSES +COMBATS +COMBATTED +COMBATTING +COMBE +COMBED +COMBER +COMBERS +COMBES +COMBINABLE +COMBINATION +COMBINATIONAL +COMBINATIONS +COMBINATIVE +COMBINATORIAL +COMBINATORIALLY +COMBINATORICS +COMBINATORY +COMBINE +COMBINED +COMBINEDS +COMBINER +COMBINERS +COMBINES +COMBING +COMBINGS +COMBINING +COMBLIKE +COMBO +COMBOS +COMBS +COMBUST +COMBUSTED +COMBUSTIBILITY +COMBUSTIBLE +COMBUSTIBLES +COMBUSTIBLY +COMBUSTING +COMBUSTION +COMBUSTIONS +COMBUSTIVE +COMBUSTOR +COMBUSTORS +COMBUSTS +COME +COMEBACK +COMEBACKS +COMEDIAN +COMEDIANS +COMEDIC +COMEDICALLY +COMEDIENNE +COMEDIENNES +COMEDIES +COMEDO +COMEDONES +COMEDOS +COMEDOWN +COMEDOWNS +COMEDY +COMELIER +COMELIEST +COMELILY +COMELINESS +COMELINESSES +COMELY +COMEMBER +COMEMBERS +COMER +COMERS +COMES +COMESTIBLE +COMESTIBLES +COMET +COMETARY +COMETH +COMETHER +COMETHERS +COMETIC +COMETS +COMEUPPANCE +COMEUPPANCES +COMFIER +COMFIEST +COMFINESS +COMFINESSES +COMFIT +COMFITS +COMFORT +COMFORTABLE +COMFORTABLENESS +COMFORTABLY +COMFORTED +COMFORTER +COMFORTERS +COMFORTING +COMFORTINGLY +COMFORTLESS +COMFORTS +COMFREY +COMFREYS +COMFY +COMIC +COMICAL +COMICALITIES +COMICALITY +COMICALLY +COMICS +COMING +COMINGLE +COMINGLED +COMINGLES +COMINGLING +COMINGS +COMITIA +COMITIAL +COMITIES +COMITY +COMIX +COMMA +COMMAND +COMMANDABLE +COMMANDANT +COMMANDANTS +COMMANDED +COMMANDEER +COMMANDEERED +COMMANDEERING +COMMANDEERS +COMMANDER +COMMANDERIES +COMMANDERS +COMMANDERSHIP +COMMANDERSHIPS +COMMANDERY +COMMANDING +COMMANDINGLY +COMMANDMENT +COMMANDMENTS +COMMANDO +COMMANDOES +COMMANDOS +COMMANDS +COMMAS +COMMATA +COMMEMORATE +COMMEMORATED +COMMEMORATES +COMMEMORATING +COMMEMORATION +COMMEMORATIONS +COMMEMORATIVE +COMMEMORATIVELY +COMMEMORATIVES +COMMEMORATOR +COMMEMORATORS +COMMENCE +COMMENCED +COMMENCEMENT +COMMENCEMENTS +COMMENCER +COMMENCERS +COMMENCES +COMMENCING +COMMEND +COMMENDABLE +COMMENDABLY +COMMENDAM +COMMENDAMS +COMMENDATION +COMMENDATIONS +COMMENDATORY +COMMENDED +COMMENDER +COMMENDERS +COMMENDING +COMMENDS +COMMENSAL +COMMENSALISM +COMMENSALISMS +COMMENSALLY +COMMENSALS +COMMENSURABLE +COMMENSURABLY +COMMENSURATE +COMMENSURATELY +COMMENSURATION +COMMENSURATIONS +COMMENT +COMMENTARIES +COMMENTARY +COMMENTATE +COMMENTATED +COMMENTATES +COMMENTATING +COMMENTATOR +COMMENTATORS +COMMENTED +COMMENTER +COMMENTERS +COMMENTING +COMMENTS +COMMERCE +COMMERCED +COMMERCES +COMMERCIAL +COMMERCIALISE +COMMERCIALISED +COMMERCIALISES +COMMERCIALISING +COMMERCIALISM +COMMERCIALISMS +COMMERCIALIST +COMMERCIALISTIC +COMMERCIALISTS +COMMERCIALITIES +COMMERCIALITY +COMMERCIALIZE +COMMERCIALIZED +COMMERCIALIZES +COMMERCIALIZING +COMMERCIALLY +COMMERCIALS +COMMERCING +COMMIE +COMMIES +COMMINATION +COMMINATIONS +COMMINATORY +COMMINGLE +COMMINGLED +COMMINGLES +COMMINGLING +COMMINUTE +COMMINUTED +COMMINUTES +COMMINUTING +COMMINUTION +COMMINUTIONS +COMMISERATE +COMMISERATED +COMMISERATES +COMMISERATING +COMMISERATINGLY +COMMISERATION +COMMISERATIONS +COMMISERATIVE +COMMISSAR +COMMISSARIAL +COMMISSARIAT +COMMISSARIATS +COMMISSARIES +COMMISSARS +COMMISSARY +COMMISSION +COMMISSIONAIRE +COMMISSIONAIRES +COMMISSIONED +COMMISSIONER +COMMISSIONERS +COMMISSIONING +COMMISSIONS +COMMISSURAL +COMMISSURE +COMMISSURES +COMMIT +COMMITMENT +COMMITMENTS +COMMITS +COMMITTABLE +COMMITTAL +COMMITTALS +COMMITTED +COMMITTEE +COMMITTEEMAN +COMMITTEEMEN +COMMITTEES +COMMITTEEWOMAN +COMMITTEEWOMEN +COMMITTING +COMMIX +COMMIXED +COMMIXES +COMMIXING +COMMIXT +COMMIXTURE +COMMIXTURES +COMMODE +COMMODES +COMMODIFICATION +COMMODIFIED +COMMODIFIES +COMMODIFY +COMMODIFYING +COMMODIOUS +COMMODIOUSLY +COMMODIOUSNESS +COMMODITIES +COMMODITY +COMMODORE +COMMODORES +COMMON +COMMONAGE +COMMONAGES +COMMONALITIES +COMMONALITY +COMMONALTIES +COMMONALTY +COMMONER +COMMONERS +COMMONEST +COMMONLY +COMMONNESS +COMMONNESSES +COMMONPLACE +COMMONPLACENESS +COMMONPLACES +COMMONS +COMMONSENSE +COMMONSENSIBLE +COMMONSENSICAL +COMMONWEAL +COMMONWEALS +COMMONWEALTH +COMMONWEALTHS +COMMOTION +COMMOTIONS +COMMOVE +COMMOVED +COMMOVES +COMMOVING +COMMUNAL +COMMUNALISM +COMMUNALISMS +COMMUNALIST +COMMUNALISTS +COMMUNALITIES +COMMUNALITY +COMMUNALIZE +COMMUNALIZED +COMMUNALIZES +COMMUNALIZING +COMMUNALLY +COMMUNARD +COMMUNARDS +COMMUNE +COMMUNED +COMMUNER +COMMUNERS +COMMUNES +COMMUNICABILITY +COMMUNICABLE +COMMUNICABLY +COMMUNICANT +COMMUNICANTS +COMMUNICATE +COMMUNICATED +COMMUNICATEE +COMMUNICATEES +COMMUNICATES +COMMUNICATING +COMMUNICATION +COMMUNICATIONAL +COMMUNICATIONS +COMMUNICATIVE +COMMUNICATIVELY +COMMUNICATOR +COMMUNICATORS +COMMUNICATORY +COMMUNING +COMMUNION +COMMUNIONS +COMMUNIQUE +COMMUNIQUES +COMMUNISE +COMMUNISED +COMMUNISES +COMMUNISING +COMMUNISM +COMMUNISMS +COMMUNIST +COMMUNISTIC +COMMUNISTICALLY +COMMUNISTS +COMMUNITARIAN +COMMUNITARIANS +COMMUNITIES +COMMUNITY +COMMUNIZATION +COMMUNIZATIONS +COMMUNIZE +COMMUNIZED +COMMUNIZES +COMMUNIZING +COMMUTABLE +COMMUTATE +COMMUTATED +COMMUTATES +COMMUTATING +COMMUTATION +COMMUTATIONS +COMMUTATIVE +COMMUTATIVITIES +COMMUTATIVITY +COMMUTATOR +COMMUTATORS +COMMUTE +COMMUTED +COMMUTER +COMMUTERS +COMMUTES +COMMUTING +COMMY +COMONOMER +COMONOMERS +COMORBID +COMOSE +COMOUS +COMP +COMPACT +COMPACTED +COMPACTER +COMPACTERS +COMPACTEST +COMPACTIBLE +COMPACTING +COMPACTION +COMPACTIONS +COMPACTLY +COMPACTNESS +COMPACTNESSES +COMPACTOR +COMPACTORS +COMPACTS +COMPADRE +COMPADRES +COMPANIED +COMPANIES +COMPANION +COMPANIONABLE +COMPANIONABLY +COMPANIONATE +COMPANIONED +COMPANIONING +COMPANIONS +COMPANIONSHIP +COMPANIONSHIPS +COMPANIONWAY +COMPANIONWAYS +COMPANY +COMPANYING +COMPARABILITIES +COMPARABILITY +COMPARABLE +COMPARABLENESS +COMPARABLY +COMPARATIST +COMPARATISTS +COMPARATIVE +COMPARATIVELY +COMPARATIVENESS +COMPARATIVES +COMPARATIVIST +COMPARATIVISTS +COMPARATOR +COMPARATORS +COMPARE +COMPARED +COMPARER +COMPARERS +COMPARES +COMPARING +COMPARISON +COMPARISONS +COMPART +COMPARTED +COMPARTING +COMPARTMENT +COMPARTMENTAL +COMPARTMENTED +COMPARTMENTING +COMPARTMENTS +COMPARTS +COMPAS +COMPASS +COMPASSABLE +COMPASSED +COMPASSES +COMPASSING +COMPASSION +COMPASSIONATE +COMPASSIONATED +COMPASSIONATELY +COMPASSIONATES +COMPASSIONATING +COMPASSIONLESS +COMPASSIONS +COMPATIBILITIES +COMPATIBILITY +COMPATIBLE +COMPATIBLENESS +COMPATIBLES +COMPATIBLY +COMPATRIOT +COMPATRIOTIC +COMPATRIOTS +COMPED +COMPEER +COMPEERED +COMPEERING +COMPEERS +COMPEL +COMPELLABLE +COMPELLATION +COMPELLATIONS +COMPELLED +COMPELLER +COMPELLERS +COMPELLING +COMPELLINGLY +COMPELS +COMPEND +COMPENDIA +COMPENDIOUS +COMPENDIOUSLY +COMPENDIOUSNESS +COMPENDIUM +COMPENDIUMS +COMPENDS +COMPENSABILITY +COMPENSABLE +COMPENSATE +COMPENSATED +COMPENSATES +COMPENSATING +COMPENSATION +COMPENSATIONAL +COMPENSATIONS +COMPENSATIVE +COMPENSATOR +COMPENSATORS +COMPENSATORY +COMPERE +COMPERED +COMPERES +COMPERING +COMPETE +COMPETED +COMPETENCE +COMPETENCES +COMPETENCIES +COMPETENCY +COMPETENT +COMPETENTLY +COMPETES +COMPETING +COMPETITION +COMPETITIONS +COMPETITIVE +COMPETITIVELY +COMPETITIVENESS +COMPETITOR +COMPETITORS +COMPILATION +COMPILATIONS +COMPILE +COMPILED +COMPILER +COMPILERS +COMPILES +COMPILING +COMPING +COMPLACENCE +COMPLACENCES +COMPLACENCIES +COMPLACENCY +COMPLACENT +COMPLACENTLY +COMPLAIN +COMPLAINANT +COMPLAINANTS +COMPLAINED +COMPLAINER +COMPLAINERS +COMPLAINING +COMPLAININGLY +COMPLAINS +COMPLAINT +COMPLAINTS +COMPLAISANCE +COMPLAISANCES +COMPLAISANT +COMPLAISANTLY +COMPLEAT +COMPLECT +COMPLECTED +COMPLECTING +COMPLECTS +COMPLEMENT +COMPLEMENTAL +COMPLEMENTARIES +COMPLEMENTARILY +COMPLEMENTARITY +COMPLEMENTARY +COMPLEMENTATION +COMPLEMENTED +COMPLEMENTING +COMPLEMENTIZER +COMPLEMENTIZERS +COMPLEMENTS +COMPLETE +COMPLETED +COMPLETELY +COMPLETENESS +COMPLETENESSES +COMPLETER +COMPLETERS +COMPLETES +COMPLETEST +COMPLETING +COMPLETION +COMPLETIONS +COMPLETIVE +COMPLEX +COMPLEXATION +COMPLEXATIONS +COMPLEXED +COMPLEXER +COMPLEXES +COMPLEXEST +COMPLEXIFIED +COMPLEXIFIES +COMPLEXIFY +COMPLEXIFYING +COMPLEXING +COMPLEXION +COMPLEXIONAL +COMPLEXIONED +COMPLEXIONS +COMPLEXITIES +COMPLEXITY +COMPLEXLY +COMPLEXNESS +COMPLEXNESSES +COMPLIANCE +COMPLIANCES +COMPLIANCIES +COMPLIANCY +COMPLIANT +COMPLIANTLY +COMPLICACIES +COMPLICACY +COMPLICATE +COMPLICATED +COMPLICATEDLY +COMPLICATEDNESS +COMPLICATES +COMPLICATING +COMPLICATION +COMPLICATIONS +COMPLICE +COMPLICES +COMPLICIT +COMPLICITIES +COMPLICITOUS +COMPLICITY +COMPLIED +COMPLIER +COMPLIERS +COMPLIES +COMPLIMENT +COMPLIMENTARILY +COMPLIMENTARY +COMPLIMENTED +COMPLIMENTING +COMPLIMENTS +COMPLIN +COMPLINE +COMPLINES +COMPLINS +COMPLOT +COMPLOTS +COMPLOTTED +COMPLOTTING +COMPLY +COMPLYING +COMPO +COMPONE +COMPONENT +COMPONENTIAL +COMPONENTS +COMPONY +COMPORT +COMPORTED +COMPORTING +COMPORTMENT +COMPORTMENTS +COMPORTS +COMPOS +COMPOSE +COMPOSED +COMPOSEDLY +COMPOSEDNESS +COMPOSEDNESSES +COMPOSER +COMPOSERS +COMPOSES +COMPOSING +COMPOSITE +COMPOSITED +COMPOSITELY +COMPOSITES +COMPOSITING +COMPOSITION +COMPOSITIONAL +COMPOSITIONALLY +COMPOSITIONS +COMPOSITOR +COMPOSITORS +COMPOST +COMPOSTED +COMPOSTER +COMPOSTERS +COMPOSTING +COMPOSTS +COMPOSURE +COMPOSURES +COMPOTE +COMPOTES +COMPOUND +COMPOUNDABLE +COMPOUNDED +COMPOUNDER +COMPOUNDERS +COMPOUNDING +COMPOUNDS +COMPRADOR +COMPRADORE +COMPRADORES +COMPRADORS +COMPREHEND +COMPREHENDED +COMPREHENDIBLE +COMPREHENDING +COMPREHENDS +COMPREHENSIBLE +COMPREHENSIBLY +COMPREHENSION +COMPREHENSIONS +COMPREHENSIVE +COMPREHENSIVELY +COMPRESS +COMPRESSED +COMPRESSEDLY +COMPRESSES +COMPRESSIBILITY +COMPRESSIBLE +COMPRESSING +COMPRESSION +COMPRESSIONAL +COMPRESSIONS +COMPRESSIVE +COMPRESSIVELY +COMPRESSOR +COMPRESSORS +COMPRISAL +COMPRISALS +COMPRISE +COMPRISED +COMPRISES +COMPRISING +COMPRIZE +COMPRIZED +COMPRIZES +COMPRIZING +COMPROMISE +COMPROMISED +COMPROMISER +COMPROMISERS +COMPROMISES +COMPROMISING +COMPS +COMPT +COMPTED +COMPTING +COMPTROLLER +COMPTROLLERS +COMPTROLLERSHIP +COMPTS +COMPULSION +COMPULSIONS +COMPULSIVE +COMPULSIVELY +COMPULSIVENESS +COMPULSIVITIES +COMPULSIVITY +COMPULSORILY +COMPULSORY +COMPUNCTION +COMPUNCTIONS +COMPUNCTIOUS +COMPURGATION +COMPURGATIONS +COMPURGATOR +COMPURGATORS +COMPUTABILITIES +COMPUTABILITY +COMPUTABLE +COMPUTATION +COMPUTATIONAL +COMPUTATIONALLY +COMPUTATIONS +COMPUTE +COMPUTED +COMPUTER +COMPUTERDOM +COMPUTERDOMS +COMPUTERESE +COMPUTERESES +COMPUTERISE +COMPUTERISED +COMPUTERISES +COMPUTERISING +COMPUTERIST +COMPUTERISTS +COMPUTERIZABLE +COMPUTERIZATION +COMPUTERIZE +COMPUTERIZED +COMPUTERIZES +COMPUTERIZING +COMPUTERLESS +COMPUTERLIKE +COMPUTERNIK +COMPUTERNIKS +COMPUTERPHOBE +COMPUTERPHOBES +COMPUTERPHOBIA +COMPUTERPHOBIAS +COMPUTERPHOBIC +COMPUTERS +COMPUTES +COMPUTING +COMPUTIST +COMPUTISTS +COMRADE +COMRADELINESS +COMRADELINESSES +COMRADELY +COMRADERIES +COMRADERY +COMRADES +COMRADESHIP +COMRADESHIPS +COMSYMP +COMSYMPS +COMTE +COMTES +CON +CONATION +CONATIONS +CONATIVE +CONATUS +CONCANAVALIN +CONCANAVALINS +CONCATENATE +CONCATENATED +CONCATENATES +CONCATENATING +CONCATENATION +CONCATENATIONS +CONCAVE +CONCAVED +CONCAVELY +CONCAVES +CONCAVING +CONCAVITIES +CONCAVITY +CONCEAL +CONCEALABLE +CONCEALED +CONCEALER +CONCEALERS +CONCEALING +CONCEALINGLY +CONCEALMENT +CONCEALMENTS +CONCEALS +CONCEDE +CONCEDED +CONCEDEDLY +CONCEDER +CONCEDERS +CONCEDES +CONCEDING +CONCEIT +CONCEITED +CONCEITEDLY +CONCEITEDNESS +CONCEITEDNESSES +CONCEITING +CONCEITS +CONCEIVABILITY +CONCEIVABLE +CONCEIVABLENESS +CONCEIVABLY +CONCEIVE +CONCEIVED +CONCEIVER +CONCEIVERS +CONCEIVES +CONCEIVING +CONCELEBRANT +CONCELEBRANTS +CONCELEBRATE +CONCELEBRATED +CONCELEBRATES +CONCELEBRATING +CONCELEBRATION +CONCELEBRATIONS +CONCENT +CONCENTER +CONCENTERED +CONCENTERING +CONCENTERS +CONCENTRATE +CONCENTRATED +CONCENTRATEDLY +CONCENTRATES +CONCENTRATING +CONCENTRATION +CONCENTRATIONS +CONCENTRATIVE +CONCENTRATOR +CONCENTRATORS +CONCENTRIC +CONCENTRICALLY +CONCENTRICITIES +CONCENTRICITY +CONCENTS +CONCEPT +CONCEPTACLE +CONCEPTACLES +CONCEPTI +CONCEPTION +CONCEPTIONAL +CONCEPTIONS +CONCEPTIVE +CONCEPTS +CONCEPTUAL +CONCEPTUALISE +CONCEPTUALISED +CONCEPTUALISES +CONCEPTUALISING +CONCEPTUALISM +CONCEPTUALISMS +CONCEPTUALIST +CONCEPTUALISTIC +CONCEPTUALISTS +CONCEPTUALITIES +CONCEPTUALITY +CONCEPTUALIZE +CONCEPTUALIZED +CONCEPTUALIZER +CONCEPTUALIZERS +CONCEPTUALIZES +CONCEPTUALIZING +CONCEPTUALLY +CONCEPTUS +CONCEPTUSES +CONCERN +CONCERNED +CONCERNING +CONCERNMENT +CONCERNMENTS +CONCERNS +CONCERT +CONCERTED +CONCERTEDLY +CONCERTEDNESS +CONCERTEDNESSES +CONCERTGOER +CONCERTGOERS +CONCERTGOING +CONCERTGOINGS +CONCERTI +CONCERTINA +CONCERTINAS +CONCERTING +CONCERTINO +CONCERTINOS +CONCERTIZE +CONCERTIZED +CONCERTIZES +CONCERTIZING +CONCERTMASTER +CONCERTMASTERS +CONCERTMEISTER +CONCERTMEISTERS +CONCERTO +CONCERTOS +CONCERTS +CONCESSION +CONCESSIONAIRE +CONCESSIONAIRES +CONCESSIONAL +CONCESSIONARY +CONCESSIONER +CONCESSIONERS +CONCESSIONS +CONCESSIVE +CONCESSIVELY +CONCH +CONCHA +CONCHAE +CONCHAL +CONCHAS +CONCHES +CONCHIE +CONCHIES +CONCHO +CONCHOID +CONCHOIDAL +CONCHOIDALLY +CONCHOIDS +CONCHOLOGIES +CONCHOLOGIST +CONCHOLOGISTS +CONCHOLOGY +CONCHOS +CONCHS +CONCHY +CONCIERGE +CONCIERGES +CONCILIAR +CONCILIARLY +CONCILIATE +CONCILIATED +CONCILIATES +CONCILIATING +CONCILIATION +CONCILIATIONS +CONCILIATIVE +CONCILIATOR +CONCILIATORS +CONCILIATORY +CONCINNITIES +CONCINNITY +CONCISE +CONCISELY +CONCISENESS +CONCISENESSES +CONCISER +CONCISEST +CONCISION +CONCISIONS +CONCLAVE +CONCLAVES +CONCLUDE +CONCLUDED +CONCLUDER +CONCLUDERS +CONCLUDES +CONCLUDING +CONCLUSION +CONCLUSIONARY +CONCLUSIONS +CONCLUSIVE +CONCLUSIVELY +CONCLUSIVENESS +CONCLUSORY +CONCOCT +CONCOCTED +CONCOCTER +CONCOCTERS +CONCOCTING +CONCOCTION +CONCOCTIONS +CONCOCTIVE +CONCOCTOR +CONCOCTORS +CONCOCTS +CONCOMITANCE +CONCOMITANCES +CONCOMITANT +CONCOMITANTLY +CONCOMITANTS +CONCORD +CONCORDAL +CONCORDANCE +CONCORDANCES +CONCORDANT +CONCORDANTLY +CONCORDAT +CONCORDATS +CONCORDS +CONCOURS +CONCOURSE +CONCOURSES +CONCRESCENCE +CONCRESCENCES +CONCRESCENT +CONCRETE +CONCRETED +CONCRETELY +CONCRETENESS +CONCRETENESSES +CONCRETES +CONCRETING +CONCRETION +CONCRETIONARY +CONCRETIONS +CONCRETISM +CONCRETISMS +CONCRETIST +CONCRETISTS +CONCRETIZATION +CONCRETIZATIONS +CONCRETIZE +CONCRETIZED +CONCRETIZES +CONCRETIZING +CONCUBINAGE +CONCUBINAGES +CONCUBINE +CONCUBINES +CONCUPISCENCE +CONCUPISCENCES +CONCUPISCENT +CONCUPISCIBLE +CONCUR +CONCURRED +CONCURRENCE +CONCURRENCES +CONCURRENCIES +CONCURRENCY +CONCURRENT +CONCURRENTLY +CONCURRENTS +CONCURRING +CONCURS +CONCUSS +CONCUSSED +CONCUSSES +CONCUSSING +CONCUSSION +CONCUSSIONS +CONCUSSIVE +CONDEMN +CONDEMNABLE +CONDEMNATION +CONDEMNATIONS +CONDEMNATORY +CONDEMNED +CONDEMNER +CONDEMNERS +CONDEMNING +CONDEMNOR +CONDEMNORS +CONDEMNS +CONDENSABLE +CONDENSATE +CONDENSATES +CONDENSATION +CONDENSATIONAL +CONDENSATIONS +CONDENSE +CONDENSED +CONDENSER +CONDENSERS +CONDENSES +CONDENSIBLE +CONDENSING +CONDESCEND +CONDESCENDED +CONDESCENDENCE +CONDESCENDENCES +CONDESCENDING +CONDESCENDINGLY +CONDESCENDS +CONDESCENSION +CONDESCENSIONS +CONDIGN +CONDIGNLY +CONDIMENT +CONDIMENTAL +CONDIMENTS +CONDITION +CONDITIONABLE +CONDITIONAL +CONDITIONALITY +CONDITIONALLY +CONDITIONALS +CONDITIONED +CONDITIONER +CONDITIONERS +CONDITIONING +CONDITIONS +CONDO +CONDOES +CONDOLATORY +CONDOLE +CONDOLED +CONDOLENCE +CONDOLENCES +CONDOLENT +CONDOLER +CONDOLERS +CONDOLES +CONDOLING +CONDOM +CONDOMINIUM +CONDOMINIUMS +CONDOMS +CONDONABLE +CONDONATION +CONDONATIONS +CONDONE +CONDONED +CONDONER +CONDONERS +CONDONES +CONDONING +CONDOR +CONDORES +CONDORS +CONDOS +CONDOTTIERE +CONDOTTIERI +CONDUCE +CONDUCED +CONDUCER +CONDUCERS +CONDUCES +CONDUCING +CONDUCIVE +CONDUCIVENESS +CONDUCIVENESSES +CONDUCT +CONDUCTANCE +CONDUCTANCES +CONDUCTED +CONDUCTIBILITY +CONDUCTIBLE +CONDUCTIMETRIC +CONDUCTING +CONDUCTION +CONDUCTIONS +CONDUCTIVE +CONDUCTIVITIES +CONDUCTIVITY +CONDUCTOMETRIC +CONDUCTOR +CONDUCTORIAL +CONDUCTORS +CONDUCTRESS +CONDUCTRESSES +CONDUCTS +CONDUIT +CONDUITS +CONDUPLICATE +CONDYLAR +CONDYLE +CONDYLES +CONDYLOID +CONDYLOMA +CONDYLOMAS +CONDYLOMATA +CONDYLOMATOUS +CONE +CONED +CONEFLOWER +CONEFLOWERS +CONELRAD +CONELRADS +CONENOSE +CONENOSES +CONEPATE +CONEPATES +CONEPATL +CONEPATLS +CONES +CONEY +CONEYS +CONFAB +CONFABBED +CONFABBING +CONFABS +CONFABULATE +CONFABULATED +CONFABULATES +CONFABULATING +CONFABULATION +CONFABULATIONS +CONFABULATOR +CONFABULATORS +CONFABULATORY +CONFECT +CONFECTED +CONFECTING +CONFECTION +CONFECTIONARIES +CONFECTIONARY +CONFECTIONER +CONFECTIONERIES +CONFECTIONERS +CONFECTIONERY +CONFECTIONS +CONFECTS +CONFEDERACIES +CONFEDERACY +CONFEDERAL +CONFEDERATE +CONFEDERATED +CONFEDERATES +CONFEDERATING +CONFEDERATION +CONFEDERATIONS +CONFEDERATIVE +CONFER +CONFEREE +CONFEREES +CONFERENCE +CONFERENCES +CONFERENCING +CONFERENCINGS +CONFERENTIAL +CONFERMENT +CONFERMENTS +CONFERRABLE +CONFERRAL +CONFERRALS +CONFERRED +CONFERREE +CONFERREES +CONFERRENCE +CONFERRENCES +CONFERRER +CONFERRERS +CONFERRING +CONFERS +CONFERVA +CONFERVAE +CONFERVAL +CONFERVAS +CONFESS +CONFESSABLE +CONFESSED +CONFESSEDLY +CONFESSES +CONFESSING +CONFESSION +CONFESSIONAL +CONFESSIONALISM +CONFESSIONALIST +CONFESSIONALLY +CONFESSIONALS +CONFESSIONS +CONFESSOR +CONFESSORS +CONFETTI +CONFETTO +CONFIDANT +CONFIDANTE +CONFIDANTES +CONFIDANTS +CONFIDE +CONFIDED +CONFIDENCE +CONFIDENCES +CONFIDENT +CONFIDENTIAL +CONFIDENTIALITY +CONFIDENTIALLY +CONFIDENTLY +CONFIDER +CONFIDERS +CONFIDES +CONFIDING +CONFIDINGLY +CONFIDINGNESS +CONFIDINGNESSES +CONFIGURATION +CONFIGURATIONAL +CONFIGURATIONS +CONFIGURATIVE +CONFIGURE +CONFIGURED +CONFIGURES +CONFIGURING +CONFINE +CONFINED +CONFINEMENT +CONFINEMENTS +CONFINER +CONFINERS +CONFINES +CONFINING +CONFIRM +CONFIRMABILITY +CONFIRMABLE +CONFIRMAND +CONFIRMANDS +CONFIRMATION +CONFIRMATIONAL +CONFIRMATIONS +CONFIRMATORY +CONFIRMED +CONFIRMEDLY +CONFIRMEDNESS +CONFIRMEDNESSES +CONFIRMER +CONFIRMERS +CONFIRMING +CONFIRMS +CONFISCABLE +CONFISCATABLE +CONFISCATE +CONFISCATED +CONFISCATES +CONFISCATING +CONFISCATION +CONFISCATIONS +CONFISCATOR +CONFISCATORS +CONFISCATORY +CONFIT +CONFITEOR +CONFITEORS +CONFITS +CONFITURE +CONFITURES +CONFLAGRANT +CONFLAGRATION +CONFLAGRATIONS +CONFLATE +CONFLATED +CONFLATES +CONFLATING +CONFLATION +CONFLATIONS +CONFLICT +CONFLICTED +CONFLICTFUL +CONFLICTING +CONFLICTINGLY +CONFLICTION +CONFLICTIONS +CONFLICTIVE +CONFLICTS +CONFLICTUAL +CONFLUENCE +CONFLUENCES +CONFLUENT +CONFLUENTS +CONFLUX +CONFLUXES +CONFOCAL +CONFOCALLY +CONFORM +CONFORMABLE +CONFORMABLY +CONFORMAL +CONFORMANCE +CONFORMANCES +CONFORMATION +CONFORMATIONAL +CONFORMATIONS +CONFORMED +CONFORMER +CONFORMERS +CONFORMING +CONFORMISM +CONFORMISMS +CONFORMIST +CONFORMISTS +CONFORMITIES +CONFORMITY +CONFORMS +CONFOUND +CONFOUNDED +CONFOUNDEDLY +CONFOUNDER +CONFOUNDERS +CONFOUNDING +CONFOUNDINGLY +CONFOUNDS +CONFRATERNITIES +CONFRATERNITY +CONFRERE +CONFRERES +CONFRONT +CONFRONTAL +CONFRONTALS +CONFRONTATION +CONFRONTATIONAL +CONFRONTATIONS +CONFRONTED +CONFRONTER +CONFRONTERS +CONFRONTING +CONFRONTS +CONFUSE +CONFUSED +CONFUSEDLY +CONFUSEDNESS +CONFUSEDNESSES +CONFUSES +CONFUSING +CONFUSINGLY +CONFUSION +CONFUSIONAL +CONFUSIONS +CONFUTATION +CONFUTATIONS +CONFUTATIVE +CONFUTE +CONFUTED +CONFUTER +CONFUTERS +CONFUTES +CONFUTING +CONGA +CONGAED +CONGAING +CONGAS +CONGE +CONGEAL +CONGEALED +CONGEALER +CONGEALERS +CONGEALING +CONGEALMENT +CONGEALMENTS +CONGEALS +CONGEE +CONGEED +CONGEEING +CONGEES +CONGELATION +CONGELATIONS +CONGENER +CONGENERIC +CONGENEROUS +CONGENERS +CONGENIAL +CONGENIALITIES +CONGENIALITY +CONGENIALLY +CONGENITAL +CONGENITALLY +CONGER +CONGERIES +CONGERS +CONGES +CONGEST +CONGESTED +CONGESTING +CONGESTION +CONGESTIONS +CONGESTIVE +CONGESTS +CONGII +CONGIUS +CONGLOBATE +CONGLOBATED +CONGLOBATES +CONGLOBATING +CONGLOBATION +CONGLOBATIONS +CONGLOBE +CONGLOBED +CONGLOBES +CONGLOBING +CONGLOMERATE +CONGLOMERATED +CONGLOMERATES +CONGLOMERATEUR +CONGLOMERATEURS +CONGLOMERATIC +CONGLOMERATING +CONGLOMERATION +CONGLOMERATIONS +CONGLOMERATIVE +CONGLOMERATOR +CONGLOMERATORS +CONGLUTINATE +CONGLUTINATED +CONGLUTINATES +CONGLUTINATING +CONGLUTINATION +CONGLUTINATIONS +CONGO +CONGOES +CONGOS +CONGOU +CONGOUS +CONGRATS +CONGRATULATE +CONGRATULATED +CONGRATULATES +CONGRATULATING +CONGRATULATION +CONGRATULATIONS +CONGRATULATOR +CONGRATULATORS +CONGRATULATORY +CONGREGANT +CONGREGANTS +CONGREGATE +CONGREGATED +CONGREGATES +CONGREGATING +CONGREGATION +CONGREGATIONAL +CONGREGATIONS +CONGREGATOR +CONGREGATORS +CONGRESS +CONGRESSED +CONGRESSES +CONGRESSING +CONGRESSIONAL +CONGRESSIONALLY +CONGRESSMAN +CONGRESSMEN +CONGRESSPEOPLE +CONGRESSPERSON +CONGRESSPERSONS +CONGRESSWOMAN +CONGRESSWOMEN +CONGRUENCE +CONGRUENCES +CONGRUENCIES +CONGRUENCY +CONGRUENT +CONGRUENTLY +CONGRUITIES +CONGRUITY +CONGRUOUS +CONGRUOUSLY +CONGRUOUSNESS +CONGRUOUSNESSES +CONI +CONIC +CONICAL +CONICALLY +CONICITIES +CONICITY +CONICS +CONIDIA +CONIDIAL +CONIDIAN +CONIDIOPHORE +CONIDIOPHORES +CONIDIUM +CONIES +CONIFER +CONIFEROUS +CONIFERS +CONIINE +CONIINES +CONIN +CONINE +CONINES +CONING +CONINS +CONIOSES +CONIOSIS +CONIUM +CONIUMS +CONJECTURAL +CONJECTURALLY +CONJECTURE +CONJECTURED +CONJECTURER +CONJECTURERS +CONJECTURES +CONJECTURING +CONJOIN +CONJOINED +CONJOINER +CONJOINERS +CONJOINING +CONJOINS +CONJOINT +CONJOINTLY +CONJUGAL +CONJUGALITIES +CONJUGALITY +CONJUGALLY +CONJUGANT +CONJUGANTS +CONJUGATE +CONJUGATED +CONJUGATELY +CONJUGATENESS +CONJUGATENESSES +CONJUGATES +CONJUGATING +CONJUGATION +CONJUGATIONAL +CONJUGATIONALLY +CONJUGATIONS +CONJUNCT +CONJUNCTION +CONJUNCTIONAL +CONJUNCTIONALLY +CONJUNCTIONS +CONJUNCTIVA +CONJUNCTIVAE +CONJUNCTIVAL +CONJUNCTIVAS +CONJUNCTIVE +CONJUNCTIVELY +CONJUNCTIVES +CONJUNCTIVITIS +CONJUNCTS +CONJUNCTURE +CONJUNCTURES +CONJUNTO +CONJUNTOS +CONJURATION +CONJURATIONS +CONJURE +CONJURED +CONJURER +CONJURERS +CONJURES +CONJURING +CONJUROR +CONJURORS +CONK +CONKED +CONKER +CONKERS +CONKING +CONKS +CONKY +CONN +CONNATE +CONNATELY +CONNATION +CONNATIONS +CONNATURAL +CONNATURALITIES +CONNATURALITY +CONNATURALLY +CONNECT +CONNECTABLE +CONNECTED +CONNECTEDLY +CONNECTEDNESS +CONNECTEDNESSES +CONNECTER +CONNECTERS +CONNECTIBLE +CONNECTING +CONNECTION +CONNECTIONAL +CONNECTIONS +CONNECTIVE +CONNECTIVELY +CONNECTIVES +CONNECTIVITIES +CONNECTIVITY +CONNECTOR +CONNECTORS +CONNECTS +CONNED +CONNER +CONNERS +CONNEXION +CONNEXIONS +CONNING +CONNIPTION +CONNIPTIONS +CONNIVANCE +CONNIVANCES +CONNIVE +CONNIVED +CONNIVENT +CONNIVER +CONNIVERIES +CONNIVERS +CONNIVERY +CONNIVES +CONNIVING +CONNOISSEUR +CONNOISSEURS +CONNOISSEURSHIP +CONNOTATION +CONNOTATIONAL +CONNOTATIONS +CONNOTATIVE +CONNOTATIVELY +CONNOTE +CONNOTED +CONNOTES +CONNOTING +CONNS +CONNUBIAL +CONNUBIALISM +CONNUBIALISMS +CONNUBIALITIES +CONNUBIALITY +CONNUBIALLY +CONODONT +CONODONTS +CONOID +CONOIDAL +CONOIDS +CONOMINEE +CONOMINEES +CONQUER +CONQUERED +CONQUERER +CONQUERERS +CONQUERING +CONQUEROR +CONQUERORS +CONQUERS +CONQUEST +CONQUESTS +CONQUIAN +CONQUIANS +CONQUISTADOR +CONQUISTADORES +CONQUISTADORS +CONS +CONSANGUINE +CONSANGUINEOUS +CONSANGUINITIES +CONSANGUINITY +CONSCIENCE +CONSCIENCELESS +CONSCIENCES +CONSCIENTIOUS +CONSCIENTIOUSLY +CONSCIONABLE +CONSCIOUS +CONSCIOUSES +CONSCIOUSLY +CONSCIOUSNESS +CONSCIOUSNESSES +CONSCRIBE +CONSCRIBED +CONSCRIBES +CONSCRIBING +CONSCRIPT +CONSCRIPTED +CONSCRIPTING +CONSCRIPTION +CONSCRIPTIONS +CONSCRIPTS +CONSECRATE +CONSECRATED +CONSECRATES +CONSECRATING +CONSECRATION +CONSECRATIONS +CONSECRATIVE +CONSECRATOR +CONSECRATORS +CONSECRATORY +CONSECUTION +CONSECUTIONS +CONSECUTIVE +CONSECUTIVELY +CONSECUTIVENESS +CONSENSUAL +CONSENSUALLY +CONSENSUS +CONSENSUSES +CONSENT +CONSENTANEOUS +CONSENTANEOUSLY +CONSENTED +CONSENTER +CONSENTERS +CONSENTING +CONSENTINGLY +CONSENTS +CONSEQUENCE +CONSEQUENCES +CONSEQUENT +CONSEQUENTIAL +CONSEQUENTIALLY +CONSEQUENTLY +CONSEQUENTS +CONSERVANCIES +CONSERVANCY +CONSERVATION +CONSERVATIONAL +CONSERVATIONIST +CONSERVATIONS +CONSERVATISM +CONSERVATISMS +CONSERVATIVE +CONSERVATIVELY +CONSERVATIVES +CONSERVATIZE +CONSERVATIZED +CONSERVATIZES +CONSERVATIZING +CONSERVATOIRE +CONSERVATOIRES +CONSERVATOR +CONSERVATORIAL +CONSERVATORIES +CONSERVATORS +CONSERVATORSHIP +CONSERVATORY +CONSERVE +CONSERVED +CONSERVER +CONSERVERS +CONSERVES +CONSERVING +CONSIDER +CONSIDERABLE +CONSIDERABLES +CONSIDERABLY +CONSIDERATE +CONSIDERATELY +CONSIDERATENESS +CONSIDERATION +CONSIDERATIONS +CONSIDERED +CONSIDERING +CONSIDERS +CONSIGLIERE +CONSIGLIERI +CONSIGN +CONSIGNABLE +CONSIGNATION +CONSIGNATIONS +CONSIGNED +CONSIGNEE +CONSIGNEES +CONSIGNER +CONSIGNERS +CONSIGNING +CONSIGNMENT +CONSIGNMENTS +CONSIGNOR +CONSIGNORS +CONSIGNS +CONSIST +CONSISTED +CONSISTENCE +CONSISTENCES +CONSISTENCIES +CONSISTENCY +CONSISTENT +CONSISTENTLY +CONSISTING +CONSISTORIAL +CONSISTORIES +CONSISTORY +CONSISTS +CONSOCIATE +CONSOCIATED +CONSOCIATES +CONSOCIATING +CONSOCIATION +CONSOCIATIONAL +CONSOCIATIONS +CONSOL +CONSOLATION +CONSOLATIONS +CONSOLATORY +CONSOLE +CONSOLED +CONSOLER +CONSOLERS +CONSOLES +CONSOLIDATE +CONSOLIDATED +CONSOLIDATES +CONSOLIDATING +CONSOLIDATION +CONSOLIDATIONS +CONSOLIDATOR +CONSOLIDATORS +CONSOLING +CONSOLINGLY +CONSOLS +CONSOMME +CONSOMMES +CONSONANCE +CONSONANCES +CONSONANCIES +CONSONANCY +CONSONANT +CONSONANTAL +CONSONANTLY +CONSONANTS +CONSORT +CONSORTED +CONSORTIA +CONSORTING +CONSORTIUM +CONSORTIUMS +CONSORTS +CONSPECIFIC +CONSPECIFICS +CONSPECTUS +CONSPECTUSES +CONSPICUITIES +CONSPICUITY +CONSPICUOUS +CONSPICUOUSLY +CONSPICUOUSNESS +CONSPIRACIES +CONSPIRACY +CONSPIRATION +CONSPIRATIONAL +CONSPIRATIONS +CONSPIRATOR +CONSPIRATORIAL +CONSPIRATORS +CONSPIRE +CONSPIRED +CONSPIRER +CONSPIRERS +CONSPIRES +CONSPIRING +CONSTABLE +CONSTABLES +CONSTABULARIES +CONSTABULARY +CONSTANCIES +CONSTANCY +CONSTANT +CONSTANTAN +CONSTANTANS +CONSTANTLY +CONSTANTS +CONSTATIVE +CONSTATIVES +CONSTELLATE +CONSTELLATED +CONSTELLATES +CONSTELLATING +CONSTELLATION +CONSTELLATIONS +CONSTELLATORY +CONSTERNATE +CONSTERNATED +CONSTERNATES +CONSTERNATING +CONSTERNATION +CONSTERNATIONS +CONSTIPATE +CONSTIPATED +CONSTIPATES +CONSTIPATING +CONSTIPATION +CONSTIPATIONS +CONSTITUENCIES +CONSTITUENCY +CONSTITUENT +CONSTITUENTLY +CONSTITUENTS +CONSTITUTE +CONSTITUTED +CONSTITUTES +CONSTITUTING +CONSTITUTION +CONSTITUTIONAL +CONSTITUTIONALS +CONSTITUTIONS +CONSTITUTIVE +CONSTITUTIVELY +CONSTRAIN +CONSTRAINED +CONSTRAINEDLY +CONSTRAINING +CONSTRAINS +CONSTRAINT +CONSTRAINTS +CONSTRICT +CONSTRICTED +CONSTRICTING +CONSTRICTION +CONSTRICTIONS +CONSTRICTIVE +CONSTRICTOR +CONSTRICTORS +CONSTRICTS +CONSTRINGE +CONSTRINGED +CONSTRINGENT +CONSTRINGES +CONSTRINGING +CONSTRUABLE +CONSTRUAL +CONSTRUALS +CONSTRUCT +CONSTRUCTED +CONSTRUCTIBLE +CONSTRUCTING +CONSTRUCTION +CONSTRUCTIONAL +CONSTRUCTIONIST +CONSTRUCTIONS +CONSTRUCTIVE +CONSTRUCTIVELY +CONSTRUCTIVISM +CONSTRUCTIVISMS +CONSTRUCTIVIST +CONSTRUCTIVISTS +CONSTRUCTOR +CONSTRUCTORS +CONSTRUCTS +CONSTRUE +CONSTRUED +CONSTRUER +CONSTRUERS +CONSTRUES +CONSTRUING +CONSUBSTANTIAL +CONSUETUDE +CONSUETUDES +CONSUETUDINARY +CONSUL +CONSULAR +CONSULATE +CONSULATES +CONSULS +CONSULSHIP +CONSULSHIPS +CONSULT +CONSULTANCIES +CONSULTANCY +CONSULTANT +CONSULTANTS +CONSULTANTSHIP +CONSULTANTSHIPS +CONSULTATION +CONSULTATIONS +CONSULTATIVE +CONSULTED +CONSULTER +CONSULTERS +CONSULTING +CONSULTIVE +CONSULTOR +CONSULTORS +CONSULTS +CONSUMABLE +CONSUMABLES +CONSUME +CONSUMED +CONSUMEDLY +CONSUMER +CONSUMERISM +CONSUMERISMS +CONSUMERIST +CONSUMERISTIC +CONSUMERISTS +CONSUMERS +CONSUMERSHIP +CONSUMERSHIPS +CONSUMES +CONSUMING +CONSUMMATE +CONSUMMATED +CONSUMMATELY +CONSUMMATES +CONSUMMATING +CONSUMMATION +CONSUMMATIONS +CONSUMMATIVE +CONSUMMATOR +CONSUMMATORS +CONSUMMATORY +CONSUMPTION +CONSUMPTIONS +CONSUMPTIVE +CONSUMPTIVELY +CONSUMPTIVES +CONTACT +CONTACTED +CONTACTEE +CONTACTEES +CONTACTING +CONTACTOR +CONTACTORS +CONTACTS +CONTAGIA +CONTAGION +CONTAGIONS +CONTAGIOUS +CONTAGIOUSLY +CONTAGIOUSNESS +CONTAGIUM +CONTAIN +CONTAINABLE +CONTAINED +CONTAINER +CONTAINERBOARD +CONTAINERBOARDS +CONTAINERISE +CONTAINERISED +CONTAINERISES +CONTAINERISING +CONTAINERIZE +CONTAINERIZED +CONTAINERIZES +CONTAINERIZING +CONTAINERLESS +CONTAINERPORT +CONTAINERPORTS +CONTAINERS +CONTAINERSHIP +CONTAINERSHIPS +CONTAINING +CONTAINMENT +CONTAINMENTS +CONTAINS +CONTAMINANT +CONTAMINANTS +CONTAMINATE +CONTAMINATED +CONTAMINATES +CONTAMINATING +CONTAMINATION +CONTAMINATIONS +CONTAMINATIVE +CONTAMINATOR +CONTAMINATORS +CONTE +CONTEMN +CONTEMNED +CONTEMNER +CONTEMNERS +CONTEMNING +CONTEMNOR +CONTEMNORS +CONTEMNS +CONTEMPLATE +CONTEMPLATED +CONTEMPLATES +CONTEMPLATING +CONTEMPLATION +CONTEMPLATIONS +CONTEMPLATIVE +CONTEMPLATIVELY +CONTEMPLATIVES +CONTEMPLATOR +CONTEMPLATORS +CONTEMPO +CONTEMPORANEITY +CONTEMPORANEOUS +CONTEMPORARIES +CONTEMPORARILY +CONTEMPORARY +CONTEMPORIZE +CONTEMPORIZED +CONTEMPORIZES +CONTEMPORIZING +CONTEMPT +CONTEMPTIBILITY +CONTEMPTIBLE +CONTEMPTIBLY +CONTEMPTS +CONTEMPTUOUS +CONTEMPTUOUSLY +CONTEND +CONTENDED +CONTENDER +CONTENDERS +CONTENDING +CONTENDS +CONTENT +CONTENTED +CONTENTEDLY +CONTENTEDNESS +CONTENTEDNESSES +CONTENTING +CONTENTION +CONTENTIONS +CONTENTIOUS +CONTENTIOUSLY +CONTENTIOUSNESS +CONTENTMENT +CONTENTMENTS +CONTENTS +CONTERMINOUS +CONTERMINOUSLY +CONTES +CONTESSA +CONTESSAS +CONTEST +CONTESTABLE +CONTESTANT +CONTESTANTS +CONTESTATION +CONTESTATIONS +CONTESTED +CONTESTER +CONTESTERS +CONTESTING +CONTESTS +CONTEXT +CONTEXTLESS +CONTEXTS +CONTEXTUAL +CONTEXTUALIZE +CONTEXTUALIZED +CONTEXTUALIZES +CONTEXTUALIZING +CONTEXTUALLY +CONTEXTURE +CONTEXTURES +CONTIGUITIES +CONTIGUITY +CONTIGUOUS +CONTIGUOUSLY +CONTIGUOUSNESS +CONTINENCE +CONTINENCES +CONTINENT +CONTINENTAL +CONTINENTALLY +CONTINENTALS +CONTINENTLY +CONTINENTS +CONTINGENCE +CONTINGENCES +CONTINGENCIES +CONTINGENCY +CONTINGENT +CONTINGENTLY +CONTINGENTS +CONTINUA +CONTINUAL +CONTINUALLY +CONTINUANCE +CONTINUANCES +CONTINUANT +CONTINUANTS +CONTINUATE +CONTINUATION +CONTINUATIONS +CONTINUATIVE +CONTINUATOR +CONTINUATORS +CONTINUE +CONTINUED +CONTINUER +CONTINUERS +CONTINUES +CONTINUING +CONTINUINGLY +CONTINUITIES +CONTINUITY +CONTINUO +CONTINUOS +CONTINUOUS +CONTINUOUSLY +CONTINUOUSNESS +CONTINUUM +CONTINUUMS +CONTO +CONTORT +CONTORTED +CONTORTING +CONTORTION +CONTORTIONIST +CONTORTIONISTIC +CONTORTIONISTS +CONTORTIONS +CONTORTIVE +CONTORTS +CONTOS +CONTOUR +CONTOURED +CONTOURING +CONTOURS +CONTRA +CONTRABAND +CONTRABANDIST +CONTRABANDISTS +CONTRABANDS +CONTRABASS +CONTRABASSES +CONTRABASSIST +CONTRABASSISTS +CONTRABASSOON +CONTRABASSOONS +CONTRACEPTION +CONTRACEPTIONS +CONTRACEPTIVE +CONTRACEPTIVES +CONTRACT +CONTRACTED +CONTRACTIBILITY +CONTRACTIBLE +CONTRACTILE +CONTRACTILITIES +CONTRACTILITY +CONTRACTING +CONTRACTION +CONTRACTIONAL +CONTRACTIONARY +CONTRACTIONS +CONTRACTIVE +CONTRACTOR +CONTRACTORS +CONTRACTS +CONTRACTUAL +CONTRACTUALLY +CONTRACTURE +CONTRACTURES +CONTRADICT +CONTRADICTABLE +CONTRADICTED +CONTRADICTING +CONTRADICTION +CONTRADICTIONS +CONTRADICTIOUS +CONTRADICTOR +CONTRADICTORIES +CONTRADICTORILY +CONTRADICTORS +CONTRADICTORY +CONTRADICTS +CONTRAIL +CONTRAILS +CONTRAINDICATE +CONTRAINDICATED +CONTRAINDICATES +CONTRALATERAL +CONTRALTI +CONTRALTO +CONTRALTOS +CONTRAOCTAVE +CONTRAOCTAVES +CONTRAPOSITION +CONTRAPOSITIONS +CONTRAPOSITIVE +CONTRAPOSITIVES +CONTRAPTION +CONTRAPTIONS +CONTRAPUNTAL +CONTRAPUNTALLY +CONTRAPUNTIST +CONTRAPUNTISTS +CONTRARIAN +CONTRARIANS +CONTRARIES +CONTRARIETIES +CONTRARIETY +CONTRARILY +CONTRARINESS +CONTRARINESSES +CONTRARIOUS +CONTRARIWISE +CONTRARY +CONTRAS +CONTRAST +CONTRASTABLE +CONTRASTED +CONTRASTING +CONTRASTIVE +CONTRASTIVELY +CONTRASTS +CONTRASTY +CONTRAVENE +CONTRAVENED +CONTRAVENER +CONTRAVENERS +CONTRAVENES +CONTRAVENING +CONTRAVENTION +CONTRAVENTIONS +CONTREDANSE +CONTREDANSES +CONTRETEMPS +CONTRIBUTE +CONTRIBUTED +CONTRIBUTES +CONTRIBUTING +CONTRIBUTION +CONTRIBUTIONS +CONTRIBUTIVE +CONTRIBUTIVELY +CONTRIBUTOR +CONTRIBUTORS +CONTRIBUTORY +CONTRITE +CONTRITELY +CONTRITENESS +CONTRITENESSES +CONTRITION +CONTRITIONS +CONTRIVANCE +CONTRIVANCES +CONTRIVE +CONTRIVED +CONTRIVER +CONTRIVERS +CONTRIVES +CONTRIVING +CONTROL +CONTROLLABILITY +CONTROLLABLE +CONTROLLED +CONTROLLER +CONTROLLERS +CONTROLLERSHIP +CONTROLLERSHIPS +CONTROLLING +CONTROLMENT +CONTROLMENTS +CONTROLS +CONTROVERSIAL +CONTROVERSIALLY +CONTROVERSIES +CONTROVERSY +CONTROVERT +CONTROVERTED +CONTROVERTER +CONTROVERTERS +CONTROVERTIBLE +CONTROVERTING +CONTROVERTS +CONTUMACIES +CONTUMACIOUS +CONTUMACIOUSLY +CONTUMACY +CONTUMELIES +CONTUMELIOUS +CONTUMELIOUSLY +CONTUMELY +CONTUSE +CONTUSED +CONTUSES +CONTUSING +CONTUSION +CONTUSIONS +CONTUSIVE +CONUNDRUM +CONUNDRUMS +CONURBATION +CONURBATIONS +CONUS +CONVALESCE +CONVALESCED +CONVALESCENCE +CONVALESCENCES +CONVALESCENT +CONVALESCENTS +CONVALESCES +CONVALESCING +CONVECT +CONVECTED +CONVECTING +CONVECTION +CONVECTIONAL +CONVECTIONS +CONVECTIVE +CONVECTOR +CONVECTORS +CONVECTS +CONVENE +CONVENED +CONVENER +CONVENERS +CONVENES +CONVENIENCE +CONVENIENCES +CONVENIENCIES +CONVENIENCY +CONVENIENT +CONVENIENTLY +CONVENING +CONVENOR +CONVENORS +CONVENT +CONVENTED +CONVENTICLE +CONVENTICLER +CONVENTICLERS +CONVENTICLES +CONVENTING +CONVENTION +CONVENTIONAL +CONVENTIONALISM +CONVENTIONALIST +CONVENTIONALITY +CONVENTIONALIZE +CONVENTIONALLY +CONVENTIONEER +CONVENTIONEERS +CONVENTIONS +CONVENTS +CONVENTUAL +CONVENTUALLY +CONVENTUALS +CONVERGE +CONVERGED +CONVERGENCE +CONVERGENCES +CONVERGENCIES +CONVERGENCY +CONVERGENT +CONVERGES +CONVERGING +CONVERSABLE +CONVERSANCE +CONVERSANCES +CONVERSANCIES +CONVERSANCY +CONVERSANT +CONVERSATION +CONVERSATIONAL +CONVERSATIONS +CONVERSAZIONE +CONVERSAZIONES +CONVERSAZIONI +CONVERSE +CONVERSED +CONVERSELY +CONVERSER +CONVERSERS +CONVERSES +CONVERSING +CONVERSION +CONVERSIONAL +CONVERSIONS +CONVERSO +CONVERSOS +CONVERT +CONVERTAPLANE +CONVERTAPLANES +CONVERTED +CONVERTER +CONVERTERS +CONVERTIBILITY +CONVERTIBLE +CONVERTIBLENESS +CONVERTIBLES +CONVERTIBLY +CONVERTING +CONVERTIPLANE +CONVERTIPLANES +CONVERTOR +CONVERTORS +CONVERTS +CONVEX +CONVEXES +CONVEXITIES +CONVEXITY +CONVEXLY +CONVEY +CONVEYANCE +CONVEYANCER +CONVEYANCERS +CONVEYANCES +CONVEYANCING +CONVEYANCINGS +CONVEYED +CONVEYER +CONVEYERS +CONVEYING +CONVEYOR +CONVEYORISE +CONVEYORISED +CONVEYORISES +CONVEYORISING +CONVEYORIZATION +CONVEYORIZE +CONVEYORIZED +CONVEYORIZES +CONVEYORIZING +CONVEYORS +CONVEYS +CONVICT +CONVICTED +CONVICTING +CONVICTION +CONVICTIONS +CONVICTS +CONVINCE +CONVINCED +CONVINCER +CONVINCERS +CONVINCES +CONVINCING +CONVINCINGLY +CONVINCINGNESS +CONVIVIAL +CONVIVIALITIES +CONVIVIALITY +CONVIVIALLY +CONVOCATION +CONVOCATIONAL +CONVOCATIONS +CONVOKE +CONVOKED +CONVOKER +CONVOKERS +CONVOKES +CONVOKING +CONVOLUTE +CONVOLUTED +CONVOLUTES +CONVOLUTING +CONVOLUTION +CONVOLUTIONS +CONVOLVE +CONVOLVED +CONVOLVES +CONVOLVING +CONVOLVULI +CONVOLVULUS +CONVOLVULUSES +CONVOY +CONVOYED +CONVOYING +CONVOYS +CONVULSANT +CONVULSANTS +CONVULSE +CONVULSED +CONVULSES +CONVULSING +CONVULSION +CONVULSIONARY +CONVULSIONS +CONVULSIVE +CONVULSIVELY +CONVULSIVENESS +CONY +COO +COOCH +COOCHES +COOCOO +COOED +COOEE +COOEED +COOEEING +COOEES +COOER +COOERS +COOEY +COOEYED +COOEYING +COOEYS +COOF +COOFS +COOING +COOINGLY +COOK +COOKABLE +COOKBOOK +COOKBOOKS +COOKED +COOKER +COOKERIES +COOKERS +COOKERY +COOKEY +COOKEYS +COOKHOUSE +COOKHOUSES +COOKIE +COOKIES +COOKING +COOKINGS +COOKLESS +COOKOFF +COOKOFFS +COOKOUT +COOKOUTS +COOKS +COOKSHACK +COOKSHACKS +COOKSHOP +COOKSHOPS +COOKSTOVE +COOKSTOVES +COOKTOP +COOKTOPS +COOKWARE +COOKWARES +COOKY +COOL +COOLANT +COOLANTS +COOLDOWN +COOLDOWNS +COOLED +COOLER +COOLERS +COOLEST +COOLHEADED +COOLIE +COOLIES +COOLING +COOLISH +COOLLY +COOLNESS +COOLNESSES +COOLS +COOLTH +COOLTHS +COOLY +COOMB +COOMBE +COOMBES +COOMBS +COON +COONCAN +COONCANS +COONHOUND +COONHOUNDS +COONS +COONSKIN +COONSKINS +COONTIE +COONTIES +COOP +COOPED +COOPER +COOPERAGE +COOPERAGES +COOPERATE +COOPERATED +COOPERATES +COOPERATING +COOPERATION +COOPERATIONIST +COOPERATIONISTS +COOPERATIONS +COOPERATIVE +COOPERATIVELY +COOPERATIVENESS +COOPERATIVES +COOPERATOR +COOPERATORS +COOPERED +COOPERIES +COOPERING +COOPERS +COOPERY +COOPING +COOPS +COOPT +COOPTED +COOPTING +COOPTION +COOPTIONS +COOPTS +COORDINATE +COORDINATED +COORDINATELY +COORDINATENESS +COORDINATES +COORDINATING +COORDINATION +COORDINATIONS +COORDINATIVE +COORDINATOR +COORDINATORS +COOS +COOT +COOTER +COOTERS +COOTIE +COOTIES +COOTS +COP +COPACETIC +COPAIBA +COPAIBAS +COPAL +COPALM +COPALMS +COPALS +COPARCENARIES +COPARCENARY +COPARCENER +COPARCENERS +COPARENT +COPARENTED +COPARENTING +COPARENTS +COPARTNER +COPARTNERED +COPARTNERING +COPARTNERS +COPARTNERSHIP +COPARTNERSHIPS +COPASETIC +COPASTOR +COPASTORS +COPATRON +COPATRONS +COPAY +COPAYMENT +COPAYMENTS +COPAYS +COPE +COPECK +COPECKS +COPED +COPEMATE +COPEMATES +COPEN +COPENS +COPEPOD +COPEPODS +COPER +COPERS +COPES +COPESETIC +COPESTONE +COPESTONES +COPIED +COPIER +COPIERS +COPIES +COPIHUE +COPIHUES +COPILOT +COPILOTS +COPING +COPINGS +COPINGSTONE +COPINGSTONES +COPIOUS +COPIOUSLY +COPIOUSNESS +COPIOUSNESSES +COPLANAR +COPLANARITIES +COPLANARITY +COPLOT +COPLOTS +COPLOTTED +COPLOTTING +COPOLYMER +COPOLYMERIC +COPOLYMERIZE +COPOLYMERIZED +COPOLYMERIZES +COPOLYMERIZING +COPOLYMERS +COPOUT +COPOUTS +COPPED +COPPER +COPPERAH +COPPERAHS +COPPERAS +COPPERASES +COPPERED +COPPERHEAD +COPPERHEADS +COPPERING +COPPERPLATE +COPPERPLATES +COPPERS +COPPERSMITH +COPPERSMITHS +COPPERY +COPPICE +COPPICED +COPPICES +COPPICING +COPPING +COPPRA +COPPRAS +COPRA +COPRAH +COPRAHS +COPRAS +COPREMIA +COPREMIAS +COPREMIC +COPRESENT +COPRESENTED +COPRESENTING +COPRESENTS +COPRESIDENT +COPRESIDENTS +COPRINCE +COPRINCES +COPRINCIPAL +COPRINCIPALS +COPRISONER +COPRISONERS +COPROCESSING +COPROCESSOR +COPROCESSORS +COPRODUCE +COPRODUCED +COPRODUCER +COPRODUCERS +COPRODUCES +COPRODUCING +COPRODUCT +COPRODUCTION +COPRODUCTIONS +COPRODUCTS +COPROLITE +COPROLITES +COPROLITIC +COPROLOGIES +COPROLOGY +COPROMOTER +COPROMOTERS +COPROPHAGIES +COPROPHAGOUS +COPROPHAGY +COPROPHILIA +COPROPHILIAC +COPROPHILIACS +COPROPHILIAS +COPROPHILOUS +COPROPRIETOR +COPROPRIETORS +COPROSPERITIES +COPROSPERITY +COPS +COPSE +COPSES +COPTER +COPTERS +COPUBLISH +COPUBLISHED +COPUBLISHER +COPUBLISHERS +COPUBLISHES +COPUBLISHING +COPULA +COPULAE +COPULAR +COPULAS +COPULATE +COPULATED +COPULATES +COPULATING +COPULATION +COPULATIONS +COPULATIVE +COPULATIVES +COPULATORY +COPURIFIED +COPURIFIES +COPURIFY +COPURIFYING +COPY +COPYABLE +COPYBOOK +COPYBOOKS +COPYBOY +COPYBOYS +COPYCAT +COPYCATS +COPYCATTED +COPYCATTING +COPYDESK +COPYDESKS +COPYEDIT +COPYEDITED +COPYEDITING +COPYEDITS +COPYGIRL +COPYGIRLS +COPYHOLD +COPYHOLDER +COPYHOLDERS +COPYHOLDS +COPYING +COPYIST +COPYISTS +COPYLEFT +COPYLEFTS +COPYREAD +COPYREADER +COPYREADERS +COPYREADING +COPYREADS +COPYRIGHT +COPYRIGHTABLE +COPYRIGHTED +COPYRIGHTING +COPYRIGHTS +COPYWRITER +COPYWRITERS +COQUET +COQUETRIES +COQUETRY +COQUETS +COQUETTE +COQUETTED +COQUETTES +COQUETTING +COQUETTISH +COQUETTISHLY +COQUETTISHNESS +COQUILLE +COQUILLES +COQUINA +COQUINAS +COQUITO +COQUITOS +COR +CORACLE +CORACLES +CORACOID +CORACOIDS +CORAL +CORALBELLS +CORALBERRIES +CORALBERRY +CORALLINE +CORALLINES +CORALLOID +CORALROOT +CORALROOTS +CORALS +CORANTO +CORANTOES +CORANTOS +CORBAN +CORBANS +CORBEIL +CORBEILLE +CORBEILLES +CORBEILS +CORBEL +CORBELED +CORBELING +CORBELINGS +CORBELLED +CORBELLING +CORBELS +CORBICULA +CORBICULAE +CORBIE +CORBIES +CORBINA +CORBINAS +CORBY +CORD +CORDAGE +CORDAGES +CORDATE +CORDATELY +CORDED +CORDELLE +CORDELLED +CORDELLES +CORDELLING +CORDER +CORDERS +CORDGRASS +CORDGRASSES +CORDIAL +CORDIALITIES +CORDIALITY +CORDIALLY +CORDIALNESS +CORDIALNESSES +CORDIALS +CORDIERITE +CORDIERITES +CORDIFORM +CORDILLERA +CORDILLERAN +CORDILLERAS +CORDING +CORDINGS +CORDITE +CORDITES +CORDLESS +CORDLESSES +CORDLIKE +CORDOBA +CORDOBAS +CORDON +CORDONED +CORDONING +CORDONNET +CORDONNETS +CORDONS +CORDOVAN +CORDOVANS +CORDS +CORDUROY +CORDUROYED +CORDUROYING +CORDUROYS +CORDWAIN +CORDWAINER +CORDWAINERIES +CORDWAINERS +CORDWAINERY +CORDWAINS +CORDWOOD +CORDWOODS +CORE +CORECIPIENT +CORECIPIENTS +CORED +COREDEEM +COREDEEMED +COREDEEMING +COREDEEMS +COREIGN +COREIGNS +CORELATE +CORELATED +CORELATES +CORELATING +CORELESS +CORELIGIONIST +CORELIGIONISTS +COREMIA +COREMIUM +COREOPSIS +COREPRESSOR +COREPRESSORS +COREQUISITE +COREQUISITES +CORER +CORERS +CORES +CORESEARCHER +CORESEARCHERS +CORESIDENT +CORESIDENTIAL +CORESIDENTS +CORESPONDENT +CORESPONDENTS +CORF +CORGI +CORGIS +CORIA +CORIACEOUS +CORIANDER +CORIANDERS +CORING +CORIUM +CORK +CORKAGE +CORKAGES +CORKBOARD +CORKBOARDS +CORKED +CORKER +CORKERS +CORKIER +CORKIEST +CORKINESS +CORKINESSES +CORKING +CORKLIKE +CORKS +CORKSCREW +CORKSCREWED +CORKSCREWING +CORKSCREWS +CORKWOOD +CORKWOODS +CORKY +CORM +CORMEL +CORMELS +CORMLIKE +CORMOID +CORMORANT +CORMORANTS +CORMOUS +CORMS +CORN +CORNBALL +CORNBALLS +CORNBRAID +CORNBRAIDED +CORNBRAIDING +CORNBRAIDS +CORNBREAD +CORNBREADS +CORNCAKE +CORNCAKES +CORNCOB +CORNCOBS +CORNCRAKE +CORNCRAKES +CORNCRIB +CORNCRIBS +CORNEA +CORNEAL +CORNEAS +CORNED +CORNEITIS +CORNEITISES +CORNEL +CORNELIAN +CORNELIANS +CORNELS +CORNEOUS +CORNER +CORNERBACK +CORNERBACKS +CORNERED +CORNERING +CORNERMAN +CORNERMEN +CORNERS +CORNERSTONE +CORNERSTONES +CORNERWAYS +CORNERWISE +CORNET +CORNETCIES +CORNETCY +CORNETIST +CORNETISTS +CORNETS +CORNETTIST +CORNETTISTS +CORNFED +CORNFIELD +CORNFIELDS +CORNFLAKES +CORNFLOWER +CORNFLOWERS +CORNHUSK +CORNHUSKING +CORNHUSKINGS +CORNHUSKS +CORNICE +CORNICED +CORNICES +CORNICHE +CORNICHES +CORNICHON +CORNICHONS +CORNICING +CORNICLE +CORNICLES +CORNIER +CORNIEST +CORNIFICATION +CORNIFICATIONS +CORNIFIED +CORNIFIES +CORNIFY +CORNIFYING +CORNILY +CORNINESS +CORNINESSES +CORNING +CORNMEAL +CORNMEALS +CORNPONE +CORNPONES +CORNROW +CORNROWED +CORNROWING +CORNROWS +CORNS +CORNSTALK +CORNSTALKS +CORNSTARCH +CORNSTARCHES +CORNU +CORNUA +CORNUAL +CORNUCOPIA +CORNUCOPIAN +CORNUCOPIAS +CORNUS +CORNUSES +CORNUTE +CORNUTED +CORNUTO +CORNUTOS +CORNY +CORODIES +CORODY +COROLLA +COROLLARIES +COROLLARY +COROLLAS +COROLLATE +COROMANDEL +COROMANDELS +CORONA +CORONACH +CORONACHS +CORONAE +CORONAGRAPH +CORONAGRAPHS +CORONAL +CORONALLY +CORONALS +CORONARIES +CORONARY +CORONAS +CORONATE +CORONATED +CORONATES +CORONATING +CORONATION +CORONATIONS +CORONEL +CORONELS +CORONER +CORONERS +CORONET +CORONETED +CORONETS +CORONOGRAPH +CORONOGRAPHS +CORONOID +COROTATE +COROTATED +COROTATES +COROTATING +COROTATION +COROTATIONS +CORPORA +CORPORAL +CORPORALITIES +CORPORALITY +CORPORALLY +CORPORALS +CORPORATE +CORPORATELY +CORPORATES +CORPORATION +CORPORATIONS +CORPORATISM +CORPORATISMS +CORPORATIST +CORPORATIVE +CORPORATIVISM +CORPORATIVISMS +CORPORATOR +CORPORATORS +CORPOREAL +CORPOREALITIES +CORPOREALITY +CORPOREALLY +CORPOREALNESS +CORPOREALNESSES +CORPOREITIES +CORPOREITY +CORPOSANT +CORPOSANTS +CORPS +CORPSE +CORPSES +CORPSMAN +CORPSMEN +CORPULENCE +CORPULENCES +CORPULENCIES +CORPULENCY +CORPULENT +CORPULENTLY +CORPUS +CORPUSCLE +CORPUSCLES +CORPUSCULAR +CORPUSES +CORRADE +CORRADED +CORRADES +CORRADING +CORRAL +CORRALLED +CORRALLING +CORRALS +CORRASION +CORRASIONS +CORRASIVE +CORRECT +CORRECTABLE +CORRECTED +CORRECTER +CORRECTEST +CORRECTING +CORRECTION +CORRECTIONAL +CORRECTIONS +CORRECTITUDE +CORRECTITUDES +CORRECTIVE +CORRECTIVELY +CORRECTIVES +CORRECTLY +CORRECTNESS +CORRECTNESSES +CORRECTOR +CORRECTORS +CORRECTS +CORRELATABLE +CORRELATE +CORRELATED +CORRELATES +CORRELATING +CORRELATION +CORRELATIONAL +CORRELATIONS +CORRELATIVE +CORRELATIVELY +CORRELATIVES +CORRELATOR +CORRELATORS +CORRESPOND +CORRESPONDED +CORRESPONDENCE +CORRESPONDENCES +CORRESPONDENCY +CORRESPONDENT +CORRESPONDENTS +CORRESPONDING +CORRESPONDINGLY +CORRESPONDS +CORRESPONSIVE +CORRIDA +CORRIDAS +CORRIDOR +CORRIDORS +CORRIE +CORRIES +CORRIGENDA +CORRIGENDUM +CORRIGIBILITIES +CORRIGIBILITY +CORRIGIBLE +CORRIVAL +CORRIVALS +CORROBORANT +CORROBORATE +CORROBORATED +CORROBORATES +CORROBORATING +CORROBORATION +CORROBORATIONS +CORROBORATIVE +CORROBORATOR +CORROBORATORS +CORROBORATORY +CORROBOREE +CORROBOREES +CORRODE +CORRODED +CORRODES +CORRODIBLE +CORRODIES +CORRODING +CORRODY +CORROSION +CORROSIONS +CORROSIVE +CORROSIVELY +CORROSIVENESS +CORROSIVENESSES +CORROSIVES +CORRUGATE +CORRUGATED +CORRUGATES +CORRUGATING +CORRUGATION +CORRUGATIONS +CORRUPT +CORRUPTED +CORRUPTER +CORRUPTERS +CORRUPTEST +CORRUPTIBILITY +CORRUPTIBLE +CORRUPTIBLY +CORRUPTING +CORRUPTION +CORRUPTIONIST +CORRUPTIONISTS +CORRUPTIONS +CORRUPTIVE +CORRUPTIVELY +CORRUPTLY +CORRUPTNESS +CORRUPTNESSES +CORRUPTOR +CORRUPTORS +CORRUPTS +CORS +CORSAC +CORSACS +CORSAGE +CORSAGES +CORSAIR +CORSAIRS +CORSE +CORSELET +CORSELETS +CORSELETTE +CORSELETTES +CORSES +CORSET +CORSETED +CORSETIERE +CORSETIERES +CORSETING +CORSETRIES +CORSETRY +CORSETS +CORSLET +CORSLETS +CORTEGE +CORTEGES +CORTEX +CORTEXES +CORTICAL +CORTICALLY +CORTICATE +CORTICES +CORTICOID +CORTICOIDS +CORTICOSE +CORTICOSTEROID +CORTICOSTEROIDS +CORTICOSTERONE +CORTICOSTERONES +CORTICOTROPHIN +CORTICOTROPHINS +CORTICOTROPIN +CORTICOTROPINS +CORTIN +CORTINA +CORTINAS +CORTINS +CORTISOL +CORTISOLS +CORTISONE +CORTISONES +CORULER +CORULERS +CORUNDUM +CORUNDUMS +CORUSCANT +CORUSCATE +CORUSCATED +CORUSCATES +CORUSCATING +CORUSCATION +CORUSCATIONS +CORVEE +CORVEES +CORVES +CORVET +CORVETS +CORVETTE +CORVETTES +CORVID +CORVIDS +CORVINA +CORVINAS +CORVINE +CORY +CORYBANT +CORYBANTES +CORYBANTIC +CORYBANTS +CORYDALIS +CORYDALISES +CORYMB +CORYMBED +CORYMBOSE +CORYMBOSELY +CORYMBOUS +CORYMBS +CORYNEBACTERIA +CORYNEBACTERIAL +CORYNEBACTERIUM +CORYNEFORM +CORYPHAEI +CORYPHAEUS +CORYPHEE +CORYPHEES +CORYZA +CORYZAL +CORYZAS +COS +COSCRIPT +COSCRIPTED +COSCRIPTING +COSCRIPTS +COSEC +COSECANT +COSECANTS +COSECS +COSEISMAL +COSEISMALS +COSEISMIC +COSEISMICS +COSES +COSET +COSETS +COSEY +COSEYS +COSH +COSHED +COSHER +COSHERED +COSHERING +COSHERS +COSHES +COSHING +COSIE +COSIED +COSIER +COSIES +COSIEST +COSIGN +COSIGNATORIES +COSIGNATORY +COSIGNED +COSIGNER +COSIGNERS +COSIGNING +COSIGNS +COSILY +COSINE +COSINES +COSINESS +COSINESSES +COSMETIC +COSMETICALLY +COSMETICIAN +COSMETICIANS +COSMETICIZE +COSMETICIZED +COSMETICIZES +COSMETICIZING +COSMETICS +COSMETOLOGIES +COSMETOLOGIST +COSMETOLOGISTS +COSMETOLOGY +COSMIC +COSMICAL +COSMICALLY +COSMID +COSMIDS +COSMISM +COSMISMS +COSMIST +COSMISTS +COSMOCHEMICAL +COSMOCHEMIST +COSMOCHEMISTRY +COSMOCHEMISTS +COSMOGENIC +COSMOGONIC +COSMOGONICAL +COSMOGONIES +COSMOGONIST +COSMOGONISTS +COSMOGONY +COSMOGRAPHER +COSMOGRAPHERS +COSMOGRAPHIC +COSMOGRAPHICAL +COSMOGRAPHIES +COSMOGRAPHY +COSMOLINE +COSMOLINED +COSMOLINES +COSMOLINING +COSMOLOGICAL +COSMOLOGICALLY +COSMOLOGIES +COSMOLOGIST +COSMOLOGISTS +COSMOLOGY +COSMONAUT +COSMONAUTS +COSMOPOLIS +COSMOPOLISES +COSMOPOLITAN +COSMOPOLITANISM +COSMOPOLITANS +COSMOPOLITE +COSMOPOLITES +COSMOPOLITISM +COSMOPOLITISMS +COSMOS +COSMOSES +COSMOTRON +COSMOTRONS +COSPONSOR +COSPONSORED +COSPONSORING +COSPONSORS +COSPONSORSHIP +COSPONSORSHIPS +COSS +COSSACK +COSSACKS +COSSET +COSSETED +COSSETING +COSSETS +COST +COSTA +COSTAE +COSTAL +COSTALLY +COSTAR +COSTARD +COSTARDS +COSTARRED +COSTARRING +COSTARS +COSTATE +COSTED +COSTER +COSTERMONGER +COSTERMONGERS +COSTERS +COSTING +COSTIVE +COSTIVELY +COSTIVENESS +COSTIVENESSES +COSTLESS +COSTLESSLY +COSTLIER +COSTLIEST +COSTLINESS +COSTLINESSES +COSTLY +COSTMARIES +COSTMARY +COSTREL +COSTRELS +COSTS +COSTUME +COSTUMED +COSTUMER +COSTUMERIES +COSTUMERS +COSTUMERY +COSTUMES +COSTUMEY +COSTUMIER +COSTUMIERS +COSTUMING +COSURFACTANT +COSURFACTANTS +COSY +COSYING +COT +COTAN +COTANGENT +COTANGENTS +COTANS +COTE +COTEAU +COTEAUX +COTED +COTENANCIES +COTENANCY +COTENANT +COTENANTS +COTERIE +COTERIES +COTERMINOUS +COTERMINOUSLY +COTES +COTHURN +COTHURNAL +COTHURNI +COTHURNS +COTHURNUS +COTIDAL +COTILLION +COTILLIONS +COTILLON +COTILLONS +COTING +COTINGA +COTINGAS +COTININE +COTININES +COTONEASTER +COTONEASTERS +COTQUEAN +COTQUEANS +COTRANSDUCE +COTRANSDUCED +COTRANSDUCES +COTRANSDUCING +COTRANSDUCTION +COTRANSDUCTIONS +COTRANSFER +COTRANSFERS +COTRANSPORT +COTRANSPORTED +COTRANSPORTING +COTRANSPORTS +COTRUSTEE +COTRUSTEES +COTS +COTTA +COTTAE +COTTAGE +COTTAGER +COTTAGERS +COTTAGES +COTTAGEY +COTTAR +COTTARS +COTTAS +COTTER +COTTERED +COTTERLESS +COTTERS +COTTIER +COTTIERS +COTTON +COTTONED +COTTONING +COTTONMOUTH +COTTONMOUTHS +COTTONS +COTTONSEED +COTTONSEEDS +COTTONTAIL +COTTONTAILS +COTTONWEED +COTTONWEEDS +COTTONWOOD +COTTONWOODS +COTTONY +COTURNIX +COTURNIXES +COTYLEDON +COTYLEDONARY +COTYLEDONS +COTYLOID +COTYLOSAUR +COTYLOSAURS +COTYPE +COTYPES +COUCH +COUCHANT +COUCHED +COUCHER +COUCHERS +COUCHES +COUCHETTE +COUCHETTES +COUCHING +COUCHINGS +COUDE +COUGAR +COUGARS +COUGH +COUGHED +COUGHER +COUGHERS +COUGHING +COUGHS +COULD +COULDEST +COULDST +COULEE +COULEES +COULIBIAC +COULIBIACS +COULIS +COULISSE +COULISSES +COULOIR +COULOIRS +COULOMB +COULOMBIC +COULOMBS +COULOMETER +COULOMETERS +COULOMETRIC +COULOMETRICALLY +COULOMETRIES +COULOMETRY +COULTER +COULTERS +COUMARIC +COUMARIN +COUMARINS +COUMARONE +COUMARONES +COUMAROU +COUMAROUS +COUNCIL +COUNCILLOR +COUNCILLORS +COUNCILLORSHIP +COUNCILLORSHIPS +COUNCILMAN +COUNCILMANIC +COUNCILMEN +COUNCILOR +COUNCILORS +COUNCILS +COUNCILWOMAN +COUNCILWOMEN +COUNSEL +COUNSELED +COUNSELEE +COUNSELEES +COUNSELING +COUNSELINGS +COUNSELLED +COUNSELLING +COUNSELLINGS +COUNSELLOR +COUNSELLORS +COUNSELOR +COUNSELORS +COUNSELORSHIP +COUNSELORSHIPS +COUNSELS +COUNT +COUNTABILITIES +COUNTABILITY +COUNTABLE +COUNTABLY +COUNTDOWN +COUNTDOWNS +COUNTED +COUNTENANCE +COUNTENANCED +COUNTENANCER +COUNTENANCERS +COUNTENANCES +COUNTENANCING +COUNTER +COUNTERACT +COUNTERACTED +COUNTERACTING +COUNTERACTION +COUNTERACTIONS +COUNTERACTIVE +COUNTERACTS +COUNTERAGENT +COUNTERAGENTS +COUNTERARGUE +COUNTERARGUED +COUNTERARGUES +COUNTERARGUING +COUNTERARGUMENT +COUNTERASSAULT +COUNTERASSAULTS +COUNTERATTACK +COUNTERATTACKED +COUNTERATTACKER +COUNTERATTACKS +COUNTERBALANCE +COUNTERBALANCED +COUNTERBALANCES +COUNTERBID +COUNTERBIDS +COUNTERBLAST +COUNTERBLASTS +COUNTERBLOCKADE +COUNTERBLOW +COUNTERBLOWS +COUNTERCAMPAIGN +COUNTERCHANGE +COUNTERCHANGED +COUNTERCHANGES +COUNTERCHANGING +COUNTERCHARGE +COUNTERCHARGED +COUNTERCHARGES +COUNTERCHARGING +COUNTERCHECK +COUNTERCHECKED +COUNTERCHECKING +COUNTERCHECKS +COUNTERCLAIM +COUNTERCLAIMED +COUNTERCLAIMING +COUNTERCLAIMS +COUNTERCOUP +COUNTERCOUPS +COUNTERCRIES +COUNTERCRY +COUNTERCULTURAL +COUNTERCULTURE +COUNTERCULTURES +COUNTERCURRENT +COUNTERCURRENTS +COUNTERCYCLICAL +COUNTERDEMAND +COUNTERDEMANDS +COUNTERED +COUNTEREFFORT +COUNTEREFFORTS +COUNTEREVIDENCE +COUNTEREXAMPLE +COUNTEREXAMPLES +COUNTERFACTUAL +COUNTERFEIT +COUNTERFEITED +COUNTERFEITER +COUNTERFEITERS +COUNTERFEITING +COUNTERFEITS +COUNTERFIRE +COUNTERFIRES +COUNTERFLOW +COUNTERFLOWS +COUNTERFOIL +COUNTERFOILS +COUNTERFORCE +COUNTERFORCES +COUNTERGUERILLA +COUNTERIMAGE +COUNTERIMAGES +COUNTERING +COUNTERINSTANCE +COUNTERION +COUNTERIONS +COUNTERIRRITANT +COUNTERMAN +COUNTERMAND +COUNTERMANDED +COUNTERMANDING +COUNTERMANDS +COUNTERMARCH +COUNTERMARCHED +COUNTERMARCHES +COUNTERMARCHING +COUNTERMEASURE +COUNTERMEASURES +COUNTERMELODIES +COUNTERMELODY +COUNTERMEMO +COUNTERMEMOS +COUNTERMEN +COUNTERMINE +COUNTERMINES +COUNTERMOVE +COUNTERMOVED +COUNTERMOVEMENT +COUNTERMOVES +COUNTERMOVING +COUNTERMYTH +COUNTERMYTHS +COUNTEROFFER +COUNTEROFFERS +COUNTERORDER +COUNTERORDERED +COUNTERORDERING +COUNTERORDERS +COUNTERPANE +COUNTERPANES +COUNTERPART +COUNTERPARTS +COUNTERPETITION +COUNTERPICKET +COUNTERPICKETED +COUNTERPICKETS +COUNTERPLAN +COUNTERPLANS +COUNTERPLAY +COUNTERPLAYER +COUNTERPLAYERS +COUNTERPLAYS +COUNTERPLEA +COUNTERPLEAS +COUNTERPLOT +COUNTERPLOTS +COUNTERPLOTTED +COUNTERPLOTTING +COUNTERPLOY +COUNTERPLOYS +COUNTERPOINT +COUNTERPOINTED +COUNTERPOINTING +COUNTERPOINTS +COUNTERPOISE +COUNTERPOISED +COUNTERPOISES +COUNTERPOISING +COUNTERPOSE +COUNTERPOSED +COUNTERPOSES +COUNTERPOSING +COUNTERPOWER +COUNTERPOWERS +COUNTERPRESSURE +COUNTERPROJECT +COUNTERPROJECTS +COUNTERPROPOSAL +COUNTERPROTEST +COUNTERPROTESTS +COUNTERPUNCH +COUNTERPUNCHED +COUNTERPUNCHER +COUNTERPUNCHERS +COUNTERPUNCHES +COUNTERPUNCHING +COUNTERQUESTION +COUNTERRAID +COUNTERRAIDS +COUNTERRALLIED +COUNTERRALLIES +COUNTERRALLY +COUNTERRALLYING +COUNTERREACTION +COUNTERREFORM +COUNTERREFORMER +COUNTERREFORMS +COUNTERRESPONSE +COUNTERS +COUNTERSHADING +COUNTERSHADINGS +COUNTERSHOT +COUNTERSHOTS +COUNTERSIGN +COUNTERSIGNED +COUNTERSIGNING +COUNTERSIGNS +COUNTERSINK +COUNTERSINKING +COUNTERSINKS +COUNTERSNIPER +COUNTERSNIPERS +COUNTERSPELL +COUNTERSPELLS +COUNTERSPIES +COUNTERSPY +COUNTERSTAIN +COUNTERSTAINED +COUNTERSTAINING +COUNTERSTAINS +COUNTERSTATE +COUNTERSTATED +COUNTERSTATES +COUNTERSTATING +COUNTERSTEP +COUNTERSTEPS +COUNTERSTRATEGY +COUNTERSTREAM +COUNTERSTREAMS +COUNTERSTRICKEN +COUNTERSTRIKE +COUNTERSTRIKES +COUNTERSTRIKING +COUNTERSTROKE +COUNTERSTROKES +COUNTERSTRUCK +COUNTERSTYLE +COUNTERSTYLES +COUNTERSUE +COUNTERSUED +COUNTERSUES +COUNTERSUING +COUNTERSUIT +COUNTERSUITS +COUNTERSUNK +COUNTERTACTIC +COUNTERTACTICS +COUNTERTENDENCY +COUNTERTENOR +COUNTERTENORS +COUNTERTERROR +COUNTERTERRORS +COUNTERTHREAT +COUNTERTHREATS +COUNTERTHRUST +COUNTERTHRUSTS +COUNTERTOP +COUNTERTOPS +COUNTERTRADE +COUNTERTRADES +COUNTERTREND +COUNTERTRENDS +COUNTERVAIL +COUNTERVAILED +COUNTERVAILING +COUNTERVAILS +COUNTERVIEW +COUNTERVIEWS +COUNTERVIOLENCE +COUNTERWEIGHT +COUNTERWEIGHTED +COUNTERWEIGHTS +COUNTERWORLD +COUNTERWORLDS +COUNTESS +COUNTESSES +COUNTIAN +COUNTIANS +COUNTIES +COUNTING +COUNTINGHOUSE +COUNTINGHOUSES +COUNTLESS +COUNTLESSLY +COUNTRIES +COUNTRIFIED +COUNTRY +COUNTRYFIED +COUNTRYISH +COUNTRYMAN +COUNTRYMEN +COUNTRYSEAT +COUNTRYSEATS +COUNTRYSIDE +COUNTRYSIDES +COUNTRYWIDE +COUNTRYWOMAN +COUNTRYWOMEN +COUNTS +COUNTY +COUP +COUPE +COUPED +COUPES +COUPING +COUPLE +COUPLED +COUPLEDOM +COUPLEDOMS +COUPLEMENT +COUPLEMENTS +COUPLER +COUPLERS +COUPLES +COUPLET +COUPLETS +COUPLING +COUPLINGS +COUPON +COUPONING +COUPONINGS +COUPONS +COUPS +COURAGE +COURAGEOUS +COURAGEOUSLY +COURAGEOUSNESS +COURAGES +COURANT +COURANTE +COURANTES +COURANTO +COURANTOES +COURANTOS +COURANTS +COURGETTE +COURGETTES +COURIER +COURIERS +COURLAN +COURLANS +COURSE +COURSED +COURSER +COURSERS +COURSES +COURSEWARE +COURSEWARES +COURSING +COURSINGS +COURT +COURTED +COURTEOUS +COURTEOUSLY +COURTEOUSNESS +COURTEOUSNESSES +COURTER +COURTERS +COURTESAN +COURTESANS +COURTESIED +COURTESIES +COURTESY +COURTESYING +COURTEZAN +COURTEZANS +COURTHOUSE +COURTHOUSES +COURTIER +COURTIERS +COURTING +COURTLIER +COURTLIEST +COURTLINESS +COURTLINESSES +COURTLY +COURTROOM +COURTROOMS +COURTS +COURTSHIP +COURTSHIPS +COURTSIDE +COURTSIDES +COURTYARD +COURTYARDS +COUSCOUS +COUSCOUSES +COUSIN +COUSINAGE +COUSINAGES +COUSINHOOD +COUSINHOODS +COUSINLY +COUSINRIES +COUSINRY +COUSINS +COUSINSHIP +COUSINSHIPS +COUTEAU +COUTEAUX +COUTER +COUTERS +COUTH +COUTHER +COUTHEST +COUTHIE +COUTHIER +COUTHIEST +COUTHS +COUTURE +COUTURES +COUTURIER +COUTURIERE +COUTURIERES +COUTURIERS +COUVADE +COUVADES +COVALENCE +COVALENCES +COVALENCIES +COVALENCY +COVALENT +COVALENTLY +COVARIANCE +COVARIANCES +COVARIANT +COVARIATE +COVARIATES +COVARIATION +COVARIATIONS +COVARIED +COVARIES +COVARY +COVARYING +COVE +COVED +COVELLINE +COVELLINES +COVELLITE +COVELLITES +COVEN +COVENANT +COVENANTAL +COVENANTED +COVENANTEE +COVENANTEES +COVENANTER +COVENANTERS +COVENANTING +COVENANTOR +COVENANTORS +COVENANTS +COVENS +COVER +COVERABLE +COVERAGE +COVERAGES +COVERALL +COVERALLED +COVERALLS +COVERED +COVERER +COVERERS +COVERING +COVERINGS +COVERLESS +COVERLET +COVERLETS +COVERLID +COVERLIDS +COVERS +COVERSINE +COVERSINES +COVERSLIP +COVERSLIPS +COVERT +COVERTLY +COVERTNESS +COVERTNESSES +COVERTS +COVERTURE +COVERTURES +COVERUP +COVERUPS +COVES +COVET +COVETABLE +COVETED +COVETER +COVETERS +COVETING +COVETINGLY +COVETOUS +COVETOUSLY +COVETOUSNESS +COVETOUSNESSES +COVETS +COVEY +COVEYS +COVIN +COVING +COVINGS +COVINS +COW +COWAGE +COWAGES +COWARD +COWARDICE +COWARDICES +COWARDLINESS +COWARDLINESSES +COWARDLY +COWARDS +COWBANE +COWBANES +COWBELL +COWBELLS +COWBERRIES +COWBERRY +COWBIND +COWBINDS +COWBIRD +COWBIRDS +COWBOY +COWBOYED +COWBOYING +COWBOYS +COWCATCHER +COWCATCHERS +COWED +COWEDLY +COWER +COWERED +COWERING +COWERS +COWFISH +COWFISHES +COWFLAP +COWFLAPS +COWFLOP +COWFLOPS +COWGIRL +COWGIRLS +COWHAGE +COWHAGES +COWHAND +COWHANDS +COWHERB +COWHERBS +COWHERD +COWHERDS +COWHIDE +COWHIDED +COWHIDES +COWHIDING +COWIER +COWIEST +COWING +COWINNER +COWINNERS +COWL +COWLED +COWLICK +COWLICKS +COWLING +COWLINGS +COWLS +COWLSTAFF +COWLSTAFFS +COWLSTAVES +COWMAN +COWMEN +COWORKER +COWORKERS +COWPAT +COWPATS +COWPEA +COWPEAS +COWPIE +COWPIES +COWPLOP +COWPLOPS +COWPOKE +COWPOKES +COWPOX +COWPOXES +COWPUNCHER +COWPUNCHERS +COWRIE +COWRIES +COWRITE +COWRITER +COWRITERS +COWRITES +COWRITING +COWRITTEN +COWROTE +COWRY +COWS +COWSHED +COWSHEDS +COWSKIN +COWSKINS +COWSLIP +COWSLIPS +COWY +COX +COXA +COXAE +COXAL +COXALGIA +COXALGIAS +COXALGIC +COXALGIES +COXALGY +COXCOMB +COXCOMBIC +COXCOMBICAL +COXCOMBRIES +COXCOMBRY +COXCOMBS +COXED +COXES +COXING +COXITIDES +COXITIS +COXLESS +COXSWAIN +COXSWAINED +COXSWAINING +COXSWAINS +COY +COYDOG +COYDOGS +COYED +COYER +COYEST +COYING +COYISH +COYLY +COYNESS +COYNESSES +COYOTE +COYOTES +COYOTILLO +COYOTILLOS +COYPOU +COYPOUS +COYPU +COYPUS +COYS +COZ +COZEN +COZENAGE +COZENAGES +COZENED +COZENER +COZENERS +COZENING +COZENS +COZES +COZEY +COZEYS +COZIE +COZIED +COZIER +COZIES +COZIEST +COZILY +COZINESS +COZINESSES +COZY +COZYING +COZZES +CRAAL +CRAALED +CRAALING +CRAALS +CRAB +CRABAPPLE +CRABAPPLES +CRABBED +CRABBEDLY +CRABBEDNESS +CRABBEDNESSES +CRABBER +CRABBERS +CRABBIER +CRABBIEST +CRABBILY +CRABBING +CRABBY +CRABEATER +CRABEATERS +CRABGRASS +CRABGRASSES +CRABLIKE +CRABMEAT +CRABMEATS +CRABS +CRABSTICK +CRABSTICKS +CRABWISE +CRACK +CRACKAJACK +CRACKAJACKS +CRACKBACK +CRACKBACKS +CRACKBRAIN +CRACKBRAINED +CRACKBRAINS +CRACKDOWN +CRACKDOWNS +CRACKED +CRACKER +CRACKERJACK +CRACKERJACKS +CRACKERS +CRACKHEAD +CRACKHEADS +CRACKING +CRACKINGS +CRACKLE +CRACKLED +CRACKLES +CRACKLEWARE +CRACKLEWARES +CRACKLIER +CRACKLIEST +CRACKLING +CRACKLINGS +CRACKLY +CRACKNEL +CRACKNELS +CRACKPOT +CRACKPOTS +CRACKS +CRACKSMAN +CRACKSMEN +CRACKUP +CRACKUPS +CRACKY +CRADLE +CRADLED +CRADLER +CRADLERS +CRADLES +CRADLESONG +CRADLESONGS +CRADLING +CRAFT +CRAFTED +CRAFTER +CRAFTERS +CRAFTIER +CRAFTIEST +CRAFTILY +CRAFTINESS +CRAFTINESSES +CRAFTING +CRAFTS +CRAFTSMAN +CRAFTSMANLIKE +CRAFTSMANLY +CRAFTSMANSHIP +CRAFTSMANSHIPS +CRAFTSMEN +CRAFTSPEOPLE +CRAFTSPERSON +CRAFTSPERSONS +CRAFTSWOMAN +CRAFTSWOMEN +CRAFTWORK +CRAFTWORKS +CRAFTY +CRAG +CRAGGED +CRAGGIER +CRAGGIEST +CRAGGILY +CRAGGINESS +CRAGGINESSES +CRAGGY +CRAGS +CRAGSMAN +CRAGSMEN +CRAKE +CRAKES +CRAM +CRAMBE +CRAMBES +CRAMBO +CRAMBOES +CRAMBOS +CRAMMED +CRAMMER +CRAMMERS +CRAMMING +CRAMOISIE +CRAMOISIES +CRAMOISY +CRAMP +CRAMPED +CRAMPFISH +CRAMPFISHES +CRAMPIER +CRAMPIEST +CRAMPING +CRAMPIT +CRAMPITS +CRAMPON +CRAMPONS +CRAMPOON +CRAMPOONS +CRAMPS +CRAMPY +CRAMS +CRANBERRIES +CRANBERRY +CRANCH +CRANCHED +CRANCHES +CRANCHING +CRANE +CRANED +CRANES +CRANESBILL +CRANESBILLS +CRANIA +CRANIAL +CRANIALLY +CRANIATE +CRANIATES +CRANING +CRANIOCEREBRAL +CRANIOFACIAL +CRANIOLOGIES +CRANIOLOGY +CRANIOMETRIES +CRANIOMETRY +CRANIOSACRAL +CRANIOTOMIES +CRANIOTOMY +CRANIUM +CRANIUMS +CRANK +CRANKCASE +CRANKCASES +CRANKED +CRANKER +CRANKEST +CRANKIER +CRANKIEST +CRANKILY +CRANKINESS +CRANKINESSES +CRANKING +CRANKISH +CRANKLE +CRANKLED +CRANKLES +CRANKLING +CRANKLY +CRANKOUS +CRANKPIN +CRANKPINS +CRANKS +CRANKSHAFT +CRANKSHAFTS +CRANKY +CRANNIED +CRANNIES +CRANNOG +CRANNOGE +CRANNOGES +CRANNOGS +CRANNY +CRANREUCH +CRANREUCHS +CRAP +CRAPE +CRAPED +CRAPELIKE +CRAPES +CRAPING +CRAPOLA +CRAPOLAS +CRAPPED +CRAPPER +CRAPPERS +CRAPPIE +CRAPPIER +CRAPPIES +CRAPPIEST +CRAPPING +CRAPPY +CRAPS +CRAPSHOOT +CRAPSHOOTER +CRAPSHOOTERS +CRAPSHOOTS +CRAPULENT +CRAPULOUS +CRASES +CRASH +CRASHED +CRASHER +CRASHERS +CRASHES +CRASHING +CRASHINGLY +CRASHWORTHINESS +CRASHWORTHY +CRASIS +CRASS +CRASSER +CRASSEST +CRASSITUDE +CRASSITUDES +CRASSLY +CRASSNESS +CRASSNESSES +CRATCH +CRATCHES +CRATE +CRATED +CRATER +CRATERED +CRATERING +CRATERINGS +CRATERLET +CRATERLETS +CRATERLIKE +CRATERS +CRATES +CRATING +CRATON +CRATONIC +CRATONS +CRAUNCH +CRAUNCHED +CRAUNCHES +CRAUNCHING +CRAVAT +CRAVATS +CRAVE +CRAVED +CRAVEN +CRAVENED +CRAVENING +CRAVENLY +CRAVENNESS +CRAVENNESSES +CRAVENS +CRAVER +CRAVERS +CRAVES +CRAVING +CRAVINGS +CRAW +CRAWDAD +CRAWDADDIES +CRAWDADDY +CRAWDADS +CRAWFISH +CRAWFISHED +CRAWFISHES +CRAWFISHING +CRAWL +CRAWLED +CRAWLER +CRAWLERS +CRAWLIER +CRAWLIEST +CRAWLING +CRAWLS +CRAWLWAY +CRAWLWAYS +CRAWLY +CRAWS +CRAYFISH +CRAYFISHES +CRAYON +CRAYONED +CRAYONER +CRAYONERS +CRAYONING +CRAYONIST +CRAYONISTS +CRAYONS +CRAZE +CRAZED +CRAZES +CRAZIER +CRAZIES +CRAZIEST +CRAZILY +CRAZINESS +CRAZINESSES +CRAZING +CRAZY +CRAZYWEED +CRAZYWEEDS +CREAK +CREAKED +CREAKIER +CREAKIEST +CREAKILY +CREAKINESS +CREAKINESSES +CREAKING +CREAKS +CREAKY +CREAM +CREAMCUPS +CREAMED +CREAMER +CREAMERIES +CREAMERS +CREAMERY +CREAMIER +CREAMIEST +CREAMILY +CREAMINESS +CREAMINESSES +CREAMING +CREAMPUFF +CREAMPUFFS +CREAMS +CREAMWARE +CREAMWARES +CREAMY +CREASE +CREASED +CREASELESS +CREASER +CREASERS +CREASES +CREASIER +CREASIEST +CREASING +CREASY +CREATABLE +CREATE +CREATED +CREATES +CREATIN +CREATINE +CREATINES +CREATING +CREATININE +CREATININES +CREATINS +CREATION +CREATIONISM +CREATIONISMS +CREATIONIST +CREATIONISTS +CREATIONS +CREATIVE +CREATIVELY +CREATIVENESS +CREATIVENESSES +CREATIVES +CREATIVITIES +CREATIVITY +CREATOR +CREATORS +CREATURAL +CREATURE +CREATUREHOOD +CREATUREHOODS +CREATURELINESS +CREATURELY +CREATURES +CRECHE +CRECHES +CRED +CREDAL +CREDENCE +CREDENCES +CREDENDA +CREDENDUM +CREDENT +CREDENTIAL +CREDENTIALED +CREDENTIALING +CREDENTIALISM +CREDENTIALISMS +CREDENTIALLED +CREDENTIALLING +CREDENTIALS +CREDENZA +CREDENZAS +CREDIBILITIES +CREDIBILITY +CREDIBLE +CREDIBLY +CREDIT +CREDITABILITIES +CREDITABILITY +CREDITABLE +CREDITABLENESS +CREDITABLY +CREDITED +CREDITING +CREDITOR +CREDITORS +CREDITS +CREDITWORTHY +CREDO +CREDOS +CREDS +CREDULITIES +CREDULITY +CREDULOUS +CREDULOUSLY +CREDULOUSNESS +CREDULOUSNESSES +CREED +CREEDAL +CREEDS +CREEK +CREEKS +CREEL +CREELED +CREELING +CREELS +CREEP +CREEPAGE +CREEPAGES +CREEPED +CREEPER +CREEPERS +CREEPIE +CREEPIER +CREEPIES +CREEPIEST +CREEPILY +CREEPINESS +CREEPINESSES +CREEPING +CREEPS +CREEPY +CREESE +CREESES +CREESH +CREESHED +CREESHES +CREESHING +CREMAINS +CREMATE +CREMATED +CREMATES +CREMATING +CREMATION +CREMATIONS +CREMATOR +CREMATORIA +CREMATORIES +CREMATORIUM +CREMATORIUMS +CREMATORS +CREMATORY +CREME +CREMES +CREMINI +CREMINIS +CRENATE +CRENATED +CRENATELY +CRENATION +CRENATIONS +CRENATURE +CRENATURES +CRENEL +CRENELATE +CRENELATED +CRENELATES +CRENELATING +CRENELATION +CRENELATIONS +CRENELED +CRENELING +CRENELLATED +CRENELLATION +CRENELLATIONS +CRENELLE +CRENELLED +CRENELLES +CRENELLING +CRENELS +CRENSHAW +CRENSHAWS +CRENULATE +CRENULATED +CRENULATION +CRENULATIONS +CREODONT +CREODONTS +CREOLE +CREOLES +CREOLISE +CREOLISED +CREOLISES +CREOLISING +CREOLIZATION +CREOLIZATIONS +CREOLIZE +CREOLIZED +CREOLIZES +CREOLIZING +CREOSOL +CREOSOLS +CREOSOTE +CREOSOTED +CREOSOTES +CREOSOTIC +CREOSOTING +CREPE +CREPED +CREPES +CREPEY +CREPIER +CREPIEST +CREPING +CREPITANT +CREPITATE +CREPITATED +CREPITATES +CREPITATING +CREPITATION +CREPITATIONS +CREPON +CREPONS +CREPT +CREPUSCLE +CREPUSCLES +CREPUSCULAR +CREPUSCULE +CREPUSCULES +CREPY +CRESCENDI +CRESCENDO +CRESCENDOED +CRESCENDOES +CRESCENDOING +CRESCENDOS +CRESCENT +CRESCENTIC +CRESCENTS +CRESCIVE +CRESCIVELY +CRESOL +CRESOLS +CRESS +CRESSES +CRESSET +CRESSETS +CRESSY +CREST +CRESTAL +CRESTED +CRESTFALLEN +CRESTFALLENLY +CRESTFALLENNESS +CRESTING +CRESTINGS +CRESTLESS +CRESTS +CRESYL +CRESYLIC +CRESYLS +CRETIC +CRETICS +CRETIN +CRETINISM +CRETINISMS +CRETINOID +CRETINOUS +CRETINS +CRETONNE +CRETONNES +CREVALLE +CREVALLES +CREVASSE +CREVASSED +CREVASSES +CREVASSING +CREVICE +CREVICED +CREVICES +CREW +CREWCUT +CREWCUTS +CREWED +CREWEL +CREWELS +CREWELWORK +CREWELWORKS +CREWING +CREWLESS +CREWMAN +CREWMATE +CREWMATES +CREWMEN +CREWNECK +CREWNECKS +CREWS +CRIB +CRIBBAGE +CRIBBAGES +CRIBBED +CRIBBER +CRIBBERS +CRIBBING +CRIBBINGS +CRIBBLED +CRIBRIFORM +CRIBROUS +CRIBS +CRIBWORK +CRIBWORKS +CRICETID +CRICETIDS +CRICK +CRICKED +CRICKET +CRICKETED +CRICKETER +CRICKETERS +CRICKETING +CRICKETS +CRICKEY +CRICKING +CRICKS +CRICOID +CRICOIDS +CRIED +CRIER +CRIERS +CRIES +CRIKEY +CRIME +CRIMELESS +CRIMES +CRIMINAL +CRIMINALISTICS +CRIMINALITIES +CRIMINALITY +CRIMINALIZATION +CRIMINALIZE +CRIMINALIZED +CRIMINALIZES +CRIMINALIZING +CRIMINALLY +CRIMINALS +CRIMINATE +CRIMINATED +CRIMINATES +CRIMINATING +CRIMINATION +CRIMINATIONS +CRIMINE +CRIMINI +CRIMINIS +CRIMINOLOGICAL +CRIMINOLOGIES +CRIMINOLOGIST +CRIMINOLOGISTS +CRIMINOLOGY +CRIMINOUS +CRIMINY +CRIMMER +CRIMMERS +CRIMP +CRIMPED +CRIMPER +CRIMPERS +CRIMPIER +CRIMPIEST +CRIMPING +CRIMPLE +CRIMPLED +CRIMPLES +CRIMPLING +CRIMPS +CRIMPY +CRIMSON +CRIMSONED +CRIMSONING +CRIMSONS +CRINGE +CRINGED +CRINGER +CRINGERS +CRINGES +CRINGING +CRINGLE +CRINGLES +CRINITE +CRINITES +CRINKLE +CRINKLED +CRINKLES +CRINKLIER +CRINKLIEST +CRINKLING +CRINKLY +CRINOID +CRINOIDAL +CRINOIDS +CRINOLINE +CRINOLINED +CRINOLINES +CRINUM +CRINUMS +CRIOLLO +CRIOLLOS +CRIPE +CRIPES +CRIPPLE +CRIPPLED +CRIPPLER +CRIPPLERS +CRIPPLES +CRIPPLING +CRIPPLINGLY +CRIS +CRISES +CRISIC +CRISIS +CRISP +CRISPATE +CRISPATED +CRISPBREAD +CRISPBREADS +CRISPED +CRISPEN +CRISPENED +CRISPENING +CRISPENS +CRISPER +CRISPERS +CRISPEST +CRISPHEAD +CRISPHEADS +CRISPIER +CRISPIEST +CRISPILY +CRISPINESS +CRISPINESSES +CRISPING +CRISPLY +CRISPNESS +CRISPNESSES +CRISPS +CRISPY +CRISSA +CRISSAL +CRISSCROSS +CRISSCROSSED +CRISSCROSSES +CRISSCROSSING +CRISSUM +CRISTA +CRISTAE +CRISTATE +CRISTATED +CRIT +CRITERIA +CRITERIAL +CRITERION +CRITERIONS +CRITERIUM +CRITERIUMS +CRITIC +CRITICAL +CRITICALITIES +CRITICALITY +CRITICALLY +CRITICALNESS +CRITICALNESSES +CRITICASTER +CRITICASTERS +CRITICISE +CRITICISED +CRITICISES +CRITICISING +CRITICISM +CRITICISMS +CRITICIZABLE +CRITICIZE +CRITICIZED +CRITICIZER +CRITICIZERS +CRITICIZES +CRITICIZING +CRITICS +CRITIQUE +CRITIQUED +CRITIQUES +CRITIQUING +CRITS +CRITTER +CRITTERS +CRITTUR +CRITTURS +CROAK +CROAKED +CROAKER +CROAKERS +CROAKIER +CROAKIEST +CROAKILY +CROAKING +CROAKS +CROAKY +CROC +CROCEIN +CROCEINE +CROCEINES +CROCEINS +CROCHET +CROCHETED +CROCHETER +CROCHETERS +CROCHETING +CROCHETS +CROCI +CROCIDOLITE +CROCIDOLITES +CROCINE +CROCK +CROCKED +CROCKERIES +CROCKERY +CROCKET +CROCKETED +CROCKETS +CROCKING +CROCKPOT +CROCKPOTS +CROCKS +CROCODILE +CROCODILES +CROCODILIAN +CROCODILIANS +CROCOITE +CROCOITES +CROCS +CROCUS +CROCUSES +CROFT +CROFTER +CROFTERS +CROFTS +CROISSANT +CROISSANTS +CROJIK +CROJIKS +CROMLECH +CROMLECHS +CRONE +CRONES +CRONIES +CRONISH +CRONY +CRONYISM +CRONYISMS +CROOK +CROOKBACK +CROOKBACKED +CROOKBACKS +CROOKED +CROOKEDER +CROOKEDEST +CROOKEDLY +CROOKEDNESS +CROOKEDNESSES +CROOKER +CROOKERIES +CROOKERY +CROOKEST +CROOKING +CROOKNECK +CROOKNECKS +CROOKS +CROON +CROONED +CROONER +CROONERS +CROONING +CROONS +CROP +CROPLAND +CROPLANDS +CROPLESS +CROPPED +CROPPER +CROPPERS +CROPPIE +CROPPIES +CROPPING +CROPS +CROQUET +CROQUETED +CROQUETING +CROQUETS +CROQUETTE +CROQUETTES +CROQUIGNOLE +CROQUIGNOLES +CROQUIS +CRORE +CRORES +CROSIER +CROSIERS +CROSS +CROSSABILITIES +CROSSABILITY +CROSSABLE +CROSSARM +CROSSARMS +CROSSBANDED +CROSSBANDING +CROSSBANDINGS +CROSSBAR +CROSSBARRED +CROSSBARRING +CROSSBARS +CROSSBEAM +CROSSBEAMS +CROSSBEARER +CROSSBEARERS +CROSSBILL +CROSSBILLS +CROSSBONES +CROSSBOW +CROSSBOWMAN +CROSSBOWMEN +CROSSBOWS +CROSSBRED +CROSSBREDS +CROSSBREED +CROSSBREEDING +CROSSBREEDS +CROSSBUCK +CROSSBUCKS +CROSSCOURT +CROSSCURRENT +CROSSCURRENTS +CROSSCUT +CROSSCUTS +CROSSCUTTING +CROSSCUTTINGS +CROSSE +CROSSED +CROSSER +CROSSERS +CROSSES +CROSSEST +CROSSFIRE +CROSSFIRES +CROSSHAIR +CROSSHAIRS +CROSSHATCH +CROSSHATCHED +CROSSHATCHES +CROSSHATCHING +CROSSHEAD +CROSSHEADS +CROSSING +CROSSINGS +CROSSJACK +CROSSJACKS +CROSSLET +CROSSLETS +CROSSLINGUISTIC +CROSSLY +CROSSNESS +CROSSNESSES +CROSSOPTERYGIAN +CROSSOVER +CROSSOVERS +CROSSPATCH +CROSSPATCHES +CROSSPIECE +CROSSPIECES +CROSSROAD +CROSSROADS +CROSSRUFF +CROSSRUFFED +CROSSRUFFING +CROSSRUFFS +CROSSTALK +CROSSTALKS +CROSSTIE +CROSSTIED +CROSSTIES +CROSSTOWN +CROSSTREE +CROSSTREES +CROSSWALK +CROSSWALKS +CROSSWAY +CROSSWAYS +CROSSWIND +CROSSWINDS +CROSSWISE +CROSSWORD +CROSSWORDS +CROSTINI +CROSTINO +CROTCH +CROTCHED +CROTCHES +CROTCHET +CROTCHETINESS +CROTCHETINESSES +CROTCHETS +CROTCHETY +CROTON +CROTONBUG +CROTONBUGS +CROTONS +CROUCH +CROUCHED +CROUCHES +CROUCHING +CROUP +CROUPE +CROUPES +CROUPIER +CROUPIERS +CROUPIEST +CROUPILY +CROUPOUS +CROUPS +CROUPY +CROUSE +CROUSELY +CROUSTADE +CROUSTADES +CROUTE +CROUTES +CROUTON +CROUTONS +CROW +CROWBAR +CROWBARRED +CROWBARRING +CROWBARS +CROWBERRIES +CROWBERRY +CROWD +CROWDED +CROWDEDLY +CROWDEDNESS +CROWDEDNESSES +CROWDER +CROWDERS +CROWDIE +CROWDIES +CROWDING +CROWDS +CROWDY +CROWED +CROWER +CROWERS +CROWFEET +CROWFOOT +CROWFOOTS +CROWING +CROWKEEPER +CROWKEEPERS +CROWN +CROWNED +CROWNER +CROWNERS +CROWNET +CROWNETS +CROWNING +CROWNLESS +CROWNS +CROWS +CROWSFEET +CROWSFOOT +CROWSTEP +CROWSTEPPED +CROWSTEPS +CROZE +CROZER +CROZERS +CROZES +CROZIER +CROZIERS +CRU +CRUCES +CRUCIAL +CRUCIALLY +CRUCIAN +CRUCIANS +CRUCIATE +CRUCIBLE +CRUCIBLES +CRUCIFER +CRUCIFEROUS +CRUCIFERS +CRUCIFIED +CRUCIFIER +CRUCIFIERS +CRUCIFIES +CRUCIFIX +CRUCIFIXES +CRUCIFIXION +CRUCIFIXIONS +CRUCIFORM +CRUCIFORMS +CRUCIFY +CRUCIFYING +CRUCK +CRUCKS +CRUD +CRUDDED +CRUDDIER +CRUDDIEST +CRUDDING +CRUDDY +CRUDE +CRUDELY +CRUDENESS +CRUDENESSES +CRUDER +CRUDES +CRUDEST +CRUDITES +CRUDITIES +CRUDITY +CRUDS +CRUEL +CRUELER +CRUELEST +CRUELLER +CRUELLEST +CRUELLY +CRUELNESS +CRUELNESSES +CRUELTIES +CRUELTY +CRUET +CRUETS +CRUISE +CRUISED +CRUISER +CRUISERS +CRUISES +CRUISING +CRUISINGS +CRULLER +CRULLERS +CRUMB +CRUMBED +CRUMBER +CRUMBERS +CRUMBIER +CRUMBIEST +CRUMBING +CRUMBLE +CRUMBLED +CRUMBLES +CRUMBLIER +CRUMBLIEST +CRUMBLINESS +CRUMBLINESSES +CRUMBLING +CRUMBLINGS +CRUMBLY +CRUMBS +CRUMBUM +CRUMBUMS +CRUMBY +CRUMHORN +CRUMHORNS +CRUMMIE +CRUMMIER +CRUMMIES +CRUMMIEST +CRUMMINESS +CRUMMINESSES +CRUMMY +CRUMP +CRUMPED +CRUMPET +CRUMPETS +CRUMPING +CRUMPLE +CRUMPLED +CRUMPLES +CRUMPLIER +CRUMPLIEST +CRUMPLING +CRUMPLY +CRUMPS +CRUNCH +CRUNCHABLE +CRUNCHED +CRUNCHER +CRUNCHERS +CRUNCHES +CRUNCHIER +CRUNCHIEST +CRUNCHILY +CRUNCHINESS +CRUNCHINESSES +CRUNCHING +CRUNCHY +CRUNODAL +CRUNODE +CRUNODES +CRUOR +CRUORS +CRUPPER +CRUPPERS +CRURA +CRURAL +CRUS +CRUSADE +CRUSADED +CRUSADER +CRUSADERS +CRUSADES +CRUSADING +CRUSADO +CRUSADOES +CRUSADOS +CRUSE +CRUSES +CRUSET +CRUSETS +CRUSH +CRUSHABLE +CRUSHED +CRUSHER +CRUSHERS +CRUSHES +CRUSHING +CRUSHINGLY +CRUSHPROOF +CRUSILY +CRUST +CRUSTACEA +CRUSTACEAN +CRUSTACEANS +CRUSTACEOUS +CRUSTAL +CRUSTED +CRUSTIER +CRUSTIEST +CRUSTILY +CRUSTINESS +CRUSTINESSES +CRUSTING +CRUSTLESS +CRUSTOSE +CRUSTS +CRUSTY +CRUTCH +CRUTCHED +CRUTCHES +CRUTCHING +CRUX +CRUXES +CRUZADO +CRUZADOES +CRUZADOS +CRUZEIRO +CRUZEIROS +CRWTH +CRWTHS +CRY +CRYBABIES +CRYBABY +CRYING +CRYINGLY +CRYOBANK +CRYOBANKS +CRYOBIOLOGICAL +CRYOBIOLOGIES +CRYOBIOLOGIST +CRYOBIOLOGISTS +CRYOBIOLOGY +CRYOGEN +CRYOGENIC +CRYOGENICALLY +CRYOGENICS +CRYOGENIES +CRYOGENS +CRYOGENY +CRYOLITE +CRYOLITES +CRYOMETER +CRYOMETERS +CRYONIC +CRYONICS +CRYOPHILIC +CRYOPHYTE +CRYOPHYTES +CRYOPRESERVE +CRYOPRESERVED +CRYOPRESERVES +CRYOPRESERVING +CRYOPROBE +CRYOPROBES +CRYOPROTECTANT +CRYOPROTECTANTS +CRYOPROTECTIVE +CRYOSCOPE +CRYOSCOPES +CRYOSCOPIC +CRYOSCOPIES +CRYOSCOPY +CRYOSTAT +CRYOSTATIC +CRYOSTATS +CRYOSURGEON +CRYOSURGEONS +CRYOSURGERIES +CRYOSURGERY +CRYOSURGICAL +CRYOTHERAPIES +CRYOTHERAPY +CRYOTRON +CRYOTRONS +CRYPT +CRYPTAL +CRYPTANALYSES +CRYPTANALYSIS +CRYPTANALYST +CRYPTANALYSTS +CRYPTANALYTIC +CRYPTANALYTICAL +CRYPTARITHM +CRYPTARITHMS +CRYPTIC +CRYPTICAL +CRYPTICALLY +CRYPTO +CRYPTOCOCCAL +CRYPTOCOCCI +CRYPTOCOCCOSES +CRYPTOCOCCOSIS +CRYPTOCOCCUS +CRYPTOGAM +CRYPTOGAMIC +CRYPTOGAMOUS +CRYPTOGAMS +CRYPTOGENIC +CRYPTOGRAM +CRYPTOGRAMS +CRYPTOGRAPH +CRYPTOGRAPHER +CRYPTOGRAPHERS +CRYPTOGRAPHIC +CRYPTOGRAPHIES +CRYPTOGRAPHS +CRYPTOGRAPHY +CRYPTOLOGIC +CRYPTOLOGICAL +CRYPTOLOGIES +CRYPTOLOGIST +CRYPTOLOGISTS +CRYPTOLOGY +CRYPTOMERIA +CRYPTOMERIAS +CRYPTONYM +CRYPTONYMS +CRYPTORCHID +CRYPTORCHIDISM +CRYPTORCHIDISMS +CRYPTORCHIDS +CRYPTORCHISM +CRYPTORCHISMS +CRYPTOS +CRYPTOSPORIDIA +CRYPTOSPORIDIUM +CRYPTOZOOLOGIES +CRYPTOZOOLOGIST +CRYPTOZOOLOGY +CRYPTS +CRYSTAL +CRYSTALIZE +CRYSTALIZED +CRYSTALIZES +CRYSTALIZING +CRYSTALLINE +CRYSTALLINITIES +CRYSTALLINITY +CRYSTALLISE +CRYSTALLISED +CRYSTALLISES +CRYSTALLISING +CRYSTALLITE +CRYSTALLITES +CRYSTALLIZABLE +CRYSTALLIZATION +CRYSTALLIZE +CRYSTALLIZED +CRYSTALLIZER +CRYSTALLIZERS +CRYSTALLIZES +CRYSTALLIZING +CRYSTALLOGRAPHY +CRYSTALLOID +CRYSTALLOIDAL +CRYSTALLOIDS +CRYSTALS +CTENIDIA +CTENIDIUM +CTENOID +CTENOPHORAN +CTENOPHORANS +CTENOPHORE +CTENOPHORES +CUADRILLA +CUADRILLAS +CUATRO +CUATROS +CUB +CUBAGE +CUBAGES +CUBANELLE +CUBANELLES +CUBATURE +CUBATURES +CUBBIES +CUBBISH +CUBBY +CUBBYHOLE +CUBBYHOLES +CUBE +CUBEB +CUBEBS +CUBED +CUBER +CUBERS +CUBES +CUBIC +CUBICAL +CUBICALLY +CUBICITIES +CUBICITY +CUBICLE +CUBICLES +CUBICLY +CUBICS +CUBICULA +CUBICULUM +CUBIFORM +CUBING +CUBISM +CUBISMS +CUBIST +CUBISTIC +CUBISTS +CUBIT +CUBITAL +CUBITI +CUBITS +CUBITUS +CUBOID +CUBOIDAL +CUBOIDS +CUBS +CUCKOLD +CUCKOLDED +CUCKOLDING +CUCKOLDRIES +CUCKOLDRY +CUCKOLDS +CUCKOO +CUCKOOED +CUCKOOFLOWER +CUCKOOFLOWERS +CUCKOOING +CUCKOOPINT +CUCKOOPINTS +CUCKOOS +CUCULLATE +CUCUMBER +CUCUMBERS +CUCURBIT +CUCURBITS +CUD +CUDBEAR +CUDBEARS +CUDDIE +CUDDIES +CUDDLE +CUDDLED +CUDDLER +CUDDLERS +CUDDLES +CUDDLESOME +CUDDLIER +CUDDLIEST +CUDDLING +CUDDLY +CUDDY +CUDGEL +CUDGELED +CUDGELER +CUDGELERS +CUDGELING +CUDGELLED +CUDGELLING +CUDGELS +CUDS +CUDWEED +CUDWEEDS +CUE +CUED +CUEING +CUES +CUESTA +CUESTAS +CUFF +CUFFED +CUFFING +CUFFLESS +CUFFLINK +CUFFLINKS +CUFFS +CUIF +CUIFS +CUING +CUIRASS +CUIRASSED +CUIRASSES +CUIRASSIER +CUIRASSIERS +CUIRASSING +CUISH +CUISHES +CUISINART +CUISINARTS +CUISINE +CUISINES +CUISSE +CUISSES +CUITTLE +CUITTLED +CUITTLES +CUITTLING +CUKE +CUKES +CULCH +CULCHES +CULET +CULETS +CULEX +CULEXES +CULICES +CULICID +CULICIDS +CULICINE +CULICINES +CULINARIAN +CULINARIANS +CULINARILY +CULINARY +CULL +CULLAY +CULLAYS +CULLED +CULLENDER +CULLENDERS +CULLER +CULLERS +CULLET +CULLETS +CULLIED +CULLIES +CULLING +CULLION +CULLIONS +CULLIS +CULLISES +CULLS +CULLY +CULLYING +CULM +CULMED +CULMINANT +CULMINATE +CULMINATED +CULMINATES +CULMINATING +CULMINATION +CULMINATIONS +CULMING +CULMS +CULOTTE +CULOTTES +CULPA +CULPABILITIES +CULPABILITY +CULPABLE +CULPABLENESS +CULPABLENESSES +CULPABLY +CULPAE +CULPRIT +CULPRITS +CULT +CULTCH +CULTCHES +CULTI +CULTIC +CULTIGEN +CULTIGENS +CULTISH +CULTISHLY +CULTISHNESS +CULTISHNESSES +CULTISM +CULTISMS +CULTIST +CULTISTS +CULTIVABILITIES +CULTIVABILITY +CULTIVABLE +CULTIVAR +CULTIVARS +CULTIVATABLE +CULTIVATE +CULTIVATED +CULTIVATES +CULTIVATING +CULTIVATION +CULTIVATIONS +CULTIVATOR +CULTIVATORS +CULTLIKE +CULTRATE +CULTRATED +CULTS +CULTURAL +CULTURALLY +CULTURATI +CULTURE +CULTURED +CULTURES +CULTURING +CULTURIST +CULTURISTS +CULTUS +CULTUSES +CULVER +CULVERIN +CULVERINS +CULVERS +CULVERT +CULVERTS +CUM +CUMARIN +CUMARINS +CUMBER +CUMBERBUND +CUMBERBUNDS +CUMBERED +CUMBERER +CUMBERERS +CUMBERING +CUMBERS +CUMBERSOME +CUMBERSOMELY +CUMBERSOMENESS +CUMBIA +CUMBIAS +CUMBRANCE +CUMBRANCES +CUMBROUS +CUMBROUSLY +CUMBROUSNESS +CUMBROUSNESSES +CUMIN +CUMINS +CUMMER +CUMMERBUND +CUMMERBUNDS +CUMMERS +CUMMIN +CUMMINS +CUMQUAT +CUMQUATS +CUMSHAW +CUMSHAWS +CUMULATE +CUMULATED +CUMULATES +CUMULATING +CUMULATION +CUMULATIONS +CUMULATIVE +CUMULATIVELY +CUMULATIVENESS +CUMULI +CUMULIFORM +CUMULONIMBI +CUMULONIMBUS +CUMULONIMBUSES +CUMULOUS +CUMULUS +CUNCTATION +CUNCTATIONS +CUNCTATIVE +CUNCTATOR +CUNCTATORS +CUNDUM +CUNDUMS +CUNEAL +CUNEATE +CUNEATED +CUNEATELY +CUNEATIC +CUNEIFORM +CUNEIFORMS +CUNIFORM +CUNIFORMS +CUNNER +CUNNERS +CUNNILINCTUS +CUNNILINCTUSES +CUNNILINGUS +CUNNILINGUSES +CUNNING +CUNNINGER +CUNNINGEST +CUNNINGLY +CUNNINGNESS +CUNNINGNESSES +CUNNINGS +CUNT +CUNTS +CUP +CUPBEARER +CUPBEARERS +CUPBOARD +CUPBOARDS +CUPCAKE +CUPCAKES +CUPEL +CUPELED +CUPELER +CUPELERS +CUPELING +CUPELLATION +CUPELLATIONS +CUPELLED +CUPELLER +CUPELLERS +CUPELLING +CUPELS +CUPFERRON +CUPFERRONS +CUPFUL +CUPFULS +CUPID +CUPIDITIES +CUPIDITY +CUPIDS +CUPLIKE +CUPOLA +CUPOLAED +CUPOLAING +CUPOLAS +CUPPA +CUPPAS +CUPPED +CUPPER +CUPPERS +CUPPIER +CUPPIEST +CUPPING +CUPPINGS +CUPPY +CUPREOUS +CUPRIC +CUPRIFEROUS +CUPRITE +CUPRITES +CUPRONICKEL +CUPRONICKELS +CUPROUS +CUPRUM +CUPRUMS +CUPS +CUPSFUL +CUPULA +CUPULAE +CUPULAR +CUPULATE +CUPULE +CUPULES +CUR +CURABILITIES +CURABILITY +CURABLE +CURABLENESS +CURABLENESSES +CURABLY +CURACAO +CURACAOS +CURACIES +CURACOA +CURACOAS +CURACY +CURAGH +CURAGHS +CURANDERA +CURANDERAS +CURANDERO +CURANDEROS +CURARA +CURARAS +CURARE +CURARES +CURARI +CURARINE +CURARINES +CURARIS +CURARIZATION +CURARIZATIONS +CURARIZE +CURARIZED +CURARIZES +CURARIZING +CURASSOW +CURASSOWS +CURATE +CURATED +CURATES +CURATING +CURATIVE +CURATIVELY +CURATIVES +CURATOR +CURATORIAL +CURATORS +CURATORSHIP +CURATORSHIPS +CURB +CURBABLE +CURBED +CURBER +CURBERS +CURBING +CURBINGS +CURBS +CURBSIDE +CURBSIDES +CURBSTONE +CURBSTONES +CURCH +CURCHES +CURCULIO +CURCULIOS +CURCUMA +CURCUMAS +CURD +CURDED +CURDIER +CURDIEST +CURDING +CURDLE +CURDLED +CURDLER +CURDLERS +CURDLES +CURDLING +CURDS +CURDY +CURE +CURED +CURELESS +CURER +CURERS +CURES +CURET +CURETS +CURETTAGE +CURETTAGES +CURETTE +CURETTED +CURETTEMENT +CURETTEMENTS +CURETTES +CURETTING +CURF +CURFEW +CURFEWS +CURFS +CURIA +CURIAE +CURIAL +CURIE +CURIES +CURING +CURIO +CURIOS +CURIOSA +CURIOSITIES +CURIOSITY +CURIOUS +CURIOUSER +CURIOUSEST +CURIOUSLY +CURIOUSNESS +CURIOUSNESSES +CURITE +CURITES +CURIUM +CURIUMS +CURL +CURLED +CURLER +CURLERS +CURLEW +CURLEWS +CURLICUE +CURLICUED +CURLICUES +CURLICUING +CURLIER +CURLIEST +CURLILY +CURLINESS +CURLINESSES +CURLING +CURLINGS +CURLPAPER +CURLPAPERS +CURLS +CURLY +CURLYCUE +CURLYCUES +CURMUDGEON +CURMUDGEONLY +CURMUDGEONS +CURN +CURNS +CURR +CURRACH +CURRACHS +CURRAGH +CURRAGHS +CURRAJONG +CURRAJONGS +CURRAN +CURRANS +CURRANT +CURRANTS +CURRED +CURREJONG +CURREJONGS +CURRENCIES +CURRENCY +CURRENT +CURRENTLY +CURRENTNESS +CURRENTNESSES +CURRENTS +CURRICLE +CURRICLES +CURRICULA +CURRICULAR +CURRICULUM +CURRICULUMS +CURRIE +CURRIED +CURRIER +CURRIERIES +CURRIERS +CURRIERY +CURRIES +CURRIJONG +CURRIJONGS +CURRING +CURRISH +CURRISHLY +CURRS +CURRY +CURRYCOMB +CURRYCOMBED +CURRYCOMBING +CURRYCOMBS +CURRYING +CURS +CURSE +CURSED +CURSEDER +CURSEDEST +CURSEDLY +CURSEDNESS +CURSEDNESSES +CURSER +CURSERS +CURSES +CURSING +CURSIVE +CURSIVELY +CURSIVENESS +CURSIVENESSES +CURSIVES +CURSOR +CURSORIAL +CURSORILY +CURSORINESS +CURSORINESSES +CURSORS +CURSORY +CURST +CURT +CURTAIL +CURTAILED +CURTAILER +CURTAILERS +CURTAILING +CURTAILMENT +CURTAILMENTS +CURTAILS +CURTAIN +CURTAINED +CURTAINING +CURTAINLESS +CURTAINS +CURTAL +CURTALAX +CURTALAXES +CURTALS +CURTATE +CURTER +CURTESIES +CURTEST +CURTESY +CURTILAGE +CURTILAGES +CURTLY +CURTNESS +CURTNESSES +CURTSEY +CURTSEYED +CURTSEYING +CURTSEYS +CURTSIED +CURTSIES +CURTSY +CURTSYING +CURULE +CURVACEOUS +CURVACIOUS +CURVATURE +CURVATURES +CURVE +CURVEBALL +CURVEBALLED +CURVEBALLING +CURVEBALLS +CURVED +CURVEDLY +CURVES +CURVET +CURVETED +CURVETING +CURVETS +CURVETTED +CURVETTING +CURVEY +CURVIER +CURVIEST +CURVILINEAR +CURVILINEARITY +CURVING +CURVY +CUSCUS +CUSCUSES +CUSEC +CUSECS +CUSHAT +CUSHATS +CUSHAW +CUSHAWS +CUSHIER +CUSHIEST +CUSHILY +CUSHINESS +CUSHINESSES +CUSHION +CUSHIONED +CUSHIONING +CUSHIONLESS +CUSHIONS +CUSHIONY +CUSHY +CUSK +CUSKS +CUSP +CUSPAL +CUSPATE +CUSPATED +CUSPED +CUSPID +CUSPIDAL +CUSPIDATE +CUSPIDATION +CUSPIDATIONS +CUSPIDES +CUSPIDOR +CUSPIDORS +CUSPIDS +CUSPIS +CUSPS +CUSS +CUSSED +CUSSEDLY +CUSSEDNESS +CUSSEDNESSES +CUSSER +CUSSERS +CUSSES +CUSSING +CUSSO +CUSSOS +CUSSWORD +CUSSWORDS +CUSTARD +CUSTARDS +CUSTARDY +CUSTODES +CUSTODIAL +CUSTODIAN +CUSTODIANS +CUSTODIANSHIP +CUSTODIANSHIPS +CUSTODIES +CUSTODY +CUSTOM +CUSTOMARIES +CUSTOMARILY +CUSTOMARINESS +CUSTOMARINESSES +CUSTOMARY +CUSTOMER +CUSTOMERS +CUSTOMHOUSE +CUSTOMHOUSES +CUSTOMISE +CUSTOMISED +CUSTOMISES +CUSTOMISING +CUSTOMIZE +CUSTOMIZED +CUSTOMIZER +CUSTOMIZERS +CUSTOMIZES +CUSTOMIZING +CUSTOMS +CUSTOMSHOUSE +CUSTOMSHOUSES +CUSTOS +CUSTUMAL +CUSTUMALS +CUT +CUTABILITIES +CUTABILITY +CUTANEOUS +CUTANEOUSLY +CUTAWAY +CUTAWAYS +CUTBACK +CUTBACKS +CUTBANK +CUTBANKS +CUTCH +CUTCHERIES +CUTCHERY +CUTCHES +CUTDOWN +CUTDOWNS +CUTE +CUTELY +CUTENESS +CUTENESSES +CUTER +CUTES +CUTESIE +CUTESIER +CUTESIEST +CUTEST +CUTESY +CUTEY +CUTEYS +CUTGRASS +CUTGRASSES +CUTICLE +CUTICLES +CUTICULA +CUTICULAE +CUTICULAR +CUTIE +CUTIES +CUTIN +CUTINISE +CUTINISED +CUTINISES +CUTINISING +CUTINIZE +CUTINIZED +CUTINIZES +CUTINIZING +CUTINS +CUTIS +CUTISES +CUTLAS +CUTLASES +CUTLASS +CUTLASSES +CUTLER +CUTLERIES +CUTLERS +CUTLERY +CUTLET +CUTLETS +CUTLINE +CUTLINES +CUTOFF +CUTOFFS +CUTOUT +CUTOUTS +CUTOVER +CUTOVERS +CUTPURSE +CUTPURSES +CUTS +CUTTABLE +CUTTAGE +CUTTAGES +CUTTER +CUTTERS +CUTTHROAT +CUTTHROATS +CUTTIES +CUTTING +CUTTINGLY +CUTTINGS +CUTTLE +CUTTLEBONE +CUTTLEBONES +CUTTLED +CUTTLEFISH +CUTTLEFISHES +CUTTLES +CUTTLING +CUTTY +CUTUP +CUTUPS +CUTWATER +CUTWATERS +CUTWORK +CUTWORKS +CUTWORM +CUTWORMS +CUVEE +CUVEES +CUVETTE +CUVETTES +CWM +CWMS +CYAN +CYANAMID +CYANAMIDE +CYANAMIDES +CYANAMIDS +CYANATE +CYANATES +CYANIC +CYANID +CYANIDE +CYANIDED +CYANIDES +CYANIDING +CYANIDS +CYANIN +CYANINE +CYANINES +CYANINS +CYANITE +CYANITES +CYANITIC +CYANO +CYANOACRYLATE +CYANOACRYLATES +CYANOBACTERIA +CYANOBACTERIUM +CYANOCOBALAMIN +CYANOCOBALAMINE +CYANOCOBALAMINS +CYANOETHYLATE +CYANOETHYLATED +CYANOETHYLATES +CYANOETHYLATING +CYANOETHYLATION +CYANOGEN +CYANOGENESES +CYANOGENESIS +CYANOGENETIC +CYANOGENIC +CYANOGENS +CYANOHYDRIN +CYANOHYDRINS +CYANOSED +CYANOSES +CYANOSIS +CYANOTIC +CYANOTYPE +CYANOTYPES +CYANS +CYANURATE +CYANURATES +CYBER +CYBERCAFE +CYBERCAFES +CYBERCAST +CYBERCASTS +CYBERNATE +CYBERNATED +CYBERNATES +CYBERNATING +CYBERNATION +CYBERNATIONS +CYBERNAUT +CYBERNAUTS +CYBERNETIC +CYBERNETICAL +CYBERNETICALLY +CYBERNETICIAN +CYBERNETICIANS +CYBERNETICIST +CYBERNETICISTS +CYBERNETICS +CYBERPORN +CYBERPORNS +CYBERPUNK +CYBERPUNKS +CYBERSEX +CYBERSEXES +CYBERSPACE +CYBERSPACES +CYBORG +CYBORGS +CYBRARIAN +CYBRARIANS +CYCAD +CYCADEOID +CYCADEOIDS +CYCADOPHYTE +CYCADOPHYTES +CYCADS +CYCAS +CYCASES +CYCASIN +CYCASINS +CYCLAMATE +CYCLAMATES +CYCLAMEN +CYCLAMENS +CYCLASE +CYCLASES +CYCLAZOCINE +CYCLAZOCINES +CYCLE +CYCLECAR +CYCLECARS +CYCLED +CYCLER +CYCLERIES +CYCLERS +CYCLERY +CYCLES +CYCLEWAY +CYCLEWAYS +CYCLIC +CYCLICAL +CYCLICALITIES +CYCLICALITY +CYCLICALLY +CYCLICALS +CYCLICITIES +CYCLICITY +CYCLICLY +CYCLIN +CYCLING +CYCLINGS +CYCLINS +CYCLIST +CYCLISTS +CYCLITOL +CYCLITOLS +CYCLIZATION +CYCLIZATIONS +CYCLIZE +CYCLIZED +CYCLIZES +CYCLIZINE +CYCLIZINES +CYCLIZING +CYCLO +CYCLOADDITION +CYCLOADDITIONS +CYCLOALIPHATIC +CYCLODEXTRIN +CYCLODEXTRINS +CYCLODIENE +CYCLODIENES +CYCLOGENESES +CYCLOGENESIS +CYCLOHEXANE +CYCLOHEXANES +CYCLOHEXANONE +CYCLOHEXANONES +CYCLOHEXIMIDE +CYCLOHEXIMIDES +CYCLOHEXYLAMINE +CYCLOID +CYCLOIDAL +CYCLOIDS +CYCLOMETER +CYCLOMETERS +CYCLONAL +CYCLONE +CYCLONES +CYCLONIC +CYCLONICALLY +CYCLONITE +CYCLONITES +CYCLOOLEFIN +CYCLOOLEFINIC +CYCLOOLEFINS +CYCLOPAEDIA +CYCLOPAEDIAS +CYCLOPARAFFIN +CYCLOPARAFFINS +CYCLOPEAN +CYCLOPEDIA +CYCLOPEDIAS +CYCLOPEDIC +CYCLOPES +CYCLOPROPANE +CYCLOPROPANES +CYCLOPS +CYCLORAMA +CYCLORAMAS +CYCLORAMIC +CYCLOS +CYCLOSERINE +CYCLOSERINES +CYCLOSES +CYCLOSIS +CYCLOSPORINE +CYCLOSPORINES +CYCLOSTOME +CYCLOSTOMES +CYCLOSTYLE +CYCLOSTYLED +CYCLOSTYLES +CYCLOSTYLING +CYCLOTHYMIA +CYCLOTHYMIAS +CYCLOTHYMIC +CYCLOTOMIC +CYCLOTRON +CYCLOTRONS +CYDER +CYDERS +CYESES +CYESIS +CYGNET +CYGNETS +CYLICES +CYLINDER +CYLINDERED +CYLINDERING +CYLINDERS +CYLINDRIC +CYLINDRICAL +CYLINDRICALLY +CYLIX +CYMA +CYMAE +CYMAR +CYMARS +CYMAS +CYMATIA +CYMATIUM +CYMBAL +CYMBALEER +CYMBALEERS +CYMBALER +CYMBALERS +CYMBALIST +CYMBALISTS +CYMBALOM +CYMBALOMS +CYMBALS +CYMBIDIA +CYMBIDIUM +CYMBIDIUMS +CYMBLING +CYMBLINGS +CYME +CYMENE +CYMENES +CYMES +CYMLIN +CYMLING +CYMLINGS +CYMLINS +CYMOGENE +CYMOGENES +CYMOGRAPH +CYMOGRAPHS +CYMOID +CYMOL +CYMOLS +CYMOPHANE +CYMOPHANES +CYMOSE +CYMOSELY +CYMOUS +CYNIC +CYNICAL +CYNICALLY +CYNICISM +CYNICISMS +CYNICS +CYNOSURAL +CYNOSURE +CYNOSURES +CYPHER +CYPHERED +CYPHERING +CYPHERS +CYPRES +CYPRESES +CYPRESS +CYPRESSES +CYPRIAN +CYPRIANS +CYPRINID +CYPRINIDS +CYPRINOID +CYPRINOIDS +CYPRIPEDIUM +CYPRIPEDIUMS +CYPROHEPTADINE +CYPROHEPTADINES +CYPROTERONE +CYPROTERONES +CYPRUS +CYPRUSES +CYPSELA +CYPSELAE +CYST +CYSTEAMINE +CYSTEAMINES +CYSTEIN +CYSTEINE +CYSTEINES +CYSTEINIC +CYSTEINS +CYSTIC +CYSTICERCI +CYSTICERCOID +CYSTICERCOIDS +CYSTICERCOSES +CYSTICERCOSIS +CYSTICERCUS +CYSTINE +CYSTINES +CYSTINURIA +CYSTINURIAS +CYSTITIDES +CYSTITIS +CYSTOCARP +CYSTOCARPS +CYSTOCELE +CYSTOCELES +CYSTOID +CYSTOIDS +CYSTOLITH +CYSTOLITHS +CYSTOSCOPE +CYSTOSCOPES +CYSTOSCOPIC +CYSTOSCOPIES +CYSTOSCOPY +CYSTOTOMIES +CYSTOTOMY +CYSTS +CYTASTER +CYTASTERS +CYTIDINE +CYTIDINES +CYTOCHALASIN +CYTOCHALASINS +CYTOCHEMICAL +CYTOCHEMISTRIES +CYTOCHEMISTRY +CYTOCHROME +CYTOCHROMES +CYTOGENETIC +CYTOGENETICAL +CYTOGENETICALLY +CYTOGENETICIST +CYTOGENETICISTS +CYTOGENETICS +CYTOGENIES +CYTOGENY +CYTOKINE +CYTOKINES +CYTOKINESES +CYTOKINESIS +CYTOKINETIC +CYTOKININ +CYTOKININS +CYTOLOGIC +CYTOLOGICAL +CYTOLOGICALLY +CYTOLOGIES +CYTOLOGIST +CYTOLOGISTS +CYTOLOGY +CYTOLYSES +CYTOLYSIN +CYTOLYSINS +CYTOLYSIS +CYTOLYTIC +CYTOMEGALIC +CYTOMEGALOVIRUS +CYTOMEMBRANE +CYTOMEMBRANES +CYTON +CYTONS +CYTOPATHIC +CYTOPATHOGENIC +CYTOPHILIC +CYTOPHOTOMETRIC +CYTOPHOTOMETRY +CYTOPLASM +CYTOPLASMIC +CYTOPLASMICALLY +CYTOPLASMS +CYTOPLAST +CYTOPLASTS +CYTOSINE +CYTOSINES +CYTOSKELETAL +CYTOSKELETON +CYTOSKELETONS +CYTOSOL +CYTOSOLIC +CYTOSOLS +CYTOSTATIC +CYTOSTATICALLY +CYTOSTATICS +CYTOTAXONOMIC +CYTOTAXONOMIES +CYTOTAXONOMY +CYTOTECHNOLOGY +CYTOTOXIC +CYTOTOXICITIES +CYTOTOXICITY +CYTOTOXIN +CYTOTOXINS +CZAR +CZARDAS +CZARDASES +CZARDOM +CZARDOMS +CZAREVITCH +CZAREVITCHES +CZAREVNA +CZAREVNAS +CZARINA +CZARINAS +CZARISM +CZARISMS +CZARIST +CZARISTS +CZARITZA +CZARITZAS +CZARS +DAB +DABBED +DABBER +DABBERS +DABBING +DABBLE +DABBLED +DABBLER +DABBLERS +DABBLES +DABBLING +DABBLINGS +DABCHICK +DABCHICKS +DABS +DABSTER +DABSTERS +DACE +DACES +DACHA +DACHAS +DACHSHUND +DACHSHUNDS +DACITE +DACITES +DACKER +DACKERED +DACKERING +DACKERS +DACOIT +DACOITIES +DACOITS +DACOITY +DACQUOISE +DACQUOISES +DACRON +DACRONS +DACTYL +DACTYLI +DACTYLIC +DACTYLICS +DACTYLOLOGIES +DACTYLOLOGY +DACTYLS +DACTYLUS +DAD +DADA +DADAISM +DADAISMS +DADAIST +DADAISTIC +DADAISTS +DADAS +DADDIES +DADDLE +DADDLED +DADDLES +DADDLING +DADDY +DADGUM +DADO +DADOED +DADOES +DADOING +DADOS +DADS +DAEDAL +DAEDALEAN +DAEDALIAN +DAEMON +DAEMONES +DAEMONIC +DAEMONS +DAFF +DAFFED +DAFFIER +DAFFIEST +DAFFILY +DAFFINESS +DAFFINESSES +DAFFING +DAFFODIL +DAFFODILS +DAFFS +DAFFY +DAFT +DAFTER +DAFTEST +DAFTLY +DAFTNESS +DAFTNESSES +DAG +DAGGA +DAGGAS +DAGGER +DAGGERED +DAGGERING +DAGGERLIKE +DAGGERS +DAGGLE +DAGGLED +DAGGLES +DAGGLING +DAGLOCK +DAGLOCKS +DAGO +DAGOBA +DAGOBAS +DAGOES +DAGOS +DAGS +DAGUERREOTYPE +DAGUERREOTYPED +DAGUERREOTYPES +DAGUERREOTYPIES +DAGUERREOTYPING +DAGUERREOTYPIST +DAGUERREOTYPY +DAGWOOD +DAGWOODS +DAH +DAHABEAH +DAHABEAHS +DAHABIAH +DAHABIAHS +DAHABIEH +DAHABIEHS +DAHABIYA +DAHABIYAS +DAHL +DAHLIA +DAHLIAS +DAHLS +DAHOON +DAHOONS +DAHS +DAIDZEIN +DAIDZEINS +DAIKER +DAIKERED +DAIKERING +DAIKERS +DAIKON +DAIKONS +DAILIES +DAILINESS +DAILINESSES +DAILY +DAILYNESS +DAILYNESSES +DAIMEN +DAIMIO +DAIMIOS +DAIMON +DAIMONES +DAIMONIC +DAIMONS +DAIMYO +DAIMYOS +DAINTIER +DAINTIES +DAINTIEST +DAINTILY +DAINTINESS +DAINTINESSES +DAINTY +DAIQUIRI +DAIQUIRIS +DAIRIES +DAIRY +DAIRYING +DAIRYINGS +DAIRYMAID +DAIRYMAIDS +DAIRYMAN +DAIRYMEN +DAIS +DAISES +DAISHIKI +DAISHIKIS +DAISIED +DAISIES +DAISY +DAK +DAKERHEN +DAKERHENS +DAKOIT +DAKOITIES +DAKOITS +DAKOITY +DAKS +DAL +DALAPON +DALAPONS +DALASI +DALASIS +DALE +DALEDH +DALEDHS +DALES +DALESMAN +DALESMEN +DALETH +DALETHS +DALLES +DALLIANCE +DALLIANCES +DALLIED +DALLIER +DALLIERS +DALLIES +DALLY +DALLYING +DALMATIAN +DALMATIANS +DALMATIC +DALMATICS +DALS +DALTON +DALTONIAN +DALTONIC +DALTONISM +DALTONISMS +DALTONS +DAM +DAMAGE +DAMAGEABILITIES +DAMAGEABILITY +DAMAGED +DAMAGER +DAMAGERS +DAMAGES +DAMAGING +DAMAGINGLY +DAMAN +DAMANS +DAMAR +DAMARS +DAMASCENE +DAMASCENED +DAMASCENES +DAMASCENING +DAMASK +DAMASKED +DAMASKEEN +DAMASKEENED +DAMASKEENING +DAMASKEENS +DAMASKING +DAMASKS +DAME +DAMES +DAMEWORT +DAMEWORTS +DAMIANA +DAMIANAS +DAMMAR +DAMMARS +DAMMED +DAMMER +DAMMERS +DAMMING +DAMMIT +DAMN +DAMNABLE +DAMNABLENESS +DAMNABLENESSES +DAMNABLY +DAMNATION +DAMNATIONS +DAMNATORY +DAMNDEST +DAMNDESTS +DAMNED +DAMNEDER +DAMNEDEST +DAMNEDESTS +DAMNER +DAMNERS +DAMNIFIED +DAMNIFIES +DAMNIFY +DAMNIFYING +DAMNING +DAMNINGLY +DAMNS +DAMOSEL +DAMOSELS +DAMOZEL +DAMOZELS +DAMP +DAMPED +DAMPEN +DAMPENED +DAMPENER +DAMPENERS +DAMPENING +DAMPENS +DAMPER +DAMPERS +DAMPEST +DAMPING +DAMPINGS +DAMPISH +DAMPLY +DAMPNESS +DAMPNESSES +DAMPS +DAMS +DAMSEL +DAMSELFISH +DAMSELFISHES +DAMSELFLIES +DAMSELFLY +DAMSELS +DAMSON +DAMSONS +DAN +DANAZOL +DANAZOLS +DANCE +DANCEABLE +DANCED +DANCER +DANCERS +DANCES +DANCING +DANDELION +DANDELIONS +DANDER +DANDERED +DANDERING +DANDERS +DANDIACAL +DANDIER +DANDIES +DANDIEST +DANDIFICATION +DANDIFICATIONS +DANDIFIED +DANDIFIES +DANDIFY +DANDIFYING +DANDILY +DANDLE +DANDLED +DANDLER +DANDLERS +DANDLES +DANDLING +DANDRIFF +DANDRIFFS +DANDRUFF +DANDRUFFS +DANDRUFFY +DANDY +DANDYISH +DANDYISHLY +DANDYISM +DANDYISMS +DANEGELD +DANEGELDS +DANEGELT +DANEGELTS +DANEWEED +DANEWEEDS +DANEWORT +DANEWORTS +DANG +DANGED +DANGER +DANGERED +DANGERING +DANGEROUS +DANGEROUSLY +DANGEROUSNESS +DANGEROUSNESSES +DANGERS +DANGING +DANGLE +DANGLED +DANGLER +DANGLERS +DANGLES +DANGLIER +DANGLIEST +DANGLING +DANGLY +DANGS +DANIO +DANIOS +DANISH +DANISHES +DANK +DANKER +DANKEST +DANKLY +DANKNESS +DANKNESSES +DANS +DANSEUR +DANSEURS +DANSEUSE +DANSEUSES +DAP +DAPHNE +DAPHNES +DAPHNIA +DAPHNIAS +DAPPED +DAPPER +DAPPERER +DAPPEREST +DAPPERLY +DAPPERNESS +DAPPERNESSES +DAPPING +DAPPLE +DAPPLED +DAPPLES +DAPPLING +DAPS +DAPSONE +DAPSONES +DARB +DARBAR +DARBARS +DARBIES +DARBS +DARE +DARED +DAREDEVIL +DAREDEVILRIES +DAREDEVILRY +DAREDEVILS +DAREDEVILTRIES +DAREDEVILTRY +DAREFUL +DARER +DARERS +DARES +DARESAY +DARIC +DARICS +DARING +DARINGLY +DARINGNESS +DARINGNESSES +DARINGS +DARIOLE +DARIOLES +DARK +DARKED +DARKEN +DARKENED +DARKENER +DARKENERS +DARKENING +DARKENS +DARKER +DARKEST +DARKEY +DARKEYS +DARKIE +DARKIES +DARKING +DARKISH +DARKLE +DARKLED +DARKLES +DARKLIER +DARKLIEST +DARKLING +DARKLINGS +DARKLY +DARKNESS +DARKNESSES +DARKROOM +DARKROOMS +DARKS +DARKSOME +DARKY +DARLING +DARLINGLY +DARLINGNESS +DARLINGNESSES +DARLINGS +DARN +DARNATION +DARNATIONS +DARNDEST +DARNDESTS +DARNED +DARNEDER +DARNEDEST +DARNEDESTS +DARNEL +DARNELS +DARNER +DARNERS +DARNING +DARNINGS +DARNS +DARSHAN +DARSHANS +DART +DARTBOARD +DARTBOARDS +DARTED +DARTER +DARTERS +DARTING +DARTINGLY +DARTLE +DARTLED +DARTLES +DARTLING +DARTS +DASH +DASHBOARD +DASHBOARDS +DASHED +DASHEEN +DASHEENS +DASHER +DASHERS +DASHES +DASHI +DASHIER +DASHIEST +DASHIKI +DASHIKIS +DASHING +DASHINGLY +DASHIS +DASHPOT +DASHPOTS +DASHY +DASSIE +DASSIES +DASTARD +DASTARDLINESS +DASTARDLINESSES +DASTARDLY +DASTARDS +DASYMETER +DASYMETERS +DASYURE +DASYURES +DATA +DATABANK +DATABANKS +DATABASE +DATABASED +DATABASES +DATABASING +DATABLE +DATARIES +DATARY +DATCHA +DATCHAS +DATE +DATEABLE +DATEBOOK +DATEBOOKS +DATED +DATEDLY +DATEDNESS +DATEDNESSES +DATELESS +DATELINE +DATELINED +DATELINES +DATELINING +DATER +DATERS +DATES +DATING +DATIVAL +DATIVE +DATIVELY +DATIVES +DATO +DATOS +DATTO +DATTOS +DATUM +DATUMS +DATURA +DATURAS +DATURIC +DAUB +DAUBE +DAUBED +DAUBER +DAUBERIES +DAUBERS +DAUBERY +DAUBES +DAUBIER +DAUBIEST +DAUBING +DAUBINGLY +DAUBRIES +DAUBRY +DAUBS +DAUBY +DAUGHTER +DAUGHTERLESS +DAUGHTERS +DAUNDER +DAUNDERED +DAUNDERING +DAUNDERS +DAUNOMYCIN +DAUNOMYCINS +DAUNORUBICIN +DAUNORUBICINS +DAUNT +DAUNTED +DAUNTER +DAUNTERS +DAUNTING +DAUNTINGLY +DAUNTLESS +DAUNTLESSLY +DAUNTLESSNESS +DAUNTLESSNESSES +DAUNTS +DAUPHIN +DAUPHINE +DAUPHINES +DAUPHINS +DAUT +DAUTED +DAUTIE +DAUTIES +DAUTING +DAUTS +DAVEN +DAVENED +DAVENING +DAVENPORT +DAVENPORTS +DAVENS +DAVIES +DAVIT +DAVITS +DAVY +DAW +DAWDLE +DAWDLED +DAWDLER +DAWDLERS +DAWDLES +DAWDLING +DAWED +DAWEN +DAWING +DAWK +DAWKS +DAWN +DAWNED +DAWNING +DAWNLIKE +DAWNS +DAWS +DAWSONITE +DAWSONITES +DAWT +DAWTED +DAWTIE +DAWTIES +DAWTING +DAWTS +DAY +DAYBED +DAYBEDS +DAYBOOK +DAYBOOKS +DAYBREAK +DAYBREAKS +DAYCARE +DAYCARES +DAYDREAM +DAYDREAMED +DAYDREAMER +DAYDREAMERS +DAYDREAMING +DAYDREAMLIKE +DAYDREAMS +DAYDREAMT +DAYDREAMY +DAYFLIES +DAYFLOWER +DAYFLOWERS +DAYFLY +DAYGLOW +DAYGLOWS +DAYLIGHT +DAYLIGHTED +DAYLIGHTING +DAYLIGHTINGS +DAYLIGHTS +DAYLILIES +DAYLILY +DAYLIT +DAYLONG +DAYMARE +DAYMARES +DAYROOM +DAYROOMS +DAYS +DAYSIDE +DAYSIDES +DAYSMAN +DAYSMEN +DAYSPRING +DAYSPRINGS +DAYSTAR +DAYSTARS +DAYTIME +DAYTIMES +DAYWORK +DAYWORKER +DAYWORKERS +DAYWORKS +DAZE +DAZED +DAZEDLY +DAZEDNESS +DAZEDNESSES +DAZES +DAZING +DAZZLE +DAZZLED +DAZZLER +DAZZLERS +DAZZLES +DAZZLING +DAZZLINGLY +DE +DEACIDIFICATION +DEACIDIFIED +DEACIDIFIES +DEACIDIFY +DEACIDIFYING +DEACON +DEACONED +DEACONESS +DEACONESSES +DEACONING +DEACONRIES +DEACONRY +DEACONS +DEACTIVATE +DEACTIVATED +DEACTIVATES +DEACTIVATING +DEACTIVATION +DEACTIVATIONS +DEACTIVATOR +DEACTIVATORS +DEAD +DEADBEAT +DEADBEATS +DEADBOLT +DEADBOLTS +DEADEN +DEADENED +DEADENER +DEADENERS +DEADENING +DEADENINGLY +DEADENINGS +DEADENS +DEADER +DEADEST +DEADEYE +DEADEYES +DEADFALL +DEADFALLS +DEADHEAD +DEADHEADED +DEADHEADING +DEADHEADS +DEADLIER +DEADLIEST +DEADLIFT +DEADLIFTED +DEADLIFTING +DEADLIFTS +DEADLIGHT +DEADLIGHTS +DEADLINE +DEADLINED +DEADLINES +DEADLINESS +DEADLINESSES +DEADLINING +DEADLOCK +DEADLOCKED +DEADLOCKING +DEADLOCKS +DEADLY +DEADMAN +DEADMEN +DEADNESS +DEADNESSES +DEADPAN +DEADPANNED +DEADPANNER +DEADPANNERS +DEADPANNING +DEADPANS +DEADS +DEADWEIGHT +DEADWEIGHTS +DEADWOOD +DEADWOODS +DEAERATE +DEAERATED +DEAERATES +DEAERATING +DEAERATION +DEAERATIONS +DEAERATOR +DEAERATORS +DEAF +DEAFEN +DEAFENED +DEAFENING +DEAFENINGLY +DEAFENINGS +DEAFENS +DEAFER +DEAFEST +DEAFISH +DEAFLY +DEAFNESS +DEAFNESSES +DEAIR +DEAIRED +DEAIRING +DEAIRS +DEAL +DEALATE +DEALATED +DEALATES +DEALATION +DEALATIONS +DEALER +DEALERS +DEALERSHIP +DEALERSHIPS +DEALFISH +DEALFISHES +DEALING +DEALINGS +DEALS +DEALT +DEAMINASE +DEAMINASES +DEAMINATE +DEAMINATED +DEAMINATES +DEAMINATING +DEAMINATION +DEAMINATIONS +DEAMINIZE +DEAMINIZED +DEAMINIZES +DEAMINIZING +DEAN +DEANED +DEANERIES +DEANERY +DEANING +DEANS +DEANSHIP +DEANSHIPS +DEAR +DEARER +DEAREST +DEARIE +DEARIES +DEARLY +DEARNESS +DEARNESSES +DEARS +DEARTH +DEARTHS +DEARY +DEASH +DEASHED +DEASHES +DEASHING +DEASIL +DEATH +DEATHBED +DEATHBEDS +DEATHBLOW +DEATHBLOWS +DEATHCUP +DEATHCUPS +DEATHFUL +DEATHLESS +DEATHLESSLY +DEATHLESSNESS +DEATHLESSNESSES +DEATHLIKE +DEATHLY +DEATHS +DEATHSMAN +DEATHSMEN +DEATHTRAP +DEATHTRAPS +DEATHWATCH +DEATHWATCHES +DEATHY +DEAVE +DEAVED +DEAVES +DEAVING +DEB +DEBACLE +DEBACLES +DEBAG +DEBAGGED +DEBAGGING +DEBAGS +DEBAR +DEBARK +DEBARKATION +DEBARKATIONS +DEBARKED +DEBARKER +DEBARKERS +DEBARKING +DEBARKS +DEBARMENT +DEBARMENTS +DEBARRED +DEBARRING +DEBARS +DEBASE +DEBASED +DEBASEMENT +DEBASEMENTS +DEBASER +DEBASERS +DEBASES +DEBASING +DEBATABLE +DEBATABLY +DEBATE +DEBATED +DEBATEMENT +DEBATEMENTS +DEBATER +DEBATERS +DEBATES +DEBATING +DEBAUCH +DEBAUCHED +DEBAUCHEE +DEBAUCHEES +DEBAUCHER +DEBAUCHERIES +DEBAUCHERS +DEBAUCHERY +DEBAUCHES +DEBAUCHING +DEBEAK +DEBEAKED +DEBEAKING +DEBEAKS +DEBEARD +DEBEARDED +DEBEARDING +DEBEARDS +DEBENTURE +DEBENTURES +DEBILITATE +DEBILITATED +DEBILITATES +DEBILITATING +DEBILITATION +DEBILITATIONS +DEBILITIES +DEBILITY +DEBIT +DEBITED +DEBITING +DEBITS +DEBONAIR +DEBONAIRE +DEBONAIRLY +DEBONAIRNESS +DEBONAIRNESSES +DEBONE +DEBONED +DEBONER +DEBONERS +DEBONES +DEBONING +DEBOUCH +DEBOUCHE +DEBOUCHED +DEBOUCHES +DEBOUCHING +DEBOUCHMENT +DEBOUCHMENTS +DEBRIDE +DEBRIDED +DEBRIDEMENT +DEBRIDEMENTS +DEBRIDES +DEBRIDING +DEBRIEF +DEBRIEFED +DEBRIEFER +DEBRIEFERS +DEBRIEFING +DEBRIEFS +DEBRIS +DEBRUISE +DEBRUISED +DEBRUISES +DEBRUISING +DEBS +DEBT +DEBTLESS +DEBTOR +DEBTORS +DEBTS +DEBUG +DEBUGGED +DEBUGGER +DEBUGGERS +DEBUGGING +DEBUGS +DEBUNK +DEBUNKED +DEBUNKER +DEBUNKERS +DEBUNKING +DEBUNKS +DEBUT +DEBUTANT +DEBUTANTE +DEBUTANTES +DEBUTANTS +DEBUTED +DEBUTING +DEBUTS +DEBYE +DEBYES +DECADAL +DECADE +DECADENCE +DECADENCES +DECADENCIES +DECADENCY +DECADENT +DECADENTLY +DECADENTS +DECADES +DECAF +DECAFFEINATED +DECAFS +DECAGON +DECAGONAL +DECAGONS +DECAGRAM +DECAGRAMS +DECAHEDRA +DECAHEDRON +DECAHEDRONS +DECAL +DECALCIFICATION +DECALCIFIED +DECALCIFIES +DECALCIFY +DECALCIFYING +DECALCOMANIA +DECALCOMANIAS +DECALITER +DECALITERS +DECALOG +DECALOGS +DECALOGUE +DECALOGUES +DECALS +DECAMETER +DECAMETERS +DECAMETHONIUM +DECAMETHONIUMS +DECAMETRIC +DECAMP +DECAMPED +DECAMPING +DECAMPMENT +DECAMPMENTS +DECAMPS +DECANAL +DECANE +DECANES +DECANT +DECANTATION +DECANTATIONS +DECANTED +DECANTER +DECANTERS +DECANTING +DECANTS +DECAPITATE +DECAPITATED +DECAPITATES +DECAPITATING +DECAPITATION +DECAPITATIONS +DECAPITATOR +DECAPITATORS +DECAPOD +DECAPODAL +DECAPODAN +DECAPODANS +DECAPODOUS +DECAPODS +DECARBONATE +DECARBONATED +DECARBONATES +DECARBONATING +DECARBONATION +DECARBONATIONS +DECARBONIZE +DECARBONIZED +DECARBONIZER +DECARBONIZERS +DECARBONIZES +DECARBONIZING +DECARBOXYLASE +DECARBOXYLASES +DECARBOXYLATE +DECARBOXYLATED +DECARBOXYLATES +DECARBOXYLATING +DECARBOXYLATION +DECARBURIZATION +DECARBURIZE +DECARBURIZED +DECARBURIZES +DECARBURIZING +DECARE +DECARES +DECASUALIZATION +DECASYLLABIC +DECASYLLABICS +DECASYLLABLE +DECASYLLABLES +DECATHLETE +DECATHLETES +DECATHLON +DECATHLONS +DECAY +DECAYABLE +DECAYED +DECAYER +DECAYERS +DECAYING +DECAYLESS +DECAYS +DECEASE +DECEASED +DECEASES +DECEASING +DECEDENT +DECEDENTS +DECEIT +DECEITFUL +DECEITFULLY +DECEITFULNESS +DECEITFULNESSES +DECEITS +DECEIVABLE +DECEIVE +DECEIVED +DECEIVER +DECEIVERS +DECEIVES +DECEIVING +DECEIVINGLY +DECELERATE +DECELERATED +DECELERATES +DECELERATING +DECELERATION +DECELERATIONS +DECELERATOR +DECELERATORS +DECELERON +DECELERONS +DECEMVIR +DECEMVIRAL +DECEMVIRATE +DECEMVIRATES +DECEMVIRI +DECEMVIRS +DECENARIES +DECENARY +DECENCIES +DECENCY +DECENNARIES +DECENNARY +DECENNIA +DECENNIAL +DECENNIALLY +DECENNIALS +DECENNIUM +DECENNIUMS +DECENT +DECENTER +DECENTERED +DECENTERING +DECENTERS +DECENTEST +DECENTLY +DECENTRALIZE +DECENTRALIZED +DECENTRALIZES +DECENTRALIZING +DECENTRE +DECENTRED +DECENTRES +DECENTRING +DECEPTION +DECEPTIONAL +DECEPTIONS +DECEPTIVE +DECEPTIVELY +DECEPTIVENESS +DECEPTIVENESSES +DECEREBRATE +DECEREBRATED +DECEREBRATES +DECEREBRATING +DECEREBRATION +DECEREBRATIONS +DECERN +DECERNED +DECERNING +DECERNS +DECERTIFICATION +DECERTIFIED +DECERTIFIES +DECERTIFY +DECERTIFYING +DECHLORINATE +DECHLORINATED +DECHLORINATES +DECHLORINATING +DECHLORINATION +DECHLORINATIONS +DECIARE +DECIARES +DECIBEL +DECIBELS +DECIDABILITIES +DECIDABILITY +DECIDABLE +DECIDE +DECIDED +DECIDEDLY +DECIDEDNESS +DECIDEDNESSES +DECIDER +DECIDERS +DECIDES +DECIDING +DECIDUA +DECIDUAE +DECIDUAL +DECIDUAS +DECIDUATE +DECIDUOUS +DECIDUOUSNESS +DECIDUOUSNESSES +DECIGRAM +DECIGRAMS +DECILE +DECILES +DECILITER +DECILITERS +DECILITRE +DECILITRES +DECILLION +DECILLIONS +DECIMAL +DECIMALIZATION +DECIMALIZATIONS +DECIMALIZE +DECIMALIZED +DECIMALIZES +DECIMALIZING +DECIMALLY +DECIMALS +DECIMATE +DECIMATED +DECIMATES +DECIMATING +DECIMATION +DECIMATIONS +DECIMATOR +DECIMATORS +DECIMETER +DECIMETERS +DECIMETRE +DECIMETRES +DECIPHER +DECIPHERABLE +DECIPHERED +DECIPHERER +DECIPHERERS +DECIPHERING +DECIPHERMENT +DECIPHERMENTS +DECIPHERS +DECISION +DECISIONAL +DECISIONED +DECISIONING +DECISIONS +DECISIVE +DECISIVELY +DECISIVENESS +DECISIVENESSES +DECK +DECKED +DECKEL +DECKELS +DECKER +DECKERS +DECKHAND +DECKHANDS +DECKHOUSE +DECKHOUSES +DECKING +DECKINGS +DECKLE +DECKLES +DECKS +DECLAIM +DECLAIMED +DECLAIMER +DECLAIMERS +DECLAIMING +DECLAIMS +DECLAMATION +DECLAMATIONS +DECLAMATORY +DECLARABLE +DECLARANT +DECLARANTS +DECLARATION +DECLARATIONS +DECLARATIVE +DECLARATIVELY +DECLARATORY +DECLARE +DECLARED +DECLARER +DECLARERS +DECLARES +DECLARING +DECLASS +DECLASSE +DECLASSED +DECLASSES +DECLASSIFIED +DECLASSIFIES +DECLASSIFY +DECLASSIFYING +DECLASSING +DECLAW +DECLAWED +DECLAWING +DECLAWS +DECLENSION +DECLENSIONAL +DECLENSIONS +DECLINABLE +DECLINATION +DECLINATIONAL +DECLINATIONS +DECLINE +DECLINED +DECLINER +DECLINERS +DECLINES +DECLINING +DECLINIST +DECLINISTS +DECLIVITIES +DECLIVITOUS +DECLIVITY +DECO +DECOCT +DECOCTED +DECOCTING +DECOCTION +DECOCTIONS +DECOCTIVE +DECOCTS +DECODE +DECODED +DECODER +DECODERS +DECODES +DECODING +DECOLLATE +DECOLLATED +DECOLLATES +DECOLLATING +DECOLLATION +DECOLLATIONS +DECOLLETAGE +DECOLLETAGES +DECOLLETE +DECOLLETES +DECOLONIZATION +DECOLONIZATIONS +DECOLONIZE +DECOLONIZED +DECOLONIZES +DECOLONIZING +DECOLOR +DECOLORED +DECOLORING +DECOLORIZATION +DECOLORIZATIONS +DECOLORIZE +DECOLORIZED +DECOLORIZER +DECOLORIZERS +DECOLORIZES +DECOLORIZING +DECOLORS +DECOLOUR +DECOLOURED +DECOLOURING +DECOLOURS +DECOMMISSION +DECOMMISSIONED +DECOMMISSIONING +DECOMMISSIONS +DECOMPENSATE +DECOMPENSATED +DECOMPENSATES +DECOMPENSATING +DECOMPENSATION +DECOMPENSATIONS +DECOMPOSABILITY +DECOMPOSABLE +DECOMPOSE +DECOMPOSED +DECOMPOSER +DECOMPOSERS +DECOMPOSES +DECOMPOSING +DECOMPOSITION +DECOMPOSITIONS +DECOMPOUND +DECOMPRESS +DECOMPRESSED +DECOMPRESSES +DECOMPRESSING +DECOMPRESSION +DECOMPRESSIONS +DECONCENTRATE +DECONCENTRATED +DECONCENTRATES +DECONCENTRATING +DECONCENTRATION +DECONDITION +DECONDITIONED +DECONDITIONING +DECONDITIONS +DECONGEST +DECONGESTANT +DECONGESTANTS +DECONGESTED +DECONGESTING +DECONGESTION +DECONGESTIONS +DECONGESTIVE +DECONGESTS +DECONSECRATE +DECONSECRATED +DECONSECRATES +DECONSECRATING +DECONSECRATION +DECONSECRATIONS +DECONSTRUCT +DECONSTRUCTED +DECONSTRUCTING +DECONSTRUCTION +DECONSTRUCTIONS +DECONSTRUCTIVE +DECONSTRUCTOR +DECONSTRUCTORS +DECONSTRUCTS +DECONTAMINATE +DECONTAMINATED +DECONTAMINATES +DECONTAMINATING +DECONTAMINATION +DECONTAMINATOR +DECONTAMINATORS +DECONTROL +DECONTROLLED +DECONTROLLING +DECONTROLS +DECOR +DECORATE +DECORATED +DECORATES +DECORATING +DECORATION +DECORATIONS +DECORATIVE +DECORATIVELY +DECORATIVENESS +DECORATOR +DECORATORS +DECOROUS +DECOROUSLY +DECOROUSNESS +DECOROUSNESSES +DECORS +DECORTICATE +DECORTICATED +DECORTICATES +DECORTICATING +DECORTICATION +DECORTICATIONS +DECORTICATOR +DECORTICATORS +DECORUM +DECORUMS +DECOS +DECOUPAGE +DECOUPAGED +DECOUPAGES +DECOUPAGING +DECOUPLE +DECOUPLED +DECOUPLER +DECOUPLERS +DECOUPLES +DECOUPLING +DECOY +DECOYED +DECOYER +DECOYERS +DECOYING +DECOYS +DECREASE +DECREASED +DECREASES +DECREASING +DECREASINGLY +DECREE +DECREED +DECREEING +DECREER +DECREERS +DECREES +DECREMENT +DECREMENTAL +DECREMENTS +DECREPIT +DECREPITATE +DECREPITATED +DECREPITATES +DECREPITATING +DECREPITATION +DECREPITATIONS +DECREPITLY +DECREPITUDE +DECREPITUDES +DECRESCENDO +DECRESCENDOS +DECRESCENT +DECRETAL +DECRETALS +DECRETIVE +DECRETORY +DECRIAL +DECRIALS +DECRIED +DECRIER +DECRIERS +DECRIES +DECRIMINALIZE +DECRIMINALIZED +DECRIMINALIZES +DECRIMINALIZING +DECROWN +DECROWNED +DECROWNING +DECROWNS +DECRY +DECRYING +DECRYPT +DECRYPTED +DECRYPTING +DECRYPTION +DECRYPTIONS +DECRYPTS +DECUMAN +DECUMBENT +DECUPLE +DECUPLED +DECUPLES +DECUPLING +DECURIES +DECURION +DECURIONS +DECURRENT +DECURVE +DECURVED +DECURVES +DECURVING +DECURY +DECUSSATE +DECUSSATED +DECUSSATES +DECUSSATING +DECUSSATION +DECUSSATIONS +DEDAL +DEDANS +DEDICATE +DEDICATED +DEDICATEDLY +DEDICATEE +DEDICATEES +DEDICATES +DEDICATING +DEDICATION +DEDICATIONS +DEDICATOR +DEDICATORS +DEDICATORY +DEDIFFERENTIATE +DEDUCE +DEDUCED +DEDUCES +DEDUCIBLE +DEDUCIBLY +DEDUCING +DEDUCT +DEDUCTED +DEDUCTIBILITIES +DEDUCTIBILITY +DEDUCTIBLE +DEDUCTIBLES +DEDUCTING +DEDUCTION +DEDUCTIONS +DEDUCTIVE +DEDUCTIVELY +DEDUCTS +DEE +DEED +DEEDED +DEEDIER +DEEDIEST +DEEDING +DEEDLESS +DEEDS +DEEDY +DEEJAY +DEEJAYED +DEEJAYING +DEEJAYS +DEEM +DEEMED +DEEMING +DEEMS +DEEMSTER +DEEMSTERS +DEEP +DEEPEN +DEEPENED +DEEPENER +DEEPENERS +DEEPENING +DEEPENS +DEEPER +DEEPEST +DEEPFREEZE +DEEPFREEZES +DEEPFREEZING +DEEPFROZE +DEEPFROZEN +DEEPLY +DEEPNESS +DEEPNESSES +DEEPS +DEEPWATER +DEER +DEERBERRIES +DEERBERRY +DEERFLIES +DEERFLY +DEERHOUND +DEERHOUNDS +DEERLIKE +DEERS +DEERSKIN +DEERSKINS +DEERSTALKER +DEERSTALKERS +DEERWEED +DEERWEEDS +DEERYARD +DEERYARDS +DEES +DEET +DEETS +DEEWAN +DEEWANS +DEF +DEFACE +DEFACED +DEFACEMENT +DEFACEMENTS +DEFACER +DEFACERS +DEFACES +DEFACING +DEFALCATE +DEFALCATED +DEFALCATES +DEFALCATING +DEFALCATION +DEFALCATIONS +DEFALCATOR +DEFALCATORS +DEFAMATION +DEFAMATIONS +DEFAMATORY +DEFAME +DEFAMED +DEFAMER +DEFAMERS +DEFAMES +DEFAMING +DEFANG +DEFANGED +DEFANGING +DEFANGS +DEFAT +DEFATS +DEFATTED +DEFATTING +DEFAULT +DEFAULTED +DEFAULTER +DEFAULTERS +DEFAULTING +DEFAULTS +DEFEASANCE +DEFEASANCES +DEFEASIBILITIES +DEFEASIBILITY +DEFEASIBLE +DEFEAT +DEFEATED +DEFEATER +DEFEATERS +DEFEATING +DEFEATISM +DEFEATISMS +DEFEATIST +DEFEATISTS +DEFEATS +DEFEATURE +DEFEATURES +DEFECATE +DEFECATED +DEFECATES +DEFECATING +DEFECATION +DEFECATIONS +DEFECATOR +DEFECATORS +DEFECT +DEFECTED +DEFECTING +DEFECTION +DEFECTIONS +DEFECTIVE +DEFECTIVELY +DEFECTIVENESS +DEFECTIVENESSES +DEFECTIVES +DEFECTOR +DEFECTORS +DEFECTS +DEFEMINIZATION +DEFEMINIZATIONS +DEFEMINIZE +DEFEMINIZED +DEFEMINIZES +DEFEMINIZING +DEFENCE +DEFENCED +DEFENCEMAN +DEFENCEMEN +DEFENCES +DEFENCING +DEFEND +DEFENDABLE +DEFENDANT +DEFENDANTS +DEFENDED +DEFENDER +DEFENDERS +DEFENDING +DEFENDS +DEFENESTRATE +DEFENESTRATED +DEFENESTRATES +DEFENESTRATING +DEFENESTRATION +DEFENESTRATIONS +DEFENSE +DEFENSED +DEFENSELESS +DEFENSELESSLY +DEFENSELESSNESS +DEFENSEMAN +DEFENSEMEN +DEFENSES +DEFENSIBILITIES +DEFENSIBILITY +DEFENSIBLE +DEFENSIBLY +DEFENSING +DEFENSIVE +DEFENSIVELY +DEFENSIVENESS +DEFENSIVENESSES +DEFENSIVES +DEFER +DEFERENCE +DEFERENCES +DEFERENT +DEFERENTIAL +DEFERENTIALLY +DEFERENTS +DEFERMENT +DEFERMENTS +DEFERRABLE +DEFERRABLES +DEFERRAL +DEFERRALS +DEFERRED +DEFERRER +DEFERRERS +DEFERRING +DEFERS +DEFERVESCENCE +DEFERVESCENCES +DEFFER +DEFFEST +DEFI +DEFIANCE +DEFIANCES +DEFIANT +DEFIANTLY +DEFIBRILLATE +DEFIBRILLATED +DEFIBRILLATES +DEFIBRILLATING +DEFIBRILLATION +DEFIBRILLATIONS +DEFIBRILLATOR +DEFIBRILLATORS +DEFIBRINATE +DEFIBRINATED +DEFIBRINATES +DEFIBRINATING +DEFIBRINATION +DEFIBRINATIONS +DEFICIENCIES +DEFICIENCY +DEFICIENT +DEFICIENTLY +DEFICIENTS +DEFICIT +DEFICITS +DEFIED +DEFIER +DEFIERS +DEFIES +DEFILADE +DEFILADED +DEFILADES +DEFILADING +DEFILE +DEFILED +DEFILEMENT +DEFILEMENTS +DEFILER +DEFILERS +DEFILES +DEFILING +DEFINABLE +DEFINABLY +DEFINE +DEFINED +DEFINEMENT +DEFINEMENTS +DEFINER +DEFINERS +DEFINES +DEFINIENDA +DEFINIENDUM +DEFINIENS +DEFINIENTIA +DEFINING +DEFINITE +DEFINITELY +DEFINITENESS +DEFINITENESSES +DEFINITION +DEFINITIONAL +DEFINITIONS +DEFINITIVE +DEFINITIVELY +DEFINITIVENESS +DEFINITIVES +DEFINITIZE +DEFINITIZED +DEFINITIZES +DEFINITIZING +DEFINITUDE +DEFINITUDES +DEFIS +DEFLAGRATE +DEFLAGRATED +DEFLAGRATES +DEFLAGRATING +DEFLAGRATION +DEFLAGRATIONS +DEFLATE +DEFLATED +DEFLATER +DEFLATERS +DEFLATES +DEFLATING +DEFLATION +DEFLATIONARY +DEFLATIONS +DEFLATOR +DEFLATORS +DEFLEA +DEFLEAED +DEFLEAING +DEFLEAS +DEFLECT +DEFLECTABLE +DEFLECTED +DEFLECTING +DEFLECTION +DEFLECTIONS +DEFLECTIVE +DEFLECTOR +DEFLECTORS +DEFLECTS +DEFLEXED +DEFLEXION +DEFLEXIONS +DEFLORATION +DEFLORATIONS +DEFLOWER +DEFLOWERED +DEFLOWERER +DEFLOWERERS +DEFLOWERING +DEFLOWERS +DEFOAM +DEFOAMED +DEFOAMER +DEFOAMERS +DEFOAMING +DEFOAMS +DEFOCUS +DEFOCUSED +DEFOCUSES +DEFOCUSING +DEFOCUSSED +DEFOCUSSES +DEFOCUSSING +DEFOG +DEFOGGED +DEFOGGER +DEFOGGERS +DEFOGGING +DEFOGS +DEFOLIANT +DEFOLIANTS +DEFOLIATE +DEFOLIATED +DEFOLIATES +DEFOLIATING +DEFOLIATION +DEFOLIATIONS +DEFOLIATOR +DEFOLIATORS +DEFORCE +DEFORCED +DEFORCEMENT +DEFORCEMENTS +DEFORCER +DEFORCERS +DEFORCES +DEFORCING +DEFOREST +DEFORESTATION +DEFORESTATIONS +DEFORESTED +DEFORESTING +DEFORESTS +DEFORM +DEFORMABLE +DEFORMALIZE +DEFORMALIZED +DEFORMALIZES +DEFORMALIZING +DEFORMATION +DEFORMATIONAL +DEFORMATIONS +DEFORMATIVE +DEFORMED +DEFORMER +DEFORMERS +DEFORMING +DEFORMITIES +DEFORMITY +DEFORMS +DEFRAG +DEFRAGGED +DEFRAGGER +DEFRAGGERS +DEFRAGGING +DEFRAGS +DEFRAUD +DEFRAUDED +DEFRAUDER +DEFRAUDERS +DEFRAUDING +DEFRAUDS +DEFRAY +DEFRAYABLE +DEFRAYAL +DEFRAYALS +DEFRAYED +DEFRAYER +DEFRAYERS +DEFRAYING +DEFRAYS +DEFROCK +DEFROCKED +DEFROCKING +DEFROCKS +DEFROST +DEFROSTED +DEFROSTER +DEFROSTERS +DEFROSTING +DEFROSTS +DEFT +DEFTER +DEFTEST +DEFTLY +DEFTNESS +DEFTNESSES +DEFUEL +DEFUELED +DEFUELING +DEFUELLED +DEFUELLING +DEFUELS +DEFUNCT +DEFUND +DEFUNDED +DEFUNDING +DEFUNDS +DEFUSE +DEFUSED +DEFUSER +DEFUSERS +DEFUSES +DEFUSING +DEFUZE +DEFUZED +DEFUZES +DEFUZING +DEFY +DEFYING +DEGAGE +DEGAME +DEGAMES +DEGAMI +DEGAMIS +DEGAS +DEGASES +DEGASSED +DEGASSER +DEGASSERS +DEGASSES +DEGASSING +DEGAUSS +DEGAUSSED +DEGAUSSER +DEGAUSSERS +DEGAUSSES +DEGAUSSING +DEGENDER +DEGENDERED +DEGENDERING +DEGENDERS +DEGENERACIES +DEGENERACY +DEGENERATE +DEGENERATED +DEGENERATELY +DEGENERATENESS +DEGENERATES +DEGENERATING +DEGENERATION +DEGENERATIONS +DEGENERATIVE +DEGERM +DEGERMED +DEGERMING +DEGERMS +DEGLACIATED +DEGLACIATION +DEGLACIATIONS +DEGLAMORIZATION +DEGLAMORIZE +DEGLAMORIZED +DEGLAMORIZES +DEGLAMORIZING +DEGLAZE +DEGLAZED +DEGLAZES +DEGLAZING +DEGLUTITION +DEGLUTITIONS +DEGRADABLE +DEGRADATION +DEGRADATIONS +DEGRADATIVE +DEGRADE +DEGRADED +DEGRADEDLY +DEGRADER +DEGRADERS +DEGRADES +DEGRADING +DEGRADINGLY +DEGRANULATION +DEGRANULATIONS +DEGREASE +DEGREASED +DEGREASER +DEGREASERS +DEGREASES +DEGREASING +DEGREE +DEGREED +DEGREES +DEGRESSIVE +DEGRESSIVELY +DEGRINGOLADE +DEGRINGOLADES +DEGUM +DEGUMMED +DEGUMMING +DEGUMS +DEGUST +DEGUSTATION +DEGUSTATIONS +DEGUSTED +DEGUSTING +DEGUSTS +DEHISCE +DEHISCED +DEHISCENCE +DEHISCENCES +DEHISCENT +DEHISCES +DEHISCING +DEHORN +DEHORNED +DEHORNER +DEHORNERS +DEHORNING +DEHORNS +DEHORT +DEHORTED +DEHORTING +DEHORTS +DEHUMANIZATION +DEHUMANIZATIONS +DEHUMANIZE +DEHUMANIZED +DEHUMANIZES +DEHUMANIZING +DEHUMIDIFIED +DEHUMIDIFIER +DEHUMIDIFIERS +DEHUMIDIFIES +DEHUMIDIFY +DEHUMIDIFYING +DEHYDRATE +DEHYDRATED +DEHYDRATES +DEHYDRATING +DEHYDRATION +DEHYDRATIONS +DEHYDRATOR +DEHYDRATORS +DEHYDROGENASE +DEHYDROGENASES +DEHYDROGENATE +DEHYDROGENATED +DEHYDROGENATES +DEHYDROGENATING +DEHYDROGENATION +DEICE +DEICED +DEICER +DEICERS +DEICES +DEICIDAL +DEICIDE +DEICIDES +DEICING +DEICTIC +DEICTICS +DEIFIC +DEIFICAL +DEIFICATION +DEIFICATIONS +DEIFIED +DEIFIER +DEIFIERS +DEIFIES +DEIFORM +DEIFY +DEIFYING +DEIGN +DEIGNED +DEIGNING +DEIGNS +DEIL +DEILS +DEINDUSTRIALIZE +DEINONYCHUS +DEINONYCHUSES +DEIONIZATION +DEIONIZATIONS +DEIONIZE +DEIONIZED +DEIONIZER +DEIONIZERS +DEIONIZES +DEIONIZING +DEISM +DEISMS +DEIST +DEISTIC +DEISTICAL +DEISTICALLY +DEISTS +DEITIES +DEITY +DEIXIS +DEIXISES +DEJECT +DEJECTA +DEJECTED +DEJECTEDLY +DEJECTEDNESS +DEJECTEDNESSES +DEJECTING +DEJECTION +DEJECTIONS +DEJECTS +DEJEUNER +DEJEUNERS +DEKAGRAM +DEKAGRAMS +DEKALITER +DEKALITERS +DEKALITRE +DEKALITRES +DEKAMETER +DEKAMETERS +DEKAMETRE +DEKAMETRES +DEKAMETRIC +DEKARE +DEKARES +DEKE +DEKED +DEKEING +DEKES +DEKING +DEKKO +DEKKOS +DEL +DELAINE +DELAINES +DELAMINATE +DELAMINATED +DELAMINATES +DELAMINATING +DELAMINATION +DELAMINATIONS +DELATE +DELATED +DELATES +DELATING +DELATION +DELATIONS +DELATOR +DELATORS +DELAY +DELAYABLE +DELAYED +DELAYER +DELAYERS +DELAYING +DELAYS +DELE +DELEAD +DELEADED +DELEADING +DELEADS +DELEAVE +DELEAVED +DELEAVES +DELEAVING +DELECTABILITIES +DELECTABILITY +DELECTABLE +DELECTABLES +DELECTABLY +DELECTATE +DELECTATED +DELECTATES +DELECTATING +DELECTATION +DELECTATIONS +DELED +DELEGABLE +DELEGACIES +DELEGACY +DELEGATE +DELEGATED +DELEGATEE +DELEGATEES +DELEGATES +DELEGATING +DELEGATION +DELEGATIONS +DELEGATOR +DELEGATORS +DELEGITIMATION +DELEGITIMATIONS +DELEING +DELES +DELETABLE +DELETE +DELETED +DELETERIOUS +DELETERIOUSLY +DELETERIOUSNESS +DELETES +DELETING +DELETION +DELETIONS +DELF +DELFS +DELFT +DELFTS +DELFTWARE +DELFTWARES +DELI +DELIBERATE +DELIBERATED +DELIBERATELY +DELIBERATENESS +DELIBERATES +DELIBERATING +DELIBERATION +DELIBERATIONS +DELIBERATIVE +DELIBERATIVELY +DELICACIES +DELICACY +DELICATE +DELICATELY +DELICATES +DELICATESSEN +DELICATESSENS +DELICIOUS +DELICIOUSLY +DELICIOUSNESS +DELICIOUSNESSES +DELICT +DELICTS +DELIGHT +DELIGHTED +DELIGHTEDLY +DELIGHTEDNESS +DELIGHTEDNESSES +DELIGHTER +DELIGHTERS +DELIGHTFUL +DELIGHTFULLY +DELIGHTFULNESS +DELIGHTING +DELIGHTS +DELIGHTSOME +DELIME +DELIMED +DELIMES +DELIMING +DELIMIT +DELIMITATION +DELIMITATIONS +DELIMITED +DELIMITER +DELIMITERS +DELIMITING +DELIMITS +DELINEATE +DELINEATED +DELINEATES +DELINEATING +DELINEATION +DELINEATIONS +DELINEATIVE +DELINEATOR +DELINEATORS +DELINQUENCIES +DELINQUENCY +DELINQUENT +DELINQUENTLY +DELINQUENTS +DELIQUESCE +DELIQUESCED +DELIQUESCENCE +DELIQUESCENCES +DELIQUESCENT +DELIQUESCES +DELIQUESCING +DELIRIA +DELIRIOUS +DELIRIOUSLY +DELIRIOUSNESS +DELIRIOUSNESSES +DELIRIUM +DELIRIUMS +DELIS +DELISH +DELIST +DELISTED +DELISTING +DELISTS +DELIVER +DELIVERABILITY +DELIVERABLE +DELIVERANCE +DELIVERANCES +DELIVERED +DELIVERER +DELIVERERS +DELIVERIES +DELIVERING +DELIVERS +DELIVERY +DELIVERYMAN +DELIVERYMEN +DELL +DELLIES +DELLS +DELLY +DELOCALIZATION +DELOCALIZATIONS +DELOCALIZE +DELOCALIZED +DELOCALIZES +DELOCALIZING +DELOUSE +DELOUSED +DELOUSER +DELOUSERS +DELOUSES +DELOUSING +DELPHIC +DELPHICALLY +DELPHINIA +DELPHINIUM +DELPHINIUMS +DELS +DELT +DELTA +DELTAIC +DELTAS +DELTIC +DELTOID +DELTOIDEI +DELTOIDEUS +DELTOIDS +DELTS +DELUDE +DELUDED +DELUDER +DELUDERS +DELUDES +DELUDING +DELUGE +DELUGED +DELUGES +DELUGING +DELUSION +DELUSIONAL +DELUSIONARY +DELUSIONS +DELUSIVE +DELUSIVELY +DELUSIVENESS +DELUSIVENESSES +DELUSORY +DELUSTER +DELUSTERED +DELUSTERING +DELUSTERS +DELUXE +DELVE +DELVED +DELVER +DELVERS +DELVES +DELVING +DEMAGNETIZATION +DEMAGNETIZE +DEMAGNETIZED +DEMAGNETIZER +DEMAGNETIZERS +DEMAGNETIZES +DEMAGNETIZING +DEMAGOG +DEMAGOGED +DEMAGOGIC +DEMAGOGICALLY +DEMAGOGIES +DEMAGOGING +DEMAGOGS +DEMAGOGUE +DEMAGOGUED +DEMAGOGUERIES +DEMAGOGUERY +DEMAGOGUES +DEMAGOGUING +DEMAGOGY +DEMAND +DEMANDABLE +DEMANDANT +DEMANDANTS +DEMANDED +DEMANDER +DEMANDERS +DEMANDING +DEMANDINGLY +DEMANDINGNESS +DEMANDINGNESSES +DEMANDS +DEMANTOID +DEMANTOIDS +DEMARCATE +DEMARCATED +DEMARCATES +DEMARCATING +DEMARCATION +DEMARCATIONS +DEMARCHE +DEMARCHES +DEMARK +DEMARKED +DEMARKING +DEMARKS +DEMAST +DEMASTED +DEMASTING +DEMASTS +DEMATERIALIZE +DEMATERIALIZED +DEMATERIALIZES +DEMATERIALIZING +DEME +DEMEAN +DEMEANED +DEMEANING +DEMEANOR +DEMEANORS +DEMEANOUR +DEMEANOURS +DEMEANS +DEMENT +DEMENTED +DEMENTEDLY +DEMENTEDNESS +DEMENTEDNESSES +DEMENTIA +DEMENTIAL +DEMENTIAS +DEMENTING +DEMENTS +DEMERARA +DEMERARAN +DEMERARAS +DEMERGE +DEMERGED +DEMERGER +DEMERGERED +DEMERGERING +DEMERGERS +DEMERGES +DEMERGING +DEMERIT +DEMERITED +DEMERITING +DEMERITS +DEMERSAL +DEMES +DEMESNE +DEMESNES +DEMETON +DEMETONS +DEMIC +DEMIES +DEMIGOD +DEMIGODDESS +DEMIGODDESSES +DEMIGODS +DEMIJOHN +DEMIJOHNS +DEMILITARIZE +DEMILITARIZED +DEMILITARIZES +DEMILITARIZING +DEMILUNE +DEMILUNES +DEMIMONDAINE +DEMIMONDAINES +DEMIMONDE +DEMIMONDES +DEMINERALIZE +DEMINERALIZED +DEMINERALIZER +DEMINERALIZERS +DEMINERALIZES +DEMINERALIZING +DEMIREP +DEMIREPS +DEMISABLE +DEMISE +DEMISED +DEMISEMIQUAVER +DEMISEMIQUAVERS +DEMISES +DEMISING +DEMISSION +DEMISSIONS +DEMISTER +DEMISTERS +DEMIT +DEMITASSE +DEMITASSES +DEMITS +DEMITTED +DEMITTING +DEMIURGE +DEMIURGES +DEMIURGIC +DEMIURGICAL +DEMIVOLT +DEMIVOLTE +DEMIVOLTES +DEMIVOLTS +DEMIWORLD +DEMIWORLDS +DEMO +DEMOB +DEMOBBED +DEMOBBING +DEMOBILIZATION +DEMOBILIZATIONS +DEMOBILIZE +DEMOBILIZED +DEMOBILIZES +DEMOBILIZING +DEMOBS +DEMOCRACIES +DEMOCRACY +DEMOCRAT +DEMOCRATIC +DEMOCRATICALLY +DEMOCRATIZATION +DEMOCRATIZE +DEMOCRATIZED +DEMOCRATIZER +DEMOCRATIZERS +DEMOCRATIZES +DEMOCRATIZING +DEMOCRATS +DEMODE +DEMODED +DEMODULATE +DEMODULATED +DEMODULATES +DEMODULATING +DEMODULATION +DEMODULATIONS +DEMODULATOR +DEMODULATORS +DEMOED +DEMOGRAPHER +DEMOGRAPHERS +DEMOGRAPHIC +DEMOGRAPHICAL +DEMOGRAPHICALLY +DEMOGRAPHICS +DEMOGRAPHIES +DEMOGRAPHY +DEMOING +DEMOISELLE +DEMOISELLES +DEMOLISH +DEMOLISHED +DEMOLISHER +DEMOLISHERS +DEMOLISHES +DEMOLISHING +DEMOLISHMENT +DEMOLISHMENTS +DEMOLITION +DEMOLITIONIST +DEMOLITIONISTS +DEMOLITIONS +DEMON +DEMONESS +DEMONESSES +DEMONETIZATION +DEMONETIZATIONS +DEMONETIZE +DEMONETIZED +DEMONETIZES +DEMONETIZING +DEMONIAC +DEMONIACAL +DEMONIACALLY +DEMONIACS +DEMONIAN +DEMONIC +DEMONICAL +DEMONICALLY +DEMONISE +DEMONISED +DEMONISES +DEMONISING +DEMONISM +DEMONISMS +DEMONIST +DEMONISTS +DEMONIZATION +DEMONIZATIONS +DEMONIZE +DEMONIZED +DEMONIZES +DEMONIZING +DEMONOLOGICAL +DEMONOLOGIES +DEMONOLOGIST +DEMONOLOGISTS +DEMONOLOGY +DEMONS +DEMONSTRABILITY +DEMONSTRABLE +DEMONSTRABLY +DEMONSTRATE +DEMONSTRATED +DEMONSTRATES +DEMONSTRATING +DEMONSTRATION +DEMONSTRATIONAL +DEMONSTRATIONS +DEMONSTRATIVE +DEMONSTRATIVELY +DEMONSTRATIVES +DEMONSTRATOR +DEMONSTRATORS +DEMORALIZATION +DEMORALIZATIONS +DEMORALIZE +DEMORALIZED +DEMORALIZER +DEMORALIZERS +DEMORALIZES +DEMORALIZING +DEMORALIZINGLY +DEMOS +DEMOSES +DEMOTE +DEMOTED +DEMOTES +DEMOTIC +DEMOTICS +DEMOTING +DEMOTION +DEMOTIONS +DEMOTIST +DEMOTISTS +DEMOUNT +DEMOUNTABLE +DEMOUNTED +DEMOUNTING +DEMOUNTS +DEMPSTER +DEMPSTERS +DEMULCENT +DEMULCENTS +DEMULSIFIED +DEMULSIFIES +DEMULSIFY +DEMULSIFYING +DEMULTIPLEXER +DEMULTIPLEXERS +DEMUR +DEMURE +DEMURELY +DEMURENESS +DEMURENESSES +DEMURER +DEMUREST +DEMURRAGE +DEMURRAGES +DEMURRAL +DEMURRALS +DEMURRED +DEMURRER +DEMURRERS +DEMURRING +DEMURS +DEMY +DEMYELINATING +DEMYELINATION +DEMYELINATIONS +DEMYSTIFICATION +DEMYSTIFIED +DEMYSTIFIES +DEMYSTIFY +DEMYSTIFYING +DEMYTHOLOGIZE +DEMYTHOLOGIZED +DEMYTHOLOGIZER +DEMYTHOLOGIZERS +DEMYTHOLOGIZES +DEMYTHOLOGIZING +DEN +DENAR +DENARI +DENARII +DENARIUS +DENARS +DENARY +DENATIONALIZE +DENATIONALIZED +DENATIONALIZES +DENATIONALIZING +DENATURALIZE +DENATURALIZED +DENATURALIZES +DENATURALIZING +DENATURANT +DENATURANTS +DENATURATION +DENATURATIONS +DENATURE +DENATURED +DENATURES +DENATURING +DENAZIFICATION +DENAZIFICATIONS +DENAZIFIED +DENAZIFIES +DENAZIFY +DENAZIFYING +DENDRIFORM +DENDRIMER +DENDRIMERS +DENDRITE +DENDRITES +DENDRITIC +DENDROGRAM +DENDROGRAMS +DENDROID +DENDROLOGIC +DENDROLOGICAL +DENDROLOGIES +DENDROLOGIST +DENDROLOGISTS +DENDROLOGY +DENDRON +DENDRONS +DENE +DENEGATION +DENEGATIONS +DENERVATE +DENERVATED +DENERVATES +DENERVATING +DENERVATION +DENERVATIONS +DENES +DENGUE +DENGUES +DENI +DENIABILITIES +DENIABILITY +DENIABLE +DENIABLY +DENIAL +DENIALS +DENIED +DENIER +DENIERS +DENIES +DENIGRATE +DENIGRATED +DENIGRATES +DENIGRATING +DENIGRATION +DENIGRATIONS +DENIGRATIVE +DENIGRATOR +DENIGRATORS +DENIGRATORY +DENIM +DENIMED +DENIMS +DENITRATE +DENITRATED +DENITRATES +DENITRATING +DENITRIFICATION +DENITRIFIED +DENITRIFIER +DENITRIFIERS +DENITRIFIES +DENITRIFY +DENITRIFYING +DENIZEN +DENIZENED +DENIZENING +DENIZENS +DENNED +DENNING +DENOMINAL +DENOMINATE +DENOMINATED +DENOMINATES +DENOMINATING +DENOMINATION +DENOMINATIONAL +DENOMINATIONS +DENOMINATIVE +DENOMINATIVES +DENOMINATOR +DENOMINATORS +DENOTABLE +DENOTATION +DENOTATIONS +DENOTATIVE +DENOTE +DENOTED +DENOTEMENT +DENOTEMENTS +DENOTES +DENOTING +DENOTIVE +DENOUEMENT +DENOUEMENTS +DENOUNCE +DENOUNCED +DENOUNCEMENT +DENOUNCEMENTS +DENOUNCER +DENOUNCERS +DENOUNCES +DENOUNCING +DENS +DENSE +DENSELY +DENSENESS +DENSENESSES +DENSER +DENSEST +DENSIFICATION +DENSIFICATIONS +DENSIFIED +DENSIFIES +DENSIFY +DENSIFYING +DENSITIES +DENSITOMETER +DENSITOMETERS +DENSITOMETRIC +DENSITOMETRIES +DENSITOMETRY +DENSITY +DENT +DENTAL +DENTALIA +DENTALITIES +DENTALITY +DENTALIUM +DENTALIUMS +DENTALLY +DENTALS +DENTATE +DENTATED +DENTATELY +DENTATION +DENTATIONS +DENTED +DENTICLE +DENTICLES +DENTICULATE +DENTICULATED +DENTICULATION +DENTICULATIONS +DENTIFORM +DENTIFRICE +DENTIFRICES +DENTIL +DENTILED +DENTILS +DENTIN +DENTINAL +DENTINE +DENTINES +DENTING +DENTINS +DENTIST +DENTISTRIES +DENTISTRY +DENTISTS +DENTITION +DENTITIONS +DENTOID +DENTS +DENTULOUS +DENTURAL +DENTURE +DENTURES +DENTURIST +DENTURISTS +DENUCLEARIZE +DENUCLEARIZED +DENUCLEARIZES +DENUCLEARIZING +DENUDATE +DENUDATED +DENUDATES +DENUDATING +DENUDATION +DENUDATIONS +DENUDE +DENUDED +DENUDEMENT +DENUDEMENTS +DENUDER +DENUDERS +DENUDES +DENUDING +DENUMERABILITY +DENUMERABLE +DENUMERABLY +DENUNCIATION +DENUNCIATIONS +DENUNCIATIVE +DENUNCIATORY +DENY +DENYING +DENYINGLY +DEODAND +DEODANDS +DEODAR +DEODARA +DEODARAS +DEODARS +DEODORANT +DEODORANTS +DEODORIZATION +DEODORIZATIONS +DEODORIZE +DEODORIZED +DEODORIZER +DEODORIZERS +DEODORIZES +DEODORIZING +DEONTIC +DEONTOLOGICAL +DEONTOLOGIES +DEONTOLOGIST +DEONTOLOGISTS +DEONTOLOGY +DEORBIT +DEORBITED +DEORBITING +DEORBITS +DEOXIDATION +DEOXIDATIONS +DEOXIDIZE +DEOXIDIZED +DEOXIDIZER +DEOXIDIZERS +DEOXIDIZES +DEOXIDIZING +DEOXY +DEOXYGENATE +DEOXYGENATED +DEOXYGENATES +DEOXYGENATING +DEOXYGENATION +DEOXYGENATIONS +DEOXYRIBOSE +DEOXYRIBOSES +DEPAINT +DEPAINTED +DEPAINTING +DEPAINTS +DEPART +DEPARTED +DEPARTEE +DEPARTEES +DEPARTING +DEPARTMENT +DEPARTMENTAL +DEPARTMENTALIZE +DEPARTMENTALLY +DEPARTMENTS +DEPARTS +DEPARTURE +DEPARTURES +DEPAUPERATE +DEPEND +DEPENDABILITIES +DEPENDABILITY +DEPENDABLE +DEPENDABLENESS +DEPENDABLY +DEPENDANCE +DEPENDANCES +DEPENDANT +DEPENDANTS +DEPENDED +DEPENDENCE +DEPENDENCES +DEPENDENCIES +DEPENDENCY +DEPENDENT +DEPENDENTLY +DEPENDENTS +DEPENDING +DEPENDS +DEPEOPLE +DEPEOPLED +DEPEOPLES +DEPEOPLING +DEPERM +DEPERMED +DEPERMING +DEPERMS +DEPERSONALIZE +DEPERSONALIZED +DEPERSONALIZES +DEPERSONALIZING +DEPHOSPHORYLATE +DEPICT +DEPICTED +DEPICTER +DEPICTERS +DEPICTING +DEPICTION +DEPICTIONS +DEPICTOR +DEPICTORS +DEPICTS +DEPIGMENTATION +DEPIGMENTATIONS +DEPILATE +DEPILATED +DEPILATES +DEPILATING +DEPILATION +DEPILATIONS +DEPILATOR +DEPILATORIES +DEPILATORS +DEPILATORY +DEPLANE +DEPLANED +DEPLANES +DEPLANING +DEPLETABLE +DEPLETE +DEPLETED +DEPLETER +DEPLETERS +DEPLETES +DEPLETING +DEPLETION +DEPLETIONS +DEPLETIVE +DEPLORABLE +DEPLORABLENESS +DEPLORABLY +DEPLORE +DEPLORED +DEPLORER +DEPLORERS +DEPLORES +DEPLORING +DEPLORINGLY +DEPLOY +DEPLOYABLE +DEPLOYED +DEPLOYER +DEPLOYERS +DEPLOYING +DEPLOYMENT +DEPLOYMENTS +DEPLOYS +DEPLUME +DEPLUMED +DEPLUMES +DEPLUMING +DEPOLARIZATION +DEPOLARIZATIONS +DEPOLARIZE +DEPOLARIZED +DEPOLARIZER +DEPOLARIZERS +DEPOLARIZES +DEPOLARIZING +DEPOLISH +DEPOLISHED +DEPOLISHES +DEPOLISHING +DEPOLITICIZE +DEPOLITICIZED +DEPOLITICIZES +DEPOLITICIZING +DEPOLYMERIZE +DEPOLYMERIZED +DEPOLYMERIZES +DEPOLYMERIZING +DEPONE +DEPONED +DEPONENT +DEPONENTS +DEPONES +DEPONING +DEPOPULATE +DEPOPULATED +DEPOPULATES +DEPOPULATING +DEPOPULATION +DEPOPULATIONS +DEPORT +DEPORTABLE +DEPORTATION +DEPORTATIONS +DEPORTED +DEPORTEE +DEPORTEES +DEPORTER +DEPORTERS +DEPORTING +DEPORTMENT +DEPORTMENTS +DEPORTS +DEPOSABLE +DEPOSAL +DEPOSALS +DEPOSE +DEPOSED +DEPOSER +DEPOSERS +DEPOSES +DEPOSING +DEPOSIT +DEPOSITARIES +DEPOSITARY +DEPOSITED +DEPOSITING +DEPOSITION +DEPOSITIONAL +DEPOSITIONS +DEPOSITOR +DEPOSITORIES +DEPOSITORS +DEPOSITORY +DEPOSITS +DEPOT +DEPOTS +DEPRAVATION +DEPRAVATIONS +DEPRAVE +DEPRAVED +DEPRAVEDLY +DEPRAVEDNESS +DEPRAVEDNESSES +DEPRAVEMENT +DEPRAVEMENTS +DEPRAVER +DEPRAVERS +DEPRAVES +DEPRAVING +DEPRAVITIES +DEPRAVITY +DEPRECATE +DEPRECATED +DEPRECATES +DEPRECATING +DEPRECATINGLY +DEPRECATION +DEPRECATIONS +DEPRECATORILY +DEPRECATORY +DEPRECIABLE +DEPRECIATE +DEPRECIATED +DEPRECIATES +DEPRECIATING +DEPRECIATINGLY +DEPRECIATION +DEPRECIATIONS +DEPRECIATIVE +DEPRECIATOR +DEPRECIATORS +DEPRECIATORY +DEPREDATE +DEPREDATED +DEPREDATES +DEPREDATING +DEPREDATION +DEPREDATIONS +DEPREDATOR +DEPREDATORS +DEPREDATORY +DEPRENYL +DEPRENYLS +DEPRESS +DEPRESSANT +DEPRESSANTS +DEPRESSED +DEPRESSES +DEPRESSIBLE +DEPRESSING +DEPRESSINGLY +DEPRESSION +DEPRESSIONS +DEPRESSIVE +DEPRESSIVELY +DEPRESSIVES +DEPRESSOR +DEPRESSORS +DEPRESSURIZE +DEPRESSURIZED +DEPRESSURIZES +DEPRESSURIZING +DEPRIVAL +DEPRIVALS +DEPRIVATION +DEPRIVATIONS +DEPRIVE +DEPRIVED +DEPRIVER +DEPRIVERS +DEPRIVES +DEPRIVING +DEPROGRAM +DEPROGRAMED +DEPROGRAMING +DEPROGRAMMED +DEPROGRAMMER +DEPROGRAMMERS +DEPROGRAMMING +DEPROGRAMS +DEPSIDE +DEPSIDES +DEPTH +DEPTHLESS +DEPTHS +DEPURATE +DEPURATED +DEPURATES +DEPURATING +DEPURATOR +DEPURATORS +DEPUTABLE +DEPUTATION +DEPUTATIONS +DEPUTE +DEPUTED +DEPUTES +DEPUTIES +DEPUTING +DEPUTIZATION +DEPUTIZATIONS +DEPUTIZE +DEPUTIZED +DEPUTIZES +DEPUTIZING +DEPUTY +DERACINATE +DERACINATED +DERACINATES +DERACINATING +DERACINATION +DERACINATIONS +DERAIGN +DERAIGNED +DERAIGNING +DERAIGNS +DERAIL +DERAILED +DERAILING +DERAILLEUR +DERAILLEURS +DERAILMENT +DERAILMENTS +DERAILS +DERANGE +DERANGED +DERANGEMENT +DERANGEMENTS +DERANGER +DERANGERS +DERANGES +DERANGING +DERAT +DERATE +DERATED +DERATES +DERATING +DERATS +DERATTED +DERATTING +DERAY +DERAYS +DERBIES +DERBY +DERE +DEREALIZATION +DEREALIZATIONS +DEREGULATE +DEREGULATED +DEREGULATES +DEREGULATING +DEREGULATION +DEREGULATIONS +DERELICT +DERELICTION +DERELICTIONS +DERELICTS +DEREPRESS +DEREPRESSED +DEREPRESSES +DEREPRESSING +DEREPRESSION +DEREPRESSIONS +DERIDE +DERIDED +DERIDER +DERIDERS +DERIDES +DERIDING +DERIDINGLY +DERINGER +DERINGERS +DERISIBLE +DERISION +DERISIONS +DERISIVE +DERISIVELY +DERISIVENESS +DERISIVENESSES +DERISORY +DERIVABLE +DERIVATE +DERIVATES +DERIVATION +DERIVATIONAL +DERIVATIONS +DERIVATIVE +DERIVATIVELY +DERIVATIVENESS +DERIVATIVES +DERIVATIZATION +DERIVATIZATIONS +DERIVATIZE +DERIVATIZED +DERIVATIZES +DERIVATIZING +DERIVE +DERIVED +DERIVER +DERIVERS +DERIVES +DERIVING +DERM +DERMA +DERMABRASION +DERMABRASIONS +DERMAL +DERMAS +DERMATITIS +DERMATITISES +DERMATOGEN +DERMATOGENS +DERMATOGLYPHIC +DERMATOGLYPHICS +DERMATOID +DERMATOLOGIC +DERMATOLOGICAL +DERMATOLOGIES +DERMATOLOGIST +DERMATOLOGISTS +DERMATOLOGY +DERMATOMAL +DERMATOME +DERMATOMES +DERMATOPHYTE +DERMATOPHYTES +DERMATOSES +DERMATOSIS +DERMESTID +DERMESTIDS +DERMIC +DERMIS +DERMISES +DERMOID +DERMOIDS +DERMS +DERNIER +DEROGATE +DEROGATED +DEROGATES +DEROGATING +DEROGATION +DEROGATIONS +DEROGATIVE +DEROGATORILY +DEROGATORY +DERRICK +DERRICKS +DERRIERE +DERRIERES +DERRIES +DERRINGER +DERRINGERS +DERRIS +DERRISES +DERRY +DERVISH +DERVISHES +DESACRALIZATION +DESACRALIZE +DESACRALIZED +DESACRALIZES +DESACRALIZING +DESALINATE +DESALINATED +DESALINATES +DESALINATING +DESALINATION +DESALINATIONS +DESALINATOR +DESALINATORS +DESALINIZATION +DESALINIZATIONS +DESALINIZE +DESALINIZED +DESALINIZES +DESALINIZING +DESALT +DESALTED +DESALTER +DESALTERS +DESALTING +DESALTS +DESAND +DESANDED +DESANDING +DESANDS +DESCANT +DESCANTED +DESCANTER +DESCANTERS +DESCANTING +DESCANTS +DESCEND +DESCENDANT +DESCENDANTS +DESCENDED +DESCENDENT +DESCENDENTS +DESCENDER +DESCENDERS +DESCENDIBLE +DESCENDING +DESCENDS +DESCENSION +DESCENSIONS +DESCENT +DESCENTS +DESCRIBABLE +DESCRIBE +DESCRIBED +DESCRIBER +DESCRIBERS +DESCRIBES +DESCRIBING +DESCRIED +DESCRIER +DESCRIERS +DESCRIES +DESCRIPTION +DESCRIPTIONS +DESCRIPTIVE +DESCRIPTIVELY +DESCRIPTIVENESS +DESCRIPTOR +DESCRIPTORS +DESCRY +DESCRYING +DESECRATE +DESECRATED +DESECRATER +DESECRATERS +DESECRATES +DESECRATING +DESECRATION +DESECRATIONS +DESECRATOR +DESECRATORS +DESEGREGATE +DESEGREGATED +DESEGREGATES +DESEGREGATING +DESEGREGATION +DESEGREGATIONS +DESELECT +DESELECTED +DESELECTING +DESELECTS +DESENSITIZATION +DESENSITIZE +DESENSITIZED +DESENSITIZER +DESENSITIZERS +DESENSITIZES +DESENSITIZING +DESERT +DESERTED +DESERTER +DESERTERS +DESERTIC +DESERTIFICATION +DESERTIFIED +DESERTIFIES +DESERTIFY +DESERTIFYING +DESERTING +DESERTION +DESERTIONS +DESERTS +DESERVE +DESERVED +DESERVEDLY +DESERVEDNESS +DESERVEDNESSES +DESERVER +DESERVERS +DESERVES +DESERVING +DESERVINGS +DESEX +DESEXED +DESEXES +DESEXING +DESEXUALIZATION +DESEXUALIZE +DESEXUALIZED +DESEXUALIZES +DESEXUALIZING +DESHABILLE +DESHABILLES +DESICCANT +DESICCANTS +DESICCATE +DESICCATED +DESICCATES +DESICCATING +DESICCATION +DESICCATIONS +DESICCATIVE +DESICCATOR +DESICCATORS +DESIDERATA +DESIDERATE +DESIDERATED +DESIDERATES +DESIDERATING +DESIDERATION +DESIDERATIONS +DESIDERATIVE +DESIDERATUM +DESIGN +DESIGNATE +DESIGNATED +DESIGNATES +DESIGNATING +DESIGNATION +DESIGNATIONS +DESIGNATIVE +DESIGNATOR +DESIGNATORS +DESIGNATORY +DESIGNED +DESIGNEDLY +DESIGNEE +DESIGNEES +DESIGNER +DESIGNERS +DESIGNING +DESIGNINGS +DESIGNMENT +DESIGNMENTS +DESIGNS +DESILVER +DESILVERED +DESILVERING +DESILVERS +DESINENCE +DESINENCES +DESINENT +DESIPRAMINE +DESIPRAMINES +DESIRABILITIES +DESIRABILITY +DESIRABLE +DESIRABLENESS +DESIRABLENESSES +DESIRABLES +DESIRABLY +DESIRE +DESIRED +DESIRER +DESIRERS +DESIRES +DESIRING +DESIROUS +DESIROUSLY +DESIROUSNESS +DESIROUSNESSES +DESIST +DESISTANCE +DESISTANCES +DESISTED +DESISTING +DESISTS +DESK +DESKBOUND +DESKMAN +DESKMEN +DESKS +DESKTOP +DESKTOPS +DESMAN +DESMANS +DESMID +DESMIDIAN +DESMIDS +DESMOID +DESMOIDS +DESMOSOMAL +DESMOSOME +DESMOSOMES +DESOLATE +DESOLATED +DESOLATELY +DESOLATENESS +DESOLATENESSES +DESOLATER +DESOLATERS +DESOLATES +DESOLATING +DESOLATINGLY +DESOLATION +DESOLATIONS +DESOLATOR +DESOLATORS +DESORB +DESORBED +DESORBING +DESORBS +DESORPTION +DESORPTIONS +DESOXY +DESPAIR +DESPAIRED +DESPAIRER +DESPAIRERS +DESPAIRING +DESPAIRINGLY +DESPAIRS +DESPATCH +DESPATCHED +DESPATCHES +DESPATCHING +DESPERADO +DESPERADOES +DESPERADOS +DESPERATE +DESPERATELY +DESPERATENESS +DESPERATENESSES +DESPERATION +DESPERATIONS +DESPICABLE +DESPICABLENESS +DESPICABLY +DESPIRITUALIZE +DESPIRITUALIZED +DESPIRITUALIZES +DESPISAL +DESPISALS +DESPISE +DESPISED +DESPISEMENT +DESPISEMENTS +DESPISER +DESPISERS +DESPISES +DESPISING +DESPITE +DESPITED +DESPITEFUL +DESPITEFULLY +DESPITEFULNESS +DESPITEOUS +DESPITEOUSLY +DESPITES +DESPITING +DESPOIL +DESPOILED +DESPOILER +DESPOILERS +DESPOILING +DESPOILMENT +DESPOILMENTS +DESPOILS +DESPOLIATION +DESPOLIATIONS +DESPOND +DESPONDED +DESPONDENCE +DESPONDENCES +DESPONDENCIES +DESPONDENCY +DESPONDENT +DESPONDENTLY +DESPONDING +DESPONDS +DESPOT +DESPOTIC +DESPOTICALLY +DESPOTISM +DESPOTISMS +DESPOTS +DESPUMATE +DESPUMATED +DESPUMATES +DESPUMATING +DESQUAMATE +DESQUAMATED +DESQUAMATES +DESQUAMATING +DESQUAMATION +DESQUAMATIONS +DESSERT +DESSERTS +DESSERTSPOON +DESSERTSPOONFUL +DESSERTSPOONS +DESTABILIZATION +DESTABILIZE +DESTABILIZED +DESTABILIZES +DESTABILIZING +DESTAIN +DESTAINED +DESTAINING +DESTAINS +DESTINATION +DESTINATIONS +DESTINE +DESTINED +DESTINES +DESTINIES +DESTINING +DESTINY +DESTITUTE +DESTITUTED +DESTITUTENESS +DESTITUTENESSES +DESTITUTES +DESTITUTING +DESTITUTION +DESTITUTIONS +DESTRIER +DESTRIERS +DESTROY +DESTROYED +DESTROYER +DESTROYERS +DESTROYING +DESTROYS +DESTRUCT +DESTRUCTED +DESTRUCTIBILITY +DESTRUCTIBLE +DESTRUCTING +DESTRUCTION +DESTRUCTIONIST +DESTRUCTIONISTS +DESTRUCTIONS +DESTRUCTIVE +DESTRUCTIVELY +DESTRUCTIVENESS +DESTRUCTIVITIES +DESTRUCTIVITY +DESTRUCTS +DESUETUDE +DESUETUDES +DESUGAR +DESUGARED +DESUGARING +DESUGARS +DESULFUR +DESULFURED +DESULFURING +DESULFURIZATION +DESULFURIZE +DESULFURIZED +DESULFURIZES +DESULFURIZING +DESULFURS +DESULTORILY +DESULTORINESS +DESULTORINESSES +DESULTORY +DETACH +DETACHABILITIES +DETACHABILITY +DETACHABLE +DETACHABLY +DETACHED +DETACHEDLY +DETACHEDNESS +DETACHEDNESSES +DETACHER +DETACHERS +DETACHES +DETACHING +DETACHMENT +DETACHMENTS +DETAIL +DETAILED +DETAILEDLY +DETAILEDNESS +DETAILEDNESSES +DETAILER +DETAILERS +DETAILING +DETAILINGS +DETAILS +DETAIN +DETAINED +DETAINEE +DETAINEES +DETAINER +DETAINERS +DETAINING +DETAINMENT +DETAINMENTS +DETAINS +DETASSEL +DETASSELED +DETASSELING +DETASSELLED +DETASSELLING +DETASSELS +DETECT +DETECTABILITIES +DETECTABILITY +DETECTABLE +DETECTED +DETECTER +DETECTERS +DETECTING +DETECTION +DETECTIONS +DETECTIVE +DETECTIVELIKE +DETECTIVES +DETECTOR +DETECTORS +DETECTS +DETENT +DETENTE +DETENTES +DETENTION +DETENTIONS +DETENTIST +DETENTISTS +DETENTS +DETER +DETERGE +DETERGED +DETERGENCIES +DETERGENCY +DETERGENT +DETERGENTS +DETERGER +DETERGERS +DETERGES +DETERGING +DETERIORATE +DETERIORATED +DETERIORATES +DETERIORATING +DETERIORATION +DETERIORATIONS +DETERIORATIVE +DETERMENT +DETERMENTS +DETERMINABLE +DETERMINABLY +DETERMINACIES +DETERMINACY +DETERMINANT +DETERMINANTAL +DETERMINANTS +DETERMINATE +DETERMINATELY +DETERMINATENESS +DETERMINATION +DETERMINATIONS +DETERMINATIVE +DETERMINATIVES +DETERMINATOR +DETERMINATORS +DETERMINE +DETERMINED +DETERMINEDLY +DETERMINEDNESS +DETERMINER +DETERMINERS +DETERMINES +DETERMINING +DETERMINISM +DETERMINISMS +DETERMINIST +DETERMINISTIC +DETERMINISTS +DETERRABILITIES +DETERRABILITY +DETERRABLE +DETERRED +DETERRENCE +DETERRENCES +DETERRENT +DETERRENTLY +DETERRENTS +DETERRER +DETERRERS +DETERRING +DETERS +DETERSIVE +DETERSIVES +DETEST +DETESTABLE +DETESTABLENESS +DETESTABLY +DETESTATION +DETESTATIONS +DETESTED +DETESTER +DETESTERS +DETESTING +DETESTS +DETHATCH +DETHATCHED +DETHATCHES +DETHATCHING +DETHRONE +DETHRONED +DETHRONEMENT +DETHRONEMENTS +DETHRONER +DETHRONERS +DETHRONES +DETHRONING +DETICK +DETICKED +DETICKER +DETICKERS +DETICKING +DETICKS +DETINUE +DETINUES +DETONABILITIES +DETONABILITY +DETONABLE +DETONATABLE +DETONATE +DETONATED +DETONATES +DETONATING +DETONATION +DETONATIONS +DETONATIVE +DETONATOR +DETONATORS +DETOUR +DETOURED +DETOURING +DETOURS +DETOX +DETOXED +DETOXES +DETOXICANT +DETOXICANTS +DETOXICATE +DETOXICATED +DETOXICATES +DETOXICATING +DETOXICATION +DETOXICATIONS +DETOXIFICATION +DETOXIFICATIONS +DETOXIFIED +DETOXIFIES +DETOXIFY +DETOXIFYING +DETOXING +DETRACT +DETRACTED +DETRACTING +DETRACTION +DETRACTIONS +DETRACTIVE +DETRACTIVELY +DETRACTOR +DETRACTORS +DETRACTS +DETRAIN +DETRAINED +DETRAINING +DETRAINMENT +DETRAINMENTS +DETRAINS +DETRIBALIZATION +DETRIBALIZE +DETRIBALIZED +DETRIBALIZES +DETRIBALIZING +DETRIMENT +DETRIMENTAL +DETRIMENTALLY +DETRIMENTALS +DETRIMENTS +DETRITAL +DETRITION +DETRITIONS +DETRITUS +DETRUDE +DETRUDED +DETRUDES +DETRUDING +DETRUSION +DETRUSIONS +DETUMESCENCE +DETUMESCENCES +DETUMESCENT +DEUCE +DEUCED +DEUCEDLY +DEUCES +DEUCING +DEUTERAGONIST +DEUTERAGONISTS +DEUTERANOMALIES +DEUTERANOMALOUS +DEUTERANOMALY +DEUTERANOPE +DEUTERANOPES +DEUTERANOPIA +DEUTERANOPIAS +DEUTERANOPIC +DEUTERATE +DEUTERATED +DEUTERATES +DEUTERATING +DEUTERATION +DEUTERATIONS +DEUTERIC +DEUTERIDE +DEUTERIDES +DEUTERIUM +DEUTERIUMS +DEUTERON +DEUTERONS +DEUTEROSTOME +DEUTEROSTOMES +DEUTOPLASM +DEUTOPLASMS +DEUTZIA +DEUTZIAS +DEV +DEVA +DEVALUATE +DEVALUATED +DEVALUATES +DEVALUATING +DEVALUATION +DEVALUATIONS +DEVALUE +DEVALUED +DEVALUES +DEVALUING +DEVAS +DEVASTATE +DEVASTATED +DEVASTATES +DEVASTATING +DEVASTATINGLY +DEVASTATION +DEVASTATIONS +DEVASTATIVE +DEVASTATOR +DEVASTATORS +DEVEIN +DEVEINED +DEVEINING +DEVEINS +DEVEL +DEVELED +DEVELING +DEVELOP +DEVELOPABLE +DEVELOPE +DEVELOPED +DEVELOPER +DEVELOPERS +DEVELOPES +DEVELOPING +DEVELOPMENT +DEVELOPMENTAL +DEVELOPMENTALLY +DEVELOPMENTS +DEVELOPPE +DEVELOPPES +DEVELOPS +DEVELS +DEVERBAL +DEVERBALS +DEVERBATIVE +DEVERBATIVES +DEVEST +DEVESTED +DEVESTING +DEVESTS +DEVIANCE +DEVIANCES +DEVIANCIES +DEVIANCY +DEVIANT +DEVIANTS +DEVIATE +DEVIATED +DEVIATES +DEVIATING +DEVIATION +DEVIATIONISM +DEVIATIONISMS +DEVIATIONIST +DEVIATIONISTS +DEVIATIONS +DEVIATIVE +DEVIATOR +DEVIATORS +DEVIATORY +DEVICE +DEVICES +DEVIL +DEVILED +DEVILFISH +DEVILFISHES +DEVILING +DEVILISH +DEVILISHLY +DEVILISHNESS +DEVILISHNESSES +DEVILKIN +DEVILKINS +DEVILLED +DEVILLING +DEVILMENT +DEVILMENTS +DEVILRIES +DEVILRY +DEVILS +DEVILTRIES +DEVILTRY +DEVILWOOD +DEVILWOODS +DEVIOUS +DEVIOUSLY +DEVIOUSNESS +DEVIOUSNESSES +DEVISABLE +DEVISAL +DEVISALS +DEVISE +DEVISED +DEVISEE +DEVISEES +DEVISER +DEVISERS +DEVISES +DEVISING +DEVISOR +DEVISORS +DEVITALIZE +DEVITALIZED +DEVITALIZES +DEVITALIZING +DEVITRIFICATION +DEVITRIFIED +DEVITRIFIES +DEVITRIFY +DEVITRIFYING +DEVOCALIZE +DEVOCALIZED +DEVOCALIZES +DEVOCALIZING +DEVOICE +DEVOICED +DEVOICES +DEVOICING +DEVOID +DEVOIR +DEVOIRS +DEVOLUTION +DEVOLUTIONARY +DEVOLUTIONIST +DEVOLUTIONISTS +DEVOLUTIONS +DEVOLVE +DEVOLVED +DEVOLVES +DEVOLVING +DEVON +DEVONIAN +DEVONS +DEVOTE +DEVOTED +DEVOTEDLY +DEVOTEDNESS +DEVOTEDNESSES +DEVOTEE +DEVOTEES +DEVOTEMENT +DEVOTEMENTS +DEVOTES +DEVOTING +DEVOTION +DEVOTIONAL +DEVOTIONALLY +DEVOTIONALS +DEVOTIONS +DEVOUR +DEVOURED +DEVOURER +DEVOURERS +DEVOURING +DEVOURS +DEVOUT +DEVOUTER +DEVOUTEST +DEVOUTLY +DEVOUTNESS +DEVOUTNESSES +DEVS +DEW +DEWAN +DEWANS +DEWAR +DEWARS +DEWATER +DEWATERED +DEWATERER +DEWATERERS +DEWATERING +DEWATERS +DEWAX +DEWAXED +DEWAXES +DEWAXING +DEWBERRIES +DEWBERRY +DEWCLAW +DEWCLAWED +DEWCLAWS +DEWDROP +DEWDROPS +DEWED +DEWFALL +DEWFALLS +DEWIER +DEWIEST +DEWILY +DEWINESS +DEWINESSES +DEWING +DEWLAP +DEWLAPPED +DEWLAPS +DEWLESS +DEWOOL +DEWOOLED +DEWOOLING +DEWOOLS +DEWORM +DEWORMED +DEWORMER +DEWORMERS +DEWORMING +DEWORMS +DEWS +DEWY +DEX +DEXAMETHASONE +DEXAMETHASONES +DEXES +DEXIE +DEXIES +DEXTER +DEXTERITIES +DEXTERITY +DEXTEROUS +DEXTEROUSLY +DEXTEROUSNESS +DEXTEROUSNESSES +DEXTRAL +DEXTRALLY +DEXTRAN +DEXTRANASE +DEXTRANASES +DEXTRANS +DEXTRIN +DEXTRINE +DEXTRINES +DEXTRINS +DEXTRO +DEXTROROTARY +DEXTROROTATORY +DEXTRORSE +DEXTROSE +DEXTROSES +DEXTROUS +DEXY +DEY +DEYS +DEZINC +DEZINCED +DEZINCING +DEZINCKED +DEZINCKING +DEZINCS +DHAK +DHAKS +DHAL +DHALS +DHARMA +DHARMAS +DHARMIC +DHARNA +DHARNAS +DHOBI +DHOBIS +DHOLE +DHOLES +DHOOLIES +DHOOLY +DHOORA +DHOORAS +DHOOTI +DHOOTIE +DHOOTIES +DHOOTIS +DHOTI +DHOTIS +DHOURRA +DHOURRAS +DHOW +DHOWS +DHURNA +DHURNAS +DHURRIE +DHURRIES +DHUTI +DHUTIS +DIABASE +DIABASES +DIABASIC +DIABETES +DIABETIC +DIABETICS +DIABETOGENIC +DIABETOLOGIST +DIABETOLOGISTS +DIABLERIE +DIABLERIES +DIABLERY +DIABOLIC +DIABOLICAL +DIABOLICALLY +DIABOLICALNESS +DIABOLISM +DIABOLISMS +DIABOLIST +DIABOLISTS +DIABOLIZE +DIABOLIZED +DIABOLIZES +DIABOLIZING +DIABOLO +DIABOLOS +DIACETYL +DIACETYLS +DIACHRONIC +DIACHRONICALLY +DIACHRONIES +DIACHRONY +DIACID +DIACIDIC +DIACIDS +DIACONAL +DIACONATE +DIACONATES +DIACRITIC +DIACRITICAL +DIACRITICS +DIACTINIC +DIADELPHOUS +DIADEM +DIADEMED +DIADEMING +DIADEMS +DIADROMOUS +DIAERESES +DIAERESIS +DIAERETIC +DIAGENESES +DIAGENESIS +DIAGENETIC +DIAGENETICALLY +DIAGEOTROPIC +DIAGNOSABLE +DIAGNOSE +DIAGNOSEABLE +DIAGNOSED +DIAGNOSES +DIAGNOSING +DIAGNOSIS +DIAGNOSTIC +DIAGNOSTICAL +DIAGNOSTICALLY +DIAGNOSTICIAN +DIAGNOSTICIANS +DIAGNOSTICS +DIAGONAL +DIAGONALIZABLE +DIAGONALIZATION +DIAGONALIZE +DIAGONALIZED +DIAGONALIZES +DIAGONALIZING +DIAGONALLY +DIAGONALS +DIAGRAM +DIAGRAMED +DIAGRAMING +DIAGRAMMABLE +DIAGRAMMATIC +DIAGRAMMATICAL +DIAGRAMMED +DIAGRAMMING +DIAGRAMS +DIAGRAPH +DIAGRAPHS +DIAKINESES +DIAKINESIS +DIAL +DIALECT +DIALECTAL +DIALECTALLY +DIALECTIC +DIALECTICAL +DIALECTICALLY +DIALECTICIAN +DIALECTICIANS +DIALECTICS +DIALECTOLOGICAL +DIALECTOLOGIES +DIALECTOLOGIST +DIALECTOLOGISTS +DIALECTOLOGY +DIALECTS +DIALED +DIALER +DIALERS +DIALING +DIALINGS +DIALIST +DIALISTS +DIALLAGE +DIALLAGES +DIALLED +DIALLEL +DIALLER +DIALLERS +DIALLING +DIALLINGS +DIALLIST +DIALLISTS +DIALOG +DIALOGED +DIALOGER +DIALOGERS +DIALOGIC +DIALOGICAL +DIALOGICALLY +DIALOGING +DIALOGIST +DIALOGISTIC +DIALOGISTS +DIALOGS +DIALOGUE +DIALOGUED +DIALOGUER +DIALOGUERS +DIALOGUES +DIALOGUING +DIALS +DIALYSATE +DIALYSATES +DIALYSE +DIALYSED +DIALYSER +DIALYSERS +DIALYSES +DIALYSING +DIALYSIS +DIALYTIC +DIALYZABLE +DIALYZATE +DIALYZATES +DIALYZE +DIALYZED +DIALYZER +DIALYZERS +DIALYZES +DIALYZING +DIAMAGNET +DIAMAGNETIC +DIAMAGNETISM +DIAMAGNETISMS +DIAMAGNETS +DIAMANTE +DIAMANTES +DIAMETER +DIAMETERS +DIAMETRAL +DIAMETRIC +DIAMETRICAL +DIAMETRICALLY +DIAMIDE +DIAMIDES +DIAMIN +DIAMINE +DIAMINES +DIAMINS +DIAMOND +DIAMONDBACK +DIAMONDBACKS +DIAMONDED +DIAMONDIFEROUS +DIAMONDING +DIAMONDS +DIANDROUS +DIANTHUS +DIANTHUSES +DIAPASON +DIAPASONS +DIAPAUSE +DIAPAUSED +DIAPAUSES +DIAPAUSING +DIAPEDESES +DIAPEDESIS +DIAPER +DIAPERED +DIAPERING +DIAPERS +DIAPHANEITIES +DIAPHANEITY +DIAPHANOUS +DIAPHANOUSLY +DIAPHANOUSNESS +DIAPHONE +DIAPHONES +DIAPHONIES +DIAPHONY +DIAPHORASE +DIAPHORASES +DIAPHORESES +DIAPHORESIS +DIAPHORETIC +DIAPHORETICS +DIAPHRAGM +DIAPHRAGMATIC +DIAPHRAGMED +DIAPHRAGMING +DIAPHRAGMS +DIAPHYSEAL +DIAPHYSES +DIAPHYSIAL +DIAPHYSIS +DIAPIR +DIAPIRIC +DIAPIRS +DIAPOSITIVE +DIAPOSITIVES +DIAPSID +DIAPSIDS +DIARCHIC +DIARCHIES +DIARCHY +DIARIES +DIARIST +DIARISTIC +DIARISTS +DIARRHEA +DIARRHEAL +DIARRHEAS +DIARRHEIC +DIARRHETIC +DIARRHOEA +DIARRHOEAS +DIARTHROSES +DIARTHROSIS +DIARY +DIASPORA +DIASPORAS +DIASPORE +DIASPORES +DIASPORIC +DIASTASE +DIASTASES +DIASTASIC +DIASTATIC +DIASTEM +DIASTEMA +DIASTEMAS +DIASTEMATA +DIASTEMS +DIASTER +DIASTEREOISOMER +DIASTEREOMER +DIASTEREOMERIC +DIASTEREOMERS +DIASTERS +DIASTOLE +DIASTOLES +DIASTOLIC +DIASTRAL +DIASTROPHIC +DIASTROPHICALLY +DIASTROPHISM +DIASTROPHISMS +DIATESSARON +DIATESSARONS +DIATHERMANOUS +DIATHERMIC +DIATHERMIES +DIATHERMY +DIATHESES +DIATHESIS +DIATHETIC +DIATOM +DIATOMACEOUS +DIATOMIC +DIATOMITE +DIATOMITES +DIATOMS +DIATONIC +DIATONICALLY +DIATRIBE +DIATRIBES +DIATRON +DIATRONS +DIATROPIC +DIAZEPAM +DIAZEPAMS +DIAZIN +DIAZINE +DIAZINES +DIAZINON +DIAZINONS +DIAZINS +DIAZO +DIAZOLE +DIAZOLES +DIAZONIUM +DIAZONIUMS +DIAZOTIZATION +DIAZOTIZATIONS +DIAZOTIZE +DIAZOTIZED +DIAZOTIZES +DIAZOTIZING +DIB +DIBASIC +DIBBED +DIBBER +DIBBERS +DIBBING +DIBBLE +DIBBLED +DIBBLER +DIBBLERS +DIBBLES +DIBBLING +DIBBUK +DIBBUKIM +DIBBUKS +DIBENZOFURAN +DIBENZOFURANS +DIBROMIDE +DIBROMIDES +DIBS +DICAMBA +DICAMBAS +DICARBOXYLIC +DICAST +DICASTIC +DICASTS +DICE +DICED +DICENTRA +DICENTRAS +DICENTRIC +DICENTRICS +DICER +DICERS +DICES +DICEY +DICHASIA +DICHASIAL +DICHASIUM +DICHLOROBENZENE +DICHLOROETHANE +DICHLOROETHANES +DICHLORVOS +DICHLORVOSES +DICHOGAMIES +DICHOGAMOUS +DICHOGAMY +DICHONDRA +DICHONDRAS +DICHOTIC +DICHOTICALLY +DICHOTOMIES +DICHOTOMIST +DICHOTOMISTS +DICHOTOMIZATION +DICHOTOMIZE +DICHOTOMIZED +DICHOTOMIZES +DICHOTOMIZING +DICHOTOMOUS +DICHOTOMOUSLY +DICHOTOMOUSNESS +DICHOTOMY +DICHROIC +DICHROISM +DICHROISMS +DICHROITE +DICHROITES +DICHROMAT +DICHROMATE +DICHROMATES +DICHROMATIC +DICHROMATISM +DICHROMATISMS +DICHROMATS +DICHROMIC +DICHROSCOPE +DICHROSCOPES +DICIER +DICIEST +DICING +DICK +DICKCISSEL +DICKCISSELS +DICKED +DICKENS +DICKENSES +DICKER +DICKERED +DICKERING +DICKERS +DICKEY +DICKEYS +DICKHEAD +DICKHEADS +DICKIE +DICKIER +DICKIES +DICKIEST +DICKING +DICKS +DICKY +DICLINIES +DICLINISM +DICLINISMS +DICLINOUS +DICLINY +DICOT +DICOTS +DICOTYL +DICOTYLEDON +DICOTYLEDONOUS +DICOTYLEDONS +DICOTYLS +DICOUMARIN +DICOUMARINS +DICOUMAROL +DICOUMAROLS +DICROTAL +DICROTIC +DICROTISM +DICROTISMS +DICTA +DICTATE +DICTATED +DICTATES +DICTATING +DICTATION +DICTATIONS +DICTATOR +DICTATORIAL +DICTATORIALLY +DICTATORIALNESS +DICTATORS +DICTATORSHIP +DICTATORSHIPS +DICTIER +DICTIEST +DICTION +DICTIONAL +DICTIONALLY +DICTIONARIES +DICTIONARY +DICTIONS +DICTUM +DICTUMS +DICTY +DICTYOSOME +DICTYOSOMES +DICTYOSTELE +DICTYOSTELES +DICUMAROL +DICUMAROLS +DICYCLIC +DICYCLIES +DICYCLY +DICYNODONT +DICYNODONTS +DID +DIDACT +DIDACTIC +DIDACTICAL +DIDACTICALLY +DIDACTICISM +DIDACTICISMS +DIDACTICS +DIDACTS +DIDACTYL +DIDAPPER +DIDAPPERS +DIDDLE +DIDDLED +DIDDLER +DIDDLERS +DIDDLES +DIDDLEY +DIDDLEYS +DIDDLIES +DIDDLING +DIDDLY +DIDGERIDOO +DIDGERIDOOS +DIDIE +DIDIES +DIDJERIDOO +DIDJERIDOOS +DIDJERIDU +DIDJERIDUS +DIDO +DIDOES +DIDOS +DIDST +DIDY +DIDYMIUM +DIDYMIUMS +DIDYMOUS +DIDYNAMIES +DIDYNAMY +DIE +DIEBACK +DIEBACKS +DIECIOUS +DIED +DIEFFENBACHIA +DIEFFENBACHIAS +DIEHARD +DIEHARDS +DIEING +DIEL +DIELDRIN +DIELDRINS +DIELECTRIC +DIELECTRICS +DIEMAKER +DIEMAKERS +DIENCEPHALA +DIENCEPHALIC +DIENCEPHALON +DIENE +DIENES +DIEOFF +DIEOFFS +DIERESES +DIERESIS +DIERETIC +DIES +DIESEL +DIESELED +DIESELING +DIESELINGS +DIESELIZATION +DIESELIZATIONS +DIESELIZE +DIESELIZED +DIESELIZES +DIESELIZING +DIESELS +DIESES +DIESINKER +DIESINKERS +DIESIS +DIESTER +DIESTERS +DIESTOCK +DIESTOCKS +DIESTROUS +DIESTRUM +DIESTRUMS +DIESTRUS +DIESTRUSES +DIET +DIETARIES +DIETARILY +DIETARY +DIETED +DIETER +DIETERS +DIETETIC +DIETETICALLY +DIETETICS +DIETHER +DIETHERS +DIETICIAN +DIETICIANS +DIETING +DIETITIAN +DIETITIANS +DIETS +DIF +DIFF +DIFFER +DIFFERED +DIFFERENCE +DIFFERENCED +DIFFERENCES +DIFFERENCING +DIFFERENT +DIFFERENTIA +DIFFERENTIABLE +DIFFERENTIAE +DIFFERENTIAL +DIFFERENTIALLY +DIFFERENTIALS +DIFFERENTIATE +DIFFERENTIATED +DIFFERENTIATES +DIFFERENTIATING +DIFFERENTIATION +DIFFERENTLY +DIFFERENTNESS +DIFFERENTNESSES +DIFFERING +DIFFERS +DIFFICILE +DIFFICULT +DIFFICULTIES +DIFFICULTLY +DIFFICULTY +DIFFIDENCE +DIFFIDENCES +DIFFIDENT +DIFFIDENTLY +DIFFRACT +DIFFRACTED +DIFFRACTING +DIFFRACTION +DIFFRACTIONS +DIFFRACTOMETER +DIFFRACTOMETERS +DIFFRACTOMETRIC +DIFFRACTOMETRY +DIFFRACTS +DIFFS +DIFFUSE +DIFFUSED +DIFFUSELY +DIFFUSENESS +DIFFUSENESSES +DIFFUSER +DIFFUSERS +DIFFUSES +DIFFUSIBLE +DIFFUSING +DIFFUSION +DIFFUSIONAL +DIFFUSIONISM +DIFFUSIONISMS +DIFFUSIONIST +DIFFUSIONISTS +DIFFUSIONS +DIFFUSIVE +DIFFUSIVELY +DIFFUSIVENESS +DIFFUSIVENESSES +DIFFUSIVITIES +DIFFUSIVITY +DIFFUSOR +DIFFUSORS +DIFS +DIFUNCTIONAL +DIG +DIGAMIES +DIGAMIST +DIGAMISTS +DIGAMMA +DIGAMMAS +DIGAMOUS +DIGAMY +DIGASTRIC +DIGASTRICS +DIGENESES +DIGENESIS +DIGENETIC +DIGERATI +DIGEST +DIGESTED +DIGESTER +DIGESTERS +DIGESTIBILITIES +DIGESTIBILITY +DIGESTIBLE +DIGESTIF +DIGESTIFS +DIGESTING +DIGESTION +DIGESTIONS +DIGESTIVE +DIGESTIVELY +DIGESTIVES +DIGESTOR +DIGESTORS +DIGESTS +DIGGED +DIGGER +DIGGERS +DIGGING +DIGGINGS +DIGHT +DIGHTED +DIGHTING +DIGHTS +DIGIT +DIGITAL +DIGITALIN +DIGITALINS +DIGITALIS +DIGITALISES +DIGITALIZATION +DIGITALIZATIONS +DIGITALIZE +DIGITALIZED +DIGITALIZES +DIGITALIZING +DIGITALLY +DIGITALS +DIGITATE +DIGITATED +DIGITATELY +DIGITIGRADE +DIGITIZATION +DIGITIZATIONS +DIGITIZE +DIGITIZED +DIGITIZER +DIGITIZERS +DIGITIZES +DIGITIZING +DIGITONIN +DIGITONINS +DIGITOXIGENIN +DIGITOXIGENINS +DIGITOXIN +DIGITOXINS +DIGITS +DIGLOSSIA +DIGLOSSIAS +DIGLOSSIC +DIGLOT +DIGLOTS +DIGLYCERIDE +DIGLYCERIDES +DIGNIFIED +DIGNIFIES +DIGNIFY +DIGNIFYING +DIGNITARIES +DIGNITARY +DIGNITIES +DIGNITY +DIGOXIN +DIGOXINS +DIGRAPH +DIGRAPHIC +DIGRAPHICALLY +DIGRAPHS +DIGRESS +DIGRESSED +DIGRESSES +DIGRESSING +DIGRESSION +DIGRESSIONAL +DIGRESSIONARY +DIGRESSIONS +DIGRESSIVE +DIGRESSIVELY +DIGRESSIVENESS +DIGS +DIHEDRAL +DIHEDRALS +DIHEDRON +DIHEDRONS +DIHYBRID +DIHYBRIDS +DIHYDRIC +DIKDIK +DIKDIKS +DIKE +DIKED +DIKER +DIKERS +DIKES +DIKEY +DIKING +DIKTAT +DIKTATS +DILAPIDATE +DILAPIDATED +DILAPIDATES +DILAPIDATING +DILAPIDATION +DILAPIDATIONS +DILATABILITIES +DILATABILITY +DILATABLE +DILATABLY +DILATANCIES +DILATANCY +DILATANT +DILATANTS +DILATATE +DILATATION +DILATATIONAL +DILATATIONS +DILATATOR +DILATATORS +DILATE +DILATED +DILATER +DILATERS +DILATES +DILATING +DILATION +DILATIONS +DILATIVE +DILATOMETER +DILATOMETERS +DILATOMETRIC +DILATOMETRIES +DILATOMETRY +DILATOR +DILATORILY +DILATORINESS +DILATORINESSES +DILATORS +DILATORY +DILDO +DILDOE +DILDOES +DILDOS +DILEMMA +DILEMMAS +DILEMMATIC +DILEMMIC +DILETTANTE +DILETTANTES +DILETTANTI +DILETTANTISH +DILETTANTISM +DILETTANTISMS +DILIGENCE +DILIGENCES +DILIGENT +DILIGENTLY +DILL +DILLED +DILLIES +DILLS +DILLY +DILLYDALLIED +DILLYDALLIES +DILLYDALLY +DILLYDALLYING +DILTIAZEM +DILTIAZEMS +DILUENT +DILUENTS +DILUTE +DILUTED +DILUTENESS +DILUTENESSES +DILUTER +DILUTERS +DILUTES +DILUTING +DILUTION +DILUTIONS +DILUTIVE +DILUTOR +DILUTORS +DILUVIA +DILUVIAL +DILUVIAN +DILUVION +DILUVIONS +DILUVIUM +DILUVIUMS +DIM +DIME +DIMENHYDRINATE +DIMENHYDRINATES +DIMENSION +DIMENSIONAL +DIMENSIONALITY +DIMENSIONALLY +DIMENSIONED +DIMENSIONING +DIMENSIONLESS +DIMENSIONS +DIMER +DIMERCAPROL +DIMERCAPROLS +DIMERIC +DIMERISM +DIMERISMS +DIMERIZATION +DIMERIZATIONS +DIMERIZE +DIMERIZED +DIMERIZES +DIMERIZING +DIMEROUS +DIMERS +DIMES +DIMETER +DIMETERS +DIMETHOATE +DIMETHOATES +DIMETHYL +DIMETHYLS +DIMETRIC +DIMIDIATE +DIMIDIATED +DIMIDIATES +DIMIDIATING +DIMINISH +DIMINISHABLE +DIMINISHED +DIMINISHES +DIMINISHING +DIMINISHMENT +DIMINISHMENTS +DIMINUENDO +DIMINUENDOS +DIMINUTION +DIMINUTIONS +DIMINUTIVE +DIMINUTIVELY +DIMINUTIVENESS +DIMINUTIVES +DIMITIES +DIMITY +DIMLY +DIMMABLE +DIMMED +DIMMER +DIMMERS +DIMMEST +DIMMING +DIMNESS +DIMNESSES +DIMORPH +DIMORPHIC +DIMORPHISM +DIMORPHISMS +DIMORPHOUS +DIMORPHS +DIMOUT +DIMOUTS +DIMPLE +DIMPLED +DIMPLES +DIMPLIER +DIMPLIEST +DIMPLING +DIMPLY +DIMS +DIMWIT +DIMWITS +DIMWITTED +DIN +DINAR +DINARS +DINDLE +DINDLED +DINDLES +DINDLING +DINE +DINED +DINER +DINERIC +DINERO +DINEROS +DINERS +DINES +DINETTE +DINETTES +DING +DINGBAT +DINGBATS +DINGDONG +DINGDONGED +DINGDONGING +DINGDONGS +DINGE +DINGED +DINGER +DINGERS +DINGES +DINGEY +DINGEYS +DINGHIES +DINGHY +DINGIER +DINGIES +DINGIEST +DINGILY +DINGINESS +DINGINESSES +DINGING +DINGLE +DINGLEBERRIES +DINGLEBERRY +DINGLES +DINGO +DINGOES +DINGS +DINGUS +DINGUSES +DINGY +DINING +DINITRO +DINITROBENZENE +DINITROBENZENES +DINITROPHENOL +DINITROPHENOLS +DINK +DINKED +DINKEY +DINKEYS +DINKIER +DINKIES +DINKIEST +DINKING +DINKLY +DINKS +DINKUM +DINKUMS +DINKY +DINNED +DINNER +DINNERLESS +DINNERS +DINNERTIME +DINNERTIMES +DINNERWARE +DINNERWARES +DINNING +DINO +DINOFLAGELLATE +DINOFLAGELLATES +DINOS +DINOSAUR +DINOSAURIAN +DINOSAURS +DINOTHERE +DINOTHERES +DINS +DINT +DINTED +DINTING +DINTS +DINUCLEOTIDE +DINUCLEOTIDES +DIOBOL +DIOBOLON +DIOBOLONS +DIOBOLS +DIOCESAN +DIOCESANS +DIOCESE +DIOCESES +DIODE +DIODES +DIOECIES +DIOECIOUS +DIOECISM +DIOECISMS +DIOECY +DIOESTRUS +DIOESTRUSES +DIOICOUS +DIOL +DIOLEFIN +DIOLEFINS +DIOLS +DIONYSIAC +DIONYSIAN +DIOPSIDE +DIOPSIDES +DIOPSIDIC +DIOPTASE +DIOPTASES +DIOPTER +DIOPTERS +DIOPTRAL +DIOPTRE +DIOPTRES +DIOPTRIC +DIOPTRICS +DIORAMA +DIORAMAS +DIORAMIC +DIORITE +DIORITES +DIORITIC +DIOSGENIN +DIOSGENINS +DIOXAN +DIOXANE +DIOXANES +DIOXANS +DIOXID +DIOXIDE +DIOXIDES +DIOXIDS +DIOXIN +DIOXINS +DIP +DIPEPTIDASE +DIPEPTIDASES +DIPEPTIDE +DIPEPTIDES +DIPHASE +DIPHASIC +DIPHENHYDRAMINE +DIPHENYL +DIPHENYLAMINE +DIPHENYLAMINES +DIPHENYLS +DIPHOSGENE +DIPHOSGENES +DIPHOSPHATE +DIPHOSPHATES +DIPHTHERIA +DIPHTHERIAL +DIPHTHERIAS +DIPHTHERITIC +DIPHTHEROID +DIPHTHEROIDS +DIPHTHONG +DIPHTHONGAL +DIPHTHONGED +DIPHTHONGING +DIPHTHONGIZE +DIPHTHONGIZED +DIPHTHONGIZES +DIPHTHONGIZING +DIPHTHONGS +DIPHYLETIC +DIPHYODONT +DIPLEGIA +DIPLEGIAS +DIPLEGIC +DIPLEX +DIPLEXER +DIPLEXERS +DIPLOBLASTIC +DIPLOCOCCI +DIPLOCOCCUS +DIPLODOCUS +DIPLODOCUSES +DIPLOE +DIPLOES +DIPLOIC +DIPLOID +DIPLOIDIC +DIPLOIDIES +DIPLOIDS +DIPLOIDY +DIPLOMA +DIPLOMACIES +DIPLOMACY +DIPLOMAED +DIPLOMAING +DIPLOMAS +DIPLOMAT +DIPLOMATA +DIPLOMATE +DIPLOMATES +DIPLOMATIC +DIPLOMATICALLY +DIPLOMATIST +DIPLOMATISTS +DIPLOMATS +DIPLONT +DIPLONTIC +DIPLONTS +DIPLOPHASE +DIPLOPHASES +DIPLOPIA +DIPLOPIAS +DIPLOPIC +DIPLOPOD +DIPLOPODS +DIPLOSES +DIPLOSIS +DIPLOTENE +DIPLOTENES +DIPNET +DIPNETS +DIPNETTED +DIPNETTING +DIPNOAN +DIPNOANS +DIPODIC +DIPODIES +DIPODY +DIPOLAR +DIPOLE +DIPOLES +DIPPABLE +DIPPED +DIPPER +DIPPERFUL +DIPPERFULS +DIPPERS +DIPPIER +DIPPIEST +DIPPINESS +DIPPINESSES +DIPPING +DIPPY +DIPROTIC +DIPS +DIPSADES +DIPSAS +DIPSHIT +DIPSHITS +DIPSO +DIPSOMANIA +DIPSOMANIAC +DIPSOMANIACAL +DIPSOMANIACS +DIPSOMANIAS +DIPSOS +DIPSTICK +DIPSTICKS +DIPT +DIPTERA +DIPTERAL +DIPTERAN +DIPTERANS +DIPTEROCARP +DIPTEROCARPS +DIPTERON +DIPTEROUS +DIPTYCA +DIPTYCAS +DIPTYCH +DIPTYCHS +DIQUAT +DIQUATS +DIRAM +DIRAMS +DIRDUM +DIRDUMS +DIRE +DIRECT +DIRECTED +DIRECTEDNESS +DIRECTEDNESSES +DIRECTER +DIRECTEST +DIRECTING +DIRECTION +DIRECTIONAL +DIRECTIONALITY +DIRECTIONLESS +DIRECTIONS +DIRECTIVE +DIRECTIVES +DIRECTIVITIES +DIRECTIVITY +DIRECTLY +DIRECTNESS +DIRECTNESSES +DIRECTOR +DIRECTORATE +DIRECTORATES +DIRECTORIAL +DIRECTORIES +DIRECTORS +DIRECTORSHIP +DIRECTORSHIPS +DIRECTORY +DIRECTRESS +DIRECTRESSES +DIRECTRICE +DIRECTRICES +DIRECTRIX +DIRECTRIXES +DIRECTS +DIREFUL +DIREFULLY +DIRELY +DIRENESS +DIRENESSES +DIRER +DIREST +DIRGE +DIRGEFUL +DIRGELIKE +DIRGES +DIRHAM +DIRHAMS +DIRIGIBLE +DIRIGIBLES +DIRIGISME +DIRIGISMES +DIRIGISTE +DIRIMENT +DIRK +DIRKED +DIRKING +DIRKS +DIRL +DIRLED +DIRLING +DIRLS +DIRNDL +DIRNDLS +DIRT +DIRTBAG +DIRTBAGS +DIRTIED +DIRTIER +DIRTIES +DIRTIEST +DIRTILY +DIRTINESS +DIRTINESSES +DIRTS +DIRTY +DIRTYING +DIS +DISABILITIES +DISABILITY +DISABLE +DISABLED +DISABLEMENT +DISABLEMENTS +DISABLER +DISABLERS +DISABLES +DISABLING +DISABUSAL +DISABUSALS +DISABUSE +DISABUSED +DISABUSES +DISABUSING +DISACCHARIDASE +DISACCHARIDASES +DISACCHARIDE +DISACCHARIDES +DISACCORD +DISACCORDED +DISACCORDING +DISACCORDS +DISACCUSTOM +DISACCUSTOMED +DISACCUSTOMING +DISACCUSTOMS +DISADVANTAGE +DISADVANTAGED +DISADVANTAGEOUS +DISADVANTAGES +DISADVANTAGING +DISAFFECT +DISAFFECTED +DISAFFECTING +DISAFFECTION +DISAFFECTIONS +DISAFFECTS +DISAFFILIATE +DISAFFILIATED +DISAFFILIATES +DISAFFILIATING +DISAFFILIATION +DISAFFILIATIONS +DISAFFIRM +DISAFFIRMANCE +DISAFFIRMANCES +DISAFFIRMED +DISAFFIRMING +DISAFFIRMS +DISAGGREGATE +DISAGGREGATED +DISAGGREGATES +DISAGGREGATING +DISAGGREGATION +DISAGGREGATIONS +DISAGGREGATIVE +DISAGREE +DISAGREEABLE +DISAGREEABLY +DISAGREED +DISAGREEING +DISAGREEMENT +DISAGREEMENTS +DISAGREES +DISALLOW +DISALLOWANCE +DISALLOWANCES +DISALLOWED +DISALLOWING +DISALLOWS +DISAMBIGUATE +DISAMBIGUATED +DISAMBIGUATES +DISAMBIGUATING +DISAMBIGUATION +DISAMBIGUATIONS +DISANNUL +DISANNULLED +DISANNULLING +DISANNULS +DISAPPEAR +DISAPPEARANCE +DISAPPEARANCES +DISAPPEARED +DISAPPEARING +DISAPPEARS +DISAPPOINT +DISAPPOINTED +DISAPPOINTEDLY +DISAPPOINTING +DISAPPOINTINGLY +DISAPPOINTMENT +DISAPPOINTMENTS +DISAPPOINTS +DISAPPROBATION +DISAPPROBATIONS +DISAPPROVAL +DISAPPROVALS +DISAPPROVE +DISAPPROVED +DISAPPROVER +DISAPPROVERS +DISAPPROVES +DISAPPROVING +DISAPPROVINGLY +DISARM +DISARMAMENT +DISARMAMENTS +DISARMED +DISARMER +DISARMERS +DISARMING +DISARMINGLY +DISARMS +DISARRANGE +DISARRANGED +DISARRANGEMENT +DISARRANGEMENTS +DISARRANGES +DISARRANGING +DISARRAY +DISARRAYED +DISARRAYING +DISARRAYS +DISARTICULATE +DISARTICULATED +DISARTICULATES +DISARTICULATING +DISARTICULATION +DISASSEMBLE +DISASSEMBLED +DISASSEMBLES +DISASSEMBLIES +DISASSEMBLING +DISASSEMBLY +DISASSOCIATE +DISASSOCIATED +DISASSOCIATES +DISASSOCIATING +DISASSOCIATION +DISASSOCIATIONS +DISASTER +DISASTERS +DISASTROUS +DISASTROUSLY +DISAVOW +DISAVOWABLE +DISAVOWAL +DISAVOWALS +DISAVOWED +DISAVOWER +DISAVOWERS +DISAVOWING +DISAVOWS +DISBAND +DISBANDED +DISBANDING +DISBANDMENT +DISBANDMENTS +DISBANDS +DISBAR +DISBARMENT +DISBARMENTS +DISBARRED +DISBARRING +DISBARS +DISBELIEF +DISBELIEFS +DISBELIEVE +DISBELIEVED +DISBELIEVER +DISBELIEVERS +DISBELIEVES +DISBELIEVING +DISBENEFIT +DISBENEFITS +DISBOSOM +DISBOSOMED +DISBOSOMING +DISBOSOMS +DISBOUND +DISBOWEL +DISBOWELED +DISBOWELING +DISBOWELLED +DISBOWELLING +DISBOWELS +DISBRANCH +DISBRANCHED +DISBRANCHES +DISBRANCHING +DISBUD +DISBUDDED +DISBUDDING +DISBUDS +DISBURDEN +DISBURDENED +DISBURDENING +DISBURDENMENT +DISBURDENMENTS +DISBURDENS +DISBURSAL +DISBURSALS +DISBURSE +DISBURSED +DISBURSEMENT +DISBURSEMENTS +DISBURSER +DISBURSERS +DISBURSES +DISBURSING +DISC +DISCALCED +DISCANT +DISCANTED +DISCANTING +DISCANTS +DISCARD +DISCARDABLE +DISCARDED +DISCARDER +DISCARDERS +DISCARDING +DISCARDS +DISCARNATE +DISCASE +DISCASED +DISCASES +DISCASING +DISCED +DISCEPT +DISCEPTED +DISCEPTING +DISCEPTS +DISCERN +DISCERNABLE +DISCERNED +DISCERNER +DISCERNERS +DISCERNIBLE +DISCERNIBLY +DISCERNING +DISCERNINGLY +DISCERNMENT +DISCERNMENTS +DISCERNS +DISCHARGE +DISCHARGEABLE +DISCHARGED +DISCHARGEE +DISCHARGEES +DISCHARGER +DISCHARGERS +DISCHARGES +DISCHARGING +DISCI +DISCIFORM +DISCING +DISCIPLE +DISCIPLED +DISCIPLES +DISCIPLESHIP +DISCIPLESHIPS +DISCIPLINABLE +DISCIPLINAL +DISCIPLINARIAN +DISCIPLINARIANS +DISCIPLINARILY +DISCIPLINARITY +DISCIPLINARY +DISCIPLINE +DISCIPLINED +DISCIPLINER +DISCIPLINERS +DISCIPLINES +DISCIPLING +DISCIPLINING +DISCLAIM +DISCLAIMED +DISCLAIMER +DISCLAIMERS +DISCLAIMING +DISCLAIMS +DISCLAMATION +DISCLAMATIONS +DISCLIKE +DISCLIMAX +DISCLIMAXES +DISCLOSE +DISCLOSED +DISCLOSER +DISCLOSERS +DISCLOSES +DISCLOSING +DISCLOSURE +DISCLOSURES +DISCO +DISCOED +DISCOGRAPHER +DISCOGRAPHERS +DISCOGRAPHIC +DISCOGRAPHICAL +DISCOGRAPHIES +DISCOGRAPHY +DISCOID +DISCOIDAL +DISCOIDS +DISCOING +DISCOLOR +DISCOLORATION +DISCOLORATIONS +DISCOLORED +DISCOLORING +DISCOLORS +DISCOLOUR +DISCOLOURED +DISCOLOURING +DISCOLOURS +DISCOMBOBULATE +DISCOMBOBULATED +DISCOMBOBULATES +DISCOMFIT +DISCOMFITED +DISCOMFITING +DISCOMFITS +DISCOMFITURE +DISCOMFITURES +DISCOMFORT +DISCOMFORTABLE +DISCOMFORTED +DISCOMFORTING +DISCOMFORTS +DISCOMMEND +DISCOMMENDED +DISCOMMENDING +DISCOMMENDS +DISCOMMODE +DISCOMMODED +DISCOMMODES +DISCOMMODING +DISCOMPOSE +DISCOMPOSED +DISCOMPOSES +DISCOMPOSING +DISCOMPOSURE +DISCOMPOSURES +DISCONCERT +DISCONCERTED +DISCONCERTING +DISCONCERTINGLY +DISCONCERTMENT +DISCONCERTMENTS +DISCONCERTS +DISCONFIRM +DISCONFIRMED +DISCONFIRMING +DISCONFIRMS +DISCONFORMITIES +DISCONFORMITY +DISCONNECT +DISCONNECTED +DISCONNECTEDLY +DISCONNECTING +DISCONNECTION +DISCONNECTIONS +DISCONNECTS +DISCONSOLATE +DISCONSOLATELY +DISCONSOLATION +DISCONSOLATIONS +DISCONTENT +DISCONTENTED +DISCONTENTEDLY +DISCONTENTING +DISCONTENTMENT +DISCONTENTMENTS +DISCONTENTS +DISCONTINUANCE +DISCONTINUANCES +DISCONTINUATION +DISCONTINUE +DISCONTINUED +DISCONTINUES +DISCONTINUING +DISCONTINUITIES +DISCONTINUITY +DISCONTINUOUS +DISCONTINUOUSLY +DISCOPHILE +DISCOPHILES +DISCORD +DISCORDANCE +DISCORDANCES +DISCORDANCIES +DISCORDANCY +DISCORDANT +DISCORDANTLY +DISCORDED +DISCORDING +DISCORDS +DISCOS +DISCOTHEQUE +DISCOTHEQUES +DISCOUNT +DISCOUNTABLE +DISCOUNTED +DISCOUNTENANCE +DISCOUNTENANCED +DISCOUNTENANCES +DISCOUNTER +DISCOUNTERS +DISCOUNTING +DISCOUNTS +DISCOURAGE +DISCOURAGEABLE +DISCOURAGED +DISCOURAGEMENT +DISCOURAGEMENTS +DISCOURAGER +DISCOURAGERS +DISCOURAGES +DISCOURAGING +DISCOURAGINGLY +DISCOURSE +DISCOURSED +DISCOURSER +DISCOURSERS +DISCOURSES +DISCOURSING +DISCOURTEOUS +DISCOURTEOUSLY +DISCOURTESIES +DISCOURTESY +DISCOVER +DISCOVERABLE +DISCOVERED +DISCOVERER +DISCOVERERS +DISCOVERIES +DISCOVERING +DISCOVERS +DISCOVERT +DISCOVERY +DISCREDIT +DISCREDITABLE +DISCREDITABLY +DISCREDITED +DISCREDITING +DISCREDITS +DISCREET +DISCREETER +DISCREETEST +DISCREETLY +DISCREETNESS +DISCREETNESSES +DISCREPANCIES +DISCREPANCY +DISCREPANT +DISCREPANTLY +DISCRETE +DISCRETELY +DISCRETENESS +DISCRETENESSES +DISCRETION +DISCRETIONARY +DISCRETIONS +DISCRIMINABLE +DISCRIMINABLY +DISCRIMINANT +DISCRIMINANTS +DISCRIMINATE +DISCRIMINATED +DISCRIMINATES +DISCRIMINATING +DISCRIMINATION +DISCRIMINATIONS +DISCRIMINATIVE +DISCRIMINATOR +DISCRIMINATORS +DISCRIMINATORY +DISCROWN +DISCROWNED +DISCROWNING +DISCROWNS +DISCS +DISCURSIVE +DISCURSIVELY +DISCURSIVENESS +DISCUS +DISCUSES +DISCUSS +DISCUSSABLE +DISCUSSANT +DISCUSSANTS +DISCUSSED +DISCUSSER +DISCUSSERS +DISCUSSES +DISCUSSIBLE +DISCUSSING +DISCUSSION +DISCUSSIONS +DISDAIN +DISDAINED +DISDAINFUL +DISDAINFULLY +DISDAINFULNESS +DISDAINING +DISDAINS +DISEASE +DISEASED +DISEASES +DISEASING +DISECONOMIES +DISECONOMY +DISEMBARK +DISEMBARKATION +DISEMBARKATIONS +DISEMBARKED +DISEMBARKING +DISEMBARKS +DISEMBARRASS +DISEMBARRASSED +DISEMBARRASSES +DISEMBARRASSING +DISEMBODIED +DISEMBODIES +DISEMBODY +DISEMBODYING +DISEMBOGUE +DISEMBOGUED +DISEMBOGUES +DISEMBOGUING +DISEMBOWEL +DISEMBOWELED +DISEMBOWELING +DISEMBOWELLED +DISEMBOWELLING +DISEMBOWELMENT +DISEMBOWELMENTS +DISEMBOWELS +DISEMPLOY +DISEMPLOYED +DISEMPLOYING +DISEMPLOYS +DISENABLE +DISENABLED +DISENABLES +DISENABLING +DISENCHANT +DISENCHANTED +DISENCHANTER +DISENCHANTERS +DISENCHANTING +DISENCHANTINGLY +DISENCHANTMENT +DISENCHANTMENTS +DISENCHANTS +DISENCUMBER +DISENCUMBERED +DISENCUMBERING +DISENCUMBERS +DISENDOW +DISENDOWED +DISENDOWER +DISENDOWERS +DISENDOWING +DISENDOWMENT +DISENDOWMENTS +DISENDOWS +DISENFRANCHISE +DISENFRANCHISED +DISENFRANCHISES +DISENGAGE +DISENGAGED +DISENGAGEMENT +DISENGAGEMENTS +DISENGAGES +DISENGAGING +DISENTAIL +DISENTAILED +DISENTAILING +DISENTAILS +DISENTANGLE +DISENTANGLED +DISENTANGLEMENT +DISENTANGLES +DISENTANGLING +DISENTHRAL +DISENTHRALL +DISENTHRALLED +DISENTHRALLING +DISENTHRALLS +DISENTHRALS +DISENTITLE +DISENTITLED +DISENTITLES +DISENTITLING +DISEQUILIBRATE +DISEQUILIBRATED +DISEQUILIBRATES +DISEQUILIBRIA +DISEQUILIBRIUM +DISEQUILIBRIUMS +DISESTABLISH +DISESTABLISHED +DISESTABLISHES +DISESTABLISHING +DISESTEEM +DISESTEEMED +DISESTEEMING +DISESTEEMS +DISEUR +DISEURS +DISEUSE +DISEUSES +DISFAVOR +DISFAVORED +DISFAVORING +DISFAVORS +DISFAVOUR +DISFAVOURED +DISFAVOURING +DISFAVOURS +DISFIGURE +DISFIGURED +DISFIGUREMENT +DISFIGUREMENTS +DISFIGURES +DISFIGURING +DISFRANCHISE +DISFRANCHISED +DISFRANCHISES +DISFRANCHISING +DISFROCK +DISFROCKED +DISFROCKING +DISFROCKS +DISFUNCTION +DISFUNCTIONS +DISFURNISH +DISFURNISHED +DISFURNISHES +DISFURNISHING +DISFURNISHMENT +DISFURNISHMENTS +DISGORGE +DISGORGED +DISGORGES +DISGORGING +DISGRACE +DISGRACED +DISGRACEFUL +DISGRACEFULLY +DISGRACEFULNESS +DISGRACER +DISGRACERS +DISGRACES +DISGRACING +DISGRUNTLE +DISGRUNTLED +DISGRUNTLEMENT +DISGRUNTLEMENTS +DISGRUNTLES +DISGRUNTLING +DISGUISE +DISGUISED +DISGUISEDLY +DISGUISEMENT +DISGUISEMENTS +DISGUISER +DISGUISERS +DISGUISES +DISGUISING +DISGUST +DISGUSTED +DISGUSTEDLY +DISGUSTFUL +DISGUSTFULLY +DISGUSTING +DISGUSTINGLY +DISGUSTS +DISH +DISHABILLE +DISHABILLES +DISHARMONIES +DISHARMONIOUS +DISHARMONIZE +DISHARMONIZED +DISHARMONIZES +DISHARMONIZING +DISHARMONY +DISHCLOTH +DISHCLOTHS +DISHCLOUT +DISHCLOUTS +DISHDASHA +DISHDASHAS +DISHEARTEN +DISHEARTENED +DISHEARTENING +DISHEARTENINGLY +DISHEARTENMENT +DISHEARTENMENTS +DISHEARTENS +DISHED +DISHELM +DISHELMED +DISHELMING +DISHELMS +DISHERIT +DISHERITED +DISHERITING +DISHERITS +DISHES +DISHEVEL +DISHEVELED +DISHEVELING +DISHEVELLED +DISHEVELLING +DISHEVELS +DISHFUL +DISHFULS +DISHIER +DISHIEST +DISHING +DISHLIKE +DISHONEST +DISHONESTIES +DISHONESTLY +DISHONESTY +DISHONOR +DISHONORABLE +DISHONORABLY +DISHONORED +DISHONORER +DISHONORERS +DISHONORING +DISHONORS +DISHPAN +DISHPANS +DISHRAG +DISHRAGS +DISHTOWEL +DISHTOWELS +DISHWARE +DISHWARES +DISHWASHER +DISHWASHERS +DISHWATER +DISHWATERS +DISHY +DISILLUSION +DISILLUSIONED +DISILLUSIONING +DISILLUSIONMENT +DISILLUSIONS +DISINCENTIVE +DISINCENTIVES +DISINCLINATION +DISINCLINATIONS +DISINCLINE +DISINCLINED +DISINCLINES +DISINCLINING +DISINFECT +DISINFECTANT +DISINFECTANTS +DISINFECTED +DISINFECTING +DISINFECTION +DISINFECTIONS +DISINFECTS +DISINFEST +DISINFESTANT +DISINFESTANTS +DISINFESTATION +DISINFESTATIONS +DISINFESTED +DISINFESTING +DISINFESTS +DISINFLATION +DISINFLATIONARY +DISINFLATIONS +DISINFORM +DISINFORMATION +DISINFORMATIONS +DISINFORMED +DISINFORMING +DISINFORMS +DISINGENUOUS +DISINGENUOUSLY +DISINHERIT +DISINHERITANCE +DISINHERITANCES +DISINHERITED +DISINHERITING +DISINHERITS +DISINHIBIT +DISINHIBITED +DISINHIBITING +DISINHIBITION +DISINHIBITIONS +DISINHIBITS +DISINTEGRATE +DISINTEGRATED +DISINTEGRATES +DISINTEGRATING +DISINTEGRATION +DISINTEGRATIONS +DISINTEGRATIVE +DISINTEGRATOR +DISINTEGRATORS +DISINTER +DISINTEREST +DISINTERESTED +DISINTERESTEDLY +DISINTERESTING +DISINTERESTS +DISINTERMENT +DISINTERMENTS +DISINTERRED +DISINTERRING +DISINTERS +DISINTOXICATE +DISINTOXICATED +DISINTOXICATES +DISINTOXICATING +DISINTOXICATION +DISINVEST +DISINVESTED +DISINVESTING +DISINVESTMENT +DISINVESTMENTS +DISINVESTS +DISINVITE +DISINVITED +DISINVITES +DISINVITING +DISJECT +DISJECTED +DISJECTING +DISJECTS +DISJOIN +DISJOINED +DISJOINING +DISJOINS +DISJOINT +DISJOINTED +DISJOINTEDLY +DISJOINTEDNESS +DISJOINTING +DISJOINTS +DISJUNCT +DISJUNCTION +DISJUNCTIONS +DISJUNCTIVE +DISJUNCTIVELY +DISJUNCTIVES +DISJUNCTS +DISJUNCTURE +DISJUNCTURES +DISK +DISKED +DISKETTE +DISKETTES +DISKING +DISKLIKE +DISKS +DISLIKABLE +DISLIKE +DISLIKEABLE +DISLIKED +DISLIKER +DISLIKERS +DISLIKES +DISLIKING +DISLIMN +DISLIMNED +DISLIMNING +DISLIMNS +DISLOCATE +DISLOCATED +DISLOCATES +DISLOCATING +DISLOCATION +DISLOCATIONS +DISLODGE +DISLODGED +DISLODGEMENT +DISLODGEMENTS +DISLODGES +DISLODGING +DISLODGMENT +DISLODGMENTS +DISLOYAL +DISLOYALLY +DISLOYALTIES +DISLOYALTY +DISMAL +DISMALER +DISMALEST +DISMALLY +DISMALNESS +DISMALNESSES +DISMALS +DISMANTLE +DISMANTLED +DISMANTLEMENT +DISMANTLEMENTS +DISMANTLES +DISMANTLING +DISMAST +DISMASTED +DISMASTING +DISMASTS +DISMAY +DISMAYED +DISMAYING +DISMAYINGLY +DISMAYS +DISME +DISMEMBER +DISMEMBERED +DISMEMBERING +DISMEMBERMENT +DISMEMBERMENTS +DISMEMBERS +DISMES +DISMISS +DISMISSAL +DISMISSALS +DISMISSED +DISMISSES +DISMISSING +DISMISSION +DISMISSIONS +DISMISSIVE +DISMISSIVELY +DISMOUNT +DISMOUNTED +DISMOUNTING +DISMOUNTS +DISOBEDIENCE +DISOBEDIENCES +DISOBEDIENT +DISOBEDIENTLY +DISOBEY +DISOBEYED +DISOBEYER +DISOBEYERS +DISOBEYING +DISOBEYS +DISOBLIGE +DISOBLIGED +DISOBLIGES +DISOBLIGING +DISOMIC +DISORDER +DISORDERED +DISORDEREDLY +DISORDEREDNESS +DISORDERING +DISORDERLINESS +DISORDERLY +DISORDERS +DISORGANIZATION +DISORGANIZE +DISORGANIZED +DISORGANIZES +DISORGANIZING +DISORIENT +DISORIENTATE +DISORIENTATED +DISORIENTATES +DISORIENTATING +DISORIENTATION +DISORIENTATIONS +DISORIENTED +DISORIENTING +DISORIENTS +DISOWN +DISOWNED +DISOWNING +DISOWNMENT +DISOWNMENTS +DISOWNS +DISPARAGE +DISPARAGED +DISPARAGEMENT +DISPARAGEMENTS +DISPARAGER +DISPARAGERS +DISPARAGES +DISPARAGING +DISPARAGINGLY +DISPARATE +DISPARATELY +DISPARATENESS +DISPARATENESSES +DISPARITIES +DISPARITY +DISPART +DISPARTED +DISPARTING +DISPARTS +DISPASSION +DISPASSIONATE +DISPASSIONATELY +DISPASSIONS +DISPATCH +DISPATCHED +DISPATCHER +DISPATCHERS +DISPATCHES +DISPATCHING +DISPEL +DISPELLED +DISPELLER +DISPELLERS +DISPELLING +DISPELS +DISPEND +DISPENDED +DISPENDING +DISPENDS +DISPENSABILITY +DISPENSABLE +DISPENSARIES +DISPENSARY +DISPENSATION +DISPENSATIONAL +DISPENSATIONS +DISPENSATORIES +DISPENSATORY +DISPENSE +DISPENSED +DISPENSER +DISPENSERS +DISPENSES +DISPENSING +DISPEOPLE +DISPEOPLED +DISPEOPLES +DISPEOPLING +DISPERSAL +DISPERSALS +DISPERSANT +DISPERSANTS +DISPERSE +DISPERSED +DISPERSEDLY +DISPERSER +DISPERSERS +DISPERSES +DISPERSIBLE +DISPERSING +DISPERSION +DISPERSIONS +DISPERSIVE +DISPERSIVELY +DISPERSIVENESS +DISPERSOID +DISPERSOIDS +DISPIRIT +DISPIRITED +DISPIRITEDLY +DISPIRITEDNESS +DISPIRITING +DISPIRITS +DISPITEOUS +DISPLACE +DISPLACEABLE +DISPLACED +DISPLACEMENT +DISPLACEMENTS +DISPLACER +DISPLACERS +DISPLACES +DISPLACING +DISPLANT +DISPLANTED +DISPLANTING +DISPLANTS +DISPLAY +DISPLAYABLE +DISPLAYED +DISPLAYER +DISPLAYERS +DISPLAYING +DISPLAYS +DISPLEASE +DISPLEASED +DISPLEASES +DISPLEASING +DISPLEASURE +DISPLEASURES +DISPLODE +DISPLODED +DISPLODES +DISPLODING +DISPLOSION +DISPLOSIONS +DISPLUME +DISPLUMED +DISPLUMES +DISPLUMING +DISPORT +DISPORTED +DISPORTING +DISPORTMENT +DISPORTMENTS +DISPORTS +DISPOSABILITIES +DISPOSABILITY +DISPOSABLE +DISPOSABLES +DISPOSAL +DISPOSALS +DISPOSE +DISPOSED +DISPOSER +DISPOSERS +DISPOSES +DISPOSING +DISPOSITION +DISPOSITIONAL +DISPOSITIONS +DISPOSITIVE +DISPOSSESS +DISPOSSESSED +DISPOSSESSES +DISPOSSESSING +DISPOSSESSION +DISPOSSESSIONS +DISPOSSESSOR +DISPOSSESSORS +DISPOSURE +DISPOSURES +DISPRAISE +DISPRAISED +DISPRAISER +DISPRAISERS +DISPRAISES +DISPRAISING +DISPRAISINGLY +DISPREAD +DISPREADING +DISPREADS +DISPRIZE +DISPRIZED +DISPRIZES +DISPRIZING +DISPROOF +DISPROOFS +DISPROPORTION +DISPROPORTIONAL +DISPROPORTIONED +DISPROPORTIONS +DISPROVABLE +DISPROVAL +DISPROVALS +DISPROVE +DISPROVED +DISPROVEN +DISPROVER +DISPROVERS +DISPROVES +DISPROVING +DISPUTABLE +DISPUTABLY +DISPUTANT +DISPUTANTS +DISPUTATION +DISPUTATIONS +DISPUTATIOUS +DISPUTATIOUSLY +DISPUTE +DISPUTED +DISPUTER +DISPUTERS +DISPUTES +DISPUTING +DISQUALIFIED +DISQUALIFIES +DISQUALIFY +DISQUALIFYING +DISQUANTITIED +DISQUANTITIES +DISQUANTITY +DISQUANTITYING +DISQUIET +DISQUIETED +DISQUIETING +DISQUIETINGLY +DISQUIETLY +DISQUIETS +DISQUIETUDE +DISQUIETUDES +DISQUISITION +DISQUISITIONS +DISRATE +DISRATED +DISRATES +DISRATING +DISREGARD +DISREGARDED +DISREGARDFUL +DISREGARDING +DISREGARDS +DISRELATED +DISRELATION +DISRELATIONS +DISRELISH +DISRELISHED +DISRELISHES +DISRELISHING +DISREMEMBER +DISREMEMBERED +DISREMEMBERING +DISREMEMBERS +DISREPAIR +DISREPAIRS +DISREPUTABILITY +DISREPUTABLE +DISREPUTABLY +DISREPUTE +DISREPUTES +DISRESPECT +DISRESPECTABLE +DISRESPECTED +DISRESPECTFUL +DISRESPECTFULLY +DISRESPECTING +DISRESPECTS +DISROBE +DISROBED +DISROBER +DISROBERS +DISROBES +DISROBING +DISROOT +DISROOTED +DISROOTING +DISROOTS +DISRUPT +DISRUPTED +DISRUPTER +DISRUPTERS +DISRUPTING +DISRUPTION +DISRUPTIONS +DISRUPTIVE +DISRUPTIVELY +DISRUPTIVENESS +DISRUPTOR +DISRUPTORS +DISRUPTS +DISS +DISSATISFACTION +DISSATISFACTORY +DISSATISFIED +DISSATISFIES +DISSATISFY +DISSATISFYING +DISSAVE +DISSAVED +DISSAVES +DISSAVING +DISSEAT +DISSEATED +DISSEATING +DISSEATS +DISSECT +DISSECTED +DISSECTING +DISSECTION +DISSECTIONS +DISSECTOR +DISSECTORS +DISSECTS +DISSED +DISSEISE +DISSEISED +DISSEISEE +DISSEISEES +DISSEISES +DISSEISIN +DISSEISING +DISSEISINS +DISSEISOR +DISSEISORS +DISSEIZE +DISSEIZED +DISSEIZEE +DISSEIZEES +DISSEIZES +DISSEIZIN +DISSEIZING +DISSEIZINS +DISSEIZOR +DISSEIZORS +DISSEMBLE +DISSEMBLED +DISSEMBLER +DISSEMBLERS +DISSEMBLES +DISSEMBLING +DISSEMINATE +DISSEMINATED +DISSEMINATES +DISSEMINATING +DISSEMINATION +DISSEMINATIONS +DISSEMINATOR +DISSEMINATORS +DISSEMINULE +DISSEMINULES +DISSENSION +DISSENSIONS +DISSENSUS +DISSENSUSES +DISSENT +DISSENTED +DISSENTER +DISSENTERS +DISSENTIENT +DISSENTIENTS +DISSENTING +DISSENTION +DISSENTIONS +DISSENTIOUS +DISSENTS +DISSEPIMENT +DISSEPIMENTS +DISSERT +DISSERTATE +DISSERTATED +DISSERTATES +DISSERTATING +DISSERTATION +DISSERTATIONAL +DISSERTATIONS +DISSERTATOR +DISSERTATORS +DISSERTED +DISSERTING +DISSERTS +DISSERVE +DISSERVED +DISSERVES +DISSERVICE +DISSERVICEABLE +DISSERVICES +DISSERVING +DISSES +DISSEVER +DISSEVERANCE +DISSEVERANCES +DISSEVERED +DISSEVERING +DISSEVERMENT +DISSEVERMENTS +DISSEVERS +DISSIDENCE +DISSIDENCES +DISSIDENT +DISSIDENTS +DISSIMILAR +DISSIMILARITIES +DISSIMILARITY +DISSIMILARLY +DISSIMILARS +DISSIMILATE +DISSIMILATED +DISSIMILATES +DISSIMILATING +DISSIMILATION +DISSIMILATIONS +DISSIMILATORY +DISSIMILITUDE +DISSIMILITUDES +DISSIMULATE +DISSIMULATED +DISSIMULATES +DISSIMULATING +DISSIMULATION +DISSIMULATIONS +DISSIMULATOR +DISSIMULATORS +DISSING +DISSIPATE +DISSIPATED +DISSIPATEDLY +DISSIPATEDNESS +DISSIPATER +DISSIPATERS +DISSIPATES +DISSIPATING +DISSIPATION +DISSIPATIONS +DISSIPATIVE +DISSOCIABILITY +DISSOCIABLE +DISSOCIAL +DISSOCIATE +DISSOCIATED +DISSOCIATES +DISSOCIATING +DISSOCIATION +DISSOCIATIONS +DISSOCIATIVE +DISSOLUBLE +DISSOLUTE +DISSOLUTELY +DISSOLUTENESS +DISSOLUTENESSES +DISSOLUTION +DISSOLUTIONS +DISSOLVABLE +DISSOLVE +DISSOLVED +DISSOLVENT +DISSOLVENTS +DISSOLVER +DISSOLVERS +DISSOLVES +DISSOLVING +DISSONANCE +DISSONANCES +DISSONANT +DISSONANTLY +DISSUADE +DISSUADED +DISSUADER +DISSUADERS +DISSUADES +DISSUADING +DISSUASION +DISSUASIONS +DISSUASIVE +DISSUASIVELY +DISSUASIVENESS +DISSYLLABLE +DISSYLLABLES +DISSYMMETRIC +DISSYMMETRIES +DISSYMMETRY +DISTAFF +DISTAFFS +DISTAIN +DISTAINED +DISTAINING +DISTAINS +DISTAL +DISTALLY +DISTANCE +DISTANCED +DISTANCES +DISTANCING +DISTANT +DISTANTLY +DISTANTNESS +DISTANTNESSES +DISTASTE +DISTASTED +DISTASTEFUL +DISTASTEFULLY +DISTASTEFULNESS +DISTASTES +DISTASTING +DISTAVES +DISTELFINK +DISTELFINKS +DISTEMPER +DISTEMPERATE +DISTEMPERATURE +DISTEMPERATURES +DISTEMPERED +DISTEMPERING +DISTEMPERS +DISTEND +DISTENDED +DISTENDER +DISTENDERS +DISTENDING +DISTENDS +DISTENSIBILITY +DISTENSIBLE +DISTENSION +DISTENSIONS +DISTENT +DISTENTION +DISTENTIONS +DISTICH +DISTICHAL +DISTICHOUS +DISTICHS +DISTIL +DISTILL +DISTILLATE +DISTILLATES +DISTILLATION +DISTILLATIONS +DISTILLED +DISTILLER +DISTILLERIES +DISTILLERS +DISTILLERY +DISTILLING +DISTILLS +DISTILS +DISTINCT +DISTINCTER +DISTINCTEST +DISTINCTION +DISTINCTIONS +DISTINCTIVE +DISTINCTIVELY +DISTINCTIVENESS +DISTINCTLY +DISTINCTNESS +DISTINCTNESSES +DISTINGUE +DISTINGUISH +DISTINGUISHABLE +DISTINGUISHABLY +DISTINGUISHED +DISTINGUISHES +DISTINGUISHING +DISTOME +DISTOMES +DISTORT +DISTORTED +DISTORTER +DISTORTERS +DISTORTING +DISTORTION +DISTORTIONAL +DISTORTIONS +DISTORTS +DISTRACT +DISTRACTABLE +DISTRACTED +DISTRACTEDLY +DISTRACTIBILITY +DISTRACTIBLE +DISTRACTING +DISTRACTINGLY +DISTRACTION +DISTRACTIONS +DISTRACTIVE +DISTRACTS +DISTRAIN +DISTRAINABLE +DISTRAINED +DISTRAINER +DISTRAINERS +DISTRAINING +DISTRAINOR +DISTRAINORS +DISTRAINS +DISTRAINT +DISTRAINTS +DISTRAIT +DISTRAITE +DISTRAUGHT +DISTRAUGHTLY +DISTRESS +DISTRESSED +DISTRESSES +DISTRESSFUL +DISTRESSFULLY +DISTRESSFULNESS +DISTRESSING +DISTRESSINGLY +DISTRIBUTARIES +DISTRIBUTARY +DISTRIBUTE +DISTRIBUTED +DISTRIBUTEE +DISTRIBUTEES +DISTRIBUTES +DISTRIBUTING +DISTRIBUTION +DISTRIBUTIONAL +DISTRIBUTIONS +DISTRIBUTIVE +DISTRIBUTIVELY +DISTRIBUTIVITY +DISTRIBUTOR +DISTRIBUTORS +DISTRICT +DISTRICTED +DISTRICTING +DISTRICTS +DISTRUST +DISTRUSTED +DISTRUSTFUL +DISTRUSTFULLY +DISTRUSTFULNESS +DISTRUSTING +DISTRUSTS +DISTURB +DISTURBANCE +DISTURBANCES +DISTURBED +DISTURBER +DISTURBERS +DISTURBING +DISTURBINGLY +DISTURBS +DISUBSTITUTED +DISULFATE +DISULFATES +DISULFID +DISULFIDE +DISULFIDES +DISULFIDS +DISULFIRAM +DISULFIRAMS +DISULFOTON +DISULFOTONS +DISUNION +DISUNIONIST +DISUNIONISTS +DISUNIONS +DISUNITE +DISUNITED +DISUNITER +DISUNITERS +DISUNITES +DISUNITIES +DISUNITING +DISUNITY +DISUSE +DISUSED +DISUSES +DISUSING +DISUTILITIES +DISUTILITY +DISVALUE +DISVALUED +DISVALUES +DISVALUING +DISYLLABIC +DISYLLABLE +DISYLLABLES +DISYOKE +DISYOKED +DISYOKES +DISYOKING +DIT +DITA +DITAS +DITCH +DITCHDIGGER +DITCHDIGGERS +DITCHED +DITCHER +DITCHERS +DITCHES +DITCHING +DITE +DITES +DITHEISM +DITHEISMS +DITHEIST +DITHEISTS +DITHER +DITHERED +DITHERER +DITHERERS +DITHERING +DITHERS +DITHERY +DITHIOCARBAMATE +DITHIOL +DITHYRAMB +DITHYRAMBIC +DITHYRAMBICALLY +DITHYRAMBS +DITRANSITIVE +DITRANSITIVES +DITS +DITSIER +DITSIEST +DITSINESS +DITSINESSES +DITSY +DITTANIES +DITTANY +DITTIES +DITTO +DITTOED +DITTOING +DITTOS +DITTY +DITZ +DITZES +DITZIER +DITZIEST +DITZINESS +DITZINESSES +DITZY +DIURESES +DIURESIS +DIURETIC +DIURETICALLY +DIURETICS +DIURNAL +DIURNALLY +DIURNALS +DIURON +DIURONS +DIVA +DIVAGATE +DIVAGATED +DIVAGATES +DIVAGATING +DIVAGATION +DIVAGATIONS +DIVALENCE +DIVALENCES +DIVALENT +DIVAN +DIVANS +DIVARICATE +DIVARICATED +DIVARICATES +DIVARICATING +DIVARICATION +DIVARICATIONS +DIVAS +DIVE +DIVEBOMB +DIVEBOMBED +DIVEBOMBING +DIVEBOMBS +DIVED +DIVER +DIVERGE +DIVERGED +DIVERGENCE +DIVERGENCES +DIVERGENCIES +DIVERGENCY +DIVERGENT +DIVERGENTLY +DIVERGES +DIVERGING +DIVERS +DIVERSE +DIVERSELY +DIVERSENESS +DIVERSENESSES +DIVERSIFICATION +DIVERSIFIED +DIVERSIFIER +DIVERSIFIERS +DIVERSIFIES +DIVERSIFY +DIVERSIFYING +DIVERSION +DIVERSIONARY +DIVERSIONIST +DIVERSIONISTS +DIVERSIONS +DIVERSITIES +DIVERSITY +DIVERT +DIVERTED +DIVERTER +DIVERTERS +DIVERTICULA +DIVERTICULAR +DIVERTICULITIS +DIVERTICULOSES +DIVERTICULOSIS +DIVERTICULUM +DIVERTIMENTI +DIVERTIMENTO +DIVERTIMENTOS +DIVERTING +DIVERTISSEMENT +DIVERTISSEMENTS +DIVERTS +DIVES +DIVEST +DIVESTED +DIVESTING +DIVESTITURE +DIVESTITURES +DIVESTMENT +DIVESTMENTS +DIVESTS +DIVESTURE +DIVESTURES +DIVIDABLE +DIVIDE +DIVIDED +DIVIDEDLY +DIVIDEDNESS +DIVIDEDNESSES +DIVIDEND +DIVIDENDLESS +DIVIDENDS +DIVIDER +DIVIDERS +DIVIDES +DIVIDING +DIVIDUAL +DIVINATION +DIVINATIONS +DIVINATORY +DIVINE +DIVINED +DIVINELY +DIVINER +DIVINERS +DIVINES +DIVINEST +DIVING +DIVINING +DIVINISE +DIVINISED +DIVINISES +DIVINISING +DIVINITIES +DIVINITY +DIVINIZE +DIVINIZED +DIVINIZES +DIVINIZING +DIVISIBILITIES +DIVISIBILITY +DIVISIBLE +DIVISIBLY +DIVISION +DIVISIONAL +DIVISIONISM +DIVISIONISMS +DIVISIONIST +DIVISIONISTS +DIVISIONS +DIVISIVE +DIVISIVELY +DIVISIVENESS +DIVISIVENESSES +DIVISOR +DIVISORS +DIVORCE +DIVORCED +DIVORCEE +DIVORCEES +DIVORCEMENT +DIVORCEMENTS +DIVORCER +DIVORCERS +DIVORCES +DIVORCING +DIVORCIVE +DIVOT +DIVOTS +DIVULGATE +DIVULGATED +DIVULGATES +DIVULGATING +DIVULGE +DIVULGED +DIVULGENCE +DIVULGENCES +DIVULGER +DIVULGERS +DIVULGES +DIVULGING +DIVULSE +DIVULSED +DIVULSES +DIVULSING +DIVULSION +DIVULSIONS +DIVULSIVE +DIVVIED +DIVVIES +DIVVY +DIVVYING +DIWAN +DIWANS +DIXIT +DIXITS +DIZEN +DIZENED +DIZENING +DIZENMENT +DIZENMENTS +DIZENS +DIZYGOTIC +DIZYGOUS +DIZZIED +DIZZIER +DIZZIES +DIZZIEST +DIZZILY +DIZZINESS +DIZZINESSES +DIZZY +DIZZYING +DIZZYINGLY +DJEBEL +DJEBELS +DJELLABA +DJELLABAH +DJELLABAHS +DJELLABAS +DJIN +DJINN +DJINNI +DJINNS +DJINNY +DJINS +DO +DOABLE +DOAT +DOATED +DOATING +DOATS +DOBBER +DOBBERS +DOBBIES +DOBBIN +DOBBINS +DOBBY +DOBIE +DOBIES +DOBLA +DOBLAS +DOBLON +DOBLONES +DOBLONS +DOBRA +DOBRAS +DOBRO +DOBROS +DOBSON +DOBSONFLIES +DOBSONFLY +DOBSONS +DOBY +DOC +DOCENT +DOCENTS +DOCETIC +DOCILE +DOCILELY +DOCILITIES +DOCILITY +DOCK +DOCKAGE +DOCKAGES +DOCKED +DOCKER +DOCKERS +DOCKET +DOCKETED +DOCKETING +DOCKETS +DOCKHAND +DOCKHANDS +DOCKING +DOCKLAND +DOCKLANDS +DOCKMASTER +DOCKMASTERS +DOCKS +DOCKSIDE +DOCKSIDES +DOCKWORKER +DOCKWORKERS +DOCKYARD +DOCKYARDS +DOCS +DOCTOR +DOCTORAL +DOCTORATE +DOCTORATES +DOCTORED +DOCTORIAL +DOCTORING +DOCTORLESS +DOCTORLY +DOCTORS +DOCTORSHIP +DOCTORSHIPS +DOCTRINAIRE +DOCTRINAIRES +DOCTRINAIRISM +DOCTRINAIRISMS +DOCTRINAL +DOCTRINALLY +DOCTRINE +DOCTRINES +DOCUDRAMA +DOCUDRAMAS +DOCUMENT +DOCUMENTABLE +DOCUMENTAL +DOCUMENTALIST +DOCUMENTALISTS +DOCUMENTARIAN +DOCUMENTARIANS +DOCUMENTARIES +DOCUMENTARILY +DOCUMENTARIST +DOCUMENTARISTS +DOCUMENTARY +DOCUMENTATION +DOCUMENTATIONAL +DOCUMENTATIONS +DOCUMENTED +DOCUMENTER +DOCUMENTERS +DOCUMENTING +DOCUMENTS +DODDER +DODDERED +DODDERER +DODDERERS +DODDERING +DODDERS +DODDERY +DODECAGON +DODECAGONS +DODECAHEDRA +DODECAHEDRAL +DODECAHEDRON +DODECAHEDRONS +DODECAPHONIC +DODECAPHONIES +DODECAPHONIST +DODECAPHONISTS +DODECAPHONY +DODGE +DODGEBALL +DODGEBALLS +DODGED +DODGEM +DODGEMS +DODGER +DODGERIES +DODGERS +DODGERY +DODGES +DODGIER +DODGIEST +DODGINESS +DODGINESSES +DODGING +DODGY +DODO +DODOES +DODOISM +DODOISMS +DODOS +DOE +DOER +DOERS +DOES +DOESKIN +DOESKINS +DOEST +DOETH +DOFF +DOFFED +DOFFER +DOFFERS +DOFFING +DOFFS +DOG +DOGBANE +DOGBANES +DOGBERRIES +DOGBERRY +DOGCART +DOGCARTS +DOGCATCHER +DOGCATCHERS +DOGDOM +DOGDOMS +DOGE +DOGEAR +DOGEARED +DOGEARING +DOGEARS +DOGEDOM +DOGEDOMS +DOGES +DOGESHIP +DOGESHIPS +DOGEY +DOGEYS +DOGFACE +DOGFACES +DOGFIGHT +DOGFIGHTING +DOGFIGHTS +DOGFISH +DOGFISHES +DOGFOUGHT +DOGGED +DOGGEDLY +DOGGEDNESS +DOGGEDNESSES +DOGGER +DOGGEREL +DOGGERELS +DOGGERIES +DOGGERS +DOGGERY +DOGGIE +DOGGIER +DOGGIES +DOGGIEST +DOGGING +DOGGISH +DOGGISHLY +DOGGISHNESS +DOGGISHNESSES +DOGGO +DOGGONE +DOGGONED +DOGGONEDER +DOGGONEDEST +DOGGONER +DOGGONES +DOGGONEST +DOGGONING +DOGGREL +DOGGRELS +DOGGY +DOGHANGED +DOGHOUSE +DOGHOUSES +DOGIE +DOGIES +DOGLEG +DOGLEGGED +DOGLEGGING +DOGLEGS +DOGLIKE +DOGMA +DOGMAS +DOGMATA +DOGMATIC +DOGMATICAL +DOGMATICALLY +DOGMATICALNESS +DOGMATICS +DOGMATISM +DOGMATISMS +DOGMATIST +DOGMATISTS +DOGMATIZATION +DOGMATIZATIONS +DOGMATIZE +DOGMATIZED +DOGMATIZER +DOGMATIZERS +DOGMATIZES +DOGMATIZING +DOGNAP +DOGNAPED +DOGNAPER +DOGNAPERS +DOGNAPING +DOGNAPPED +DOGNAPPER +DOGNAPPERS +DOGNAPPING +DOGNAPS +DOGROBBER +DOGROBBERS +DOGS +DOGSBODIES +DOGSBODY +DOGSLED +DOGSLEDDED +DOGSLEDDER +DOGSLEDDERS +DOGSLEDDING +DOGSLEDS +DOGTEETH +DOGTOOTH +DOGTROT +DOGTROTS +DOGTROTTED +DOGTROTTING +DOGVANE +DOGVANES +DOGWATCH +DOGWATCHES +DOGWOOD +DOGWOODS +DOGY +DOILED +DOILIES +DOILY +DOING +DOINGS +DOIT +DOITED +DOITS +DOJO +DOJOS +DOL +DOLABRATE +DOLCE +DOLCETTO +DOLCETTOS +DOLCI +DOLDRUMS +DOLE +DOLED +DOLEFUL +DOLEFULLER +DOLEFULLEST +DOLEFULLY +DOLEFULNESS +DOLEFULNESSES +DOLERITE +DOLERITES +DOLERITIC +DOLES +DOLESOME +DOLICHOCEPHALIC +DOLICHOCEPHALY +DOLING +DOLL +DOLLAR +DOLLARIZE +DOLLARIZED +DOLLARIZES +DOLLARIZING +DOLLARS +DOLLED +DOLLHOUSE +DOLLHOUSES +DOLLIED +DOLLIES +DOLLING +DOLLISH +DOLLISHLY +DOLLISHNESS +DOLLISHNESSES +DOLLOP +DOLLOPED +DOLLOPING +DOLLOPS +DOLLS +DOLLY +DOLLYBIRD +DOLLYBIRDS +DOLLYING +DOLMA +DOLMADES +DOLMAN +DOLMANS +DOLMAS +DOLMEN +DOLMENIC +DOLMENS +DOLOMITE +DOLOMITES +DOLOMITIC +DOLOMITIZATION +DOLOMITIZATIONS +DOLOMITIZE +DOLOMITIZED +DOLOMITIZES +DOLOMITIZING +DOLOR +DOLOROSO +DOLOROUS +DOLOROUSLY +DOLOROUSNESS +DOLOROUSNESSES +DOLORS +DOLOUR +DOLOURS +DOLPHIN +DOLPHINFISH +DOLPHINFISHES +DOLPHINS +DOLS +DOLT +DOLTISH +DOLTISHLY +DOLTISHNESS +DOLTISHNESSES +DOLTS +DOM +DOMAIN +DOMAINE +DOMAINES +DOMAINS +DOMAL +DOME +DOMED +DOMELIKE +DOMES +DOMESDAY +DOMESDAYS +DOMESTIC +DOMESTICALLY +DOMESTICATE +DOMESTICATED +DOMESTICATES +DOMESTICATING +DOMESTICATION +DOMESTICATIONS +DOMESTICITIES +DOMESTICITY +DOMESTICS +DOMIC +DOMICAL +DOMICALLY +DOMICIL +DOMICILE +DOMICILED +DOMICILES +DOMICILIARY +DOMICILIATE +DOMICILIATED +DOMICILIATES +DOMICILIATING +DOMICILIATION +DOMICILIATIONS +DOMICILING +DOMICILS +DOMINANCE +DOMINANCES +DOMINANCIES +DOMINANCY +DOMINANT +DOMINANTLY +DOMINANTS +DOMINATE +DOMINATED +DOMINATES +DOMINATING +DOMINATION +DOMINATIONS +DOMINATIVE +DOMINATOR +DOMINATORS +DOMINATRICES +DOMINATRIX +DOMINE +DOMINEER +DOMINEERED +DOMINEERING +DOMINEERINGLY +DOMINEERINGNESS +DOMINEERS +DOMINES +DOMING +DOMINICAL +DOMINICK +DOMINICKER +DOMINICKERS +DOMINICKS +DOMINIE +DOMINIES +DOMINION +DOMINIONS +DOMINIQUE +DOMINIQUES +DOMINIUM +DOMINIUMS +DOMINO +DOMINOES +DOMINOS +DOMS +DON +DONA +DONAS +DONATE +DONATED +DONATES +DONATING +DONATION +DONATIONS +DONATIVE +DONATIVES +DONATOR +DONATORS +DONE +DONEE +DONEES +DONENESS +DONENESSES +DONG +DONGA +DONGAS +DONGLE +DONGLES +DONGOLA +DONGOLAS +DONGS +DONJON +DONJONS +DONKEY +DONKEYS +DONKEYWORK +DONKEYWORKS +DONNA +DONNAS +DONNE +DONNED +DONNEE +DONNEES +DONNERD +DONNERED +DONNERT +DONNICKER +DONNICKERS +DONNIKER +DONNIKERS +DONNING +DONNISH +DONNISHLY +DONNISHNESS +DONNISHNESSES +DONNYBROOK +DONNYBROOKS +DONOR +DONORS +DONORSHIP +DONORSHIPS +DONS +DONSIE +DONSY +DONUT +DONUTS +DONZEL +DONZELS +DOOBIE +DOOBIES +DOODAD +DOODADS +DOODIES +DOODLE +DOODLEBUG +DOODLEBUGS +DOODLED +DOODLER +DOODLERS +DOODLES +DOODLING +DOODOO +DOODOOS +DOODY +DOOFUS +DOOFUSES +DOOHICKEY +DOOHICKEYS +DOOHICKIES +DOOLEE +DOOLEES +DOOLIE +DOOLIES +DOOLY +DOOM +DOOMED +DOOMFUL +DOOMFULLY +DOOMIER +DOOMIEST +DOOMILY +DOOMING +DOOMS +DOOMSAYER +DOOMSAYERS +DOOMSAYING +DOOMSAYINGS +DOOMSDAY +DOOMSDAYER +DOOMSDAYERS +DOOMSDAYS +DOOMSTER +DOOMSTERS +DOOMY +DOOR +DOORBELL +DOORBELLS +DOORJAMB +DOORJAMBS +DOORKEEPER +DOORKEEPERS +DOORKNOB +DOORKNOBS +DOORLESS +DOORMAN +DOORMAT +DOORMATS +DOORMEN +DOORNAIL +DOORNAILS +DOORPLATE +DOORPLATES +DOORPOST +DOORPOSTS +DOORS +DOORSILL +DOORSILLS +DOORSTEP +DOORSTEPS +DOORSTOP +DOORSTOPS +DOORWAY +DOORWAYS +DOORWOMAN +DOORWOMEN +DOORYARD +DOORYARDS +DOOWOP +DOOWOPS +DOOZER +DOOZERS +DOOZIE +DOOZIES +DOOZY +DOPA +DOPAMINE +DOPAMINERGIC +DOPAMINES +DOPANT +DOPANTS +DOPAS +DOPE +DOPED +DOPEHEAD +DOPEHEADS +DOPER +DOPERS +DOPES +DOPESHEET +DOPESHEETS +DOPESTER +DOPESTERS +DOPEY +DOPEYNESS +DOPEYNESSES +DOPIER +DOPIEST +DOPILY +DOPINESS +DOPINESSES +DOPING +DOPINGS +DOPPELGANGER +DOPPELGANGERS +DOPY +DOR +DORADO +DORADOS +DORBEETLE +DORBEETLES +DORBUG +DORBUGS +DORE +DORHAWK +DORHAWKS +DORIES +DORK +DORKIER +DORKIEST +DORKINESS +DORKINESSES +DORKS +DORKY +DORM +DORMANCIES +DORMANCY +DORMANT +DORMER +DORMERED +DORMERS +DORMICE +DORMIE +DORMIENT +DORMIN +DORMINS +DORMITORIES +DORMITORY +DORMOUSE +DORMS +DORMY +DORNECK +DORNECKS +DORNICK +DORNICKS +DORNOCK +DORNOCKS +DORONICUM +DORONICUMS +DORP +DORPER +DORPERS +DORPS +DORR +DORRS +DORS +DORSA +DORSAD +DORSAL +DORSALLY +DORSALS +DORSEL +DORSELS +DORSER +DORSERS +DORSIVENTRAL +DORSIVENTRALITY +DORSIVENTRALLY +DORSOLATERAL +DORSOVENTRAL +DORSOVENTRALITY +DORSOVENTRALLY +DORSUM +DORTY +DORY +DOS +DOSAGE +DOSAGES +DOSE +DOSED +DOSER +DOSERS +DOSES +DOSIMETER +DOSIMETERS +DOSIMETRIC +DOSIMETRIES +DOSIMETRY +DOSING +DOSS +DOSSAL +DOSSALS +DOSSED +DOSSEL +DOSSELS +DOSSER +DOSSERET +DOSSERETS +DOSSERS +DOSSES +DOSSHOUSE +DOSSHOUSES +DOSSIER +DOSSIERS +DOSSIL +DOSSILS +DOSSING +DOST +DOT +DOTAGE +DOTAGES +DOTAL +DOTARD +DOTARDLY +DOTARDS +DOTATION +DOTATIONS +DOTE +DOTED +DOTER +DOTERS +DOTES +DOTH +DOTIER +DOTIEST +DOTING +DOTINGLY +DOTS +DOTTED +DOTTEL +DOTTELS +DOTTER +DOTTEREL +DOTTERELS +DOTTERS +DOTTIER +DOTTIEST +DOTTILY +DOTTINESS +DOTTINESSES +DOTTING +DOTTLE +DOTTLES +DOTTREL +DOTTRELS +DOTTY +DOTY +DOUBLE +DOUBLED +DOUBLEHEADER +DOUBLEHEADERS +DOUBLENESS +DOUBLENESSES +DOUBLER +DOUBLERS +DOUBLES +DOUBLESPEAK +DOUBLESPEAKER +DOUBLESPEAKERS +DOUBLESPEAKS +DOUBLET +DOUBLETHINK +DOUBLETHINKS +DOUBLETON +DOUBLETONS +DOUBLETS +DOUBLING +DOUBLOON +DOUBLOONS +DOUBLURE +DOUBLURES +DOUBLY +DOUBT +DOUBTABLE +DOUBTED +DOUBTER +DOUBTERS +DOUBTFUL +DOUBTFULLY +DOUBTFULNESS +DOUBTFULNESSES +DOUBTING +DOUBTINGLY +DOUBTLESS +DOUBTLESSLY +DOUBTLESSNESS +DOUBTLESSNESSES +DOUBTS +DOUCE +DOUCELY +DOUCEUR +DOUCEURS +DOUCHE +DOUCHEBAG +DOUCHEBAGS +DOUCHED +DOUCHES +DOUCHING +DOUGH +DOUGHBOY +DOUGHBOYS +DOUGHFACE +DOUGHFACES +DOUGHIER +DOUGHIEST +DOUGHLIKE +DOUGHNUT +DOUGHNUTLIKE +DOUGHNUTS +DOUGHS +DOUGHT +DOUGHTIER +DOUGHTIEST +DOUGHTILY +DOUGHTINESS +DOUGHTINESSES +DOUGHTY +DOUGHY +DOULA +DOULAS +DOUM +DOUMA +DOUMAS +DOUMS +DOUPIONI +DOUPIONIS +DOUPPIONI +DOUPPIONIS +DOUR +DOURA +DOURAH +DOURAHS +DOURAS +DOURER +DOUREST +DOURINE +DOURINES +DOURLY +DOURNESS +DOURNESSES +DOUROUCOULI +DOUROUCOULIS +DOUSE +DOUSED +DOUSER +DOUSERS +DOUSES +DOUSING +DOUX +DOUZEPER +DOUZEPERS +DOVE +DOVECOT +DOVECOTE +DOVECOTES +DOVECOTS +DOVEKEY +DOVEKEYS +DOVEKIE +DOVEKIES +DOVELIKE +DOVEN +DOVENED +DOVENING +DOVENS +DOVES +DOVETAIL +DOVETAILED +DOVETAILING +DOVETAILS +DOVISH +DOVISHNESS +DOVISHNESSES +DOW +DOWABLE +DOWAGER +DOWAGERS +DOWDIER +DOWDIES +DOWDIEST +DOWDILY +DOWDINESS +DOWDINESSES +DOWDY +DOWDYISH +DOWED +DOWEL +DOWELED +DOWELING +DOWELLED +DOWELLING +DOWELS +DOWER +DOWERED +DOWERIES +DOWERING +DOWERLESS +DOWERS +DOWERY +DOWIE +DOWING +DOWITCHER +DOWITCHERS +DOWN +DOWNBEAT +DOWNBEATS +DOWNBOW +DOWNBOWS +DOWNBURST +DOWNBURSTS +DOWNCAST +DOWNCASTS +DOWNCOME +DOWNCOMES +DOWNCOURT +DOWNDRAFT +DOWNDRAFTS +DOWNED +DOWNER +DOWNERS +DOWNFALL +DOWNFALLEN +DOWNFALLS +DOWNFIELD +DOWNFORCE +DOWNFORCES +DOWNGRADE +DOWNGRADED +DOWNGRADES +DOWNGRADING +DOWNHAUL +DOWNHAULS +DOWNHEARTED +DOWNHEARTEDLY +DOWNHEARTEDNESS +DOWNHILL +DOWNHILLER +DOWNHILLERS +DOWNHILLS +DOWNIER +DOWNIEST +DOWNINESS +DOWNINESSES +DOWNING +DOWNLAND +DOWNLANDS +DOWNLESS +DOWNLIGHT +DOWNLIGHTS +DOWNLIKE +DOWNLINK +DOWNLINKED +DOWNLINKING +DOWNLINKS +DOWNLOAD +DOWNLOADABLE +DOWNLOADED +DOWNLOADING +DOWNLOADS +DOWNPIPE +DOWNPIPES +DOWNPLAY +DOWNPLAYED +DOWNPLAYING +DOWNPLAYS +DOWNPOUR +DOWNPOURS +DOWNRANGE +DOWNRIGHT +DOWNRIGHTLY +DOWNRIGHTNESS +DOWNRIGHTNESSES +DOWNRIVER +DOWNS +DOWNSCALE +DOWNSCALED +DOWNSCALES +DOWNSCALING +DOWNSHIFT +DOWNSHIFTED +DOWNSHIFTING +DOWNSHIFTS +DOWNSIDE +DOWNSIDES +DOWNSIZE +DOWNSIZED +DOWNSIZES +DOWNSIZING +DOWNSLIDE +DOWNSLIDES +DOWNSLOPE +DOWNSPIN +DOWNSPINS +DOWNSPOUT +DOWNSPOUTS +DOWNSTAGE +DOWNSTAGES +DOWNSTAIR +DOWNSTAIRS +DOWNSTATE +DOWNSTATER +DOWNSTATERS +DOWNSTATES +DOWNSTREAM +DOWNSTROKE +DOWNSTROKES +DOWNSWING +DOWNSWINGS +DOWNTHROW +DOWNTHROWS +DOWNTICK +DOWNTICKS +DOWNTIME +DOWNTIMES +DOWNTOWN +DOWNTOWNER +DOWNTOWNERS +DOWNTOWNS +DOWNTREND +DOWNTRENDED +DOWNTRENDING +DOWNTRENDS +DOWNTROD +DOWNTRODDEN +DOWNTURN +DOWNTURNS +DOWNWARD +DOWNWARDLY +DOWNWARDNESS +DOWNWARDNESSES +DOWNWARDS +DOWNWASH +DOWNWASHES +DOWNWIND +DOWNY +DOWNZONE +DOWNZONED +DOWNZONES +DOWNZONING +DOWRIES +DOWRY +DOWS +DOWSABEL +DOWSABELS +DOWSE +DOWSED +DOWSER +DOWSERS +DOWSES +DOWSING +DOXIE +DOXIES +DOXOLOGIES +DOXOLOGY +DOXORUBICIN +DOXORUBICINS +DOXY +DOXYCYCLINE +DOXYCYCLINES +DOYEN +DOYENNE +DOYENNES +DOYENS +DOYLEY +DOYLEYS +DOYLIES +DOYLY +DOZE +DOZED +DOZEN +DOZENED +DOZENING +DOZENS +DOZENTH +DOZENTHS +DOZER +DOZERS +DOZES +DOZIER +DOZIEST +DOZILY +DOZINESS +DOZINESSES +DOZING +DOZY +DRAB +DRABBED +DRABBER +DRABBEST +DRABBET +DRABBETS +DRABBING +DRABBLE +DRABBLED +DRABBLES +DRABBLING +DRABLY +DRABNESS +DRABNESSES +DRABS +DRACAENA +DRACAENAS +DRACENA +DRACENAS +DRACHM +DRACHMA +DRACHMAE +DRACHMAI +DRACHMAS +DRACHMS +DRACONIAN +DRACONIC +DRAFF +DRAFFIER +DRAFFIEST +DRAFFISH +DRAFFS +DRAFFY +DRAFT +DRAFTABLE +DRAFTED +DRAFTEE +DRAFTEES +DRAFTER +DRAFTERS +DRAFTIER +DRAFTIEST +DRAFTILY +DRAFTINESS +DRAFTINESSES +DRAFTING +DRAFTINGS +DRAFTS +DRAFTSMAN +DRAFTSMANSHIP +DRAFTSMANSHIPS +DRAFTSMEN +DRAFTSPERSON +DRAFTSPERSONS +DRAFTY +DRAG +DRAGEE +DRAGEES +DRAGGED +DRAGGER +DRAGGERS +DRAGGIER +DRAGGIEST +DRAGGING +DRAGGINGLY +DRAGGLE +DRAGGLED +DRAGGLES +DRAGGLING +DRAGGY +DRAGLINE +DRAGLINES +DRAGNET +DRAGNETS +DRAGOMAN +DRAGOMANS +DRAGOMEN +DRAGON +DRAGONET +DRAGONETS +DRAGONFLIES +DRAGONFLY +DRAGONHEAD +DRAGONHEADS +DRAGONISH +DRAGONS +DRAGOON +DRAGOONED +DRAGOONING +DRAGOONS +DRAGROPE +DRAGROPES +DRAGS +DRAGSTER +DRAGSTERS +DRAGSTRIP +DRAGSTRIPS +DRAIL +DRAILS +DRAIN +DRAINABLE +DRAINAGE +DRAINAGES +DRAINED +DRAINER +DRAINERS +DRAINING +DRAINPIPE +DRAINPIPES +DRAINS +DRAKE +DRAKES +DRAM +DRAMA +DRAMADIES +DRAMADY +DRAMAS +DRAMATIC +DRAMATICALLY +DRAMATICS +DRAMATISATION +DRAMATISATIONS +DRAMATISE +DRAMATISED +DRAMATISES +DRAMATISING +DRAMATIST +DRAMATISTS +DRAMATIZABLE +DRAMATIZATION +DRAMATIZATIONS +DRAMATIZE +DRAMATIZED +DRAMATIZES +DRAMATIZING +DRAMATURG +DRAMATURGE +DRAMATURGES +DRAMATURGIC +DRAMATURGICAL +DRAMATURGICALLY +DRAMATURGIES +DRAMATURGY +DRAMEDIES +DRAMEDY +DRAMMED +DRAMMING +DRAMMOCK +DRAMMOCKS +DRAMS +DRAMSHOP +DRAMSHOPS +DRANK +DRAPABILITIES +DRAPABILITY +DRAPABLE +DRAPE +DRAPEABILITIES +DRAPEABILITY +DRAPEABLE +DRAPED +DRAPER +DRAPERIED +DRAPERIES +DRAPERS +DRAPERY +DRAPES +DRAPEY +DRAPING +DRASTIC +DRASTICALLY +DRAT +DRATS +DRATTED +DRATTING +DRAUGHT +DRAUGHTED +DRAUGHTIER +DRAUGHTIEST +DRAUGHTING +DRAUGHTS +DRAUGHTSMAN +DRAUGHTSMEN +DRAUGHTY +DRAVE +DRAW +DRAWABLE +DRAWBACK +DRAWBACKS +DRAWBAR +DRAWBARS +DRAWBORE +DRAWBORES +DRAWBRIDGE +DRAWBRIDGES +DRAWDOWN +DRAWDOWNS +DRAWEE +DRAWEES +DRAWER +DRAWERFUL +DRAWERFULS +DRAWERS +DRAWING +DRAWINGS +DRAWKNIFE +DRAWKNIVES +DRAWL +DRAWLED +DRAWLER +DRAWLERS +DRAWLIER +DRAWLIEST +DRAWLING +DRAWLINGLY +DRAWLS +DRAWLY +DRAWN +DRAWNWORK +DRAWNWORKS +DRAWPLATE +DRAWPLATES +DRAWS +DRAWSHAVE +DRAWSHAVES +DRAWSTRING +DRAWSTRINGS +DRAWTUBE +DRAWTUBES +DRAY +DRAYAGE +DRAYAGES +DRAYED +DRAYING +DRAYMAN +DRAYMEN +DRAYS +DREAD +DREADED +DREADFUL +DREADFULLY +DREADFULNESS +DREADFULNESSES +DREADFULS +DREADING +DREADLOCK +DREADLOCKS +DREADNOUGHT +DREADNOUGHTS +DREADS +DREAM +DREAMBOAT +DREAMBOATS +DREAMED +DREAMER +DREAMERS +DREAMFUL +DREAMFULLY +DREAMFULNESS +DREAMFULNESSES +DREAMIER +DREAMIEST +DREAMILY +DREAMINESS +DREAMINESSES +DREAMING +DREAMLAND +DREAMLANDS +DREAMLESS +DREAMLESSLY +DREAMLESSNESS +DREAMLESSNESSES +DREAMLIKE +DREAMS +DREAMT +DREAMTIME +DREAMTIMES +DREAMWORLD +DREAMWORLDS +DREAMY +DREAR +DREARIER +DREARIES +DREARIEST +DREARILY +DREARINESS +DREARINESSES +DREARS +DREARY +DRECK +DRECKS +DRECKY +DREDGE +DREDGED +DREDGER +DREDGERS +DREDGES +DREDGING +DREDGINGS +DREE +DREED +DREEING +DREES +DREG +DREGGIER +DREGGIEST +DREGGISH +DREGGY +DREGS +DREICH +DREIDEL +DREIDELS +DREIDL +DREIDLS +DREIGH +DREK +DREKS +DRENCH +DRENCHED +DRENCHER +DRENCHERS +DRENCHES +DRENCHING +DRESS +DRESSAGE +DRESSAGES +DRESSED +DRESSER +DRESSERS +DRESSES +DRESSIER +DRESSIEST +DRESSILY +DRESSINESS +DRESSINESSES +DRESSING +DRESSINGS +DRESSMAKER +DRESSMAKERS +DRESSMAKING +DRESSMAKINGS +DRESSY +DREST +DREW +DRIB +DRIBBED +DRIBBING +DRIBBLE +DRIBBLED +DRIBBLER +DRIBBLERS +DRIBBLES +DRIBBLET +DRIBBLETS +DRIBBLING +DRIBBLY +DRIBLET +DRIBLETS +DRIBS +DRIED +DRIEGH +DRIER +DRIERS +DRIES +DRIEST +DRIFT +DRIFTAGE +DRIFTAGES +DRIFTED +DRIFTER +DRIFTERS +DRIFTIER +DRIFTIEST +DRIFTING +DRIFTINGLY +DRIFTPIN +DRIFTPINS +DRIFTS +DRIFTWOOD +DRIFTWOODS +DRIFTY +DRILL +DRILLABILITIES +DRILLABILITY +DRILLABLE +DRILLED +DRILLER +DRILLERS +DRILLING +DRILLINGS +DRILLMASTER +DRILLMASTERS +DRILLS +DRILY +DRINK +DRINKABILITIES +DRINKABILITY +DRINKABLE +DRINKABLES +DRINKABLY +DRINKER +DRINKERS +DRINKING +DRINKINGS +DRINKS +DRIP +DRIPLESS +DRIPPED +DRIPPER +DRIPPERS +DRIPPIER +DRIPPIEST +DRIPPILY +DRIPPING +DRIPPINGS +DRIPPY +DRIPS +DRIPSTONE +DRIPSTONES +DRIPT +DRIVABILITIES +DRIVABILITY +DRIVABLE +DRIVE +DRIVEABILITIES +DRIVEABILITY +DRIVEABLE +DRIVEL +DRIVELED +DRIVELER +DRIVELERS +DRIVELINE +DRIVELINES +DRIVELING +DRIVELLED +DRIVELLER +DRIVELLERS +DRIVELLING +DRIVELS +DRIVEN +DRIVENNESS +DRIVENNESSES +DRIVER +DRIVERLESS +DRIVERS +DRIVES +DRIVESHAFT +DRIVESHAFTS +DRIVETRAIN +DRIVETRAINS +DRIVEWAY +DRIVEWAYS +DRIVING +DRIVINGLY +DRIVINGS +DRIZZLE +DRIZZLED +DRIZZLES +DRIZZLIER +DRIZZLIEST +DRIZZLING +DRIZZLINGLY +DRIZZLY +DROGUE +DROGUES +DROID +DROIDS +DROIT +DROITS +DROLL +DROLLED +DROLLER +DROLLERIES +DROLLERY +DROLLEST +DROLLING +DROLLNESS +DROLLNESSES +DROLLS +DROLLY +DROMEDARIES +DROMEDARY +DROMON +DROMOND +DROMONDS +DROMONS +DRONE +DRONED +DRONER +DRONERS +DRONES +DRONGO +DRONGOS +DRONING +DRONINGLY +DRONISH +DROOL +DROOLED +DROOLIER +DROOLIEST +DROOLING +DROOLS +DROOLY +DROOP +DROOPED +DROOPIER +DROOPIEST +DROOPILY +DROOPING +DROOPINGLY +DROOPS +DROOPY +DROP +DROPCLOTH +DROPCLOTHS +DROPFORGE +DROPFORGED +DROPFORGES +DROPFORGING +DROPHEAD +DROPHEADS +DROPKICK +DROPKICKER +DROPKICKERS +DROPKICKS +DROPLET +DROPLETS +DROPLIGHT +DROPLIGHTS +DROPOUT +DROPOUTS +DROPPABLE +DROPPED +DROPPER +DROPPERFUL +DROPPERFULS +DROPPERS +DROPPERSFUL +DROPPING +DROPPINGS +DROPS +DROPSHOT +DROPSHOTS +DROPSICAL +DROPSIED +DROPSIES +DROPSONDE +DROPSONDES +DROPSY +DROPT +DROPWORT +DROPWORTS +DROSERA +DROSERAS +DROSHKIES +DROSHKY +DROSKIES +DROSKY +DROSOPHILA +DROSOPHILAS +DROSS +DROSSES +DROSSIER +DROSSIEST +DROSSY +DROUGHT +DROUGHTIER +DROUGHTIEST +DROUGHTINESS +DROUGHTINESSES +DROUGHTS +DROUGHTY +DROUK +DROUKED +DROUKING +DROUKS +DROUTH +DROUTHIER +DROUTHIEST +DROUTHS +DROUTHY +DROVE +DROVED +DROVER +DROVERS +DROVES +DROVING +DROWN +DROWND +DROWNDED +DROWNDING +DROWNDS +DROWNED +DROWNER +DROWNERS +DROWNING +DROWNS +DROWSE +DROWSED +DROWSES +DROWSIER +DROWSIEST +DROWSILY +DROWSINESS +DROWSINESSES +DROWSING +DROWSY +DRUB +DRUBBED +DRUBBER +DRUBBERS +DRUBBING +DRUBBINGS +DRUBS +DRUDGE +DRUDGED +DRUDGER +DRUDGERIES +DRUDGERS +DRUDGERY +DRUDGES +DRUDGING +DRUDGINGLY +DRUG +DRUGGED +DRUGGET +DRUGGETS +DRUGGIE +DRUGGIER +DRUGGIES +DRUGGIEST +DRUGGING +DRUGGIST +DRUGGISTS +DRUGGY +DRUGMAKER +DRUGMAKERS +DRUGS +DRUGSTORE +DRUGSTORES +DRUID +DRUIDESS +DRUIDESSES +DRUIDIC +DRUIDICAL +DRUIDISM +DRUIDISMS +DRUIDS +DRUM +DRUMBEAT +DRUMBEATER +DRUMBEATERS +DRUMBEATING +DRUMBEATINGS +DRUMBEATS +DRUMBLE +DRUMBLED +DRUMBLES +DRUMBLING +DRUMFIRE +DRUMFIRES +DRUMFISH +DRUMFISHES +DRUMHEAD +DRUMHEADS +DRUMLIER +DRUMLIEST +DRUMLIKE +DRUMLIN +DRUMLINS +DRUMLY +DRUMMED +DRUMMER +DRUMMERS +DRUMMING +DRUMROLL +DRUMROLLS +DRUMS +DRUMSTICK +DRUMSTICKS +DRUNK +DRUNKARD +DRUNKARDS +DRUNKEN +DRUNKENLY +DRUNKENNESS +DRUNKENNESSES +DRUNKER +DRUNKEST +DRUNKS +DRUPACEOUS +DRUPE +DRUPELET +DRUPELETS +DRUPES +DRUSE +DRUSES +DRUTHERS +DRY +DRYABLE +DRYAD +DRYADES +DRYADIC +DRYADS +DRYASDUST +DRYASDUSTS +DRYER +DRYERS +DRYEST +DRYING +DRYISH +DRYLAND +DRYLOT +DRYLOTS +DRYLY +DRYNESS +DRYNESSES +DRYOPITHECINE +DRYOPITHECINES +DRYPOINT +DRYPOINTS +DRYS +DRYSALTER +DRYSALTERIES +DRYSALTERS +DRYSALTERY +DRYSTONE +DRYWALL +DRYWALLED +DRYWALLING +DRYWALLS +DRYWELL +DRYWELLS +DUAD +DUADS +DUAL +DUALISM +DUALISMS +DUALIST +DUALISTIC +DUALISTICALLY +DUALISTS +DUALITIES +DUALITY +DUALIZE +DUALIZED +DUALIZES +DUALIZING +DUALLY +DUALS +DUB +DUBBED +DUBBER +DUBBERS +DUBBIN +DUBBING +DUBBINGS +DUBBINS +DUBIETIES +DUBIETY +DUBIOSITIES +DUBIOSITY +DUBIOUS +DUBIOUSLY +DUBIOUSNESS +DUBIOUSNESSES +DUBITABLE +DUBITABLY +DUBITATION +DUBITATIONS +DUBNIUM +DUBNIUMS +DUBONNET +DUBONNETS +DUBS +DUCAL +DUCALLY +DUCAT +DUCATS +DUCE +DUCES +DUCHESS +DUCHESSES +DUCHIES +DUCHY +DUCI +DUCK +DUCKBILL +DUCKBILLS +DUCKBOARD +DUCKBOARDS +DUCKED +DUCKER +DUCKERS +DUCKIE +DUCKIER +DUCKIES +DUCKIEST +DUCKING +DUCKLING +DUCKLINGS +DUCKPIN +DUCKPINS +DUCKS +DUCKTAIL +DUCKTAILS +DUCKWALK +DUCKWALKED +DUCKWALKING +DUCKWALKS +DUCKWEED +DUCKWEEDS +DUCKY +DUCT +DUCTAL +DUCTED +DUCTILE +DUCTILELY +DUCTILITIES +DUCTILITY +DUCTING +DUCTINGS +DUCTLESS +DUCTS +DUCTULE +DUCTULES +DUCTWORK +DUCTWORKS +DUD +DUDDIE +DUDDY +DUDE +DUDED +DUDEEN +DUDEENS +DUDES +DUDGEON +DUDGEONS +DUDING +DUDISH +DUDISHLY +DUDS +DUE +DUECENTO +DUECENTOS +DUEL +DUELED +DUELER +DUELERS +DUELING +DUELIST +DUELISTS +DUELLED +DUELLER +DUELLERS +DUELLI +DUELLING +DUELLIST +DUELLISTS +DUELLO +DUELLOS +DUELS +DUENDE +DUENDES +DUENESS +DUENESSES +DUENNA +DUENNAS +DUENNASHIP +DUENNASHIPS +DUES +DUET +DUETED +DUETING +DUETS +DUETTED +DUETTING +DUETTIST +DUETTISTS +DUFF +DUFFEL +DUFFELS +DUFFER +DUFFERS +DUFFLE +DUFFLES +DUFFS +DUFUS +DUFUSES +DUG +DUGONG +DUGONGS +DUGOUT +DUGOUTS +DUGS +DUH +DUI +DUIKER +DUIKERS +DUIT +DUITS +DUKE +DUKED +DUKEDOM +DUKEDOMS +DUKES +DUKING +DULCET +DULCETLY +DULCETS +DULCIANA +DULCIANAS +DULCIFIED +DULCIFIES +DULCIFY +DULCIFYING +DULCIMER +DULCIMERS +DULCIMORE +DULCIMORES +DULCINEA +DULCINEAS +DULIA +DULIAS +DULL +DULLARD +DULLARDS +DULLED +DULLER +DULLEST +DULLING +DULLISH +DULLISHLY +DULLNESS +DULLNESSES +DULLS +DULLSVILLE +DULLSVILLES +DULLY +DULNESS +DULNESSES +DULSE +DULSES +DULY +DUMA +DUMAS +DUMB +DUMBBELL +DUMBBELLS +DUMBCANE +DUMBCANES +DUMBED +DUMBER +DUMBEST +DUMBFOUND +DUMBFOUNDED +DUMBFOUNDER +DUMBFOUNDERED +DUMBFOUNDERING +DUMBFOUNDERS +DUMBFOUNDING +DUMBFOUNDS +DUMBHEAD +DUMBHEADS +DUMBING +DUMBLY +DUMBNESS +DUMBNESSES +DUMBO +DUMBOS +DUMBS +DUMBSTRUCK +DUMBWAITER +DUMBWAITERS +DUMDUM +DUMDUMS +DUMFOUND +DUMFOUNDED +DUMFOUNDING +DUMFOUNDS +DUMKA +DUMKY +DUMMIED +DUMMIES +DUMMKOPF +DUMMKOPFS +DUMMY +DUMMYING +DUMORTIERITE +DUMORTIERITES +DUMP +DUMPCART +DUMPCARTS +DUMPED +DUMPER +DUMPERS +DUMPIER +DUMPIEST +DUMPILY +DUMPINESS +DUMPINESSES +DUMPING +DUMPINGS +DUMPISH +DUMPLING +DUMPLINGS +DUMPS +DUMPSITE +DUMPSITES +DUMPSTER +DUMPSTERS +DUMPTRUCK +DUMPTRUCKS +DUMPY +DUN +DUNAM +DUNAMS +DUNCE +DUNCES +DUNCH +DUNCHES +DUNCICAL +DUNCISH +DUNCISHLY +DUNDERHEAD +DUNDERHEADED +DUNDERHEADS +DUNDREARIES +DUNE +DUNELAND +DUNELANDS +DUNELIKE +DUNES +DUNG +DUNGAREE +DUNGAREED +DUNGAREES +DUNGED +DUNGEON +DUNGEONED +DUNGEONING +DUNGEONS +DUNGHILL +DUNGHILLS +DUNGIER +DUNGIEST +DUNGING +DUNGS +DUNGY +DUNITE +DUNITES +DUNITIC +DUNK +DUNKED +DUNKER +DUNKERS +DUNKING +DUNKS +DUNLIN +DUNLINS +DUNNAGE +DUNNAGES +DUNNED +DUNNER +DUNNESS +DUNNESSES +DUNNEST +DUNNING +DUNNITE +DUNNITES +DUNS +DUNT +DUNTED +DUNTING +DUNTS +DUO +DUODECILLION +DUODECILLIONS +DUODECIMAL +DUODECIMALS +DUODECIMO +DUODECIMOS +DUODENA +DUODENAL +DUODENUM +DUODENUMS +DUOLOG +DUOLOGS +DUOLOGUE +DUOLOGUES +DUOMI +DUOMO +DUOMOS +DUOPOLIES +DUOPOLISTIC +DUOPOLY +DUOPSONIES +DUOPSONY +DUOS +DUOTONE +DUOTONES +DUP +DUPABLE +DUPE +DUPED +DUPER +DUPERIES +DUPERS +DUPERY +DUPES +DUPING +DUPLE +DUPLEX +DUPLEXED +DUPLEXER +DUPLEXERS +DUPLEXES +DUPLEXING +DUPLEXITIES +DUPLEXITY +DUPLICATE +DUPLICATED +DUPLICATES +DUPLICATING +DUPLICATION +DUPLICATIONS +DUPLICATIVE +DUPLICATOR +DUPLICATORS +DUPLICITIES +DUPLICITOUS +DUPLICITOUSLY +DUPLICITY +DUPPED +DUPPING +DUPS +DURA +DURABILITIES +DURABILITY +DURABLE +DURABLENESS +DURABLENESSES +DURABLES +DURABLY +DURAL +DURALUMIN +DURALUMINS +DURAMEN +DURAMENS +DURANCE +DURANCES +DURAS +DURATION +DURATIONS +DURATIVE +DURATIVES +DURBAR +DURBARS +DURE +DURED +DURES +DURESS +DURESSES +DURIAN +DURIANS +DURING +DURION +DURIONS +DURMAST +DURMASTS +DURN +DURNDEST +DURNED +DURNEDER +DURNEDEST +DURNING +DURNS +DURO +DUROC +DUROCS +DUROMETER +DUROMETERS +DUROS +DURR +DURRA +DURRAS +DURRIE +DURRIES +DURRS +DURST +DURUM +DURUMS +DUSK +DUSKED +DUSKIER +DUSKIEST +DUSKILY +DUSKINESS +DUSKINESSES +DUSKING +DUSKISH +DUSKS +DUSKY +DUST +DUSTBIN +DUSTBINS +DUSTCOVER +DUSTCOVERS +DUSTED +DUSTER +DUSTERS +DUSTHEAP +DUSTHEAPS +DUSTIER +DUSTIEST +DUSTILY +DUSTINESS +DUSTINESSES +DUSTING +DUSTINGS +DUSTLESS +DUSTLIKE +DUSTMAN +DUSTMEN +DUSTOFF +DUSTOFFS +DUSTPAN +DUSTPANS +DUSTPROOF +DUSTRAG +DUSTRAGS +DUSTS +DUSTSTORM +DUSTSTORMS +DUSTUP +DUSTUPS +DUSTY +DUTCH +DUTCHMAN +DUTCHMEN +DUTEOUS +DUTEOUSLY +DUTIABLE +DUTIES +DUTIFUL +DUTIFULLY +DUTIFULNESS +DUTIFULNESSES +DUTY +DUUMVIR +DUUMVIRATE +DUUMVIRATES +DUUMVIRI +DUUMVIRS +DUVET +DUVETINE +DUVETINES +DUVETS +DUVETYN +DUVETYNE +DUVETYNES +DUVETYNS +DUXELLES +DWARF +DWARFED +DWARFER +DWARFEST +DWARFING +DWARFISH +DWARFISHLY +DWARFISHNESS +DWARFISHNESSES +DWARFISM +DWARFISMS +DWARFLIKE +DWARFNESS +DWARFNESSES +DWARFS +DWARVES +DWEEB +DWEEBIER +DWEEBIEST +DWEEBISH +DWEEBS +DWEEBY +DWELL +DWELLED +DWELLER +DWELLERS +DWELLING +DWELLINGS +DWELLS +DWELT +DWINDLE +DWINDLED +DWINDLES +DWINDLING +DWINE +DWINED +DWINES +DWINING +DYABLE +DYAD +DYADIC +DYADICALLY +DYADICS +DYADS +DYARCHIC +DYARCHIES +DYARCHY +DYBBUK +DYBBUKIM +DYBBUKS +DYE +DYEABILITIES +DYEABILITY +DYEABLE +DYED +DYEING +DYEINGS +DYER +DYERS +DYES +DYESTUFF +DYESTUFFS +DYEWEED +DYEWEEDS +DYEWOOD +DYEWOODS +DYING +DYINGS +DYKE +DYKED +DYKES +DYKEY +DYKING +DYNAMETER +DYNAMETERS +DYNAMIC +DYNAMICAL +DYNAMICALLY +DYNAMICS +DYNAMISM +DYNAMISMS +DYNAMIST +DYNAMISTIC +DYNAMISTS +DYNAMITE +DYNAMITED +DYNAMITER +DYNAMITERS +DYNAMITES +DYNAMITIC +DYNAMITING +DYNAMO +DYNAMOMETER +DYNAMOMETERS +DYNAMOMETRIC +DYNAMOMETRIES +DYNAMOMETRY +DYNAMOS +DYNAMOTOR +DYNAMOTORS +DYNAST +DYNASTIC +DYNASTICALLY +DYNASTIES +DYNASTS +DYNASTY +DYNATRON +DYNATRONS +DYNE +DYNEIN +DYNEINS +DYNEL +DYNELS +DYNES +DYNODE +DYNODES +DYNORPHIN +DYNORPHINS +DYSARTHRIA +DYSARTHRIAS +DYSCRASIA +DYSCRASIAS +DYSCRASIC +DYSCRATIC +DYSENTERIC +DYSENTERIES +DYSENTERY +DYSFUNCTION +DYSFUNCTIONAL +DYSFUNCTIONS +DYSGENESES +DYSGENESIS +DYSGENIC +DYSGENICS +DYSKINESIA +DYSKINESIAS +DYSKINETIC +DYSLECTIC +DYSLECTICS +DYSLEXIA +DYSLEXIAS +DYSLEXIC +DYSLEXICS +DYSLOGISTIC +DYSLOGISTICALLY +DYSMENORRHEA +DYSMENORRHEAS +DYSMENORRHEIC +DYSPEPSIA +DYSPEPSIAS +DYSPEPSIES +DYSPEPSY +DYSPEPTIC +DYSPEPTICALLY +DYSPEPTICS +DYSPHAGIA +DYSPHAGIAS +DYSPHAGIC +DYSPHASIA +DYSPHASIAS +DYSPHASIC +DYSPHASICS +DYSPHEMISM +DYSPHEMISMS +DYSPHEMISTIC +DYSPHONIA +DYSPHONIAS +DYSPHONIC +DYSPHORIA +DYSPHORIAS +DYSPHORIC +DYSPLASIA +DYSPLASIAS +DYSPLASTIC +DYSPNEA +DYSPNEAL +DYSPNEAS +DYSPNEIC +DYSPNOEA +DYSPNOEAS +DYSPNOIC +DYSPROSIUM +DYSPROSIUMS +DYSRHYTHMIA +DYSRHYTHMIAS +DYSRHYTHMIC +DYSTAXIA +DYSTAXIAS +DYSTHYMIA +DYSTHYMIAS +DYSTHYMIC +DYSTHYMICS +DYSTOCIA +DYSTOCIAS +DYSTONIA +DYSTONIAS +DYSTONIC +DYSTOPIA +DYSTOPIAN +DYSTOPIAS +DYSTROPHIC +DYSTROPHIES +DYSTROPHY +DYSURIA +DYSURIAS +DYSURIC +DYVOUR +DYVOURS +EACH +EAGER +EAGERER +EAGEREST +EAGERLY +EAGERNESS +EAGERNESSES +EAGERS +EAGLE +EAGLED +EAGLES +EAGLET +EAGLETS +EAGLEWOOD +EAGLEWOODS +EAGLING +EAGRE +EAGRES +EALDORMAN +EALDORMEN +EANLING +EANLINGS +EAR +EARACHE +EARACHES +EARBUD +EARBUDS +EARDROP +EARDROPS +EARDRUM +EARDRUMS +EARED +EARFLAP +EARFLAPS +EARFUL +EARFULS +EARING +EARINGS +EARL +EARLAP +EARLAPS +EARLDOM +EARLDOMS +EARLESS +EARLIER +EARLIEST +EARLINESS +EARLINESSES +EARLOBE +EARLOBES +EARLOCK +EARLOCKS +EARLS +EARLSHIP +EARLSHIPS +EARLY +EARLYWOOD +EARLYWOODS +EARMARK +EARMARKED +EARMARKING +EARMARKS +EARMUFF +EARMUFFS +EARN +EARNED +EARNER +EARNERS +EARNEST +EARNESTLY +EARNESTNESS +EARNESTNESSES +EARNESTS +EARNING +EARNINGS +EARNS +EARPHONE +EARPHONES +EARPIECE +EARPIECES +EARPLUG +EARPLUGS +EARRING +EARRINGED +EARRINGS +EARS +EARSHOT +EARSHOTS +EARSPLITTING +EARSTONE +EARSTONES +EARTH +EARTHBORN +EARTHBOUND +EARTHED +EARTHEN +EARTHENWARE +EARTHENWARES +EARTHIER +EARTHIEST +EARTHILY +EARTHINESS +EARTHINESSES +EARTHING +EARTHLIER +EARTHLIEST +EARTHLIGHT +EARTHLIGHTS +EARTHLIKE +EARTHLINESS +EARTHLINESSES +EARTHLING +EARTHLINGS +EARTHLY +EARTHMAN +EARTHMEN +EARTHMOVER +EARTHMOVERS +EARTHMOVING +EARTHMOVINGS +EARTHNUT +EARTHNUTS +EARTHPEA +EARTHPEAS +EARTHQUAKE +EARTHQUAKES +EARTHRISE +EARTHRISES +EARTHS +EARTHSET +EARTHSETS +EARTHSHAKER +EARTHSHAKERS +EARTHSHAKING +EARTHSHAKINGLY +EARTHSHINE +EARTHSHINES +EARTHSTAR +EARTHSTARS +EARTHWARD +EARTHWARDS +EARTHWORK +EARTHWORKS +EARTHWORM +EARTHWORMS +EARTHY +EARWAX +EARWAXES +EARWIG +EARWIGGED +EARWIGGING +EARWIGS +EARWITNESS +EARWITNESSES +EARWORM +EARWORMS +EASE +EASED +EASEFUL +EASEFULLY +EASEL +EASELED +EASELS +EASEMENT +EASEMENTS +EASES +EASIER +EASIES +EASIEST +EASILY +EASINESS +EASINESSES +EASING +EAST +EASTBOUND +EASTER +EASTERLIES +EASTERLY +EASTERN +EASTERNER +EASTERNERS +EASTERNMOST +EASTERS +EASTING +EASTINGS +EASTS +EASTWARD +EASTWARDS +EASY +EASYGOING +EASYGOINGNESS +EASYGOINGNESSES +EAT +EATABLE +EATABLES +EATEN +EATER +EATERIES +EATERS +EATERY +EATH +EATING +EATINGS +EATS +EAU +EAUX +EAVE +EAVED +EAVES +EAVESDROP +EAVESDROPPED +EAVESDROPPER +EAVESDROPPERS +EAVESDROPPING +EAVESDROPS +EBB +EBBED +EBBET +EBBETS +EBBING +EBBS +EBON +EBONICS +EBONIES +EBONISE +EBONISED +EBONISES +EBONISING +EBONITE +EBONITES +EBONIZE +EBONIZED +EBONIZES +EBONIZING +EBONS +EBONY +EBOOK +EBOOKS +EBULLIENCE +EBULLIENCES +EBULLIENCIES +EBULLIENCY +EBULLIENT +EBULLIENTLY +EBULLITION +EBULLITIONS +ECARTE +ECARTES +ECAUDATE +ECBOLIC +ECBOLICS +ECCENTRIC +ECCENTRICALLY +ECCENTRICITIES +ECCENTRICITY +ECCENTRICS +ECCHYMOSES +ECCHYMOSIS +ECCHYMOTIC +ECCLESIA +ECCLESIAE +ECCLESIAL +ECCLESIASTIC +ECCLESIASTICAL +ECCLESIASTICISM +ECCLESIASTICS +ECCLESIOLOGICAL +ECCLESIOLOGIES +ECCLESIOLOGIST +ECCLESIOLOGISTS +ECCLESIOLOGY +ECCRINE +ECDYSES +ECDYSIAL +ECDYSIAST +ECDYSIASTS +ECDYSIS +ECDYSON +ECDYSONE +ECDYSONES +ECDYSONS +ECESIC +ECESIS +ECESISES +ECHARD +ECHARDS +ECHE +ECHED +ECHELLE +ECHELLES +ECHELON +ECHELONED +ECHELONING +ECHELONS +ECHES +ECHEVERIA +ECHEVERIAS +ECHIDNA +ECHIDNAE +ECHIDNAS +ECHINACEA +ECHINACEAS +ECHINATE +ECHINATED +ECHING +ECHINI +ECHINOCOCCI +ECHINOCOCCOSES +ECHINOCOCCOSIS +ECHINOCOCCUS +ECHINODERM +ECHINODERMATOUS +ECHINODERMS +ECHINOID +ECHINOIDS +ECHINUS +ECHIUROID +ECHIUROIDS +ECHO +ECHOCARDIOGRAM +ECHOCARDIOGRAMS +ECHOED +ECHOER +ECHOERS +ECHOES +ECHOEY +ECHOGRAM +ECHOGRAMS +ECHOIC +ECHOING +ECHOISM +ECHOISMS +ECHOLALIA +ECHOLALIAS +ECHOLALIC +ECHOLESS +ECHOLOCATION +ECHOLOCATIONS +ECHOS +ECHOVIRUS +ECHOVIRUSES +ECHT +ECLAIR +ECLAIRCISSEMENT +ECLAIRS +ECLAMPSIA +ECLAMPSIAS +ECLAMPTIC +ECLAT +ECLATS +ECLECTIC +ECLECTICALLY +ECLECTICISM +ECLECTICISMS +ECLECTICS +ECLIPSE +ECLIPSED +ECLIPSER +ECLIPSERS +ECLIPSES +ECLIPSING +ECLIPSIS +ECLIPSISES +ECLIPTIC +ECLIPTICS +ECLOGITE +ECLOGITES +ECLOGUE +ECLOGUES +ECLOSION +ECLOSIONS +ECOCATASTROPHE +ECOCATASTROPHES +ECOCIDAL +ECOCIDE +ECOCIDES +ECOFEMINISM +ECOFEMINISMS +ECOFEMINIST +ECOFEMINISTS +ECOFREAK +ECOFREAKS +ECOLOGIC +ECOLOGICAL +ECOLOGICALLY +ECOLOGIES +ECOLOGIST +ECOLOGISTS +ECOLOGY +ECONOBOX +ECONOBOXES +ECONOMETRIC +ECONOMETRICALLY +ECONOMETRICIAN +ECONOMETRICIANS +ECONOMETRICS +ECONOMETRIST +ECONOMETRISTS +ECONOMIC +ECONOMICAL +ECONOMICALLY +ECONOMICS +ECONOMIES +ECONOMISE +ECONOMISED +ECONOMISES +ECONOMISING +ECONOMIST +ECONOMISTS +ECONOMIZE +ECONOMIZED +ECONOMIZER +ECONOMIZERS +ECONOMIZES +ECONOMIZING +ECONOMY +ECOPHYSIOLOGIES +ECOPHYSIOLOGY +ECOSPECIES +ECOSPHERE +ECOSPHERES +ECOSYSTEM +ECOSYSTEMS +ECOTAGE +ECOTAGES +ECOTERRORISM +ECOTERRORISMS +ECOTERRORIST +ECOTERRORISTS +ECOTONAL +ECOTONE +ECOTONES +ECOTOUR +ECOTOURISM +ECOTOURISMS +ECOTOURIST +ECOTOURISTS +ECOTOURS +ECOTYPE +ECOTYPES +ECOTYPIC +ECRASEUR +ECRASEURS +ECRU +ECRUS +ECSTASIES +ECSTASY +ECSTATIC +ECSTATICALLY +ECSTATICS +ECTASES +ECTASIS +ECTATIC +ECTHYMA +ECTHYMATA +ECTOBLAST +ECTOBLASTS +ECTODERM +ECTODERMAL +ECTODERMS +ECTOGENIC +ECTOMERE +ECTOMERES +ECTOMERIC +ECTOMORPH +ECTOMORPHIC +ECTOMORPHS +ECTOPARASITE +ECTOPARASITES +ECTOPARASITIC +ECTOPIA +ECTOPIAS +ECTOPIC +ECTOPICALLY +ECTOPLASM +ECTOPLASMIC +ECTOPLASMS +ECTOPROCT +ECTOPROCTS +ECTOSARC +ECTOSARCS +ECTOTHERM +ECTOTHERMIC +ECTOTHERMS +ECTOTROPHIC +ECTOZOA +ECTOZOAN +ECTOZOANS +ECTOZOON +ECTYPAL +ECTYPE +ECTYPES +ECU +ECUMENIC +ECUMENICAL +ECUMENICALISM +ECUMENICALISMS +ECUMENICALLY +ECUMENICISM +ECUMENICISMS +ECUMENICIST +ECUMENICISTS +ECUMENICITIES +ECUMENICITY +ECUMENICS +ECUMENISM +ECUMENISMS +ECUMENIST +ECUMENISTS +ECUS +ECZEMA +ECZEMAS +ECZEMATOUS +ED +EDACIOUS +EDACITIES +EDACITY +EDAPHIC +EDAPHICALLY +EDDIED +EDDIES +EDDO +EDDOES +EDDY +EDDYING +EDELWEISS +EDELWEISSES +EDEMA +EDEMAS +EDEMATA +EDEMATOSE +EDEMATOUS +EDENIC +EDENTATE +EDENTATES +EDENTULOUS +EDGE +EDGED +EDGELESS +EDGER +EDGERS +EDGES +EDGEWAYS +EDGEWISE +EDGIER +EDGIEST +EDGILY +EDGINESS +EDGINESSES +EDGING +EDGINGS +EDGY +EDH +EDHS +EDIBILITIES +EDIBILITY +EDIBLE +EDIBLENESS +EDIBLENESSES +EDIBLES +EDICT +EDICTAL +EDICTALLY +EDICTS +EDIFICATION +EDIFICATIONS +EDIFICE +EDIFICES +EDIFICIAL +EDIFIED +EDIFIER +EDIFIERS +EDIFIES +EDIFY +EDIFYING +EDILE +EDILES +EDIT +EDITABLE +EDITED +EDITING +EDITION +EDITIONS +EDITOR +EDITORIAL +EDITORIALIST +EDITORIALISTS +EDITORIALIZE +EDITORIALIZED +EDITORIALIZER +EDITORIALIZERS +EDITORIALIZES +EDITORIALIZING +EDITORIALLY +EDITORIALS +EDITORS +EDITORSHIP +EDITORSHIPS +EDITRESS +EDITRESSES +EDITRICES +EDITRIX +EDITRIXES +EDITS +EDS +EDUCABILITIES +EDUCABILITY +EDUCABLE +EDUCABLES +EDUCATE +EDUCATED +EDUCATEDNESS +EDUCATEDNESSES +EDUCATES +EDUCATING +EDUCATION +EDUCATIONAL +EDUCATIONALIST +EDUCATIONALISTS +EDUCATIONALLY +EDUCATIONESE +EDUCATIONESES +EDUCATIONIST +EDUCATIONISTS +EDUCATIONS +EDUCATIVE +EDUCATOR +EDUCATORS +EDUCATORY +EDUCE +EDUCED +EDUCES +EDUCIBLE +EDUCING +EDUCT +EDUCTION +EDUCTIONS +EDUCTIVE +EDUCTOR +EDUCTORS +EDUCTS +EDULCORATE +EDULCORATED +EDULCORATES +EDULCORATING +EDUTAINMENT +EDUTAINMENTS +EEK +EEL +EELGRASS +EELGRASSES +EELIER +EELIEST +EELLIKE +EELPOUT +EELPOUTS +EELS +EELWORM +EELWORMS +EELY +EERIE +EERIER +EERIEST +EERILY +EERINESS +EERINESSES +EERY +EF +EFF +EFFABLE +EFFACE +EFFACEABLE +EFFACED +EFFACEMENT +EFFACEMENTS +EFFACER +EFFACERS +EFFACES +EFFACING +EFFECT +EFFECTED +EFFECTER +EFFECTERS +EFFECTING +EFFECTIVE +EFFECTIVELY +EFFECTIVENESS +EFFECTIVENESSES +EFFECTIVES +EFFECTIVITIES +EFFECTIVITY +EFFECTOR +EFFECTORS +EFFECTS +EFFECTUAL +EFFECTUALITIES +EFFECTUALITY +EFFECTUALLY +EFFECTUALNESS +EFFECTUALNESSES +EFFECTUATE +EFFECTUATED +EFFECTUATES +EFFECTUATING +EFFECTUATION +EFFECTUATIONS +EFFEMINACIES +EFFEMINACY +EFFEMINATE +EFFEMINATES +EFFENDI +EFFENDIS +EFFERENT +EFFERENTLY +EFFERENTS +EFFERVESCE +EFFERVESCED +EFFERVESCENCE +EFFERVESCENCES +EFFERVESCENT +EFFERVESCENTLY +EFFERVESCES +EFFERVESCING +EFFETE +EFFETELY +EFFETENESS +EFFETENESSES +EFFICACIES +EFFICACIOUS +EFFICACIOUSLY +EFFICACIOUSNESS +EFFICACITIES +EFFICACITY +EFFICACY +EFFICIENCIES +EFFICIENCY +EFFICIENT +EFFICIENTLY +EFFIGIAL +EFFIGIES +EFFIGY +EFFLORESCE +EFFLORESCED +EFFLORESCENCE +EFFLORESCENCES +EFFLORESCENT +EFFLORESCES +EFFLORESCING +EFFLUENCE +EFFLUENCES +EFFLUENT +EFFLUENTS +EFFLUVIA +EFFLUVIAL +EFFLUVIUM +EFFLUVIUMS +EFFLUX +EFFLUXES +EFFLUXION +EFFLUXIONS +EFFORT +EFFORTFUL +EFFORTFULLY +EFFORTFULNESS +EFFORTFULNESSES +EFFORTLESS +EFFORTLESSLY +EFFORTLESSNESS +EFFORTS +EFFRONTERIES +EFFRONTERY +EFFS +EFFULGE +EFFULGED +EFFULGENCE +EFFULGENCES +EFFULGENT +EFFULGES +EFFULGING +EFFUSE +EFFUSED +EFFUSES +EFFUSING +EFFUSION +EFFUSIONS +EFFUSIVE +EFFUSIVELY +EFFUSIVENESS +EFFUSIVENESSES +EFS +EFT +EFTS +EFTSOON +EFTSOONS +EGAD +EGADS +EGAL +EGALITARIAN +EGALITARIANISM +EGALITARIANISMS +EGALITARIANS +EGALITE +EGALITES +EGER +EGERS +EGEST +EGESTA +EGESTED +EGESTING +EGESTION +EGESTIONS +EGESTIVE +EGESTS +EGG +EGGAR +EGGARS +EGGBEATER +EGGBEATERS +EGGCUP +EGGCUPS +EGGED +EGGER +EGGERS +EGGFRUIT +EGGFRUITS +EGGHEAD +EGGHEADED +EGGHEADEDNESS +EGGHEADEDNESSES +EGGHEADS +EGGING +EGGLESS +EGGNOG +EGGNOGS +EGGPLANT +EGGPLANTS +EGGS +EGGSHELL +EGGSHELLS +EGGY +EGIS +EGISES +EGLANTINE +EGLANTINES +EGLATERE +EGLATERES +EGLOMISE +EGO +EGOCENTRIC +EGOCENTRICALLY +EGOCENTRICITIES +EGOCENTRICITY +EGOCENTRICS +EGOCENTRISM +EGOCENTRISMS +EGOISM +EGOISMS +EGOIST +EGOISTIC +EGOISTICAL +EGOISTICALLY +EGOISTS +EGOLESS +EGOMANIA +EGOMANIAC +EGOMANIACAL +EGOMANIACALLY +EGOMANIACS +EGOMANIAS +EGOS +EGOTISM +EGOTISMS +EGOTIST +EGOTISTIC +EGOTISTICAL +EGOTISTICALLY +EGOTISTS +EGREGIOUS +EGREGIOUSLY +EGREGIOUSNESS +EGREGIOUSNESSES +EGRESS +EGRESSED +EGRESSES +EGRESSING +EGRESSION +EGRESSIONS +EGRET +EGRETS +EGYPTIAN +EGYPTIANS +EH +EICOSANOID +EICOSANOIDS +EIDE +EIDER +EIDERDOWN +EIDERDOWNS +EIDERS +EIDETIC +EIDETICALLY +EIDOLA +EIDOLIC +EIDOLON +EIDOLONS +EIDOS +EIGENMODE +EIGENMODES +EIGENVALUE +EIGENVALUES +EIGENVECTOR +EIGENVECTORS +EIGHT +EIGHTBALL +EIGHTBALLS +EIGHTEEN +EIGHTEENS +EIGHTEENTH +EIGHTEENTHS +EIGHTFOLD +EIGHTH +EIGHTHLY +EIGHTHS +EIGHTIES +EIGHTIETH +EIGHTIETHS +EIGHTS +EIGHTVO +EIGHTVOS +EIGHTY +EIKON +EIKONES +EIKONS +EINKORN +EINKORNS +EINSTEIN +EINSTEINIUM +EINSTEINIUMS +EINSTEINS +EIRENIC +EIRENICAL +EISEGESES +EISEGESIS +EISTEDDFOD +EISTEDDFODAU +EISTEDDFODIC +EISTEDDFODS +EISWEIN +EISWEINS +EITHER +EJACULATE +EJACULATED +EJACULATES +EJACULATING +EJACULATION +EJACULATIONS +EJACULATOR +EJACULATORS +EJACULATORY +EJECT +EJECTA +EJECTABLE +EJECTED +EJECTING +EJECTION +EJECTIONS +EJECTIVE +EJECTIVES +EJECTMENT +EJECTMENTS +EJECTOR +EJECTORS +EJECTS +EKE +EKED +EKES +EKING +EKISTIC +EKISTICAL +EKISTICS +EKPWELE +EKPWELES +EKTEXINE +EKTEXINES +EKUELE +EL +ELABORATE +ELABORATED +ELABORATELY +ELABORATENESS +ELABORATENESSES +ELABORATES +ELABORATING +ELABORATION +ELABORATIONS +ELABORATIVE +ELAIN +ELAINS +ELAN +ELAND +ELANDS +ELANS +ELAPHINE +ELAPID +ELAPIDS +ELAPINE +ELAPSE +ELAPSED +ELAPSES +ELAPSING +ELASMOBRANCH +ELASMOBRANCHS +ELASTASE +ELASTASES +ELASTIC +ELASTICALLY +ELASTICITIES +ELASTICITY +ELASTICIZED +ELASTICS +ELASTIN +ELASTINS +ELASTOMER +ELASTOMERIC +ELASTOMERS +ELATE +ELATED +ELATEDLY +ELATEDNESS +ELATEDNESSES +ELATER +ELATERID +ELATERIDS +ELATERIN +ELATERINS +ELATERITE +ELATERITES +ELATERIUM +ELATERIUMS +ELATERS +ELATES +ELATING +ELATION +ELATIONS +ELATIVE +ELATIVES +ELBOW +ELBOWED +ELBOWING +ELBOWROOM +ELBOWROOMS +ELBOWS +ELD +ELDER +ELDERBERRIES +ELDERBERRY +ELDERCARE +ELDERCARES +ELDERLIES +ELDERLINESS +ELDERLINESSES +ELDERLY +ELDERS +ELDERSHIP +ELDERSHIPS +ELDEST +ELDRESS +ELDRESSES +ELDRICH +ELDRITCH +ELDS +ELECAMPANE +ELECAMPANES +ELECT +ELECTABILITIES +ELECTABILITY +ELECTABLE +ELECTED +ELECTEE +ELECTEES +ELECTING +ELECTION +ELECTIONEER +ELECTIONEERED +ELECTIONEERER +ELECTIONEERERS +ELECTIONEERING +ELECTIONEERS +ELECTIONS +ELECTIVE +ELECTIVELY +ELECTIVENESS +ELECTIVENESSES +ELECTIVES +ELECTOR +ELECTORAL +ELECTORALLY +ELECTORATE +ELECTORATES +ELECTORS +ELECTRESS +ELECTRESSES +ELECTRET +ELECTRETS +ELECTRIC +ELECTRICAL +ELECTRICALLY +ELECTRICIAN +ELECTRICIANS +ELECTRICITIES +ELECTRICITY +ELECTRICS +ELECTRIFICATION +ELECTRIFIED +ELECTRIFIES +ELECTRIFY +ELECTRIFYING +ELECTRO +ELECTROACOUSTIC +ELECTROANALYSES +ELECTROANALYSIS +ELECTROCHEMICAL +ELECTROCUTE +ELECTROCUTED +ELECTROCUTES +ELECTROCUTING +ELECTROCUTION +ELECTROCUTIONS +ELECTRODE +ELECTRODEPOSIT +ELECTRODEPOSITS +ELECTRODERMAL +ELECTRODES +ELECTRODIALYSES +ELECTRODIALYSIS +ELECTRODIALYTIC +ELECTRODYNAMIC +ELECTRODYNAMICS +ELECTROED +ELECTROFISHING +ELECTROFISHINGS +ELECTROFORM +ELECTROFORMED +ELECTROFORMING +ELECTROFORMS +ELECTROGENESES +ELECTROGENESIS +ELECTROGENIC +ELECTROGRAM +ELECTROGRAMS +ELECTROING +ELECTROJET +ELECTROJETS +ELECTROKINETIC +ELECTROKINETICS +ELECTROLESS +ELECTROLOGIES +ELECTROLOGIST +ELECTROLOGISTS +ELECTROLOGY +ELECTROLYSES +ELECTROLYSIS +ELECTROLYTE +ELECTROLYTES +ELECTROLYTIC +ELECTROLYZE +ELECTROLYZED +ELECTROLYZES +ELECTROLYZING +ELECTROMAGNET +ELECTROMAGNETIC +ELECTROMAGNETS +ELECTROMETER +ELECTROMETERS +ELECTROMYOGRAM +ELECTROMYOGRAMS +ELECTROMYOGRAPH +ELECTRON +ELECTRONEGATIVE +ELECTRONIC +ELECTRONICA +ELECTRONICALLY +ELECTRONICAS +ELECTRONICS +ELECTRONS +ELECTROOSMOSES +ELECTROOSMOSIS +ELECTROOSMOTIC +ELECTROPHILE +ELECTROPHILES +ELECTROPHILIC +ELECTROPHORESE +ELECTROPHORESED +ELECTROPHORESES +ELECTROPHORESIS +ELECTROPHORETIC +ELECTROPHORI +ELECTROPHORUS +ELECTROPLATE +ELECTROPLATED +ELECTROPLATES +ELECTROPLATING +ELECTROPOSITIVE +ELECTROS +ELECTROSCOPE +ELECTROSCOPES +ELECTROSHOCK +ELECTROSHOCKS +ELECTROSTATIC +ELECTROSTATICS +ELECTROSURGERY +ELECTROSURGICAL +ELECTROTHERAPY +ELECTROTHERMAL +ELECTROTONIC +ELECTROTONUS +ELECTROTONUSES +ELECTROTYPE +ELECTROTYPED +ELECTROTYPER +ELECTROTYPERS +ELECTROTYPES +ELECTROTYPING +ELECTROWEAK +ELECTROWINNING +ELECTROWINNINGS +ELECTRUM +ELECTRUMS +ELECTS +ELECTUARIES +ELECTUARY +ELEDOISIN +ELEDOISINS +ELEEMOSYNARY +ELEGANCE +ELEGANCES +ELEGANCIES +ELEGANCY +ELEGANT +ELEGANTLY +ELEGIAC +ELEGIACAL +ELEGIACALLY +ELEGIACS +ELEGIES +ELEGISE +ELEGISED +ELEGISES +ELEGISING +ELEGIST +ELEGISTS +ELEGIT +ELEGITS +ELEGIZE +ELEGIZED +ELEGIZES +ELEGIZING +ELEGY +ELEMENT +ELEMENTAL +ELEMENTALLY +ELEMENTALS +ELEMENTARILY +ELEMENTARINESS +ELEMENTARY +ELEMENTS +ELEMI +ELEMIS +ELENCHI +ELENCHIC +ELENCHTIC +ELENCHUS +ELENCTIC +ELEOPTENE +ELEOPTENES +ELEPHANT +ELEPHANTIASES +ELEPHANTIASIS +ELEPHANTINE +ELEPHANTS +ELEVATE +ELEVATED +ELEVATEDS +ELEVATES +ELEVATING +ELEVATION +ELEVATIONS +ELEVATOR +ELEVATORS +ELEVEN +ELEVENS +ELEVENSES +ELEVENTH +ELEVENTHS +ELEVON +ELEVONS +ELF +ELFIN +ELFINS +ELFISH +ELFISHLY +ELFLIKE +ELFLOCK +ELFLOCKS +ELHI +ELICIT +ELICITATION +ELICITATIONS +ELICITED +ELICITING +ELICITOR +ELICITORS +ELICITS +ELIDE +ELIDED +ELIDES +ELIDIBLE +ELIDING +ELIGIBILITIES +ELIGIBILITY +ELIGIBLE +ELIGIBLES +ELIGIBLY +ELIMINATE +ELIMINATED +ELIMINATES +ELIMINATING +ELIMINATION +ELIMINATIONS +ELIMINATIVE +ELIMINATOR +ELIMINATORS +ELINT +ELINTS +ELISION +ELISIONS +ELITE +ELITES +ELITISM +ELITISMS +ELITIST +ELITISTS +ELIXIR +ELIXIRS +ELK +ELKHOUND +ELKHOUNDS +ELKS +ELL +ELLIPSE +ELLIPSES +ELLIPSIS +ELLIPSOID +ELLIPSOIDAL +ELLIPSOIDS +ELLIPTIC +ELLIPTICAL +ELLIPTICALLY +ELLIPTICALS +ELLIPTICITIES +ELLIPTICITY +ELLS +ELM +ELMIER +ELMIEST +ELMS +ELMY +ELOCUTION +ELOCUTIONARY +ELOCUTIONIST +ELOCUTIONISTS +ELOCUTIONS +ELODEA +ELODEAS +ELOIGN +ELOIGNED +ELOIGNER +ELOIGNERS +ELOIGNING +ELOIGNS +ELOIN +ELOINED +ELOINER +ELOINERS +ELOINING +ELOINMENT +ELOINMENTS +ELOINS +ELONGATE +ELONGATED +ELONGATES +ELONGATING +ELONGATION +ELONGATIONS +ELOPE +ELOPED +ELOPEMENT +ELOPEMENTS +ELOPER +ELOPERS +ELOPES +ELOPING +ELOQUENCE +ELOQUENCES +ELOQUENT +ELOQUENTLY +ELS +ELSE +ELSEWHERE +ELUANT +ELUANTS +ELUATE +ELUATES +ELUCIDATE +ELUCIDATED +ELUCIDATES +ELUCIDATING +ELUCIDATION +ELUCIDATIONS +ELUCIDATIVE +ELUCIDATOR +ELUCIDATORS +ELUCUBRATE +ELUCUBRATED +ELUCUBRATES +ELUCUBRATING +ELUCUBRATION +ELUCUBRATIONS +ELUDE +ELUDED +ELUDER +ELUDERS +ELUDES +ELUDING +ELUENT +ELUENTS +ELUSION +ELUSIONS +ELUSIVE +ELUSIVELY +ELUSIVENESS +ELUSIVENESSES +ELUSORY +ELUTE +ELUTED +ELUTES +ELUTING +ELUTION +ELUTIONS +ELUTRIATE +ELUTRIATED +ELUTRIATES +ELUTRIATING +ELUTRIATION +ELUTRIATIONS +ELUTRIATOR +ELUTRIATORS +ELUVIA +ELUVIAL +ELUVIATE +ELUVIATED +ELUVIATES +ELUVIATING +ELUVIATION +ELUVIATIONS +ELUVIUM +ELUVIUMS +ELVER +ELVERS +ELVES +ELVISH +ELVISHLY +ELYSIAN +ELYTRA +ELYTROID +ELYTRON +ELYTROUS +ELYTRUM +EM +EMACIATE +EMACIATED +EMACIATES +EMACIATING +EMACIATION +EMACIATIONS +EMAIL +EMAILED +EMAILING +EMAILS +EMALANGENI +EMANANT +EMANATE +EMANATED +EMANATES +EMANATING +EMANATION +EMANATIONS +EMANATIVE +EMANATOR +EMANATORS +EMANCIPATE +EMANCIPATED +EMANCIPATES +EMANCIPATING +EMANCIPATION +EMANCIPATIONIST +EMANCIPATIONS +EMANCIPATOR +EMANCIPATORS +EMARGINATE +EMARGINATION +EMARGINATIONS +EMASCULATE +EMASCULATED +EMASCULATES +EMASCULATING +EMASCULATION +EMASCULATIONS +EMASCULATOR +EMASCULATORS +EMBALM +EMBALMED +EMBALMER +EMBALMERS +EMBALMING +EMBALMMENT +EMBALMMENTS +EMBALMS +EMBANK +EMBANKED +EMBANKING +EMBANKMENT +EMBANKMENTS +EMBANKS +EMBAR +EMBARCADERO +EMBARCADEROS +EMBARGO +EMBARGOED +EMBARGOES +EMBARGOING +EMBARK +EMBARKATION +EMBARKATIONS +EMBARKED +EMBARKING +EMBARKMENT +EMBARKMENTS +EMBARKS +EMBARRASS +EMBARRASSABLE +EMBARRASSED +EMBARRASSEDLY +EMBARRASSES +EMBARRASSING +EMBARRASSINGLY +EMBARRASSMENT +EMBARRASSMENTS +EMBARRED +EMBARRING +EMBARS +EMBASSAGE +EMBASSAGES +EMBASSIES +EMBASSY +EMBATTLE +EMBATTLED +EMBATTLEMENT +EMBATTLEMENTS +EMBATTLES +EMBATTLING +EMBAY +EMBAYED +EMBAYING +EMBAYMENT +EMBAYMENTS +EMBAYS +EMBED +EMBEDDED +EMBEDDING +EMBEDDINGS +EMBEDMENT +EMBEDMENTS +EMBEDS +EMBELLISH +EMBELLISHED +EMBELLISHER +EMBELLISHERS +EMBELLISHES +EMBELLISHING +EMBELLISHMENT +EMBELLISHMENTS +EMBER +EMBERS +EMBEZZLE +EMBEZZLED +EMBEZZLEMENT +EMBEZZLEMENTS +EMBEZZLER +EMBEZZLERS +EMBEZZLES +EMBEZZLING +EMBITTER +EMBITTERED +EMBITTERING +EMBITTERMENT +EMBITTERMENTS +EMBITTERS +EMBLAZE +EMBLAZED +EMBLAZER +EMBLAZERS +EMBLAZES +EMBLAZING +EMBLAZON +EMBLAZONED +EMBLAZONER +EMBLAZONERS +EMBLAZONING +EMBLAZONMENT +EMBLAZONMENTS +EMBLAZONRIES +EMBLAZONRY +EMBLAZONS +EMBLEM +EMBLEMATIC +EMBLEMATICAL +EMBLEMATICALLY +EMBLEMATIZE +EMBLEMATIZED +EMBLEMATIZES +EMBLEMATIZING +EMBLEMED +EMBLEMENTS +EMBLEMING +EMBLEMIZE +EMBLEMIZED +EMBLEMIZES +EMBLEMIZING +EMBLEMS +EMBODIED +EMBODIER +EMBODIERS +EMBODIES +EMBODIMENT +EMBODIMENTS +EMBODY +EMBODYING +EMBOLDEN +EMBOLDENED +EMBOLDENING +EMBOLDENS +EMBOLECTOMIES +EMBOLECTOMY +EMBOLI +EMBOLIC +EMBOLIES +EMBOLISM +EMBOLISMIC +EMBOLISMS +EMBOLIZATION +EMBOLIZATIONS +EMBOLUS +EMBOLY +EMBONPOINT +EMBONPOINTS +EMBORDER +EMBORDERED +EMBORDERING +EMBORDERS +EMBOSK +EMBOSKED +EMBOSKING +EMBOSKS +EMBOSOM +EMBOSOMED +EMBOSOMING +EMBOSOMS +EMBOSS +EMBOSSABLE +EMBOSSED +EMBOSSER +EMBOSSERS +EMBOSSES +EMBOSSING +EMBOSSMENT +EMBOSSMENTS +EMBOUCHURE +EMBOUCHURES +EMBOW +EMBOWED +EMBOWEL +EMBOWELED +EMBOWELING +EMBOWELLED +EMBOWELLING +EMBOWELS +EMBOWER +EMBOWERED +EMBOWERING +EMBOWERS +EMBOWING +EMBOWS +EMBRACE +EMBRACEABLE +EMBRACED +EMBRACEMENT +EMBRACEMENTS +EMBRACEOR +EMBRACEORS +EMBRACER +EMBRACERIES +EMBRACERS +EMBRACERY +EMBRACES +EMBRACING +EMBRACINGLY +EMBRACIVE +EMBRANGLE +EMBRANGLED +EMBRANGLEMENT +EMBRANGLEMENTS +EMBRANGLES +EMBRANGLING +EMBRASURE +EMBRASURES +EMBRITTLE +EMBRITTLED +EMBRITTLEMENT +EMBRITTLEMENTS +EMBRITTLES +EMBRITTLING +EMBROCATE +EMBROCATED +EMBROCATES +EMBROCATING +EMBROCATION +EMBROCATIONS +EMBROGLIO +EMBROGLIOS +EMBROIDER +EMBROIDERED +EMBROIDERER +EMBROIDERERS +EMBROIDERIES +EMBROIDERING +EMBROIDERS +EMBROIDERY +EMBROIL +EMBROILED +EMBROILER +EMBROILERS +EMBROILING +EMBROILMENT +EMBROILMENTS +EMBROILS +EMBROWN +EMBROWNED +EMBROWNING +EMBROWNS +EMBRUE +EMBRUED +EMBRUES +EMBRUING +EMBRUTE +EMBRUTED +EMBRUTES +EMBRUTING +EMBRYO +EMBRYOGENESES +EMBRYOGENESIS +EMBRYOGENETIC +EMBRYOGENIC +EMBRYOGENIES +EMBRYOGENY +EMBRYOID +EMBRYOIDS +EMBRYOLOGICAL +EMBRYOLOGICALLY +EMBRYOLOGIES +EMBRYOLOGIST +EMBRYOLOGISTS +EMBRYOLOGY +EMBRYON +EMBRYONAL +EMBRYONATED +EMBRYONIC +EMBRYONICALLY +EMBRYONS +EMBRYOPHYTE +EMBRYOPHYTES +EMBRYOS +EMBRYOTIC +EMCEE +EMCEED +EMCEEING +EMCEES +EMDASH +EMDASHES +EME +EMEER +EMEERATE +EMEERATES +EMEERS +EMEND +EMENDABLE +EMENDATE +EMENDATED +EMENDATES +EMENDATING +EMENDATION +EMENDATIONS +EMENDATOR +EMENDATORS +EMENDED +EMENDER +EMENDERS +EMENDING +EMENDS +EMERALD +EMERALDS +EMERGE +EMERGED +EMERGENCE +EMERGENCES +EMERGENCIES +EMERGENCY +EMERGENT +EMERGENTS +EMERGES +EMERGING +EMERIES +EMERITA +EMERITAE +EMERITAS +EMERITI +EMERITUS +EMEROD +EMERODS +EMEROID +EMEROIDS +EMERSED +EMERSION +EMERSIONS +EMERY +EMES +EMESES +EMESIS +EMETIC +EMETICALLY +EMETICS +EMETIN +EMETINE +EMETINES +EMETINS +EMEU +EMEUS +EMEUTE +EMEUTES +EMIC +EMIGRANT +EMIGRANTS +EMIGRATE +EMIGRATED +EMIGRATES +EMIGRATING +EMIGRATION +EMIGRATIONS +EMIGRE +EMIGRES +EMINENCE +EMINENCES +EMINENCIES +EMINENCY +EMINENT +EMINENTLY +EMIR +EMIRATE +EMIRATES +EMIRS +EMISSARIES +EMISSARY +EMISSION +EMISSIONS +EMISSIVE +EMISSIVITIES +EMISSIVITY +EMIT +EMITS +EMITTANCE +EMITTANCES +EMITTED +EMITTER +EMITTERS +EMITTING +EMMENAGOGUE +EMMENAGOGUES +EMMER +EMMERS +EMMET +EMMETROPE +EMMETROPES +EMMETS +EMMY +EMMYS +EMODIN +EMODINS +EMOLLIENT +EMOLLIENTS +EMOLUMENT +EMOLUMENTS +EMOTE +EMOTED +EMOTER +EMOTERS +EMOTES +EMOTICON +EMOTICONS +EMOTING +EMOTION +EMOTIONAL +EMOTIONALISM +EMOTIONALISMS +EMOTIONALIST +EMOTIONALISTIC +EMOTIONALISTS +EMOTIONALITIES +EMOTIONALITY +EMOTIONALIZE +EMOTIONALIZED +EMOTIONALIZES +EMOTIONALIZING +EMOTIONALLY +EMOTIONLESS +EMOTIONLESSLY +EMOTIONLESSNESS +EMOTIONS +EMOTIVE +EMOTIVELY +EMOTIVITIES +EMOTIVITY +EMPALE +EMPALED +EMPALER +EMPALERS +EMPALES +EMPALING +EMPANADA +EMPANADAS +EMPANEL +EMPANELED +EMPANELING +EMPANELLED +EMPANELLING +EMPANELS +EMPATHETIC +EMPATHETICALLY +EMPATHIC +EMPATHICALLY +EMPATHIES +EMPATHISE +EMPATHISED +EMPATHISES +EMPATHISING +EMPATHIZE +EMPATHIZED +EMPATHIZES +EMPATHIZING +EMPATHY +EMPENNAGE +EMPENNAGES +EMPERIES +EMPEROR +EMPERORS +EMPERORSHIP +EMPERORSHIPS +EMPERY +EMPHASES +EMPHASIS +EMPHASISE +EMPHASISED +EMPHASISES +EMPHASISING +EMPHASIZE +EMPHASIZED +EMPHASIZES +EMPHASIZING +EMPHATIC +EMPHATICALLY +EMPHYSEMA +EMPHYSEMAS +EMPHYSEMATOUS +EMPHYSEMIC +EMPIRE +EMPIRES +EMPIRIC +EMPIRICAL +EMPIRICALLY +EMPIRICISM +EMPIRICISMS +EMPIRICIST +EMPIRICISTS +EMPIRICS +EMPLACE +EMPLACED +EMPLACEMENT +EMPLACEMENTS +EMPLACES +EMPLACING +EMPLANE +EMPLANED +EMPLANES +EMPLANING +EMPLOY +EMPLOYABILITIES +EMPLOYABILITY +EMPLOYABLE +EMPLOYABLES +EMPLOYE +EMPLOYED +EMPLOYEE +EMPLOYEES +EMPLOYER +EMPLOYERS +EMPLOYES +EMPLOYING +EMPLOYMENT +EMPLOYMENTS +EMPLOYS +EMPOISON +EMPOISONED +EMPOISONING +EMPOISONMENT +EMPOISONMENTS +EMPOISONS +EMPORIA +EMPORIUM +EMPORIUMS +EMPOWER +EMPOWERED +EMPOWERING +EMPOWERMENT +EMPOWERMENTS +EMPOWERS +EMPRESS +EMPRESSEMENT +EMPRESSEMENTS +EMPRESSES +EMPRISE +EMPRISES +EMPRIZE +EMPRIZES +EMPTIABLE +EMPTIED +EMPTIER +EMPTIERS +EMPTIES +EMPTIEST +EMPTILY +EMPTINESS +EMPTINESSES +EMPTINGS +EMPTINS +EMPTY +EMPTYING +EMPURPLE +EMPURPLED +EMPURPLES +EMPURPLING +EMPYEMA +EMPYEMAS +EMPYEMATA +EMPYEMIC +EMPYREAL +EMPYREAN +EMPYREANS +EMS +EMU +EMULATE +EMULATED +EMULATES +EMULATING +EMULATION +EMULATIONS +EMULATIVE +EMULATIVELY +EMULATOR +EMULATORS +EMULOUS +EMULOUSLY +EMULOUSNESS +EMULOUSNESSES +EMULSIBLE +EMULSIFIABLE +EMULSIFICATION +EMULSIFICATIONS +EMULSIFIED +EMULSIFIER +EMULSIFIERS +EMULSIFIES +EMULSIFY +EMULSIFYING +EMULSION +EMULSIONS +EMULSIVE +EMULSOID +EMULSOIDAL +EMULSOIDS +EMUNCTORIES +EMUNCTORY +EMUS +EMYD +EMYDE +EMYDES +EMYDS +EN +ENABLE +ENABLED +ENABLER +ENABLERS +ENABLES +ENABLING +ENACT +ENACTABLE +ENACTED +ENACTING +ENACTIVE +ENACTMENT +ENACTMENTS +ENACTOR +ENACTORS +ENACTORY +ENACTS +ENALAPRIL +ENALAPRILS +ENAMEL +ENAMELED +ENAMELER +ENAMELERS +ENAMELING +ENAMELIST +ENAMELISTS +ENAMELLED +ENAMELLER +ENAMELLERS +ENAMELLING +ENAMELS +ENAMELWARE +ENAMELWARES +ENAMINE +ENAMINES +ENAMOR +ENAMORED +ENAMORING +ENAMORS +ENAMOUR +ENAMOURED +ENAMOURING +ENAMOURS +ENANTIOMER +ENANTIOMERIC +ENANTIOMERS +ENANTIOMORPH +ENANTIOMORPHIC +ENANTIOMORPHISM +ENANTIOMORPHOUS +ENANTIOMORPHS +ENATE +ENATES +ENATIC +ENATION +ENATIONS +ENCAENIA +ENCAGE +ENCAGED +ENCAGES +ENCAGING +ENCAMP +ENCAMPED +ENCAMPING +ENCAMPMENT +ENCAMPMENTS +ENCAMPS +ENCAPSULATE +ENCAPSULATED +ENCAPSULATES +ENCAPSULATING +ENCAPSULATION +ENCAPSULATIONS +ENCAPSULE +ENCAPSULED +ENCAPSULES +ENCAPSULING +ENCASE +ENCASED +ENCASEMENT +ENCASEMENTS +ENCASES +ENCASH +ENCASHABLE +ENCASHED +ENCASHES +ENCASHING +ENCASHMENT +ENCASHMENTS +ENCASING +ENCAUSTIC +ENCAUSTICS +ENCEINTE +ENCEINTES +ENCEPHALA +ENCEPHALITIC +ENCEPHALITIDES +ENCEPHALITIS +ENCEPHALITOGEN +ENCEPHALITOGENS +ENCEPHALOGRAM +ENCEPHALOGRAMS +ENCEPHALOGRAPH +ENCEPHALOGRAPHS +ENCEPHALOGRAPHY +ENCEPHALON +ENCEPHALOPATHIC +ENCEPHALOPATHY +ENCHAIN +ENCHAINED +ENCHAINING +ENCHAINMENT +ENCHAINMENTS +ENCHAINS +ENCHANT +ENCHANTED +ENCHANTER +ENCHANTERS +ENCHANTING +ENCHANTINGLY +ENCHANTMENT +ENCHANTMENTS +ENCHANTRESS +ENCHANTRESSES +ENCHANTS +ENCHASE +ENCHASED +ENCHASER +ENCHASERS +ENCHASES +ENCHASING +ENCHILADA +ENCHILADAS +ENCHIRIDIA +ENCHIRIDION +ENCHORIAL +ENCHORIC +ENCINA +ENCINAL +ENCINAS +ENCIPHER +ENCIPHERED +ENCIPHERER +ENCIPHERERS +ENCIPHERING +ENCIPHERMENT +ENCIPHERMENTS +ENCIPHERS +ENCIRCLE +ENCIRCLED +ENCIRCLEMENT +ENCIRCLEMENTS +ENCIRCLES +ENCIRCLING +ENCLASP +ENCLASPED +ENCLASPING +ENCLASPS +ENCLAVE +ENCLAVED +ENCLAVES +ENCLAVING +ENCLITIC +ENCLITICS +ENCLOSE +ENCLOSED +ENCLOSER +ENCLOSERS +ENCLOSES +ENCLOSING +ENCLOSURE +ENCLOSURES +ENCODABLE +ENCODE +ENCODED +ENCODER +ENCODERS +ENCODES +ENCODING +ENCOMIA +ENCOMIAST +ENCOMIASTIC +ENCOMIASTS +ENCOMIUM +ENCOMIUMS +ENCOMPASS +ENCOMPASSED +ENCOMPASSES +ENCOMPASSING +ENCOMPASSMENT +ENCOMPASSMENTS +ENCORE +ENCORED +ENCORES +ENCORING +ENCOUNTER +ENCOUNTERED +ENCOUNTERING +ENCOUNTERS +ENCOURAGE +ENCOURAGED +ENCOURAGEMENT +ENCOURAGEMENTS +ENCOURAGER +ENCOURAGERS +ENCOURAGES +ENCOURAGING +ENCOURAGINGLY +ENCRIMSON +ENCRIMSONED +ENCRIMSONING +ENCRIMSONS +ENCRINITE +ENCRINITES +ENCROACH +ENCROACHED +ENCROACHER +ENCROACHERS +ENCROACHES +ENCROACHING +ENCROACHMENT +ENCROACHMENTS +ENCRUST +ENCRUSTATION +ENCRUSTATIONS +ENCRUSTED +ENCRUSTING +ENCRUSTS +ENCRYPT +ENCRYPTED +ENCRYPTING +ENCRYPTION +ENCRYPTIONS +ENCRYPTS +ENCULTURATE +ENCULTURATED +ENCULTURATES +ENCULTURATING +ENCULTURATION +ENCULTURATIONS +ENCUMBER +ENCUMBERED +ENCUMBERING +ENCUMBERS +ENCUMBRANCE +ENCUMBRANCER +ENCUMBRANCERS +ENCUMBRANCES +ENCYCLIC +ENCYCLICAL +ENCYCLICALS +ENCYCLICS +ENCYCLOPAEDIA +ENCYCLOPAEDIAS +ENCYCLOPAEDIC +ENCYCLOPEDIA +ENCYCLOPEDIAS +ENCYCLOPEDIC +ENCYCLOPEDISM +ENCYCLOPEDISMS +ENCYCLOPEDIST +ENCYCLOPEDISTS +ENCYST +ENCYSTED +ENCYSTING +ENCYSTMENT +ENCYSTMENTS +ENCYSTS +END +ENDAMAGE +ENDAMAGED +ENDAMAGES +ENDAMAGING +ENDAMEBA +ENDAMEBAE +ENDAMEBAS +ENDAMEBIC +ENDAMOEBA +ENDAMOEBAE +ENDAMOEBAS +ENDANGER +ENDANGERED +ENDANGERING +ENDANGERMENT +ENDANGERMENTS +ENDANGERS +ENDARCH +ENDARCHIES +ENDARCHY +ENDARTERECTOMY +ENDASH +ENDASHES +ENDBRAIN +ENDBRAINS +ENDEAR +ENDEARED +ENDEARING +ENDEARINGLY +ENDEARMENT +ENDEARMENTS +ENDEARS +ENDEAVOR +ENDEAVORED +ENDEAVORING +ENDEAVORS +ENDEAVOUR +ENDEAVOURED +ENDEAVOURING +ENDEAVOURS +ENDED +ENDEMIAL +ENDEMIC +ENDEMICAL +ENDEMICALLY +ENDEMICITIES +ENDEMICITY +ENDEMICS +ENDEMISM +ENDEMISMS +ENDER +ENDERGONIC +ENDERMIC +ENDERS +ENDEXINE +ENDEXINES +ENDGAME +ENDGAMES +ENDING +ENDINGS +ENDITE +ENDITED +ENDITES +ENDITING +ENDIVE +ENDIVES +ENDLEAF +ENDLEAFS +ENDLEAVES +ENDLESS +ENDLESSLY +ENDLESSNESS +ENDLESSNESSES +ENDLONG +ENDMOST +ENDNOTE +ENDNOTES +ENDOBIOTIC +ENDOBLAST +ENDOBLASTS +ENDOCARDIA +ENDOCARDIAL +ENDOCARDITIS +ENDOCARDITISES +ENDOCARDIUM +ENDOCARP +ENDOCARPS +ENDOCAST +ENDOCASTS +ENDOCHONDRAL +ENDOCRINE +ENDOCRINES +ENDOCRINOLOGIC +ENDOCRINOLOGIES +ENDOCRINOLOGIST +ENDOCRINOLOGY +ENDOCYTIC +ENDOCYTOSES +ENDOCYTOSIS +ENDOCYTOTIC +ENDODERM +ENDODERMAL +ENDODERMIS +ENDODERMISES +ENDODERMS +ENDODONTIC +ENDODONTICALLY +ENDODONTICS +ENDODONTIST +ENDODONTISTS +ENDOENZYME +ENDOENZYMES +ENDOERGIC +ENDOGAMIC +ENDOGAMIES +ENDOGAMOUS +ENDOGAMY +ENDOGEN +ENDOGENIC +ENDOGENIES +ENDOGENOUS +ENDOGENOUSLY +ENDOGENS +ENDOGENY +ENDOLITHIC +ENDOLYMPH +ENDOLYMPHATIC +ENDOLYMPHS +ENDOMETRIA +ENDOMETRIAL +ENDOMETRIOSES +ENDOMETRIOSIS +ENDOMETRITIS +ENDOMETRITISES +ENDOMETRIUM +ENDOMITOSES +ENDOMITOSIS +ENDOMITOTIC +ENDOMIXIS +ENDOMIXISES +ENDOMORPH +ENDOMORPHIC +ENDOMORPHIES +ENDOMORPHISM +ENDOMORPHISMS +ENDOMORPHS +ENDOMORPHY +ENDONUCLEASE +ENDONUCLEASES +ENDONUCLEOLYTIC +ENDOPARASITE +ENDOPARASITES +ENDOPARASITIC +ENDOPARASITISM +ENDOPARASITISMS +ENDOPEPTIDASE +ENDOPEPTIDASES +ENDOPEROXIDE +ENDOPEROXIDES +ENDOPHYTE +ENDOPHYTES +ENDOPHYTIC +ENDOPLASM +ENDOPLASMIC +ENDOPLASMS +ENDOPOD +ENDOPODITE +ENDOPODITES +ENDOPODS +ENDOPOLYPLOID +ENDOPOLYPLOIDY +ENDOPROCT +ENDOPROCTS +ENDORPHIN +ENDORPHINS +ENDORSABLE +ENDORSE +ENDORSED +ENDORSEE +ENDORSEES +ENDORSEMENT +ENDORSEMENTS +ENDORSER +ENDORSERS +ENDORSES +ENDORSING +ENDORSIVE +ENDORSOR +ENDORSORS +ENDOSARC +ENDOSARCS +ENDOSCOPE +ENDOSCOPES +ENDOSCOPIC +ENDOSCOPICALLY +ENDOSCOPIES +ENDOSCOPY +ENDOSKELETAL +ENDOSKELETON +ENDOSKELETONS +ENDOSMOS +ENDOSMOSES +ENDOSOME +ENDOSOMES +ENDOSPERM +ENDOSPERMS +ENDOSPORE +ENDOSPORES +ENDOSTEA +ENDOSTEAL +ENDOSTEALLY +ENDOSTEUM +ENDOSTYLE +ENDOSTYLES +ENDOSULFAN +ENDOSULFANS +ENDOSYMBIONT +ENDOSYMBIONTS +ENDOSYMBIOSES +ENDOSYMBIOSIS +ENDOSYMBIOTIC +ENDOTHECIA +ENDOTHECIUM +ENDOTHELIA +ENDOTHELIAL +ENDOTHELIOMA +ENDOTHELIOMAS +ENDOTHELIOMATA +ENDOTHELIUM +ENDOTHERM +ENDOTHERMIC +ENDOTHERMIES +ENDOTHERMS +ENDOTHERMY +ENDOTOXIC +ENDOTOXIN +ENDOTOXINS +ENDOTRACHEAL +ENDOTROPHIC +ENDOW +ENDOWED +ENDOWER +ENDOWERS +ENDOWING +ENDOWMENT +ENDOWMENTS +ENDOWS +ENDOZOIC +ENDPAPER +ENDPAPERS +ENDPLATE +ENDPLATES +ENDPLAY +ENDPLAYED +ENDPLAYING +ENDPLAYS +ENDPOINT +ENDPOINTS +ENDRIN +ENDRINS +ENDS +ENDUE +ENDUED +ENDUES +ENDUING +ENDURABLE +ENDURABLY +ENDURANCE +ENDURANCES +ENDURE +ENDURED +ENDURER +ENDURERS +ENDURES +ENDURING +ENDURINGLY +ENDURINGNESS +ENDURINGNESSES +ENDURO +ENDUROS +ENDWAYS +ENDWISE +ENEMA +ENEMAS +ENEMATA +ENEMIES +ENEMY +ENERGETIC +ENERGETICALLY +ENERGETICS +ENERGID +ENERGIDS +ENERGIES +ENERGISE +ENERGISED +ENERGISES +ENERGISING +ENERGIZATION +ENERGIZATIONS +ENERGIZE +ENERGIZED +ENERGIZER +ENERGIZERS +ENERGIZES +ENERGIZING +ENERGUMEN +ENERGUMENS +ENERGY +ENERVATE +ENERVATED +ENERVATES +ENERVATING +ENERVATION +ENERVATIONS +ENERVATOR +ENERVATORS +ENFACE +ENFACED +ENFACES +ENFACING +ENFEEBLE +ENFEEBLED +ENFEEBLEMENT +ENFEEBLEMENTS +ENFEEBLER +ENFEEBLERS +ENFEEBLES +ENFEEBLING +ENFEOFF +ENFEOFFED +ENFEOFFING +ENFEOFFMENT +ENFEOFFMENTS +ENFEOFFS +ENFETTER +ENFETTERED +ENFETTERING +ENFETTERS +ENFEVER +ENFEVERED +ENFEVERING +ENFEVERS +ENFILADE +ENFILADED +ENFILADES +ENFILADING +ENFLAME +ENFLAMED +ENFLAMES +ENFLAMING +ENFLEURAGE +ENFLEURAGES +ENFOLD +ENFOLDED +ENFOLDER +ENFOLDERS +ENFOLDING +ENFOLDS +ENFORCE +ENFORCEABILITY +ENFORCEABLE +ENFORCED +ENFORCEMENT +ENFORCEMENTS +ENFORCER +ENFORCERS +ENFORCES +ENFORCING +ENFRAME +ENFRAMED +ENFRAMEMENT +ENFRAMEMENTS +ENFRAMES +ENFRAMING +ENFRANCHISE +ENFRANCHISED +ENFRANCHISEMENT +ENFRANCHISES +ENFRANCHISING +ENG +ENGAGE +ENGAGED +ENGAGEDLY +ENGAGEMENT +ENGAGEMENTS +ENGAGER +ENGAGERS +ENGAGES +ENGAGING +ENGAGINGLY +ENGARLAND +ENGARLANDED +ENGARLANDING +ENGARLANDS +ENGENDER +ENGENDERED +ENGENDERING +ENGENDERS +ENGILD +ENGILDED +ENGILDING +ENGILDS +ENGINE +ENGINED +ENGINEER +ENGINEERED +ENGINEERING +ENGINEERINGS +ENGINEERS +ENGINERIES +ENGINERY +ENGINES +ENGINING +ENGINOUS +ENGIRD +ENGIRDED +ENGIRDING +ENGIRDLE +ENGIRDLED +ENGIRDLES +ENGIRDLING +ENGIRDS +ENGIRT +ENGLACIAL +ENGLISH +ENGLISHED +ENGLISHES +ENGLISHING +ENGLUT +ENGLUTS +ENGLUTTED +ENGLUTTING +ENGORGE +ENGORGED +ENGORGEMENT +ENGORGEMENTS +ENGORGES +ENGORGING +ENGRAFT +ENGRAFTED +ENGRAFTING +ENGRAFTMENT +ENGRAFTMENTS +ENGRAFTS +ENGRAIL +ENGRAILED +ENGRAILING +ENGRAILS +ENGRAIN +ENGRAINED +ENGRAINING +ENGRAINS +ENGRAM +ENGRAMME +ENGRAMMES +ENGRAMMIC +ENGRAMS +ENGRAVE +ENGRAVED +ENGRAVER +ENGRAVERS +ENGRAVES +ENGRAVING +ENGRAVINGS +ENGROSS +ENGROSSED +ENGROSSER +ENGROSSERS +ENGROSSES +ENGROSSING +ENGROSSINGLY +ENGROSSMENT +ENGROSSMENTS +ENGS +ENGULF +ENGULFED +ENGULFING +ENGULFMENT +ENGULFMENTS +ENGULFS +ENHALO +ENHALOED +ENHALOES +ENHALOING +ENHALOS +ENHANCE +ENHANCED +ENHANCEMENT +ENHANCEMENTS +ENHANCER +ENHANCERS +ENHANCES +ENHANCING +ENHANCIVE +ENHARMONIC +ENHARMONICALLY +ENIGMA +ENIGMAS +ENIGMATA +ENIGMATIC +ENIGMATICAL +ENIGMATICALLY +ENISLE +ENISLED +ENISLES +ENISLING +ENJAMBED +ENJAMBEMENT +ENJAMBEMENTS +ENJAMBMENT +ENJAMBMENTS +ENJOIN +ENJOINDER +ENJOINDERS +ENJOINED +ENJOINER +ENJOINERS +ENJOINING +ENJOINS +ENJOY +ENJOYABLE +ENJOYABLENESS +ENJOYABLENESSES +ENJOYABLY +ENJOYED +ENJOYER +ENJOYERS +ENJOYING +ENJOYMENT +ENJOYMENTS +ENJOYS +ENKEPHALIN +ENKEPHALINS +ENKINDLE +ENKINDLED +ENKINDLER +ENKINDLERS +ENKINDLES +ENKINDLING +ENLACE +ENLACED +ENLACEMENT +ENLACEMENTS +ENLACES +ENLACING +ENLARGE +ENLARGEABLE +ENLARGED +ENLARGEMENT +ENLARGEMENTS +ENLARGER +ENLARGERS +ENLARGES +ENLARGING +ENLIGHTEN +ENLIGHTENED +ENLIGHTENING +ENLIGHTENMENT +ENLIGHTENMENTS +ENLIGHTENS +ENLIST +ENLISTED +ENLISTEE +ENLISTEES +ENLISTER +ENLISTERS +ENLISTING +ENLISTMENT +ENLISTMENTS +ENLISTS +ENLIVEN +ENLIVENED +ENLIVENER +ENLIVENERS +ENLIVENING +ENLIVENS +ENMESH +ENMESHED +ENMESHES +ENMESHING +ENMESHMENT +ENMESHMENTS +ENMITIES +ENMITY +ENNEAD +ENNEADIC +ENNEADS +ENNEAGON +ENNEAGONS +ENNOBLE +ENNOBLED +ENNOBLEMENT +ENNOBLEMENTS +ENNOBLER +ENNOBLERS +ENNOBLES +ENNOBLING +ENNUI +ENNUIS +ENNUYE +ENNUYEE +ENOKI +ENOKIDAKE +ENOKIDAKES +ENOKIS +ENOKITAKE +ENOKITAKES +ENOL +ENOLASE +ENOLASES +ENOLIC +ENOLOGICAL +ENOLOGIES +ENOLOGIST +ENOLOGISTS +ENOLOGY +ENOLS +ENOPHILE +ENOPHILES +ENORM +ENORMITIES +ENORMITY +ENORMOUS +ENORMOUSLY +ENORMOUSNESS +ENORMOUSNESSES +ENOSIS +ENOSISES +ENOUGH +ENOUGHS +ENOUNCE +ENOUNCED +ENOUNCES +ENOUNCING +ENOW +ENOWS +ENPLANE +ENPLANED +ENPLANES +ENPLANING +ENQUIRE +ENQUIRED +ENQUIRES +ENQUIRIES +ENQUIRING +ENQUIRY +ENRAGE +ENRAGED +ENRAGEDLY +ENRAGES +ENRAGING +ENRAPT +ENRAPTURE +ENRAPTURED +ENRAPTURES +ENRAPTURING +ENRAVISH +ENRAVISHED +ENRAVISHES +ENRAVISHING +ENREGISTER +ENREGISTERED +ENREGISTERING +ENREGISTERS +ENRICH +ENRICHED +ENRICHER +ENRICHERS +ENRICHES +ENRICHING +ENRICHMENT +ENRICHMENTS +ENROBE +ENROBED +ENROBER +ENROBERS +ENROBES +ENROBING +ENROL +ENROLL +ENROLLED +ENROLLEE +ENROLLEES +ENROLLER +ENROLLERS +ENROLLING +ENROLLMENT +ENROLLMENTS +ENROLLS +ENROLMENT +ENROLMENTS +ENROLS +ENROOT +ENROOTED +ENROOTING +ENROOTS +ENS +ENSAMPLE +ENSAMPLES +ENSANGUINE +ENSANGUINED +ENSANGUINES +ENSANGUINING +ENSCONCE +ENSCONCED +ENSCONCES +ENSCONCING +ENSCROLL +ENSCROLLED +ENSCROLLING +ENSCROLLS +ENSEMBLE +ENSEMBLES +ENSERF +ENSERFED +ENSERFING +ENSERFMENT +ENSERFMENTS +ENSERFS +ENSHEATH +ENSHEATHE +ENSHEATHED +ENSHEATHES +ENSHEATHING +ENSHEATHS +ENSHRINE +ENSHRINED +ENSHRINEE +ENSHRINEES +ENSHRINEMENT +ENSHRINEMENTS +ENSHRINES +ENSHRINING +ENSHROUD +ENSHROUDED +ENSHROUDING +ENSHROUDS +ENSIFORM +ENSIGN +ENSIGNCIES +ENSIGNCY +ENSIGNS +ENSILAGE +ENSILAGED +ENSILAGES +ENSILAGING +ENSILE +ENSILED +ENSILES +ENSILING +ENSKIED +ENSKIES +ENSKY +ENSKYED +ENSKYING +ENSLAVE +ENSLAVED +ENSLAVEMENT +ENSLAVEMENTS +ENSLAVER +ENSLAVERS +ENSLAVES +ENSLAVING +ENSNARE +ENSNARED +ENSNARER +ENSNARERS +ENSNARES +ENSNARING +ENSNARL +ENSNARLED +ENSNARLING +ENSNARLS +ENSORCEL +ENSORCELED +ENSORCELING +ENSORCELL +ENSORCELLED +ENSORCELLING +ENSORCELLMENT +ENSORCELLMENTS +ENSORCELLS +ENSORCELS +ENSOUL +ENSOULED +ENSOULING +ENSOULS +ENSPHERE +ENSPHERED +ENSPHERES +ENSPHERING +ENSTATITE +ENSTATITES +ENSUE +ENSUED +ENSUES +ENSUING +ENSURE +ENSURED +ENSURER +ENSURERS +ENSURES +ENSURING +ENSWATHE +ENSWATHED +ENSWATHES +ENSWATHING +ENTABLATURE +ENTABLATURES +ENTAIL +ENTAILED +ENTAILER +ENTAILERS +ENTAILING +ENTAILMENT +ENTAILMENTS +ENTAILS +ENTAMEBA +ENTAMEBAE +ENTAMEBAS +ENTAMOEBA +ENTAMOEBAE +ENTAMOEBAS +ENTANGLE +ENTANGLED +ENTANGLEMENT +ENTANGLEMENTS +ENTANGLER +ENTANGLERS +ENTANGLES +ENTANGLING +ENTASES +ENTASIA +ENTASIAS +ENTASIS +ENTASTIC +ENTELECHIES +ENTELECHY +ENTELLUS +ENTELLUSES +ENTENTE +ENTENTES +ENTER +ENTERA +ENTERABLE +ENTERAL +ENTERALLY +ENTERED +ENTERER +ENTERERS +ENTERIC +ENTERICS +ENTERING +ENTERITIDES +ENTERITIS +ENTERITISES +ENTEROBACTERIA +ENTEROBACTERIAL +ENTEROBACTERIUM +ENTEROBIASES +ENTEROBIASIS +ENTEROCOCCAL +ENTEROCOCCI +ENTEROCOCCUS +ENTEROCOEL +ENTEROCOELE +ENTEROCOELES +ENTEROCOELIC +ENTEROCOELOUS +ENTEROCOELS +ENTEROCOLITIS +ENTEROCOLITISES +ENTEROGASTRONE +ENTEROGASTRONES +ENTEROKINASE +ENTEROKINASES +ENTERON +ENTERONS +ENTEROPATHIES +ENTEROPATHY +ENTEROSTOMAL +ENTEROSTOMIES +ENTEROSTOMY +ENTEROTOXIN +ENTEROTOXINS +ENTEROVIRAL +ENTEROVIRUS +ENTEROVIRUSES +ENTERPRISE +ENTERPRISER +ENTERPRISERS +ENTERPRISES +ENTERPRISING +ENTERS +ENTERTAIN +ENTERTAINED +ENTERTAINER +ENTERTAINERS +ENTERTAINING +ENTERTAININGLY +ENTERTAINMENT +ENTERTAINMENTS +ENTERTAINS +ENTHALPIES +ENTHALPY +ENTHETIC +ENTHRAL +ENTHRALL +ENTHRALLED +ENTHRALLING +ENTHRALLMENT +ENTHRALLMENTS +ENTHRALLS +ENTHRALS +ENTHRONE +ENTHRONED +ENTHRONEMENT +ENTHRONEMENTS +ENTHRONES +ENTHRONING +ENTHUSE +ENTHUSED +ENTHUSES +ENTHUSIASM +ENTHUSIASMS +ENTHUSIAST +ENTHUSIASTIC +ENTHUSIASTS +ENTHUSING +ENTHYMEME +ENTHYMEMES +ENTIA +ENTICE +ENTICED +ENTICEMENT +ENTICEMENTS +ENTICER +ENTICERS +ENTICES +ENTICING +ENTICINGLY +ENTIRE +ENTIRELY +ENTIRENESS +ENTIRENESSES +ENTIRES +ENTIRETIES +ENTIRETY +ENTITIES +ENTITLE +ENTITLED +ENTITLEMENT +ENTITLEMENTS +ENTITLES +ENTITLING +ENTITY +ENTOBLAST +ENTOBLASTS +ENTODERM +ENTODERMAL +ENTODERMIC +ENTODERMS +ENTOIL +ENTOILED +ENTOILING +ENTOILS +ENTOMB +ENTOMBED +ENTOMBING +ENTOMBMENT +ENTOMBMENTS +ENTOMBS +ENTOMOFAUNA +ENTOMOFAUNAE +ENTOMOFAUNAS +ENTOMOLOGICAL +ENTOMOLOGICALLY +ENTOMOLOGIES +ENTOMOLOGIST +ENTOMOLOGISTS +ENTOMOLOGY +ENTOMOPHAGOUS +ENTOMOPHILIES +ENTOMOPHILOUS +ENTOMOPHILY +ENTOPHYTE +ENTOPHYTES +ENTOPIC +ENTOPROCT +ENTOPROCTS +ENTOURAGE +ENTOURAGES +ENTOZOA +ENTOZOAL +ENTOZOAN +ENTOZOANS +ENTOZOIC +ENTOZOON +ENTRAILS +ENTRAIN +ENTRAINED +ENTRAINER +ENTRAINERS +ENTRAINING +ENTRAINMENT +ENTRAINMENTS +ENTRAINS +ENTRANCE +ENTRANCED +ENTRANCEMENT +ENTRANCEMENTS +ENTRANCES +ENTRANCEWAY +ENTRANCEWAYS +ENTRANCING +ENTRANT +ENTRANTS +ENTRAP +ENTRAPMENT +ENTRAPMENTS +ENTRAPPED +ENTRAPPER +ENTRAPPERS +ENTRAPPING +ENTRAPS +ENTREAT +ENTREATED +ENTREATIES +ENTREATING +ENTREATINGLY +ENTREATMENT +ENTREATMENTS +ENTREATS +ENTREATY +ENTRECHAT +ENTRECHATS +ENTRECOTE +ENTRECOTES +ENTREE +ENTREES +ENTREMETS +ENTRENCH +ENTRENCHED +ENTRENCHES +ENTRENCHING +ENTRENCHMENT +ENTRENCHMENTS +ENTREPOT +ENTREPOTS +ENTREPRENEUR +ENTREPRENEURIAL +ENTREPRENEURS +ENTRESOL +ENTRESOLS +ENTRIES +ENTROPIC +ENTROPICALLY +ENTROPIES +ENTROPION +ENTROPIONS +ENTROPY +ENTRUST +ENTRUSTED +ENTRUSTING +ENTRUSTMENT +ENTRUSTMENTS +ENTRUSTS +ENTRY +ENTRYWAY +ENTRYWAYS +ENTWINE +ENTWINED +ENTWINES +ENTWINING +ENTWIST +ENTWISTED +ENTWISTING +ENTWISTS +ENUCLEATE +ENUCLEATED +ENUCLEATES +ENUCLEATING +ENUCLEATION +ENUCLEATIONS +ENUF +ENUMERABILITIES +ENUMERABILITY +ENUMERABLE +ENUMERATE +ENUMERATED +ENUMERATES +ENUMERATING +ENUMERATION +ENUMERATIONS +ENUMERATIVE +ENUMERATOR +ENUMERATORS +ENUNCIABLE +ENUNCIATE +ENUNCIATED +ENUNCIATES +ENUNCIATING +ENUNCIATION +ENUNCIATIONS +ENUNCIATOR +ENUNCIATORS +ENURE +ENURED +ENURES +ENURESES +ENURESIS +ENURESISES +ENURETIC +ENURETICS +ENURING +ENVELOP +ENVELOPE +ENVELOPED +ENVELOPER +ENVELOPERS +ENVELOPES +ENVELOPING +ENVELOPMENT +ENVELOPMENTS +ENVELOPS +ENVENOM +ENVENOMED +ENVENOMING +ENVENOMIZATION +ENVENOMIZATIONS +ENVENOMS +ENVIABLE +ENVIABLENESS +ENVIABLENESSES +ENVIABLY +ENVIED +ENVIER +ENVIERS +ENVIES +ENVIOUS +ENVIOUSLY +ENVIOUSNESS +ENVIOUSNESSES +ENVIRO +ENVIRON +ENVIRONED +ENVIRONING +ENVIRONMENT +ENVIRONMENTAL +ENVIRONMENTALLY +ENVIRONMENTS +ENVIRONS +ENVIROS +ENVISAGE +ENVISAGED +ENVISAGES +ENVISAGING +ENVISION +ENVISIONED +ENVISIONING +ENVISIONS +ENVOI +ENVOIS +ENVOY +ENVOYS +ENVY +ENVYING +ENVYINGLY +ENWHEEL +ENWHEELED +ENWHEELING +ENWHEELS +ENWIND +ENWINDING +ENWINDS +ENWOMB +ENWOMBED +ENWOMBING +ENWOMBS +ENWOUND +ENWRAP +ENWRAPPED +ENWRAPPING +ENWRAPS +ENWREATHE +ENWREATHED +ENWREATHES +ENWREATHING +ENZOOTIC +ENZOOTICS +ENZYM +ENZYMATIC +ENZYMATICALLY +ENZYME +ENZYMES +ENZYMIC +ENZYMICALLY +ENZYMOLOGIES +ENZYMOLOGIST +ENZYMOLOGISTS +ENZYMOLOGY +ENZYMS +EOBIONT +EOBIONTS +EOCENE +EOHIPPUS +EOHIPPUSES +EOLIAN +EOLIPILE +EOLIPILES +EOLITH +EOLITHIC +EOLITHS +EOLOPILE +EOLOPILES +EON +EONIAN +EONISM +EONISMS +EONS +EOSIN +EOSINE +EOSINES +EOSINIC +EOSINOPHIL +EOSINOPHILIA +EOSINOPHILIAS +EOSINOPHILIC +EOSINOPHILS +EOSINS +EPACT +EPACTS +EPARCH +EPARCHIAL +EPARCHIES +EPARCHS +EPARCHY +EPAULET +EPAULETS +EPAULETTE +EPAULETTED +EPAULETTES +EPAZOTE +EPAZOTES +EPEE +EPEEIST +EPEEISTS +EPEES +EPEIRIC +EPEIROGENIC +EPEIROGENICALLY +EPEIROGENIES +EPEIROGENY +EPENDYMA +EPENDYMAS +EPENTHESES +EPENTHESIS +EPENTHETIC +EPERGNE +EPERGNES +EPEXEGESES +EPEXEGESIS +EPEXEGETIC +EPEXEGETICAL +EPEXEGETICALLY +EPHA +EPHAH +EPHAHS +EPHAS +EPHEBE +EPHEBES +EPHEBI +EPHEBIC +EPHEBOI +EPHEBOS +EPHEBUS +EPHEDRA +EPHEDRAS +EPHEDRIN +EPHEDRINE +EPHEDRINES +EPHEDRINS +EPHEMERA +EPHEMERAE +EPHEMERAL +EPHEMERALITIES +EPHEMERALITY +EPHEMERALLY +EPHEMERALS +EPHEMERAS +EPHEMERID +EPHEMERIDES +EPHEMERIDS +EPHEMERIS +EPHEMERON +EPHEMERONS +EPHOD +EPHODS +EPHOR +EPHORAL +EPHORATE +EPHORATES +EPHORI +EPHORS +EPIBLAST +EPIBLASTIC +EPIBLASTS +EPIBOLIC +EPIBOLIES +EPIBOLY +EPIC +EPICAL +EPICALLY +EPICALYCES +EPICALYX +EPICALYXES +EPICANTHI +EPICANTHUS +EPICARDIA +EPICARDIAL +EPICARDIUM +EPICARP +EPICARPS +EPICEDIA +EPICEDIUM +EPICENE +EPICENES +EPICENISM +EPICENISMS +EPICENTER +EPICENTERS +EPICENTRA +EPICENTRAL +EPICENTRUM +EPICHLOROHYDRIN +EPICLIKE +EPICONTINENTAL +EPICOTYL +EPICOTYLS +EPICRANIA +EPICRANIUM +EPICRITIC +EPICS +EPICURE +EPICUREAN +EPICUREANISM +EPICUREANISMS +EPICUREANS +EPICURES +EPICURISM +EPICURISMS +EPICUTICLE +EPICUTICLES +EPICUTICULAR +EPICYCLE +EPICYCLES +EPICYCLIC +EPICYCLOID +EPICYCLOIDAL +EPICYCLOIDS +EPIDEMIC +EPIDEMICAL +EPIDEMICALLY +EPIDEMICITIES +EPIDEMICITY +EPIDEMICS +EPIDEMIOLOGIC +EPIDEMIOLOGICAL +EPIDEMIOLOGIES +EPIDEMIOLOGIST +EPIDEMIOLOGISTS +EPIDEMIOLOGY +EPIDENDRUM +EPIDENDRUMS +EPIDERM +EPIDERMAL +EPIDERMIC +EPIDERMIS +EPIDERMISES +EPIDERMOID +EPIDERMS +EPIDIASCOPE +EPIDIASCOPES +EPIDIDYMAL +EPIDIDYMIDES +EPIDIDYMIS +EPIDIDYMITIS +EPIDIDYMITISES +EPIDOTE +EPIDOTES +EPIDOTIC +EPIDURAL +EPIDURALS +EPIFAUNA +EPIFAUNAE +EPIFAUNAL +EPIFAUNAS +EPIFOCAL +EPIGASTRIC +EPIGEAL +EPIGEAN +EPIGEIC +EPIGENE +EPIGENESES +EPIGENESIS +EPIGENETIC +EPIGENETICALLY +EPIGENIC +EPIGENIST +EPIGENISTS +EPIGENOUS +EPIGEOUS +EPIGLOTTAL +EPIGLOTTIC +EPIGLOTTIS +EPIGLOTTISES +EPIGON +EPIGONE +EPIGONES +EPIGONI +EPIGONIC +EPIGONISM +EPIGONISMS +EPIGONOUS +EPIGONS +EPIGONUS +EPIGRAM +EPIGRAMMATIC +EPIGRAMMATISM +EPIGRAMMATISMS +EPIGRAMMATIST +EPIGRAMMATISTS +EPIGRAMMATIZE +EPIGRAMMATIZED +EPIGRAMMATIZER +EPIGRAMMATIZERS +EPIGRAMMATIZES +EPIGRAMMATIZING +EPIGRAMS +EPIGRAPH +EPIGRAPHER +EPIGRAPHERS +EPIGRAPHIC +EPIGRAPHICAL +EPIGRAPHICALLY +EPIGRAPHIES +EPIGRAPHIST +EPIGRAPHISTS +EPIGRAPHS +EPIGRAPHY +EPIGYNIES +EPIGYNOUS +EPIGYNY +EPILATE +EPILATED +EPILATES +EPILATING +EPILATION +EPILATIONS +EPILATOR +EPILATORS +EPILEPSIES +EPILEPSY +EPILEPTIC +EPILEPTICALLY +EPILEPTICS +EPILEPTIFORM +EPILEPTOGENIC +EPILEPTOID +EPILIMNIA +EPILIMNION +EPILIMNIONS +EPILOG +EPILOGS +EPILOGUE +EPILOGUED +EPILOGUES +EPILOGUING +EPIMER +EPIMERASE +EPIMERASES +EPIMERE +EPIMERES +EPIMERIC +EPIMERS +EPIMYSIA +EPIMYSIUM +EPINAOI +EPINAOS +EPINASTIC +EPINASTIES +EPINASTY +EPINEPHRIN +EPINEPHRINE +EPINEPHRINES +EPINEPHRINS +EPINEURIA +EPINEURIUM +EPINEURIUMS +EPIPELAGIC +EPIPHANIC +EPIPHANIES +EPIPHANOUS +EPIPHANY +EPIPHENOMENA +EPIPHENOMENAL +EPIPHENOMENALLY +EPIPHENOMENON +EPIPHRAGM +EPIPHRAGMS +EPIPHYSEAL +EPIPHYSES +EPIPHYSIAL +EPIPHYSIS +EPIPHYTE +EPIPHYTES +EPIPHYTIC +EPIPHYTICALLY +EPIPHYTISM +EPIPHYTISMS +EPIPHYTOLOGIES +EPIPHYTOLOGY +EPIPHYTOTIC +EPIPHYTOTICS +EPIROGENIES +EPIROGENY +EPISCIA +EPISCIAS +EPISCOPACIES +EPISCOPACY +EPISCOPAL +EPISCOPALLY +EPISCOPATE +EPISCOPATES +EPISCOPE +EPISCOPES +EPISIOTOMIES +EPISIOTOMY +EPISODE +EPISODES +EPISODIC +EPISODICAL +EPISODICALLY +EPISOMAL +EPISOMALLY +EPISOME +EPISOMES +EPISTASES +EPISTASIES +EPISTASIS +EPISTASY +EPISTATIC +EPISTAXES +EPISTAXIS +EPISTEMIC +EPISTEMICALLY +EPISTEMOLOGICAL +EPISTEMOLOGIES +EPISTEMOLOGIST +EPISTEMOLOGISTS +EPISTEMOLOGY +EPISTERNA +EPISTERNUM +EPISTLE +EPISTLER +EPISTLERS +EPISTLES +EPISTOLARIES +EPISTOLARY +EPISTOLER +EPISTOLERS +EPISTOME +EPISTOMES +EPISTROPHE +EPISTROPHES +EPISTYLE +EPISTYLES +EPITAPH +EPITAPHIAL +EPITAPHIC +EPITAPHS +EPITASES +EPITASIS +EPITAXIAL +EPITAXIALLY +EPITAXIC +EPITAXIES +EPITAXY +EPITHALAMIA +EPITHALAMIC +EPITHALAMION +EPITHALAMIUM +EPITHALAMIUMS +EPITHELIA +EPITHELIAL +EPITHELIALIZE +EPITHELIALIZED +EPITHELIALIZES +EPITHELIALIZING +EPITHELIOID +EPITHELIOMA +EPITHELIOMAS +EPITHELIOMATA +EPITHELIOMATOUS +EPITHELIUM +EPITHELIUMS +EPITHELIZATION +EPITHELIZATIONS +EPITHELIZE +EPITHELIZED +EPITHELIZES +EPITHELIZING +EPITHET +EPITHETIC +EPITHETICAL +EPITHETS +EPITOME +EPITOMES +EPITOMIC +EPITOMICAL +EPITOMISE +EPITOMISED +EPITOMISES +EPITOMISING +EPITOMIZE +EPITOMIZED +EPITOMIZES +EPITOMIZING +EPITOPE +EPITOPES +EPIZOA +EPIZOIC +EPIZOISM +EPIZOISMS +EPIZOITE +EPIZOITES +EPIZOON +EPIZOOTIC +EPIZOOTICS +EPIZOOTIES +EPIZOOTIOLOGIC +EPIZOOTIOLOGIES +EPIZOOTIOLOGY +EPIZOOTY +EPOCH +EPOCHAL +EPOCHALLY +EPOCHS +EPODE +EPODES +EPONYM +EPONYMIC +EPONYMIES +EPONYMOUS +EPONYMS +EPONYMY +EPOPEE +EPOPEES +EPOPOEIA +EPOPOEIAS +EPOS +EPOSES +EPOXIDATION +EPOXIDATIONS +EPOXIDE +EPOXIDES +EPOXIDIZE +EPOXIDIZED +EPOXIDIZES +EPOXIDIZING +EPOXIED +EPOXIES +EPOXY +EPOXYED +EPOXYING +EPSILON +EPSILONIC +EPSILONS +EQUABILITIES +EQUABILITY +EQUABLE +EQUABLENESS +EQUABLENESSES +EQUABLY +EQUAL +EQUALED +EQUALING +EQUALISE +EQUALISED +EQUALISER +EQUALISERS +EQUALISES +EQUALISING +EQUALITARIAN +EQUALITARIANISM +EQUALITARIANS +EQUALITIES +EQUALITY +EQUALIZATION +EQUALIZATIONS +EQUALIZE +EQUALIZED +EQUALIZER +EQUALIZERS +EQUALIZES +EQUALIZING +EQUALLED +EQUALLING +EQUALLY +EQUALS +EQUANIMITIES +EQUANIMITY +EQUATABLE +EQUATE +EQUATED +EQUATES +EQUATING +EQUATION +EQUATIONAL +EQUATIONALLY +EQUATIONS +EQUATOR +EQUATORIAL +EQUATORS +EQUATORWARD +EQUERRIES +EQUERRY +EQUESTRIAN +EQUESTRIANS +EQUESTRIENNE +EQUESTRIENNES +EQUIANGULAR +EQUICALORIC +EQUID +EQUIDISTANT +EQUIDISTANTLY +EQUIDS +EQUILATERAL +EQUILIBRANT +EQUILIBRANTS +EQUILIBRATE +EQUILIBRATED +EQUILIBRATES +EQUILIBRATING +EQUILIBRATION +EQUILIBRATIONS +EQUILIBRATOR +EQUILIBRATORS +EQUILIBRATORY +EQUILIBRIA +EQUILIBRIST +EQUILIBRISTIC +EQUILIBRISTS +EQUILIBRIUM +EQUILIBRIUMS +EQUIMOLAL +EQUIMOLAR +EQUINE +EQUINELY +EQUINES +EQUINITIES +EQUINITY +EQUINOCTIAL +EQUINOCTIALS +EQUINOX +EQUINOXES +EQUIP +EQUIPAGE +EQUIPAGES +EQUIPMENT +EQUIPMENTS +EQUIPOISE +EQUIPOISED +EQUIPOISES +EQUIPOISING +EQUIPOLLENCE +EQUIPOLLENCES +EQUIPOLLENT +EQUIPOLLENTLY +EQUIPOLLENTS +EQUIPONDERANT +EQUIPOTENTIAL +EQUIPPED +EQUIPPER +EQUIPPERS +EQUIPPING +EQUIPROBABLE +EQUIPS +EQUISETA +EQUISETIC +EQUISETUM +EQUISETUMS +EQUITABILITIES +EQUITABILITY +EQUITABLE +EQUITABLENESS +EQUITABLENESSES +EQUITABLY +EQUITANT +EQUITATION +EQUITATIONS +EQUITES +EQUITIES +EQUITY +EQUIVALENCE +EQUIVALENCES +EQUIVALENCIES +EQUIVALENCY +EQUIVALENT +EQUIVALENTLY +EQUIVALENTS +EQUIVOCAL +EQUIVOCALITIES +EQUIVOCALITY +EQUIVOCALLY +EQUIVOCALNESS +EQUIVOCALNESSES +EQUIVOCATE +EQUIVOCATED +EQUIVOCATES +EQUIVOCATING +EQUIVOCATION +EQUIVOCATIONS +EQUIVOCATOR +EQUIVOCATORS +EQUIVOKE +EQUIVOKES +EQUIVOQUE +EQUIVOQUES +ER +ERA +ERADIATE +ERADIATED +ERADIATES +ERADIATING +ERADICABLE +ERADICANT +ERADICANTS +ERADICATE +ERADICATED +ERADICATES +ERADICATING +ERADICATION +ERADICATIONS +ERADICATOR +ERADICATORS +ERAS +ERASABILITIES +ERASABILITY +ERASABLE +ERASE +ERASED +ERASER +ERASERS +ERASES +ERASING +ERASION +ERASIONS +ERASURE +ERASURES +ERBIUM +ERBIUMS +ERE +ERECT +ERECTABLE +ERECTED +ERECTER +ERECTERS +ERECTILE +ERECTILITIES +ERECTILITY +ERECTING +ERECTION +ERECTIONS +ERECTIVE +ERECTLY +ERECTNESS +ERECTNESSES +ERECTOR +ERECTORS +ERECTS +ERELONG +EREMITE +EREMITES +EREMITIC +EREMITICAL +EREMITISH +EREMITISM +EREMITISMS +EREMURI +EREMURUS +EREMURUSES +ERENOW +EREPSIN +EREPSINS +ERETHIC +ERETHISM +ERETHISMS +ERETHITIC +EREWHILE +EREWHILES +ERG +ERGASTIC +ERGASTOPLASM +ERGASTOPLASMIC +ERGASTOPLASMS +ERGATE +ERGATES +ERGATIVE +ERGATIVES +ERGO +ERGODIC +ERGODICITIES +ERGODICITY +ERGOGENIC +ERGOGRAPH +ERGOGRAPHS +ERGOMETER +ERGOMETERS +ERGOMETRIC +ERGOMETRIES +ERGOMETRY +ERGONOMIC +ERGONOMICALLY +ERGONOMICS +ERGONOMIST +ERGONOMISTS +ERGONOVINE +ERGONOVINES +ERGOSTEROL +ERGOSTEROLS +ERGOT +ERGOTAMINE +ERGOTAMINES +ERGOTIC +ERGOTISM +ERGOTISMS +ERGOTIZED +ERGOTS +ERGS +ERICA +ERICACEOUS +ERICAS +ERICOID +ERIGERON +ERIGERONS +ERINGO +ERINGOES +ERINGOS +ERIOPHYID +ERIOPHYIDS +ERISTIC +ERISTICAL +ERISTICALLY +ERISTICS +ERLKING +ERLKINGS +ERMINE +ERMINED +ERMINES +ERN +ERNE +ERNES +ERNS +ERODABLE +ERODE +ERODED +ERODENT +ERODES +ERODIBILITIES +ERODIBILITY +ERODIBLE +ERODING +EROGENIC +EROGENOUS +EROS +EROSE +EROSELY +EROSES +EROSIBLE +EROSION +EROSIONAL +EROSIONALLY +EROSIONS +EROSIVE +EROSIVENESS +EROSIVENESSES +EROSIVITIES +EROSIVITY +EROTIC +EROTICA +EROTICAL +EROTICALLY +EROTICISM +EROTICISMS +EROTICIST +EROTICISTS +EROTICIZATION +EROTICIZATIONS +EROTICIZE +EROTICIZED +EROTICIZES +EROTICIZING +EROTICS +EROTISM +EROTISMS +EROTIZATION +EROTIZATIONS +EROTIZE +EROTIZED +EROTIZES +EROTIZING +EROTOGENIC +ERR +ERRABLE +ERRANCIES +ERRANCY +ERRAND +ERRANDS +ERRANT +ERRANTLY +ERRANTRIES +ERRANTRY +ERRANTS +ERRATA +ERRATAS +ERRATIC +ERRATICAL +ERRATICALLY +ERRATICISM +ERRATICISMS +ERRATICS +ERRATUM +ERRED +ERRHINE +ERRHINES +ERRING +ERRINGLY +ERRONEOUS +ERRONEOUSLY +ERRONEOUSNESS +ERRONEOUSNESSES +ERROR +ERRORLESS +ERRORS +ERRS +ERS +ERSATZ +ERSATZES +ERSES +ERST +ERSTWHILE +ERUCT +ERUCTATE +ERUCTATED +ERUCTATES +ERUCTATING +ERUCTATION +ERUCTATIONS +ERUCTED +ERUCTING +ERUCTS +ERUDITE +ERUDITELY +ERUDITION +ERUDITIONS +ERUGO +ERUGOS +ERUMPENT +ERUPT +ERUPTED +ERUPTIBLE +ERUPTING +ERUPTION +ERUPTIONS +ERUPTIVE +ERUPTIVELY +ERUPTIVES +ERUPTS +ERVIL +ERVILS +ERYNGO +ERYNGOES +ERYNGOS +ERYSIPELAS +ERYSIPELASES +ERYTHEMA +ERYTHEMAS +ERYTHEMATOUS +ERYTHEMIC +ERYTHORBATE +ERYTHORBATES +ERYTHREMIA +ERYTHREMIAS +ERYTHRISM +ERYTHRISMAL +ERYTHRISMS +ERYTHRISTIC +ERYTHRITE +ERYTHRITES +ERYTHROBLAST +ERYTHROBLASTIC +ERYTHROBLASTS +ERYTHROCYTE +ERYTHROCYTES +ERYTHROCYTIC +ERYTHROID +ERYTHROMYCIN +ERYTHROMYCINS +ERYTHRON +ERYTHRONS +ERYTHROPOIESES +ERYTHROPOIESIS +ERYTHROPOIETIC +ERYTHROPOIETIN +ERYTHROPOIETINS +ERYTHROSIN +ERYTHROSINE +ERYTHROSINES +ERYTHROSINS +ES +ESCADRILLE +ESCADRILLES +ESCALADE +ESCALADED +ESCALADER +ESCALADERS +ESCALADES +ESCALADING +ESCALATE +ESCALATED +ESCALATES +ESCALATING +ESCALATION +ESCALATIONS +ESCALATOR +ESCALATORS +ESCALATORY +ESCALLOP +ESCALLOPED +ESCALLOPING +ESCALLOPS +ESCALOP +ESCALOPE +ESCALOPED +ESCALOPES +ESCALOPING +ESCALOPS +ESCAPABLE +ESCAPADE +ESCAPADES +ESCAPE +ESCAPED +ESCAPEE +ESCAPEES +ESCAPEMENT +ESCAPEMENTS +ESCAPER +ESCAPERS +ESCAPES +ESCAPING +ESCAPISM +ESCAPISMS +ESCAPIST +ESCAPISTS +ESCAPOLOGIES +ESCAPOLOGIST +ESCAPOLOGISTS +ESCAPOLOGY +ESCAR +ESCARGOT +ESCARGOTS +ESCAROLE +ESCAROLES +ESCARP +ESCARPED +ESCARPING +ESCARPMENT +ESCARPMENTS +ESCARPS +ESCARS +ESCHALOT +ESCHALOTS +ESCHAR +ESCHAROTIC +ESCHAROTICS +ESCHARS +ESCHATOLOGICAL +ESCHATOLOGIES +ESCHATOLOGY +ESCHEAT +ESCHEATABLE +ESCHEATED +ESCHEATING +ESCHEATOR +ESCHEATORS +ESCHEATS +ESCHEW +ESCHEWAL +ESCHEWALS +ESCHEWED +ESCHEWER +ESCHEWERS +ESCHEWING +ESCHEWS +ESCOLAR +ESCOLARS +ESCORT +ESCORTED +ESCORTING +ESCORTS +ESCOT +ESCOTED +ESCOTING +ESCOTS +ESCRITOIRE +ESCRITOIRES +ESCROW +ESCROWED +ESCROWING +ESCROWS +ESCUAGE +ESCUAGES +ESCUDO +ESCUDOS +ESCULENT +ESCULENTS +ESCUTCHEON +ESCUTCHEONS +ESEMPLASTIC +ESERINE +ESERINES +ESES +ESKAR +ESKARS +ESKER +ESKERS +ESNE +ESNES +ESOPHAGEAL +ESOPHAGI +ESOPHAGUS +ESOTERIC +ESOTERICA +ESOTERICALLY +ESOTERICISM +ESOTERICISMS +ESOTROPIA +ESOTROPIAS +ESOTROPIC +ESPADRILLE +ESPADRILLES +ESPALIER +ESPALIERED +ESPALIERING +ESPALIERS +ESPANOL +ESPANOLES +ESPARTO +ESPARTOS +ESPECIAL +ESPECIALLY +ESPERANCE +ESPERANCES +ESPIAL +ESPIALS +ESPIED +ESPIEGLE +ESPIEGLERIE +ESPIEGLERIES +ESPIES +ESPIONAGE +ESPIONAGES +ESPLANADE +ESPLANADES +ESPOUSAL +ESPOUSALS +ESPOUSE +ESPOUSED +ESPOUSER +ESPOUSERS +ESPOUSES +ESPOUSING +ESPRESSO +ESPRESSOS +ESPRIT +ESPRITS +ESPY +ESPYING +ESQUIRE +ESQUIRED +ESQUIRES +ESQUIRING +ESS +ESSAY +ESSAYED +ESSAYER +ESSAYERS +ESSAYING +ESSAYIST +ESSAYISTIC +ESSAYISTS +ESSAYS +ESSENCE +ESSENCES +ESSENTIAL +ESSENTIALISM +ESSENTIALISMS +ESSENTIALIST +ESSENTIALISTS +ESSENTIALITIES +ESSENTIALITY +ESSENTIALIZE +ESSENTIALIZED +ESSENTIALIZES +ESSENTIALIZING +ESSENTIALLY +ESSENTIALNESS +ESSENTIALNESSES +ESSENTIALS +ESSES +ESSOIN +ESSOINS +ESSONITE +ESSONITES +ESTABLISH +ESTABLISHABLE +ESTABLISHED +ESTABLISHER +ESTABLISHERS +ESTABLISHES +ESTABLISHING +ESTABLISHMENT +ESTABLISHMENTS +ESTAMINET +ESTAMINETS +ESTANCIA +ESTANCIAS +ESTATE +ESTATED +ESTATES +ESTATING +ESTEEM +ESTEEMED +ESTEEMING +ESTEEMS +ESTER +ESTERASE +ESTERASES +ESTERIFICATION +ESTERIFICATIONS +ESTERIFIED +ESTERIFIES +ESTERIFY +ESTERIFYING +ESTERS +ESTHESES +ESTHESIA +ESTHESIAS +ESTHESIS +ESTHESISES +ESTHETE +ESTHETES +ESTHETIC +ESTHETICIAN +ESTHETICIANS +ESTHETICISM +ESTHETICISMS +ESTHETICS +ESTIMABLE +ESTIMABLENESS +ESTIMABLENESSES +ESTIMABLY +ESTIMATE +ESTIMATED +ESTIMATES +ESTIMATING +ESTIMATION +ESTIMATIONS +ESTIMATIVE +ESTIMATOR +ESTIMATORS +ESTIVAL +ESTIVATE +ESTIVATED +ESTIVATES +ESTIVATING +ESTIVATION +ESTIVATIONS +ESTIVATOR +ESTIVATORS +ESTOP +ESTOPPAGE +ESTOPPAGES +ESTOPPED +ESTOPPEL +ESTOPPELS +ESTOPPING +ESTOPS +ESTOVERS +ESTRADIOL +ESTRADIOLS +ESTRAGON +ESTRAGONS +ESTRAL +ESTRANGE +ESTRANGED +ESTRANGEMENT +ESTRANGEMENTS +ESTRANGER +ESTRANGERS +ESTRANGES +ESTRANGING +ESTRAY +ESTRAYED +ESTRAYING +ESTRAYS +ESTREAT +ESTREATED +ESTREATING +ESTREATS +ESTRIN +ESTRINS +ESTRIOL +ESTRIOLS +ESTROGEN +ESTROGENIC +ESTROGENICALLY +ESTROGENS +ESTRONE +ESTRONES +ESTROUS +ESTRUAL +ESTRUM +ESTRUMS +ESTRUS +ESTRUSES +ESTUARIAL +ESTUARIES +ESTUARINE +ESTUARY +ESURIENCE +ESURIENCES +ESURIENCIES +ESURIENCY +ESURIENT +ESURIENTLY +ET +ETA +ETAGERE +ETAGERES +ETALON +ETALONS +ETAMIN +ETAMINE +ETAMINES +ETAMINS +ETAPE +ETAPES +ETAS +ETATISM +ETATISMS +ETATIST +ETCETERA +ETCETERAS +ETCH +ETCHANT +ETCHANTS +ETCHED +ETCHER +ETCHERS +ETCHES +ETCHING +ETCHINGS +ETERNAL +ETERNALIZE +ETERNALIZED +ETERNALIZES +ETERNALIZING +ETERNALLY +ETERNALNESS +ETERNALNESSES +ETERNALS +ETERNE +ETERNISE +ETERNISED +ETERNISES +ETERNISING +ETERNITIES +ETERNITY +ETERNIZATION +ETERNIZATIONS +ETERNIZE +ETERNIZED +ETERNIZES +ETERNIZING +ETESIAN +ETESIANS +ETH +ETHAMBUTOL +ETHAMBUTOLS +ETHANE +ETHANES +ETHANOL +ETHANOLAMINE +ETHANOLAMINES +ETHANOLS +ETHENE +ETHENES +ETHEPHON +ETHEPHONS +ETHER +ETHEREAL +ETHEREALITIES +ETHEREALITY +ETHEREALIZATION +ETHEREALIZE +ETHEREALIZED +ETHEREALIZES +ETHEREALIZING +ETHEREALLY +ETHEREALNESS +ETHEREALNESSES +ETHERIC +ETHERIFIED +ETHERIFIES +ETHERIFY +ETHERIFYING +ETHERISH +ETHERIZATION +ETHERIZATIONS +ETHERIZE +ETHERIZED +ETHERIZER +ETHERIZERS +ETHERIZES +ETHERIZING +ETHERS +ETHIC +ETHICAL +ETHICALITIES +ETHICALITY +ETHICALLY +ETHICALNESS +ETHICALNESSES +ETHICALS +ETHICIAN +ETHICIANS +ETHICIST +ETHICISTS +ETHICIZE +ETHICIZED +ETHICIZES +ETHICIZING +ETHICS +ETHINYL +ETHINYLS +ETHION +ETHIONAMIDE +ETHIONAMIDES +ETHIONINE +ETHIONINES +ETHIONS +ETHMOID +ETHMOIDAL +ETHMOIDS +ETHNARCH +ETHNARCHIES +ETHNARCHS +ETHNARCHY +ETHNIC +ETHNICAL +ETHNICALLY +ETHNICITIES +ETHNICITY +ETHNICS +ETHNOBOTANICAL +ETHNOBOTANIES +ETHNOBOTANIST +ETHNOBOTANISTS +ETHNOBOTANY +ETHNOCENTRIC +ETHNOCENTRICITY +ETHNOCENTRISM +ETHNOCENTRISMS +ETHNOGRAPHER +ETHNOGRAPHERS +ETHNOGRAPHIC +ETHNOGRAPHICAL +ETHNOGRAPHIES +ETHNOGRAPHY +ETHNOHISTORIAN +ETHNOHISTORIANS +ETHNOHISTORIC +ETHNOHISTORICAL +ETHNOHISTORIES +ETHNOHISTORY +ETHNOLOGIC +ETHNOLOGICAL +ETHNOLOGIES +ETHNOLOGIST +ETHNOLOGISTS +ETHNOLOGY +ETHNOMUSICOLOGY +ETHNONYM +ETHNONYMS +ETHNOS +ETHNOSCIENCE +ETHNOSCIENCES +ETHNOSES +ETHOGRAM +ETHOGRAMS +ETHOLOGICAL +ETHOLOGIES +ETHOLOGIST +ETHOLOGISTS +ETHOLOGY +ETHOS +ETHOSES +ETHOXIES +ETHOXY +ETHOXYL +ETHOXYLS +ETHS +ETHYL +ETHYLATE +ETHYLATED +ETHYLATES +ETHYLATING +ETHYLBENZENE +ETHYLBENZENES +ETHYLENE +ETHYLENES +ETHYLENIC +ETHYLIC +ETHYLS +ETHYNE +ETHYNES +ETHYNYL +ETHYNYLS +ETIC +ETIOLATE +ETIOLATED +ETIOLATES +ETIOLATING +ETIOLATION +ETIOLATIONS +ETIOLOGIC +ETIOLOGICAL +ETIOLOGICALLY +ETIOLOGIES +ETIOLOGY +ETIQUETTE +ETIQUETTES +ETNA +ETNAS +ETOILE +ETOILES +ETOUFFEE +ETOUFFEES +ETUDE +ETUDES +ETUI +ETUIS +ETWEE +ETWEES +ETYMA +ETYMOLOGICAL +ETYMOLOGICALLY +ETYMOLOGIES +ETYMOLOGISE +ETYMOLOGISED +ETYMOLOGISES +ETYMOLOGISING +ETYMOLOGIST +ETYMOLOGISTS +ETYMOLOGIZE +ETYMOLOGIZED +ETYMOLOGIZES +ETYMOLOGIZING +ETYMOLOGY +ETYMON +ETYMONS +EUCAINE +EUCAINES +EUCALYPT +EUCALYPTI +EUCALYPTOL +EUCALYPTOLE +EUCALYPTOLES +EUCALYPTOLS +EUCALYPTS +EUCALYPTUS +EUCALYPTUSES +EUCARYOTE +EUCARYOTES +EUCHARIS +EUCHARISES +EUCHARISTIC +EUCHRE +EUCHRED +EUCHRES +EUCHRING +EUCHROMATIC +EUCHROMATIN +EUCHROMATINS +EUCLASE +EUCLASES +EUCLIDEAN +EUCLIDIAN +EUCRITE +EUCRITES +EUCRITIC +EUDAEMON +EUDAEMONISM +EUDAEMONISMS +EUDAEMONIST +EUDAEMONISTIC +EUDAEMONISTS +EUDAEMONS +EUDAIMON +EUDAIMONISM +EUDAIMONISMS +EUDAIMONS +EUDEMON +EUDEMONIA +EUDEMONIAS +EUDEMONS +EUDIOMETER +EUDIOMETERS +EUDIOMETRIC +EUDIOMETRICALLY +EUGENIA +EUGENIAS +EUGENIC +EUGENICAL +EUGENICALLY +EUGENICIST +EUGENICISTS +EUGENICS +EUGENIST +EUGENISTS +EUGENOL +EUGENOLS +EUGEOSYNCLINAL +EUGEOSYNCLINE +EUGEOSYNCLINES +EUGLENA +EUGLENAS +EUGLENID +EUGLENIDS +EUGLENOID +EUGLENOIDS +EUGLOBULIN +EUGLOBULINS +EUHEMERISM +EUHEMERISMS +EUHEMERIST +EUHEMERISTIC +EUHEMERISTS +EUKARYOTE +EUKARYOTES +EUKARYOTIC +EULACHAN +EULACHANS +EULACHON +EULACHONS +EULOGIA +EULOGIAE +EULOGIAS +EULOGIES +EULOGISE +EULOGISED +EULOGISES +EULOGISING +EULOGIST +EULOGISTIC +EULOGISTICALLY +EULOGISTS +EULOGIUM +EULOGIUMS +EULOGIZE +EULOGIZED +EULOGIZER +EULOGIZERS +EULOGIZES +EULOGIZING +EULOGY +EUNUCH +EUNUCHISM +EUNUCHISMS +EUNUCHOID +EUNUCHOIDS +EUNUCHS +EUONYMUS +EUONYMUSES +EUPATRID +EUPATRIDAE +EUPATRIDS +EUPEPSIA +EUPEPSIAS +EUPEPSIES +EUPEPSY +EUPEPTIC +EUPHAUSID +EUPHAUSIDS +EUPHAUSIID +EUPHAUSIIDS +EUPHEMISE +EUPHEMISED +EUPHEMISES +EUPHEMISING +EUPHEMISM +EUPHEMISMS +EUPHEMIST +EUPHEMISTIC +EUPHEMISTICALLY +EUPHEMISTS +EUPHEMIZE +EUPHEMIZED +EUPHEMIZER +EUPHEMIZERS +EUPHEMIZES +EUPHEMIZING +EUPHENIC +EUPHENICS +EUPHONIC +EUPHONICALLY +EUPHONIES +EUPHONIOUS +EUPHONIOUSLY +EUPHONIOUSNESS +EUPHONIUM +EUPHONIUMS +EUPHONIZE +EUPHONIZED +EUPHONIZES +EUPHONIZING +EUPHONY +EUPHORBIA +EUPHORBIAS +EUPHORIA +EUPHORIANT +EUPHORIANTS +EUPHORIAS +EUPHORIC +EUPHORICALLY +EUPHOTIC +EUPHRASIES +EUPHRASY +EUPHROE +EUPHROES +EUPHUISM +EUPHUISMS +EUPHUIST +EUPHUISTIC +EUPHUISTICALLY +EUPHUISTS +EUPLASTIC +EUPLASTICS +EUPLOID +EUPLOIDIES +EUPLOIDS +EUPLOIDY +EUPNEA +EUPNEAS +EUPNEIC +EUPNOEA +EUPNOEAS +EUPNOEIC +EUREKA +EURHYTHMIC +EURHYTHMICS +EURHYTHMIES +EURHYTHMY +EURIPI +EURIPUS +EURO +EUROKIES +EUROKOUS +EUROKY +EUROPIUM +EUROPIUMS +EUROS +EURYBATH +EURYBATHIC +EURYBATHS +EURYHALINE +EURYOKIES +EURYOKOUS +EURYOKY +EURYPTERID +EURYPTERIDS +EURYTHERM +EURYTHERMAL +EURYTHERMIC +EURYTHERMOUS +EURYTHERMS +EURYTHMIC +EURYTHMICS +EURYTHMIES +EURYTHMY +EURYTOPIC +EUSOCIAL +EUSTACIES +EUSTACY +EUSTASIES +EUSTASY +EUSTATIC +EUSTELE +EUSTELES +EUTAXIES +EUTAXY +EUTECTIC +EUTECTICS +EUTECTOID +EUTECTOIDS +EUTHANASIA +EUTHANASIAS +EUTHANASIC +EUTHANATIZE +EUTHANATIZED +EUTHANATIZES +EUTHANATIZING +EUTHANIZE +EUTHANIZED +EUTHANIZES +EUTHANIZING +EUTHENICS +EUTHENIST +EUTHENISTS +EUTHERIAN +EUTHERIANS +EUTHYROID +EUTHYROIDS +EUTROPHIC +EUTROPHICATION +EUTROPHICATIONS +EUTROPHIES +EUTROPHY +EUXENITE +EUXENITES +EVACUANT +EVACUANTS +EVACUATE +EVACUATED +EVACUATES +EVACUATING +EVACUATION +EVACUATIONS +EVACUATIVE +EVACUATOR +EVACUATORS +EVACUEE +EVACUEES +EVADABLE +EVADE +EVADED +EVADER +EVADERS +EVADES +EVADIBLE +EVADING +EVADINGLY +EVAGINATE +EVAGINATED +EVAGINATES +EVAGINATING +EVAGINATION +EVAGINATIONS +EVALUABLE +EVALUATE +EVALUATED +EVALUATES +EVALUATING +EVALUATION +EVALUATIONS +EVALUATIVE +EVALUATOR +EVALUATORS +EVANESCE +EVANESCED +EVANESCENCE +EVANESCENCES +EVANESCENT +EVANESCES +EVANESCING +EVANGEL +EVANGELIC +EVANGELICAL +EVANGELICALLY +EVANGELISM +EVANGELISMS +EVANGELIST +EVANGELISTIC +EVANGELISTS +EVANGELIZATION +EVANGELIZATIONS +EVANGELIZE +EVANGELIZED +EVANGELIZES +EVANGELIZING +EVANGELS +EVANISH +EVANISHED +EVANISHES +EVANISHING +EVAPORATE +EVAPORATED +EVAPORATES +EVAPORATING +EVAPORATION +EVAPORATIONS +EVAPORATIVE +EVAPORATOR +EVAPORATORS +EVAPORITE +EVAPORITES +EVAPORITIC +EVASION +EVASIONAL +EVASIONS +EVASIVE +EVASIVELY +EVASIVENESS +EVASIVENESSES +EVE +EVECTION +EVECTIONS +EVEN +EVENED +EVENER +EVENERS +EVENEST +EVENFALL +EVENFALLS +EVENHANDED +EVENHANDEDLY +EVENHANDEDNESS +EVENING +EVENINGS +EVENLY +EVENNESS +EVENNESSES +EVENS +EVENSONG +EVENSONGS +EVENT +EVENTFUL +EVENTFULLY +EVENTFULNESS +EVENTFULNESSES +EVENTIDE +EVENTIDES +EVENTLESS +EVENTS +EVENTUAL +EVENTUALITIES +EVENTUALITY +EVENTUALLY +EVENTUATE +EVENTUATED +EVENTUATES +EVENTUATING +EVER +EVERBLOOMING +EVERDURING +EVERGLADE +EVERGLADES +EVERGREEN +EVERGREENS +EVERLASTING +EVERLASTINGLY +EVERLASTINGNESS +EVERLASTINGS +EVERMORE +EVERSIBLE +EVERSION +EVERSIONS +EVERT +EVERTED +EVERTING +EVERTOR +EVERTORS +EVERTS +EVERWHERE +EVERWHICH +EVERY +EVERYBODY +EVERYDAY +EVERYDAYNESS +EVERYDAYNESSES +EVERYDAYS +EVERYMAN +EVERYMEN +EVERYONE +EVERYPLACE +EVERYTHING +EVERYWAY +EVERYWHERE +EVERYWOMAN +EVERYWOMEN +EVES +EVICT +EVICTED +EVICTEE +EVICTEES +EVICTING +EVICTION +EVICTIONS +EVICTOR +EVICTORS +EVICTS +EVIDENCE +EVIDENCED +EVIDENCES +EVIDENCING +EVIDENT +EVIDENTIAL +EVIDENTIALLY +EVIDENTIARY +EVIDENTLY +EVIL +EVILDOER +EVILDOERS +EVILDOING +EVILDOINGS +EVILER +EVILEST +EVILLER +EVILLEST +EVILLY +EVILNESS +EVILNESSES +EVILS +EVINCE +EVINCED +EVINCES +EVINCIBLE +EVINCING +EVINCIVE +EVISCERATE +EVISCERATED +EVISCERATES +EVISCERATING +EVISCERATION +EVISCERATIONS +EVITABLE +EVITE +EVITED +EVITES +EVITING +EVOCABLE +EVOCATION +EVOCATIONS +EVOCATIVE +EVOCATIVELY +EVOCATIVENESS +EVOCATIVENESSES +EVOCATOR +EVOCATORS +EVOKE +EVOKED +EVOKER +EVOKERS +EVOKES +EVOKING +EVOLUTE +EVOLUTES +EVOLUTION +EVOLUTIONARILY +EVOLUTIONARY +EVOLUTIONISM +EVOLUTIONISMS +EVOLUTIONIST +EVOLUTIONISTS +EVOLUTIONS +EVOLVABLE +EVOLVE +EVOLVED +EVOLVEMENT +EVOLVEMENTS +EVOLVER +EVOLVERS +EVOLVES +EVOLVING +EVONYMUS +EVONYMUSES +EVULSE +EVULSED +EVULSES +EVULSING +EVULSION +EVULSIONS +EVZONE +EVZONES +EWE +EWER +EWERS +EWES +EX +EXABYTE +EXABYTES +EXACERBATE +EXACERBATED +EXACERBATES +EXACERBATING +EXACERBATION +EXACERBATIONS +EXACT +EXACTA +EXACTABLE +EXACTAS +EXACTED +EXACTER +EXACTERS +EXACTEST +EXACTING +EXACTINGLY +EXACTINGNESS +EXACTINGNESSES +EXACTION +EXACTIONS +EXACTITUDE +EXACTITUDES +EXACTLY +EXACTNESS +EXACTNESSES +EXACTOR +EXACTORS +EXACTS +EXAGGERATE +EXAGGERATED +EXAGGERATEDLY +EXAGGERATEDNESS +EXAGGERATES +EXAGGERATING +EXAGGERATION +EXAGGERATIONS +EXAGGERATIVE +EXAGGERATOR +EXAGGERATORS +EXAGGERATORY +EXAHERTZ +EXAHERTZES +EXALT +EXALTATION +EXALTATIONS +EXALTED +EXALTEDLY +EXALTER +EXALTERS +EXALTING +EXALTS +EXAM +EXAMEN +EXAMENS +EXAMINABLE +EXAMINANT +EXAMINANTS +EXAMINATION +EXAMINATIONAL +EXAMINATIONS +EXAMINE +EXAMINED +EXAMINEE +EXAMINEES +EXAMINER +EXAMINERS +EXAMINES +EXAMINING +EXAMPLE +EXAMPLED +EXAMPLES +EXAMPLING +EXAMS +EXANIMATE +EXANTHEM +EXANTHEMA +EXANTHEMAS +EXANTHEMATA +EXANTHEMATIC +EXANTHEMATOUS +EXANTHEMS +EXAPTED +EXAPTIVE +EXARCH +EXARCHAL +EXARCHATE +EXARCHATES +EXARCHIES +EXARCHS +EXARCHY +EXASPERATE +EXASPERATED +EXASPERATEDLY +EXASPERATES +EXASPERATING +EXASPERATINGLY +EXASPERATION +EXASPERATIONS +EXCAUDATE +EXCAVATE +EXCAVATED +EXCAVATES +EXCAVATING +EXCAVATION +EXCAVATIONAL +EXCAVATIONS +EXCAVATOR +EXCAVATORS +EXCEED +EXCEEDED +EXCEEDER +EXCEEDERS +EXCEEDING +EXCEEDINGLY +EXCEEDS +EXCEL +EXCELLED +EXCELLENCE +EXCELLENCES +EXCELLENCIES +EXCELLENCY +EXCELLENT +EXCELLENTLY +EXCELLING +EXCELS +EXCELSIOR +EXCELSIORS +EXCEPT +EXCEPTED +EXCEPTING +EXCEPTION +EXCEPTIONABLE +EXCEPTIONABLY +EXCEPTIONAL +EXCEPTIONALISM +EXCEPTIONALISMS +EXCEPTIONALITY +EXCEPTIONALLY +EXCEPTIONALNESS +EXCEPTIONS +EXCEPTIVE +EXCEPTS +EXCERPT +EXCERPTED +EXCERPTER +EXCERPTERS +EXCERPTING +EXCERPTION +EXCERPTIONS +EXCERPTOR +EXCERPTORS +EXCERPTS +EXCESS +EXCESSED +EXCESSES +EXCESSING +EXCESSIVE +EXCESSIVELY +EXCESSIVENESS +EXCESSIVENESSES +EXCHANGE +EXCHANGEABILITY +EXCHANGEABLE +EXCHANGED +EXCHANGER +EXCHANGERS +EXCHANGES +EXCHANGING +EXCHEQUER +EXCHEQUERS +EXCIDE +EXCIDED +EXCIDES +EXCIDING +EXCIMER +EXCIMERS +EXCIPIENT +EXCIPIENTS +EXCIPLE +EXCIPLES +EXCISABLE +EXCISE +EXCISED +EXCISEMAN +EXCISEMEN +EXCISES +EXCISING +EXCISION +EXCISIONAL +EXCISIONS +EXCITABILITIES +EXCITABILITY +EXCITABLE +EXCITABLENESS +EXCITABLENESSES +EXCITABLY +EXCITANT +EXCITANTS +EXCITATION +EXCITATIONS +EXCITATIVE +EXCITATORY +EXCITE +EXCITED +EXCITEDLY +EXCITEMENT +EXCITEMENTS +EXCITER +EXCITERS +EXCITES +EXCITING +EXCITINGLY +EXCITON +EXCITONIC +EXCITONS +EXCITOR +EXCITORS +EXCLAIM +EXCLAIMED +EXCLAIMER +EXCLAIMERS +EXCLAIMING +EXCLAIMS +EXCLAMATION +EXCLAMATIONS +EXCLAMATORY +EXCLAVE +EXCLAVES +EXCLOSURE +EXCLOSURES +EXCLUDABILITIES +EXCLUDABILITY +EXCLUDABLE +EXCLUDE +EXCLUDED +EXCLUDER +EXCLUDERS +EXCLUDES +EXCLUDIBLE +EXCLUDING +EXCLUSION +EXCLUSIONARY +EXCLUSIONIST +EXCLUSIONISTS +EXCLUSIONS +EXCLUSIVE +EXCLUSIVELY +EXCLUSIVENESS +EXCLUSIVENESSES +EXCLUSIVES +EXCLUSIVISM +EXCLUSIVISMS +EXCLUSIVIST +EXCLUSIVISTS +EXCLUSIVITIES +EXCLUSIVITY +EXCLUSORY +EXCOGITATE +EXCOGITATED +EXCOGITATES +EXCOGITATING +EXCOGITATION +EXCOGITATIONS +EXCOGITATIVE +EXCOMMUNICATE +EXCOMMUNICATED +EXCOMMUNICATES +EXCOMMUNICATING +EXCOMMUNICATION +EXCOMMUNICATIVE +EXCOMMUNICATOR +EXCOMMUNICATORS +EXCORIATE +EXCORIATED +EXCORIATES +EXCORIATING +EXCORIATION +EXCORIATIONS +EXCREMENT +EXCREMENTAL +EXCREMENTITIOUS +EXCREMENTS +EXCRESCENCE +EXCRESCENCES +EXCRESCENCIES +EXCRESCENCY +EXCRESCENT +EXCRESCENTLY +EXCRETA +EXCRETAL +EXCRETE +EXCRETED +EXCRETER +EXCRETERS +EXCRETES +EXCRETING +EXCRETION +EXCRETIONS +EXCRETIVE +EXCRETORIES +EXCRETORY +EXCRUCIATE +EXCRUCIATED +EXCRUCIATES +EXCRUCIATING +EXCRUCIATINGLY +EXCRUCIATION +EXCRUCIATIONS +EXCULPATE +EXCULPATED +EXCULPATES +EXCULPATING +EXCULPATION +EXCULPATIONS +EXCULPATORY +EXCURRENT +EXCURSION +EXCURSIONIST +EXCURSIONISTS +EXCURSIONS +EXCURSIVE +EXCURSIVELY +EXCURSIVENESS +EXCURSIVENESSES +EXCURSUS +EXCURSUSES +EXCUSABLE +EXCUSABLENESS +EXCUSABLENESSES +EXCUSABLY +EXCUSATORY +EXCUSE +EXCUSED +EXCUSER +EXCUSERS +EXCUSES +EXCUSING +EXEC +EXECRABLE +EXECRABLENESS +EXECRABLENESSES +EXECRABLY +EXECRATE +EXECRATED +EXECRATES +EXECRATING +EXECRATION +EXECRATIONS +EXECRATIVE +EXECRATOR +EXECRATORS +EXECS +EXECUTABLE +EXECUTANT +EXECUTANTS +EXECUTE +EXECUTED +EXECUTER +EXECUTERS +EXECUTES +EXECUTING +EXECUTION +EXECUTIONER +EXECUTIONERS +EXECUTIONS +EXECUTIVE +EXECUTIVES +EXECUTOR +EXECUTORIAL +EXECUTORS +EXECUTORY +EXECUTRICES +EXECUTRIX +EXECUTRIXES +EXED +EXEDRA +EXEDRAE +EXEGESES +EXEGESIS +EXEGETE +EXEGETES +EXEGETIC +EXEGETICAL +EXEGETICS +EXEGETIST +EXEGETISTS +EXEMPLA +EXEMPLAR +EXEMPLARILY +EXEMPLARINESS +EXEMPLARINESSES +EXEMPLARITIES +EXEMPLARITY +EXEMPLARS +EXEMPLARY +EXEMPLIFICATION +EXEMPLIFIED +EXEMPLIFIES +EXEMPLIFY +EXEMPLIFYING +EXEMPLUM +EXEMPT +EXEMPTED +EXEMPTING +EXEMPTION +EXEMPTIONS +EXEMPTIVE +EXEMPTS +EXENTERATE +EXENTERATED +EXENTERATES +EXENTERATING +EXENTERATION +EXENTERATIONS +EXEQUATUR +EXEQUATURS +EXEQUIAL +EXEQUIES +EXEQUY +EXERCISABLE +EXERCISE +EXERCISED +EXERCISER +EXERCISERS +EXERCISES +EXERCISING +EXERCITATION +EXERCITATIONS +EXERCYCLE +EXERCYCLES +EXERGONIC +EXERGUAL +EXERGUE +EXERGUES +EXERT +EXERTED +EXERTING +EXERTION +EXERTIONS +EXERTIVE +EXERTS +EXES +EXEUNT +EXFOLIANT +EXFOLIANTS +EXFOLIATE +EXFOLIATED +EXFOLIATES +EXFOLIATING +EXFOLIATION +EXFOLIATIONS +EXFOLIATIVE +EXHALANT +EXHALANTS +EXHALATION +EXHALATIONS +EXHALE +EXHALED +EXHALENT +EXHALENTS +EXHALES +EXHALING +EXHAUST +EXHAUSTED +EXHAUSTER +EXHAUSTERS +EXHAUSTIBILITY +EXHAUSTIBLE +EXHAUSTING +EXHAUSTION +EXHAUSTIONS +EXHAUSTIVE +EXHAUSTIVELY +EXHAUSTIVENESS +EXHAUSTIVITIES +EXHAUSTIVITY +EXHAUSTLESS +EXHAUSTLESSLY +EXHAUSTLESSNESS +EXHAUSTS +EXHEDRA +EXHEDRAE +EXHIBIT +EXHIBITED +EXHIBITER +EXHIBITERS +EXHIBITING +EXHIBITION +EXHIBITIONER +EXHIBITIONERS +EXHIBITIONISM +EXHIBITIONISMS +EXHIBITIONIST +EXHIBITIONISTIC +EXHIBITIONISTS +EXHIBITIONS +EXHIBITIVE +EXHIBITOR +EXHIBITORS +EXHIBITORY +EXHIBITS +EXHILARATE +EXHILARATED +EXHILARATES +EXHILARATING +EXHILARATINGLY +EXHILARATION +EXHILARATIONS +EXHILARATIVE +EXHORT +EXHORTATION +EXHORTATIONS +EXHORTATIVE +EXHORTATORY +EXHORTED +EXHORTER +EXHORTERS +EXHORTING +EXHORTS +EXHUMATION +EXHUMATIONS +EXHUME +EXHUMED +EXHUMER +EXHUMERS +EXHUMES +EXHUMING +EXIGENCE +EXIGENCES +EXIGENCIES +EXIGENCY +EXIGENT +EXIGENTLY +EXIGIBLE +EXIGUITIES +EXIGUITY +EXIGUOUS +EXIGUOUSLY +EXIGUOUSNESS +EXIGUOUSNESSES +EXILABLE +EXILE +EXILED +EXILER +EXILERS +EXILES +EXILIAN +EXILIC +EXILING +EXIMIOUS +EXINE +EXINES +EXING +EXIST +EXISTED +EXISTENCE +EXISTENCES +EXISTENT +EXISTENTIAL +EXISTENTIALISM +EXISTENTIALISMS +EXISTENTIALIST +EXISTENTIALISTS +EXISTENTIALLY +EXISTENTS +EXISTING +EXISTS +EXIT +EXITED +EXITING +EXITLESS +EXITS +EXOBIOLOGICAL +EXOBIOLOGIES +EXOBIOLOGIST +EXOBIOLOGISTS +EXOBIOLOGY +EXOCARP +EXOCARPS +EXOCRINE +EXOCRINES +EXOCYCLIC +EXOCYTIC +EXOCYTOSE +EXOCYTOSED +EXOCYTOSES +EXOCYTOSING +EXOCYTOSIS +EXOCYTOTIC +EXODERM +EXODERMIS +EXODERMISES +EXODERMS +EXODOI +EXODONTIA +EXODONTIAS +EXODONTIST +EXODONTISTS +EXODOS +EXODUS +EXODUSES +EXOENZYME +EXOENZYMES +EXOERGIC +EXOERYTHROCYTIC +EXOGAMIC +EXOGAMIES +EXOGAMOUS +EXOGAMY +EXOGEN +EXOGENISM +EXOGENISMS +EXOGENOUS +EXOGENOUSLY +EXOGENS +EXON +EXONERATE +EXONERATED +EXONERATES +EXONERATING +EXONERATION +EXONERATIONS +EXONERATIVE +EXONIC +EXONS +EXONUCLEASE +EXONUCLEASES +EXONUMIA +EXONUMIST +EXONUMISTS +EXONYM +EXONYMS +EXOPEPTIDASE +EXOPEPTIDASES +EXOPHTHALMIC +EXOPHTHALMOS +EXOPHTHALMOSES +EXOPHTHALMUS +EXOPHTHALMUSES +EXORABLE +EXORBITANCE +EXORBITANCES +EXORBITANT +EXORBITANTLY +EXORCISE +EXORCISED +EXORCISER +EXORCISERS +EXORCISES +EXORCISING +EXORCISM +EXORCISMS +EXORCIST +EXORCISTIC +EXORCISTICAL +EXORCISTS +EXORCIZE +EXORCIZED +EXORCIZES +EXORCIZING +EXORDIA +EXORDIAL +EXORDIUM +EXORDIUMS +EXOSKELETAL +EXOSKELETON +EXOSKELETONS +EXOSMIC +EXOSMOSE +EXOSMOSES +EXOSMOSIS +EXOSMOTIC +EXOSPHERE +EXOSPHERES +EXOSPHERIC +EXOSPORE +EXOSPORES +EXOSPORIA +EXOSPORIUM +EXOSTOSES +EXOSTOSIS +EXOTERIC +EXOTERICALLY +EXOTHERMAL +EXOTHERMALLY +EXOTHERMIC +EXOTHERMICALLY +EXOTHERMICITIES +EXOTHERMICITY +EXOTIC +EXOTICA +EXOTICALLY +EXOTICISM +EXOTICISMS +EXOTICIST +EXOTICISTS +EXOTICNESS +EXOTICNESSES +EXOTICS +EXOTISM +EXOTISMS +EXOTOXIC +EXOTOXIN +EXOTOXINS +EXOTROPIA +EXOTROPIAS +EXOTROPIC +EXPAND +EXPANDABILITIES +EXPANDABILITY +EXPANDABLE +EXPANDED +EXPANDER +EXPANDERS +EXPANDING +EXPANDOR +EXPANDORS +EXPANDS +EXPANSE +EXPANSES +EXPANSIBILITIES +EXPANSIBILITY +EXPANSIBLE +EXPANSILE +EXPANSION +EXPANSIONAL +EXPANSIONARY +EXPANSIONISM +EXPANSIONISMS +EXPANSIONIST +EXPANSIONISTIC +EXPANSIONISTS +EXPANSIONS +EXPANSIVE +EXPANSIVELY +EXPANSIVENESS +EXPANSIVENESSES +EXPANSIVITIES +EXPANSIVITY +EXPAT +EXPATIATE +EXPATIATED +EXPATIATES +EXPATIATING +EXPATIATION +EXPATIATIONS +EXPATRIATE +EXPATRIATED +EXPATRIATES +EXPATRIATING +EXPATRIATION +EXPATRIATIONS +EXPATRIATISM +EXPATRIATISMS +EXPATS +EXPECT +EXPECTABLE +EXPECTABLY +EXPECTANCE +EXPECTANCES +EXPECTANCIES +EXPECTANCY +EXPECTANT +EXPECTANTLY +EXPECTANTS +EXPECTATION +EXPECTATIONAL +EXPECTATIONS +EXPECTATIVE +EXPECTED +EXPECTEDLY +EXPECTEDNESS +EXPECTEDNESSES +EXPECTER +EXPECTERS +EXPECTING +EXPECTORANT +EXPECTORANTS +EXPECTORATE +EXPECTORATED +EXPECTORATES +EXPECTORATING +EXPECTORATION +EXPECTORATIONS +EXPECTS +EXPEDIENCE +EXPEDIENCES +EXPEDIENCIES +EXPEDIENCY +EXPEDIENT +EXPEDIENTIAL +EXPEDIENTLY +EXPEDIENTS +EXPEDITE +EXPEDITED +EXPEDITER +EXPEDITERS +EXPEDITES +EXPEDITING +EXPEDITION +EXPEDITIONARY +EXPEDITIONS +EXPEDITIOUS +EXPEDITIOUSLY +EXPEDITIOUSNESS +EXPEDITOR +EXPEDITORS +EXPEL +EXPELLABLE +EXPELLANT +EXPELLANTS +EXPELLED +EXPELLEE +EXPELLEES +EXPELLENT +EXPELLENTS +EXPELLER +EXPELLERS +EXPELLING +EXPELS +EXPEND +EXPENDABILITIES +EXPENDABILITY +EXPENDABLE +EXPENDABLES +EXPENDED +EXPENDER +EXPENDERS +EXPENDING +EXPENDITURE +EXPENDITURES +EXPENDS +EXPENSE +EXPENSED +EXPENSES +EXPENSING +EXPENSIVE +EXPENSIVELY +EXPENSIVENESS +EXPENSIVENESSES +EXPERIENCE +EXPERIENCED +EXPERIENCES +EXPERIENCING +EXPERIENTIAL +EXPERIENTIALLY +EXPERIMENT +EXPERIMENTAL +EXPERIMENTALISM +EXPERIMENTALIST +EXPERIMENTALLY +EXPERIMENTATION +EXPERIMENTED +EXPERIMENTER +EXPERIMENTERS +EXPERIMENTING +EXPERIMENTS +EXPERT +EXPERTED +EXPERTING +EXPERTISE +EXPERTISES +EXPERTISM +EXPERTISMS +EXPERTIZE +EXPERTIZED +EXPERTIZES +EXPERTIZING +EXPERTLY +EXPERTNESS +EXPERTNESSES +EXPERTS +EXPIABLE +EXPIATE +EXPIATED +EXPIATES +EXPIATING +EXPIATION +EXPIATIONS +EXPIATOR +EXPIATORS +EXPIATORY +EXPIRATION +EXPIRATIONS +EXPIRATORY +EXPIRE +EXPIRED +EXPIRER +EXPIRERS +EXPIRES +EXPIRIES +EXPIRING +EXPIRY +EXPLAIN +EXPLAINABLE +EXPLAINED +EXPLAINER +EXPLAINERS +EXPLAINING +EXPLAINS +EXPLANATION +EXPLANATIONS +EXPLANATIVE +EXPLANATIVELY +EXPLANATORILY +EXPLANATORY +EXPLANT +EXPLANTATION +EXPLANTATIONS +EXPLANTED +EXPLANTING +EXPLANTS +EXPLETIVE +EXPLETIVES +EXPLETORY +EXPLICABLE +EXPLICABLY +EXPLICATE +EXPLICATED +EXPLICATES +EXPLICATING +EXPLICATION +EXPLICATIONS +EXPLICATIVE +EXPLICATIVELY +EXPLICATOR +EXPLICATORS +EXPLICATORY +EXPLICIT +EXPLICITLY +EXPLICITNESS +EXPLICITNESSES +EXPLICITS +EXPLODE +EXPLODED +EXPLODER +EXPLODERS +EXPLODES +EXPLODING +EXPLOIT +EXPLOITABLE +EXPLOITATION +EXPLOITATIONS +EXPLOITATIVE +EXPLOITATIVELY +EXPLOITED +EXPLOITER +EXPLOITERS +EXPLOITING +EXPLOITIVE +EXPLOITS +EXPLORATION +EXPLORATIONAL +EXPLORATIONS +EXPLORATIVE +EXPLORATIVELY +EXPLORATORY +EXPLORE +EXPLORED +EXPLORER +EXPLORERS +EXPLORES +EXPLORING +EXPLOSION +EXPLOSIONS +EXPLOSIVE +EXPLOSIVELY +EXPLOSIVENESS +EXPLOSIVENESSES +EXPLOSIVES +EXPO +EXPONENT +EXPONENTIAL +EXPONENTIALLY +EXPONENTIALS +EXPONENTIATION +EXPONENTIATIONS +EXPONENTS +EXPORT +EXPORTABILITIES +EXPORTABILITY +EXPORTABLE +EXPORTATION +EXPORTATIONS +EXPORTED +EXPORTER +EXPORTERS +EXPORTING +EXPORTS +EXPOS +EXPOSABLE +EXPOSAL +EXPOSALS +EXPOSE +EXPOSED +EXPOSER +EXPOSERS +EXPOSES +EXPOSING +EXPOSIT +EXPOSITED +EXPOSITING +EXPOSITION +EXPOSITIONAL +EXPOSITIONS +EXPOSITIVE +EXPOSITOR +EXPOSITORS +EXPOSITORY +EXPOSITS +EXPOSTULATE +EXPOSTULATED +EXPOSTULATES +EXPOSTULATING +EXPOSTULATION +EXPOSTULATIONS +EXPOSTULATORY +EXPOSURE +EXPOSURES +EXPOUND +EXPOUNDED +EXPOUNDER +EXPOUNDERS +EXPOUNDING +EXPOUNDS +EXPRESS +EXPRESSAGE +EXPRESSAGES +EXPRESSED +EXPRESSER +EXPRESSERS +EXPRESSES +EXPRESSIBLE +EXPRESSING +EXPRESSION +EXPRESSIONAL +EXPRESSIONISM +EXPRESSIONISMS +EXPRESSIONIST +EXPRESSIONISTIC +EXPRESSIONISTS +EXPRESSIONLESS +EXPRESSIONS +EXPRESSIVE +EXPRESSIVELY +EXPRESSIVENESS +EXPRESSIVITIES +EXPRESSIVITY +EXPRESSLY +EXPRESSMAN +EXPRESSMEN +EXPRESSO +EXPRESSOS +EXPRESSWAY +EXPRESSWAYS +EXPROPRIATE +EXPROPRIATED +EXPROPRIATES +EXPROPRIATING +EXPROPRIATION +EXPROPRIATIONS +EXPROPRIATOR +EXPROPRIATORS +EXPULSE +EXPULSED +EXPULSES +EXPULSING +EXPULSION +EXPULSIONS +EXPULSIVE +EXPUNCTION +EXPUNCTIONS +EXPUNGE +EXPUNGED +EXPUNGER +EXPUNGERS +EXPUNGES +EXPUNGING +EXPURGATE +EXPURGATED +EXPURGATES +EXPURGATING +EXPURGATION +EXPURGATIONS +EXPURGATOR +EXPURGATORIAL +EXPURGATORS +EXPURGATORY +EXQUISITE +EXQUISITELY +EXQUISITENESS +EXQUISITENESSES +EXQUISITES +EXSANGUINATE +EXSANGUINATED +EXSANGUINATES +EXSANGUINATING +EXSANGUINATION +EXSANGUINATIONS +EXSCIND +EXSCINDED +EXSCINDING +EXSCINDS +EXSECANT +EXSECANTS +EXSECT +EXSECTED +EXSECTING +EXSECTION +EXSECTIONS +EXSECTS +EXSERT +EXSERTED +EXSERTILE +EXSERTING +EXSERTION +EXSERTIONS +EXSERTS +EXSICCATE +EXSICCATED +EXSICCATES +EXSICCATING +EXSICCATION +EXSICCATIONS +EXSOLUTION +EXSOLUTIONS +EXSTROPHIES +EXSTROPHY +EXTANT +EXTEMPORAL +EXTEMPORALLY +EXTEMPORANEITY +EXTEMPORANEOUS +EXTEMPORARILY +EXTEMPORARY +EXTEMPORE +EXTEMPORISATION +EXTEMPORISE +EXTEMPORISED +EXTEMPORISES +EXTEMPORISING +EXTEMPORIZATION +EXTEMPORIZE +EXTEMPORIZED +EXTEMPORIZER +EXTEMPORIZERS +EXTEMPORIZES +EXTEMPORIZING +EXTEND +EXTENDABILITIES +EXTENDABILITY +EXTENDABLE +EXTENDED +EXTENDEDLY +EXTENDEDNESS +EXTENDEDNESSES +EXTENDER +EXTENDERS +EXTENDIBLE +EXTENDING +EXTENDS +EXTENSIBILITIES +EXTENSIBILITY +EXTENSIBLE +EXTENSILE +EXTENSION +EXTENSIONAL +EXTENSIONALITY +EXTENSIONALLY +EXTENSIONS +EXTENSITIES +EXTENSITY +EXTENSIVE +EXTENSIVELY +EXTENSIVENESS +EXTENSIVENESSES +EXTENSOMETER +EXTENSOMETERS +EXTENSOR +EXTENSORS +EXTENT +EXTENTS +EXTENUATE +EXTENUATED +EXTENUATES +EXTENUATING +EXTENUATION +EXTENUATIONS +EXTENUATOR +EXTENUATORS +EXTENUATORY +EXTERIOR +EXTERIORISE +EXTERIORISED +EXTERIORISES +EXTERIORISING +EXTERIORITIES +EXTERIORITY +EXTERIORIZATION +EXTERIORIZE +EXTERIORIZED +EXTERIORIZES +EXTERIORIZING +EXTERIORLY +EXTERIORS +EXTERMINATE +EXTERMINATED +EXTERMINATES +EXTERMINATING +EXTERMINATION +EXTERMINATIONS +EXTERMINATOR +EXTERMINATORS +EXTERMINATORY +EXTERMINE +EXTERMINED +EXTERMINES +EXTERMINING +EXTERN +EXTERNAL +EXTERNALISATION +EXTERNALISE +EXTERNALISED +EXTERNALISES +EXTERNALISING +EXTERNALISM +EXTERNALISMS +EXTERNALITIES +EXTERNALITY +EXTERNALIZATION +EXTERNALIZE +EXTERNALIZED +EXTERNALIZES +EXTERNALIZING +EXTERNALLY +EXTERNALS +EXTERNE +EXTERNES +EXTERNS +EXTERNSHIP +EXTERNSHIPS +EXTEROCEPTIVE +EXTEROCEPTOR +EXTEROCEPTORS +EXTERRITORIAL +EXTINCT +EXTINCTED +EXTINCTING +EXTINCTION +EXTINCTIONS +EXTINCTIVE +EXTINCTS +EXTINGUISH +EXTINGUISHABLE +EXTINGUISHED +EXTINGUISHER +EXTINGUISHERS +EXTINGUISHES +EXTINGUISHING +EXTINGUISHMENT +EXTINGUISHMENTS +EXTIRPATE +EXTIRPATED +EXTIRPATES +EXTIRPATING +EXTIRPATION +EXTIRPATIONS +EXTIRPATOR +EXTIRPATORS +EXTOL +EXTOLL +EXTOLLED +EXTOLLER +EXTOLLERS +EXTOLLING +EXTOLLS +EXTOLMENT +EXTOLMENTS +EXTOLS +EXTORT +EXTORTED +EXTORTER +EXTORTERS +EXTORTING +EXTORTION +EXTORTIONARY +EXTORTIONATE +EXTORTIONATELY +EXTORTIONER +EXTORTIONERS +EXTORTIONIST +EXTORTIONISTS +EXTORTIONS +EXTORTIVE +EXTORTS +EXTRA +EXTRABOLD +EXTRABOLDS +EXTRACELLULAR +EXTRACELLULARLY +EXTRACORPOREAL +EXTRACRANIAL +EXTRACT +EXTRACTABILITY +EXTRACTABLE +EXTRACTED +EXTRACTING +EXTRACTION +EXTRACTIONS +EXTRACTIVE +EXTRACTIVELY +EXTRACTIVES +EXTRACTOR +EXTRACTORS +EXTRACTS +EXTRACURRICULAR +EXTRADITABLE +EXTRADITE +EXTRADITED +EXTRADITES +EXTRADITING +EXTRADITION +EXTRADITIONS +EXTRADOS +EXTRADOSES +EXTRAEMBRYONIC +EXTRAGALACTIC +EXTRAHEPATIC +EXTRAJUDICIAL +EXTRAJUDICIALLY +EXTRALEGAL +EXTRALEGALLY +EXTRALIMITAL +EXTRALINGUISTIC +EXTRALITERARY +EXTRALITIES +EXTRALITY +EXTRALOGICAL +EXTRAMARITAL +EXTRAMUNDANE +EXTRAMURAL +EXTRAMURALLY +EXTRAMUSICAL +EXTRANEOUS +EXTRANEOUSLY +EXTRANEOUSNESS +EXTRANET +EXTRANETS +EXTRANUCLEAR +EXTRAORDINAIRE +EXTRAORDINARILY +EXTRAORDINARY +EXTRAPOLATE +EXTRAPOLATED +EXTRAPOLATES +EXTRAPOLATING +EXTRAPOLATION +EXTRAPOLATIONS +EXTRAPOLATIVE +EXTRAPOLATOR +EXTRAPOLATORS +EXTRAPYRAMIDAL +EXTRAS +EXTRASENSORY +EXTRASYSTOLE +EXTRASYSTOLES +EXTRATEXTUAL +EXTRAUTERINE +EXTRAVAGANCE +EXTRAVAGANCES +EXTRAVAGANCIES +EXTRAVAGANCY +EXTRAVAGANT +EXTRAVAGANTLY +EXTRAVAGANZA +EXTRAVAGANZAS +EXTRAVAGATE +EXTRAVAGATED +EXTRAVAGATES +EXTRAVAGATING +EXTRAVASATE +EXTRAVASATED +EXTRAVASATES +EXTRAVASATING +EXTRAVASATION +EXTRAVASATIONS +EXTRAVASCULAR +EXTRAVEHICULAR +EXTRAVERSION +EXTRAVERSIONS +EXTRAVERT +EXTRAVERTED +EXTRAVERTS +EXTREMA +EXTREME +EXTREMELY +EXTREMENESS +EXTREMENESSES +EXTREMER +EXTREMES +EXTREMEST +EXTREMISM +EXTREMISMS +EXTREMIST +EXTREMISTS +EXTREMITIES +EXTREMITY +EXTREMUM +EXTRICABLE +EXTRICATE +EXTRICATED +EXTRICATES +EXTRICATING +EXTRICATION +EXTRICATIONS +EXTRINSIC +EXTRINSICALLY +EXTRORSE +EXTROVERSION +EXTROVERSIONS +EXTROVERT +EXTROVERTED +EXTROVERTS +EXTRUDABILITIES +EXTRUDABILITY +EXTRUDABLE +EXTRUDE +EXTRUDED +EXTRUDER +EXTRUDERS +EXTRUDES +EXTRUDING +EXTRUSION +EXTRUSIONS +EXTRUSIVE +EXTUBATE +EXTUBATED +EXTUBATES +EXTUBATING +EXUBERANCE +EXUBERANCES +EXUBERANT +EXUBERANTLY +EXUBERATE +EXUBERATED +EXUBERATES +EXUBERATING +EXUDATE +EXUDATES +EXUDATION +EXUDATIONS +EXUDATIVE +EXUDE +EXUDED +EXUDES +EXUDING +EXULT +EXULTANCE +EXULTANCES +EXULTANCIES +EXULTANCY +EXULTANT +EXULTANTLY +EXULTATION +EXULTATIONS +EXULTED +EXULTING +EXULTINGLY +EXULTS +EXURB +EXURBAN +EXURBANITE +EXURBANITES +EXURBIA +EXURBIAS +EXURBS +EXUVIA +EXUVIAE +EXUVIAL +EXUVIATE +EXUVIATED +EXUVIATES +EXUVIATING +EXUVIATION +EXUVIATIONS +EXUVIUM +EYAS +EYASES +EYASS +EYASSES +EYE +EYEABLE +EYEBALL +EYEBALLED +EYEBALLING +EYEBALLS +EYEBAR +EYEBARS +EYEBEAM +EYEBEAMS +EYEBLACK +EYEBLACKS +EYEBLINK +EYEBLINKS +EYEBOLT +EYEBOLTS +EYEBRIGHT +EYEBRIGHTS +EYEBROW +EYEBROWS +EYECUP +EYECUPS +EYED +EYEDNESS +EYEDNESSES +EYEDROPPER +EYEDROPPERS +EYEDROPS +EYEFOLD +EYEFOLDS +EYEFUL +EYEFULS +EYEGLASS +EYEGLASSES +EYEHOLE +EYEHOLES +EYEHOOK +EYEHOOKS +EYEING +EYELASH +EYELASHES +EYELESS +EYELET +EYELETS +EYELETTED +EYELETTING +EYELID +EYELIDS +EYELIFT +EYELIFTS +EYELIKE +EYELINER +EYELINERS +EYEN +EYEOPENER +EYEOPENERS +EYEPIECE +EYEPIECES +EYEPOINT +EYEPOINTS +EYEPOPPER +EYEPOPPERS +EYER +EYERS +EYES +EYESHADE +EYESHADES +EYESHINE +EYESHINES +EYESHOT +EYESHOTS +EYESIGHT +EYESIGHTS +EYESOME +EYESORE +EYESORES +EYESPOT +EYESPOTS +EYESTALK +EYESTALKS +EYESTONE +EYESTONES +EYESTRAIN +EYESTRAINS +EYESTRINGS +EYETEETH +EYETOOTH +EYEWASH +EYEWASHES +EYEWATER +EYEWATERS +EYEWEAR +EYEWINK +EYEWINKS +EYEWITNESS +EYEWITNESSES +EYING +EYNE +EYRA +EYRAS +EYRE +EYRES +EYRIE +EYRIES +EYRIR +EYRY +FA +FAB +FABACEOUS +FABBER +FABBEST +FABLE +FABLED +FABLER +FABLERS +FABLES +FABLIAU +FABLIAUX +FABLING +FABRIC +FABRICANT +FABRICANTS +FABRICATE +FABRICATED +FABRICATES +FABRICATING +FABRICATION +FABRICATIONS +FABRICATOR +FABRICATORS +FABRICS +FABS +FABULAR +FABULATE +FABULATED +FABULATES +FABULATING +FABULATOR +FABULATORS +FABULIST +FABULISTIC +FABULISTS +FABULOUS +FABULOUSLY +FABULOUSNESS +FABULOUSNESSES +FACADE +FACADES +FACE +FACEABLE +FACECLOTH +FACECLOTHS +FACED +FACEDOWN +FACEDOWNS +FACELESS +FACELESSNESS +FACELESSNESSES +FACELIFT +FACELIFTED +FACELIFTING +FACELIFTS +FACEMASK +FACEMASKS +FACEPLATE +FACEPLATES +FACER +FACERS +FACES +FACET +FACETE +FACETED +FACETELY +FACETIAE +FACETING +FACETIOUS +FACETIOUSLY +FACETIOUSNESS +FACETIOUSNESSES +FACETS +FACETTED +FACETTING +FACEUP +FACIA +FACIAE +FACIAL +FACIALLY +FACIALS +FACIAS +FACIEND +FACIENDS +FACIES +FACILE +FACILELY +FACILENESS +FACILENESSES +FACILITATE +FACILITATED +FACILITATES +FACILITATING +FACILITATION +FACILITATIONS +FACILITATIVE +FACILITATOR +FACILITATORS +FACILITATORY +FACILITIES +FACILITY +FACING +FACINGS +FACSIMILE +FACSIMILED +FACSIMILEING +FACSIMILES +FACT +FACTFUL +FACTICITIES +FACTICITY +FACTION +FACTIONAL +FACTIONALISM +FACTIONALISMS +FACTIONALLY +FACTIONS +FACTIOUS +FACTIOUSLY +FACTIOUSNESS +FACTIOUSNESSES +FACTITIOUS +FACTITIOUSLY +FACTITIOUSNESS +FACTITIVE +FACTITIVELY +FACTOID +FACTOIDAL +FACTOIDS +FACTOR +FACTORABLE +FACTORAGE +FACTORAGES +FACTORED +FACTORIAL +FACTORIALS +FACTORIES +FACTORING +FACTORIZATION +FACTORIZATIONS +FACTORIZE +FACTORIZED +FACTORIZES +FACTORIZING +FACTORS +FACTORSHIP +FACTORSHIPS +FACTORY +FACTORYLIKE +FACTOTUM +FACTOTUMS +FACTS +FACTUAL +FACTUALISM +FACTUALISMS +FACTUALIST +FACTUALISTS +FACTUALITIES +FACTUALITY +FACTUALLY +FACTUALNESS +FACTUALNESSES +FACTURE +FACTURES +FACULA +FACULAE +FACULAR +FACULTATIVE +FACULTATIVELY +FACULTIES +FACULTY +FAD +FADABLE +FADDIER +FADDIEST +FADDISH +FADDISHLY +FADDISHNESS +FADDISHNESSES +FADDISM +FADDISMS +FADDIST +FADDISTS +FADDY +FADE +FADEAWAY +FADEAWAYS +FADED +FADEDLY +FADEDNESS +FADEDNESSES +FADEIN +FADEINS +FADELESS +FADEOUT +FADEOUTS +FADER +FADERS +FADES +FADGE +FADGED +FADGES +FADGING +FADING +FADINGS +FADLIKE +FADO +FADOS +FADS +FAECAL +FAECES +FAENA +FAENAS +FAERIE +FAERIES +FAERY +FAG +FAGGED +FAGGIER +FAGGIEST +FAGGING +FAGGOT +FAGGOTED +FAGGOTING +FAGGOTINGS +FAGGOTRIES +FAGGOTRY +FAGGOTS +FAGGOTY +FAGGY +FAGIN +FAGINS +FAGOT +FAGOTED +FAGOTER +FAGOTERS +FAGOTING +FAGOTINGS +FAGOTS +FAGS +FAHLBAND +FAHLBANDS +FAIENCE +FAIENCES +FAIL +FAILED +FAILING +FAILINGLY +FAILINGS +FAILLE +FAILLES +FAILS +FAILURE +FAILURES +FAIN +FAINEANCE +FAINEANCES +FAINEANT +FAINEANTS +FAINER +FAINEST +FAINT +FAINTED +FAINTER +FAINTERS +FAINTEST +FAINTHEARTED +FAINTHEARTEDLY +FAINTING +FAINTISH +FAINTISHNESS +FAINTISHNESSES +FAINTLY +FAINTNESS +FAINTNESSES +FAINTS +FAIR +FAIRED +FAIRER +FAIREST +FAIRGOER +FAIRGOERS +FAIRGROUND +FAIRGROUNDS +FAIRIES +FAIRING +FAIRINGS +FAIRISH +FAIRISHLY +FAIRLEAD +FAIRLEADER +FAIRLEADERS +FAIRLEADS +FAIRLY +FAIRNESS +FAIRNESSES +FAIRS +FAIRWAY +FAIRWAYS +FAIRY +FAIRYHOOD +FAIRYHOODS +FAIRYISM +FAIRYISMS +FAIRYLAND +FAIRYLANDS +FAIRYLIKE +FAITH +FAITHED +FAITHFUL +FAITHFULLY +FAITHFULNESS +FAITHFULNESSES +FAITHFULS +FAITHING +FAITHLESS +FAITHLESSLY +FAITHLESSNESS +FAITHLESSNESSES +FAITHS +FAITOUR +FAITOURS +FAJITA +FAJITAS +FAKE +FAKED +FAKEER +FAKEERS +FAKER +FAKERIES +FAKERS +FAKERY +FAKES +FAKEY +FAKING +FAKIR +FAKIRS +FALAFEL +FALAFELS +FALBALA +FALBALAS +FALCATE +FALCATED +FALCES +FALCHION +FALCHIONS +FALCIFORM +FALCON +FALCONER +FALCONERS +FALCONET +FALCONETS +FALCONINE +FALCONOID +FALCONRIES +FALCONRY +FALCONS +FALDERAL +FALDERALS +FALDEROL +FALDEROLS +FALDSTOOL +FALDSTOOLS +FALL +FALLACIES +FALLACIOUS +FALLACIOUSLY +FALLACIOUSNESS +FALLACY +FALLAL +FALLALERIES +FALLALERY +FALLALS +FALLAWAY +FALLAWAYS +FALLBACK +FALLBACKS +FALLBOARD +FALLBOARDS +FALLEN +FALLER +FALLERS +FALLFISH +FALLFISHES +FALLIBILITIES +FALLIBILITY +FALLIBLE +FALLIBLY +FALLING +FALLOFF +FALLOFFS +FALLOUT +FALLOUTS +FALLOW +FALLOWED +FALLOWING +FALLOWNESS +FALLOWNESSES +FALLOWS +FALLS +FALSE +FALSEFACE +FALSEFACES +FALSEHOOD +FALSEHOODS +FALSELY +FALSENESS +FALSENESSES +FALSER +FALSEST +FALSETTO +FALSETTOS +FALSEWORK +FALSEWORKS +FALSIE +FALSIES +FALSIFIABILITY +FALSIFIABLE +FALSIFICATION +FALSIFICATIONS +FALSIFIED +FALSIFIER +FALSIFIERS +FALSIFIES +FALSIFY +FALSIFYING +FALSITIES +FALSITY +FALTBOAT +FALTBOATS +FALTER +FALTERED +FALTERER +FALTERERS +FALTERING +FALTERINGLY +FALTERS +FALX +FAME +FAMED +FAMELESS +FAMES +FAMILIAL +FAMILIAR +FAMILIARISE +FAMILIARISED +FAMILIARISES +FAMILIARISING +FAMILIARITIES +FAMILIARITY +FAMILIARIZATION +FAMILIARIZE +FAMILIARIZED +FAMILIARIZES +FAMILIARIZING +FAMILIARLY +FAMILIARNESS +FAMILIARNESSES +FAMILIARS +FAMILIES +FAMILISM +FAMILISMS +FAMILISTIC +FAMILY +FAMINE +FAMINES +FAMING +FAMISH +FAMISHED +FAMISHES +FAMISHING +FAMISHMENT +FAMISHMENTS +FAMOUS +FAMOUSLY +FAMOUSNESS +FAMOUSNESSES +FAMULI +FAMULUS +FAN +FANATIC +FANATICAL +FANATICALLY +FANATICALNESS +FANATICALNESSES +FANATICISM +FANATICISMS +FANATICIZE +FANATICIZED +FANATICIZES +FANATICIZING +FANATICS +FANCIED +FANCIER +FANCIERS +FANCIES +FANCIEST +FANCIFIED +FANCIFIES +FANCIFUL +FANCIFULLY +FANCIFULNESS +FANCIFULNESSES +FANCIFY +FANCIFYING +FANCILESS +FANCILY +FANCINESS +FANCINESSES +FANCY +FANCYING +FANCYWORK +FANCYWORKS +FANDANGO +FANDANGOS +FANDOM +FANDOMS +FANE +FANEGA +FANEGADA +FANEGADAS +FANEGAS +FANES +FANFARE +FANFARES +FANFARON +FANFARONADE +FANFARONADES +FANFARONS +FANFIC +FANFICS +FANFOLD +FANFOLDED +FANFOLDING +FANFOLDS +FANG +FANGA +FANGAS +FANGED +FANGLESS +FANGLIKE +FANGS +FANION +FANIONS +FANJET +FANJETS +FANLIGHT +FANLIGHTS +FANLIKE +FANNED +FANNER +FANNERS +FANNIES +FANNING +FANNY +FANO +FANON +FANONS +FANOS +FANS +FANTABULOUS +FANTAIL +FANTAILED +FANTAILS +FANTASIA +FANTASIAS +FANTASIE +FANTASIED +FANTASIES +FANTASISE +FANTASISED +FANTASISES +FANTASISING +FANTASIST +FANTASISTS +FANTASIZE +FANTASIZED +FANTASIZER +FANTASIZERS +FANTASIZES +FANTASIZING +FANTASM +FANTASMS +FANTAST +FANTASTIC +FANTASTICAL +FANTASTICALITY +FANTASTICALLY +FANTASTICALNESS +FANTASTICATE +FANTASTICATED +FANTASTICATES +FANTASTICATING +FANTASTICATION +FANTASTICATIONS +FANTASTICO +FANTASTICOES +FANTASTICS +FANTASTS +FANTASY +FANTASYING +FANTASYLAND +FANTASYLANDS +FANTOCCINI +FANTOD +FANTODS +FANTOM +FANTOMS +FANUM +FANUMS +FANWISE +FANWORT +FANWORTS +FANZINE +FANZINES +FAQIR +FAQIRS +FAQUIR +FAQUIRS +FAR +FARAD +FARADAIC +FARADAY +FARADAYS +FARADIC +FARADISE +FARADISED +FARADISES +FARADISING +FARADISM +FARADISMS +FARADIZE +FARADIZED +FARADIZER +FARADIZERS +FARADIZES +FARADIZING +FARADS +FARANDOLE +FARANDOLES +FARAWAY +FARCE +FARCED +FARCER +FARCERS +FARCES +FARCEUR +FARCEURS +FARCI +FARCICAL +FARCICALITIES +FARCICALITY +FARCICALLY +FARCIE +FARCIES +FARCING +FARCY +FARD +FARDED +FARDEL +FARDELS +FARDING +FARDS +FARE +FAREBOX +FAREBOXES +FARED +FARER +FARERS +FARES +FAREWELL +FAREWELLED +FAREWELLING +FAREWELLS +FARFAL +FARFALLE +FARFALS +FARFEL +FARFELS +FARFETCHEDNESS +FARINA +FARINACEOUS +FARINAS +FARING +FARINHA +FARINHAS +FARINOSE +FARKLEBERRIES +FARKLEBERRY +FARL +FARLE +FARLES +FARLS +FARM +FARMABLE +FARMED +FARMER +FARMERETTE +FARMERETTES +FARMERS +FARMHAND +FARMHANDS +FARMHOUSE +FARMHOUSES +FARMING +FARMINGS +FARMLAND +FARMLANDS +FARMS +FARMSTEAD +FARMSTEADS +FARMWIFE +FARMWIVES +FARMWORK +FARMWORKER +FARMWORKERS +FARMWORKS +FARMYARD +FARMYARDS +FARNESOL +FARNESOLS +FARNESS +FARNESSES +FARO +FAROLITO +FAROLITOS +FAROS +FAROUCHE +FARRAGINOUS +FARRAGO +FARRAGOES +FARRIER +FARRIERIES +FARRIERS +FARRIERY +FARROW +FARROWED +FARROWING +FARROWS +FARSEEING +FARSIDE +FARSIDES +FARSIGHTED +FARSIGHTEDLY +FARSIGHTEDNESS +FART +FARTED +FARTHER +FARTHERMOST +FARTHEST +FARTHING +FARTHINGALE +FARTHINGALES +FARTHINGS +FARTING +FARTLEK +FARTLEKS +FARTS +FAS +FASCES +FASCIA +FASCIAE +FASCIAL +FASCIAS +FASCIATE +FASCIATED +FASCIATION +FASCIATIONS +FASCICLE +FASCICLED +FASCICLES +FASCICULAR +FASCICULARLY +FASCICULATE +FASCICULATED +FASCICULATION +FASCICULATIONS +FASCICULE +FASCICULES +FASCICULI +FASCICULUS +FASCIITIS +FASCIITISES +FASCINATE +FASCINATED +FASCINATES +FASCINATING +FASCINATINGLY +FASCINATION +FASCINATIONS +FASCINATOR +FASCINATORS +FASCINE +FASCINES +FASCIOLIASES +FASCIOLIASIS +FASCISM +FASCISMS +FASCIST +FASCISTIC +FASCISTICALLY +FASCISTS +FASCITIS +FASCITISES +FASH +FASHED +FASHES +FASHING +FASHION +FASHIONABILITY +FASHIONABLE +FASHIONABLENESS +FASHIONABLES +FASHIONABLY +FASHIONED +FASHIONER +FASHIONERS +FASHIONING +FASHIONISTA +FASHIONISTAS +FASHIONMONGER +FASHIONMONGERS +FASHIONS +FASHIOUS +FAST +FASTBACK +FASTBACKS +FASTBALL +FASTBALLER +FASTBALLERS +FASTBALLS +FASTED +FASTEN +FASTENED +FASTENER +FASTENERS +FASTENING +FASTENINGS +FASTENS +FASTER +FASTEST +FASTIDIOUS +FASTIDIOUSLY +FASTIDIOUSNESS +FASTIGIATE +FASTIGIUM +FASTIGIUMS +FASTING +FASTINGS +FASTNESS +FASTNESSES +FASTS +FASTUOUS +FAT +FATAL +FATALISM +FATALISMS +FATALIST +FATALISTIC +FATALISTICALLY +FATALISTS +FATALITIES +FATALITY +FATALLY +FATALNESS +FATALNESSES +FATBACK +FATBACKS +FATBIRD +FATBIRDS +FATE +FATED +FATEFUL +FATEFULLY +FATEFULNESS +FATEFULNESSES +FATES +FATHEAD +FATHEADED +FATHEADEDLY +FATHEADEDNESS +FATHEADEDNESSES +FATHEADS +FATHER +FATHERED +FATHERHOOD +FATHERHOODS +FATHERING +FATHERLAND +FATHERLANDS +FATHERLESS +FATHERLIKE +FATHERLINESS +FATHERLINESSES +FATHERLY +FATHERS +FATHOM +FATHOMABLE +FATHOMED +FATHOMER +FATHOMERS +FATHOMING +FATHOMLESS +FATHOMLESSLY +FATHOMLESSNESS +FATHOMS +FATIDIC +FATIDICAL +FATIGABILITIES +FATIGABILITY +FATIGABLE +FATIGUE +FATIGUED +FATIGUES +FATIGUING +FATIGUINGLY +FATING +FATLESS +FATLIKE +FATLING +FATLINGS +FATLY +FATNESS +FATNESSES +FATS +FATSHEDERA +FATSHEDERAS +FATSO +FATSOES +FATSOS +FATSTOCK +FATSTOCKS +FATTED +FATTEN +FATTENED +FATTENER +FATTENERS +FATTENING +FATTENS +FATTER +FATTEST +FATTIER +FATTIES +FATTIEST +FATTILY +FATTINESS +FATTINESSES +FATTING +FATTISH +FATTY +FATUITIES +FATUITY +FATUOUS +FATUOUSLY +FATUOUSNESS +FATUOUSNESSES +FATWA +FATWAS +FATWOOD +FATWOODS +FAUBOURG +FAUBOURGS +FAUCAL +FAUCALS +FAUCES +FAUCET +FAUCETS +FAUCIAL +FAUGH +FAULD +FAULDS +FAULT +FAULTED +FAULTFINDER +FAULTFINDERS +FAULTFINDING +FAULTFINDINGS +FAULTIER +FAULTIEST +FAULTILY +FAULTINESS +FAULTINESSES +FAULTING +FAULTLESS +FAULTLESSLY +FAULTLESSNESS +FAULTLESSNESSES +FAULTS +FAULTY +FAUN +FAUNA +FAUNAE +FAUNAL +FAUNALLY +FAUNAS +FAUNISTIC +FAUNISTICALLY +FAUNLIKE +FAUNS +FAUTEUIL +FAUTEUILS +FAUVE +FAUVES +FAUVISM +FAUVISMS +FAUVIST +FAUVISTS +FAUX +FAVA +FAVAS +FAVE +FAVELA +FAVELAS +FAVELLA +FAVELLAS +FAVEOLATE +FAVES +FAVISM +FAVISMS +FAVONIAN +FAVOR +FAVORABLE +FAVORABLENESS +FAVORABLENESSES +FAVORABLY +FAVORED +FAVORER +FAVORERS +FAVORING +FAVORITE +FAVORITES +FAVORITISM +FAVORITISMS +FAVORS +FAVOUR +FAVOURED +FAVOURER +FAVOURERS +FAVOURING +FAVOURS +FAVUS +FAVUSES +FAWN +FAWNED +FAWNER +FAWNERS +FAWNIER +FAWNIEST +FAWNING +FAWNINGLY +FAWNLIKE +FAWNS +FAWNY +FAX +FAXED +FAXES +FAXING +FAY +FAYALITE +FAYALITES +FAYED +FAYING +FAYS +FAZE +FAZED +FAZENDA +FAZENDAS +FAZES +FAZING +FE +FEAL +FEALTIES +FEALTY +FEAR +FEARED +FEARER +FEARERS +FEARFUL +FEARFULLER +FEARFULLEST +FEARFULLY +FEARFULNESS +FEARFULNESSES +FEARING +FEARLESS +FEARLESSLY +FEARLESSNESS +FEARLESSNESSES +FEARS +FEARSOME +FEARSOMELY +FEARSOMENESS +FEARSOMENESSES +FEASANCE +FEASANCES +FEASE +FEASED +FEASES +FEASIBILITIES +FEASIBILITY +FEASIBLE +FEASIBLY +FEASING +FEAST +FEASTED +FEASTER +FEASTERS +FEASTFUL +FEASTING +FEASTLESS +FEASTS +FEAT +FEATER +FEATEST +FEATHER +FEATHERBED +FEATHERBEDDED +FEATHERBEDDING +FEATHERBEDDINGS +FEATHERBEDS +FEATHERBRAIN +FEATHERBRAINED +FEATHERBRAINS +FEATHERED +FEATHEREDGE +FEATHEREDGED +FEATHEREDGES +FEATHEREDGING +FEATHERHEAD +FEATHERHEADED +FEATHERHEADS +FEATHERIER +FEATHERIEST +FEATHERING +FEATHERINGS +FEATHERLESS +FEATHERLIGHT +FEATHERS +FEATHERSTITCH +FEATHERSTITCHED +FEATHERSTITCHES +FEATHERWEIGHT +FEATHERWEIGHTS +FEATHERY +FEATLIER +FEATLIEST +FEATLY +FEATS +FEATURE +FEATURED +FEATURELESS +FEATURES +FEATURETTE +FEATURETTES +FEATURING +FEAZE +FEAZED +FEAZES +FEAZING +FEBRICITIES +FEBRICITY +FEBRIFIC +FEBRIFUGE +FEBRIFUGES +FEBRILE +FEBRILITIES +FEBRILITY +FECAL +FECES +FECIAL +FECIALS +FECK +FECKLESS +FECKLESSLY +FECKLESSNESS +FECKLESSNESSES +FECKLY +FECKS +FECULA +FECULAE +FECULENCE +FECULENCES +FECULENT +FECUND +FECUNDATE +FECUNDATED +FECUNDATES +FECUNDATING +FECUNDATION +FECUNDATIONS +FECUNDITIES +FECUNDITY +FED +FEDAYEE +FEDAYEEN +FEDERACIES +FEDERACY +FEDERAL +FEDERALESE +FEDERALESES +FEDERALISM +FEDERALISMS +FEDERALIST +FEDERALISTS +FEDERALIZATION +FEDERALIZATIONS +FEDERALIZE +FEDERALIZED +FEDERALIZES +FEDERALIZING +FEDERALLY +FEDERALS +FEDERATE +FEDERATED +FEDERATES +FEDERATING +FEDERATION +FEDERATIONS +FEDERATIVE +FEDERATIVELY +FEDERATOR +FEDERATORS +FEDEX +FEDEXED +FEDEXES +FEDEXING +FEDORA +FEDORAS +FEDS +FEE +FEEB +FEEBLE +FEEBLEMINDED +FEEBLEMINDEDLY +FEEBLENESS +FEEBLENESSES +FEEBLER +FEEBLEST +FEEBLISH +FEEBLY +FEEBS +FEED +FEEDABLE +FEEDBACK +FEEDBACKS +FEEDBAG +FEEDBAGS +FEEDBOX +FEEDBOXES +FEEDER +FEEDERS +FEEDGRAIN +FEEDGRAINS +FEEDHOLE +FEEDHOLES +FEEDING +FEEDLOT +FEEDLOTS +FEEDS +FEEDSTOCK +FEEDSTOCKS +FEEDSTUFF +FEEDSTUFFS +FEEDYARD +FEEDYARDS +FEEING +FEEL +FEELER +FEELERS +FEELESS +FEELING +FEELINGLY +FEELINGNESS +FEELINGNESSES +FEELINGS +FEELS +FEES +FEET +FEETFIRST +FEETLESS +FEEZE +FEEZED +FEEZES +FEEZING +FEH +FEHS +FEIGN +FEIGNED +FEIGNEDLY +FEIGNER +FEIGNERS +FEIGNING +FEIGNS +FEIJOA +FEIJOAS +FEINT +FEINTED +FEINTING +FEINTS +FEIRIE +FEIST +FEISTIER +FEISTIEST +FEISTILY +FEISTINESS +FEISTINESSES +FEISTS +FEISTY +FELAFEL +FELAFELS +FELDSCHER +FELDSCHERS +FELDSHER +FELDSHERS +FELDSPAR +FELDSPARS +FELDSPATHIC +FELICIFIC +FELICITATE +FELICITATED +FELICITATES +FELICITATING +FELICITATION +FELICITATIONS +FELICITATOR +FELICITATORS +FELICITIES +FELICITOUS +FELICITOUSLY +FELICITOUSNESS +FELICITY +FELID +FELIDS +FELINE +FELINELY +FELINES +FELINITIES +FELINITY +FELL +FELLA +FELLABLE +FELLAH +FELLAHEEN +FELLAHIN +FELLAHS +FELLAS +FELLATE +FELLATED +FELLATES +FELLATING +FELLATIO +FELLATION +FELLATIONS +FELLATIOS +FELLATOR +FELLATORS +FELLATRICES +FELLATRIX +FELLATRIXES +FELLED +FELLER +FELLERS +FELLEST +FELLIES +FELLING +FELLMONGER +FELLMONGERED +FELLMONGERIES +FELLMONGERING +FELLMONGERINGS +FELLMONGERS +FELLMONGERY +FELLNESS +FELLNESSES +FELLOE +FELLOES +FELLOW +FELLOWED +FELLOWING +FELLOWLY +FELLOWMAN +FELLOWMEN +FELLOWS +FELLOWSHIP +FELLOWSHIPED +FELLOWSHIPING +FELLOWSHIPPED +FELLOWSHIPPING +FELLOWSHIPS +FELLS +FELLY +FELON +FELONIES +FELONIOUS +FELONIOUSLY +FELONIOUSNESS +FELONIOUSNESSES +FELONRIES +FELONRY +FELONS +FELONY +FELSIC +FELSITE +FELSITES +FELSITIC +FELSPAR +FELSPARS +FELSTONE +FELSTONES +FELT +FELTED +FELTING +FELTINGS +FELTLIKE +FELTS +FELUCCA +FELUCCAS +FELWORT +FELWORTS +FEM +FEMALE +FEMALENESS +FEMALENESSES +FEMALES +FEME +FEMES +FEMINACIES +FEMINACY +FEMINAZI +FEMINAZIS +FEMINIE +FEMININE +FEMININELY +FEMININENESS +FEMININENESSES +FEMININES +FEMININITIES +FEMININITY +FEMINISE +FEMINISED +FEMINISES +FEMINISING +FEMINISM +FEMINISMS +FEMINIST +FEMINISTIC +FEMINISTS +FEMINITIES +FEMINITY +FEMINIZATION +FEMINIZATIONS +FEMINIZE +FEMINIZED +FEMINIZES +FEMINIZING +FEMME +FEMMES +FEMORA +FEMORAL +FEMS +FEMTOSECOND +FEMTOSECONDS +FEMUR +FEMURS +FEN +FENAGLE +FENAGLED +FENAGLES +FENAGLING +FENCE +FENCED +FENCELESS +FENCELESSNESS +FENCELESSNESSES +FENCER +FENCEROW +FENCEROWS +FENCERS +FENCES +FENCIBLE +FENCIBLES +FENCING +FENCINGS +FEND +FENDED +FENDER +FENDERED +FENDERLESS +FENDERS +FENDING +FENDS +FENESTRA +FENESTRAE +FENESTRAL +FENESTRATE +FENESTRATED +FENESTRATION +FENESTRATIONS +FENLAND +FENLANDS +FENNEC +FENNECS +FENNEL +FENNELS +FENNIER +FENNIEST +FENNY +FENS +FENTANYL +FENTANYLS +FENTHION +FENTHIONS +FENUGREEK +FENUGREEKS +FENURON +FENURONS +FEOD +FEODARIES +FEODARY +FEODS +FEOFF +FEOFFED +FEOFFEE +FEOFFEES +FEOFFER +FEOFFERS +FEOFFING +FEOFFMENT +FEOFFMENTS +FEOFFOR +FEOFFORS +FEOFFS +FER +FERACITIES +FERACITY +FERAL +FERALS +FERBAM +FERBAMS +FERE +FERES +FERETORIES +FERETORY +FERIA +FERIAE +FERIAL +FERIAS +FERINE +FERITIES +FERITY +FERLIE +FERLIES +FERLY +FERMATA +FERMATAS +FERMATE +FERMENT +FERMENTABLE +FERMENTATION +FERMENTATIONS +FERMENTATIVE +FERMENTED +FERMENTER +FERMENTERS +FERMENTING +FERMENTOR +FERMENTORS +FERMENTS +FERMI +FERMION +FERMIONIC +FERMIONS +FERMIS +FERMIUM +FERMIUMS +FERN +FERNERIES +FERNERY +FERNIER +FERNIEST +FERNINST +FERNLESS +FERNLIKE +FERNS +FERNY +FEROCIOUS +FEROCIOUSLY +FEROCIOUSNESS +FEROCIOUSNESSES +FEROCITIES +FEROCITY +FERRATE +FERRATES +FERREDOXIN +FERREDOXINS +FERREL +FERRELED +FERRELING +FERRELLED +FERRELLING +FERRELS +FERREOUS +FERRET +FERRETED +FERRETER +FERRETERS +FERRETING +FERRETINGS +FERRETS +FERRETY +FERRIAGE +FERRIAGES +FERRIC +FERRICYANIDE +FERRICYANIDES +FERRIED +FERRIES +FERRIFEROUS +FERRIMAGNET +FERRIMAGNETIC +FERRIMAGNETISM +FERRIMAGNETISMS +FERRIMAGNETS +FERRITE +FERRITES +FERRITIC +FERRITIN +FERRITINS +FERROCENE +FERROCENES +FERROCONCRETE +FERROCONCRETES +FERROCYANIDE +FERROCYANIDES +FERROELECTRIC +FERROELECTRICS +FERROMAGNESIAN +FERROMAGNET +FERROMAGNETIC +FERROMAGNETISM +FERROMAGNETISMS +FERROMAGNETS +FERROMANGANESE +FERROMANGANESES +FERROSILICON +FERROSILICONS +FERROTYPE +FERROTYPED +FERROTYPES +FERROTYPING +FERROUS +FERRUGINOUS +FERRULE +FERRULED +FERRULES +FERRULING +FERRUM +FERRUMS +FERRY +FERRYBOAT +FERRYBOATS +FERRYING +FERRYMAN +FERRYMEN +FERTILE +FERTILELY +FERTILENESS +FERTILENESSES +FERTILITIES +FERTILITY +FERTILIZABLE +FERTILIZATION +FERTILIZATIONS +FERTILIZE +FERTILIZED +FERTILIZER +FERTILIZERS +FERTILIZES +FERTILIZING +FERULA +FERULAE +FERULAS +FERULE +FERULED +FERULES +FERULING +FERVENCIES +FERVENCY +FERVENT +FERVENTLY +FERVID +FERVIDITIES +FERVIDITY +FERVIDLY +FERVIDNESS +FERVIDNESSES +FERVOR +FERVORS +FERVOUR +FERVOURS +FES +FESCENNINE +FESCUE +FESCUES +FESS +FESSE +FESSED +FESSES +FESSING +FESSWISE +FEST +FESTAL +FESTALLY +FESTER +FESTERED +FESTERING +FESTERS +FESTINATE +FESTINATED +FESTINATELY +FESTINATES +FESTINATING +FESTIVAL +FESTIVALGOER +FESTIVALGOERS +FESTIVALS +FESTIVE +FESTIVELY +FESTIVENESS +FESTIVENESSES +FESTIVITIES +FESTIVITY +FESTOON +FESTOONED +FESTOONERIES +FESTOONERY +FESTOONING +FESTOONS +FESTS +FET +FETA +FETAL +FETAS +FETATION +FETATIONS +FETCH +FETCHED +FETCHER +FETCHERS +FETCHES +FETCHING +FETCHINGLY +FETE +FETED +FETERITA +FETERITAS +FETES +FETIAL +FETIALES +FETIALIS +FETIALS +FETICH +FETICHES +FETICHISM +FETICHISMS +FETICIDAL +FETICIDE +FETICIDES +FETID +FETIDITIES +FETIDITY +FETIDLY +FETIDNESS +FETIDNESSES +FETING +FETISH +FETISHES +FETISHISM +FETISHISMS +FETISHIST +FETISHISTIC +FETISHISTICALLY +FETISHISTS +FETISHIZE +FETISHIZED +FETISHIZES +FETISHIZING +FETLOCK +FETLOCKS +FETOLOGIES +FETOLOGIST +FETOLOGISTS +FETOLOGY +FETOPROTEIN +FETOPROTEINS +FETOR +FETORS +FETOSCOPE +FETOSCOPES +FETOSCOPIES +FETOSCOPY +FETS +FETTED +FETTER +FETTERED +FETTERER +FETTERERS +FETTERING +FETTERS +FETTING +FETTLE +FETTLED +FETTLES +FETTLING +FETTLINGS +FETTUCCINE +FETTUCCINI +FETTUCINE +FETTUCINI +FETUS +FETUSES +FEU +FEUAR +FEUARS +FEUD +FEUDAL +FEUDALISM +FEUDALISMS +FEUDALIST +FEUDALISTIC +FEUDALISTS +FEUDALITIES +FEUDALITY +FEUDALIZATION +FEUDALIZATIONS +FEUDALIZE +FEUDALIZED +FEUDALIZES +FEUDALIZING +FEUDALLY +FEUDARIES +FEUDARY +FEUDATORIES +FEUDATORY +FEUDED +FEUDING +FEUDIST +FEUDISTS +FEUDS +FEUED +FEUILLETON +FEUILLETONISM +FEUILLETONISMS +FEUILLETONIST +FEUILLETONISTS +FEUILLETONS +FEUING +FEUS +FEVER +FEVERED +FEVERFEW +FEVERFEWS +FEVERING +FEVERISH +FEVERISHLY +FEVERISHNESS +FEVERISHNESSES +FEVEROUS +FEVERROOT +FEVERROOTS +FEVERS +FEVERWEED +FEVERWEEDS +FEVERWORT +FEVERWORTS +FEW +FEWER +FEWEST +FEWNESS +FEWNESSES +FEWTRILS +FEY +FEYER +FEYEST +FEYLY +FEYNESS +FEYNESSES +FEZ +FEZES +FEZZED +FEZZES +FEZZY +FIACRE +FIACRES +FIANCE +FIANCEE +FIANCEES +FIANCES +FIANCHETTO +FIANCHETTOED +FIANCHETTOING +FIANCHETTOS +FIAR +FIARS +FIASCHI +FIASCO +FIASCOES +FIASCOS +FIAT +FIATS +FIB +FIBBED +FIBBER +FIBBERS +FIBBING +FIBER +FIBERBOARD +FIBERBOARDS +FIBERED +FIBERFILL +FIBERFILLS +FIBERGLASS +FIBERGLASSED +FIBERGLASSES +FIBERGLASSING +FIBERIZATION +FIBERIZATIONS +FIBERIZE +FIBERIZED +FIBERIZES +FIBERIZING +FIBERLESS +FIBERLIKE +FIBERS +FIBERSCOPE +FIBERSCOPES +FIBRANNE +FIBRANNES +FIBRE +FIBREBOARD +FIBREBOARDS +FIBREFILL +FIBREFILLS +FIBREGLASS +FIBREGLASSES +FIBRES +FIBRIL +FIBRILLA +FIBRILLAE +FIBRILLAR +FIBRILLATE +FIBRILLATED +FIBRILLATES +FIBRILLATING +FIBRILLATION +FIBRILLATIONS +FIBRILS +FIBRIN +FIBRINOGEN +FIBRINOGENS +FIBRINOID +FIBRINOIDS +FIBRINOLYSES +FIBRINOLYSIN +FIBRINOLYSINS +FIBRINOLYSIS +FIBRINOLYTIC +FIBRINOPEPTIDE +FIBRINOPEPTIDES +FIBRINOUS +FIBRINS +FIBROBLAST +FIBROBLASTIC +FIBROBLASTS +FIBROCYSTIC +FIBROID +FIBROIDS +FIBROIN +FIBROINS +FIBROMA +FIBROMAS +FIBROMATA +FIBROMATOUS +FIBROMYALGIA +FIBROMYALGIAS +FIBRONECTIN +FIBRONECTINS +FIBROSARCOMA +FIBROSARCOMAS +FIBROSARCOMATA +FIBROSES +FIBROSIS +FIBROSITIS +FIBROSITISES +FIBROTIC +FIBROUS +FIBROUSLY +FIBROVASCULAR +FIBS +FIBSTER +FIBSTERS +FIBULA +FIBULAE +FIBULAR +FIBULAS +FICE +FICES +FICHE +FICHES +FICHU +FICHUS +FICIN +FICINS +FICKLE +FICKLENESS +FICKLENESSES +FICKLER +FICKLEST +FICKLY +FICO +FICOES +FICTILE +FICTION +FICTIONAL +FICTIONALISE +FICTIONALISED +FICTIONALISES +FICTIONALISING +FICTIONALITIES +FICTIONALITY +FICTIONALIZE +FICTIONALIZED +FICTIONALIZES +FICTIONALIZING +FICTIONALLY +FICTIONEER +FICTIONEERING +FICTIONEERINGS +FICTIONEERS +FICTIONIST +FICTIONISTS +FICTIONIZATION +FICTIONIZATIONS +FICTIONIZE +FICTIONIZED +FICTIONIZES +FICTIONIZING +FICTIONS +FICTITIOUS +FICTITIOUSLY +FICTITIOUSNESS +FICTIVE +FICTIVELY +FICTIVENESS +FICTIVENESSES +FICUS +FICUSES +FID +FIDDLE +FIDDLEBACK +FIDDLEBACKS +FIDDLED +FIDDLEHEAD +FIDDLEHEADS +FIDDLER +FIDDLERS +FIDDLES +FIDDLESTICK +FIDDLESTICKS +FIDDLING +FIDDLY +FIDEISM +FIDEISMS +FIDEIST +FIDEISTIC +FIDEISTS +FIDELISMO +FIDELISMOS +FIDELISTA +FIDELISTAS +FIDELITIES +FIDELITY +FIDGE +FIDGED +FIDGES +FIDGET +FIDGETED +FIDGETER +FIDGETERS +FIDGETINESS +FIDGETINESSES +FIDGETING +FIDGETS +FIDGETY +FIDGING +FIDO +FIDOS +FIDS +FIDUCIAL +FIDUCIALLY +FIDUCIARIES +FIDUCIARY +FIE +FIEF +FIEFDOM +FIEFDOMS +FIEFS +FIELD +FIELDED +FIELDER +FIELDERS +FIELDFARE +FIELDFARES +FIELDING +FIELDPIECE +FIELDPIECES +FIELDS +FIELDSMAN +FIELDSMEN +FIELDSTONE +FIELDSTONES +FIELDSTRIP +FIELDSTRIPPED +FIELDSTRIPPING +FIELDSTRIPS +FIELDWORK +FIELDWORKS +FIEND +FIENDISH +FIENDISHLY +FIENDISHNESS +FIENDISHNESSES +FIENDS +FIERCE +FIERCELY +FIERCENESS +FIERCENESSES +FIERCER +FIERCEST +FIERIER +FIERIEST +FIERILY +FIERINESS +FIERINESSES +FIERY +FIESTA +FIESTAS +FIFE +FIFED +FIFER +FIFERS +FIFES +FIFING +FIFTEEN +FIFTEENS +FIFTEENTH +FIFTEENTHS +FIFTH +FIFTHLY +FIFTHS +FIFTIES +FIFTIETH +FIFTIETHS +FIFTY +FIFTYISH +FIG +FIGEATER +FIGEATERS +FIGGED +FIGGING +FIGHT +FIGHTABLE +FIGHTER +FIGHTERS +FIGHTING +FIGHTINGS +FIGHTS +FIGMENT +FIGMENTS +FIGS +FIGULINE +FIGULINES +FIGURABLE +FIGURAL +FIGURALLY +FIGURANT +FIGURANTS +FIGURATE +FIGURATION +FIGURATIONS +FIGURATIVE +FIGURATIVELY +FIGURATIVENESS +FIGURE +FIGURED +FIGUREDLY +FIGUREHEAD +FIGUREHEADS +FIGURER +FIGURERS +FIGURES +FIGURINE +FIGURINES +FIGURING +FIGWORT +FIGWORTS +FIL +FILA +FILAGREE +FILAGREED +FILAGREEING +FILAGREES +FILAMENT +FILAMENTARY +FILAMENTOUS +FILAMENTS +FILAR +FILAREE +FILAREES +FILARIA +FILARIAE +FILARIAL +FILARIAN +FILARIASES +FILARIASIS +FILARIID +FILARIIDS +FILATURE +FILATURES +FILBERT +FILBERTS +FILCH +FILCHED +FILCHER +FILCHERS +FILCHES +FILCHING +FILE +FILEABLE +FILED +FILEFISH +FILEFISHES +FILEMOT +FILENAME +FILENAMES +FILER +FILERS +FILES +FILET +FILETED +FILETING +FILETS +FILIAL +FILIALLY +FILIATE +FILIATED +FILIATES +FILIATING +FILIATION +FILIATIONS +FILIBEG +FILIBEGS +FILIBUSTER +FILIBUSTERED +FILIBUSTERER +FILIBUSTERERS +FILIBUSTERING +FILIBUSTERS +FILICIDE +FILICIDES +FILIFORM +FILIGREE +FILIGREED +FILIGREEING +FILIGREES +FILING +FILINGS +FILIOPIETISTIC +FILISTER +FILISTERS +FILL +FILLABLE +FILLAGREE +FILLAGREED +FILLAGREEING +FILLAGREES +FILLE +FILLED +FILLER +FILLERS +FILLES +FILLET +FILLETED +FILLETING +FILLETS +FILLIES +FILLING +FILLINGS +FILLIP +FILLIPED +FILLIPING +FILLIPS +FILLISTER +FILLISTERS +FILLO +FILLOS +FILLS +FILLY +FILM +FILMABLE +FILMCARD +FILMCARDS +FILMDOM +FILMDOMS +FILMED +FILMER +FILMERS +FILMGOER +FILMGOERS +FILMGOING +FILMI +FILMIC +FILMICALLY +FILMIER +FILMIEST +FILMILY +FILMINESS +FILMINESSES +FILMING +FILMIS +FILMLAND +FILMLANDS +FILMLESS +FILMLIKE +FILMMAKER +FILMMAKERS +FILMMAKING +FILMMAKINGS +FILMOGRAPHIES +FILMOGRAPHY +FILMS +FILMSET +FILMSETS +FILMSETTER +FILMSETTERS +FILMSETTING +FILMSETTINGS +FILMSTRIP +FILMSTRIPS +FILMY +FILO +FILOPLUME +FILOPLUMES +FILOPODIA +FILOPODIUM +FILOS +FILOSE +FILOVIRUS +FILOVIRUSES +FILS +FILTER +FILTERABILITIES +FILTERABILITY +FILTERABLE +FILTERED +FILTERER +FILTERERS +FILTERING +FILTERS +FILTH +FILTHIER +FILTHIEST +FILTHILY +FILTHINESS +FILTHINESSES +FILTHS +FILTHY +FILTRABLE +FILTRATE +FILTRATED +FILTRATES +FILTRATING +FILTRATION +FILTRATIONS +FILUM +FIMBLE +FIMBLES +FIMBRIA +FIMBRIAE +FIMBRIAL +FIMBRIATE +FIMBRIATED +FIMBRIATION +FIMBRIATIONS +FIN +FINABLE +FINAGLE +FINAGLED +FINAGLER +FINAGLERS +FINAGLES +FINAGLING +FINAL +FINALE +FINALES +FINALIS +FINALISE +FINALISED +FINALISES +FINALISING +FINALISM +FINALISMS +FINALIST +FINALISTS +FINALITIES +FINALITY +FINALIZATION +FINALIZATIONS +FINALIZE +FINALIZED +FINALIZER +FINALIZERS +FINALIZES +FINALIZING +FINALLY +FINALS +FINANCE +FINANCED +FINANCES +FINANCIAL +FINANCIALLY +FINANCIER +FINANCIERED +FINANCIERING +FINANCIERS +FINANCING +FINANCINGS +FINBACK +FINBACKS +FINCA +FINCAS +FINCH +FINCHES +FIND +FINDABLE +FINDER +FINDERS +FINDING +FINDINGS +FINDS +FINE +FINEABLE +FINED +FINELY +FINENESS +FINENESSES +FINER +FINERIES +FINERY +FINES +FINESPUN +FINESSE +FINESSED +FINESSES +FINESSING +FINEST +FINFISH +FINFISHES +FINFOOT +FINFOOTS +FINGER +FINGERBOARD +FINGERBOARDS +FINGERED +FINGERER +FINGERERS +FINGERHOLD +FINGERHOLDS +FINGERING +FINGERINGS +FINGERLIKE +FINGERLING +FINGERLINGS +FINGERNAIL +FINGERNAILS +FINGERPICK +FINGERPICKED +FINGERPICKING +FINGERPICKINGS +FINGERPICKS +FINGERPOST +FINGERPOSTS +FINGERPRINT +FINGERPRINTED +FINGERPRINTING +FINGERPRINTINGS +FINGERPRINTS +FINGERS +FINGERTIP +FINGERTIPS +FINIAL +FINIALED +FINIALS +FINICAL +FINICALLY +FINICALNESS +FINICALNESSES +FINICKIER +FINICKIEST +FINICKIN +FINICKINESS +FINICKINESSES +FINICKING +FINICKY +FINIKIN +FINIKING +FINING +FININGS +FINIS +FINISES +FINISH +FINISHED +FINISHER +FINISHERS +FINISHES +FINISHING +FINITE +FINITELY +FINITENESS +FINITENESSES +FINITES +FINITO +FINITUDE +FINITUDES +FINK +FINKED +FINKING +FINKS +FINLESS +FINLIKE +FINMARK +FINMARKS +FINNED +FINNICKIER +FINNICKIEST +FINNICKY +FINNIER +FINNIEST +FINNING +FINNMARK +FINNMARKS +FINNY +FINO +FINOCCHIO +FINOCCHIOS +FINOCHIO +FINOCHIOS +FINOS +FINS +FIORATURA +FIORATURAE +FIORD +FIORDS +FIORITURA +FIORITURE +FIPPLE +FIPPLES +FIQUE +FIQUES +FIR +FIRE +FIREABLE +FIREARM +FIREARMED +FIREARMS +FIREBACK +FIREBACKS +FIREBALL +FIREBALLER +FIREBALLERS +FIREBALLING +FIREBALLS +FIREBASE +FIREBASES +FIREBIRD +FIREBIRDS +FIREBOARD +FIREBOARDS +FIREBOAT +FIREBOATS +FIREBOMB +FIREBOMBED +FIREBOMBING +FIREBOMBS +FIREBOX +FIREBOXES +FIREBRAND +FIREBRANDS +FIREBRAT +FIREBRATS +FIREBREAK +FIREBREAKS +FIREBRICK +FIREBRICKS +FIREBUG +FIREBUGS +FIRECLAY +FIRECLAYS +FIRECRACKER +FIRECRACKERS +FIRED +FIREDAMP +FIREDAMPS +FIREDOG +FIREDOGS +FIREDRAKE +FIREDRAKES +FIREFANG +FIREFANGED +FIREFANGING +FIREFANGS +FIREFIGHT +FIREFIGHTER +FIREFIGHTERS +FIREFIGHTS +FIREFLIES +FIREFLOOD +FIREFLOODS +FIREFLY +FIREGUARD +FIREGUARDS +FIREHALL +FIREHALLS +FIREHOUSE +FIREHOUSES +FIRELESS +FIRELIGHT +FIRELIGHTS +FIRELIT +FIRELOCK +FIRELOCKS +FIREMAN +FIREMANIC +FIREMEN +FIREPAN +FIREPANS +FIREPINK +FIREPINKS +FIREPLACE +FIREPLACED +FIREPLACES +FIREPLUG +FIREPLUGS +FIREPOT +FIREPOTS +FIREPOWER +FIREPOWERS +FIREPROOF +FIREPROOFED +FIREPROOFING +FIREPROOFS +FIRER +FIREROOM +FIREROOMS +FIRERS +FIRES +FIRESHIP +FIRESHIPS +FIRESIDE +FIRESIDES +FIRESTONE +FIRESTONES +FIRESTORM +FIRESTORMS +FIRETHORN +FIRETHORNS +FIRETRAP +FIRETRAPS +FIRETRUCK +FIRETRUCKS +FIREWALL +FIREWALLS +FIREWATER +FIREWATERS +FIREWEED +FIREWEEDS +FIREWOOD +FIREWOODS +FIREWORK +FIREWORKS +FIREWORM +FIREWORMS +FIRING +FIRINGS +FIRKIN +FIRKINS +FIRM +FIRMAMENT +FIRMAMENTAL +FIRMAMENTS +FIRMAN +FIRMANS +FIRMED +FIRMER +FIRMERS +FIRMEST +FIRMING +FIRMLY +FIRMNESS +FIRMNESSES +FIRMS +FIRMWARE +FIRMWARES +FIRN +FIRNS +FIRRIER +FIRRIEST +FIRRY +FIRS +FIRST +FIRSTBORN +FIRSTBORNS +FIRSTFRUITS +FIRSTHAND +FIRSTLING +FIRSTLINGS +FIRSTLY +FIRSTNESS +FIRSTNESSES +FIRSTS +FIRTH +FIRTHS +FISC +FISCAL +FISCALIST +FISCALISTS +FISCALLY +FISCALS +FISCS +FISH +FISHABILITIES +FISHABILITY +FISHABLE +FISHBOLT +FISHBOLTS +FISHBONE +FISHBONES +FISHBOWL +FISHBOWLS +FISHED +FISHER +FISHERFOLK +FISHERIES +FISHERMAN +FISHERMEN +FISHERS +FISHERWOMAN +FISHERWOMEN +FISHERY +FISHES +FISHEYE +FISHEYES +FISHGIG +FISHGIGS +FISHHOOK +FISHHOOKS +FISHIER +FISHIEST +FISHILY +FISHINESS +FISHINESSES +FISHING +FISHINGS +FISHKILL +FISHKILLS +FISHLESS +FISHLIKE +FISHLINE +FISHLINES +FISHMEAL +FISHMEALS +FISHMONGER +FISHMONGERS +FISHNET +FISHNETS +FISHPLATE +FISHPLATES +FISHPOLE +FISHPOLES +FISHPOND +FISHPONDS +FISHTAIL +FISHTAILED +FISHTAILING +FISHTAILS +FISHWAY +FISHWAYS +FISHWIFE +FISHWIVES +FISHWORM +FISHWORMS +FISHY +FISSATE +FISSILE +FISSILITIES +FISSILITY +FISSION +FISSIONABILITY +FISSIONABLE +FISSIONABLES +FISSIONAL +FISSIONED +FISSIONING +FISSIONS +FISSIPAROUS +FISSIPAROUSNESS +FISSIPED +FISSIPEDS +FISSURAL +FISSURE +FISSURED +FISSURES +FISSURING +FIST +FISTED +FISTFIGHT +FISTFIGHTS +FISTFUL +FISTFULS +FISTIC +FISTICUFF +FISTICUFFS +FISTING +FISTNOTE +FISTNOTES +FISTS +FISTULA +FISTULAE +FISTULAR +FISTULAS +FISTULATE +FISTULOUS +FIT +FITCH +FITCHEE +FITCHES +FITCHET +FITCHETS +FITCHEW +FITCHEWS +FITCHY +FITFUL +FITFULLY +FITFULNESS +FITFULNESSES +FITLY +FITMENT +FITMENTS +FITNESS +FITNESSES +FITS +FITTABLE +FITTED +FITTER +FITTERS +FITTEST +FITTING +FITTINGLY +FITTINGNESS +FITTINGNESSES +FITTINGS +FIVE +FIVEFOLD +FIVEPINS +FIVER +FIVERS +FIVES +FIX +FIXABLE +FIXATE +FIXATED +FIXATES +FIXATIF +FIXATIFS +FIXATING +FIXATION +FIXATIONS +FIXATIVE +FIXATIVES +FIXED +FIXEDLY +FIXEDNESS +FIXEDNESSES +FIXER +FIXERS +FIXES +FIXING +FIXINGS +FIXIT +FIXITIES +FIXITY +FIXT +FIXTURE +FIXTURES +FIXURE +FIXURES +FIZ +FIZGIG +FIZGIGS +FIZZ +FIZZED +FIZZER +FIZZERS +FIZZES +FIZZIER +FIZZIEST +FIZZING +FIZZLE +FIZZLED +FIZZLES +FIZZLING +FIZZY +FJELD +FJELDS +FJORD +FJORDIC +FJORDS +FLAB +FLABBERGAST +FLABBERGASTED +FLABBERGASTING +FLABBERGASTS +FLABBIER +FLABBIEST +FLABBILY +FLABBINESS +FLABBINESSES +FLABBY +FLABELLA +FLABELLATE +FLABELLIFORM +FLABELLUM +FLABS +FLACCID +FLACCIDITIES +FLACCIDITY +FLACCIDLY +FLACK +FLACKED +FLACKERIES +FLACKERY +FLACKING +FLACKS +FLACON +FLACONS +FLAG +FLAGELLA +FLAGELLANT +FLAGELLANTISM +FLAGELLANTISMS +FLAGELLANTS +FLAGELLAR +FLAGELLATE +FLAGELLATED +FLAGELLATES +FLAGELLATING +FLAGELLATION +FLAGELLATIONS +FLAGELLIN +FLAGELLINS +FLAGELLUM +FLAGELLUMS +FLAGEOLET +FLAGEOLETS +FLAGGED +FLAGGER +FLAGGERS +FLAGGIER +FLAGGIEST +FLAGGING +FLAGGINGLY +FLAGGINGS +FLAGGY +FLAGITIOUS +FLAGITIOUSLY +FLAGITIOUSNESS +FLAGLESS +FLAGMAN +FLAGMEN +FLAGON +FLAGONS +FLAGPOLE +FLAGPOLES +FLAGRANCE +FLAGRANCES +FLAGRANCIES +FLAGRANCY +FLAGRANT +FLAGRANTLY +FLAGS +FLAGSHIP +FLAGSHIPS +FLAGSTAFF +FLAGSTAFFS +FLAGSTAVES +FLAGSTICK +FLAGSTICKS +FLAGSTONE +FLAGSTONES +FLAIL +FLAILED +FLAILING +FLAILS +FLAIR +FLAIRS +FLAK +FLAKE +FLAKED +FLAKER +FLAKERS +FLAKES +FLAKEY +FLAKIER +FLAKIEST +FLAKILY +FLAKINESS +FLAKINESSES +FLAKING +FLAKY +FLAM +FLAMBE +FLAMBEAU +FLAMBEAUS +FLAMBEAUX +FLAMBEE +FLAMBEED +FLAMBEING +FLAMBES +FLAMBOYANCE +FLAMBOYANCES +FLAMBOYANCIES +FLAMBOYANCY +FLAMBOYANT +FLAMBOYANTLY +FLAMBOYANTS +FLAME +FLAMED +FLAMELESS +FLAMELIKE +FLAMEN +FLAMENCO +FLAMENCOS +FLAMENS +FLAMEOUT +FLAMEOUTS +FLAMEPROOF +FLAMEPROOFED +FLAMEPROOFER +FLAMEPROOFERS +FLAMEPROOFING +FLAMEPROOFS +FLAMER +FLAMERS +FLAMES +FLAMETHROWER +FLAMETHROWERS +FLAMIER +FLAMIEST +FLAMINES +FLAMING +FLAMINGLY +FLAMINGO +FLAMINGOES +FLAMINGOS +FLAMMABILITIES +FLAMMABILITY +FLAMMABLE +FLAMMABLES +FLAMMED +FLAMMING +FLAMS +FLAMY +FLAN +FLANCARD +FLANCARDS +FLANERIE +FLANERIES +FLANES +FLANEUR +FLANEURS +FLANGE +FLANGED +FLANGER +FLANGERS +FLANGES +FLANGING +FLANK +FLANKED +FLANKEN +FLANKER +FLANKERS +FLANKING +FLANKS +FLANNEL +FLANNELED +FLANNELET +FLANNELETS +FLANNELETTE +FLANNELETTES +FLANNELING +FLANNELLED +FLANNELLING +FLANNELLY +FLANNELMOUTHED +FLANNELS +FLANS +FLAP +FLAPDOODLE +FLAPDOODLES +FLAPERON +FLAPERONS +FLAPJACK +FLAPJACKS +FLAPLESS +FLAPPABLE +FLAPPED +FLAPPER +FLAPPERS +FLAPPIER +FLAPPIEST +FLAPPING +FLAPPY +FLAPS +FLARE +FLAREBACK +FLAREBACKS +FLARED +FLARES +FLAREUP +FLAREUPS +FLARING +FLARINGLY +FLASH +FLASHBACK +FLASHBACKS +FLASHBOARD +FLASHBOARDS +FLASHBULB +FLASHBULBS +FLASHCARD +FLASHCARDS +FLASHCUBE +FLASHCUBES +FLASHED +FLASHER +FLASHERS +FLASHES +FLASHGUN +FLASHGUNS +FLASHIER +FLASHIEST +FLASHILY +FLASHINESS +FLASHINESSES +FLASHING +FLASHINGS +FLASHLAMP +FLASHLAMPS +FLASHLIGHT +FLASHLIGHTS +FLASHOVER +FLASHOVERS +FLASHTUBE +FLASHTUBES +FLASHY +FLASK +FLASKET +FLASKETS +FLASKS +FLAT +FLATBED +FLATBEDS +FLATBOAT +FLATBOATS +FLATBREAD +FLATBREADS +FLATCAP +FLATCAPS +FLATCAR +FLATCARS +FLATFEET +FLATFISH +FLATFISHES +FLATFOOT +FLATFOOTED +FLATFOOTING +FLATFOOTS +FLATHEAD +FLATHEADS +FLATIRON +FLATIRONS +FLATLAND +FLATLANDER +FLATLANDERS +FLATLANDS +FLATLET +FLATLETS +FLATLINE +FLATLINED +FLATLINER +FLATLINERS +FLATLINES +FLATLING +FLATLINGS +FLATLINING +FLATLONG +FLATLY +FLATMATE +FLATMATES +FLATNESS +FLATNESSES +FLATS +FLATTED +FLATTEN +FLATTENED +FLATTENER +FLATTENERS +FLATTENING +FLATTENS +FLATTER +FLATTERED +FLATTERER +FLATTERERS +FLATTERIES +FLATTERING +FLATTERINGLY +FLATTERS +FLATTERY +FLATTEST +FLATTING +FLATTISH +FLATTOP +FLATTOPS +FLATULENCE +FLATULENCES +FLATULENCIES +FLATULENCY +FLATULENT +FLATULENTLY +FLATUS +FLATUSES +FLATWARE +FLATWARES +FLATWASH +FLATWASHES +FLATWAYS +FLATWISE +FLATWORK +FLATWORKS +FLATWORM +FLATWORMS +FLAUNT +FLAUNTED +FLAUNTER +FLAUNTERS +FLAUNTIER +FLAUNTIEST +FLAUNTILY +FLAUNTING +FLAUNTINGLY +FLAUNTS +FLAUNTY +FLAUTA +FLAUTAS +FLAUTIST +FLAUTISTS +FLAVANOL +FLAVANOLS +FLAVANONE +FLAVANONES +FLAVIN +FLAVINE +FLAVINES +FLAVINS +FLAVONE +FLAVONES +FLAVONOID +FLAVONOIDS +FLAVONOL +FLAVONOLS +FLAVOPROTEIN +FLAVOPROTEINS +FLAVOR +FLAVORED +FLAVORER +FLAVORERS +FLAVORFUL +FLAVORFULLY +FLAVORING +FLAVORINGS +FLAVORIST +FLAVORISTS +FLAVORLESS +FLAVOROUS +FLAVORS +FLAVORSOME +FLAVORY +FLAVOUR +FLAVOURED +FLAVOURING +FLAVOURS +FLAVOURY +FLAW +FLAWED +FLAWIER +FLAWIEST +FLAWING +FLAWLESS +FLAWLESSLY +FLAWLESSNESS +FLAWLESSNESSES +FLAWS +FLAWY +FLAX +FLAXEN +FLAXES +FLAXIER +FLAXIEST +FLAXSEED +FLAXSEEDS +FLAXY +FLAY +FLAYED +FLAYER +FLAYERS +FLAYING +FLAYS +FLEA +FLEABAG +FLEABAGS +FLEABANE +FLEABANES +FLEABITE +FLEABITES +FLEAHOPPER +FLEAHOPPERS +FLEAM +FLEAMS +FLEAPIT +FLEAPITS +FLEAS +FLEAWORT +FLEAWORTS +FLECHE +FLECHES +FLECHETTE +FLECHETTES +FLECK +FLECKED +FLECKING +FLECKLESS +FLECKS +FLECKY +FLECTION +FLECTIONS +FLED +FLEDGE +FLEDGED +FLEDGES +FLEDGIER +FLEDGIEST +FLEDGING +FLEDGLING +FLEDGLINGS +FLEDGY +FLEE +FLEECE +FLEECED +FLEECER +FLEECERS +FLEECES +FLEECH +FLEECHED +FLEECHES +FLEECHING +FLEECIER +FLEECIEST +FLEECILY +FLEECING +FLEECY +FLEEING +FLEER +FLEERED +FLEERING +FLEERINGLY +FLEERS +FLEES +FLEET +FLEETED +FLEETER +FLEETEST +FLEETING +FLEETINGLY +FLEETINGNESS +FLEETINGNESSES +FLEETLY +FLEETNESS +FLEETNESSES +FLEETS +FLEHMEN +FLEHMENED +FLEHMENING +FLEHMENS +FLEISHIG +FLEMISH +FLEMISHED +FLEMISHES +FLEMISHING +FLENCH +FLENCHED +FLENCHES +FLENCHING +FLENSE +FLENSED +FLENSER +FLENSERS +FLENSES +FLENSING +FLESH +FLESHED +FLESHER +FLESHERS +FLESHES +FLESHIER +FLESHIEST +FLESHILY +FLESHINESS +FLESHINESSES +FLESHING +FLESHINGS +FLESHLESS +FLESHLIER +FLESHLIEST +FLESHLY +FLESHMENT +FLESHMENTS +FLESHPOT +FLESHPOTS +FLESHY +FLETCH +FLETCHED +FLETCHER +FLETCHERS +FLETCHES +FLETCHING +FLETCHINGS +FLEURON +FLEURONS +FLEURY +FLEW +FLEWS +FLEX +FLEXAGON +FLEXAGONS +FLEXED +FLEXES +FLEXIBILITIES +FLEXIBILITY +FLEXIBLE +FLEXIBLY +FLEXILE +FLEXING +FLEXION +FLEXIONAL +FLEXIONS +FLEXITIME +FLEXITIMES +FLEXOGRAPHIC +FLEXOGRAPHIES +FLEXOGRAPHY +FLEXOR +FLEXORS +FLEXTIME +FLEXTIMER +FLEXTIMERS +FLEXTIMES +FLEXUOSE +FLEXUOUS +FLEXURAL +FLEXURE +FLEXURES +FLEY +FLEYED +FLEYING +FLEYS +FLIBBERTIGIBBET +FLIC +FLICHTER +FLICHTERED +FLICHTERING +FLICHTERS +FLICK +FLICKABLE +FLICKED +FLICKER +FLICKERED +FLICKERING +FLICKERINGLY +FLICKERS +FLICKERY +FLICKING +FLICKS +FLICS +FLIED +FLIER +FLIERS +FLIES +FLIEST +FLIGHT +FLIGHTED +FLIGHTIER +FLIGHTIEST +FLIGHTILY +FLIGHTINESS +FLIGHTINESSES +FLIGHTING +FLIGHTLESS +FLIGHTS +FLIGHTY +FLIMFLAM +FLIMFLAMMED +FLIMFLAMMER +FLIMFLAMMERIES +FLIMFLAMMERS +FLIMFLAMMERY +FLIMFLAMMING +FLIMFLAMS +FLIMSIER +FLIMSIES +FLIMSIEST +FLIMSILY +FLIMSINESS +FLIMSINESSES +FLIMSY +FLINCH +FLINCHED +FLINCHER +FLINCHERS +FLINCHES +FLINCHING +FLINDER +FLINDERS +FLING +FLINGER +FLINGERS +FLINGING +FLINGS +FLINKITE +FLINKITES +FLINT +FLINTED +FLINTHEAD +FLINTHEADS +FLINTIER +FLINTIEST +FLINTILY +FLINTINESS +FLINTINESSES +FLINTING +FLINTLIKE +FLINTLOCK +FLINTLOCKS +FLINTS +FLINTY +FLIP +FLIPBOOK +FLIPBOOKS +FLIPFLOP +FLIPFLOPPED +FLIPFLOPPING +FLIPFLOPS +FLIPPANCIES +FLIPPANCY +FLIPPANT +FLIPPANTLY +FLIPPED +FLIPPER +FLIPPERS +FLIPPEST +FLIPPING +FLIPPY +FLIPS +FLIR +FLIRS +FLIRT +FLIRTATION +FLIRTATIONS +FLIRTATIOUS +FLIRTATIOUSLY +FLIRTATIOUSNESS +FLIRTED +FLIRTER +FLIRTERS +FLIRTIER +FLIRTIEST +FLIRTING +FLIRTS +FLIRTY +FLIT +FLITCH +FLITCHED +FLITCHES +FLITCHING +FLITE +FLITED +FLITES +FLITING +FLITS +FLITTED +FLITTER +FLITTERED +FLITTERING +FLITTERS +FLITTING +FLIVVER +FLIVVERS +FLOAT +FLOATABLE +FLOATAGE +FLOATAGES +FLOATATION +FLOATATIONS +FLOATED +FLOATEL +FLOATELS +FLOATER +FLOATERS +FLOATIER +FLOATIEST +FLOATING +FLOATPLANE +FLOATPLANES +FLOATS +FLOATY +FLOC +FLOCCED +FLOCCI +FLOCCING +FLOCCOSE +FLOCCULANT +FLOCCULANTS +FLOCCULATE +FLOCCULATED +FLOCCULATES +FLOCCULATING +FLOCCULATION +FLOCCULATIONS +FLOCCULATOR +FLOCCULATORS +FLOCCULE +FLOCCULENT +FLOCCULES +FLOCCULI +FLOCCULUS +FLOCCUS +FLOCK +FLOCKED +FLOCKIER +FLOCKIEST +FLOCKING +FLOCKINGS +FLOCKLESS +FLOCKS +FLOCKY +FLOCS +FLOE +FLOES +FLOG +FLOGGABLE +FLOGGED +FLOGGER +FLOGGERS +FLOGGING +FLOGGINGS +FLOGS +FLOKATI +FLOKATIS +FLONG +FLONGS +FLOOD +FLOODABLE +FLOODED +FLOODER +FLOODERS +FLOODGATE +FLOODGATES +FLOODING +FLOODLIGHT +FLOODLIGHTED +FLOODLIGHTING +FLOODLIGHTS +FLOODLIT +FLOODPLAIN +FLOODPLAINS +FLOODS +FLOODTIDE +FLOODTIDES +FLOODWALL +FLOODWALLS +FLOODWATER +FLOODWATERS +FLOODWAY +FLOODWAYS +FLOOEY +FLOOIE +FLOOR +FLOORAGE +FLOORAGES +FLOORBOARD +FLOORBOARDS +FLOORCLOTH +FLOORCLOTHS +FLOORED +FLOORER +FLOORERS +FLOORING +FLOORINGS +FLOORLESS +FLOORS +FLOORSHOW +FLOORSHOWS +FLOORWALKER +FLOORWALKERS +FLOOSIE +FLOOSIES +FLOOSY +FLOOZIE +FLOOZIES +FLOOZY +FLOP +FLOPHOUSE +FLOPHOUSES +FLOPOVER +FLOPOVERS +FLOPPED +FLOPPER +FLOPPERS +FLOPPIER +FLOPPIES +FLOPPIEST +FLOPPILY +FLOPPINESS +FLOPPINESSES +FLOPPING +FLOPPY +FLOPS +FLORA +FLORAE +FLORAL +FLORALLY +FLORALS +FLORAS +FLOREATED +FLORENCE +FLORENCES +FLORESCENCE +FLORESCENCES +FLORESCENT +FLORET +FLORETS +FLORIATED +FLORIATION +FLORIATIONS +FLORIBUNDA +FLORIBUNDAS +FLORICANE +FLORICANES +FLORICULTURAL +FLORICULTURE +FLORICULTURES +FLORICULTURIST +FLORICULTURISTS +FLORID +FLORIDITIES +FLORIDITY +FLORIDLY +FLORIDNESS +FLORIDNESSES +FLORIFEROUS +FLORIFEROUSNESS +FLORIGEN +FLORIGENIC +FLORIGENS +FLORILEGIA +FLORILEGIUM +FLORIN +FLORINS +FLORIST +FLORISTIC +FLORISTICALLY +FLORISTRIES +FLORISTRY +FLORISTS +FLORUIT +FLORUITS +FLOSS +FLOSSED +FLOSSER +FLOSSERS +FLOSSES +FLOSSIE +FLOSSIER +FLOSSIES +FLOSSIEST +FLOSSILY +FLOSSING +FLOSSY +FLOTA +FLOTAGE +FLOTAGES +FLOTAS +FLOTATION +FLOTATIONS +FLOTILLA +FLOTILLAS +FLOTSAM +FLOTSAMS +FLOUNCE +FLOUNCED +FLOUNCES +FLOUNCIER +FLOUNCIEST +FLOUNCING +FLOUNCINGS +FLOUNCY +FLOUNDER +FLOUNDERED +FLOUNDERING +FLOUNDERS +FLOUR +FLOURED +FLOURING +FLOURISH +FLOURISHED +FLOURISHER +FLOURISHERS +FLOURISHES +FLOURISHING +FLOURISHINGLY +FLOURLESS +FLOURS +FLOURY +FLOUT +FLOUTED +FLOUTER +FLOUTERS +FLOUTING +FLOUTS +FLOW +FLOWAGE +FLOWAGES +FLOWCHART +FLOWCHARTING +FLOWCHARTINGS +FLOWCHARTS +FLOWED +FLOWER +FLOWERAGE +FLOWERAGES +FLOWERED +FLOWERER +FLOWERERS +FLOWERET +FLOWERETS +FLOWERETTE +FLOWERETTES +FLOWERFUL +FLOWERIER +FLOWERIEST +FLOWERILY +FLOWERINESS +FLOWERINESSES +FLOWERING +FLOWERLESS +FLOWERLIKE +FLOWERPOT +FLOWERPOTS +FLOWERS +FLOWERY +FLOWING +FLOWINGLY +FLOWMETER +FLOWMETERS +FLOWN +FLOWS +FLOWSTONE +FLOWSTONES +FLU +FLUB +FLUBBED +FLUBBER +FLUBBERS +FLUBBING +FLUBDUB +FLUBDUBS +FLUBS +FLUCTUANT +FLUCTUATE +FLUCTUATED +FLUCTUATES +FLUCTUATING +FLUCTUATION +FLUCTUATIONAL +FLUCTUATIONS +FLUE +FLUED +FLUEGELHORN +FLUEGELHORNS +FLUENCIES +FLUENCY +FLUENT +FLUENTLY +FLUERIC +FLUERICS +FLUES +FLUFF +FLUFFED +FLUFFER +FLUFFERS +FLUFFIER +FLUFFIEST +FLUFFILY +FLUFFINESS +FLUFFINESSES +FLUFFING +FLUFFS +FLUFFY +FLUGELHORN +FLUGELHORNIST +FLUGELHORNISTS +FLUGELHORNS +FLUID +FLUIDAL +FLUIDALLY +FLUIDEXTRACT +FLUIDEXTRACTS +FLUIDIC +FLUIDICS +FLUIDISE +FLUIDISED +FLUIDISES +FLUIDISING +FLUIDITIES +FLUIDITY +FLUIDIZATION +FLUIDIZATIONS +FLUIDIZE +FLUIDIZED +FLUIDIZER +FLUIDIZERS +FLUIDIZES +FLUIDIZING +FLUIDLIKE +FLUIDLY +FLUIDNESS +FLUIDNESSES +FLUIDRAM +FLUIDRAMS +FLUIDS +FLUISH +FLUKE +FLUKED +FLUKES +FLUKEY +FLUKIER +FLUKIEST +FLUKILY +FLUKINESS +FLUKINESSES +FLUKING +FLUKY +FLUME +FLUMED +FLUMES +FLUMING +FLUMMERIES +FLUMMERY +FLUMMOX +FLUMMOXED +FLUMMOXES +FLUMMOXING +FLUMP +FLUMPED +FLUMPING +FLUMPS +FLUNG +FLUNK +FLUNKED +FLUNKER +FLUNKERS +FLUNKEY +FLUNKEYS +FLUNKIE +FLUNKIES +FLUNKING +FLUNKS +FLUNKY +FLUNKYISM +FLUNKYISMS +FLUOR +FLUORENE +FLUORENES +FLUORESCE +FLUORESCED +FLUORESCEIN +FLUORESCEINS +FLUORESCENCE +FLUORESCENCES +FLUORESCENT +FLUORESCENTS +FLUORESCER +FLUORESCERS +FLUORESCES +FLUORESCING +FLUORIC +FLUORID +FLUORIDATE +FLUORIDATED +FLUORIDATES +FLUORIDATING +FLUORIDATION +FLUORIDATIONS +FLUORIDE +FLUORIDES +FLUORIDS +FLUORIMETER +FLUORIMETERS +FLUORIMETRIC +FLUORIMETRIES +FLUORIMETRY +FLUORIN +FLUORINATE +FLUORINATED +FLUORINATES +FLUORINATING +FLUORINATION +FLUORINATIONS +FLUORINE +FLUORINES +FLUORINS +FLUORITE +FLUORITES +FLUOROCARBON +FLUOROCARBONS +FLUOROCHROME +FLUOROCHROMES +FLUOROGRAPHIC +FLUOROGRAPHIES +FLUOROGRAPHY +FLUOROMETER +FLUOROMETERS +FLUOROMETRIC +FLUOROMETRIES +FLUOROMETRY +FLUOROSCOPE +FLUOROSCOPED +FLUOROSCOPES +FLUOROSCOPIC +FLUOROSCOPIES +FLUOROSCOPING +FLUOROSCOPIST +FLUOROSCOPISTS +FLUOROSCOPY +FLUOROSES +FLUOROSIS +FLUOROTIC +FLUOROURACIL +FLUOROURACILS +FLUORS +FLUORSPAR +FLUORSPARS +FLUOXETINE +FLUOXETINES +FLUPHENAZINE +FLUPHENAZINES +FLURRIED +FLURRIES +FLURRY +FLURRYING +FLUS +FLUSH +FLUSHABLE +FLUSHED +FLUSHER +FLUSHERS +FLUSHES +FLUSHEST +FLUSHING +FLUSHNESS +FLUSHNESSES +FLUSTER +FLUSTERED +FLUSTEREDLY +FLUSTERING +FLUSTERS +FLUTE +FLUTED +FLUTELIKE +FLUTER +FLUTERS +FLUTES +FLUTEY +FLUTIER +FLUTIEST +FLUTING +FLUTINGS +FLUTIST +FLUTISTS +FLUTTER +FLUTTERBOARD +FLUTTERBOARDS +FLUTTERED +FLUTTERER +FLUTTERERS +FLUTTERING +FLUTTERS +FLUTTERY +FLUTY +FLUVIAL +FLUVIATILE +FLUX +FLUXED +FLUXES +FLUXGATE +FLUXGATES +FLUXING +FLUXION +FLUXIONAL +FLUXIONS +FLUYT +FLUYTS +FLY +FLYABLE +FLYAWAY +FLYAWAYS +FLYBELT +FLYBELTS +FLYBLEW +FLYBLOW +FLYBLOWING +FLYBLOWN +FLYBLOWS +FLYBOAT +FLYBOATS +FLYBOY +FLYBOYS +FLYBRIDGE +FLYBRIDGES +FLYBY +FLYBYS +FLYCATCHER +FLYCATCHERS +FLYER +FLYERS +FLYING +FLYINGS +FLYLEAF +FLYLEAVES +FLYLESS +FLYMAN +FLYMEN +FLYOFF +FLYOFFS +FLYOVER +FLYOVERS +FLYPAPER +FLYPAPERS +FLYPAST +FLYPASTS +FLYRODDER +FLYRODDERS +FLYSCH +FLYSCHES +FLYSHEET +FLYSHEETS +FLYSPECK +FLYSPECKED +FLYSPECKING +FLYSPECKS +FLYSWATTER +FLYSWATTERS +FLYTE +FLYTED +FLYTES +FLYTIER +FLYTIERS +FLYTING +FLYTINGS +FLYTRAP +FLYTRAPS +FLYWAY +FLYWAYS +FLYWEIGHT +FLYWEIGHTS +FLYWHEEL +FLYWHEELS +FOAL +FOALED +FOALING +FOALS +FOAM +FOAMABLE +FOAMED +FOAMER +FOAMERS +FOAMFLOWER +FOAMFLOWERS +FOAMIER +FOAMIEST +FOAMILY +FOAMINESS +FOAMINESSES +FOAMING +FOAMLESS +FOAMLIKE +FOAMS +FOAMY +FOB +FOBBED +FOBBING +FOBS +FOCACCIA +FOCACCIAS +FOCAL +FOCALISE +FOCALISED +FOCALISES +FOCALISING +FOCALIZATION +FOCALIZATIONS +FOCALIZE +FOCALIZED +FOCALIZES +FOCALIZING +FOCALLY +FOCI +FOCUS +FOCUSABLE +FOCUSED +FOCUSER +FOCUSERS +FOCUSES +FOCUSING +FOCUSLESS +FOCUSSED +FOCUSSES +FOCUSSING +FODDER +FODDERED +FODDERING +FODDERS +FODGEL +FOE +FOEHN +FOEHNS +FOEMAN +FOEMEN +FOES +FOETAL +FOETID +FOETOR +FOETORS +FOETUS +FOETUSES +FOG +FOGBOUND +FOGBOW +FOGBOWS +FOGDOG +FOGDOGS +FOGEY +FOGEYISH +FOGEYISM +FOGEYISMS +FOGEYS +FOGFRUIT +FOGFRUITS +FOGGAGE +FOGGAGES +FOGGED +FOGGER +FOGGERS +FOGGIER +FOGGIEST +FOGGILY +FOGGINESS +FOGGINESSES +FOGGING +FOGGY +FOGHORN +FOGHORNS +FOGIE +FOGIES +FOGLESS +FOGS +FOGY +FOGYISH +FOGYISM +FOGYISMS +FOH +FOHN +FOHNS +FOIBLE +FOIBLES +FOIL +FOILABLE +FOILED +FOILING +FOILS +FOILSMAN +FOILSMEN +FOIN +FOINED +FOINING +FOINS +FOISON +FOISONS +FOIST +FOISTED +FOISTING +FOISTS +FOLACIN +FOLACINS +FOLATE +FOLATES +FOLD +FOLDABLE +FOLDAWAY +FOLDAWAYS +FOLDBOAT +FOLDBOATS +FOLDED +FOLDER +FOLDEROL +FOLDEROLS +FOLDERS +FOLDING +FOLDOUT +FOLDOUTS +FOLDS +FOLDUP +FOLDUPS +FOLEY +FOLEYS +FOLIA +FOLIACEOUS +FOLIAGE +FOLIAGED +FOLIAGES +FOLIAR +FOLIATE +FOLIATED +FOLIATES +FOLIATING +FOLIATION +FOLIATIONS +FOLIC +FOLIO +FOLIOED +FOLIOING +FOLIOLATE +FOLIOS +FOLIOSE +FOLIOUS +FOLIUM +FOLIUMS +FOLK +FOLKIE +FOLKIER +FOLKIES +FOLKIEST +FOLKISH +FOLKISHNESS +FOLKISHNESSES +FOLKLIFE +FOLKLIKE +FOLKLIVES +FOLKLORE +FOLKLORES +FOLKLORIC +FOLKLORISH +FOLKLORIST +FOLKLORISTIC +FOLKLORISTS +FOLKMOOT +FOLKMOOTS +FOLKMOT +FOLKMOTE +FOLKMOTES +FOLKMOTS +FOLKS +FOLKSIER +FOLKSIEST +FOLKSILY +FOLKSINESS +FOLKSINESSES +FOLKSINGER +FOLKSINGERS +FOLKSINGING +FOLKSINGINGS +FOLKSONG +FOLKSONGS +FOLKSY +FOLKTALE +FOLKTALES +FOLKWAY +FOLKWAYS +FOLKY +FOLLES +FOLLICLE +FOLLICLES +FOLLICULAR +FOLLICULITIS +FOLLICULITISES +FOLLIES +FOLLIS +FOLLOW +FOLLOWED +FOLLOWER +FOLLOWERS +FOLLOWERSHIP +FOLLOWERSHIPS +FOLLOWING +FOLLOWINGS +FOLLOWS +FOLLOWUP +FOLLOWUPS +FOLLY +FOMENT +FOMENTATION +FOMENTATIONS +FOMENTED +FOMENTER +FOMENTERS +FOMENTING +FOMENTS +FOMITE +FOMITES +FON +FOND +FONDANT +FONDANTS +FONDED +FONDER +FONDEST +FONDING +FONDLE +FONDLED +FONDLER +FONDLERS +FONDLES +FONDLING +FONDLINGS +FONDLY +FONDNESS +FONDNESSES +FONDS +FONDU +FONDUE +FONDUED +FONDUEING +FONDUES +FONDUING +FONDUS +FONS +FONT +FONTAL +FONTANEL +FONTANELLE +FONTANELLES +FONTANELS +FONTINA +FONTINAS +FONTS +FOOD +FOODIE +FOODIES +FOODLESS +FOODLESSNESS +FOODLESSNESSES +FOODS +FOODSTUFF +FOODSTUFFS +FOODWAYS +FOOFARAW +FOOFARAWS +FOOL +FOOLED +FOOLERIES +FOOLERY +FOOLFISH +FOOLFISHES +FOOLHARDIER +FOOLHARDIEST +FOOLHARDILY +FOOLHARDINESS +FOOLHARDINESSES +FOOLHARDY +FOOLING +FOOLISH +FOOLISHER +FOOLISHEST +FOOLISHLY +FOOLISHNESS +FOOLISHNESSES +FOOLPROOF +FOOLS +FOOLSCAP +FOOLSCAPS +FOOSBALL +FOOSBALLS +FOOT +FOOTAGE +FOOTAGES +FOOTBAG +FOOTBAGS +FOOTBALL +FOOTBALLER +FOOTBALLERS +FOOTBALLS +FOOTBATH +FOOTBATHS +FOOTBOARD +FOOTBOARDS +FOOTBOY +FOOTBOYS +FOOTBRIDGE +FOOTBRIDGES +FOOTCLOTH +FOOTCLOTHS +FOOTDRAGGER +FOOTDRAGGERS +FOOTED +FOOTER +FOOTERS +FOOTFALL +FOOTFALLS +FOOTFAULT +FOOTFAULTED +FOOTFAULTING +FOOTFAULTS +FOOTGEAR +FOOTGEARS +FOOTHILL +FOOTHILLS +FOOTHOLD +FOOTHOLDS +FOOTIE +FOOTIER +FOOTIES +FOOTIEST +FOOTING +FOOTINGS +FOOTLAMBERT +FOOTLAMBERTS +FOOTLE +FOOTLED +FOOTLER +FOOTLERS +FOOTLES +FOOTLESS +FOOTLESSLY +FOOTLESSNESS +FOOTLESSNESSES +FOOTLIGHT +FOOTLIGHTS +FOOTLIKE +FOOTLING +FOOTLOCKER +FOOTLOCKERS +FOOTLOOSE +FOOTMAN +FOOTMARK +FOOTMARKS +FOOTMEN +FOOTNOTE +FOOTNOTED +FOOTNOTES +FOOTNOTING +FOOTPACE +FOOTPACES +FOOTPAD +FOOTPADS +FOOTPATH +FOOTPATHS +FOOTPRINT +FOOTPRINTS +FOOTRACE +FOOTRACES +FOOTREST +FOOTRESTS +FOOTROPE +FOOTROPES +FOOTS +FOOTSIE +FOOTSIES +FOOTSLOG +FOOTSLOGGED +FOOTSLOGGER +FOOTSLOGGERS +FOOTSLOGGING +FOOTSLOGS +FOOTSORE +FOOTSORENESS +FOOTSORENESSES +FOOTSTALK +FOOTSTALKS +FOOTSTALL +FOOTSTALLS +FOOTSTEP +FOOTSTEPS +FOOTSTOCK +FOOTSTOCKS +FOOTSTONE +FOOTSTONES +FOOTSTOOL +FOOTSTOOLS +FOOTSY +FOOTWALL +FOOTWALLS +FOOTWAY +FOOTWAYS +FOOTWEAR +FOOTWORK +FOOTWORKS +FOOTWORN +FOOTY +FOOZLE +FOOZLED +FOOZLER +FOOZLERS +FOOZLES +FOOZLING +FOP +FOPPED +FOPPERIES +FOPPERY +FOPPING +FOPPISH +FOPPISHLY +FOPPISHNESS +FOPPISHNESSES +FOPS +FOR +FORA +FORAGE +FORAGED +FORAGER +FORAGERS +FORAGES +FORAGING +FORAM +FORAMEN +FORAMENS +FORAMINA +FORAMINAL +FORAMINIFER +FORAMINIFERA +FORAMINIFERAL +FORAMINIFERAN +FORAMINIFERANS +FORAMINIFERS +FORAMINOUS +FORAMS +FORASMUCH +FORAY +FORAYED +FORAYER +FORAYERS +FORAYING +FORAYS +FORB +FORBAD +FORBADE +FORBARE +FORBEAR +FORBEARANCE +FORBEARANCES +FORBEARER +FORBEARERS +FORBEARING +FORBEARS +FORBID +FORBIDAL +FORBIDALS +FORBIDDANCE +FORBIDDANCES +FORBIDDEN +FORBIDDER +FORBIDDERS +FORBIDDING +FORBIDDINGLY +FORBIDS +FORBODE +FORBODED +FORBODES +FORBODING +FORBORE +FORBORNE +FORBS +FORBY +FORBYE +FORCE +FORCEABLE +FORCED +FORCEDLY +FORCEFUL +FORCEFULLY +FORCEFULNESS +FORCEFULNESSES +FORCELESS +FORCEMEAT +FORCEMEATS +FORCEPS +FORCEPSLIKE +FORCER +FORCERS +FORCES +FORCIBLE +FORCIBLENESS +FORCIBLENESSES +FORCIBLY +FORCING +FORCIPES +FORD +FORDABLE +FORDED +FORDID +FORDING +FORDLESS +FORDO +FORDOES +FORDOING +FORDONE +FORDS +FORE +FOREARM +FOREARMED +FOREARMING +FOREARMS +FOREBAY +FOREBAYS +FOREBEAR +FOREBEARS +FOREBODE +FOREBODED +FOREBODER +FOREBODERS +FOREBODES +FOREBODIES +FOREBODING +FOREBODINGLY +FOREBODINGNESS +FOREBODINGS +FOREBODY +FOREBOOM +FOREBOOMS +FOREBRAIN +FOREBRAINS +FOREBY +FOREBYE +FORECADDIE +FORECADDIES +FORECAST +FORECASTABLE +FORECASTED +FORECASTER +FORECASTERS +FORECASTING +FORECASTLE +FORECASTLES +FORECASTS +FORECHECK +FORECHECKED +FORECHECKER +FORECHECKERS +FORECHECKING +FORECHECKS +FORECLOSE +FORECLOSED +FORECLOSES +FORECLOSING +FORECLOSURE +FORECLOSURES +FORECOURT +FORECOURTS +FOREDATE +FOREDATED +FOREDATES +FOREDATING +FOREDECK +FOREDECKS +FOREDID +FOREDO +FOREDOES +FOREDOING +FOREDONE +FOREDOOM +FOREDOOMED +FOREDOOMING +FOREDOOMS +FOREFACE +FOREFACES +FOREFATHER +FOREFATHERS +FOREFEEL +FOREFEELING +FOREFEELS +FOREFEET +FOREFELT +FOREFEND +FOREFENDED +FOREFENDING +FOREFENDS +FOREFINGER +FOREFINGERS +FOREFOOT +FOREFRONT +FOREFRONTS +FOREGATHER +FOREGATHERED +FOREGATHERING +FOREGATHERS +FOREGO +FOREGOER +FOREGOERS +FOREGOES +FOREGOING +FOREGONE +FOREGROUND +FOREGROUNDED +FOREGROUNDING +FOREGROUNDS +FOREGUT +FOREGUTS +FOREHAND +FOREHANDED +FOREHANDEDLY +FOREHANDEDNESS +FOREHANDS +FOREHEAD +FOREHEADS +FOREHOOF +FOREHOOFS +FOREHOOVES +FOREIGN +FOREIGNER +FOREIGNERS +FOREIGNISM +FOREIGNISMS +FOREIGNNESS +FOREIGNNESSES +FOREJUDGE +FOREJUDGED +FOREJUDGES +FOREJUDGING +FOREKNEW +FOREKNOW +FOREKNOWING +FOREKNOWLEDGE +FOREKNOWLEDGES +FOREKNOWN +FOREKNOWS +FORELADIES +FORELADY +FORELAND +FORELANDS +FORELEG +FORELEGS +FORELIMB +FORELIMBS +FORELOCK +FORELOCKED +FORELOCKING +FORELOCKS +FOREMAN +FOREMANSHIP +FOREMANSHIPS +FOREMAST +FOREMASTS +FOREMEN +FOREMILK +FOREMILKS +FOREMOST +FOREMOTHER +FOREMOTHERS +FORENAME +FORENAMED +FORENAMES +FORENOON +FORENOONS +FORENSIC +FORENSICALLY +FORENSICS +FOREORDAIN +FOREORDAINED +FOREORDAINING +FOREORDAINS +FOREORDINATION +FOREORDINATIONS +FOREPART +FOREPARTS +FOREPASSED +FOREPAST +FOREPAW +FOREPAWS +FOREPEAK +FOREPEAKS +FOREPLAY +FOREPLAYS +FOREQUARTER +FOREQUARTERS +FORERAN +FORERANK +FORERANKS +FOREREACH +FOREREACHED +FOREREACHES +FOREREACHING +FORERUN +FORERUNNER +FORERUNNERS +FORERUNNING +FORERUNS +FORES +FORESAID +FORESAIL +FORESAILS +FORESAW +FORESEE +FORESEEABILITY +FORESEEABLE +FORESEEING +FORESEEN +FORESEER +FORESEERS +FORESEES +FORESHADOW +FORESHADOWED +FORESHADOWER +FORESHADOWERS +FORESHADOWING +FORESHADOWS +FORESHANK +FORESHANKS +FORESHEET +FORESHEETS +FORESHOCK +FORESHOCKS +FORESHORE +FORESHORES +FORESHORTEN +FORESHORTENED +FORESHORTENING +FORESHORTENS +FORESHOW +FORESHOWED +FORESHOWING +FORESHOWN +FORESHOWS +FORESIDE +FORESIDES +FORESIGHT +FORESIGHTED +FORESIGHTEDLY +FORESIGHTEDNESS +FORESIGHTFUL +FORESIGHTS +FORESKIN +FORESKINS +FORESPAKE +FORESPEAK +FORESPEAKING +FORESPEAKS +FORESPOKE +FORESPOKEN +FOREST +FORESTAGE +FORESTAGES +FORESTAL +FORESTALL +FORESTALLED +FORESTALLER +FORESTALLERS +FORESTALLING +FORESTALLMENT +FORESTALLMENTS +FORESTALLS +FORESTATION +FORESTATIONS +FORESTAY +FORESTAYS +FORESTAYSAIL +FORESTAYSAILS +FORESTED +FORESTER +FORESTERS +FORESTIAL +FORESTING +FORESTLAND +FORESTLANDS +FORESTRIES +FORESTRY +FORESTS +FORESWEAR +FORESWEARING +FORESWEARS +FORESWORE +FORESWORN +FORETASTE +FORETASTED +FORETASTES +FORETASTING +FORETEETH +FORETELL +FORETELLER +FORETELLERS +FORETELLING +FORETELLS +FORETHOUGHT +FORETHOUGHTFUL +FORETHOUGHTS +FORETIME +FORETIMES +FORETOKEN +FORETOKENED +FORETOKENING +FORETOKENS +FORETOLD +FORETOOTH +FORETOP +FORETOPMAN +FORETOPMEN +FORETOPS +FOREVER +FOREVERMORE +FOREVERNESS +FOREVERNESSES +FOREVERS +FOREWARN +FOREWARNED +FOREWARNING +FOREWARNS +FOREWENT +FOREWING +FOREWINGS +FOREWOMAN +FOREWOMEN +FOREWORD +FOREWORDS +FOREWORN +FOREYARD +FOREYARDS +FORFEIT +FORFEITABLE +FORFEITED +FORFEITER +FORFEITERS +FORFEITING +FORFEITS +FORFEITURE +FORFEITURES +FORFEND +FORFENDED +FORFENDING +FORFENDS +FORFICATE +FORGAT +FORGATHER +FORGATHERED +FORGATHERING +FORGATHERS +FORGAVE +FORGE +FORGEABILITIES +FORGEABILITY +FORGEABLE +FORGED +FORGER +FORGERIES +FORGERS +FORGERY +FORGES +FORGET +FORGETFUL +FORGETFULLY +FORGETFULNESS +FORGETFULNESSES +FORGETIVE +FORGETS +FORGETTABLE +FORGETTER +FORGETTERS +FORGETTING +FORGING +FORGINGS +FORGIVABLE +FORGIVABLY +FORGIVE +FORGIVEN +FORGIVENESS +FORGIVENESSES +FORGIVER +FORGIVERS +FORGIVES +FORGIVING +FORGIVINGLY +FORGIVINGNESS +FORGIVINGNESSES +FORGO +FORGOER +FORGOERS +FORGOES +FORGOING +FORGONE +FORGOT +FORGOTTEN +FORINT +FORINTS +FORJUDGE +FORJUDGED +FORJUDGES +FORJUDGING +FORK +FORKBALL +FORKBALLS +FORKED +FORKEDLY +FORKER +FORKERS +FORKFUL +FORKFULS +FORKIER +FORKIEST +FORKINESS +FORKINESSES +FORKING +FORKLESS +FORKLIFT +FORKLIFTED +FORKLIFTING +FORKLIFTS +FORKLIKE +FORKS +FORKSFUL +FORKY +FORLORN +FORLORNER +FORLORNEST +FORLORNLY +FORLORNNESS +FORLORNNESSES +FORM +FORMABILITIES +FORMABILITY +FORMABLE +FORMABLY +FORMAL +FORMALDEHYDE +FORMALDEHYDES +FORMALIN +FORMALINS +FORMALISE +FORMALISED +FORMALISES +FORMALISING +FORMALISM +FORMALISMS +FORMALIST +FORMALISTIC +FORMALISTS +FORMALITIES +FORMALITY +FORMALIZABLE +FORMALIZATION +FORMALIZATIONS +FORMALIZE +FORMALIZED +FORMALIZER +FORMALIZERS +FORMALIZES +FORMALIZING +FORMALLY +FORMALNESS +FORMALNESSES +FORMALS +FORMAMIDE +FORMAMIDES +FORMANT +FORMANTS +FORMAT +FORMATE +FORMATES +FORMATION +FORMATIONS +FORMATIVE +FORMATIVELY +FORMATIVES +FORMATS +FORMATTED +FORMATTER +FORMATTERS +FORMATTING +FORME +FORMED +FORMEE +FORMER +FORMERLY +FORMERS +FORMES +FORMFITTING +FORMFUL +FORMIC +FORMICA +FORMICARIES +FORMICARY +FORMICAS +FORMIDABILITIES +FORMIDABILITY +FORMIDABLE +FORMIDABLENESS +FORMIDABLY +FORMING +FORMLESS +FORMLESSLY +FORMLESSNESS +FORMLESSNESSES +FORMOL +FORMOLS +FORMS +FORMULA +FORMULAE +FORMULAIC +FORMULAICALLY +FORMULARIES +FORMULARIZATION +FORMULARIZE +FORMULARIZED +FORMULARIZER +FORMULARIZERS +FORMULARIZES +FORMULARIZING +FORMULARY +FORMULAS +FORMULATE +FORMULATED +FORMULATES +FORMULATING +FORMULATION +FORMULATIONS +FORMULATOR +FORMULATORS +FORMULISM +FORMULISMS +FORMULIST +FORMULISTS +FORMULIZE +FORMULIZED +FORMULIZES +FORMULIZING +FORMWORK +FORMWORKS +FORMYL +FORMYLS +FORNENT +FORNICAL +FORNICATE +FORNICATED +FORNICATES +FORNICATING +FORNICATION +FORNICATIONS +FORNICATOR +FORNICATORS +FORNICES +FORNIX +FORRADER +FORRARDER +FORRIT +FORSAKE +FORSAKEN +FORSAKER +FORSAKERS +FORSAKES +FORSAKING +FORSOOK +FORSOOTH +FORSPENT +FORSWEAR +FORSWEARING +FORSWEARS +FORSWORE +FORSWORN +FORSYTHIA +FORSYTHIAS +FORT +FORTALICE +FORTALICES +FORTE +FORTEPIANO +FORTEPIANOS +FORTES +FORTH +FORTHCOMING +FORTHRIGHT +FORTHRIGHTLY +FORTHRIGHTNESS +FORTHRIGHTS +FORTHWITH +FORTIES +FORTIETH +FORTIETHS +FORTIFICATION +FORTIFICATIONS +FORTIFIED +FORTIFIER +FORTIFIERS +FORTIFIES +FORTIFY +FORTIFYING +FORTIS +FORTISSIMI +FORTISSIMO +FORTISSIMOS +FORTITUDE +FORTITUDES +FORTNIGHT +FORTNIGHTLIES +FORTNIGHTLY +FORTNIGHTS +FORTRESS +FORTRESSED +FORTRESSES +FORTRESSING +FORTRESSLIKE +FORTS +FORTUITIES +FORTUITOUS +FORTUITOUSLY +FORTUITOUSNESS +FORTUITY +FORTUNATE +FORTUNATELY +FORTUNATENESS +FORTUNATENESSES +FORTUNATES +FORTUNE +FORTUNED +FORTUNES +FORTUNING +FORTY +FORTYISH +FORUM +FORUMS +FORWARD +FORWARDED +FORWARDER +FORWARDERS +FORWARDEST +FORWARDING +FORWARDLY +FORWARDNESS +FORWARDNESSES +FORWARDS +FORWENT +FORWHY +FORWORN +FORZANDI +FORZANDO +FORZANDOS +FOSCARNET +FOSCARNETS +FOSS +FOSSA +FOSSAE +FOSSAS +FOSSATE +FOSSE +FOSSES +FOSSETTE +FOSSETTES +FOSSICK +FOSSICKED +FOSSICKER +FOSSICKERS +FOSSICKING +FOSSICKS +FOSSIL +FOSSILIFEROUS +FOSSILISE +FOSSILISED +FOSSILISES +FOSSILISING +FOSSILIZATION +FOSSILIZATIONS +FOSSILIZE +FOSSILIZED +FOSSILIZES +FOSSILIZING +FOSSILS +FOSSORIAL +FOSTER +FOSTERAGE +FOSTERAGES +FOSTERED +FOSTERER +FOSTERERS +FOSTERING +FOSTERLING +FOSTERLINGS +FOSTERS +FOU +FOUETTE +FOUETTES +FOUGHT +FOUGHTEN +FOUL +FOULARD +FOULARDS +FOULBROOD +FOULBROODS +FOULED +FOULER +FOULEST +FOULING +FOULINGS +FOULLY +FOULMOUTHED +FOULNESS +FOULNESSES +FOULS +FOUND +FOUNDATION +FOUNDATIONAL +FOUNDATIONALLY +FOUNDATIONLESS +FOUNDATIONS +FOUNDED +FOUNDER +FOUNDERED +FOUNDERING +FOUNDERS +FOUNDING +FOUNDLING +FOUNDLINGS +FOUNDRIES +FOUNDRY +FOUNDS +FOUNT +FOUNTAIN +FOUNTAINED +FOUNTAINHEAD +FOUNTAINHEADS +FOUNTAINING +FOUNTAINS +FOUNTS +FOUR +FOURCHEE +FOURDRINIER +FOURDRINIERS +FOUREYED +FOURFOLD +FOURGON +FOURGONS +FOURPENCE +FOURPENCES +FOURPENNIES +FOURPENNY +FOURPLEX +FOURPLEXES +FOURRAGERE +FOURRAGERES +FOURS +FOURSCORE +FOURSOME +FOURSOMES +FOURSQUARE +FOURTEEN +FOURTEENER +FOURTEENERS +FOURTEENS +FOURTEENTH +FOURTEENTHS +FOURTH +FOURTHLY +FOURTHS +FOVEA +FOVEAE +FOVEAL +FOVEAS +FOVEATE +FOVEATED +FOVEIFORM +FOVEOLA +FOVEOLAE +FOVEOLAR +FOVEOLAS +FOVEOLATE +FOVEOLE +FOVEOLES +FOVEOLET +FOVEOLETS +FOWL +FOWLED +FOWLER +FOWLERS +FOWLING +FOWLINGS +FOWLPOX +FOWLPOXES +FOWLS +FOX +FOXED +FOXES +FOXFIRE +FOXFIRES +FOXFISH +FOXFISHES +FOXGLOVE +FOXGLOVES +FOXHOLE +FOXHOLES +FOXHOUND +FOXHOUNDS +FOXHUNT +FOXHUNTED +FOXHUNTER +FOXHUNTERS +FOXHUNTING +FOXHUNTINGS +FOXHUNTS +FOXIER +FOXIEST +FOXILY +FOXINESS +FOXINESSES +FOXING +FOXINGS +FOXLIKE +FOXSKIN +FOXSKINS +FOXTAIL +FOXTAILS +FOXTROT +FOXTROTS +FOXTROTTED +FOXTROTTING +FOXY +FOY +FOYER +FOYERS +FOYS +FOZIER +FOZIEST +FOZINESS +FOZINESSES +FOZY +FRABJOUS +FRACAS +FRACASES +FRACTAL +FRACTALS +FRACTED +FRACTI +FRACTION +FRACTIONAL +FRACTIONALIZE +FRACTIONALIZED +FRACTIONALIZES +FRACTIONALIZING +FRACTIONALLY +FRACTIONATE +FRACTIONATED +FRACTIONATES +FRACTIONATING +FRACTIONATION +FRACTIONATIONS +FRACTIONATOR +FRACTIONATORS +FRACTIONED +FRACTIONING +FRACTIONS +FRACTIOUS +FRACTIOUSLY +FRACTIOUSNESS +FRACTIOUSNESSES +FRACTUR +FRACTURAL +FRACTURE +FRACTURED +FRACTURER +FRACTURERS +FRACTURES +FRACTURING +FRACTURS +FRACTUS +FRAE +FRAENA +FRAENUM +FRAENUMS +FRAG +FRAGGED +FRAGGING +FRAGGINGS +FRAGILE +FRAGILELY +FRAGILITIES +FRAGILITY +FRAGMENT +FRAGMENTAL +FRAGMENTALLY +FRAGMENTARILY +FRAGMENTARINESS +FRAGMENTARY +FRAGMENTATE +FRAGMENTATED +FRAGMENTATES +FRAGMENTATING +FRAGMENTATION +FRAGMENTATIONS +FRAGMENTED +FRAGMENTING +FRAGMENTIZE +FRAGMENTIZED +FRAGMENTIZES +FRAGMENTIZING +FRAGMENTS +FRAGRANCE +FRAGRANCES +FRAGRANCIES +FRAGRANCY +FRAGRANT +FRAGRANTLY +FRAGS +FRAIL +FRAILER +FRAILEST +FRAILLY +FRAILNESS +FRAILNESSES +FRAILS +FRAILTIES +FRAILTY +FRAISE +FRAISES +FRAKTUR +FRAKTURS +FRAMABLE +FRAMBESIA +FRAMBESIAS +FRAMBOISE +FRAMBOISES +FRAME +FRAMEABLE +FRAMED +FRAMELESS +FRAMER +FRAMERS +FRAMES +FRAMESHIFT +FRAMESHIFTS +FRAMEWORK +FRAMEWORKS +FRAMING +FRAMINGS +FRANC +FRANCHISE +FRANCHISED +FRANCHISEE +FRANCHISEES +FRANCHISER +FRANCHISERS +FRANCHISES +FRANCHISING +FRANCHISOR +FRANCHISORS +FRANCIUM +FRANCIUMS +FRANCIZE +FRANCIZED +FRANCIZES +FRANCIZING +FRANCOLIN +FRANCOLINS +FRANCOPHONE +FRANCS +FRANGIBILITIES +FRANGIBILITY +FRANGIBLE +FRANGIPANE +FRANGIPANES +FRANGIPANI +FRANGIPANNI +FRANGLAIS +FRANK +FRANKABLE +FRANKED +FRANKER +FRANKERS +FRANKEST +FRANKFORT +FRANKFORTS +FRANKFURT +FRANKFURTER +FRANKFURTERS +FRANKFURTS +FRANKINCENSE +FRANKINCENSES +FRANKING +FRANKLIN +FRANKLINITE +FRANKLINITES +FRANKLINS +FRANKLY +FRANKNESS +FRANKNESSES +FRANKPLEDGE +FRANKPLEDGES +FRANKS +FRANSERIA +FRANSERIAS +FRANTIC +FRANTICALLY +FRANTICLY +FRANTICNESS +FRANTICNESSES +FRAP +FRAPPE +FRAPPED +FRAPPES +FRAPPING +FRAPS +FRASS +FRASSES +FRAT +FRATER +FRATERNAL +FRATERNALISM +FRATERNALISMS +FRATERNALLY +FRATERNITIES +FRATERNITY +FRATERNIZATION +FRATERNIZATIONS +FRATERNIZE +FRATERNIZED +FRATERNIZER +FRATERNIZERS +FRATERNIZES +FRATERNIZING +FRATERS +FRATRICIDAL +FRATRICIDE +FRATRICIDES +FRATS +FRAUD +FRAUDS +FRAUDSTER +FRAUDSTERS +FRAUDULENCE +FRAUDULENCES +FRAUDULENT +FRAUDULENTLY +FRAUDULENTNESS +FRAUGHT +FRAUGHTED +FRAUGHTING +FRAUGHTS +FRAULEIN +FRAULEINS +FRAXINELLA +FRAXINELLAS +FRAY +FRAYED +FRAYING +FRAYINGS +FRAYS +FRAZIL +FRAZILS +FRAZZLE +FRAZZLED +FRAZZLES +FRAZZLING +FREAK +FREAKED +FREAKIER +FREAKIEST +FREAKILY +FREAKINESS +FREAKINESSES +FREAKING +FREAKISH +FREAKISHLY +FREAKISHNESS +FREAKISHNESSES +FREAKOUT +FREAKOUTS +FREAKS +FREAKY +FRECKLE +FRECKLED +FRECKLES +FRECKLIER +FRECKLIEST +FRECKLING +FRECKLY +FREE +FREEBASE +FREEBASED +FREEBASER +FREEBASERS +FREEBASES +FREEBASING +FREEBEE +FREEBEES +FREEBIE +FREEBIES +FREEBOARD +FREEBOARDS +FREEBOOT +FREEBOOTED +FREEBOOTER +FREEBOOTERS +FREEBOOTING +FREEBOOTS +FREEBORN +FREED +FREEDMAN +FREEDMEN +FREEDOM +FREEDOMS +FREEDWOMAN +FREEDWOMEN +FREEFORM +FREEHAND +FREEHANDED +FREEHANDEDLY +FREEHANDEDNESS +FREEHEARTED +FREEHEARTEDLY +FREEHOLD +FREEHOLDER +FREEHOLDERS +FREEHOLDS +FREEING +FREELANCE +FREELANCED +FREELANCER +FREELANCERS +FREELANCES +FREELANCING +FREELOAD +FREELOADED +FREELOADER +FREELOADERS +FREELOADING +FREELOADS +FREELY +FREEMAN +FREEMARTIN +FREEMARTINS +FREEMASON +FREEMASONRIES +FREEMASONRY +FREEMASONS +FREEMEN +FREENESS +FREENESSES +FREER +FREERS +FREES +FREESIA +FREESIAS +FREEST +FREESTANDING +FREESTONE +FREESTONES +FREESTYLE +FREESTYLER +FREESTYLERS +FREESTYLES +FREETHINKER +FREETHINKERS +FREETHINKING +FREETHINKINGS +FREEWARE +FREEWARES +FREEWAY +FREEWAYS +FREEWHEEL +FREEWHEELED +FREEWHEELER +FREEWHEELERS +FREEWHEELING +FREEWHEELINGLY +FREEWHEELS +FREEWILL +FREEWRITE +FREEWRITES +FREEWRITING +FREEWRITINGS +FREEWRITTEN +FREEWROTE +FREEZABLE +FREEZE +FREEZER +FREEZERS +FREEZES +FREEZING +FREEZINGLY +FREIGHT +FREIGHTAGE +FREIGHTAGES +FREIGHTED +FREIGHTER +FREIGHTERS +FREIGHTING +FREIGHTS +FREMD +FREMITUS +FREMITUSES +FRENA +FRENCH +FRENCHED +FRENCHES +FRENCHIFICATION +FRENCHIFIED +FRENCHIFIES +FRENCHIFY +FRENCHIFYING +FRENCHING +FRENETIC +FRENETICALLY +FRENETICISM +FRENETICISMS +FRENETICS +FRENULA +FRENULAR +FRENULUM +FRENULUMS +FRENUM +FRENUMS +FRENZIED +FRENZIEDLY +FRENZIES +FRENZILY +FRENZY +FRENZYING +FREQUENCE +FREQUENCES +FREQUENCIES +FREQUENCY +FREQUENT +FREQUENTATION +FREQUENTATIONS +FREQUENTATIVE +FREQUENTATIVES +FREQUENTED +FREQUENTER +FREQUENTERS +FREQUENTEST +FREQUENTING +FREQUENTLY +FREQUENTNESS +FREQUENTNESSES +FREQUENTS +FRERE +FRERES +FRESCO +FRESCOED +FRESCOER +FRESCOERS +FRESCOES +FRESCOING +FRESCOIST +FRESCOISTS +FRESCOS +FRESH +FRESHED +FRESHEN +FRESHENED +FRESHENER +FRESHENERS +FRESHENING +FRESHENS +FRESHER +FRESHES +FRESHEST +FRESHET +FRESHETS +FRESHING +FRESHLY +FRESHMAN +FRESHMEN +FRESHNESS +FRESHNESSES +FRESHWATER +FRESHWATERS +FRESNEL +FRESNELS +FRET +FRETBOARD +FRETBOARDS +FRETFUL +FRETFULLY +FRETFULNESS +FRETFULNESSES +FRETLESS +FRETS +FRETSAW +FRETSAWS +FRETSOME +FRETTED +FRETTER +FRETTERS +FRETTIER +FRETTIEST +FRETTING +FRETTY +FRETWORK +FRETWORKS +FRIABILITIES +FRIABILITY +FRIABLE +FRIAR +FRIARBIRD +FRIARBIRDS +FRIARIES +FRIARLY +FRIARS +FRIARY +FRIBBLE +FRIBBLED +FRIBBLER +FRIBBLERS +FRIBBLES +FRIBBLING +FRICANDEAU +FRICANDEAUS +FRICANDO +FRICANDOES +FRICASSEE +FRICASSEED +FRICASSEEING +FRICASSEES +FRICATIVE +FRICATIVES +FRICTION +FRICTIONAL +FRICTIONALLY +FRICTIONLESS +FRICTIONLESSLY +FRICTIONS +FRIDGE +FRIDGES +FRIED +FRIEDCAKE +FRIEDCAKES +FRIEND +FRIENDED +FRIENDING +FRIENDLESS +FRIENDLESSNESS +FRIENDLIER +FRIENDLIES +FRIENDLIEST +FRIENDLILY +FRIENDLINESS +FRIENDLINESSES +FRIENDLY +FRIENDS +FRIENDSHIP +FRIENDSHIPS +FRIER +FRIERS +FRIES +FRIEZE +FRIEZELIKE +FRIEZES +FRIG +FRIGATE +FRIGATES +FRIGES +FRIGGED +FRIGGING +FRIGHT +FRIGHTED +FRIGHTEN +FRIGHTENED +FRIGHTENING +FRIGHTENINGLY +FRIGHTENS +FRIGHTFUL +FRIGHTFULLY +FRIGHTFULNESS +FRIGHTFULNESSES +FRIGHTING +FRIGHTS +FRIGID +FRIGIDITIES +FRIGIDITY +FRIGIDLY +FRIGIDNESS +FRIGIDNESSES +FRIGORIFIC +FRIGS +FRIJOL +FRIJOLE +FRIJOLES +FRILL +FRILLED +FRILLER +FRILLERS +FRILLIER +FRILLIEST +FRILLING +FRILLINGS +FRILLS +FRILLY +FRINGE +FRINGED +FRINGES +FRINGIER +FRINGIEST +FRINGING +FRINGY +FRIPPERIES +FRIPPERY +FRISBEE +FRISBEES +FRISE +FRISEE +FRISEES +FRISES +FRISETTE +FRISETTES +FRISEUR +FRISEURS +FRISK +FRISKED +FRISKER +FRISKERS +FRISKET +FRISKETS +FRISKIER +FRISKIEST +FRISKILY +FRISKINESS +FRISKINESSES +FRISKING +FRISKS +FRISKY +FRISSON +FRISSONS +FRIT +FRITES +FRITH +FRITHS +FRITILLARIA +FRITILLARIAS +FRITILLARIES +FRITILLARY +FRITS +FRITT +FRITTATA +FRITTATAS +FRITTED +FRITTER +FRITTERED +FRITTERER +FRITTERERS +FRITTERING +FRITTERS +FRITTING +FRITTS +FRITZ +FRITZES +FRIVOL +FRIVOLED +FRIVOLER +FRIVOLERS +FRIVOLING +FRIVOLITIES +FRIVOLITY +FRIVOLLED +FRIVOLLER +FRIVOLLERS +FRIVOLLING +FRIVOLOUS +FRIVOLOUSLY +FRIVOLOUSNESS +FRIVOLOUSNESSES +FRIVOLS +FRIZ +FRIZED +FRIZER +FRIZERS +FRIZES +FRIZETTE +FRIZETTES +FRIZING +FRIZZ +FRIZZED +FRIZZER +FRIZZERS +FRIZZES +FRIZZIER +FRIZZIES +FRIZZIEST +FRIZZILY +FRIZZINESS +FRIZZINESSES +FRIZZING +FRIZZLE +FRIZZLED +FRIZZLER +FRIZZLERS +FRIZZLES +FRIZZLIER +FRIZZLIEST +FRIZZLING +FRIZZLY +FRIZZY +FRO +FROCK +FROCKED +FROCKING +FROCKLESS +FROCKS +FROE +FROES +FROG +FROGEYE +FROGEYED +FROGEYES +FROGFISH +FROGFISHES +FROGGED +FROGGIER +FROGGIEST +FROGGING +FROGGY +FROGHOPPER +FROGHOPPERS +FROGLET +FROGLETS +FROGLIKE +FROGMAN +FROGMARCH +FROGMARCHED +FROGMARCHES +FROGMARCHING +FROGMEN +FROGS +FROLIC +FROLICKED +FROLICKER +FROLICKERS +FROLICKING +FROLICKY +FROLICS +FROLICSOME +FROM +FROMAGE +FROMAGES +FROMENTIES +FROMENTY +FROND +FRONDED +FRONDEUR +FRONDEURS +FRONDOSE +FRONDS +FRONS +FRONT +FRONTAGE +FRONTAGES +FRONTAL +FRONTALITIES +FRONTALITY +FRONTALLY +FRONTALS +FRONTCOURT +FRONTCOURTS +FRONTED +FRONTENIS +FRONTENISES +FRONTER +FRONTES +FRONTIER +FRONTIERS +FRONTIERSMAN +FRONTIERSMEN +FRONTING +FRONTISPIECE +FRONTISPIECES +FRONTLESS +FRONTLET +FRONTLETS +FRONTLINE +FRONTLINES +FRONTLIST +FRONTLISTS +FRONTMAN +FRONTMEN +FRONTOGENESES +FRONTOGENESIS +FRONTOLYSES +FRONTOLYSIS +FRONTON +FRONTONS +FRONTPAGE +FRONTPAGED +FRONTPAGES +FRONTPAGING +FRONTS +FRONTWARD +FRONTWARDS +FRORE +FROSH +FROST +FROSTBIT +FROSTBITE +FROSTBITES +FROSTBITING +FROSTBITINGS +FROSTBITTEN +FROSTED +FROSTEDS +FROSTFISH +FROSTFISHES +FROSTIER +FROSTIEST +FROSTILY +FROSTINESS +FROSTINESSES +FROSTING +FROSTINGS +FROSTLESS +FROSTLINE +FROSTLINES +FROSTNIP +FROSTNIPS +FROSTS +FROSTWORK +FROSTWORKS +FROSTY +FROTH +FROTHED +FROTHER +FROTHERS +FROTHIER +FROTHIEST +FROTHILY +FROTHINESS +FROTHINESSES +FROTHING +FROTHS +FROTHY +FROTTAGE +FROTTAGES +FROTTEUR +FROTTEURS +FROUFROU +FROUFROUS +FROUNCE +FROUNCED +FROUNCES +FROUNCING +FROUZIER +FROUZIEST +FROUZY +FROW +FROWARD +FROWARDLY +FROWARDNESS +FROWARDNESSES +FROWN +FROWNED +FROWNER +FROWNERS +FROWNING +FROWNINGLY +FROWNS +FROWS +FROWSIER +FROWSIEST +FROWST +FROWSTED +FROWSTIER +FROWSTIEST +FROWSTING +FROWSTS +FROWSTY +FROWSY +FROWZIER +FROWZIEST +FROWZILY +FROWZY +FROZE +FROZEN +FROZENLY +FROZENNESS +FROZENNESSES +FRUCTIFICATION +FRUCTIFICATIONS +FRUCTIFIED +FRUCTIFIES +FRUCTIFY +FRUCTIFYING +FRUCTOSE +FRUCTOSES +FRUCTUOUS +FRUG +FRUGAL +FRUGALITIES +FRUGALITY +FRUGALLY +FRUGGED +FRUGGING +FRUGIVORE +FRUGIVORES +FRUGIVOROUS +FRUGS +FRUIT +FRUITAGE +FRUITAGES +FRUITARIAN +FRUITARIANS +FRUITCAKE +FRUITCAKES +FRUITED +FRUITER +FRUITERER +FRUITERERS +FRUITERS +FRUITFUL +FRUITFULLER +FRUITFULLEST +FRUITFULLY +FRUITFULNESS +FRUITFULNESSES +FRUITIER +FRUITIEST +FRUITILY +FRUITINESS +FRUITINESSES +FRUITING +FRUITION +FRUITIONS +FRUITLESS +FRUITLESSLY +FRUITLESSNESS +FRUITLESSNESSES +FRUITLET +FRUITLETS +FRUITLIKE +FRUITS +FRUITWOOD +FRUITWOODS +FRUITY +FRUMENTIES +FRUMENTY +FRUMP +FRUMPIER +FRUMPIEST +FRUMPILY +FRUMPISH +FRUMPS +FRUMPY +FRUSTA +FRUSTRATE +FRUSTRATED +FRUSTRATES +FRUSTRATING +FRUSTRATINGLY +FRUSTRATION +FRUSTRATIONS +FRUSTULE +FRUSTULES +FRUSTUM +FRUSTUMS +FRUTESCENT +FRUTICOSE +FRY +FRYABLE +FRYBREAD +FRYBREADS +FRYER +FRYERS +FRYING +FRYPAN +FRYPANS +FUB +FUBAR +FUBBED +FUBBING +FUBS +FUBSIER +FUBSIEST +FUBSY +FUCHSIA +FUCHSIAS +FUCHSIN +FUCHSINE +FUCHSINES +FUCHSINS +FUCI +FUCK +FUCKED +FUCKER +FUCKERS +FUCKING +FUCKOFF +FUCKOFFS +FUCKS +FUCKUP +FUCKUPS +FUCOID +FUCOIDAL +FUCOIDS +FUCOSE +FUCOSES +FUCOUS +FUCOXANTHIN +FUCOXANTHINS +FUCUS +FUCUSES +FUD +FUDDIES +FUDDLE +FUDDLED +FUDDLES +FUDDLING +FUDDY +FUDGE +FUDGED +FUDGES +FUDGING +FUDS +FUEHRER +FUEHRERS +FUEL +FUELED +FUELER +FUELERS +FUELING +FUELLED +FUELLER +FUELLERS +FUELLING +FUELS +FUELWOOD +FUELWOODS +FUG +FUGACIOUS +FUGACITIES +FUGACITY +FUGAL +FUGALLY +FUGATO +FUGATOS +FUGGED +FUGGIER +FUGGIEST +FUGGILY +FUGGING +FUGGY +FUGIO +FUGIOS +FUGITIVE +FUGITIVELY +FUGITIVENESS +FUGITIVENESSES +FUGITIVES +FUGLE +FUGLED +FUGLEMAN +FUGLEMEN +FUGLES +FUGLING +FUGS +FUGU +FUGUE +FUGUED +FUGUELIKE +FUGUES +FUGUING +FUGUIST +FUGUISTS +FUGUS +FUHRER +FUHRERS +FUJI +FUJIS +FULCRA +FULCRUM +FULCRUMS +FULFIL +FULFILL +FULFILLED +FULFILLER +FULFILLERS +FULFILLING +FULFILLMENT +FULFILLMENTS +FULFILLS +FULFILMENT +FULFILMENTS +FULFILS +FULGENT +FULGENTLY +FULGID +FULGURANT +FULGURATE +FULGURATED +FULGURATES +FULGURATING +FULGURATION +FULGURATIONS +FULGURITE +FULGURITES +FULGUROUS +FULHAM +FULHAMS +FULIGINOUS +FULIGINOUSLY +FULL +FULLAM +FULLAMS +FULLBACK +FULLBACKS +FULLBLOOD +FULLBLOODS +FULLED +FULLER +FULLERED +FULLERENE +FULLERENES +FULLERIES +FULLERING +FULLERS +FULLERY +FULLEST +FULLFACE +FULLFACES +FULLING +FULLMOUTHED +FULLNESS +FULLNESSES +FULLS +FULLY +FULMAR +FULMARS +FULMINANT +FULMINATE +FULMINATED +FULMINATES +FULMINATING +FULMINATION +FULMINATIONS +FULMINE +FULMINED +FULMINES +FULMINIC +FULMINING +FULNESS +FULNESSES +FULSOME +FULSOMELY +FULSOMENESS +FULSOMENESSES +FULVOUS +FUMARASE +FUMARASES +FUMARATE +FUMARATES +FUMARIC +FUMAROLE +FUMAROLES +FUMAROLIC +FUMATORIES +FUMATORY +FUMBLE +FUMBLED +FUMBLER +FUMBLERS +FUMBLES +FUMBLING +FUMBLINGLY +FUME +FUMED +FUMELESS +FUMELIKE +FUMER +FUMERS +FUMES +FUMET +FUMETS +FUMETTE +FUMETTES +FUMIER +FUMIEST +FUMIGANT +FUMIGANTS +FUMIGATE +FUMIGATED +FUMIGATES +FUMIGATING +FUMIGATION +FUMIGATIONS +FUMIGATOR +FUMIGATORS +FUMING +FUMINGLY +FUMITORIES +FUMITORY +FUMULI +FUMULUS +FUMY +FUN +FUNAMBULISM +FUNAMBULISMS +FUNAMBULIST +FUNAMBULISTS +FUNCTION +FUNCTIONAL +FUNCTIONALISM +FUNCTIONALISMS +FUNCTIONALIST +FUNCTIONALISTIC +FUNCTIONALISTS +FUNCTIONALITIES +FUNCTIONALITY +FUNCTIONALLY +FUNCTIONARIES +FUNCTIONARY +FUNCTIONED +FUNCTIONING +FUNCTIONLESS +FUNCTIONS +FUNCTOR +FUNCTORS +FUND +FUNDAMENT +FUNDAMENTAL +FUNDAMENTALISM +FUNDAMENTALISMS +FUNDAMENTALIST +FUNDAMENTALISTS +FUNDAMENTALLY +FUNDAMENTALS +FUNDAMENTS +FUNDED +FUNDER +FUNDERS +FUNDI +FUNDIC +FUNDING +FUNDRAISE +FUNDRAISED +FUNDRAISES +FUNDRAISING +FUNDS +FUNDUS +FUNERAL +FUNERALS +FUNERARY +FUNEREAL +FUNEREALLY +FUNEST +FUNFAIR +FUNFAIRS +FUNFEST +FUNFESTS +FUNGAL +FUNGALS +FUNGI +FUNGIBILITIES +FUNGIBILITY +FUNGIBLE +FUNGIBLES +FUNGIC +FUNGICIDAL +FUNGICIDALLY +FUNGICIDE +FUNGICIDES +FUNGIFORM +FUNGISTAT +FUNGISTATIC +FUNGISTATS +FUNGO +FUNGOES +FUNGOID +FUNGOIDS +FUNGOUS +FUNGUS +FUNGUSES +FUNHOUSE +FUNHOUSES +FUNICLE +FUNICLES +FUNICULAR +FUNICULARS +FUNICULI +FUNICULUS +FUNK +FUNKED +FUNKER +FUNKERS +FUNKIA +FUNKIAS +FUNKIER +FUNKIEST +FUNKILY +FUNKINESS +FUNKINESSES +FUNKING +FUNKS +FUNKY +FUNNED +FUNNEL +FUNNELED +FUNNELFORM +FUNNELING +FUNNELLED +FUNNELLING +FUNNELS +FUNNER +FUNNEST +FUNNIER +FUNNIES +FUNNIEST +FUNNILY +FUNNINESS +FUNNINESSES +FUNNING +FUNNY +FUNNYMAN +FUNNYMEN +FUNPLEX +FUNPLEXES +FUNS +FUR +FURAN +FURANE +FURANES +FURANOSE +FURANOSES +FURANOSIDE +FURANOSIDES +FURANS +FURAZOLIDONE +FURAZOLIDONES +FURBEARER +FURBEARERS +FURBELOW +FURBELOWED +FURBELOWING +FURBELOWS +FURBISH +FURBISHED +FURBISHER +FURBISHERS +FURBISHES +FURBISHING +FURCATE +FURCATED +FURCATELY +FURCATES +FURCATING +FURCATION +FURCATIONS +FURCRAEA +FURCRAEAS +FURCULA +FURCULAE +FURCULAR +FURCULUM +FURFUR +FURFURAL +FURFURALS +FURFURAN +FURFURANS +FURFURES +FURIBUND +FURIES +FURIOSO +FURIOUS +FURIOUSLY +FURL +FURLABLE +FURLED +FURLER +FURLERS +FURLESS +FURLING +FURLONG +FURLONGS +FURLOUGH +FURLOUGHED +FURLOUGHING +FURLOUGHS +FURLS +FURMENTIES +FURMENTY +FURMETIES +FURMETY +FURMITIES +FURMITY +FURNACE +FURNACED +FURNACES +FURNACING +FURNISH +FURNISHED +FURNISHER +FURNISHERS +FURNISHES +FURNISHING +FURNISHINGS +FURNITURE +FURNITURES +FUROR +FURORE +FURORES +FURORS +FUROSEMIDE +FUROSEMIDES +FURRED +FURRIER +FURRIERIES +FURRIERS +FURRIERY +FURRIEST +FURRILY +FURRINER +FURRINERS +FURRINESS +FURRINESSES +FURRING +FURRINGS +FURROW +FURROWED +FURROWER +FURROWERS +FURROWING +FURROWS +FURROWY +FURRY +FURS +FURTHER +FURTHERANCE +FURTHERANCES +FURTHERED +FURTHERER +FURTHERERS +FURTHERING +FURTHERMORE +FURTHERMOST +FURTHERS +FURTHEST +FURTIVE +FURTIVELY +FURTIVENESS +FURTIVENESSES +FURUNCLE +FURUNCLES +FURUNCULOSES +FURUNCULOSIS +FURY +FURZE +FURZES +FURZIER +FURZIEST +FURZY +FUSAIN +FUSAINS +FUSARIA +FUSARIUM +FUSCOUS +FUSE +FUSED +FUSEE +FUSEES +FUSEL +FUSELAGE +FUSELAGES +FUSELESS +FUSELIKE +FUSELS +FUSES +FUSIBILITIES +FUSIBILITY +FUSIBLE +FUSIBLY +FUSIFORM +FUSIL +FUSILE +FUSILEER +FUSILEERS +FUSILIER +FUSILIERS +FUSILLADE +FUSILLADED +FUSILLADES +FUSILLADING +FUSILLI +FUSILLIS +FUSILS +FUSING +FUSION +FUSIONAL +FUSIONISM +FUSIONISMS +FUSIONIST +FUSIONISTS +FUSIONS +FUSS +FUSSBUDGET +FUSSBUDGETS +FUSSBUDGETY +FUSSED +FUSSER +FUSSERS +FUSSES +FUSSIER +FUSSIEST +FUSSILY +FUSSINESS +FUSSINESSES +FUSSING +FUSSPOT +FUSSPOTS +FUSSY +FUSTIAN +FUSTIANS +FUSTIC +FUSTICS +FUSTIER +FUSTIEST +FUSTIGATE +FUSTIGATED +FUSTIGATES +FUSTIGATING +FUSTIGATION +FUSTIGATIONS +FUSTILY +FUSTINESS +FUSTINESSES +FUSTY +FUSULINID +FUSULINIDS +FUSUMA +FUTHARC +FUTHARCS +FUTHARK +FUTHARKS +FUTHORC +FUTHORCS +FUTHORK +FUTHORKS +FUTILE +FUTILELY +FUTILENESS +FUTILENESSES +FUTILITARIAN +FUTILITARIANISM +FUTILITARIANS +FUTILITIES +FUTILITY +FUTON +FUTONS +FUTTOCK +FUTTOCKS +FUTURAL +FUTURE +FUTURELESS +FUTURELESSNESS +FUTURES +FUTURISM +FUTURISMS +FUTURIST +FUTURISTIC +FUTURISTICALLY +FUTURISTICS +FUTURISTS +FUTURITIES +FUTURITY +FUTUROLOGICAL +FUTUROLOGIES +FUTUROLOGIST +FUTUROLOGISTS +FUTUROLOGY +FUTZ +FUTZED +FUTZES +FUTZING +FUZE +FUZED +FUZEE +FUZEES +FUZES +FUZIL +FUZILS +FUZING +FUZZ +FUZZED +FUZZES +FUZZIER +FUZZIEST +FUZZILY +FUZZINESS +FUZZINESSES +FUZZING +FUZZTONE +FUZZTONES +FUZZY +FYCE +FYCES +FYKE +FYKES +FYLFOT +FYLFOTS +FYNBOS +FYTTE +FYTTES +GAB +GABARDINE +GABARDINES +GABBARD +GABBARDS +GABBART +GABBARTS +GABBED +GABBER +GABBERS +GABBIER +GABBIEST +GABBINESS +GABBINESSES +GABBING +GABBLE +GABBLED +GABBLER +GABBLERS +GABBLES +GABBLING +GABBRO +GABBROIC +GABBROID +GABBROS +GABBY +GABELLE +GABELLED +GABELLES +GABERDINE +GABERDINES +GABFEST +GABFESTS +GABIES +GABION +GABIONS +GABLE +GABLED +GABLELIKE +GABLES +GABLING +GABOON +GABOONS +GABS +GABY +GAD +GADABOUT +GADABOUTS +GADARENE +GADDED +GADDER +GADDERS +GADDI +GADDING +GADDIS +GADFLIES +GADFLY +GADGET +GADGETEER +GADGETEERS +GADGETRIES +GADGETRY +GADGETS +GADGETY +GADI +GADID +GADIDS +GADIS +GADJE +GADJO +GADOID +GADOIDS +GADOLINITE +GADOLINITES +GADOLINIUM +GADOLINIUMS +GADROON +GADROONED +GADROONING +GADROONINGS +GADROONS +GADS +GADWALL +GADWALLS +GADZOOKERIES +GADZOOKERY +GADZOOKS +GAE +GAED +GAEING +GAEN +GAES +GAFF +GAFFE +GAFFED +GAFFER +GAFFERS +GAFFES +GAFFING +GAFFS +GAG +GAGA +GAGAKU +GAGAKUS +GAGE +GAGED +GAGER +GAGERS +GAGES +GAGGED +GAGGER +GAGGERS +GAGGING +GAGGLE +GAGGLED +GAGGLES +GAGGLING +GAGING +GAGMAN +GAGMEN +GAGS +GAGSTER +GAGSTERS +GAHNITE +GAHNITES +GAIETIES +GAIETY +GAIJIN +GAILLARDIA +GAILLARDIAS +GAILY +GAIN +GAINABLE +GAINED +GAINER +GAINERS +GAINFUL +GAINFULLY +GAINFULNESS +GAINFULNESSES +GAINGIVING +GAINGIVINGS +GAINING +GAINLESS +GAINLIER +GAINLIEST +GAINLY +GAINS +GAINSAID +GAINSAY +GAINSAYER +GAINSAYERS +GAINSAYING +GAINSAYS +GAINST +GAIT +GAITED +GAITER +GAITERS +GAITING +GAITS +GAL +GALA +GALABIA +GALABIAS +GALABIEH +GALABIEHS +GALABIYA +GALABIYAH +GALABIYAHS +GALABIYAS +GALACTIC +GALACTORRHEA +GALACTORRHEAS +GALACTOSAMINE +GALACTOSAMINES +GALACTOSE +GALACTOSEMIA +GALACTOSEMIAS +GALACTOSEMIC +GALACTOSES +GALACTOSIDASE +GALACTOSIDASES +GALACTOSIDE +GALACTOSIDES +GALACTOSYL +GALACTOSYLS +GALAGO +GALAGOS +GALAH +GALAHS +GALANGA +GALANGAL +GALANGALS +GALANGAS +GALANTINE +GALANTINES +GALAS +GALATEA +GALATEAS +GALAVANT +GALAVANTED +GALAVANTING +GALAVANTS +GALAX +GALAXES +GALAXIES +GALAXY +GALBANUM +GALBANUMS +GALE +GALEA +GALEAE +GALEAS +GALEATE +GALEATED +GALENA +GALENAS +GALENIC +GALENICAL +GALENICALS +GALENITE +GALENITES +GALERE +GALERES +GALES +GALETTE +GALETTES +GALILEE +GALILEES +GALINGALE +GALINGALES +GALIOT +GALIOTS +GALIPOT +GALIPOTS +GALIVANT +GALIVANTED +GALIVANTING +GALIVANTS +GALL +GALLAMINE +GALLAMINES +GALLANT +GALLANTED +GALLANTING +GALLANTLY +GALLANTRIES +GALLANTRY +GALLANTS +GALLATE +GALLATES +GALLBLADDER +GALLBLADDERS +GALLEASS +GALLEASSES +GALLED +GALLEIN +GALLEINS +GALLEON +GALLEONS +GALLERIA +GALLERIAS +GALLERIED +GALLERIES +GALLERY +GALLERYGOER +GALLERYGOERS +GALLERYING +GALLERYITE +GALLERYITES +GALLET +GALLETA +GALLETAS +GALLETED +GALLETING +GALLETS +GALLEY +GALLEYS +GALLFLIES +GALLFLY +GALLIARD +GALLIARDS +GALLIASS +GALLIASSES +GALLIC +GALLICA +GALLICAN +GALLICAS +GALLICISM +GALLICISMS +GALLICIZATION +GALLICIZATIONS +GALLICIZE +GALLICIZED +GALLICIZES +GALLICIZING +GALLIED +GALLIES +GALLIGASKINS +GALLIMAUFRIES +GALLIMAUFRY +GALLINACEOUS +GALLING +GALLINGLY +GALLINIPPER +GALLINIPPERS +GALLINULE +GALLINULES +GALLIOT +GALLIOTS +GALLIPOT +GALLIPOTS +GALLIUM +GALLIUMS +GALLIVANT +GALLIVANTED +GALLIVANTING +GALLIVANTS +GALLIWASP +GALLIWASPS +GALLNUT +GALLNUTS +GALLON +GALLONAGE +GALLONAGES +GALLONS +GALLOON +GALLOONED +GALLOONS +GALLOOT +GALLOOTS +GALLOP +GALLOPADE +GALLOPADES +GALLOPED +GALLOPER +GALLOPERS +GALLOPING +GALLOPS +GALLOUS +GALLOWGLASS +GALLOWGLASSES +GALLOWS +GALLOWSES +GALLS +GALLSTONE +GALLSTONES +GALLUS +GALLUSED +GALLUSES +GALLY +GALLYING +GALOOT +GALOOTS +GALOP +GALOPADE +GALOPADES +GALOPED +GALOPING +GALOPS +GALORE +GALORES +GALOSH +GALOSHE +GALOSHED +GALOSHES +GALS +GALUMPH +GALUMPHED +GALUMPHING +GALUMPHS +GALVANIC +GALVANICALLY +GALVANISE +GALVANISED +GALVANISES +GALVANISING +GALVANISM +GALVANISMS +GALVANIZATION +GALVANIZATIONS +GALVANIZE +GALVANIZED +GALVANIZER +GALVANIZERS +GALVANIZES +GALVANIZING +GALVANOMETER +GALVANOMETERS +GALVANOMETRIC +GALVANOSCOPE +GALVANOSCOPES +GALYAC +GALYACS +GALYAK +GALYAKS +GAM +GAMA +GAMAS +GAMASHES +GAMAY +GAMAYS +GAMB +GAMBA +GAMBADE +GAMBADES +GAMBADO +GAMBADOES +GAMBADOS +GAMBAS +GAMBE +GAMBES +GAMBESON +GAMBESONS +GAMBIA +GAMBIAS +GAMBIER +GAMBIERS +GAMBIR +GAMBIRS +GAMBIT +GAMBITS +GAMBLE +GAMBLED +GAMBLER +GAMBLERS +GAMBLES +GAMBLING +GAMBOGE +GAMBOGES +GAMBOGIAN +GAMBOL +GAMBOLED +GAMBOLING +GAMBOLLED +GAMBOLLING +GAMBOLS +GAMBREL +GAMBRELS +GAMBS +GAMBUSIA +GAMBUSIAS +GAME +GAMECOCK +GAMECOCKS +GAMED +GAMEKEEPER +GAMEKEEPERS +GAMELAN +GAMELANS +GAMELIKE +GAMELY +GAMENESS +GAMENESSES +GAMER +GAMERS +GAMES +GAMESMAN +GAMESMANSHIP +GAMESMANSHIPS +GAMESMEN +GAMESOME +GAMESOMELY +GAMESOMENESS +GAMESOMENESSES +GAMEST +GAMESTER +GAMESTERS +GAMETAL +GAMETANGIA +GAMETANGIUM +GAMETE +GAMETES +GAMETIC +GAMETICALLY +GAMETOCYTE +GAMETOCYTES +GAMETOGENESES +GAMETOGENESIS +GAMETOGENIC +GAMETOGENOUS +GAMETOPHORE +GAMETOPHORES +GAMETOPHYTE +GAMETOPHYTES +GAMETOPHYTIC +GAMEY +GAMIC +GAMIER +GAMIEST +GAMILY +GAMIN +GAMINE +GAMINES +GAMINESS +GAMINESSES +GAMING +GAMINGS +GAMINS +GAMMA +GAMMADIA +GAMMADION +GAMMAS +GAMMED +GAMMER +GAMMERS +GAMMIER +GAMMIEST +GAMMING +GAMMON +GAMMONED +GAMMONER +GAMMONERS +GAMMONING +GAMMONS +GAMMY +GAMODEME +GAMODEMES +GAMOPETALOUS +GAMP +GAMPS +GAMS +GAMUT +GAMUTS +GAMY +GAN +GANACHE +GANACHES +GANDER +GANDERED +GANDERING +GANDERS +GANE +GANEF +GANEFS +GANEV +GANEVS +GANG +GANGBANG +GANGBANGED +GANGBANGER +GANGBANGERS +GANGBANGING +GANGBANGS +GANGBUSTER +GANGBUSTERS +GANGED +GANGER +GANGERS +GANGING +GANGLAND +GANGLANDS +GANGLIA +GANGLIAL +GANGLIAR +GANGLIATE +GANGLIER +GANGLIEST +GANGLING +GANGLION +GANGLIONATED +GANGLIONIC +GANGLIONS +GANGLIOSIDE +GANGLIOSIDES +GANGLY +GANGPLANK +GANGPLANKS +GANGPLOW +GANGPLOWS +GANGREL +GANGRELS +GANGRENE +GANGRENED +GANGRENES +GANGRENING +GANGRENOUS +GANGS +GANGSTA +GANGSTAS +GANGSTER +GANGSTERDOM +GANGSTERDOMS +GANGSTERISH +GANGSTERISM +GANGSTERISMS +GANGSTERS +GANGUE +GANGUES +GANGWAY +GANGWAYS +GANISTER +GANISTERS +GANJA +GANJAH +GANJAHS +GANJAS +GANNET +GANNETS +GANNISTER +GANNISTERS +GANOF +GANOFS +GANOID +GANOIDS +GANTELOPE +GANTELOPES +GANTLET +GANTLETED +GANTLETING +GANTLETS +GANTLINE +GANTLINES +GANTLOPE +GANTLOPES +GANTRIES +GANTRY +GANYMEDE +GANYMEDES +GAOL +GAOLED +GAOLER +GAOLERS +GAOLING +GAOLS +GAP +GAPE +GAPED +GAPER +GAPERS +GAPES +GAPESEED +GAPESEEDS +GAPEWORM +GAPEWORMS +GAPING +GAPINGLY +GAPLESS +GAPOSIS +GAPOSISES +GAPPED +GAPPIER +GAPPIEST +GAPPING +GAPPY +GAPS +GAPY +GAR +GARAGE +GARAGED +GARAGEMAN +GARAGEMEN +GARAGES +GARAGING +GARB +GARBAGE +GARBAGEMAN +GARBAGEMEN +GARBAGES +GARBAGEY +GARBAGY +GARBANZO +GARBANZOS +GARBED +GARBING +GARBLE +GARBLED +GARBLER +GARBLERS +GARBLES +GARBLESS +GARBLING +GARBOARD +GARBOARDS +GARBOIL +GARBOILS +GARBOLOGIES +GARBOLOGY +GARBS +GARCON +GARCONS +GARDA +GARDAI +GARDANT +GARDEN +GARDENED +GARDENER +GARDENERS +GARDENFUL +GARDENFULS +GARDENIA +GARDENIAS +GARDENING +GARDENS +GARDEROBE +GARDEROBES +GARDYLOO +GARFISH +GARFISHES +GARGANEY +GARGANEYS +GARGANTUA +GARGANTUAN +GARGANTUAS +GARGET +GARGETS +GARGETY +GARGLE +GARGLED +GARGLER +GARGLERS +GARGLES +GARGLING +GARGOYLE +GARGOYLED +GARGOYLES +GARIBALDI +GARIBALDIS +GARIGUE +GARIGUES +GARISH +GARISHLY +GARISHNESS +GARISHNESSES +GARLAND +GARLANDED +GARLANDING +GARLANDS +GARLIC +GARLICKED +GARLICKIER +GARLICKIEST +GARLICKING +GARLICKY +GARLICS +GARMENT +GARMENTED +GARMENTING +GARMENTS +GARNER +GARNERED +GARNERING +GARNERS +GARNET +GARNETIFEROUS +GARNETS +GARNI +GARNIERITE +GARNIERITES +GARNISH +GARNISHED +GARNISHEE +GARNISHEED +GARNISHEEING +GARNISHEES +GARNISHER +GARNISHERS +GARNISHES +GARNISHING +GARNISHMENT +GARNISHMENTS +GARNITURE +GARNITURES +GAROTE +GAROTED +GAROTES +GAROTING +GAROTTE +GAROTTED +GAROTTER +GAROTTERS +GAROTTES +GAROTTING +GARPIKE +GARPIKES +GARRED +GARRET +GARRETED +GARRETS +GARRING +GARRISON +GARRISONED +GARRISONING +GARRISONS +GARRON +GARRONS +GARROTE +GARROTED +GARROTER +GARROTERS +GARROTES +GARROTING +GARROTTE +GARROTTED +GARROTTES +GARROTTING +GARRULITIES +GARRULITY +GARRULOUS +GARRULOUSLY +GARRULOUSNESS +GARRULOUSNESSES +GARS +GARTER +GARTERED +GARTERING +GARTERS +GARTH +GARTHS +GARVEY +GARVEYS +GAS +GASALIER +GASALIERS +GASBAG +GASBAGS +GASCON +GASCONADE +GASCONADED +GASCONADER +GASCONADERS +GASCONADES +GASCONADING +GASCONS +GASEITIES +GASEITY +GASELIER +GASELIERS +GASEOUS +GASEOUSNESS +GASEOUSNESSES +GASES +GASH +GASHED +GASHER +GASHES +GASHEST +GASHING +GASHOLDER +GASHOLDERS +GASHOUSE +GASHOUSES +GASIFICATION +GASIFICATIONS +GASIFIED +GASIFIER +GASIFIERS +GASIFIES +GASIFORM +GASIFY +GASIFYING +GASKET +GASKETS +GASKIN +GASKING +GASKINGS +GASKINS +GASLESS +GASLIGHT +GASLIGHTS +GASLIT +GASMAN +GASMEN +GASOGENE +GASOGENES +GASOHOL +GASOHOLS +GASOLENE +GASOLENES +GASOLIER +GASOLIERS +GASOLINE +GASOLINES +GASOLINIC +GASOMETER +GASOMETERS +GASP +GASPED +GASPER +GASPEREAU +GASPEREAUX +GASPERS +GASPING +GASPINGLY +GASPS +GASSED +GASSER +GASSERS +GASSES +GASSIER +GASSIEST +GASSILY +GASSINESS +GASSINESSES +GASSING +GASSINGS +GASSY +GAST +GASTED +GASTER +GASTERS +GASTIGHT +GASTIGHTNESS +GASTIGHTNESSES +GASTING +GASTNESS +GASTNESSES +GASTRAEA +GASTRAEAS +GASTRAL +GASTREA +GASTREAS +GASTRECTOMIES +GASTRECTOMY +GASTRIC +GASTRIN +GASTRINS +GASTRITIC +GASTRITIDES +GASTRITIS +GASTRITISES +GASTROCNEMII +GASTROCNEMIUS +GASTRODUODENAL +GASTROENTERITIS +GASTROLITH +GASTROLITHS +GASTRONOME +GASTRONOMES +GASTRONOMIC +GASTRONOMICAL +GASTRONOMICALLY +GASTRONOMIES +GASTRONOMIST +GASTRONOMISTS +GASTRONOMY +GASTROPOD +GASTROPODS +GASTROSCOPE +GASTROSCOPES +GASTROSCOPIC +GASTROSCOPIES +GASTROSCOPIST +GASTROSCOPISTS +GASTROSCOPY +GASTROTRICH +GASTROTRICHS +GASTROVASCULAR +GASTRULA +GASTRULAE +GASTRULAR +GASTRULAS +GASTRULATE +GASTRULATED +GASTRULATES +GASTRULATING +GASTRULATION +GASTRULATIONS +GASTS +GASWORKS +GAT +GATE +GATEAU +GATEAUS +GATEAUX +GATECRASH +GATECRASHED +GATECRASHES +GATECRASHING +GATED +GATEFOLD +GATEFOLDS +GATEHOUSE +GATEHOUSES +GATEKEEPER +GATEKEEPERS +GATEKEEPING +GATELESS +GATELIKE +GATEMAN +GATEMEN +GATEPOST +GATEPOSTS +GATER +GATERS +GATES +GATEWAY +GATEWAYS +GATHER +GATHERED +GATHERER +GATHERERS +GATHERING +GATHERINGS +GATHERS +GATING +GATINGS +GATOR +GATORS +GATS +GAUCHE +GAUCHELY +GAUCHENESS +GAUCHENESSES +GAUCHER +GAUCHERIE +GAUCHERIES +GAUCHEST +GAUCHO +GAUCHOS +GAUD +GAUDERIES +GAUDERY +GAUDIER +GAUDIES +GAUDIEST +GAUDILY +GAUDINESS +GAUDINESSES +GAUDS +GAUDY +GAUFFER +GAUFFERED +GAUFFERING +GAUFFERS +GAUGE +GAUGEABLE +GAUGED +GAUGER +GAUGERS +GAUGES +GAUGING +GAULEITER +GAULEITERS +GAULT +GAULTS +GAUM +GAUMED +GAUMING +GAUMS +GAUN +GAUNT +GAUNTER +GAUNTEST +GAUNTLET +GAUNTLETED +GAUNTLETING +GAUNTLETS +GAUNTLY +GAUNTNESS +GAUNTNESSES +GAUNTRIES +GAUNTRY +GAUR +GAURS +GAUSS +GAUSSES +GAUZE +GAUZELIKE +GAUZES +GAUZIER +GAUZIEST +GAUZILY +GAUZINESS +GAUZINESSES +GAUZY +GAVAGE +GAVAGES +GAVE +GAVEL +GAVELED +GAVELING +GAVELKIND +GAVELKINDS +GAVELLED +GAVELLING +GAVELOCK +GAVELOCKS +GAVELS +GAVIAL +GAVIALOID +GAVIALS +GAVOT +GAVOTS +GAVOTTE +GAVOTTED +GAVOTTES +GAVOTTING +GAWK +GAWKED +GAWKER +GAWKERS +GAWKIER +GAWKIES +GAWKIEST +GAWKILY +GAWKINESS +GAWKINESSES +GAWKING +GAWKISH +GAWKISHLY +GAWKISHNESS +GAWKISHNESSES +GAWKS +GAWKY +GAWP +GAWPED +GAWPER +GAWPERS +GAWPING +GAWPS +GAWSIE +GAWSY +GAY +GAYAL +GAYALS +GAYDAR +GAYDARS +GAYER +GAYEST +GAYETIES +GAYETY +GAYLY +GAYNESS +GAYNESSES +GAYS +GAYWINGS +GAZABO +GAZABOES +GAZABOS +GAZANIA +GAZANIAS +GAZAR +GAZARS +GAZE +GAZEBO +GAZEBOES +GAZEBOS +GAZED +GAZEHOUND +GAZEHOUNDS +GAZELLE +GAZELLES +GAZER +GAZERS +GAZES +GAZETTE +GAZETTED +GAZETTEER +GAZETTEERS +GAZETTES +GAZETTING +GAZILLION +GAZILLIONS +GAZING +GAZOGENE +GAZOGENES +GAZOO +GAZOOS +GAZPACHO +GAZPACHOS +GAZUMP +GAZUMPED +GAZUMPER +GAZUMPERS +GAZUMPING +GAZUMPS +GEANTICLINE +GEANTICLINES +GEAR +GEARBOX +GEARBOXES +GEARCASE +GEARCASES +GEARCHANGE +GEARCHANGES +GEARED +GEARHEAD +GEARHEADS +GEARING +GEARINGS +GEARLESS +GEARS +GEARSHIFT +GEARSHIFTS +GEARWHEEL +GEARWHEELS +GECK +GECKED +GECKING +GECKO +GECKOES +GECKOS +GECKS +GED +GEDS +GEE +GEED +GEEGAW +GEEGAWS +GEEING +GEEK +GEEKDOM +GEEKDOMS +GEEKED +GEEKIER +GEEKIEST +GEEKINESS +GEEKINESSES +GEEKS +GEEKY +GEEPOUND +GEEPOUNDS +GEES +GEESE +GEEST +GEESTS +GEEZ +GEEZER +GEEZERS +GEGENSCHEIN +GEGENSCHEINS +GEISHA +GEISHAS +GEL +GELABLE +GELADA +GELADAS +GELANDESPRUNG +GELANDESPRUNGS +GELANT +GELANTS +GELATE +GELATED +GELATES +GELATI +GELATIN +GELATINE +GELATINES +GELATING +GELATINIZATION +GELATINIZATIONS +GELATINIZE +GELATINIZED +GELATINIZES +GELATINIZING +GELATINOUS +GELATINOUSLY +GELATINOUSNESS +GELATINS +GELATION +GELATIONS +GELATIS +GELATO +GELATOS +GELCAP +GELCAPS +GELD +GELDED +GELDER +GELDERS +GELDING +GELDINGS +GELDS +GELEE +GELEES +GELID +GELIDITIES +GELIDITY +GELIDLY +GELIDNESS +GELIDNESSES +GELIGNITE +GELIGNITES +GELLANT +GELLANTS +GELLED +GELLING +GELS +GELSEMIA +GELSEMIUM +GELSEMIUMS +GELT +GELTS +GEM +GEMATRIA +GEMATRIAS +GEMEINSCHAFT +GEMEINSCHAFTS +GEMINAL +GEMINALLY +GEMINATE +GEMINATED +GEMINATES +GEMINATING +GEMINATION +GEMINATIONS +GEMLIKE +GEMMA +GEMMAE +GEMMATE +GEMMATED +GEMMATES +GEMMATING +GEMMATION +GEMMATIONS +GEMMED +GEMMIER +GEMMIEST +GEMMILY +GEMMINESS +GEMMINESSES +GEMMING +GEMMOLOGIES +GEMMOLOGIST +GEMMOLOGISTS +GEMMOLOGY +GEMMULE +GEMMULES +GEMMY +GEMOLOGICAL +GEMOLOGIES +GEMOLOGIST +GEMOLOGISTS +GEMOLOGY +GEMOT +GEMOTE +GEMOTES +GEMOTS +GEMS +GEMSBOK +GEMSBOKS +GEMSBUCK +GEMSBUCKS +GEMSTONE +GEMSTONES +GEMUTLICH +GEMUTLICHKEIT +GEMUTLICHKEITS +GEN +GENDARME +GENDARMERIE +GENDARMERIES +GENDARMERY +GENDARMES +GENDER +GENDERED +GENDERING +GENDERIZE +GENDERIZED +GENDERIZES +GENDERIZING +GENDERS +GENE +GENEALOGICAL +GENEALOGICALLY +GENEALOGIES +GENEALOGIST +GENEALOGISTS +GENEALOGY +GENERA +GENERABLE +GENERAL +GENERALCIES +GENERALCY +GENERALISATION +GENERALISATIONS +GENERALISE +GENERALISED +GENERALISES +GENERALISING +GENERALISSIMO +GENERALISSIMOS +GENERALIST +GENERALISTS +GENERALITIES +GENERALITY +GENERALIZABLE +GENERALIZATION +GENERALIZATIONS +GENERALIZE +GENERALIZED +GENERALIZER +GENERALIZERS +GENERALIZES +GENERALIZING +GENERALLY +GENERALS +GENERALSHIP +GENERALSHIPS +GENERATE +GENERATED +GENERATES +GENERATING +GENERATION +GENERATIONAL +GENERATIONALLY +GENERATIONS +GENERATIVE +GENERATOR +GENERATORS +GENERATRICES +GENERATRIX +GENERIC +GENERICAL +GENERICALLY +GENERICNESS +GENERICNESSES +GENERICS +GENEROSITIES +GENEROSITY +GENEROUS +GENEROUSLY +GENEROUSNESS +GENEROUSNESSES +GENES +GENESES +GENESIS +GENET +GENETIC +GENETICAL +GENETICALLY +GENETICIST +GENETICISTS +GENETICS +GENETS +GENETTE +GENETTES +GENEVA +GENEVAS +GENIAL +GENIALITIES +GENIALITY +GENIALLY +GENIC +GENICALLY +GENICULATE +GENICULATED +GENIE +GENIES +GENII +GENIP +GENIPAP +GENIPAPS +GENIPS +GENISTEIN +GENISTEINS +GENITAL +GENITALIA +GENITALIC +GENITALLY +GENITALS +GENITIVAL +GENITIVALLY +GENITIVE +GENITIVES +GENITOR +GENITORS +GENITOURINARY +GENITURE +GENITURES +GENIUS +GENIUSES +GENNAKER +GENNAKERS +GENOA +GENOAS +GENOCIDAL +GENOCIDE +GENOCIDES +GENOGRAM +GENOGRAMS +GENOISE +GENOISES +GENOM +GENOME +GENOMES +GENOMIC +GENOMICS +GENOMS +GENOTYPE +GENOTYPES +GENOTYPIC +GENOTYPICAL +GENOTYPICALLY +GENRE +GENRES +GENRO +GENROS +GENS +GENSENG +GENSENGS +GENT +GENTAMICIN +GENTAMICINS +GENTEEL +GENTEELER +GENTEELEST +GENTEELISM +GENTEELISMS +GENTEELLY +GENTEELNESS +GENTEELNESSES +GENTES +GENTIAN +GENTIANS +GENTIL +GENTILE +GENTILES +GENTILESSE +GENTILESSES +GENTILITIES +GENTILITY +GENTLE +GENTLED +GENTLEFOLK +GENTLEFOLKS +GENTLEMAN +GENTLEMANLIKE +GENTLEMANLINESS +GENTLEMANLY +GENTLEMEN +GENTLENESS +GENTLENESSES +GENTLEPERSON +GENTLEPERSONS +GENTLER +GENTLES +GENTLEST +GENTLEWOMAN +GENTLEWOMEN +GENTLING +GENTLY +GENTOO +GENTOOS +GENTRICE +GENTRICES +GENTRIES +GENTRIFICATION +GENTRIFICATIONS +GENTRIFIED +GENTRIFIER +GENTRIFIERS +GENTRIFIES +GENTRIFY +GENTRIFYING +GENTRY +GENTS +GENU +GENUA +GENUFLECT +GENUFLECTED +GENUFLECTING +GENUFLECTION +GENUFLECTIONS +GENUFLECTS +GENUINE +GENUINELY +GENUINENESS +GENUINENESSES +GENUS +GENUSES +GEOBOTANIC +GEOBOTANICAL +GEOBOTANIES +GEOBOTANIST +GEOBOTANISTS +GEOBOTANY +GEOCENTRIC +GEOCENTRICALLY +GEOCHEMICAL +GEOCHEMICALLY +GEOCHEMIST +GEOCHEMISTRIES +GEOCHEMISTRY +GEOCHEMISTS +GEOCHRONOLOGIC +GEOCHRONOLOGIES +GEOCHRONOLOGIST +GEOCHRONOLOGY +GEOCORONA +GEOCORONAE +GEOCORONAS +GEODE +GEODES +GEODESIC +GEODESICS +GEODESIES +GEODESIST +GEODESISTS +GEODESY +GEODETIC +GEODETICAL +GEODETICS +GEODIC +GEODUCK +GEODUCKS +GEOGNOSIES +GEOGNOSY +GEOGRAPHER +GEOGRAPHERS +GEOGRAPHIC +GEOGRAPHICAL +GEOGRAPHICALLY +GEOGRAPHIES +GEOGRAPHY +GEOHYDROLOGIC +GEOHYDROLOGIES +GEOHYDROLOGIST +GEOHYDROLOGISTS +GEOHYDROLOGY +GEOID +GEOIDAL +GEOIDS +GEOLOGER +GEOLOGERS +GEOLOGIC +GEOLOGICAL +GEOLOGICALLY +GEOLOGIES +GEOLOGIST +GEOLOGISTS +GEOLOGIZE +GEOLOGIZED +GEOLOGIZES +GEOLOGIZING +GEOLOGY +GEOMAGNETIC +GEOMAGNETICALLY +GEOMAGNETISM +GEOMAGNETISMS +GEOMANCER +GEOMANCERS +GEOMANCIES +GEOMANCY +GEOMANTIC +GEOMETER +GEOMETERS +GEOMETRIC +GEOMETRICAL +GEOMETRICALLY +GEOMETRICIAN +GEOMETRICIANS +GEOMETRICS +GEOMETRID +GEOMETRIDS +GEOMETRIES +GEOMETRISE +GEOMETRISED +GEOMETRISES +GEOMETRISING +GEOMETRIZATION +GEOMETRIZATIONS +GEOMETRIZE +GEOMETRIZED +GEOMETRIZES +GEOMETRIZING +GEOMETRY +GEOMORPHIC +GEOMORPHOLOGIES +GEOMORPHOLOGIST +GEOMORPHOLOGY +GEOPHAGIA +GEOPHAGIAS +GEOPHAGIES +GEOPHAGY +GEOPHONE +GEOPHONES +GEOPHYSICAL +GEOPHYSICALLY +GEOPHYSICIST +GEOPHYSICISTS +GEOPHYSICS +GEOPHYTE +GEOPHYTES +GEOPHYTIC +GEOPOLITICAL +GEOPOLITICALLY +GEOPOLITICIAN +GEOPOLITICIANS +GEOPOLITICS +GEOPONIC +GEOPONICS +GEOPRESSURED +GEOPROBE +GEOPROBES +GEORGETTE +GEORGETTES +GEORGIC +GEORGICAL +GEORGICS +GEOSCIENCE +GEOSCIENCES +GEOSCIENTIST +GEOSCIENTISTS +GEOSTATIONARY +GEOSTRATEGIC +GEOSTRATEGIES +GEOSTRATEGIST +GEOSTRATEGISTS +GEOSTRATEGY +GEOSTROPHIC +GEOSTROPHICALLY +GEOSYNCHRONOUS +GEOSYNCLINAL +GEOSYNCLINE +GEOSYNCLINES +GEOTACTIC +GEOTAXES +GEOTAXIS +GEOTECHNICAL +GEOTECTONIC +GEOTECTONICALLY +GEOTHERMAL +GEOTHERMALLY +GEOTROPIC +GEOTROPICALLY +GEOTROPISM +GEOTROPISMS +GERAH +GERAHS +GERANIAL +GERANIALS +GERANIOL +GERANIOLS +GERANIUM +GERANIUMS +GERARDIA +GERARDIAS +GERBERA +GERBERAS +GERBIL +GERBILLE +GERBILLES +GERBILS +GERENT +GERENTS +GERENUK +GERENUKS +GERFALCON +GERFALCONS +GERIATRIC +GERIATRICIAN +GERIATRICIANS +GERIATRICS +GERM +GERMAN +GERMANDER +GERMANDERS +GERMANE +GERMANELY +GERMANIC +GERMANIUM +GERMANIUMS +GERMANIZATION +GERMANIZATIONS +GERMANIZE +GERMANIZED +GERMANIZES +GERMANIZING +GERMANS +GERMEN +GERMENS +GERMFREE +GERMICIDAL +GERMICIDE +GERMICIDES +GERMIER +GERMIEST +GERMINA +GERMINABILITIES +GERMINABILITY +GERMINAL +GERMINALLY +GERMINANT +GERMINATE +GERMINATED +GERMINATES +GERMINATING +GERMINATION +GERMINATIONS +GERMINATIVE +GERMINESS +GERMINESSES +GERMLIKE +GERMPLASM +GERMPLASMS +GERMPROOF +GERMS +GERMY +GERONTIC +GERONTOCRACIES +GERONTOCRACY +GERONTOCRAT +GERONTOCRATIC +GERONTOCRATS +GERONTOLOGIC +GERONTOLOGICAL +GERONTOLOGIES +GERONTOLOGIST +GERONTOLOGISTS +GERONTOLOGY +GERONTOMORPHIC +GERRYMANDER +GERRYMANDERED +GERRYMANDERING +GERRYMANDERS +GERUND +GERUNDIAL +GERUNDIVE +GERUNDIVES +GERUNDS +GESELLSCHAFT +GESELLSCHAFTS +GESNERIA +GESNERIAD +GESNERIADS +GESSO +GESSOED +GESSOES +GEST +GESTALT +GESTALTEN +GESTALTIST +GESTALTISTS +GESTALTS +GESTAPO +GESTAPOS +GESTATE +GESTATED +GESTATES +GESTATING +GESTATION +GESTATIONAL +GESTATIONS +GESTATIVE +GESTATORY +GESTE +GESTES +GESTIC +GESTICAL +GESTICULANT +GESTICULATE +GESTICULATED +GESTICULATES +GESTICULATING +GESTICULATION +GESTICULATIONS +GESTICULATIVE +GESTICULATOR +GESTICULATORS +GESTICULATORY +GESTS +GESTURAL +GESTURALLY +GESTURE +GESTURED +GESTURER +GESTURERS +GESTURES +GESTURING +GESUNDHEIT +GET +GETA +GETABLE +GETAS +GETATABLE +GETAWAY +GETAWAYS +GETS +GETTABLE +GETTER +GETTERED +GETTERING +GETTERS +GETTING +GETUP +GETUPS +GEUM +GEUMS +GEWGAW +GEWGAWED +GEWGAWS +GEWURZTRAMINER +GEWURZTRAMINERS +GEY +GEYSER +GEYSERITE +GEYSERITES +GEYSERS +GHARIAL +GHARIALS +GHARRI +GHARRIES +GHARRIS +GHARRY +GHAST +GHASTFUL +GHASTFULLY +GHASTLIER +GHASTLIEST +GHASTLINESS +GHASTLINESSES +GHASTLY +GHAT +GHATS +GHAUT +GHAUTS +GHAZI +GHAZIES +GHAZIS +GHEE +GHEES +GHERAO +GHERAOED +GHERAOES +GHERAOING +GHERKIN +GHERKINS +GHETTO +GHETTOED +GHETTOES +GHETTOING +GHETTOIZATION +GHETTOIZATIONS +GHETTOIZE +GHETTOIZED +GHETTOIZES +GHETTOIZING +GHETTOS +GHI +GHIBLI +GHIBLIS +GHILLIE +GHILLIES +GHIS +GHOST +GHOSTED +GHOSTIER +GHOSTIEST +GHOSTING +GHOSTINGS +GHOSTLIER +GHOSTLIEST +GHOSTLIKE +GHOSTLINESS +GHOSTLINESSES +GHOSTLY +GHOSTS +GHOSTWRITE +GHOSTWRITER +GHOSTWRITERS +GHOSTWRITES +GHOSTWRITING +GHOSTWRITTEN +GHOSTWROTE +GHOSTY +GHOUL +GHOULIE +GHOULIES +GHOULISH +GHOULISHLY +GHOULISHNESS +GHOULISHNESSES +GHOULS +GHYLL +GHYLLS +GIANT +GIANTESS +GIANTESSES +GIANTISM +GIANTISMS +GIANTLIKE +GIANTS +GIAOUR +GIAOURS +GIARDIA +GIARDIAS +GIARDIASES +GIARDIASIS +GIB +GIBBED +GIBBER +GIBBERED +GIBBERELLIN +GIBBERELLINS +GIBBERING +GIBBERISH +GIBBERISHES +GIBBERS +GIBBET +GIBBETED +GIBBETING +GIBBETS +GIBBETTED +GIBBETTING +GIBBING +GIBBON +GIBBONS +GIBBOSE +GIBBOSITIES +GIBBOSITY +GIBBOUS +GIBBOUSLY +GIBBSITE +GIBBSITES +GIBE +GIBED +GIBER +GIBERS +GIBES +GIBING +GIBINGLY +GIBLET +GIBLETS +GIBS +GIBSON +GIBSONS +GID +GIDDAP +GIDDIED +GIDDIER +GIDDIES +GIDDIEST +GIDDILY +GIDDINESS +GIDDINESSES +GIDDY +GIDDYAP +GIDDYING +GIDDYUP +GIDS +GIE +GIED +GIEING +GIEN +GIES +GIFT +GIFTABLE +GIFTABLES +GIFTED +GIFTEDLY +GIFTEDNESS +GIFTEDNESSES +GIFTEE +GIFTEES +GIFTING +GIFTLESS +GIFTS +GIFTWARE +GIFTWARES +GIFTWRAP +GIFTWRAPPED +GIFTWRAPPING +GIFTWRAPS +GIG +GIGA +GIGABIT +GIGABITS +GIGABYTE +GIGABYTES +GIGACYCLE +GIGACYCLES +GIGAFLOP +GIGAFLOPS +GIGAHERTZ +GIGAHERTZES +GIGANTEAN +GIGANTESQUE +GIGANTIC +GIGANTICALLY +GIGANTISM +GIGANTISMS +GIGAS +GIGATON +GIGATONS +GIGAWATT +GIGAWATTS +GIGGED +GIGGING +GIGGLE +GIGGLED +GIGGLER +GIGGLERS +GIGGLES +GIGGLIER +GIGGLIEST +GIGGLING +GIGGLINGLY +GIGGLY +GIGHE +GIGLET +GIGLETS +GIGLOT +GIGLOTS +GIGOLO +GIGOLOS +GIGOT +GIGOTS +GIGS +GIGUE +GIGUES +GILBERT +GILBERTS +GILD +GILDED +GILDER +GILDERS +GILDHALL +GILDHALLS +GILDING +GILDINGS +GILDS +GILL +GILLED +GILLER +GILLERS +GILLIE +GILLIED +GILLIES +GILLING +GILLNET +GILLNETS +GILLNETTED +GILLNETTER +GILLNETTERS +GILLNETTING +GILLS +GILLY +GILLYFLOWER +GILLYFLOWERS +GILLYING +GILT +GILTHEAD +GILTHEADS +GILTS +GIMBAL +GIMBALED +GIMBALING +GIMBALLED +GIMBALLING +GIMBALS +GIMCRACK +GIMCRACKERIES +GIMCRACKERY +GIMCRACKS +GIMEL +GIMELS +GIMLET +GIMLETED +GIMLETING +GIMLETS +GIMMAL +GIMMALS +GIMME +GIMMES +GIMMICK +GIMMICKED +GIMMICKING +GIMMICKRIES +GIMMICKRY +GIMMICKS +GIMMICKY +GIMMIE +GIMMIES +GIMP +GIMPED +GIMPIER +GIMPIEST +GIMPING +GIMPS +GIMPY +GIN +GINGAL +GINGALL +GINGALLS +GINGALS +GINGELEY +GINGELEYS +GINGELI +GINGELIES +GINGELIS +GINGELLI +GINGELLIES +GINGELLIS +GINGELLY +GINGELY +GINGER +GINGERBREAD +GINGERBREADED +GINGERBREADS +GINGERBREADY +GINGERED +GINGERING +GINGERLINESS +GINGERLINESSES +GINGERLY +GINGERROOT +GINGERROOTS +GINGERS +GINGERSNAP +GINGERSNAPS +GINGERY +GINGHAM +GINGHAMS +GINGILI +GINGILIS +GINGILLI +GINGILLIS +GINGIVA +GINGIVAE +GINGIVAL +GINGIVECTOMIES +GINGIVECTOMY +GINGIVITIS +GINGIVITISES +GINGKO +GINGKOES +GINGKOS +GINK +GINKGO +GINKGOES +GINKGOS +GINKS +GINNED +GINNER +GINNERS +GINNIER +GINNIEST +GINNING +GINNINGS +GINNY +GINS +GINSENG +GINSENGS +GINZO +GINZOES +GIP +GIPON +GIPONS +GIPPED +GIPPER +GIPPERS +GIPPING +GIPS +GIPSIED +GIPSIES +GIPSY +GIPSYING +GIRAFFE +GIRAFFES +GIRAFFISH +GIRANDOLA +GIRANDOLAS +GIRANDOLE +GIRANDOLES +GIRASOL +GIRASOLE +GIRASOLES +GIRASOLS +GIRD +GIRDED +GIRDER +GIRDERS +GIRDING +GIRDINGLY +GIRDLE +GIRDLED +GIRDLER +GIRDLERS +GIRDLES +GIRDLING +GIRDS +GIRL +GIRLFRIEND +GIRLFRIENDS +GIRLHOOD +GIRLHOODS +GIRLIE +GIRLIER +GIRLIES +GIRLIEST +GIRLISH +GIRLISHLY +GIRLISHNESS +GIRLISHNESSES +GIRLS +GIRLY +GIRN +GIRNED +GIRNING +GIRNS +GIRO +GIROLLE +GIROLLES +GIRON +GIRONS +GIROS +GIROSOL +GIROSOLS +GIRSH +GIRSHES +GIRT +GIRTED +GIRTH +GIRTHED +GIRTHING +GIRTHS +GIRTING +GIRTS +GISARME +GISARMES +GISMO +GISMOS +GIST +GISTS +GIT +GITANO +GITANOS +GITE +GITES +GITS +GITTED +GITTERN +GITTERNS +GITTIN +GITTING +GIVE +GIVEABLE +GIVEAWAY +GIVEAWAYS +GIVEBACK +GIVEBACKS +GIVEN +GIVENS +GIVER +GIVERS +GIVES +GIVING +GIZMO +GIZMOS +GIZZARD +GIZZARDS +GJETOST +GJETOSTS +GLABELLA +GLABELLAE +GLABELLAR +GLABRATE +GLABRESCENT +GLABROUS +GLACE +GLACEED +GLACEING +GLACES +GLACIAL +GLACIALLY +GLACIATE +GLACIATED +GLACIATES +GLACIATING +GLACIATION +GLACIATIONS +GLACIER +GLACIERED +GLACIERS +GLACIOLOGICAL +GLACIOLOGIES +GLACIOLOGIST +GLACIOLOGISTS +GLACIOLOGY +GLACIS +GLACISES +GLAD +GLADDED +GLADDEN +GLADDENED +GLADDENER +GLADDENERS +GLADDENING +GLADDENS +GLADDER +GLADDEST +GLADDING +GLADE +GLADELIKE +GLADES +GLADIATE +GLADIATOR +GLADIATORIAL +GLADIATORS +GLADIER +GLADIEST +GLADIOLA +GLADIOLAR +GLADIOLAS +GLADIOLI +GLADIOLUS +GLADIOLUSES +GLADLIER +GLADLIEST +GLADLY +GLADNESS +GLADNESSES +GLADS +GLADSOME +GLADSOMELY +GLADSOMENESS +GLADSOMENESSES +GLADSOMER +GLADSOMEST +GLADSTONE +GLADSTONES +GLADY +GLAIKET +GLAIKIT +GLAIR +GLAIRE +GLAIRED +GLAIRES +GLAIRIER +GLAIRIEST +GLAIRING +GLAIRS +GLAIRY +GLAIVE +GLAIVED +GLAIVES +GLAM +GLAMOR +GLAMORISE +GLAMORISED +GLAMORISES +GLAMORISING +GLAMORIZATION +GLAMORIZATIONS +GLAMORIZE +GLAMORIZED +GLAMORIZER +GLAMORIZERS +GLAMORIZES +GLAMORIZING +GLAMOROUS +GLAMOROUSLY +GLAMOROUSNESS +GLAMOROUSNESSES +GLAMORS +GLAMOUR +GLAMOURED +GLAMOURING +GLAMOURIZE +GLAMOURIZED +GLAMOURIZES +GLAMOURIZING +GLAMOURLESS +GLAMOUROUS +GLAMOURS +GLAMS +GLANCE +GLANCED +GLANCER +GLANCERS +GLANCES +GLANCING +GLANCINGLY +GLAND +GLANDERED +GLANDERS +GLANDES +GLANDLESS +GLANDS +GLANDULAR +GLANDULARLY +GLANDULE +GLANDULES +GLANS +GLARE +GLARED +GLARES +GLARIER +GLARIEST +GLARINESS +GLARINESSES +GLARING +GLARINGLY +GLARINGNESS +GLARINGNESSES +GLARY +GLASNOST +GLASNOSTS +GLASS +GLASSBLOWER +GLASSBLOWERS +GLASSBLOWING +GLASSBLOWINGS +GLASSED +GLASSES +GLASSFUL +GLASSFULS +GLASSHOUSE +GLASSHOUSES +GLASSIE +GLASSIER +GLASSIES +GLASSIEST +GLASSILY +GLASSINE +GLASSINES +GLASSINESS +GLASSINESSES +GLASSING +GLASSLESS +GLASSMAKER +GLASSMAKERS +GLASSMAKING +GLASSMAKINGS +GLASSMAN +GLASSMEN +GLASSPAPER +GLASSPAPERED +GLASSPAPERING +GLASSPAPERS +GLASSWARE +GLASSWARES +GLASSWORK +GLASSWORKER +GLASSWORKERS +GLASSWORKS +GLASSWORM +GLASSWORMS +GLASSWORT +GLASSWORTS +GLASSY +GLAUCOMA +GLAUCOMAS +GLAUCONITE +GLAUCONITES +GLAUCONITIC +GLAUCOUS +GLAUCOUSNESS +GLAUCOUSNESSES +GLAZE +GLAZED +GLAZER +GLAZERS +GLAZES +GLAZIER +GLAZIERIES +GLAZIERS +GLAZIERY +GLAZIEST +GLAZILY +GLAZINESS +GLAZINESSES +GLAZING +GLAZINGS +GLAZY +GLEAM +GLEAMED +GLEAMER +GLEAMERS +GLEAMIER +GLEAMIEST +GLEAMING +GLEAMS +GLEAMY +GLEAN +GLEANABLE +GLEANED +GLEANER +GLEANERS +GLEANING +GLEANINGS +GLEANS +GLEBA +GLEBAE +GLEBE +GLEBELESS +GLEBES +GLED +GLEDE +GLEDES +GLEDS +GLEE +GLEED +GLEEDS +GLEEFUL +GLEEFULLY +GLEEFULNESS +GLEEFULNESSES +GLEEK +GLEEKED +GLEEKING +GLEEKS +GLEEMAN +GLEEMEN +GLEES +GLEESOME +GLEET +GLEETED +GLEETIER +GLEETIEST +GLEETING +GLEETS +GLEETY +GLEG +GLEGLY +GLEGNESS +GLEGNESSES +GLEIZATION +GLEIZATIONS +GLEN +GLENGARRIES +GLENGARRY +GLENLIKE +GLENOID +GLENS +GLEY +GLEYED +GLEYING +GLEYINGS +GLEYS +GLIA +GLIADIN +GLIADINE +GLIADINES +GLIADINS +GLIAL +GLIAS +GLIB +GLIBBER +GLIBBEST +GLIBLY +GLIBNESS +GLIBNESSES +GLIDE +GLIDED +GLIDEPATH +GLIDEPATHS +GLIDER +GLIDERS +GLIDES +GLIDING +GLIFF +GLIFFS +GLIM +GLIME +GLIMED +GLIMES +GLIMING +GLIMMER +GLIMMERED +GLIMMERING +GLIMMERINGS +GLIMMERS +GLIMPSE +GLIMPSED +GLIMPSER +GLIMPSERS +GLIMPSES +GLIMPSING +GLIMS +GLINT +GLINTED +GLINTIER +GLINTIEST +GLINTING +GLINTS +GLINTY +GLIOBLASTOMA +GLIOBLASTOMAS +GLIOBLASTOMATA +GLIOMA +GLIOMAS +GLIOMATA +GLISSADE +GLISSADED +GLISSADER +GLISSADERS +GLISSADES +GLISSADING +GLISSANDI +GLISSANDO +GLISSANDOS +GLISTEN +GLISTENED +GLISTENING +GLISTENS +GLISTER +GLISTERED +GLISTERING +GLISTERS +GLITCH +GLITCHES +GLITCHIER +GLITCHIEST +GLITCHY +GLITTER +GLITTERATI +GLITTERED +GLITTERING +GLITTERINGLY +GLITTERS +GLITTERY +GLITZ +GLITZED +GLITZES +GLITZIER +GLITZIEST +GLITZING +GLITZY +GLOAM +GLOAMING +GLOAMINGS +GLOAMS +GLOAT +GLOATED +GLOATER +GLOATERS +GLOATING +GLOATINGLY +GLOATS +GLOB +GLOBAL +GLOBALISE +GLOBALISED +GLOBALISES +GLOBALISING +GLOBALISM +GLOBALISMS +GLOBALIST +GLOBALISTS +GLOBALIZATION +GLOBALIZATIONS +GLOBALIZE +GLOBALIZED +GLOBALIZES +GLOBALIZING +GLOBALLY +GLOBATE +GLOBATED +GLOBBIER +GLOBBIEST +GLOBBY +GLOBE +GLOBED +GLOBEFISH +GLOBEFISHES +GLOBEFLOWER +GLOBEFLOWERS +GLOBELIKE +GLOBES +GLOBETROT +GLOBETROTS +GLOBETROTTED +GLOBETROTTING +GLOBIN +GLOBING +GLOBINS +GLOBOID +GLOBOIDS +GLOBOSE +GLOBOSELY +GLOBOSITIES +GLOBOSITY +GLOBOUS +GLOBS +GLOBULAR +GLOBULARS +GLOBULE +GLOBULES +GLOBULIN +GLOBULINS +GLOCHID +GLOCHIDIA +GLOCHIDIUM +GLOCHIDS +GLOCKENSPIEL +GLOCKENSPIELS +GLOGG +GLOGGS +GLOM +GLOMERA +GLOMERATE +GLOMERULAR +GLOMERULE +GLOMERULES +GLOMERULI +GLOMERULUS +GLOMMED +GLOMMING +GLOMS +GLOMUS +GLONOIN +GLONOINS +GLOOM +GLOOMED +GLOOMFUL +GLOOMIER +GLOOMIEST +GLOOMILY +GLOOMINESS +GLOOMINESSES +GLOOMING +GLOOMINGS +GLOOMS +GLOOMY +GLOP +GLOPPED +GLOPPIER +GLOPPIEST +GLOPPING +GLOPPY +GLOPS +GLORIA +GLORIAS +GLORIED +GLORIES +GLORIFICATION +GLORIFICATIONS +GLORIFIED +GLORIFIER +GLORIFIERS +GLORIFIES +GLORIFY +GLORIFYING +GLORIOLE +GLORIOLES +GLORIOUS +GLORIOUSLY +GLORIOUSNESS +GLORIOUSNESSES +GLORY +GLORYING +GLOSS +GLOSSA +GLOSSAE +GLOSSAL +GLOSSARIAL +GLOSSARIES +GLOSSARIST +GLOSSARISTS +GLOSSARY +GLOSSAS +GLOSSATOR +GLOSSATORS +GLOSSED +GLOSSEME +GLOSSEMES +GLOSSER +GLOSSERS +GLOSSES +GLOSSIER +GLOSSIES +GLOSSIEST +GLOSSILY +GLOSSINA +GLOSSINAS +GLOSSINESS +GLOSSINESSES +GLOSSING +GLOSSITIC +GLOSSITIS +GLOSSITISES +GLOSSOGRAPHER +GLOSSOGRAPHERS +GLOSSOLALIA +GLOSSOLALIAS +GLOSSOLALIST +GLOSSOLALISTS +GLOSSY +GLOST +GLOSTS +GLOTTAL +GLOTTIC +GLOTTIDES +GLOTTIS +GLOTTISES +GLOUT +GLOUTED +GLOUTING +GLOUTS +GLOVE +GLOVED +GLOVER +GLOVERS +GLOVES +GLOVING +GLOW +GLOWED +GLOWER +GLOWERED +GLOWERING +GLOWERS +GLOWFLIES +GLOWFLY +GLOWING +GLOWINGLY +GLOWS +GLOWWORM +GLOWWORMS +GLOXINIA +GLOXINIAS +GLOZE +GLOZED +GLOZES +GLOZING +GLUCAGON +GLUCAGONS +GLUCAN +GLUCANS +GLUCINIC +GLUCINUM +GLUCINUMS +GLUCOCORTICOID +GLUCOCORTICOIDS +GLUCOKINASE +GLUCOKINASES +GLUCONATE +GLUCONATES +GLUCONEOGENESES +GLUCONEOGENESIS +GLUCOSAMINE +GLUCOSAMINES +GLUCOSE +GLUCOSES +GLUCOSIC +GLUCOSIDASE +GLUCOSIDASES +GLUCOSIDE +GLUCOSIDES +GLUCOSIDIC +GLUCURONIDASE +GLUCURONIDASES +GLUCURONIDE +GLUCURONIDES +GLUE +GLUED +GLUEING +GLUELIKE +GLUEPOT +GLUEPOTS +GLUER +GLUERS +GLUES +GLUEY +GLUEYNESS +GLUEYNESSES +GLUG +GLUGGED +GLUGGING +GLUGS +GLUHWEIN +GLUHWEINS +GLUIER +GLUIEST +GLUILY +GLUINESS +GLUINESSES +GLUING +GLUM +GLUME +GLUMES +GLUMLY +GLUMMER +GLUMMEST +GLUMNESS +GLUMNESSES +GLUMPIER +GLUMPIEST +GLUMPILY +GLUMPY +GLUMS +GLUNCH +GLUNCHED +GLUNCHES +GLUNCHING +GLUON +GLUONS +GLUT +GLUTAMATE +GLUTAMATES +GLUTAMINASE +GLUTAMINASES +GLUTAMINE +GLUTAMINES +GLUTARALDEHYDE +GLUTARALDEHYDES +GLUTATHIONE +GLUTATHIONES +GLUTE +GLUTEAL +GLUTEI +GLUTELIN +GLUTELINS +GLUTEN +GLUTENIN +GLUTENINS +GLUTENOUS +GLUTENS +GLUTES +GLUTETHIMIDE +GLUTETHIMIDES +GLUTEUS +GLUTINOUS +GLUTINOUSLY +GLUTS +GLUTTED +GLUTTING +GLUTTON +GLUTTONIES +GLUTTONOUS +GLUTTONOUSLY +GLUTTONOUSNESS +GLUTTONS +GLUTTONY +GLYCAN +GLYCANS +GLYCERALDEHYDE +GLYCERALDEHYDES +GLYCERIC +GLYCERIDE +GLYCERIDES +GLYCERIDIC +GLYCERIN +GLYCERINATE +GLYCERINATED +GLYCERINATES +GLYCERINATING +GLYCERINE +GLYCERINES +GLYCERINS +GLYCEROL +GLYCEROLS +GLYCERYL +GLYCERYLS +GLYCIN +GLYCINE +GLYCINES +GLYCINS +GLYCOGEN +GLYCOGENESES +GLYCOGENESIS +GLYCOGENOLYSES +GLYCOGENOLYSIS +GLYCOGENOLYTIC +GLYCOGENS +GLYCOL +GLYCOLIC +GLYCOLIPID +GLYCOLIPIDS +GLYCOLS +GLYCOLYSES +GLYCOLYSIS +GLYCOLYTIC +GLYCONIC +GLYCONICS +GLYCOPEPTIDE +GLYCOPEPTIDES +GLYCOPROTEIN +GLYCOPROTEINS +GLYCOSIDASE +GLYCOSIDASES +GLYCOSIDE +GLYCOSIDES +GLYCOSIDIC +GLYCOSIDICALLY +GLYCOSURIA +GLYCOSURIAS +GLYCOSYL +GLYCOSYLATE +GLYCOSYLATED +GLYCOSYLATES +GLYCOSYLATING +GLYCOSYLATION +GLYCOSYLATIONS +GLYCOSYLS +GLYCYL +GLYCYLS +GLYPH +GLYPHIC +GLYPHS +GLYPTIC +GLYPTICS +GNAR +GNARL +GNARLED +GNARLIER +GNARLIEST +GNARLING +GNARLS +GNARLY +GNARR +GNARRED +GNARRING +GNARRS +GNARS +GNASH +GNASHED +GNASHES +GNASHING +GNAT +GNATCATCHER +GNATCATCHERS +GNATHAL +GNATHIC +GNATHION +GNATHIONS +GNATHITE +GNATHITES +GNATHONIC +GNATLIKE +GNATS +GNATTIER +GNATTIEST +GNATTY +GNAW +GNAWABLE +GNAWED +GNAWER +GNAWERS +GNAWING +GNAWINGLY +GNAWINGS +GNAWN +GNAWS +GNEISS +GNEISSES +GNEISSIC +GNEISSOID +GNEISSOSE +GNOCCHI +GNOME +GNOMELIKE +GNOMES +GNOMIC +GNOMICAL +GNOMISH +GNOMIST +GNOMISTS +GNOMON +GNOMONIC +GNOMONS +GNOSES +GNOSIS +GNOSTIC +GNOSTICAL +GNOSTICISM +GNOSTICISMS +GNOSTICS +GNOTOBIOTIC +GNOTOBIOTICALLY +GNU +GNUS +GO +GOA +GOAD +GOADED +GOADING +GOADLIKE +GOADS +GOAL +GOALED +GOALIE +GOALIES +GOALING +GOALKEEPER +GOALKEEPERS +GOALLESS +GOALMOUTH +GOALMOUTHS +GOALPOST +GOALPOSTS +GOALS +GOALTENDER +GOALTENDERS +GOALTENDING +GOALTENDINGS +GOALWARD +GOANNA +GOANNAS +GOAS +GOAT +GOATEE +GOATEED +GOATEES +GOATFISH +GOATFISHES +GOATHERD +GOATHERDS +GOATISH +GOATISHLY +GOATLIKE +GOATS +GOATSKIN +GOATSKINS +GOATSUCKER +GOATSUCKERS +GOB +GOBAN +GOBANG +GOBANGS +GOBANS +GOBBED +GOBBET +GOBBETS +GOBBING +GOBBLE +GOBBLED +GOBBLEDEGOOK +GOBBLEDEGOOKS +GOBBLEDYGOOK +GOBBLEDYGOOKS +GOBBLER +GOBBLERS +GOBBLES +GOBBLING +GOBIES +GOBIOID +GOBIOIDS +GOBLET +GOBLETS +GOBLIN +GOBLINS +GOBO +GOBOES +GOBONEE +GOBONY +GOBOS +GOBS +GOBSHITE +GOBSHITES +GOBY +GOD +GODCHILD +GODCHILDREN +GODDAM +GODDAMMED +GODDAMMING +GODDAMN +GODDAMNDEST +GODDAMNED +GODDAMNEDEST +GODDAMNING +GODDAMNS +GODDAMS +GODDAUGHTER +GODDAUGHTERS +GODDED +GODDESS +GODDESSES +GODDING +GODET +GODETIA +GODETIAS +GODETS +GODFATHER +GODFATHERED +GODFATHERING +GODFATHERS +GODFORSAKEN +GODHEAD +GODHEADS +GODHOOD +GODHOODS +GODLESS +GODLESSLY +GODLESSNESS +GODLESSNESSES +GODLIER +GODLIEST +GODLIKE +GODLIKENESS +GODLIKENESSES +GODLILY +GODLINESS +GODLINESSES +GODLING +GODLINGS +GODLY +GODMOTHER +GODMOTHERED +GODMOTHERING +GODMOTHERS +GODOWN +GODOWNS +GODPARENT +GODPARENTS +GODROON +GODROONS +GODS +GODSEND +GODSENDS +GODSHIP +GODSHIPS +GODSON +GODSONS +GODWIT +GODWITS +GOER +GOERS +GOES +GOETHITE +GOETHITES +GOFER +GOFERS +GOFFER +GOFFERED +GOFFERING +GOFFERINGS +GOFFERS +GOGGLE +GOGGLED +GOGGLER +GOGGLERS +GOGGLES +GOGGLIER +GOGGLIEST +GOGGLING +GOGGLY +GOGLET +GOGLETS +GOGO +GOGOS +GOING +GOINGS +GOITER +GOITERS +GOITRE +GOITRES +GOITROGEN +GOITROGENIC +GOITROGENICITY +GOITROGENS +GOITROUS +GOLCONDA +GOLCONDAS +GOLD +GOLDARN +GOLDARNS +GOLDBRICK +GOLDBRICKED +GOLDBRICKING +GOLDBRICKS +GOLDBUG +GOLDBUGS +GOLDEN +GOLDENER +GOLDENEST +GOLDENEYE +GOLDENEYES +GOLDENLY +GOLDENNESS +GOLDENNESSES +GOLDENROD +GOLDENRODS +GOLDENSEAL +GOLDENSEALS +GOLDER +GOLDEST +GOLDEYE +GOLDEYES +GOLDFIELD +GOLDFIELDS +GOLDFINCH +GOLDFINCHES +GOLDFISH +GOLDFISHES +GOLDS +GOLDSMITH +GOLDSMITHS +GOLDSTONE +GOLDSTONES +GOLDTONE +GOLDURN +GOLDURNS +GOLEM +GOLEMS +GOLF +GOLFED +GOLFER +GOLFERS +GOLFING +GOLFINGS +GOLFS +GOLGOTHA +GOLGOTHAS +GOLIARD +GOLIARDIC +GOLIARDS +GOLIATH +GOLIATHS +GOLLIWOG +GOLLIWOGG +GOLLIWOGGS +GOLLIWOGS +GOLLY +GOLLYWOG +GOLLYWOGS +GOLOSH +GOLOSHE +GOLOSHES +GOMBEEN +GOMBEENS +GOMBO +GOMBOS +GOMBROON +GOMBROONS +GOMER +GOMERAL +GOMERALS +GOMEREL +GOMERELS +GOMERIL +GOMERILS +GOMERS +GOMPHOSES +GOMPHOSIS +GOMUTI +GOMUTIS +GONAD +GONADAL +GONADECTOMIES +GONADECTOMIZED +GONADECTOMY +GONADIAL +GONADIC +GONADOTROPHIC +GONADOTROPHIN +GONADOTROPHINS +GONADOTROPIC +GONADOTROPIN +GONADOTROPINS +GONADS +GONDOLA +GONDOLAS +GONDOLIER +GONDOLIERS +GONE +GONEF +GONEFS +GONENESS +GONENESSES +GONER +GONERS +GONFALON +GONFALONS +GONFANON +GONFANONS +GONG +GONGED +GONGING +GONGLIKE +GONGORISTIC +GONGS +GONIA +GONIDIA +GONIDIAL +GONIDIC +GONIDIUM +GONIF +GONIFF +GONIFFS +GONIFS +GONIOMETER +GONIOMETERS +GONIOMETRIC +GONIOMETRIES +GONIOMETRY +GONION +GONIUM +GONOCOCCAL +GONOCOCCI +GONOCOCCUS +GONOCYTE +GONOCYTES +GONOF +GONOFS +GONOPH +GONOPHORE +GONOPHORES +GONOPHS +GONOPORE +GONOPORES +GONORRHEA +GONORRHEAL +GONORRHEAS +GONZO +GOO +GOOBER +GOOBERS +GOOD +GOODBY +GOODBYE +GOODBYES +GOODBYS +GOODIE +GOODIES +GOODISH +GOODLIER +GOODLIEST +GOODLY +GOODMAN +GOODMEN +GOODNESS +GOODNESSES +GOODS +GOODWIFE +GOODWILL +GOODWILLED +GOODWILLS +GOODWIVES +GOODY +GOOEY +GOOEYNESS +GOOEYNESSES +GOOF +GOOFBALL +GOOFBALLS +GOOFED +GOOFIER +GOOFIEST +GOOFILY +GOOFINESS +GOOFINESSES +GOOFING +GOOFS +GOOFY +GOOGLIES +GOOGLY +GOOGOL +GOOGOLPLEX +GOOGOLPLEXES +GOOGOLS +GOOIER +GOOIEST +GOOK +GOOKS +GOOKY +GOOMBAH +GOOMBAHS +GOOMBAY +GOOMBAYS +GOON +GOONEY +GOONEYS +GOONIE +GOONIER +GOONIES +GOONIEST +GOONS +GOONY +GOOP +GOOPIER +GOOPIEST +GOOPS +GOOPY +GOORAL +GOORALS +GOOS +GOOSANDER +GOOSANDERS +GOOSE +GOOSEBERRIES +GOOSEBERRY +GOOSED +GOOSEFISH +GOOSEFISHES +GOOSEFLESH +GOOSEFLESHES +GOOSEFOOT +GOOSEFOOTS +GOOSEGRASS +GOOSEGRASSES +GOOSEHERD +GOOSEHERDS +GOOSENECK +GOOSENECKED +GOOSENECKS +GOOSES +GOOSEY +GOOSIER +GOOSIEST +GOOSING +GOOSY +GOPHER +GOPHERS +GOPIK +GOR +GORAL +GORALS +GORBELLIES +GORBELLY +GORBLIMY +GORCOCK +GORCOCKS +GORDITA +GORDITAS +GORE +GORED +GORES +GORGE +GORGED +GORGEDLY +GORGEOUS +GORGEOUSLY +GORGEOUSNESS +GORGEOUSNESSES +GORGER +GORGERIN +GORGERINS +GORGERS +GORGES +GORGET +GORGETED +GORGETS +GORGING +GORGON +GORGONIAN +GORGONIANS +GORGONIZE +GORGONIZED +GORGONIZES +GORGONIZING +GORGONS +GORHEN +GORHENS +GORIER +GORIEST +GORILLA +GORILLAS +GORILY +GORINESS +GORINESSES +GORING +GORM +GORMAND +GORMANDISE +GORMANDISED +GORMANDISES +GORMANDISING +GORMANDIZE +GORMANDIZED +GORMANDIZER +GORMANDIZERS +GORMANDIZES +GORMANDIZING +GORMANDS +GORMED +GORMING +GORMLESS +GORMS +GORP +GORPS +GORSE +GORSES +GORSIER +GORSIEST +GORSY +GORY +GOS +GOSH +GOSHAWK +GOSHAWKS +GOSLING +GOSLINGS +GOSPEL +GOSPELER +GOSPELERS +GOSPELLER +GOSPELLERS +GOSPELLY +GOSPELS +GOSPORT +GOSPORTS +GOSSAMER +GOSSAMERS +GOSSAMERY +GOSSAN +GOSSANS +GOSSIP +GOSSIPED +GOSSIPER +GOSSIPERS +GOSSIPING +GOSSIPMONGER +GOSSIPMONGERS +GOSSIPPED +GOSSIPPER +GOSSIPPERS +GOSSIPPING +GOSSIPRIES +GOSSIPRY +GOSSIPS +GOSSIPY +GOSSOON +GOSSOONS +GOSSYPOL +GOSSYPOLS +GOT +GOTCHA +GOTCHAS +GOTH +GOTHIC +GOTHICALLY +GOTHICISM +GOTHICISMS +GOTHICIZE +GOTHICIZED +GOTHICIZES +GOTHICIZING +GOTHICS +GOTHITE +GOTHITES +GOTHS +GOTTEN +GOUACHE +GOUACHES +GOUGE +GOUGED +GOUGER +GOUGERS +GOUGES +GOUGING +GOULASH +GOULASHES +GOURAMI +GOURAMIES +GOURAMIS +GOURD +GOURDE +GOURDES +GOURDS +GOURMAND +GOURMANDISE +GOURMANDISES +GOURMANDISM +GOURMANDISMS +GOURMANDIZE +GOURMANDIZED +GOURMANDIZES +GOURMANDIZING +GOURMANDS +GOURMET +GOURMETS +GOUT +GOUTIER +GOUTIEST +GOUTILY +GOUTINESS +GOUTINESSES +GOUTS +GOUTY +GOVERN +GOVERNABLE +GOVERNANCE +GOVERNANCES +GOVERNED +GOVERNESS +GOVERNESSES +GOVERNESSY +GOVERNING +GOVERNMENT +GOVERNMENTAL +GOVERNMENTALISM +GOVERNMENTALIST +GOVERNMENTALIZE +GOVERNMENTALLY +GOVERNMENTESE +GOVERNMENTESES +GOVERNMENTS +GOVERNOR +GOVERNORATE +GOVERNORATES +GOVERNORS +GOVERNORSHIP +GOVERNORSHIPS +GOVERNS +GOWAN +GOWANED +GOWANS +GOWANY +GOWD +GOWDS +GOWK +GOWKS +GOWN +GOWNED +GOWNING +GOWNS +GOWNSMAN +GOWNSMEN +GOX +GOXES +GOY +GOYIM +GOYISH +GOYS +GRAAL +GRAALS +GRAB +GRABBABLE +GRABBED +GRABBER +GRABBERS +GRABBIER +GRABBIEST +GRABBING +GRABBLE +GRABBLED +GRABBLER +GRABBLERS +GRABBLES +GRABBLING +GRABBY +GRABEN +GRABENS +GRABS +GRACE +GRACED +GRACEFUL +GRACEFULLER +GRACEFULLEST +GRACEFULLY +GRACEFULNESS +GRACEFULNESSES +GRACELESS +GRACELESSLY +GRACELESSNESS +GRACELESSNESSES +GRACES +GRACILE +GRACILENESS +GRACILENESSES +GRACILES +GRACILIS +GRACILITIES +GRACILITY +GRACING +GRACIOSO +GRACIOSOS +GRACIOUS +GRACIOUSLY +GRACIOUSNESS +GRACIOUSNESSES +GRACKLE +GRACKLES +GRAD +GRADABLE +GRADATE +GRADATED +GRADATES +GRADATING +GRADATION +GRADATIONAL +GRADATIONALLY +GRADATIONS +GRADE +GRADED +GRADELESS +GRADER +GRADERS +GRADES +GRADIENT +GRADIENTS +GRADIN +GRADINE +GRADINES +GRADING +GRADINS +GRADIOMETER +GRADIOMETERS +GRADS +GRADUAL +GRADUALISM +GRADUALISMS +GRADUALIST +GRADUALISTS +GRADUALLY +GRADUALNESS +GRADUALNESSES +GRADUALS +GRADUAND +GRADUANDS +GRADUATE +GRADUATED +GRADUATES +GRADUATING +GRADUATION +GRADUATIONS +GRADUATOR +GRADUATORS +GRADUS +GRADUSES +GRAECIZE +GRAECIZED +GRAECIZES +GRAECIZING +GRAFFITI +GRAFFITIED +GRAFFITIING +GRAFFITING +GRAFFITIS +GRAFFITIST +GRAFFITISTS +GRAFFITO +GRAFT +GRAFTAGE +GRAFTAGES +GRAFTED +GRAFTER +GRAFTERS +GRAFTING +GRAFTS +GRAHAM +GRAHAMS +GRAIL +GRAILS +GRAIN +GRAINED +GRAINER +GRAINERS +GRAINFIELD +GRAINFIELDS +GRAINIER +GRAINIEST +GRAININESS +GRAININESSES +GRAINING +GRAINLESS +GRAINS +GRAINY +GRAM +GRAMA +GRAMARIES +GRAMARY +GRAMARYE +GRAMARYES +GRAMAS +GRAMERCIES +GRAMERCY +GRAMICIDIN +GRAMICIDINS +GRAMINEOUS +GRAMINIVOROUS +GRAMMA +GRAMMAR +GRAMMARIAN +GRAMMARIANS +GRAMMARS +GRAMMAS +GRAMMATICAL +GRAMMATICALITY +GRAMMATICALLY +GRAMMATICALNESS +GRAMME +GRAMMES +GRAMOPHONE +GRAMOPHONES +GRAMP +GRAMPA +GRAMPAS +GRAMPS +GRAMPUS +GRAMPUSES +GRAMS +GRAN +GRANA +GRANADILLA +GRANADILLAS +GRANARIES +GRANARY +GRAND +GRANDAD +GRANDADDIES +GRANDADDY +GRANDADS +GRANDAM +GRANDAME +GRANDAMES +GRANDAMS +GRANDAUNT +GRANDAUNTS +GRANDBABIES +GRANDBABY +GRANDCHILD +GRANDCHILDREN +GRANDDAD +GRANDDADDIES +GRANDDADDY +GRANDDADS +GRANDDAM +GRANDDAMS +GRANDDAUGHTER +GRANDDAUGHTERS +GRANDEE +GRANDEES +GRANDER +GRANDEST +GRANDEUR +GRANDEURS +GRANDFATHER +GRANDFATHERED +GRANDFATHERING +GRANDFATHERLY +GRANDFATHERS +GRANDIFLORA +GRANDIFLORAS +GRANDILOQUENCE +GRANDILOQUENCES +GRANDILOQUENT +GRANDILOQUENTLY +GRANDIOSE +GRANDIOSELY +GRANDIOSENESS +GRANDIOSENESSES +GRANDIOSITIES +GRANDIOSITY +GRANDIOSO +GRANDKID +GRANDKIDS +GRANDLY +GRANDMA +GRANDMAMA +GRANDMAMAS +GRANDMAS +GRANDMOTHER +GRANDMOTHERLY +GRANDMOTHERS +GRANDNEPHEW +GRANDNEPHEWS +GRANDNESS +GRANDNESSES +GRANDNIECE +GRANDNIECES +GRANDPA +GRANDPAPA +GRANDPAPAS +GRANDPARENT +GRANDPARENTAL +GRANDPARENTHOOD +GRANDPARENTS +GRANDPAS +GRANDS +GRANDSIR +GRANDSIRE +GRANDSIRES +GRANDSIRS +GRANDSON +GRANDSONS +GRANDSTAND +GRANDSTANDED +GRANDSTANDER +GRANDSTANDERS +GRANDSTANDING +GRANDSTANDS +GRANDUNCLE +GRANDUNCLES +GRANGE +GRANGER +GRANGERISM +GRANGERISMS +GRANGERS +GRANGES +GRANITA +GRANITAS +GRANITE +GRANITELIKE +GRANITES +GRANITEWARE +GRANITEWARES +GRANITIC +GRANITOID +GRANIVOROUS +GRANNIE +GRANNIES +GRANNY +GRANODIORITE +GRANODIORITES +GRANODIORITIC +GRANOLA +GRANOLAS +GRANOLITH +GRANOLITHIC +GRANOLITHS +GRANOPHYRE +GRANOPHYRES +GRANOPHYRIC +GRANS +GRANT +GRANTABLE +GRANTED +GRANTEE +GRANTEES +GRANTER +GRANTERS +GRANTING +GRANTOR +GRANTORS +GRANTS +GRANTSMAN +GRANTSMANSHIP +GRANTSMANSHIPS +GRANTSMEN +GRANULAR +GRANULARITIES +GRANULARITY +GRANULATE +GRANULATED +GRANULATES +GRANULATING +GRANULATION +GRANULATIONS +GRANULATOR +GRANULATORS +GRANULE +GRANULES +GRANULITE +GRANULITES +GRANULITIC +GRANULOCYTE +GRANULOCYTES +GRANULOCYTIC +GRANULOMA +GRANULOMAS +GRANULOMATA +GRANULOMATOUS +GRANULOSE +GRANULOSES +GRANULOSIS +GRANUM +GRAPE +GRAPEFRUIT +GRAPEFRUITS +GRAPELIKE +GRAPERIES +GRAPERY +GRAPES +GRAPESHOT +GRAPEVINE +GRAPEVINES +GRAPEY +GRAPH +GRAPHED +GRAPHEME +GRAPHEMES +GRAPHEMIC +GRAPHEMICALLY +GRAPHEMICS +GRAPHIC +GRAPHICAL +GRAPHICALLY +GRAPHICNESS +GRAPHICNESSES +GRAPHICS +GRAPHING +GRAPHITE +GRAPHITES +GRAPHITIC +GRAPHITIZABLE +GRAPHITIZATION +GRAPHITIZATIONS +GRAPHITIZE +GRAPHITIZED +GRAPHITIZES +GRAPHITIZING +GRAPHOLECT +GRAPHOLECTS +GRAPHOLOGICAL +GRAPHOLOGIES +GRAPHOLOGIST +GRAPHOLOGISTS +GRAPHOLOGY +GRAPHS +GRAPIER +GRAPIEST +GRAPINESS +GRAPINESSES +GRAPLIN +GRAPLINE +GRAPLINES +GRAPLINS +GRAPNEL +GRAPNELS +GRAPPA +GRAPPAS +GRAPPLE +GRAPPLED +GRAPPLER +GRAPPLERS +GRAPPLES +GRAPPLING +GRAPPLINGS +GRAPTOLITE +GRAPTOLITES +GRAPY +GRASP +GRASPABLE +GRASPED +GRASPER +GRASPERS +GRASPING +GRASPINGLY +GRASPINGNESS +GRASPINGNESSES +GRASPS +GRASS +GRASSED +GRASSES +GRASSHOPPER +GRASSHOPPERS +GRASSIER +GRASSIEST +GRASSILY +GRASSING +GRASSLAND +GRASSLANDS +GRASSLESS +GRASSLIKE +GRASSPLOT +GRASSPLOTS +GRASSROOT +GRASSROOTS +GRASSY +GRAT +GRATE +GRATED +GRATEFUL +GRATEFULLER +GRATEFULLEST +GRATEFULLY +GRATEFULNESS +GRATEFULNESSES +GRATELESS +GRATER +GRATERS +GRATES +GRATICULE +GRATICULES +GRATIFICATION +GRATIFICATIONS +GRATIFIED +GRATIFIER +GRATIFIERS +GRATIFIES +GRATIFY +GRATIFYING +GRATIFYINGLY +GRATIN +GRATINE +GRATINEE +GRATINEED +GRATINEEING +GRATINEES +GRATING +GRATINGLY +GRATINGS +GRATINS +GRATIS +GRATITUDE +GRATITUDES +GRATUITIES +GRATUITOUS +GRATUITOUSLY +GRATUITOUSNESS +GRATUITY +GRATULATE +GRATULATED +GRATULATES +GRATULATING +GRATULATION +GRATULATIONS +GRATULATORY +GRAUPEL +GRAUPELS +GRAVAMEN +GRAVAMENS +GRAVAMINA +GRAVE +GRAVED +GRAVEL +GRAVELED +GRAVELESS +GRAVELIKE +GRAVELING +GRAVELLED +GRAVELLING +GRAVELLY +GRAVELS +GRAVELY +GRAVEN +GRAVENESS +GRAVENESSES +GRAVER +GRAVERS +GRAVES +GRAVESIDE +GRAVESIDES +GRAVESITE +GRAVESITES +GRAVEST +GRAVESTONE +GRAVESTONES +GRAVEWARD +GRAVEYARD +GRAVEYARDS +GRAVID +GRAVIDA +GRAVIDAE +GRAVIDAS +GRAVIDITIES +GRAVIDITY +GRAVIDLY +GRAVIES +GRAVIMETER +GRAVIMETERS +GRAVIMETRIC +GRAVIMETRICALLY +GRAVIMETRIES +GRAVIMETRY +GRAVING +GRAVITAS +GRAVITASES +GRAVITATE +GRAVITATED +GRAVITATES +GRAVITATING +GRAVITATION +GRAVITATIONAL +GRAVITATIONALLY +GRAVITATIONS +GRAVITATIVE +GRAVITIES +GRAVITINO +GRAVITINOS +GRAVITON +GRAVITONS +GRAVITY +GRAVLAKS +GRAVLAX +GRAVURE +GRAVURES +GRAVY +GRAY +GRAYBACK +GRAYBACKS +GRAYBEARD +GRAYBEARDS +GRAYED +GRAYER +GRAYEST +GRAYFISH +GRAYFISHES +GRAYHOUND +GRAYHOUNDS +GRAYING +GRAYISH +GRAYLAG +GRAYLAGS +GRAYLING +GRAYLINGS +GRAYLY +GRAYMAIL +GRAYMAILS +GRAYNESS +GRAYNESSES +GRAYOUT +GRAYOUTS +GRAYS +GRAYSCALE +GRAYWACKE +GRAYWACKES +GRAYWATER +GRAYWATERS +GRAZABLE +GRAZE +GRAZEABLE +GRAZED +GRAZER +GRAZERS +GRAZES +GRAZIER +GRAZIERS +GRAZING +GRAZINGLY +GRAZINGS +GRAZIOSO +GREASE +GREASEBALL +GREASEBALLS +GREASED +GREASELESS +GREASEPAINT +GREASEPAINTS +GREASEPROOF +GREASEPROOFS +GREASER +GREASERS +GREASES +GREASEWOOD +GREASEWOODS +GREASIER +GREASIEST +GREASILY +GREASINESS +GREASINESSES +GREASING +GREASY +GREAT +GREATCOAT +GREATCOATS +GREATEN +GREATENED +GREATENING +GREATENS +GREATER +GREATEST +GREATHEARTED +GREATHEARTEDLY +GREATLY +GREATNESS +GREATNESSES +GREATS +GREAVE +GREAVED +GREAVES +GREBE +GREBES +GRECIANIZE +GRECIANIZED +GRECIANIZES +GRECIANIZING +GRECIZE +GRECIZED +GRECIZES +GRECIZING +GREE +GREED +GREEDIER +GREEDIEST +GREEDILY +GREEDINESS +GREEDINESSES +GREEDLESS +GREEDS +GREEDSOME +GREEDY +GREEGREE +GREEGREES +GREEING +GREEK +GREEN +GREENBACK +GREENBACKER +GREENBACKERS +GREENBACKISM +GREENBACKISMS +GREENBACKS +GREENBELT +GREENBELTS +GREENBRIER +GREENBRIERS +GREENBUG +GREENBUGS +GREENED +GREENER +GREENERIES +GREENERY +GREENEST +GREENFIELD +GREENFIELDS +GREENFINCH +GREENFINCHES +GREENFLIES +GREENFLY +GREENGAGE +GREENGAGES +GREENGROCER +GREENGROCERIES +GREENGROCERS +GREENGROCERY +GREENHEAD +GREENHEADS +GREENHEART +GREENHEARTS +GREENHORN +GREENHORNS +GREENHOUSE +GREENHOUSES +GREENIE +GREENIER +GREENIES +GREENIEST +GREENING +GREENINGS +GREENISH +GREENISHNESS +GREENISHNESSES +GREENKEEPER +GREENKEEPERS +GREENLET +GREENLETS +GREENLIGHT +GREENLIGHTED +GREENLIGHTING +GREENLIGHTS +GREENLING +GREENLINGS +GREENLIT +GREENLY +GREENMAIL +GREENMAILED +GREENMAILER +GREENMAILERS +GREENMAILING +GREENMAILS +GREENNESS +GREENNESSES +GREENOCKITE +GREENOCKITES +GREENROOM +GREENROOMS +GREENS +GREENSAND +GREENSANDS +GREENSHANK +GREENSHANKS +GREENSICK +GREENSICKNESS +GREENSICKNESSES +GREENSKEEPER +GREENSKEEPERS +GREENSTONE +GREENSTONES +GREENSTUFF +GREENSTUFFS +GREENSWARD +GREENSWARDS +GREENTH +GREENTHS +GREENWASH +GREENWASHES +GREENWAY +GREENWAYS +GREENWING +GREENWINGS +GREENWOOD +GREENWOODS +GREENY +GREES +GREET +GREETED +GREETER +GREETERS +GREETING +GREETINGS +GREETS +GREGARINE +GREGARINES +GREGARIOUS +GREGARIOUSLY +GREGARIOUSNESS +GREGO +GREGOS +GREIGE +GREIGES +GREISEN +GREISENS +GREMIAL +GREMIALS +GREMLIN +GREMLINS +GREMMIE +GREMMIES +GREMMY +GRENADE +GRENADES +GRENADIER +GRENADIERS +GRENADINE +GRENADINES +GREW +GREWSOME +GREWSOMER +GREWSOMEST +GREY +GREYED +GREYER +GREYEST +GREYHEN +GREYHENS +GREYHOUND +GREYHOUNDS +GREYING +GREYISH +GREYLAG +GREYLAGS +GREYLY +GREYNESS +GREYNESSES +GREYS +GRIBBLE +GRIBBLES +GRID +GRIDDED +GRIDDER +GRIDDERS +GRIDDLE +GRIDDLED +GRIDDLES +GRIDDLING +GRIDE +GRIDED +GRIDES +GRIDING +GRIDIRON +GRIDIRONED +GRIDIRONING +GRIDIRONS +GRIDLOCK +GRIDLOCKED +GRIDLOCKING +GRIDLOCKS +GRIDS +GRIEF +GRIEFS +GRIEVANCE +GRIEVANCES +GRIEVANT +GRIEVANTS +GRIEVE +GRIEVED +GRIEVER +GRIEVERS +GRIEVES +GRIEVING +GRIEVOUS +GRIEVOUSLY +GRIEVOUSNESS +GRIEVOUSNESSES +GRIFF +GRIFFE +GRIFFES +GRIFFIN +GRIFFINS +GRIFFON +GRIFFONS +GRIFFS +GRIFT +GRIFTED +GRIFTER +GRIFTERS +GRIFTING +GRIFTS +GRIG +GRIGRI +GRIGRIS +GRIGS +GRILL +GRILLADE +GRILLADES +GRILLAGE +GRILLAGES +GRILLE +GRILLED +GRILLER +GRILLERIES +GRILLERS +GRILLERY +GRILLES +GRILLING +GRILLROOM +GRILLROOMS +GRILLS +GRILLWORK +GRILLWORKS +GRILSE +GRILSES +GRIM +GRIMACE +GRIMACED +GRIMACER +GRIMACERS +GRIMACES +GRIMACING +GRIMALKIN +GRIMALKINS +GRIME +GRIMED +GRIMES +GRIMIER +GRIMIEST +GRIMILY +GRIMINESS +GRIMINESSES +GRIMING +GRIMLY +GRIMMER +GRIMMEST +GRIMNESS +GRIMNESSES +GRIMY +GRIN +GRINCH +GRINCHES +GRIND +GRINDED +GRINDELIA +GRINDELIAS +GRINDER +GRINDERIES +GRINDERS +GRINDERY +GRINDING +GRINDINGLY +GRINDS +GRINDSTONE +GRINDSTONES +GRINGA +GRINGAS +GRINGO +GRINGOS +GRINNED +GRINNER +GRINNERS +GRINNING +GRINNINGLY +GRINS +GRIOT +GRIOTS +GRIP +GRIPE +GRIPED +GRIPER +GRIPERS +GRIPES +GRIPEY +GRIPIER +GRIPIEST +GRIPING +GRIPMAN +GRIPMEN +GRIPPE +GRIPPED +GRIPPER +GRIPPERS +GRIPPES +GRIPPIER +GRIPPIEST +GRIPPING +GRIPPINGLY +GRIPPLE +GRIPPY +GRIPS +GRIPSACK +GRIPSACKS +GRIPT +GRIPY +GRISAILLE +GRISAILLES +GRISEOFULVIN +GRISEOFULVINS +GRISEOUS +GRISETTE +GRISETTES +GRISKIN +GRISKINS +GRISLIER +GRISLIEST +GRISLINESS +GRISLINESSES +GRISLY +GRISON +GRISONS +GRIST +GRISTER +GRISTERS +GRISTLE +GRISTLES +GRISTLIER +GRISTLIEST +GRISTLINESS +GRISTLINESSES +GRISTLY +GRISTMILL +GRISTMILLS +GRISTS +GRIT +GRITH +GRITHS +GRITS +GRITTED +GRITTER +GRITTERS +GRITTIER +GRITTIEST +GRITTILY +GRITTINESS +GRITTINESSES +GRITTING +GRITTY +GRIVET +GRIVETS +GRIZZLE +GRIZZLED +GRIZZLER +GRIZZLERS +GRIZZLES +GRIZZLIER +GRIZZLIES +GRIZZLIEST +GRIZZLING +GRIZZLY +GROAN +GROANED +GROANER +GROANERS +GROANING +GROANS +GROAT +GROATS +GROCER +GROCERIES +GROCERS +GROCERY +GRODIER +GRODIEST +GRODY +GROG +GROGGERIES +GROGGERY +GROGGIER +GROGGIEST +GROGGILY +GROGGINESS +GROGGINESSES +GROGGY +GROGRAM +GROGRAMS +GROGS +GROGSHOP +GROGSHOPS +GROIN +GROINED +GROINING +GROINS +GROK +GROKKED +GROKKING +GROKS +GROMMET +GROMMETED +GROMMETING +GROMMETS +GROMWELL +GROMWELLS +GROOM +GROOMED +GROOMER +GROOMERS +GROOMING +GROOMS +GROOMSMAN +GROOMSMEN +GROOVE +GROOVED +GROOVER +GROOVERS +GROOVES +GROOVIER +GROOVIEST +GROOVING +GROOVY +GROPE +GROPED +GROPER +GROPERS +GROPES +GROPING +GROPINGLY +GROSBEAK +GROSBEAKS +GROSCHEN +GROSGRAIN +GROSGRAINS +GROSS +GROSSED +GROSSER +GROSSERS +GROSSES +GROSSEST +GROSSING +GROSSLY +GROSSNESS +GROSSNESSES +GROSSULAR +GROSSULARITE +GROSSULARITES +GROSSULARS +GROSZ +GROSZE +GROSZY +GROT +GROTESQUE +GROTESQUELY +GROTESQUENESS +GROTESQUENESSES +GROTESQUERIE +GROTESQUERIES +GROTESQUERY +GROTESQUES +GROTS +GROTTIER +GROTTIEST +GROTTO +GROTTOED +GROTTOES +GROTTOS +GROTTY +GROUCH +GROUCHED +GROUCHES +GROUCHIER +GROUCHIEST +GROUCHILY +GROUCHINESS +GROUCHINESSES +GROUCHING +GROUCHY +GROUND +GROUNDBREAKER +GROUNDBREAKERS +GROUNDBREAKING +GROUNDBURST +GROUNDBURSTS +GROUNDED +GROUNDER +GROUNDERS +GROUNDFISH +GROUNDFISHES +GROUNDHOG +GROUNDHOGS +GROUNDING +GROUNDINGS +GROUNDLESS +GROUNDLESSLY +GROUNDLESSNESS +GROUNDLING +GROUNDLINGS +GROUNDMASS +GROUNDMASSES +GROUNDNUT +GROUNDNUTS +GROUNDOUT +GROUNDOUTS +GROUNDS +GROUNDSEL +GROUNDSELS +GROUNDSHEET +GROUNDSHEETS +GROUNDSKEEPER +GROUNDSKEEPERS +GROUNDSMAN +GROUNDSMEN +GROUNDSWELL +GROUNDSWELLS +GROUNDWATER +GROUNDWATERS +GROUNDWOOD +GROUNDWOODS +GROUNDWORK +GROUNDWORKS +GROUP +GROUPABLE +GROUPED +GROUPER +GROUPERS +GROUPIE +GROUPIES +GROUPING +GROUPINGS +GROUPOID +GROUPOIDS +GROUPS +GROUPTHINK +GROUPTHINKS +GROUPUSCULE +GROUPUSCULES +GROUPWARE +GROUPWARES +GROUSE +GROUSED +GROUSER +GROUSERS +GROUSES +GROUSING +GROUT +GROUTED +GROUTER +GROUTERS +GROUTIER +GROUTIEST +GROUTING +GROUTS +GROUTY +GROVE +GROVED +GROVEL +GROVELED +GROVELER +GROVELERS +GROVELESS +GROVELING +GROVELINGLY +GROVELLED +GROVELLER +GROVELLERS +GROVELLING +GROVELS +GROVES +GROW +GROWABLE +GROWER +GROWERS +GROWING +GROWINGLY +GROWL +GROWLED +GROWLER +GROWLERS +GROWLIER +GROWLIEST +GROWLINESS +GROWLINESSES +GROWLING +GROWLINGLY +GROWLS +GROWLY +GROWN +GROWNUP +GROWNUPS +GROWS +GROWTH +GROWTHIER +GROWTHIEST +GROWTHINESS +GROWTHINESSES +GROWTHS +GROWTHY +GROYNE +GROYNES +GRUB +GRUBBED +GRUBBER +GRUBBERS +GRUBBIER +GRUBBIEST +GRUBBILY +GRUBBINESS +GRUBBINESSES +GRUBBING +GRUBBY +GRUBS +GRUBSTAKE +GRUBSTAKED +GRUBSTAKER +GRUBSTAKERS +GRUBSTAKES +GRUBSTAKING +GRUBWORM +GRUBWORMS +GRUDGE +GRUDGED +GRUDGER +GRUDGERS +GRUDGES +GRUDGING +GRUDGINGLY +GRUE +GRUEL +GRUELED +GRUELER +GRUELERS +GRUELING +GRUELINGLY +GRUELINGS +GRUELLED +GRUELLER +GRUELLERS +GRUELLING +GRUELLINGS +GRUELS +GRUES +GRUESOME +GRUESOMELY +GRUESOMENESS +GRUESOMENESSES +GRUESOMER +GRUESOMEST +GRUFF +GRUFFED +GRUFFER +GRUFFEST +GRUFFIER +GRUFFIEST +GRUFFILY +GRUFFING +GRUFFISH +GRUFFLY +GRUFFNESS +GRUFFNESSES +GRUFFS +GRUFFY +GRUGRU +GRUGRUS +GRUIFORM +GRUM +GRUMBLE +GRUMBLED +GRUMBLER +GRUMBLERS +GRUMBLES +GRUMBLING +GRUMBLINGLY +GRUMBLY +GRUME +GRUMES +GRUMMER +GRUMMEST +GRUMMET +GRUMMETED +GRUMMETING +GRUMMETS +GRUMOSE +GRUMOUS +GRUMP +GRUMPED +GRUMPHIE +GRUMPHIES +GRUMPHY +GRUMPIER +GRUMPIEST +GRUMPILY +GRUMPINESS +GRUMPINESSES +GRUMPING +GRUMPISH +GRUMPS +GRUMPY +GRUNGE +GRUNGER +GRUNGERS +GRUNGES +GRUNGIER +GRUNGIEST +GRUNGY +GRUNION +GRUNIONS +GRUNT +GRUNTED +GRUNTER +GRUNTERS +GRUNTING +GRUNTLE +GRUNTLED +GRUNTLES +GRUNTLING +GRUNTS +GRUSHIE +GRUTCH +GRUTCHED +GRUTCHES +GRUTCHING +GRUTTEN +GRUYERE +GRUYERES +GRYPHON +GRYPHONS +GUACAMOLE +GUACAMOLES +GUACHARO +GUACHAROES +GUACHAROS +GUACO +GUACOS +GUAIAC +GUAIACOL +GUAIACOLS +GUAIACS +GUAIACUM +GUAIACUMS +GUAIOCUM +GUAIOCUMS +GUAN +GUANABANA +GUANABANAS +GUANACO +GUANACOS +GUANASE +GUANASES +GUANAY +GUANAYS +GUANETHIDINE +GUANETHIDINES +GUANIDIN +GUANIDINE +GUANIDINES +GUANIDINS +GUANIN +GUANINE +GUANINES +GUANINS +GUANO +GUANOS +GUANOSINE +GUANOSINES +GUANS +GUAR +GUARANA +GUARANAS +GUARANI +GUARANIES +GUARANIS +GUARANTEE +GUARANTEED +GUARANTEEING +GUARANTEES +GUARANTIED +GUARANTIES +GUARANTOR +GUARANTORS +GUARANTY +GUARANTYING +GUARD +GUARDANT +GUARDANTS +GUARDDOG +GUARDDOGS +GUARDED +GUARDEDLY +GUARDEDNESS +GUARDEDNESSES +GUARDER +GUARDERS +GUARDHOUSE +GUARDHOUSES +GUARDIAN +GUARDIANS +GUARDIANSHIP +GUARDIANSHIPS +GUARDING +GUARDRAIL +GUARDRAILS +GUARDROOM +GUARDROOMS +GUARDS +GUARDSMAN +GUARDSMEN +GUARS +GUAVA +GUAVAS +GUAYABERA +GUAYABERAS +GUAYULE +GUAYULES +GUBERNATORIAL +GUCK +GUCKS +GUDE +GUDES +GUDGEON +GUDGEONED +GUDGEONING +GUDGEONS +GUENON +GUENONS +GUERDON +GUERDONED +GUERDONING +GUERDONS +GUERIDON +GUERIDONS +GUERILLA +GUERILLAS +GUERNSEY +GUERNSEYS +GUERRILLA +GUERRILLAS +GUESS +GUESSABLE +GUESSED +GUESSER +GUESSERS +GUESSES +GUESSING +GUESSTIMATE +GUESSTIMATED +GUESSTIMATES +GUESSTIMATING +GUESSWORK +GUESSWORKS +GUEST +GUESTED +GUESTING +GUESTS +GUFF +GUFFAW +GUFFAWED +GUFFAWING +GUFFAWS +GUFFS +GUGGLE +GUGGLED +GUGGLES +GUGGLING +GUGLET +GUGLETS +GUID +GUIDABLE +GUIDANCE +GUIDANCES +GUIDE +GUIDEBOOK +GUIDEBOOKS +GUIDED +GUIDELESS +GUIDELINE +GUIDELINES +GUIDEPOST +GUIDEPOSTS +GUIDER +GUIDERS +GUIDES +GUIDEWAY +GUIDEWAYS +GUIDEWORD +GUIDEWORDS +GUIDING +GUIDON +GUIDONS +GUIDS +GUIDWILLIE +GUILD +GUILDER +GUILDERS +GUILDHALL +GUILDHALLS +GUILDS +GUILDSHIP +GUILDSHIPS +GUILDSMAN +GUILDSMEN +GUILE +GUILED +GUILEFUL +GUILEFULLY +GUILEFULNESS +GUILEFULNESSES +GUILELESS +GUILELESSLY +GUILELESSNESS +GUILELESSNESSES +GUILES +GUILING +GUILLEMET +GUILLEMETS +GUILLEMOT +GUILLEMOTS +GUILLOCHE +GUILLOCHES +GUILLOTINE +GUILLOTINED +GUILLOTINES +GUILLOTINING +GUILT +GUILTIER +GUILTIEST +GUILTILY +GUILTINESS +GUILTINESSES +GUILTLESS +GUILTLESSLY +GUILTLESSNESS +GUILTLESSNESSES +GUILTS +GUILTY +GUIMPE +GUIMPES +GUINEA +GUINEAS +GUIPURE +GUIPURES +GUIRO +GUIROS +GUISARD +GUISARDS +GUISE +GUISED +GUISES +GUISING +GUITAR +GUITARFISH +GUITARFISHES +GUITARIST +GUITARISTS +GUITARS +GUITGUIT +GUITGUITS +GUL +GULAG +GULAGS +GULAR +GULCH +GULCHES +GULDEN +GULDENS +GULES +GULF +GULFED +GULFIER +GULFIEST +GULFING +GULFLIKE +GULFS +GULFWEED +GULFWEEDS +GULFY +GULL +GULLABLE +GULLABLY +GULLED +GULLET +GULLETS +GULLEY +GULLEYS +GULLIBILITIES +GULLIBILITY +GULLIBLE +GULLIBLY +GULLIED +GULLIES +GULLING +GULLS +GULLWING +GULLY +GULLYING +GULOSITIES +GULOSITY +GULP +GULPED +GULPER +GULPERS +GULPIER +GULPIEST +GULPING +GULPINGLY +GULPS +GULPY +GULS +GUM +GUMBALL +GUMBALLS +GUMBO +GUMBOIL +GUMBOILS +GUMBOOT +GUMBOOTS +GUMBOS +GUMBOTIL +GUMBOTILS +GUMDROP +GUMDROPS +GUMLESS +GUMLIKE +GUMLINE +GUMLINES +GUMMA +GUMMAS +GUMMATA +GUMMATOUS +GUMMED +GUMMER +GUMMERS +GUMMIER +GUMMIEST +GUMMINESS +GUMMINESSES +GUMMING +GUMMITE +GUMMITES +GUMMOSE +GUMMOSES +GUMMOSIS +GUMMOUS +GUMMY +GUMPTION +GUMPTIONS +GUMPTIOUS +GUMS +GUMSHOE +GUMSHOED +GUMSHOEING +GUMSHOES +GUMTREE +GUMTREES +GUMWEED +GUMWEEDS +GUMWOOD +GUMWOODS +GUN +GUNBOAT +GUNBOATS +GUNCOTTON +GUNCOTTONS +GUNDOG +GUNDOGS +GUNFIGHT +GUNFIGHTER +GUNFIGHTERS +GUNFIGHTING +GUNFIGHTS +GUNFIRE +GUNFIRES +GUNFLINT +GUNFLINTS +GUNFOUGHT +GUNITE +GUNITES +GUNK +GUNKHOLE +GUNKHOLED +GUNKHOLES +GUNKHOLING +GUNKIER +GUNKIEST +GUNKS +GUNKY +GUNLESS +GUNLOCK +GUNLOCKS +GUNMAN +GUNMEN +GUNMETAL +GUNMETALS +GUNNED +GUNNEL +GUNNELS +GUNNEN +GUNNER +GUNNERIES +GUNNERS +GUNNERY +GUNNIES +GUNNING +GUNNINGS +GUNNY +GUNNYBAG +GUNNYBAGS +GUNNYSACK +GUNNYSACKS +GUNPAPER +GUNPAPERS +GUNPLAY +GUNPLAYS +GUNPOINT +GUNPOINTS +GUNPOWDER +GUNPOWDERS +GUNROOM +GUNROOMS +GUNRUNNER +GUNRUNNERS +GUNRUNNING +GUNRUNNINGS +GUNS +GUNSEL +GUNSELS +GUNSHIP +GUNSHIPS +GUNSHOT +GUNSHOTS +GUNSLINGER +GUNSLINGERS +GUNSLINGING +GUNSLINGINGS +GUNSMITH +GUNSMITHING +GUNSMITHINGS +GUNSMITHS +GUNSTOCK +GUNSTOCKS +GUNWALE +GUNWALES +GUPPIES +GUPPY +GURGE +GURGED +GURGES +GURGING +GURGLE +GURGLED +GURGLES +GURGLET +GURGLETS +GURGLING +GURNARD +GURNARDS +GURNET +GURNETS +GURNEY +GURNEYS +GURRIES +GURRY +GURSH +GURSHES +GURU +GURUS +GURUSHIP +GURUSHIPS +GUSH +GUSHED +GUSHER +GUSHERS +GUSHES +GUSHIER +GUSHIEST +GUSHILY +GUSHINESS +GUSHINESSES +GUSHING +GUSHINGLY +GUSHY +GUSSET +GUSSETED +GUSSETING +GUSSETS +GUSSIE +GUSSIED +GUSSIES +GUSSY +GUSSYING +GUST +GUSTABLE +GUSTABLES +GUSTATION +GUSTATIONS +GUSTATIVE +GUSTATORILY +GUSTATORY +GUSTED +GUSTIER +GUSTIEST +GUSTILY +GUSTINESS +GUSTINESSES +GUSTING +GUSTLESS +GUSTO +GUSTOES +GUSTS +GUSTY +GUT +GUTBUCKET +GUTBUCKETS +GUTLESS +GUTLESSNESS +GUTLESSNESSES +GUTLIKE +GUTS +GUTSIER +GUTSIEST +GUTSILY +GUTSINESS +GUTSINESSES +GUTSY +GUTTA +GUTTAE +GUTTATE +GUTTATED +GUTTATION +GUTTATIONS +GUTTED +GUTTER +GUTTERED +GUTTERING +GUTTERINGS +GUTTERS +GUTTERSNIPE +GUTTERSNIPES +GUTTERSNIPISH +GUTTERY +GUTTIER +GUTTIEST +GUTTING +GUTTLE +GUTTLED +GUTTLER +GUTTLERS +GUTTLES +GUTTLING +GUTTURAL +GUTTURALISM +GUTTURALISMS +GUTTURALS +GUTTY +GUV +GUVS +GUY +GUYED +GUYING +GUYLINE +GUYLINES +GUYOT +GUYOTS +GUYS +GUZZLE +GUZZLED +GUZZLER +GUZZLERS +GUZZLES +GUZZLING +GWEDUC +GWEDUCK +GWEDUCKS +GWEDUCS +GWINE +GYBE +GYBED +GYBES +GYBING +GYM +GYMKHANA +GYMKHANAS +GYMNASIA +GYMNASIAL +GYMNASIUM +GYMNASIUMS +GYMNAST +GYMNASTIC +GYMNASTICALLY +GYMNASTICS +GYMNASTS +GYMNOSOPHIST +GYMNOSOPHISTS +GYMNOSPERM +GYMNOSPERMIES +GYMNOSPERMOUS +GYMNOSPERMS +GYMNOSPERMY +GYMS +GYNAECEA +GYNAECEUM +GYNAECIA +GYNAECIUM +GYNAECOLOGIES +GYNAECOLOGY +GYNANDRIES +GYNANDROMORPH +GYNANDROMORPHIC +GYNANDROMORPHS +GYNANDROMORPHY +GYNANDROUS +GYNANDRY +GYNARCHIC +GYNARCHIES +GYNARCHY +GYNECIA +GYNECIC +GYNECIUM +GYNECOCRACIES +GYNECOCRACY +GYNECOCRATIC +GYNECOID +GYNECOLOGIC +GYNECOLOGICAL +GYNECOLOGIES +GYNECOLOGIST +GYNECOLOGISTS +GYNECOLOGY +GYNECOMASTIA +GYNECOMASTIAS +GYNIATRIES +GYNIATRY +GYNOECIA +GYNOECIUM +GYNOGENESES +GYNOGENESIS +GYNOGENETIC +GYNOPHOBE +GYNOPHOBES +GYNOPHORE +GYNOPHORES +GYOZA +GYOZAS +GYP +GYPLURE +GYPLURES +GYPPED +GYPPER +GYPPERS +GYPPING +GYPS +GYPSEIAN +GYPSEOUS +GYPSIED +GYPSIES +GYPSIFEROUS +GYPSOPHILA +GYPSOPHILAS +GYPSTER +GYPSTERS +GYPSUM +GYPSUMS +GYPSY +GYPSYDOM +GYPSYDOMS +GYPSYING +GYPSYISH +GYPSYISM +GYPSYISMS +GYRAL +GYRALLY +GYRASE +GYRASES +GYRATE +GYRATED +GYRATES +GYRATING +GYRATION +GYRATIONAL +GYRATIONS +GYRATOR +GYRATORS +GYRATORY +GYRE +GYRED +GYRENE +GYRENES +GYRES +GYRFALCON +GYRFALCONS +GYRI +GYRING +GYRO +GYROCOMPASS +GYROCOMPASSES +GYROFREQUENCIES +GYROFREQUENCY +GYROIDAL +GYROMAGNETIC +GYRON +GYRONS +GYROPILOT +GYROPILOTS +GYROPLANE +GYROPLANES +GYROS +GYROSCOPE +GYROSCOPES +GYROSCOPIC +GYROSCOPICALLY +GYROSE +GYROSTABILIZER +GYROSTABILIZERS +GYROSTAT +GYROSTATS +GYRUS +GYTTJA +GYTTJAS +GYVE +GYVED +GYVES +GYVING +HA +HAAF +HAAFS +HAAR +HAARS +HABANERA +HABANERAS +HABANERO +HABANEROS +HABDALAH +HABDALAHS +HABERDASHER +HABERDASHERIES +HABERDASHERS +HABERDASHERY +HABERGEON +HABERGEONS +HABILE +HABILIMENT +HABILIMENTS +HABILITATE +HABILITATED +HABILITATES +HABILITATING +HABILITATION +HABILITATIONS +HABIT +HABITABILITIES +HABITABILITY +HABITABLE +HABITABLENESS +HABITABLENESSES +HABITABLY +HABITAN +HABITANS +HABITANT +HABITANTS +HABITAT +HABITATION +HABITATIONS +HABITATS +HABITED +HABITING +HABITS +HABITUAL +HABITUALLY +HABITUALNESS +HABITUALNESSES +HABITUATE +HABITUATED +HABITUATES +HABITUATING +HABITUATION +HABITUATIONS +HABITUDE +HABITUDES +HABITUE +HABITUES +HABITUS +HABOOB +HABOOBS +HABU +HABUS +HACEK +HACEKS +HACENDADO +HACENDADOS +HACHURE +HACHURED +HACHURES +HACHURING +HACIENDA +HACIENDADO +HACIENDADOS +HACIENDAS +HACK +HACKABLE +HACKAMORE +HACKAMORES +HACKBERRIES +HACKBERRY +HACKBUT +HACKBUTS +HACKED +HACKEE +HACKEES +HACKER +HACKERS +HACKIE +HACKIES +HACKING +HACKLE +HACKLED +HACKLER +HACKLERS +HACKLES +HACKLIER +HACKLIEST +HACKLING +HACKLY +HACKMAN +HACKMATACK +HACKMATACKS +HACKMEN +HACKNEY +HACKNEYED +HACKNEYING +HACKNEYS +HACKS +HACKSAW +HACKSAWED +HACKSAWING +HACKSAWN +HACKSAWS +HACKWORK +HACKWORKS +HAD +HADAL +HADARIM +HADDEST +HADDOCK +HADDOCKS +HADE +HADED +HADES +HADING +HADITH +HADITHS +HADJ +HADJEE +HADJEES +HADJES +HADJI +HADJIS +HADRON +HADRONIC +HADRONS +HADROSAUR +HADROSAURS +HADST +HAE +HAECCEITIES +HAECCEITY +HAED +HAEING +HAEM +HAEMAL +HAEMATAL +HAEMATIC +HAEMATICS +HAEMATIN +HAEMATINS +HAEMATITE +HAEMATITES +HAEMIC +HAEMIN +HAEMINS +HAEMOID +HAEMS +HAEN +HAEREDES +HAERES +HAES +HAET +HAETS +HAFFET +HAFFETS +HAFFIT +HAFFITS +HAFIZ +HAFIZES +HAFNIUM +HAFNIUMS +HAFT +HAFTARA +HAFTARAH +HAFTARAHS +HAFTARAS +HAFTAROT +HAFTAROTH +HAFTED +HAFTER +HAFTERS +HAFTING +HAFTORAH +HAFTORAHS +HAFTOROS +HAFTOROT +HAFTOROTH +HAFTS +HAG +HAGADIC +HAGADIST +HAGADISTS +HAGBERRIES +HAGBERRY +HAGBORN +HAGBUSH +HAGBUSHES +HAGBUT +HAGBUTS +HAGDON +HAGDONS +HAGFISH +HAGFISHES +HAGGADA +HAGGADAH +HAGGADAHS +HAGGADAS +HAGGADIC +HAGGADIST +HAGGADISTIC +HAGGADISTS +HAGGADOT +HAGGADOTH +HAGGARD +HAGGARDLY +HAGGARDNESS +HAGGARDNESSES +HAGGARDS +HAGGED +HAGGING +HAGGIS +HAGGISES +HAGGISH +HAGGISHLY +HAGGLE +HAGGLED +HAGGLER +HAGGLERS +HAGGLES +HAGGLING +HAGIARCHIES +HAGIARCHY +HAGIOGRAPHER +HAGIOGRAPHERS +HAGIOGRAPHIC +HAGIOGRAPHICAL +HAGIOGRAPHIES +HAGIOGRAPHY +HAGIOLOGIC +HAGIOLOGICAL +HAGIOLOGIES +HAGIOLOGY +HAGIOSCOPE +HAGIOSCOPES +HAGIOSCOPIC +HAGRIDDEN +HAGRIDE +HAGRIDER +HAGRIDERS +HAGRIDES +HAGRIDING +HAGRODE +HAGS +HAH +HAHA +HAHAS +HAHNIUM +HAHNIUMS +HAHS +HAIK +HAIKA +HAIKS +HAIKU +HAIKUS +HAIL +HAILED +HAILER +HAILERS +HAILING +HAILS +HAILSTONE +HAILSTONES +HAILSTORM +HAILSTORMS +HAIMISH +HAINT +HAINTS +HAIR +HAIRBALL +HAIRBALLS +HAIRBAND +HAIRBANDS +HAIRBREADTH +HAIRBREADTHS +HAIRBRUSH +HAIRBRUSHES +HAIRCAP +HAIRCAPS +HAIRCLOTH +HAIRCLOTHS +HAIRCUT +HAIRCUTS +HAIRCUTTER +HAIRCUTTERS +HAIRCUTTING +HAIRCUTTINGS +HAIRDO +HAIRDOS +HAIRDRESSER +HAIRDRESSERS +HAIRDRESSING +HAIRDRESSINGS +HAIRED +HAIRIER +HAIRIEST +HAIRINESS +HAIRINESSES +HAIRLESS +HAIRLESSNESS +HAIRLESSNESSES +HAIRLIKE +HAIRLINE +HAIRLINES +HAIRLOCK +HAIRLOCKS +HAIRNET +HAIRNETS +HAIRPIECE +HAIRPIECES +HAIRPIN +HAIRPINS +HAIRS +HAIRSBREADTH +HAIRSBREADTHS +HAIRSPLITTER +HAIRSPLITTERS +HAIRSPLITTING +HAIRSPLITTINGS +HAIRSPRAY +HAIRSPRAYS +HAIRSPRING +HAIRSPRINGS +HAIRSTREAK +HAIRSTREAKS +HAIRSTYLE +HAIRSTYLES +HAIRSTYLING +HAIRSTYLINGS +HAIRSTYLIST +HAIRSTYLISTS +HAIRWORK +HAIRWORKS +HAIRWORM +HAIRWORMS +HAIRY +HAJ +HAJES +HAJI +HAJIS +HAJJ +HAJJES +HAJJI +HAJJIS +HAKE +HAKEEM +HAKEEMS +HAKES +HAKIM +HAKIMS +HAKU +HAKUS +HALACHA +HALACHAS +HALACHIC +HALACHIST +HALACHISTS +HALACHOT +HALACHOTH +HALAKAH +HALAKAHS +HALAKHA +HALAKHAH +HALAKHAHS +HALAKHAS +HALAKHIC +HALAKHIST +HALAKHISTS +HALAKHOT +HALAKHOTH +HALAKIC +HALAKIST +HALAKISTS +HALAKOTH +HALAL +HALALA +HALALAH +HALALAHS +HALALAS +HALALS +HALATION +HALATIONS +HALAVAH +HALAVAHS +HALAZONE +HALAZONES +HALBERD +HALBERDS +HALBERT +HALBERTS +HALCYON +HALCYONS +HALE +HALED +HALENESS +HALENESSES +HALER +HALERS +HALERU +HALES +HALEST +HALF +HALFBACK +HALFBACKS +HALFBEAK +HALFBEAKS +HALFHEARTED +HALFHEARTEDLY +HALFHEARTEDNESS +HALFLIFE +HALFLIVES +HALFNESS +HALFNESSES +HALFPENCE +HALFPENNIES +HALFPENNY +HALFPIPE +HALFPIPES +HALFTIME +HALFTIMES +HALFTONE +HALFTONES +HALFTRACK +HALFTRACKS +HALFWAY +HALIBUT +HALIBUTS +HALID +HALIDE +HALIDES +HALIDOM +HALIDOME +HALIDOMES +HALIDOMS +HALIDS +HALING +HALITE +HALITES +HALITOSES +HALITOSIS +HALITUS +HALITUSES +HALL +HALLAH +HALLAHS +HALLAL +HALLEL +HALLELS +HALLELUJAH +HALLELUJAHS +HALLIARD +HALLIARDS +HALLMARK +HALLMARKED +HALLMARKING +HALLMARKS +HALLO +HALLOA +HALLOAED +HALLOAING +HALLOAS +HALLOED +HALLOES +HALLOING +HALLOO +HALLOOED +HALLOOING +HALLOOS +HALLOS +HALLOT +HALLOTH +HALLOW +HALLOWED +HALLOWER +HALLOWERS +HALLOWING +HALLOWS +HALLS +HALLUCAL +HALLUCES +HALLUCINATE +HALLUCINATED +HALLUCINATES +HALLUCINATING +HALLUCINATION +HALLUCINATIONS +HALLUCINATOR +HALLUCINATORS +HALLUCINATORY +HALLUCINOGEN +HALLUCINOGENIC +HALLUCINOGENICS +HALLUCINOGENS +HALLUCINOSES +HALLUCINOSIS +HALLUX +HALLWAY +HALLWAYS +HALM +HALMA +HALMAS +HALMS +HALO +HALOBIONT +HALOBIONTS +HALOCARBON +HALOCARBONS +HALOCLINE +HALOCLINES +HALOED +HALOES +HALOGEN +HALOGENATE +HALOGENATED +HALOGENATES +HALOGENATING +HALOGENATION +HALOGENATIONS +HALOGENOUS +HALOGENS +HALOGETON +HALOGETONS +HALOID +HALOIDS +HALOING +HALOLIKE +HALOMORPHIC +HALON +HALONS +HALOPERIDOL +HALOPERIDOLS +HALOPHILE +HALOPHILES +HALOPHILIC +HALOPHYTE +HALOPHYTES +HALOPHYTIC +HALOS +HALOTHANE +HALOTHANES +HALT +HALTED +HALTER +HALTERBREAK +HALTERBREAKING +HALTERBREAKS +HALTERBROKE +HALTERBROKEN +HALTERE +HALTERED +HALTERES +HALTERING +HALTERS +HALTING +HALTINGLY +HALTLESS +HALTS +HALUTZ +HALUTZIM +HALVA +HALVAH +HALVAHS +HALVAS +HALVE +HALVED +HALVERS +HALVES +HALVING +HALYARD +HALYARDS +HAM +HAMADA +HAMADAS +HAMADRYAD +HAMADRYADES +HAMADRYADS +HAMADRYAS +HAMADRYASES +HAMAL +HAMALS +HAMANTASCH +HAMANTASCHEN +HAMARTIA +HAMARTIAS +HAMATE +HAMATES +HAMAUL +HAMAULS +HAMBONE +HAMBONED +HAMBONES +HAMBONING +HAMBURG +HAMBURGER +HAMBURGERS +HAMBURGS +HAME +HAMES +HAMLET +HAMLETS +HAMMADA +HAMMADAS +HAMMAL +HAMMALS +HAMMAM +HAMMAMS +HAMMED +HAMMER +HAMMERED +HAMMERER +HAMMERERS +HAMMERHEAD +HAMMERHEADS +HAMMERING +HAMMERKOP +HAMMERKOPS +HAMMERLESS +HAMMERLOCK +HAMMERLOCKS +HAMMERS +HAMMERTOE +HAMMERTOES +HAMMIER +HAMMIEST +HAMMILY +HAMMINESS +HAMMINESSES +HAMMING +HAMMOCK +HAMMOCKS +HAMMY +HAMPER +HAMPERED +HAMPERER +HAMPERERS +HAMPERING +HAMPERS +HAMS +HAMSTER +HAMSTERS +HAMSTRING +HAMSTRINGING +HAMSTRINGS +HAMSTRUNG +HAMULAR +HAMULATE +HAMULI +HAMULOSE +HAMULOUS +HAMULUS +HAMZA +HAMZAH +HAMZAHS +HAMZAS +HANAPER +HANAPERS +HANCE +HANCES +HAND +HANDAX +HANDAXES +HANDBAG +HANDBAGS +HANDBALL +HANDBALLS +HANDBARROW +HANDBARROWS +HANDBASKET +HANDBASKETS +HANDBELL +HANDBELLS +HANDBILL +HANDBILLS +HANDBLOWN +HANDBOOK +HANDBOOKS +HANDBREADTH +HANDBREADTHS +HANDCAR +HANDCARS +HANDCART +HANDCARTS +HANDCLAP +HANDCLAPS +HANDCLASP +HANDCLASPS +HANDCRAFT +HANDCRAFTED +HANDCRAFTING +HANDCRAFTS +HANDCRAFTSMAN +HANDCRAFTSMEN +HANDCUFF +HANDCUFFED +HANDCUFFING +HANDCUFFS +HANDED +HANDEDNESS +HANDEDNESSES +HANDER +HANDERS +HANDFAST +HANDFASTED +HANDFASTING +HANDFASTS +HANDFUL +HANDFULS +HANDGRIP +HANDGRIPS +HANDGUN +HANDGUNS +HANDHELD +HANDHELDS +HANDHOLD +HANDHOLDS +HANDICAP +HANDICAPPED +HANDICAPPER +HANDICAPPERS +HANDICAPPING +HANDICAPS +HANDICRAFT +HANDICRAFTER +HANDICRAFTERS +HANDICRAFTS +HANDICRAFTSMAN +HANDICRAFTSMEN +HANDIER +HANDIEST +HANDILY +HANDINESS +HANDINESSES +HANDING +HANDIWORK +HANDIWORKS +HANDKERCHIEF +HANDKERCHIEFS +HANDKERCHIEVES +HANDLE +HANDLEABLE +HANDLEBAR +HANDLEBARS +HANDLED +HANDLELESS +HANDLER +HANDLERS +HANDLES +HANDLESS +HANDLIKE +HANDLING +HANDLINGS +HANDLIST +HANDLISTS +HANDLOOM +HANDLOOMS +HANDMADE +HANDMAID +HANDMAIDEN +HANDMAIDENS +HANDMAIDS +HANDOFF +HANDOFFS +HANDOUT +HANDOUTS +HANDOVER +HANDOVERS +HANDPICK +HANDPICKED +HANDPICKING +HANDPICKS +HANDPRESS +HANDPRESSES +HANDPRINT +HANDPRINTS +HANDRAIL +HANDRAILS +HANDS +HANDSAW +HANDSAWS +HANDSBREADTH +HANDSBREADTHS +HANDSEL +HANDSELED +HANDSELING +HANDSELLED +HANDSELLING +HANDSELS +HANDSET +HANDSETS +HANDSEWN +HANDSFUL +HANDSHAKE +HANDSHAKES +HANDSOME +HANDSOMELY +HANDSOMENESS +HANDSOMENESSES +HANDSOMER +HANDSOMEST +HANDSPIKE +HANDSPIKES +HANDSPRING +HANDSPRINGS +HANDSTAMP +HANDSTAMPED +HANDSTAMPING +HANDSTAMPS +HANDSTAND +HANDSTANDS +HANDWHEEL +HANDWHEELS +HANDWORK +HANDWORKER +HANDWORKERS +HANDWORKS +HANDWOVEN +HANDWRINGER +HANDWRINGERS +HANDWRIT +HANDWRITE +HANDWRITES +HANDWRITING +HANDWRITINGS +HANDWRITTEN +HANDWROTE +HANDWROUGHT +HANDY +HANDYMAN +HANDYMEN +HANDYPERSON +HANDYPERSONS +HANG +HANGABLE +HANGAR +HANGARED +HANGARING +HANGARS +HANGBIRD +HANGBIRDS +HANGDOG +HANGDOGS +HANGED +HANGER +HANGERS +HANGFIRE +HANGFIRES +HANGING +HANGINGS +HANGMAN +HANGMEN +HANGNAIL +HANGNAILS +HANGNEST +HANGNESTS +HANGOUT +HANGOUTS +HANGOVER +HANGOVERS +HANGS +HANGTAG +HANGTAGS +HANGUL +HANGUP +HANGUPS +HANIWA +HANK +HANKED +HANKER +HANKERED +HANKERER +HANKERERS +HANKERING +HANKERINGS +HANKERS +HANKIE +HANKIES +HANKING +HANKS +HANKY +HANSA +HANSAS +HANSE +HANSEATIC +HANSEL +HANSELED +HANSELING +HANSELLED +HANSELLING +HANSELS +HANSES +HANSOM +HANSOMS +HANT +HANTAVIRUS +HANTAVIRUSES +HANTED +HANTING +HANTLE +HANTLES +HANTS +HANUMAN +HANUMANS +HAO +HAOLE +HAOLES +HAP +HAPAX +HAPAXES +HAPHAZARD +HAPHAZARDLY +HAPHAZARDNESS +HAPHAZARDNESSES +HAPHAZARDRIES +HAPHAZARDRY +HAPHAZARDS +HAPHTARA +HAPHTARAH +HAPHTARAHS +HAPHTARAS +HAPHTAROT +HAPHTAROTH +HAPKIDO +HAPKIDOS +HAPLESS +HAPLESSLY +HAPLESSNESS +HAPLESSNESSES +HAPLITE +HAPLITES +HAPLOID +HAPLOIDIC +HAPLOIDIES +HAPLOIDS +HAPLOIDY +HAPLOLOGIES +HAPLOLOGY +HAPLONT +HAPLONTIC +HAPLONTS +HAPLOPIA +HAPLOPIAS +HAPLOSES +HAPLOSIS +HAPLOTYPE +HAPLOTYPES +HAPLY +HAPPED +HAPPEN +HAPPENCHANCE +HAPPENCHANCES +HAPPENED +HAPPENING +HAPPENINGS +HAPPENS +HAPPENSTANCE +HAPPENSTANCES +HAPPIER +HAPPIEST +HAPPILY +HAPPINESS +HAPPINESSES +HAPPING +HAPPY +HAPS +HAPTEN +HAPTENE +HAPTENES +HAPTENIC +HAPTENS +HAPTIC +HAPTICAL +HAPTOGLOBIN +HAPTOGLOBINS +HARANGUE +HARANGUED +HARANGUER +HARANGUERS +HARANGUES +HARANGUING +HARASS +HARASSED +HARASSER +HARASSERS +HARASSES +HARASSING +HARASSMENT +HARASSMENTS +HARBINGER +HARBINGERED +HARBINGERING +HARBINGERS +HARBOR +HARBORAGE +HARBORAGES +HARBORED +HARBORER +HARBORERS +HARBORFUL +HARBORFULS +HARBORING +HARBORLESS +HARBORMASTER +HARBORMASTERS +HARBOROUS +HARBORS +HARBORSIDE +HARBOUR +HARBOURED +HARBOURING +HARBOURS +HARD +HARDASS +HARDASSES +HARDBACK +HARDBACKS +HARDBALL +HARDBALLS +HARDBOARD +HARDBOARDS +HARDBOOT +HARDBOOTS +HARDBOUND +HARDBOUNDS +HARDCASE +HARDCORE +HARDCORES +HARDCOURT +HARDCOVER +HARDCOVERS +HARDEDGE +HARDEDGES +HARDEN +HARDENED +HARDENER +HARDENERS +HARDENING +HARDENINGS +HARDENS +HARDER +HARDEST +HARDFISTED +HARDGOODS +HARDHACK +HARDHACKS +HARDHANDED +HARDHANDEDNESS +HARDHAT +HARDHATS +HARDHEAD +HARDHEADED +HARDHEADEDLY +HARDHEADEDNESS +HARDHEADS +HARDIER +HARDIES +HARDIEST +HARDIHOOD +HARDIHOODS +HARDILY +HARDIMENT +HARDIMENTS +HARDINESS +HARDINESSES +HARDINGGRASS +HARDINGGRASSES +HARDLINE +HARDLY +HARDMOUTHED +HARDNESS +HARDNESSES +HARDNOSE +HARDNOSES +HARDPACK +HARDPACKS +HARDPAN +HARDPANS +HARDS +HARDSCRABBLE +HARDSET +HARDSHIP +HARDSHIPS +HARDSTAND +HARDSTANDING +HARDSTANDINGS +HARDSTANDS +HARDTACK +HARDTACKS +HARDTOP +HARDTOPS +HARDWARE +HARDWARES +HARDWIRE +HARDWIRED +HARDWIRES +HARDWIRING +HARDWOOD +HARDWOODS +HARDWORKING +HARDY +HARE +HAREBELL +HAREBELLS +HAREBRAINED +HARED +HAREEM +HAREEMS +HARELIKE +HARELIP +HARELIPS +HAREM +HAREMS +HARES +HARIANA +HARIANAS +HARICOT +HARICOTS +HARIJAN +HARIJANS +HARING +HARISSA +HARISSAS +HARK +HARKED +HARKEN +HARKENED +HARKENER +HARKENERS +HARKENING +HARKENS +HARKING +HARKS +HARL +HARLEQUIN +HARLEQUINADE +HARLEQUINADES +HARLEQUINS +HARLOT +HARLOTRIES +HARLOTRY +HARLOTS +HARLS +HARM +HARMATTAN +HARMATTANS +HARMED +HARMER +HARMERS +HARMFUL +HARMFULLY +HARMFULNESS +HARMFULNESSES +HARMIN +HARMINE +HARMINES +HARMING +HARMINS +HARMLESS +HARMLESSLY +HARMLESSNESS +HARMLESSNESSES +HARMONIC +HARMONICA +HARMONICALLY +HARMONICAS +HARMONICIST +HARMONICISTS +HARMONICS +HARMONIES +HARMONIOUS +HARMONIOUSLY +HARMONIOUSNESS +HARMONISE +HARMONISED +HARMONISES +HARMONISING +HARMONIST +HARMONISTS +HARMONIUM +HARMONIUMS +HARMONIZATION +HARMONIZATIONS +HARMONIZE +HARMONIZED +HARMONIZER +HARMONIZERS +HARMONIZES +HARMONIZING +HARMONY +HARMS +HARNESS +HARNESSED +HARNESSES +HARNESSING +HARP +HARPED +HARPER +HARPERS +HARPIES +HARPIN +HARPING +HARPINGS +HARPINS +HARPIST +HARPISTS +HARPOON +HARPOONED +HARPOONER +HARPOONERS +HARPOONING +HARPOONS +HARPS +HARPSICHORD +HARPSICHORDIST +HARPSICHORDISTS +HARPSICHORDS +HARPY +HARPYLIKE +HARQUEBUS +HARQUEBUSES +HARQUEBUSIER +HARQUEBUSIERS +HARRIDAN +HARRIDANS +HARRIED +HARRIER +HARRIERS +HARRIES +HARROW +HARROWED +HARROWER +HARROWERS +HARROWING +HARROWS +HARRUMPH +HARRUMPHED +HARRUMPHING +HARRUMPHS +HARRY +HARRYING +HARSH +HARSHEN +HARSHENED +HARSHENING +HARSHENS +HARSHER +HARSHEST +HARSHLY +HARSHNESS +HARSHNESSES +HARSLET +HARSLETS +HART +HARTAL +HARTALS +HARTEBEEST +HARTEBEESTS +HARTS +HARTSHORN +HARTSHORNS +HARUMPH +HARUMPHED +HARUMPHING +HARUMPHS +HARUSPEX +HARUSPICATION +HARUSPICATIONS +HARUSPICES +HARVEST +HARVESTABLE +HARVESTED +HARVESTER +HARVESTERS +HARVESTING +HARVESTMAN +HARVESTMEN +HARVESTS +HARVESTTIME +HARVESTTIMES +HAS +HASENPFEFFER +HASENPFEFFERS +HASH +HASHED +HASHEESH +HASHEESHES +HASHES +HASHHEAD +HASHHEADS +HASHING +HASHISH +HASHISHES +HASLET +HASLETS +HASP +HASPED +HASPING +HASPS +HASSEL +HASSELS +HASSIUM +HASSIUMS +HASSLE +HASSLED +HASSLES +HASSLING +HASSOCK +HASSOCKS +HAST +HASTATE +HASTATELY +HASTE +HASTED +HASTEFUL +HASTEN +HASTENED +HASTENER +HASTENERS +HASTENING +HASTENS +HASTES +HASTIER +HASTIEST +HASTILY +HASTINESS +HASTINESSES +HASTING +HASTY +HAT +HATABLE +HATBAND +HATBANDS +HATBOX +HATBOXES +HATCH +HATCHABILITIES +HATCHABILITY +HATCHABLE +HATCHBACK +HATCHBACKS +HATCHECK +HATCHECKS +HATCHED +HATCHEL +HATCHELED +HATCHELING +HATCHELLED +HATCHELLING +HATCHELS +HATCHER +HATCHERIES +HATCHERS +HATCHERY +HATCHES +HATCHET +HATCHETS +HATCHING +HATCHINGS +HATCHLING +HATCHLINGS +HATCHMENT +HATCHMENTS +HATCHWAY +HATCHWAYS +HATE +HATEABLE +HATED +HATEFUL +HATEFULLY +HATEFULNESS +HATEFULNESSES +HATER +HATERS +HATES +HATFUL +HATFULS +HATH +HATING +HATLESS +HATLIKE +HATMAKER +HATMAKERS +HATPIN +HATPINS +HATRACK +HATRACKS +HATRED +HATREDS +HATS +HATSFUL +HATTED +HATTER +HATTERIA +HATTERIAS +HATTERS +HATTING +HAUBERK +HAUBERKS +HAUGH +HAUGHS +HAUGHTIER +HAUGHTIEST +HAUGHTILY +HAUGHTINESS +HAUGHTINESSES +HAUGHTY +HAUL +HAULAGE +HAULAGES +HAULED +HAULER +HAULERS +HAULIER +HAULIERS +HAULING +HAULM +HAULMIER +HAULMIEST +HAULMS +HAULMY +HAULS +HAULYARD +HAULYARDS +HAUNCH +HAUNCHED +HAUNCHES +HAUNT +HAUNTED +HAUNTER +HAUNTERS +HAUNTING +HAUNTINGLY +HAUNTS +HAUSEN +HAUSENS +HAUSFRAU +HAUSFRAUEN +HAUSFRAUS +HAUSTELLA +HAUSTELLUM +HAUSTORIA +HAUSTORIAL +HAUSTORIUM +HAUT +HAUTBOIS +HAUTBOY +HAUTBOYS +HAUTE +HAUTEUR +HAUTEURS +HAVARTI +HAVARTIS +HAVDALAH +HAVDALAHS +HAVE +HAVELOCK +HAVELOCKS +HAVEN +HAVENED +HAVENING +HAVENS +HAVER +HAVERED +HAVEREL +HAVERELS +HAVERING +HAVERS +HAVERSACK +HAVERSACKS +HAVES +HAVING +HAVIOR +HAVIORS +HAVIOUR +HAVIOURS +HAVOC +HAVOCKED +HAVOCKER +HAVOCKERS +HAVOCKING +HAVOCS +HAW +HAWALA +HAWALAS +HAWED +HAWFINCH +HAWFINCHES +HAWING +HAWK +HAWKBILL +HAWKBILLS +HAWKED +HAWKER +HAWKERS +HAWKEY +HAWKEYED +HAWKEYS +HAWKIE +HAWKIES +HAWKING +HAWKINGS +HAWKISH +HAWKISHLY +HAWKISHNESS +HAWKISHNESSES +HAWKLIKE +HAWKMOTH +HAWKMOTHS +HAWKNOSE +HAWKNOSES +HAWKS +HAWKSBILL +HAWKSBILLS +HAWKSHAW +HAWKSHAWS +HAWKWEED +HAWKWEEDS +HAWS +HAWSE +HAWSEHOLE +HAWSEHOLES +HAWSEPIPE +HAWSEPIPES +HAWSER +HAWSERS +HAWSES +HAWTHORN +HAWTHORNS +HAWTHORNY +HAY +HAYCOCK +HAYCOCKS +HAYED +HAYER +HAYERS +HAYEY +HAYFIELD +HAYFIELDS +HAYFORK +HAYFORKS +HAYING +HAYINGS +HAYLAGE +HAYLAGES +HAYLOFT +HAYLOFTS +HAYMAKER +HAYMAKERS +HAYMOW +HAYMOWS +HAYRACK +HAYRACKS +HAYRICK +HAYRICKS +HAYRIDE +HAYRIDES +HAYS +HAYSEED +HAYSEEDS +HAYSTACK +HAYSTACKS +HAYWARD +HAYWARDS +HAYWIRE +HAYWIRES +HAZAN +HAZANIM +HAZANS +HAZARD +HAZARDED +HAZARDER +HAZARDERS +HAZARDING +HAZARDOUS +HAZARDOUSLY +HAZARDOUSNESS +HAZARDOUSNESSES +HAZARDS +HAZE +HAZED +HAZEL +HAZELHEN +HAZELHENS +HAZELLY +HAZELNUT +HAZELNUTS +HAZELS +HAZER +HAZERS +HAZES +HAZIER +HAZIEST +HAZILY +HAZINESS +HAZINESSES +HAZING +HAZINGS +HAZMAT +HAZMATS +HAZY +HAZZAN +HAZZANIM +HAZZANS +HE +HEAD +HEADACHE +HEADACHES +HEADACHEY +HEADACHIER +HEADACHIEST +HEADACHY +HEADBAND +HEADBANDS +HEADBOARD +HEADBOARDS +HEADCHEESE +HEADCHEESES +HEADCOUNT +HEADCOUNTS +HEADDRESS +HEADDRESSES +HEADED +HEADEND +HEADENDS +HEADER +HEADERS +HEADFIRST +HEADFISH +HEADFISHES +HEADFOREMOST +HEADFUL +HEADFULS +HEADGATE +HEADGATES +HEADGEAR +HEADGEARS +HEADHUNT +HEADHUNTED +HEADHUNTER +HEADHUNTERS +HEADHUNTING +HEADHUNTS +HEADIER +HEADIEST +HEADILY +HEADINESS +HEADINESSES +HEADING +HEADINGS +HEADLAMP +HEADLAMPS +HEADLAND +HEADLANDS +HEADLESS +HEADLESSNESS +HEADLESSNESSES +HEADLIGHT +HEADLIGHTS +HEADLINE +HEADLINED +HEADLINER +HEADLINERS +HEADLINES +HEADLINING +HEADLOCK +HEADLOCKS +HEADLONG +HEADMAN +HEADMASTER +HEADMASTERS +HEADMASTERSHIP +HEADMASTERSHIPS +HEADMEN +HEADMISTRESS +HEADMISTRESSES +HEADMOST +HEADNOTE +HEADNOTES +HEADPHONE +HEADPHONES +HEADPIECE +HEADPIECES +HEADPIN +HEADPINS +HEADQUARTER +HEADQUARTERED +HEADQUARTERING +HEADQUARTERS +HEADRACE +HEADRACES +HEADREST +HEADRESTS +HEADROOM +HEADROOMS +HEADS +HEADSAIL +HEADSAILS +HEADSET +HEADSETS +HEADSHIP +HEADSHIPS +HEADSHRINKER +HEADSHRINKERS +HEADSMAN +HEADSMEN +HEADSPACE +HEADSPACES +HEADSPRING +HEADSPRINGS +HEADSTALL +HEADSTALLS +HEADSTAND +HEADSTANDS +HEADSTAY +HEADSTAYS +HEADSTOCK +HEADSTOCKS +HEADSTONE +HEADSTONES +HEADSTREAM +HEADSTREAMS +HEADSTRONG +HEADWAITER +HEADWAITERS +HEADWATER +HEADWATERS +HEADWAY +HEADWAYS +HEADWIND +HEADWINDS +HEADWORD +HEADWORDS +HEADWORK +HEADWORKS +HEADY +HEAL +HEALABLE +HEALED +HEALER +HEALERS +HEALING +HEALS +HEALTH +HEALTHFUL +HEALTHFULNESS +HEALTHFULNESSES +HEALTHIER +HEALTHIEST +HEALTHILY +HEALTHINESS +HEALTHINESSES +HEALTHS +HEALTHY +HEAP +HEAPED +HEAPER +HEAPERS +HEAPING +HEAPS +HEAPY +HEAR +HEARABLE +HEARD +HEARER +HEARERS +HEARING +HEARINGS +HEARKEN +HEARKENED +HEARKENER +HEARKENERS +HEARKENING +HEARKENS +HEARS +HEARSAY +HEARSAYS +HEARSE +HEARSED +HEARSES +HEARSING +HEART +HEARTACHE +HEARTACHES +HEARTBEAT +HEARTBEATS +HEARTBREAK +HEARTBREAKER +HEARTBREAKERS +HEARTBREAKING +HEARTBREAKINGLY +HEARTBREAKS +HEARTBROKEN +HEARTBURN +HEARTBURNING +HEARTBURNINGS +HEARTBURNS +HEARTED +HEARTEN +HEARTENED +HEARTENER +HEARTENERS +HEARTENING +HEARTENINGLY +HEARTENS +HEARTFELT +HEARTFREE +HEARTH +HEARTHRUG +HEARTHRUGS +HEARTHS +HEARTHSTONE +HEARTHSTONES +HEARTIER +HEARTIES +HEARTIEST +HEARTILY +HEARTINESS +HEARTINESSES +HEARTING +HEARTLAND +HEARTLANDS +HEARTLESS +HEARTLESSLY +HEARTLESSNESS +HEARTLESSNESSES +HEARTRENDING +HEARTRENDINGLY +HEARTS +HEARTSEASE +HEARTSEASES +HEARTSICK +HEARTSICKNESS +HEARTSICKNESSES +HEARTSOME +HEARTSOMELY +HEARTSORE +HEARTSTRING +HEARTSTRINGS +HEARTTHROB +HEARTTHROBS +HEARTWARMING +HEARTWOOD +HEARTWOODS +HEARTWORM +HEARTWORMS +HEARTY +HEAT +HEATABLE +HEATED +HEATEDLY +HEATER +HEATERS +HEATH +HEATHBIRD +HEATHBIRDS +HEATHEN +HEATHENDOM +HEATHENDOMS +HEATHENISH +HEATHENISHLY +HEATHENISM +HEATHENISMS +HEATHENIZE +HEATHENIZED +HEATHENIZES +HEATHENIZING +HEATHENRIES +HEATHENRY +HEATHENS +HEATHER +HEATHERED +HEATHERS +HEATHERY +HEATHIER +HEATHIEST +HEATHLAND +HEATHLANDS +HEATHLESS +HEATHLIKE +HEATHS +HEATHY +HEATING +HEATLESS +HEATPROOF +HEATS +HEATSTROKE +HEATSTROKES +HEAUME +HEAUMES +HEAVE +HEAVED +HEAVEN +HEAVENLIER +HEAVENLIEST +HEAVENLINESS +HEAVENLINESSES +HEAVENLY +HEAVENS +HEAVENWARD +HEAVENWARDS +HEAVER +HEAVERS +HEAVES +HEAVIER +HEAVIES +HEAVIEST +HEAVILY +HEAVINESS +HEAVINESSES +HEAVING +HEAVY +HEAVYHEARTED +HEAVYHEARTEDLY +HEAVYSET +HEAVYWEIGHT +HEAVYWEIGHTS +HEBDOMAD +HEBDOMADAL +HEBDOMADALLY +HEBDOMADS +HEBE +HEBEPHRENIA +HEBEPHRENIAS +HEBEPHRENIC +HEBEPHRENICS +HEBES +HEBETATE +HEBETATED +HEBETATES +HEBETATING +HEBETATION +HEBETATIONS +HEBETIC +HEBETUDE +HEBETUDES +HEBETUDINOUS +HEBRAIZATION +HEBRAIZATIONS +HEBRAIZE +HEBRAIZED +HEBRAIZES +HEBRAIZING +HECATOMB +HECATOMBS +HECK +HECKLE +HECKLED +HECKLER +HECKLERS +HECKLES +HECKLING +HECKS +HECTARE +HECTARES +HECTIC +HECTICAL +HECTICALLY +HECTICLY +HECTOGRAM +HECTOGRAMS +HECTOGRAPH +HECTOGRAPHED +HECTOGRAPHING +HECTOGRAPHS +HECTOLITER +HECTOLITERS +HECTOMETER +HECTOMETERS +HECTOR +HECTORED +HECTORING +HECTORINGLY +HECTORS +HEDDLE +HEDDLES +HEDER +HEDERS +HEDGE +HEDGED +HEDGEHOG +HEDGEHOGS +HEDGEHOP +HEDGEHOPPED +HEDGEHOPPER +HEDGEHOPPERS +HEDGEHOPPING +HEDGEHOPS +HEDGEPIG +HEDGEPIGS +HEDGER +HEDGEROW +HEDGEROWS +HEDGERS +HEDGES +HEDGIER +HEDGIEST +HEDGING +HEDGINGLY +HEDGY +HEDONIC +HEDONICALLY +HEDONICS +HEDONISM +HEDONISMS +HEDONIST +HEDONISTIC +HEDONISTICALLY +HEDONISTS +HEED +HEEDED +HEEDER +HEEDERS +HEEDFUL +HEEDFULLY +HEEDFULNESS +HEEDFULNESSES +HEEDING +HEEDLESS +HEEDLESSLY +HEEDLESSNESS +HEEDLESSNESSES +HEEDS +HEEHAW +HEEHAWED +HEEHAWING +HEEHAWS +HEEL +HEELBALL +HEELBALLS +HEELED +HEELER +HEELERS +HEELING +HEELINGS +HEELLESS +HEELPIECE +HEELPIECES +HEELPLATE +HEELPLATES +HEELPOST +HEELPOSTS +HEELS +HEELTAP +HEELTAPS +HEEZE +HEEZED +HEEZES +HEEZING +HEFT +HEFTED +HEFTER +HEFTERS +HEFTIER +HEFTIEST +HEFTILY +HEFTINESS +HEFTINESSES +HEFTING +HEFTS +HEFTY +HEGARI +HEGARIS +HEGEMON +HEGEMONIC +HEGEMONIES +HEGEMONS +HEGEMONY +HEGIRA +HEGIRAS +HEGUMEN +HEGUMENE +HEGUMENES +HEGUMENIES +HEGUMENOS +HEGUMENOSES +HEGUMENS +HEGUMENY +HEH +HEHS +HEIFER +HEIFERS +HEIGH +HEIGHT +HEIGHTEN +HEIGHTENED +HEIGHTENING +HEIGHTENS +HEIGHTH +HEIGHTHS +HEIGHTISM +HEIGHTISMS +HEIGHTS +HEIL +HEILED +HEILING +HEILS +HEIMISH +HEINIE +HEINIES +HEINOUS +HEINOUSLY +HEINOUSNESS +HEINOUSNESSES +HEIR +HEIRDOM +HEIRDOMS +HEIRED +HEIRESS +HEIRESSES +HEIRING +HEIRLESS +HEIRLOOM +HEIRLOOMS +HEIRS +HEIRSHIP +HEIRSHIPS +HEISHI +HEIST +HEISTED +HEISTER +HEISTERS +HEISTING +HEISTS +HEJIRA +HEJIRAS +HEKTARE +HEKTARES +HEKTOGRAM +HEKTOGRAMS +HELD +HELDENTENOR +HELDENTENORS +HELIAC +HELIACAL +HELIACALLY +HELIAST +HELIASTS +HELICAL +HELICALLY +HELICES +HELICITIES +HELICITY +HELICLINE +HELICLINES +HELICOID +HELICOIDAL +HELICOIDS +HELICON +HELICONIA +HELICONIAS +HELICONS +HELICOPT +HELICOPTED +HELICOPTER +HELICOPTERED +HELICOPTERING +HELICOPTERS +HELICOPTING +HELICOPTS +HELICTITE +HELICTITES +HELILIFT +HELILIFTED +HELILIFTING +HELILIFTS +HELIO +HELIOCENTRIC +HELIOGRAM +HELIOGRAMS +HELIOGRAPH +HELIOGRAPHED +HELIOGRAPHIC +HELIOGRAPHING +HELIOGRAPHS +HELIOLATRIES +HELIOLATROUS +HELIOLATRY +HELIOMETER +HELIOMETERS +HELIOMETRIC +HELIOMETRICALLY +HELIOS +HELIOSPHERE +HELIOSPHERES +HELIOSTAT +HELIOSTATS +HELIOTROPE +HELIOTROPES +HELIOTROPIC +HELIOTROPISM +HELIOTROPISMS +HELIOTYPE +HELIOTYPED +HELIOTYPES +HELIOTYPIES +HELIOTYPING +HELIOTYPY +HELIOZOAN +HELIOZOANS +HELIOZOIC +HELIPAD +HELIPADS +HELIPORT +HELIPORTS +HELISTOP +HELISTOPS +HELIUM +HELIUMS +HELIX +HELIXES +HELL +HELLACIOUS +HELLACIOUSLY +HELLBENDER +HELLBENDERS +HELLBENT +HELLBOX +HELLBOXES +HELLBROTH +HELLBROTHS +HELLCAT +HELLCATS +HELLDIVER +HELLDIVERS +HELLEBORE +HELLEBORES +HELLED +HELLENIZATION +HELLENIZATIONS +HELLENIZE +HELLENIZED +HELLENIZES +HELLENIZING +HELLER +HELLERI +HELLERIES +HELLERIS +HELLERS +HELLERY +HELLFIRE +HELLFIRES +HELLGRAMMITE +HELLGRAMMITES +HELLHOLE +HELLHOLES +HELLHOUND +HELLHOUNDS +HELLING +HELLION +HELLIONS +HELLISH +HELLISHLY +HELLISHNESS +HELLISHNESSES +HELLKITE +HELLKITES +HELLO +HELLOED +HELLOES +HELLOING +HELLOS +HELLS +HELLUVA +HELM +HELMED +HELMET +HELMETED +HELMETING +HELMETLIKE +HELMETS +HELMING +HELMINTH +HELMINTHIASES +HELMINTHIASIS +HELMINTHIC +HELMINTHOLOGIES +HELMINTHOLOGY +HELMINTHS +HELMLESS +HELMS +HELMSMAN +HELMSMANSHIP +HELMSMANSHIPS +HELMSMEN +HELO +HELOS +HELOT +HELOTAGE +HELOTAGES +HELOTISM +HELOTISMS +HELOTRIES +HELOTRY +HELOTS +HELP +HELPABLE +HELPED +HELPER +HELPERS +HELPFUL +HELPFULLY +HELPFULNESS +HELPFULNESSES +HELPING +HELPINGS +HELPLESS +HELPLESSLY +HELPLESSNESS +HELPLESSNESSES +HELPMATE +HELPMATES +HELPMEET +HELPMEETS +HELPS +HELVE +HELVED +HELVES +HELVING +HEM +HEMACYTOMETER +HEMACYTOMETERS +HEMAGGLUTINATE +HEMAGGLUTINATED +HEMAGGLUTINATES +HEMAGGLUTININ +HEMAGGLUTININS +HEMAGOG +HEMAGOGS +HEMAL +HEMANGIOMA +HEMANGIOMAS +HEMANGIOMATA +HEMATAL +HEMATEIN +HEMATEINS +HEMATIC +HEMATICS +HEMATIN +HEMATINE +HEMATINES +HEMATINIC +HEMATINICS +HEMATINS +HEMATITE +HEMATITES +HEMATITIC +HEMATOCRIT +HEMATOCRITS +HEMATOGENOUS +HEMATOID +HEMATOLOGIC +HEMATOLOGICAL +HEMATOLOGIES +HEMATOLOGIST +HEMATOLOGISTS +HEMATOLOGY +HEMATOMA +HEMATOMAS +HEMATOMATA +HEMATOPHAGOUS +HEMATOPOIESES +HEMATOPOIESIS +HEMATOPOIETIC +HEMATOPORPHYRIN +HEMATOSES +HEMATOSIS +HEMATOXYLIN +HEMATOXYLINS +HEMATOZOA +HEMATOZOON +HEMATURIA +HEMATURIAS +HEMATURIC +HEME +HEMELYTRA +HEMELYTRON +HEMELYTRUM +HEMEROCALLIS +HEMEROCALLISES +HEMERYTHRIN +HEMERYTHRINS +HEMES +HEMIACETAL +HEMIACETALS +HEMIALGIA +HEMIALGIAS +HEMIC +HEMICELLULOSE +HEMICELLULOSES +HEMICHORDATE +HEMICHORDATES +HEMICYCLE +HEMICYCLES +HEMIHEDRAL +HEMIHYDRATE +HEMIHYDRATED +HEMIHYDRATES +HEMIMETABOLOUS +HEMIMORPHIC +HEMIMORPHISM +HEMIMORPHISMS +HEMIN +HEMINS +HEMIOLA +HEMIOLAS +HEMIOLIA +HEMIOLIAS +HEMIPLEGIA +HEMIPLEGIAS +HEMIPLEGIC +HEMIPLEGICS +HEMIPTER +HEMIPTERAN +HEMIPTERANS +HEMIPTEROUS +HEMIPTERS +HEMISPHERE +HEMISPHERES +HEMISPHERIC +HEMISPHERICAL +HEMISTICH +HEMISTICHS +HEMITROPE +HEMITROPES +HEMIZYGOUS +HEMLINE +HEMLINES +HEMLOCK +HEMLOCKS +HEMMED +HEMMER +HEMMERS +HEMMING +HEMOCHROMATOSES +HEMOCHROMATOSIS +HEMOCOEL +HEMOCOELS +HEMOCYANIN +HEMOCYANINS +HEMOCYTE +HEMOCYTES +HEMOCYTOMETER +HEMOCYTOMETERS +HEMODIALYSES +HEMODIALYSIS +HEMODILUTION +HEMODILUTIONS +HEMODYNAMIC +HEMODYNAMICALLY +HEMODYNAMICS +HEMOFLAGELLATE +HEMOFLAGELLATES +HEMOGLOBIN +HEMOGLOBINS +HEMOGLOBINURIA +HEMOGLOBINURIAS +HEMOGLOBINURIC +HEMOID +HEMOLYMPH +HEMOLYMPHS +HEMOLYSES +HEMOLYSIN +HEMOLYSINS +HEMOLYSIS +HEMOLYTIC +HEMOLYZE +HEMOLYZED +HEMOLYZES +HEMOLYZING +HEMOPHILE +HEMOPHILES +HEMOPHILIA +HEMOPHILIAC +HEMOPHILIACS +HEMOPHILIAS +HEMOPHILIC +HEMOPHILICS +HEMOPOIESES +HEMOPOIESIS +HEMOPOIETIC +HEMOPROTEIN +HEMOPROTEINS +HEMOPTYSES +HEMOPTYSIS +HEMORRHAGE +HEMORRHAGED +HEMORRHAGES +HEMORRHAGIC +HEMORRHAGING +HEMORRHOID +HEMORRHOIDAL +HEMORRHOIDALS +HEMORRHOIDS +HEMOSIDERIN +HEMOSIDERINS +HEMOSTASES +HEMOSTASIS +HEMOSTAT +HEMOSTATIC +HEMOSTATICS +HEMOSTATS +HEMOTOXIC +HEMOTOXIN +HEMOTOXINS +HEMP +HEMPEN +HEMPIE +HEMPIER +HEMPIEST +HEMPLIKE +HEMPS +HEMPSEED +HEMPSEEDS +HEMPWEED +HEMPWEEDS +HEMPY +HEMS +HEMSTITCH +HEMSTITCHED +HEMSTITCHER +HEMSTITCHERS +HEMSTITCHES +HEMSTITCHING +HEN +HENBANE +HENBANES +HENBIT +HENBITS +HENCE +HENCEFORTH +HENCEFORWARD +HENCHMAN +HENCHMEN +HENCOOP +HENCOOPS +HENDECASYLLABIC +HENDECASYLLABLE +HENDIADYS +HENDIADYSES +HENEQUEN +HENEQUENS +HENEQUIN +HENEQUINS +HENGE +HENGES +HENHOUSE +HENHOUSES +HENIQUEN +HENIQUENS +HENLEY +HENLEYS +HENLIKE +HENNA +HENNAED +HENNAING +HENNAS +HENNERIES +HENNERY +HENNISH +HENNISHLY +HENOTHEISM +HENOTHEISMS +HENOTHEIST +HENOTHEISTIC +HENOTHEISTS +HENPECK +HENPECKED +HENPECKING +HENPECKS +HENRIES +HENRY +HENRYS +HENS +HENT +HENTED +HENTING +HENTS +HEP +HEPARIN +HEPARINIZED +HEPARINS +HEPATECTOMIES +HEPATECTOMIZED +HEPATECTOMY +HEPATIC +HEPATICA +HEPATICAE +HEPATICAS +HEPATICS +HEPATITIDES +HEPATITIS +HEPATITISES +HEPATIZE +HEPATIZED +HEPATIZES +HEPATIZING +HEPATOCELLULAR +HEPATOCYTE +HEPATOCYTES +HEPATOMA +HEPATOMAS +HEPATOMATA +HEPATOMEGALIES +HEPATOMEGALY +HEPATOPANCREAS +HEPATOTOXIC +HEPATOTOXICITY +HEPCAT +HEPCATS +HEPPER +HEPPEST +HEPTACHLOR +HEPTACHLORS +HEPTAD +HEPTADS +HEPTAGON +HEPTAGONAL +HEPTAGONS +HEPTAMETER +HEPTAMETERS +HEPTANE +HEPTANES +HEPTARCH +HEPTARCHIES +HEPTARCHS +HEPTARCHY +HEPTOSE +HEPTOSES +HER +HERALD +HERALDED +HERALDIC +HERALDICALLY +HERALDING +HERALDIST +HERALDISTS +HERALDRIES +HERALDRY +HERALDS +HERB +HERBACEOUS +HERBAGE +HERBAGED +HERBAGES +HERBAL +HERBALISM +HERBALISMS +HERBALIST +HERBALISTS +HERBALS +HERBARIA +HERBARIAL +HERBARIUM +HERBARIUMS +HERBED +HERBICIDAL +HERBICIDALLY +HERBICIDE +HERBICIDES +HERBIER +HERBIEST +HERBIVORE +HERBIVORES +HERBIVORIES +HERBIVOROUS +HERBIVORY +HERBLESS +HERBLIKE +HERBOLOGIES +HERBOLOGY +HERBS +HERBY +HERCULEAN +HERCULES +HERCULESES +HERD +HERDED +HERDER +HERDERS +HERDIC +HERDICS +HERDING +HERDLIKE +HERDMAN +HERDMEN +HERDS +HERDSMAN +HERDSMEN +HERE +HEREABOUT +HEREABOUTS +HEREAFTER +HEREAFTERS +HEREAT +HEREAWAY +HEREAWAYS +HEREBY +HEREDES +HEREDITAMENT +HEREDITAMENTS +HEREDITARIAN +HEREDITARIANS +HEREDITARILY +HEREDITARY +HEREDITIES +HEREDITY +HEREIN +HEREINABOVE +HEREINAFTER +HEREINBEFORE +HEREINBELOW +HEREINTO +HEREOF +HEREON +HERES +HERESIARCH +HERESIARCHS +HERESIES +HERESY +HERETIC +HERETICAL +HERETICALLY +HERETICS +HERETO +HERETOFORE +HERETRICES +HERETRIX +HERETRIXES +HEREUNDER +HEREUNTO +HEREUPON +HEREWITH +HERIOT +HERIOTS +HERITABILITIES +HERITABILITY +HERITABLE +HERITABLY +HERITAGE +HERITAGES +HERITOR +HERITORS +HERITRICES +HERITRIX +HERITRIXES +HERL +HERLS +HERM +HERMA +HERMAE +HERMAEAN +HERMAI +HERMAPHRODITE +HERMAPHRODITES +HERMAPHRODITIC +HERMAPHRODITISM +HERMATYPIC +HERMENEUTIC +HERMENEUTICAL +HERMENEUTICALLY +HERMENEUTICS +HERMETIC +HERMETICAL +HERMETICALLY +HERMETICISM +HERMETICISMS +HERMETISM +HERMETISMS +HERMETIST +HERMETISTS +HERMIT +HERMITAGE +HERMITAGES +HERMITIC +HERMITISM +HERMITISMS +HERMITRIES +HERMITRY +HERMITS +HERMS +HERN +HERNIA +HERNIAE +HERNIAL +HERNIAS +HERNIATE +HERNIATED +HERNIATES +HERNIATING +HERNIATION +HERNIATIONS +HERNS +HERO +HEROES +HEROIC +HEROICAL +HEROICALLY +HEROICIZE +HEROICIZED +HEROICIZES +HEROICIZING +HEROICOMIC +HEROICOMICAL +HEROICS +HEROIN +HEROINE +HEROINES +HEROINISM +HEROINISMS +HEROINS +HEROISM +HEROISMS +HEROIZE +HEROIZED +HEROIZES +HEROIZING +HERON +HERONRIES +HERONRY +HERONS +HEROS +HERPES +HERPESVIRUS +HERPESVIRUSES +HERPETIC +HERPETOLOGICAL +HERPETOLOGIES +HERPETOLOGIST +HERPETOLOGISTS +HERPETOLOGY +HERRENVOLK +HERRENVOLKS +HERRIED +HERRIES +HERRING +HERRINGBONE +HERRINGBONED +HERRINGBONES +HERRINGBONING +HERRINGS +HERRY +HERRYING +HERS +HERSELF +HERSTORIES +HERSTORY +HERTZ +HERTZES +HES +HESITANCE +HESITANCES +HESITANCIES +HESITANCY +HESITANT +HESITANTLY +HESITATE +HESITATED +HESITATER +HESITATERS +HESITATES +HESITATING +HESITATINGLY +HESITATION +HESITATIONS +HESITATOR +HESITATORS +HESPERIDIA +HESPERIDIN +HESPERIDINS +HESPERIDIUM +HESSIAN +HESSIANS +HESSITE +HESSITES +HESSONITE +HESSONITES +HEST +HESTS +HET +HETAERA +HETAERAE +HETAERAS +HETAERIC +HETAERISM +HETAERISMS +HETAIRA +HETAIRAI +HETAIRAS +HETAIRISM +HETAIRISMS +HETERO +HETEROATOM +HETEROATOMS +HETEROAUXIN +HETEROAUXINS +HETEROCERCAL +HETEROCHROMATIC +HETEROCHROMATIN +HETEROCLITE +HETEROCLITES +HETEROCYCLE +HETEROCYCLES +HETEROCYCLIC +HETEROCYCLICS +HETEROCYST +HETEROCYSTOUS +HETEROCYSTS +HETERODOX +HETERODOXIES +HETERODOXY +HETERODUPLEX +HETERODUPLEXES +HETERODYNE +HETERODYNED +HETERODYNES +HETERODYNING +HETEROECIOUS +HETEROECISM +HETEROECISMS +HETEROGAMETE +HETEROGAMETES +HETEROGAMETIC +HETEROGAMETIES +HETEROGAMETY +HETEROGAMIES +HETEROGAMOUS +HETEROGAMY +HETEROGENEITIES +HETEROGENEITY +HETEROGENEOUS +HETEROGENEOUSLY +HETEROGENIES +HETEROGENOUS +HETEROGENY +HETEROGONIC +HETEROGONIES +HETEROGONY +HETEROGRAFT +HETEROGRAFTS +HETEROKARYON +HETEROKARYONS +HETEROKARYOSES +HETEROKARYOSIS +HETEROKARYOTIC +HETEROLOGOUS +HETEROLOGOUSLY +HETEROLYSES +HETEROLYSIS +HETEROLYTIC +HETEROMORPHIC +HETEROMORPHISM +HETEROMORPHISMS +HETERONOMIES +HETERONOMOUS +HETERONOMY +HETERONYM +HETERONYMS +HETEROPHIL +HETEROPHILE +HETEROPHONIES +HETEROPHONY +HETEROPHYLLIES +HETEROPHYLLOUS +HETEROPHYLLY +HETEROPLOID +HETEROPLOIDIES +HETEROPLOIDS +HETEROPLOIDY +HETEROPTEROUS +HETEROS +HETEROSES +HETEROSEXUAL +HETEROSEXUALITY +HETEROSEXUALLY +HETEROSEXUALS +HETEROSIS +HETEROSPORIES +HETEROSPOROUS +HETEROSPORY +HETEROTHALLIC +HETEROTHALLISM +HETEROTHALLISMS +HETEROTIC +HETEROTOPIC +HETEROTROPH +HETEROTROPHIC +HETEROTROPHIES +HETEROTROPHS +HETEROTROPHY +HETEROTYPIC +HETEROZYGOSES +HETEROZYGOSIS +HETEROZYGOSITY +HETEROZYGOTE +HETEROZYGOTES +HETEROZYGOUS +HETH +HETHS +HETMAN +HETMANS +HETS +HEUCH +HEUCHS +HEUGH +HEUGHS +HEULANDITE +HEULANDITES +HEURISTIC +HEURISTICALLY +HEURISTICS +HEW +HEWABLE +HEWED +HEWER +HEWERS +HEWING +HEWN +HEWS +HEX +HEXACHLORETHANE +HEXACHLOROPHENE +HEXACHORD +HEXACHORDS +HEXAD +HEXADE +HEXADECIMAL +HEXADECIMALS +HEXADES +HEXADIC +HEXADS +HEXAGON +HEXAGONAL +HEXAGONALLY +HEXAGONS +HEXAGRAM +HEXAGRAMS +HEXAHEDRA +HEXAHEDRON +HEXAHEDRONS +HEXAHYDRATE +HEXAHYDRATES +HEXAMETER +HEXAMETERS +HEXAMETHONIUM +HEXAMETHONIUMS +HEXAMINE +HEXAMINES +HEXANE +HEXANES +HEXAPLA +HEXAPLAR +HEXAPLAS +HEXAPLOID +HEXAPLOIDIES +HEXAPLOIDS +HEXAPLOIDY +HEXAPOD +HEXAPODIES +HEXAPODS +HEXAPODY +HEXARCHIES +HEXARCHY +HEXASTICH +HEXASTICHS +HEXED +HEXER +HEXEREI +HEXEREIS +HEXERS +HEXES +HEXING +HEXOBARBITAL +HEXOBARBITALS +HEXOKINASE +HEXOKINASES +HEXONE +HEXONES +HEXOSAMINIDASE +HEXOSAMINIDASES +HEXOSAN +HEXOSANS +HEXOSE +HEXOSES +HEXYL +HEXYLIC +HEXYLRESORCINOL +HEXYLS +HEY +HEYDAY +HEYDAYS +HEYDEY +HEYDEYS +HI +HIATAL +HIATUS +HIATUSES +HIBACHI +HIBACHIS +HIBAKUSHA +HIBERNACULA +HIBERNACULUM +HIBERNAL +HIBERNATE +HIBERNATED +HIBERNATES +HIBERNATING +HIBERNATION +HIBERNATIONS +HIBERNATOR +HIBERNATORS +HIBISCUS +HIBISCUSES +HIC +HICCOUGH +HICCOUGHED +HICCOUGHING +HICCOUGHS +HICCUP +HICCUPED +HICCUPING +HICCUPPED +HICCUPPING +HICCUPS +HICK +HICKEY +HICKEYS +HICKIE +HICKIES +HICKISH +HICKORIES +HICKORY +HICKS +HID +HIDABLE +HIDALGO +HIDALGOS +HIDDEN +HIDDENITE +HIDDENITES +HIDDENLY +HIDDENNESS +HIDDENNESSES +HIDE +HIDEAWAY +HIDEAWAYS +HIDEBOUND +HIDED +HIDELESS +HIDEOSITIES +HIDEOSITY +HIDEOUS +HIDEOUSLY +HIDEOUSNESS +HIDEOUSNESSES +HIDEOUT +HIDEOUTS +HIDER +HIDERS +HIDES +HIDING +HIDINGS +HIDROSES +HIDROSIS +HIDROTIC +HIDROTICS +HIE +HIED +HIEING +HIEMAL +HIERARCH +HIERARCHAL +HIERARCHIC +HIERARCHICAL +HIERARCHICALLY +HIERARCHIES +HIERARCHIZE +HIERARCHIZED +HIERARCHIZES +HIERARCHIZING +HIERARCHS +HIERARCHY +HIERATIC +HIERATICALLY +HIERODULE +HIERODULES +HIEROGLYPH +HIEROGLYPHIC +HIEROGLYPHICAL +HIEROGLYPHICS +HIEROGLYPHS +HIEROLOGIES +HIEROLOGY +HIEROPHANT +HIEROPHANTIC +HIEROPHANTS +HIERURGIES +HIERURGY +HIES +HIFALUTIN +HIGGLE +HIGGLED +HIGGLER +HIGGLERS +HIGGLES +HIGGLING +HIGH +HIGHBALL +HIGHBALLED +HIGHBALLING +HIGHBALLS +HIGHBINDER +HIGHBINDERS +HIGHBORN +HIGHBOY +HIGHBOYS +HIGHBRED +HIGHBROW +HIGHBROWED +HIGHBROWISM +HIGHBROWISMS +HIGHBROWS +HIGHBUSH +HIGHCHAIR +HIGHCHAIRS +HIGHER +HIGHEST +HIGHFALUTIN +HIGHFLIER +HIGHFLIERS +HIGHFLYER +HIGHFLYERS +HIGHJACK +HIGHJACKED +HIGHJACKING +HIGHJACKS +HIGHLAND +HIGHLANDER +HIGHLANDERS +HIGHLANDS +HIGHLIFE +HIGHLIFES +HIGHLIGHT +HIGHLIGHTED +HIGHLIGHTING +HIGHLIGHTS +HIGHLY +HIGHNESS +HIGHNESSES +HIGHRISE +HIGHRISES +HIGHROAD +HIGHROADS +HIGHS +HIGHSPOT +HIGHSPOTS +HIGHT +HIGHTAIL +HIGHTAILED +HIGHTAILING +HIGHTAILS +HIGHTED +HIGHTH +HIGHTHS +HIGHTING +HIGHTOP +HIGHTOPS +HIGHTS +HIGHWAY +HIGHWAYMAN +HIGHWAYMEN +HIGHWAYS +HIJAB +HIJABS +HIJACK +HIJACKED +HIJACKER +HIJACKERS +HIJACKING +HIJACKS +HIJINKS +HIJRA +HIJRAH +HIJRAHS +HIJRAS +HIKE +HIKED +HIKER +HIKERS +HIKES +HIKING +HILA +HILAR +HILARIOUS +HILARIOUSLY +HILARIOUSNESS +HILARIOUSNESSES +HILARITIES +HILARITY +HILDING +HILDINGS +HILI +HILL +HILLBILLIES +HILLBILLY +HILLCREST +HILLCRESTS +HILLED +HILLER +HILLERS +HILLIER +HILLIEST +HILLINESS +HILLINESSES +HILLING +HILLO +HILLOA +HILLOAED +HILLOAING +HILLOAS +HILLOCK +HILLOCKED +HILLOCKS +HILLOCKY +HILLOED +HILLOES +HILLOING +HILLOS +HILLS +HILLSIDE +HILLSIDES +HILLSLOPE +HILLSLOPES +HILLTOP +HILLTOPS +HILLY +HILT +HILTED +HILTING +HILTLESS +HILTS +HILUM +HILUS +HIM +HIMATIA +HIMATION +HIMATIONS +HIMS +HIMSELF +HIN +HIND +HINDBRAIN +HINDBRAINS +HINDER +HINDERED +HINDERER +HINDERERS +HINDERING +HINDERS +HINDGUT +HINDGUTS +HINDMOST +HINDQUARTER +HINDQUARTERS +HINDRANCE +HINDRANCES +HINDS +HINDSHANK +HINDSHANKS +HINDSIGHT +HINDSIGHTS +HINGE +HINGED +HINGER +HINGERS +HINGES +HINGING +HINKIER +HINKIEST +HINKY +HINNIED +HINNIES +HINNY +HINNYING +HINS +HINT +HINTED +HINTER +HINTERLAND +HINTERLANDS +HINTERS +HINTING +HINTS +HIP +HIPBONE +HIPBONES +HIPHUGGER +HIPLESS +HIPLIKE +HIPLINE +HIPLINES +HIPLY +HIPNESS +HIPNESSES +HIPPARCH +HIPPARCHS +HIPPED +HIPPER +HIPPEST +HIPPIE +HIPPIEDOM +HIPPIEDOMS +HIPPIEISH +HIPPIENESS +HIPPIENESSES +HIPPIER +HIPPIES +HIPPIEST +HIPPINESS +HIPPINESSES +HIPPING +HIPPISH +HIPPO +HIPPOCAMPAL +HIPPOCAMPI +HIPPOCAMPUS +HIPPOCRAS +HIPPOCRASES +HIPPODROME +HIPPODROMES +HIPPOGRIFF +HIPPOGRIFFS +HIPPOPOTAMI +HIPPOPOTAMUS +HIPPOPOTAMUSES +HIPPOS +HIPPY +HIPS +HIPSHOT +HIPSTER +HIPSTERISM +HIPSTERISMS +HIPSTERS +HIRABLE +HIRAGANA +HIRAGANAS +HIRCINE +HIRE +HIREABLE +HIRED +HIREE +HIREES +HIRELING +HIRELINGS +HIRER +HIRERS +HIRES +HIRING +HIRPLE +HIRPLED +HIRPLES +HIRPLING +HIRSEL +HIRSELED +HIRSELING +HIRSELLED +HIRSELLING +HIRSELS +HIRSLE +HIRSLED +HIRSLES +HIRSLING +HIRSUTE +HIRSUTENESS +HIRSUTENESSES +HIRSUTISM +HIRSUTISMS +HIRUDIN +HIRUDINS +HIS +HISN +HISPANIDAD +HISPANIDADS +HISPANISM +HISPANISMS +HISPID +HISPIDITIES +HISPIDITY +HISS +HISSED +HISSELF +HISSER +HISSERS +HISSES +HISSIER +HISSIES +HISSIEST +HISSING +HISSINGS +HISSY +HIST +HISTAMIN +HISTAMINASE +HISTAMINASES +HISTAMINE +HISTAMINERGIC +HISTAMINES +HISTAMINS +HISTED +HISTIDIN +HISTIDINE +HISTIDINES +HISTIDINS +HISTING +HISTIOCYTE +HISTIOCYTES +HISTIOCYTIC +HISTOCHEMICAL +HISTOCHEMICALLY +HISTOCHEMISTRY +HISTOGEN +HISTOGENESES +HISTOGENESIS +HISTOGENETIC +HISTOGENS +HISTOGRAM +HISTOGRAMS +HISTOID +HISTOLOGIC +HISTOLOGICAL +HISTOLOGICALLY +HISTOLOGIES +HISTOLOGIST +HISTOLOGISTS +HISTOLOGY +HISTOLYSES +HISTOLYSIS +HISTONE +HISTONES +HISTOPATHOLOGIC +HISTOPATHOLOGY +HISTOPHYSIOLOGY +HISTOPLASMOSES +HISTOPLASMOSIS +HISTORIAN +HISTORIANS +HISTORIC +HISTORICAL +HISTORICALLY +HISTORICALNESS +HISTORICISM +HISTORICISMS +HISTORICIST +HISTORICISTS +HISTORICITIES +HISTORICITY +HISTORICIZE +HISTORICIZED +HISTORICIZES +HISTORICIZING +HISTORIED +HISTORIES +HISTORIOGRAPHER +HISTORIOGRAPHIC +HISTORIOGRAPHY +HISTORY +HISTRIONIC +HISTRIONICALLY +HISTRIONICS +HISTS +HIT +HITCH +HITCHED +HITCHER +HITCHERS +HITCHES +HITCHHIKE +HITCHHIKED +HITCHHIKER +HITCHHIKERS +HITCHHIKES +HITCHHIKING +HITCHING +HITHER +HITHERMOST +HITHERTO +HITHERWARD +HITLESS +HITMAN +HITMEN +HITS +HITTABLE +HITTER +HITTERS +HITTING +HIVE +HIVED +HIVELESS +HIVES +HIVING +HIZZONER +HIZZONERS +HM +HMM +HO +HOACTZIN +HOACTZINES +HOACTZINS +HOAGIE +HOAGIES +HOAGY +HOAR +HOARD +HOARDED +HOARDER +HOARDERS +HOARDING +HOARDINGS +HOARDS +HOARFROST +HOARFROSTS +HOARIER +HOARIEST +HOARILY +HOARINESS +HOARINESSES +HOARS +HOARSE +HOARSELY +HOARSEN +HOARSENED +HOARSENESS +HOARSENESSES +HOARSENING +HOARSENS +HOARSER +HOARSEST +HOARY +HOATZIN +HOATZINES +HOATZINS +HOAX +HOAXED +HOAXER +HOAXERS +HOAXES +HOAXING +HOB +HOBBED +HOBBER +HOBBERS +HOBBIES +HOBBING +HOBBIT +HOBBITS +HOBBLE +HOBBLEBUSH +HOBBLEBUSHES +HOBBLED +HOBBLEDEHOY +HOBBLEDEHOYS +HOBBLER +HOBBLERS +HOBBLES +HOBBLING +HOBBY +HOBBYHORSE +HOBBYHORSES +HOBBYIST +HOBBYISTS +HOBGOBLIN +HOBGOBLINS +HOBLIKE +HOBNAIL +HOBNAILED +HOBNAILING +HOBNAILS +HOBNOB +HOBNOBBED +HOBNOBBER +HOBNOBBERS +HOBNOBBING +HOBNOBS +HOBO +HOBOED +HOBOES +HOBOING +HOBOISM +HOBOISMS +HOBOS +HOBS +HOCK +HOCKED +HOCKER +HOCKERS +HOCKEY +HOCKEYS +HOCKING +HOCKS +HOCKSHOP +HOCKSHOPS +HOCUS +HOCUSED +HOCUSES +HOCUSING +HOCUSSED +HOCUSSES +HOCUSSING +HOD +HODAD +HODADDIES +HODADDY +HODADS +HODDEN +HODDENS +HODDIN +HODDINS +HODGEPODGE +HODGEPODGES +HODOSCOPE +HODOSCOPES +HODS +HOE +HOECAKE +HOECAKES +HOED +HOEDOWN +HOEDOWNS +HOEING +HOELIKE +HOER +HOERS +HOES +HOG +HOGAN +HOGANS +HOGBACK +HOGBACKS +HOGFISH +HOGFISHES +HOGG +HOGGED +HOGGER +HOGGERS +HOGGET +HOGGETS +HOGGING +HOGGISH +HOGGISHLY +HOGGISHNESS +HOGGISHNESSES +HOGGS +HOGLIKE +HOGMANAY +HOGMANAYS +HOGMANE +HOGMANES +HOGMENAY +HOGMENAYS +HOGNOSE +HOGNOSES +HOGNUT +HOGNUTS +HOGS +HOGSHEAD +HOGSHEADS +HOGTIE +HOGTIED +HOGTIEING +HOGTIES +HOGTYING +HOGWASH +HOGWASHES +HOGWEED +HOGWEEDS +HOICK +HOICKED +HOICKING +HOICKS +HOIDEN +HOIDENED +HOIDENING +HOIDENS +HOISE +HOISED +HOISES +HOISING +HOIST +HOISTED +HOISTER +HOISTERS +HOISTING +HOISTS +HOKE +HOKED +HOKES +HOKEY +HOKEYNESS +HOKEYNESSES +HOKEYPOKEY +HOKEYPOKEYS +HOKIER +HOKIEST +HOKILY +HOKINESS +HOKINESSES +HOKING +HOKKU +HOKUM +HOKUMS +HOKYPOKIES +HOKYPOKY +HOLANDRIC +HOLARD +HOLARDS +HOLD +HOLDABLE +HOLDALL +HOLDALLS +HOLDBACK +HOLDBACKS +HOLDDOWN +HOLDDOWNS +HOLDEN +HOLDER +HOLDERS +HOLDFAST +HOLDFASTS +HOLDING +HOLDINGS +HOLDOUT +HOLDOUTS +HOLDOVER +HOLDOVERS +HOLDS +HOLDUP +HOLDUPS +HOLE +HOLED +HOLELESS +HOLES +HOLEY +HOLIBUT +HOLIBUTS +HOLIDAY +HOLIDAYED +HOLIDAYER +HOLIDAYERS +HOLIDAYING +HOLIDAYMAKER +HOLIDAYMAKERS +HOLIDAYS +HOLIER +HOLIES +HOLIEST +HOLILY +HOLINESS +HOLINESSES +HOLING +HOLISM +HOLISMS +HOLIST +HOLISTIC +HOLISTICALLY +HOLISTS +HOLK +HOLKED +HOLKING +HOLKS +HOLLA +HOLLAED +HOLLAING +HOLLAND +HOLLANDAISE +HOLLANDAISES +HOLLANDS +HOLLAS +HOLLER +HOLLERED +HOLLERING +HOLLERS +HOLLIES +HOLLO +HOLLOA +HOLLOAED +HOLLOAING +HOLLOAS +HOLLOED +HOLLOES +HOLLOING +HOLLOO +HOLLOOED +HOLLOOING +HOLLOOS +HOLLOS +HOLLOW +HOLLOWARE +HOLLOWARES +HOLLOWED +HOLLOWER +HOLLOWEST +HOLLOWING +HOLLOWLY +HOLLOWNESS +HOLLOWNESSES +HOLLOWS +HOLLOWWARE +HOLLOWWARES +HOLLY +HOLLYHOCK +HOLLYHOCKS +HOLM +HOLMIC +HOLMIUM +HOLMIUMS +HOLMS +HOLOBLASTIC +HOLOCAUST +HOLOCAUSTS +HOLOCENE +HOLOCRINE +HOLOENZYME +HOLOENZYMES +HOLOGAMIES +HOLOGAMY +HOLOGRAM +HOLOGRAMS +HOLOGRAPH +HOLOGRAPHED +HOLOGRAPHER +HOLOGRAPHERS +HOLOGRAPHIC +HOLOGRAPHICALLY +HOLOGRAPHIES +HOLOGRAPHING +HOLOGRAPHS +HOLOGRAPHY +HOLOGYNIC +HOLOGYNIES +HOLOGYNY +HOLOHEDRAL +HOLOMETABOLISM +HOLOMETABOLISMS +HOLOMETABOLOUS +HOLOPHRASTIC +HOLOPHYTE +HOLOPHYTES +HOLOPHYTIC +HOLOTHURIAN +HOLOTHURIANS +HOLOTYPE +HOLOTYPES +HOLOTYPIC +HOLOZOIC +HOLP +HOLPEN +HOLS +HOLSTEIN +HOLSTEINS +HOLSTER +HOLSTERED +HOLSTERING +HOLSTERS +HOLT +HOLTS +HOLY +HOLYDAY +HOLYDAYS +HOLYSTONE +HOLYSTONED +HOLYSTONES +HOLYSTONING +HOLYTIDE +HOLYTIDES +HOMAGE +HOMAGED +HOMAGER +HOMAGERS +HOMAGES +HOMAGING +HOMBRE +HOMBRES +HOMBURG +HOMBURGS +HOME +HOMEBODIES +HOMEBODY +HOMEBOUND +HOMEBOY +HOMEBOYS +HOMEBRED +HOMEBREDS +HOMEBREW +HOMEBREWS +HOMEBUILT +HOMECOMER +HOMECOMERS +HOMECOMING +HOMECOMINGS +HOMED +HOMEGIRL +HOMEGIRLS +HOMEGROWN +HOMELAND +HOMELANDS +HOMELESS +HOMELESSNESS +HOMELESSNESSES +HOMELIER +HOMELIEST +HOMELIKE +HOMELINESS +HOMELINESSES +HOMELY +HOMEMADE +HOMEMAKER +HOMEMAKERS +HOMEMAKING +HOMEMAKINGS +HOMEOBOX +HOMEOBOXES +HOMEOMORPHIC +HOMEOMORPHISM +HOMEOMORPHISMS +HOMEOPATH +HOMEOPATHIC +HOMEOPATHICALLY +HOMEOPATHIES +HOMEOPATHS +HOMEOPATHY +HOMEOSTASES +HOMEOSTASIS +HOMEOSTATIC +HOMEOTHERM +HOMEOTHERMIC +HOMEOTHERMIES +HOMEOTHERMS +HOMEOTHERMY +HOMEOTIC +HOMEOWNER +HOMEOWNERS +HOMEPAGE +HOMEPAGES +HOMEPLACE +HOMEPLACES +HOMEPORT +HOMEPORTED +HOMEPORTING +HOMEPORTS +HOMER +HOMERED +HOMERIC +HOMERING +HOMEROOM +HOMEROOMS +HOMERS +HOMES +HOMESCHOOL +HOMESCHOOLED +HOMESCHOOLER +HOMESCHOOLERS +HOMESCHOOLING +HOMESCHOOLS +HOMESICK +HOMESICKNESS +HOMESICKNESSES +HOMESITE +HOMESITES +HOMESPUN +HOMESPUNS +HOMESTAND +HOMESTANDS +HOMESTAY +HOMESTAYS +HOMESTEAD +HOMESTEADED +HOMESTEADER +HOMESTEADERS +HOMESTEADING +HOMESTEADS +HOMESTRETCH +HOMESTRETCHES +HOMETOWN +HOMETOWNS +HOMEWARD +HOMEWARDS +HOMEWORK +HOMEWORKS +HOMEY +HOMEYNESS +HOMEYNESSES +HOMEYS +HOMICIDAL +HOMICIDALLY +HOMICIDE +HOMICIDES +HOMIE +HOMIER +HOMIES +HOMIEST +HOMILETIC +HOMILETICAL +HOMILETICS +HOMILIES +HOMILIST +HOMILISTS +HOMILY +HOMINES +HOMINESS +HOMINESSES +HOMING +HOMINIAN +HOMINIANS +HOMINID +HOMINIDS +HOMINIES +HOMININE +HOMINIZATION +HOMINIZATIONS +HOMINIZE +HOMINIZED +HOMINIZES +HOMINIZING +HOMINOID +HOMINOIDS +HOMINY +HOMMOCK +HOMMOCKS +HOMMOS +HOMMOSES +HOMO +HOMOCERCAL +HOMOCERCIES +HOMOCERCY +HOMOEROTIC +HOMOEROTICISM +HOMOEROTICISMS +HOMOGAMETIC +HOMOGAMIES +HOMOGAMOUS +HOMOGAMY +HOMOGENATE +HOMOGENATES +HOMOGENEITIES +HOMOGENEITY +HOMOGENEOUS +HOMOGENEOUSLY +HOMOGENEOUSNESS +HOMOGENIES +HOMOGENISATION +HOMOGENISATIONS +HOMOGENISE +HOMOGENISED +HOMOGENISES +HOMOGENISING +HOMOGENIZATION +HOMOGENIZATIONS +HOMOGENIZE +HOMOGENIZED +HOMOGENIZER +HOMOGENIZERS +HOMOGENIZES +HOMOGENIZING +HOMOGENOUS +HOMOGENY +HOMOGONIES +HOMOGONY +HOMOGRAFT +HOMOGRAFTS +HOMOGRAPH +HOMOGRAPHIC +HOMOGRAPHS +HOMOIOTHERM +HOMOIOTHERMIC +HOMOIOTHERMS +HOMOIOUSIAN +HOMOIOUSIANS +HOMOLOG +HOMOLOGATE +HOMOLOGATED +HOMOLOGATES +HOMOLOGATING +HOMOLOGATION +HOMOLOGATIONS +HOMOLOGIC +HOMOLOGICAL +HOMOLOGICALLY +HOMOLOGIES +HOMOLOGIZE +HOMOLOGIZED +HOMOLOGIZER +HOMOLOGIZERS +HOMOLOGIZES +HOMOLOGIZING +HOMOLOGOUS +HOMOLOGS +HOMOLOGUE +HOMOLOGUES +HOMOLOGY +HOMOLYSES +HOMOLYSIS +HOMOLYTIC +HOMOMORPHIC +HOMOMORPHISM +HOMOMORPHISMS +HOMONUCLEAR +HOMONYM +HOMONYMIC +HOMONYMIES +HOMONYMOUS +HOMONYMOUSLY +HOMONYMS +HOMONYMY +HOMOOUSIAN +HOMOOUSIANS +HOMOPHILE +HOMOPHILES +HOMOPHOBE +HOMOPHOBES +HOMOPHOBIA +HOMOPHOBIAS +HOMOPHOBIC +HOMOPHONE +HOMOPHONES +HOMOPHONIC +HOMOPHONIES +HOMOPHONOUS +HOMOPHONY +HOMOPHYLIES +HOMOPHYLY +HOMOPLASIES +HOMOPLASTIC +HOMOPLASY +HOMOPOLAR +HOMOPOLYMER +HOMOPOLYMERIC +HOMOPOLYMERS +HOMOPTERAN +HOMOPTERANS +HOMOPTEROUS +HOMOS +HOMOSCEDASTIC +HOMOSEX +HOMOSEXES +HOMOSEXUAL +HOMOSEXUALITIES +HOMOSEXUALITY +HOMOSEXUALLY +HOMOSEXUALS +HOMOSOCIAL +HOMOSOCIALITIES +HOMOSOCIALITY +HOMOSPORIES +HOMOSPOROUS +HOMOSPORY +HOMOSTYLIES +HOMOSTYLY +HOMOTAXES +HOMOTAXIS +HOMOTHALLIC +HOMOTHALLISM +HOMOTHALLISMS +HOMOTRANSPLANT +HOMOTRANSPLANTS +HOMOZYGOSES +HOMOZYGOSIS +HOMOZYGOSITIES +HOMOZYGOSITY +HOMOZYGOTE +HOMOZYGOTES +HOMOZYGOUS +HOMOZYGOUSLY +HOMUNCULI +HOMUNCULUS +HOMY +HON +HONAN +HONANS +HONCHO +HONCHOED +HONCHOING +HONCHOS +HONDA +HONDAS +HONDLE +HONDLED +HONDLES +HONDLING +HONE +HONED +HONER +HONERS +HONES +HONEST +HONESTER +HONESTEST +HONESTIES +HONESTLY +HONESTY +HONEWORT +HONEWORTS +HONEY +HONEYBEE +HONEYBEES +HONEYBUN +HONEYBUNS +HONEYCOMB +HONEYCOMBED +HONEYCOMBING +HONEYCOMBS +HONEYCREEPER +HONEYCREEPERS +HONEYDEW +HONEYDEWS +HONEYEATER +HONEYEATERS +HONEYED +HONEYFUL +HONEYGUIDE +HONEYGUIDES +HONEYING +HONEYMOON +HONEYMOONED +HONEYMOONER +HONEYMOONERS +HONEYMOONING +HONEYMOONS +HONEYPOT +HONEYPOTS +HONEYS +HONEYSUCKLE +HONEYSUCKLES +HONG +HONGI +HONGIED +HONGIES +HONGIING +HONGS +HONIED +HONING +HONK +HONKED +HONKER +HONKERS +HONKEY +HONKEYS +HONKIE +HONKIES +HONKING +HONKS +HONKY +HONOR +HONORABILITIES +HONORABILITY +HONORABLE +HONORABLENESS +HONORABLENESSES +HONORABLY +HONORAND +HONORANDS +HONORARIA +HONORARIES +HONORARILY +HONORARIUM +HONORARIUMS +HONORARY +HONORED +HONOREE +HONOREES +HONORER +HONORERS +HONORIFIC +HONORIFICALLY +HONORIFICS +HONORING +HONORS +HONOUR +HONOURABLE +HONOURED +HONOURER +HONOURERS +HONOURING +HONOURS +HONS +HOOCH +HOOCHES +HOOCHIE +HOOCHIES +HOOD +HOODED +HOODEDNESS +HOODEDNESSES +HOODIE +HOODIER +HOODIES +HOODIEST +HOODING +HOODLESS +HOODLIKE +HOODLUM +HOODLUMISH +HOODLUMISM +HOODLUMISMS +HOODLUMS +HOODMOLD +HOODMOLDS +HOODOO +HOODOOED +HOODOOING +HOODOOISM +HOODOOISMS +HOODOOS +HOODS +HOODWINK +HOODWINKED +HOODWINKER +HOODWINKERS +HOODWINKING +HOODWINKS +HOODY +HOOEY +HOOEYS +HOOF +HOOFBEAT +HOOFBEATS +HOOFBOUND +HOOFED +HOOFER +HOOFERS +HOOFING +HOOFLESS +HOOFLIKE +HOOFPRINT +HOOFPRINTS +HOOFS +HOOK +HOOKA +HOOKAH +HOOKAHS +HOOKAS +HOOKED +HOOKER +HOOKERS +HOOKEY +HOOKEYS +HOOKIER +HOOKIES +HOOKIEST +HOOKING +HOOKLESS +HOOKLET +HOOKLETS +HOOKLIKE +HOOKNOSE +HOOKNOSED +HOOKNOSES +HOOKS +HOOKUP +HOOKUPS +HOOKWORM +HOOKWORMS +HOOKY +HOOLIE +HOOLIGAN +HOOLIGANISM +HOOLIGANISMS +HOOLIGANS +HOOLY +HOOP +HOOPED +HOOPER +HOOPERS +HOOPING +HOOPLA +HOOPLAS +HOOPLESS +HOOPLIKE +HOOPOE +HOOPOES +HOOPOO +HOOPOOS +HOOPS +HOOPSKIRT +HOOPSKIRTS +HOOPSTER +HOOPSTERS +HOORAH +HOORAHED +HOORAHING +HOORAHS +HOORAY +HOORAYED +HOORAYING +HOORAYS +HOOSEGOW +HOOSEGOWS +HOOSGOW +HOOSGOWS +HOOT +HOOTCH +HOOTCHES +HOOTED +HOOTENANNIES +HOOTENANNY +HOOTER +HOOTERS +HOOTIER +HOOTIEST +HOOTING +HOOTS +HOOTY +HOOVED +HOOVER +HOOVERED +HOOVERING +HOOVERS +HOOVES +HOP +HOPE +HOPED +HOPEFUL +HOPEFULLY +HOPEFULNESS +HOPEFULNESSES +HOPEFULS +HOPELESS +HOPELESSLY +HOPELESSNESS +HOPELESSNESSES +HOPER +HOPERS +HOPES +HOPHEAD +HOPHEADS +HOPING +HOPINGLY +HOPLITE +HOPLITES +HOPLITIC +HOPPED +HOPPER +HOPPERS +HOPPIER +HOPPIEST +HOPPING +HOPPINGS +HOPPLE +HOPPLED +HOPPLES +HOPPLING +HOPPY +HOPS +HOPSACK +HOPSACKING +HOPSACKINGS +HOPSACKS +HOPSCOTCH +HOPSCOTCHED +HOPSCOTCHES +HOPSCOTCHING +HOPTOAD +HOPTOADS +HORA +HORAH +HORAHS +HORAL +HORARY +HORAS +HORDE +HORDED +HORDEIN +HORDEINS +HORDEOLA +HORDEOLUM +HORDES +HORDING +HOREHOUND +HOREHOUNDS +HORIZON +HORIZONAL +HORIZONLESS +HORIZONS +HORIZONTAL +HORIZONTALITIES +HORIZONTALITY +HORIZONTALLY +HORIZONTALS +HORMOGONIA +HORMOGONIUM +HORMONAL +HORMONALLY +HORMONE +HORMONELIKE +HORMONES +HORMONIC +HORN +HORNBEAM +HORNBEAMS +HORNBILL +HORNBILLS +HORNBLENDE +HORNBLENDES +HORNBLENDIC +HORNBOOK +HORNBOOKS +HORNED +HORNEDNESS +HORNEDNESSES +HORNET +HORNETS +HORNFELS +HORNIER +HORNIEST +HORNILY +HORNINESS +HORNINESSES +HORNING +HORNINGS +HORNIST +HORNISTS +HORNITO +HORNITOS +HORNLESS +HORNLESSNESS +HORNLESSNESSES +HORNLIKE +HORNPIPE +HORNPIPES +HORNPOUT +HORNPOUTS +HORNS +HORNSTONE +HORNSTONES +HORNSWOGGLE +HORNSWOGGLED +HORNSWOGGLES +HORNSWOGGLING +HORNTAIL +HORNTAILS +HORNWORM +HORNWORMS +HORNWORT +HORNWORTS +HORNY +HOROLOGE +HOROLOGER +HOROLOGERS +HOROLOGES +HOROLOGIC +HOROLOGICAL +HOROLOGIES +HOROLOGIST +HOROLOGISTS +HOROLOGY +HOROSCOPE +HOROSCOPES +HOROSCOPIES +HOROSCOPY +HORRENDOUS +HORRENDOUSLY +HORRENT +HORRIBLE +HORRIBLENESS +HORRIBLENESSES +HORRIBLES +HORRIBLY +HORRID +HORRIDER +HORRIDEST +HORRIDLY +HORRIDNESS +HORRIDNESSES +HORRIFIC +HORRIFICALLY +HORRIFIED +HORRIFIES +HORRIFY +HORRIFYING +HORRIFYINGLY +HORROR +HORRORS +HORSE +HORSEBACK +HORSEBACKS +HORSEBEAN +HORSEBEANS +HORSECAR +HORSECARS +HORSED +HORSEFEATHERS +HORSEFLESH +HORSEFLESHES +HORSEFLIES +HORSEFLY +HORSEHAIR +HORSEHAIRS +HORSEHIDE +HORSEHIDES +HORSELAUGH +HORSELAUGHS +HORSELESS +HORSELIKE +HORSEMAN +HORSEMANSHIP +HORSEMANSHIPS +HORSEMEN +HORSEMINT +HORSEMINTS +HORSEPLAY +HORSEPLAYER +HORSEPLAYERS +HORSEPLAYS +HORSEPOWER +HORSEPOWERS +HORSEPOX +HORSEPOXES +HORSERACE +HORSERACES +HORSERADISH +HORSERADISHES +HORSES +HORSESHIT +HORSESHITS +HORSESHOD +HORSESHOE +HORSESHOED +HORSESHOEING +HORSESHOER +HORSESHOERS +HORSESHOES +HORSETAIL +HORSETAILS +HORSEWEED +HORSEWEEDS +HORSEWHIP +HORSEWHIPPED +HORSEWHIPPER +HORSEWHIPPERS +HORSEWHIPPING +HORSEWHIPS +HORSEWOMAN +HORSEWOMEN +HORSEY +HORSIER +HORSIEST +HORSILY +HORSINESS +HORSINESSES +HORSING +HORST +HORSTE +HORSTES +HORSTS +HORSY +HORTATIVE +HORTATIVELY +HORTATORY +HORTICULTURAL +HORTICULTURALLY +HORTICULTURE +HORTICULTURES +HORTICULTURIST +HORTICULTURISTS +HOS +HOSANNA +HOSANNAED +HOSANNAH +HOSANNAHS +HOSANNAING +HOSANNAS +HOSE +HOSED +HOSEL +HOSELIKE +HOSELS +HOSEN +HOSEPIPE +HOSEPIPES +HOSER +HOSERS +HOSES +HOSEY +HOSEYED +HOSEYING +HOSEYS +HOSIER +HOSIERIES +HOSIERS +HOSIERY +HOSING +HOSPICE +HOSPICES +HOSPITABLE +HOSPITABLY +HOSPITAL +HOSPITALISE +HOSPITALISED +HOSPITALISES +HOSPITALISING +HOSPITALITIES +HOSPITALITY +HOSPITALIZATION +HOSPITALIZE +HOSPITALIZED +HOSPITALIZES +HOSPITALIZING +HOSPITALS +HOSPITIA +HOSPITIUM +HOSPODAR +HOSPODARS +HOST +HOSTA +HOSTAGE +HOSTAGES +HOSTAS +HOSTED +HOSTEL +HOSTELED +HOSTELER +HOSTELERS +HOSTELING +HOSTELLED +HOSTELLER +HOSTELLERS +HOSTELLING +HOSTELRIES +HOSTELRY +HOSTELS +HOSTESS +HOSTESSED +HOSTESSES +HOSTESSING +HOSTILE +HOSTILELY +HOSTILES +HOSTILITIES +HOSTILITY +HOSTING +HOSTLER +HOSTLERS +HOSTLY +HOSTS +HOT +HOTBED +HOTBEDS +HOTBLOOD +HOTBLOODS +HOTBOX +HOTBOXES +HOTCAKE +HOTCAKES +HOTCH +HOTCHED +HOTCHES +HOTCHING +HOTCHPOT +HOTCHPOTCH +HOTCHPOTCHES +HOTCHPOTS +HOTDOG +HOTDOGGED +HOTDOGGER +HOTDOGGERS +HOTDOGGING +HOTDOGS +HOTEL +HOTELDOM +HOTELDOMS +HOTELIER +HOTELIERS +HOTELMAN +HOTELMEN +HOTELS +HOTFOOT +HOTFOOTED +HOTFOOTING +HOTFOOTS +HOTHEAD +HOTHEADED +HOTHEADEDLY +HOTHEADEDNESS +HOTHEADEDNESSES +HOTHEADS +HOTHOUSE +HOTHOUSED +HOTHOUSES +HOTHOUSING +HOTLINE +HOTLINES +HOTLINK +HOTLINKS +HOTLY +HOTNESS +HOTNESSES +HOTPRESS +HOTPRESSED +HOTPRESSES +HOTPRESSING +HOTROD +HOTRODS +HOTS +HOTSHOT +HOTSHOTS +HOTSPOT +HOTSPOTS +HOTSPUR +HOTSPURS +HOTTED +HOTTER +HOTTEST +HOTTIE +HOTTIES +HOTTING +HOTTISH +HOUDAH +HOUDAHS +HOUND +HOUNDED +HOUNDER +HOUNDERS +HOUNDING +HOUNDS +HOUR +HOURGLASS +HOURGLASSES +HOURI +HOURIS +HOURLIES +HOURLONG +HOURLY +HOURS +HOUSE +HOUSEBOAT +HOUSEBOATER +HOUSEBOATERS +HOUSEBOATS +HOUSEBOUND +HOUSEBOY +HOUSEBOYS +HOUSEBREAK +HOUSEBREAKER +HOUSEBREAKERS +HOUSEBREAKING +HOUSEBREAKINGS +HOUSEBREAKS +HOUSEBROKE +HOUSEBROKEN +HOUSECARL +HOUSECARLS +HOUSECLEAN +HOUSECLEANED +HOUSECLEANING +HOUSECLEANINGS +HOUSECLEANS +HOUSECOAT +HOUSECOATS +HOUSED +HOUSEDRESS +HOUSEDRESSES +HOUSEFATHER +HOUSEFATHERS +HOUSEFLIES +HOUSEFLY +HOUSEFRONT +HOUSEFRONTS +HOUSEFUL +HOUSEFULS +HOUSEGUEST +HOUSEGUESTS +HOUSEHOLD +HOUSEHOLDER +HOUSEHOLDERS +HOUSEHOLDS +HOUSEHUSBAND +HOUSEHUSBANDS +HOUSEKEEP +HOUSEKEEPER +HOUSEKEEPERS +HOUSEKEEPING +HOUSEKEEPINGS +HOUSEKEEPS +HOUSEKEPT +HOUSEL +HOUSELED +HOUSELEEK +HOUSELEEKS +HOUSELESS +HOUSELESSNESS +HOUSELESSNESSES +HOUSELIGHTS +HOUSELING +HOUSELLED +HOUSELLING +HOUSELS +HOUSEMAID +HOUSEMAIDS +HOUSEMAN +HOUSEMASTER +HOUSEMASTERS +HOUSEMATE +HOUSEMATES +HOUSEMEN +HOUSEMOTHER +HOUSEMOTHERS +HOUSEPAINTER +HOUSEPAINTERS +HOUSEPARENT +HOUSEPARENTS +HOUSEPERSON +HOUSEPERSONS +HOUSEPLANT +HOUSEPLANTS +HOUSER +HOUSEROOM +HOUSEROOMS +HOUSERS +HOUSES +HOUSESAT +HOUSESIT +HOUSESITS +HOUSESITTING +HOUSETOP +HOUSETOPS +HOUSEWARES +HOUSEWARMING +HOUSEWARMINGS +HOUSEWIFE +HOUSEWIFELINESS +HOUSEWIFELY +HOUSEWIFERIES +HOUSEWIFERY +HOUSEWIFEY +HOUSEWIVES +HOUSEWORK +HOUSEWORKS +HOUSING +HOUSINGS +HOUSTONIA +HOUSTONIAS +HOVE +HOVEL +HOVELED +HOVELING +HOVELLED +HOVELLING +HOVELS +HOVER +HOVERCRAFT +HOVERCRAFTS +HOVERED +HOVERER +HOVERERS +HOVERFLIES +HOVERFLY +HOVERING +HOVERS +HOW +HOWBEIT +HOWDAH +HOWDAHS +HOWDIE +HOWDIED +HOWDIES +HOWDY +HOWDYING +HOWE +HOWES +HOWEVER +HOWF +HOWFF +HOWFFS +HOWFS +HOWITZER +HOWITZERS +HOWK +HOWKED +HOWKING +HOWKS +HOWL +HOWLED +HOWLER +HOWLERS +HOWLET +HOWLETS +HOWLING +HOWLINGLY +HOWLS +HOWS +HOWSOEVER +HOY +HOYA +HOYAS +HOYDEN +HOYDENED +HOYDENING +HOYDENISH +HOYDENS +HOYLE +HOYLES +HOYS +HRYVNA +HRYVNAS +HRYVNIA +HRYVNIAS +HUARACHE +HUARACHES +HUARACHO +HUARACHOS +HUB +HUBBIES +HUBBLY +HUBBUB +HUBBUBS +HUBBY +HUBCAP +HUBCAPS +HUBRIS +HUBRISES +HUBRISTIC +HUBS +HUCK +HUCKABACK +HUCKABACKS +HUCKLE +HUCKLEBERRIES +HUCKLEBERRY +HUCKLES +HUCKS +HUCKSTER +HUCKSTERED +HUCKSTERING +HUCKSTERISM +HUCKSTERISMS +HUCKSTERS +HUDDLE +HUDDLED +HUDDLER +HUDDLERS +HUDDLES +HUDDLING +HUE +HUED +HUELESS +HUES +HUFF +HUFFED +HUFFIER +HUFFIEST +HUFFILY +HUFFINESS +HUFFINESSES +HUFFING +HUFFISH +HUFFISHLY +HUFFS +HUFFY +HUG +HUGE +HUGELY +HUGENESS +HUGENESSES +HUGEOUS +HUGEOUSLY +HUGER +HUGEST +HUGGABLE +HUGGED +HUGGER +HUGGERS +HUGGING +HUGS +HUH +HUIC +HUIPIL +HUIPILES +HUIPILS +HUISACHE +HUISACHES +HULA +HULAS +HULK +HULKED +HULKIER +HULKIEST +HULKING +HULKS +HULKY +HULL +HULLABALOO +HULLABALOOS +HULLED +HULLER +HULLERS +HULLING +HULLO +HULLOA +HULLOAED +HULLOAING +HULLOAS +HULLOED +HULLOES +HULLOING +HULLOO +HULLOOED +HULLOOING +HULLOOS +HULLOS +HULLS +HUM +HUMAN +HUMANE +HUMANELY +HUMANENESS +HUMANENESSES +HUMANER +HUMANEST +HUMANHOOD +HUMANHOODS +HUMANISE +HUMANISED +HUMANISES +HUMANISING +HUMANISM +HUMANISMS +HUMANIST +HUMANISTIC +HUMANISTICALLY +HUMANISTS +HUMANITARIAN +HUMANITARIANISM +HUMANITARIANS +HUMANITIES +HUMANITY +HUMANIZATION +HUMANIZATIONS +HUMANIZE +HUMANIZED +HUMANIZER +HUMANIZERS +HUMANIZES +HUMANIZING +HUMANKIND +HUMANLIKE +HUMANLY +HUMANNESS +HUMANNESSES +HUMANOID +HUMANOIDS +HUMANS +HUMATE +HUMATES +HUMBLE +HUMBLEBEE +HUMBLEBEES +HUMBLED +HUMBLENESS +HUMBLENESSES +HUMBLER +HUMBLERS +HUMBLES +HUMBLEST +HUMBLING +HUMBLINGLY +HUMBLY +HUMBUG +HUMBUGGED +HUMBUGGER +HUMBUGGERIES +HUMBUGGERS +HUMBUGGERY +HUMBUGGING +HUMBUGS +HUMDINGER +HUMDINGERS +HUMDRUM +HUMDRUMS +HUMECTANT +HUMECTANTS +HUMERAL +HUMERALS +HUMERI +HUMERUS +HUMIC +HUMID +HUMIDEX +HUMIDEXES +HUMIDIFICATION +HUMIDIFICATIONS +HUMIDIFIED +HUMIDIFIER +HUMIDIFIERS +HUMIDIFIES +HUMIDIFY +HUMIDIFYING +HUMIDISTAT +HUMIDISTATS +HUMIDITIES +HUMIDITY +HUMIDLY +HUMIDNESS +HUMIDNESSES +HUMIDOR +HUMIDORS +HUMIFICATION +HUMIFICATIONS +HUMIFIED +HUMILIATE +HUMILIATED +HUMILIATES +HUMILIATING +HUMILIATINGLY +HUMILIATION +HUMILIATIONS +HUMILITIES +HUMILITY +HUMITURE +HUMITURES +HUMMABLE +HUMMED +HUMMER +HUMMERS +HUMMING +HUMMINGBIRD +HUMMINGBIRDS +HUMMOCK +HUMMOCKED +HUMMOCKING +HUMMOCKS +HUMMOCKY +HUMMUS +HUMMUSES +HUMONGOUS +HUMOR +HUMORAL +HUMORED +HUMORESQUE +HUMORESQUES +HUMORFUL +HUMORING +HUMORIST +HUMORISTIC +HUMORISTS +HUMORLESS +HUMORLESSLY +HUMORLESSNESS +HUMORLESSNESSES +HUMOROUS +HUMOROUSLY +HUMOROUSNESS +HUMOROUSNESSES +HUMORS +HUMOUR +HUMOURED +HUMOURING +HUMOURS +HUMP +HUMPBACK +HUMPBACKED +HUMPBACKS +HUMPED +HUMPER +HUMPERS +HUMPH +HUMPHED +HUMPHING +HUMPHS +HUMPIER +HUMPIEST +HUMPINESS +HUMPINESSES +HUMPING +HUMPLESS +HUMPS +HUMPY +HUMS +HUMUNGOUS +HUMUS +HUMUSES +HUMVEE +HUMVEES +HUN +HUNCH +HUNCHBACK +HUNCHBACKED +HUNCHBACKS +HUNCHED +HUNCHES +HUNCHING +HUNDRED +HUNDREDFOLD +HUNDREDS +HUNDREDTH +HUNDREDTHS +HUNDREDWEIGHT +HUNDREDWEIGHTS +HUNG +HUNGER +HUNGERED +HUNGERING +HUNGERS +HUNGOVER +HUNGRIER +HUNGRIEST +HUNGRILY +HUNGRINESS +HUNGRINESSES +HUNGRY +HUNH +HUNK +HUNKER +HUNKERED +HUNKERING +HUNKERS +HUNKEY +HUNKEYS +HUNKIE +HUNKIER +HUNKIES +HUNKIEST +HUNKS +HUNKY +HUNNISH +HUNS +HUNT +HUNTABLE +HUNTED +HUNTEDLY +HUNTER +HUNTERS +HUNTING +HUNTINGS +HUNTRESS +HUNTRESSES +HUNTS +HUNTSMAN +HUNTSMEN +HUP +HUPPAH +HUPPAHS +HURDIES +HURDLE +HURDLED +HURDLER +HURDLERS +HURDLES +HURDLING +HURDS +HURL +HURLED +HURLER +HURLERS +HURLEY +HURLEYS +HURLIES +HURLING +HURLINGS +HURLS +HURLY +HURRAH +HURRAHED +HURRAHING +HURRAHS +HURRAY +HURRAYED +HURRAYING +HURRAYS +HURRICANE +HURRICANES +HURRIED +HURRIEDLY +HURRIEDNESS +HURRIEDNESSES +HURRIER +HURRIERS +HURRIES +HURRY +HURRYING +HURST +HURSTS +HURT +HURTER +HURTERS +HURTFUL +HURTFULLY +HURTFULNESS +HURTFULNESSES +HURTING +HURTLE +HURTLED +HURTLES +HURTLESS +HURTLING +HURTS +HUSBAND +HUSBANDED +HUSBANDER +HUSBANDERS +HUSBANDING +HUSBANDLY +HUSBANDMAN +HUSBANDMEN +HUSBANDRIES +HUSBANDRY +HUSBANDS +HUSH +HUSHABY +HUSHED +HUSHEDLY +HUSHES +HUSHFUL +HUSHING +HUSHPUPPIES +HUSHPUPPY +HUSK +HUSKED +HUSKER +HUSKERS +HUSKIER +HUSKIES +HUSKIEST +HUSKILY +HUSKINESS +HUSKINESSES +HUSKING +HUSKINGS +HUSKLIKE +HUSKS +HUSKY +HUSSAR +HUSSARS +HUSSIES +HUSSY +HUSTINGS +HUSTLE +HUSTLED +HUSTLER +HUSTLERS +HUSTLES +HUSTLING +HUSWIFE +HUSWIFES +HUSWIVES +HUT +HUTCH +HUTCHED +HUTCHES +HUTCHING +HUTLIKE +HUTMENT +HUTMENTS +HUTS +HUTTED +HUTTING +HUTZPA +HUTZPAH +HUTZPAHS +HUTZPAS +HUZZA +HUZZAED +HUZZAH +HUZZAHED +HUZZAHING +HUZZAHS +HUZZAING +HUZZAS +HWAN +HYACINTH +HYACINTHINE +HYACINTHS +HYAENA +HYAENAS +HYAENIC +HYALIN +HYALINE +HYALINES +HYALINS +HYALITE +HYALITES +HYALOGEN +HYALOGENS +HYALOID +HYALOIDS +HYALOPLASM +HYALOPLASMS +HYALURONIDASE +HYALURONIDASES +HYBRID +HYBRIDISM +HYBRIDISMS +HYBRIDIST +HYBRIDISTS +HYBRIDITIES +HYBRIDITY +HYBRIDIZATION +HYBRIDIZATIONS +HYBRIDIZE +HYBRIDIZED +HYBRIDIZER +HYBRIDIZERS +HYBRIDIZES +HYBRIDIZING +HYBRIDOMA +HYBRIDOMAS +HYBRIDS +HYBRIS +HYBRISES +HYBRISTIC +HYDATHODE +HYDATHODES +HYDATID +HYDATIDS +HYDRA +HYDRACID +HYDRACIDS +HYDRAE +HYDRAGOG +HYDRAGOGS +HYDRALAZINE +HYDRALAZINES +HYDRANGEA +HYDRANGEAS +HYDRANT +HYDRANTH +HYDRANTHS +HYDRANTS +HYDRAS +HYDRASE +HYDRASES +HYDRASTIS +HYDRASTISES +HYDRATE +HYDRATED +HYDRATES +HYDRATING +HYDRATION +HYDRATIONS +HYDRATOR +HYDRATORS +HYDRAULIC +HYDRAULICALLY +HYDRAULICS +HYDRAZIDE +HYDRAZIDES +HYDRAZINE +HYDRAZINES +HYDRIA +HYDRIAE +HYDRIC +HYDRID +HYDRIDE +HYDRIDES +HYDRIDS +HYDRILLA +HYDRILLAS +HYDRO +HYDROBIOLOGICAL +HYDROBIOLOGIES +HYDROBIOLOGIST +HYDROBIOLOGISTS +HYDROBIOLOGY +HYDROCARBON +HYDROCARBONS +HYDROCAST +HYDROCASTS +HYDROCELE +HYDROCELES +HYDROCEPHALIC +HYDROCEPHALICS +HYDROCEPHALIES +HYDROCEPHALUS +HYDROCEPHALUSES +HYDROCEPHALY +HYDROCHLORIDE +HYDROCHLORIDES +HYDROCOLLOID +HYDROCOLLOIDAL +HYDROCOLLOIDS +HYDROCORTISONE +HYDROCORTISONES +HYDROCRACK +HYDROCRACKED +HYDROCRACKER +HYDROCRACKERS +HYDROCRACKING +HYDROCRACKINGS +HYDROCRACKS +HYDRODYNAMIC +HYDRODYNAMICAL +HYDRODYNAMICIST +HYDRODYNAMICS +HYDROELECTRIC +HYDROFOIL +HYDROFOILS +HYDROGEL +HYDROGELS +HYDROGEN +HYDROGENASE +HYDROGENASES +HYDROGENATE +HYDROGENATED +HYDROGENATES +HYDROGENATING +HYDROGENATION +HYDROGENATIONS +HYDROGENOUS +HYDROGENS +HYDROGRAPHER +HYDROGRAPHERS +HYDROGRAPHIC +HYDROGRAPHIES +HYDROGRAPHY +HYDROID +HYDROIDS +HYDROKINETIC +HYDROLASE +HYDROLASES +HYDROLOGIC +HYDROLOGICAL +HYDROLOGICALLY +HYDROLOGIES +HYDROLOGIST +HYDROLOGISTS +HYDROLOGY +HYDROLYSATE +HYDROLYSATES +HYDROLYSES +HYDROLYSIS +HYDROLYTE +HYDROLYTES +HYDROLYTIC +HYDROLYTICALLY +HYDROLYZABLE +HYDROLYZATE +HYDROLYZATES +HYDROLYZE +HYDROLYZED +HYDROLYZES +HYDROLYZING +HYDROMAGNETIC +HYDROMANCIES +HYDROMANCY +HYDROMECHANICAL +HYDROMECHANICS +HYDROMEDUSA +HYDROMEDUSAE +HYDROMEL +HYDROMELS +HYDROMETALLURGY +HYDROMETEOR +HYDROMETEORS +HYDROMETER +HYDROMETERS +HYDROMETRIC +HYDROMORPHIC +HYDRONIC +HYDRONICALLY +HYDRONIUM +HYDRONIUMS +HYDROPATH +HYDROPATHIC +HYDROPATHIES +HYDROPATHS +HYDROPATHY +HYDROPEROXIDE +HYDROPEROXIDES +HYDROPHANE +HYDROPHANES +HYDROPHILIC +HYDROPHILICITY +HYDROPHOBIA +HYDROPHOBIAS +HYDROPHOBIC +HYDROPHOBICITY +HYDROPHONE +HYDROPHONES +HYDROPHYTE +HYDROPHYTES +HYDROPHYTIC +HYDROPIC +HYDROPLANE +HYDROPLANED +HYDROPLANES +HYDROPLANING +HYDROPONIC +HYDROPONICALLY +HYDROPONICS +HYDROPOWER +HYDROPOWERS +HYDROPS +HYDROPSES +HYDROPSIES +HYDROPSY +HYDROQUINONE +HYDROQUINONES +HYDROS +HYDROSERE +HYDROSERES +HYDROSKI +HYDROSKIS +HYDROSOL +HYDROSOLIC +HYDROSOLS +HYDROSPACE +HYDROSPACES +HYDROSPHERE +HYDROSPHERES +HYDROSPHERIC +HYDROSTAT +HYDROSTATIC +HYDROSTATICALLY +HYDROSTATICS +HYDROSTATS +HYDROTHERAPIES +HYDROTHERAPY +HYDROTHERMAL +HYDROTHERMALLY +HYDROTHORACES +HYDROTHORAX +HYDROTHORAXES +HYDROTROPIC +HYDROTROPISM +HYDROTROPISMS +HYDROUS +HYDROXIDE +HYDROXIDES +HYDROXY +HYDROXYAPATITE +HYDROXYAPATITES +HYDROXYL +HYDROXYLAMINE +HYDROXYLAMINES +HYDROXYLAPATITE +HYDROXYLASE +HYDROXYLASES +HYDROXYLATE +HYDROXYLATED +HYDROXYLATES +HYDROXYLATING +HYDROXYLATION +HYDROXYLATIONS +HYDROXYLIC +HYDROXYLS +HYDROXYPROLINE +HYDROXYPROLINES +HYDROXYUREA +HYDROXYUREAS +HYDROXYZINE +HYDROXYZINES +HYDROZOAN +HYDROZOANS +HYENA +HYENAS +HYENIC +HYENINE +HYENOID +HYETAL +HYGEIST +HYGEISTS +HYGIEIST +HYGIEISTS +HYGIENE +HYGIENES +HYGIENIC +HYGIENICALLY +HYGIENICS +HYGIENIST +HYGIENISTS +HYGROGRAPH +HYGROGRAPHS +HYGROMETER +HYGROMETERS +HYGROMETRIC +HYGROPHILOUS +HYGROPHYTE +HYGROPHYTES +HYGROPHYTIC +HYGROSCOPIC +HYGROSCOPICITY +HYGROSTAT +HYGROSTATS +HYING +HYLA +HYLAS +HYLOZOIC +HYLOZOISM +HYLOZOISMS +HYLOZOIST +HYLOZOISTIC +HYLOZOISTS +HYMEN +HYMENAL +HYMENEAL +HYMENEALLY +HYMENEALS +HYMENIA +HYMENIAL +HYMENIUM +HYMENIUMS +HYMENOPTERA +HYMENOPTERAN +HYMENOPTERANS +HYMENOPTERON +HYMENOPTERONS +HYMENOPTEROUS +HYMENS +HYMN +HYMNAL +HYMNALS +HYMNARIES +HYMNARY +HYMNBOOK +HYMNBOOKS +HYMNED +HYMNING +HYMNIST +HYMNISTS +HYMNLESS +HYMNLIKE +HYMNODIES +HYMNODIST +HYMNODISTS +HYMNODY +HYMNOLOGIES +HYMNOLOGY +HYMNS +HYOID +HYOIDAL +HYOIDEAN +HYOIDS +HYOSCINE +HYOSCINES +HYOSCYAMINE +HYOSCYAMINES +HYP +HYPABYSSAL +HYPABYSSALLY +HYPAETHRAL +HYPALLAGE +HYPALLAGES +HYPANTHIA +HYPANTHIUM +HYPE +HYPED +HYPER +HYPERACID +HYPERACIDITIES +HYPERACIDITY +HYPERACTIVE +HYPERACTIVES +HYPERACTIVITIES +HYPERACTIVITY +HYPERACUITIES +HYPERACUITY +HYPERACUTE +HYPERAESTHESIA +HYPERAESTHESIAS +HYPERAESTHETIC +HYPERAGGRESSIVE +HYPERALERT +HYPERARID +HYPERAROUSAL +HYPERAROUSALS +HYPERAWARE +HYPERAWARENESS +HYPERBARIC +HYPERBARICALLY +HYPERBOLA +HYPERBOLAE +HYPERBOLAS +HYPERBOLE +HYPERBOLES +HYPERBOLIC +HYPERBOLICAL +HYPERBOLICALLY +HYPERBOLIST +HYPERBOLISTS +HYPERBOLIZE +HYPERBOLIZED +HYPERBOLIZES +HYPERBOLIZING +HYPERBOLOID +HYPERBOLOIDAL +HYPERBOLOIDS +HYPERBOREAN +HYPERBOREANS +HYPERCALCEMIA +HYPERCALCEMIAS +HYPERCALCEMIC +HYPERCAPNIA +HYPERCAPNIAS +HYPERCAPNIC +HYPERCATABOLISM +HYPERCATALECTIC +HYPERCATALEXES +HYPERCATALEXIS +HYPERCAUTIOUS +HYPERCHARGE +HYPERCHARGED +HYPERCHARGES +HYPERCIVILIZED +HYPERCOAGULABLE +HYPERCOMPLEX +HYPERCONSCIOUS +HYPERCORRECT +HYPERCORRECTION +HYPERCORRECTLY +HYPERCRITIC +HYPERCRITICAL +HYPERCRITICALLY +HYPERCRITICISM +HYPERCRITICISMS +HYPERCRITICS +HYPERCUBE +HYPERCUBES +HYPEREFFICIENT +HYPEREMIA +HYPEREMIAS +HYPEREMIC +HYPEREMOTIONAL +HYPERENDEMIC +HYPERENERGETIC +HYPERESTHESIA +HYPERESTHESIAS +HYPERESTHETIC +HYPEREUTECTIC +HYPEREUTECTOID +HYPEREXCITABLE +HYPEREXCITED +HYPEREXCITEMENT +HYPEREXCRETION +HYPEREXCRETIONS +HYPEREXTEND +HYPEREXTENDED +HYPEREXTENDING +HYPEREXTENDS +HYPEREXTENSION +HYPEREXTENSIONS +HYPERFASTIDIOUS +HYPERFINE +HYPERFUNCTION +HYPERFUNCTIONAL +HYPERFUNCTIONS +HYPERGAMIES +HYPERGAMY +HYPERGLYCEMIA +HYPERGLYCEMIAS +HYPERGLYCEMIC +HYPERGOL +HYPERGOLIC +HYPERGOLICALLY +HYPERGOLS +HYPERHIDROSES +HYPERHIDROSIS +HYPERIMMUNE +HYPERIMMUNIZE +HYPERIMMUNIZED +HYPERIMMUNIZES +HYPERIMMUNIZING +HYPERINFLATED +HYPERINFLATION +HYPERINFLATIONS +HYPERINSULINISM +HYPERINTENSE +HYPERINVOLUTION +HYPERIRRITABLE +HYPERKERATOSES +HYPERKERATOSIS +HYPERKERATOTIC +HYPERKINESES +HYPERKINESIA +HYPERKINESIAS +HYPERKINESIS +HYPERKINETIC +HYPERLINK +HYPERLINKED +HYPERLINKING +HYPERLINKS +HYPERLIPEMIA +HYPERLIPEMIAS +HYPERLIPEMIC +HYPERLIPIDEMIA +HYPERLIPIDEMIAS +HYPERMANIA +HYPERMANIAS +HYPERMANIC +HYPERMARKET +HYPERMARKETS +HYPERMASCULINE +HYPERMEDIA +HYPERMEDIAS +HYPERMETABOLIC +HYPERMETABOLISM +HYPERMETER +HYPERMETERS +HYPERMETRIC +HYPERMETRICAL +HYPERMETROPIA +HYPERMETROPIAS +HYPERMETROPIC +HYPERMNESIA +HYPERMNESIAS +HYPERMNESIC +HYPERMOBILITIES +HYPERMOBILITY +HYPERMODERN +HYPERMODERNIST +HYPERMODERNISTS +HYPERMUTABILITY +HYPERMUTABLE +HYPERON +HYPERONS +HYPEROPE +HYPEROPES +HYPEROPIA +HYPEROPIAS +HYPEROPIC +HYPEROSTOSES +HYPEROSTOSIS +HYPEROSTOTIC +HYPERPARASITE +HYPERPARASITES +HYPERPARASITIC +HYPERPARASITISM +HYPERPHAGIA +HYPERPHAGIAS +HYPERPHAGIC +HYPERPHYSICAL +HYPERPIGMENTED +HYPERPITUITARY +HYPERPLANE +HYPERPLANES +HYPERPLASIA +HYPERPLASIAS +HYPERPLASTIC +HYPERPLOID +HYPERPLOIDIES +HYPERPLOIDS +HYPERPLOIDY +HYPERPNEA +HYPERPNEAS +HYPERPNEIC +HYPERPOLARIZE +HYPERPOLARIZED +HYPERPOLARIZES +HYPERPOLARIZING +HYPERPRODUCER +HYPERPRODUCERS +HYPERPRODUCTION +HYPERPURE +HYPERPYREXIA +HYPERPYREXIAS +HYPERRATIONAL +HYPERREACTIVE +HYPERREACTIVITY +HYPERREACTOR +HYPERREACTORS +HYPERREALISM +HYPERREALISMS +HYPERREALIST +HYPERREALISTIC +HYPERRESPONSIVE +HYPERROMANTIC +HYPERROMANTICS +HYPERS +HYPERSALINE +HYPERSALINITIES +HYPERSALINITY +HYPERSALIVATION +HYPERSECRETION +HYPERSECRETIONS +HYPERSENSITIVE +HYPERSENSITIZE +HYPERSENSITIZED +HYPERSENSITIZES +HYPERSEXUAL +HYPERSEXUALITY +HYPERSOMNOLENCE +HYPERSONIC +HYPERSONICALLY +HYPERSPACE +HYPERSPACES +HYPERSTATIC +HYPERSTHENE +HYPERSTHENES +HYPERSTHENIC +HYPERSTIMULATE +HYPERSTIMULATED +HYPERSTIMULATES +HYPERSURFACE +HYPERSURFACES +HYPERTENSE +HYPERTENSION +HYPERTENSIONS +HYPERTENSIVE +HYPERTENSIVES +HYPERTEXT +HYPERTEXTS +HYPERTHERMIA +HYPERTHERMIAS +HYPERTHERMIC +HYPERTHYROID +HYPERTHYROIDISM +HYPERTONIA +HYPERTONIAS +HYPERTONIC +HYPERTONICITIES +HYPERTONICITY +HYPERTROPHIC +HYPERTROPHIED +HYPERTROPHIES +HYPERTROPHY +HYPERTROPHYING +HYPERTYPICAL +HYPERURBANISM +HYPERURBANISMS +HYPERURICEMIA +HYPERURICEMIAS +HYPERVELOCITIES +HYPERVELOCITY +HYPERVENTILATE +HYPERVENTILATED +HYPERVENTILATES +HYPERVIGILANCE +HYPERVIGILANCES +HYPERVIGILANT +HYPERVIRULENT +HYPERVISCOSITY +HYPES +HYPETHRAL +HYPHA +HYPHAE +HYPHAL +HYPHEMIA +HYPHEMIAS +HYPHEN +HYPHENATE +HYPHENATED +HYPHENATES +HYPHENATING +HYPHENATION +HYPHENATIONS +HYPHENED +HYPHENIC +HYPHENING +HYPHENLESS +HYPHENS +HYPING +HYPNAGOGIC +HYPNIC +HYPNOGOGIC +HYPNOID +HYPNOIDAL +HYPNOLOGIES +HYPNOLOGY +HYPNOPOMPIC +HYPNOSES +HYPNOSIS +HYPNOTHERAPIES +HYPNOTHERAPIST +HYPNOTHERAPISTS +HYPNOTHERAPY +HYPNOTIC +HYPNOTICALLY +HYPNOTICS +HYPNOTISM +HYPNOTISMS +HYPNOTIST +HYPNOTISTS +HYPNOTIZABILITY +HYPNOTIZABLE +HYPNOTIZE +HYPNOTIZED +HYPNOTIZES +HYPNOTIZING +HYPO +HYPOACID +HYPOALLERGENIC +HYPOBARIC +HYPOBLAST +HYPOBLASTS +HYPOCALCEMIA +HYPOCALCEMIAS +HYPOCALCEMIC +HYPOCAUST +HYPOCAUSTS +HYPOCENTER +HYPOCENTERS +HYPOCENTRAL +HYPOCHLORITE +HYPOCHLORITES +HYPOCHONDRIA +HYPOCHONDRIAC +HYPOCHONDRIACAL +HYPOCHONDRIACS +HYPOCHONDRIAS +HYPOCHONDRIASES +HYPOCHONDRIASIS +HYPOCORISM +HYPOCORISMS +HYPOCORISTIC +HYPOCORISTICAL +HYPOCOTYL +HYPOCOTYLS +HYPOCRISIES +HYPOCRISY +HYPOCRITE +HYPOCRITES +HYPOCRITICAL +HYPOCRITICALLY +HYPOCYCLOID +HYPOCYCLOIDS +HYPODERM +HYPODERMA +HYPODERMAL +HYPODERMAS +HYPODERMIC +HYPODERMICALLY +HYPODERMICS +HYPODERMIS +HYPODERMISES +HYPODERMS +HYPODIPLOID +HYPODIPLOIDIES +HYPODIPLOIDY +HYPOED +HYPOEUTECTOID +HYPOGASTRIC +HYPOGEA +HYPOGEAL +HYPOGEAN +HYPOGENE +HYPOGEOUS +HYPOGEUM +HYPOGLOSSAL +HYPOGLOSSALS +HYPOGLYCEMIA +HYPOGLYCEMIAS +HYPOGLYCEMIC +HYPOGLYCEMICS +HYPOGYNIES +HYPOGYNOUS +HYPOGYNY +HYPOING +HYPOKALEMIA +HYPOKALEMIAS +HYPOKALEMIC +HYPOLIMNIA +HYPOLIMNION +HYPOMAGNESEMIA +HYPOMAGNESEMIAS +HYPOMANIA +HYPOMANIAS +HYPOMANIC +HYPOMANICS +HYPOMORPH +HYPOMORPHIC +HYPOMORPHS +HYPONASTIES +HYPONASTY +HYPONEA +HYPONEAS +HYPONOIA +HYPONOIAS +HYPONYM +HYPONYMIES +HYPONYMS +HYPONYMY +HYPOPHARYNGES +HYPOPHARYNX +HYPOPHARYNXES +HYPOPHYSEAL +HYPOPHYSECTOMY +HYPOPHYSES +HYPOPHYSIAL +HYPOPHYSIS +HYPOPITUITARISM +HYPOPITUITARY +HYPOPLASIA +HYPOPLASIAS +HYPOPLASTIC +HYPOPLOID +HYPOPLOIDS +HYPOPNEA +HYPOPNEAS +HYPOPNEIC +HYPOPYON +HYPOPYONS +HYPOS +HYPOSENSITIZE +HYPOSENSITIZED +HYPOSENSITIZES +HYPOSENSITIZING +HYPOSPADIAS +HYPOSPADIASES +HYPOSTASES +HYPOSTASIS +HYPOSTATIC +HYPOSTATICALLY +HYPOSTATIZATION +HYPOSTATIZE +HYPOSTATIZED +HYPOSTATIZES +HYPOSTATIZING +HYPOSTOME +HYPOSTOMES +HYPOSTYLE +HYPOSTYLES +HYPOTACTIC +HYPOTAXES +HYPOTAXIS +HYPOTENSION +HYPOTENSIONS +HYPOTENSIVE +HYPOTENSIVES +HYPOTENUSE +HYPOTENUSES +HYPOTHALAMI +HYPOTHALAMIC +HYPOTHALAMUS +HYPOTHEC +HYPOTHECATE +HYPOTHECATED +HYPOTHECATES +HYPOTHECATING +HYPOTHECATION +HYPOTHECATIONS +HYPOTHECATOR +HYPOTHECATORS +HYPOTHECS +HYPOTHENUSE +HYPOTHENUSES +HYPOTHERMAL +HYPOTHERMIA +HYPOTHERMIAS +HYPOTHERMIC +HYPOTHESES +HYPOTHESIS +HYPOTHESIZE +HYPOTHESIZED +HYPOTHESIZES +HYPOTHESIZING +HYPOTHETICAL +HYPOTHETICALLY +HYPOTHYROID +HYPOTHYROIDISM +HYPOTHYROIDISMS +HYPOTONIA +HYPOTONIAS +HYPOTONIC +HYPOTONICITIES +HYPOTONICITY +HYPOXANTHINE +HYPOXANTHINES +HYPOXEMIA +HYPOXEMIAS +HYPOXEMIC +HYPOXIA +HYPOXIAS +HYPOXIC +HYPS +HYPSOMETER +HYPSOMETERS +HYPSOMETRIC +HYRACES +HYRACOID +HYRACOIDS +HYRAX +HYRAXES +HYSON +HYSONS +HYSSOP +HYSSOPS +HYSTERECTOMIES +HYSTERECTOMIZED +HYSTERECTOMY +HYSTERESES +HYSTERESIS +HYSTERETIC +HYSTERIA +HYSTERIAS +HYSTERIC +HYSTERICAL +HYSTERICALLY +HYSTERICS +HYSTEROID +HYSTEROTOMIES +HYSTEROTOMY +HYTE +IAMB +IAMBI +IAMBIC +IAMBICS +IAMBS +IAMBUS +IAMBUSES +IATRIC +IATRICAL +IATROGENIC +IATROGENICALLY +IBEX +IBEXES +IBICES +IBIDEM +IBIS +IBISES +IBOGAINE +IBOGAINES +IBUPROFEN +IBUPROFENS +ICE +ICEBERG +ICEBERGS +ICEBLINK +ICEBLINKS +ICEBOAT +ICEBOATER +ICEBOATERS +ICEBOATING +ICEBOATINGS +ICEBOATS +ICEBOUND +ICEBOX +ICEBOXES +ICEBREAKER +ICEBREAKERS +ICECAP +ICECAPPED +ICECAPS +ICED +ICEFALL +ICEFALLS +ICEHOUSE +ICEHOUSES +ICEKHANA +ICEKHANAS +ICELESS +ICELIKE +ICEMAKER +ICEMAKERS +ICEMAN +ICEMEN +ICES +ICH +ICHNEUMON +ICHNEUMONS +ICHNITE +ICHNITES +ICHNOLITE +ICHNOLITES +ICHNOLOGIES +ICHNOLOGY +ICHOR +ICHOROUS +ICHORS +ICHS +ICHTHYIC +ICHTHYOFAUNA +ICHTHYOFAUNAE +ICHTHYOFAUNAL +ICHTHYOFAUNAS +ICHTHYOID +ICHTHYOIDS +ICHTHYOLOGICAL +ICHTHYOLOGIES +ICHTHYOLOGIST +ICHTHYOLOGISTS +ICHTHYOLOGY +ICHTHYOPHAGOUS +ICHTHYOSAUR +ICHTHYOSAURIAN +ICHTHYOSAURIANS +ICHTHYOSAURS +ICICLE +ICICLED +ICICLES +ICIER +ICIEST +ICILY +ICINESS +ICINESSES +ICING +ICINGS +ICK +ICKER +ICKERS +ICKIER +ICKIEST +ICKILY +ICKINESS +ICKINESSES +ICKY +ICON +ICONES +ICONIC +ICONICAL +ICONICALLY +ICONICITIES +ICONICITY +ICONOCLASM +ICONOCLASMS +ICONOCLAST +ICONOCLASTIC +ICONOCLASTS +ICONOGRAPHER +ICONOGRAPHERS +ICONOGRAPHIC +ICONOGRAPHICAL +ICONOGRAPHIES +ICONOGRAPHY +ICONOLATRIES +ICONOLATRY +ICONOLOGICAL +ICONOLOGIES +ICONOLOGY +ICONOSCOPE +ICONOSCOPES +ICONOSTASES +ICONOSTASIS +ICONS +ICOSAHEDRA +ICOSAHEDRAL +ICOSAHEDRON +ICOSAHEDRONS +ICTERIC +ICTERICAL +ICTERICS +ICTERUS +ICTERUSES +ICTIC +ICTUS +ICTUSES +ICY +ID +IDEA +IDEAL +IDEALESS +IDEALISE +IDEALISED +IDEALISES +IDEALISING +IDEALISM +IDEALISMS +IDEALIST +IDEALISTIC +IDEALISTICALLY +IDEALISTS +IDEALITIES +IDEALITY +IDEALIZATION +IDEALIZATIONS +IDEALIZE +IDEALIZED +IDEALIZER +IDEALIZERS +IDEALIZES +IDEALIZING +IDEALLESS +IDEALLY +IDEALOGIES +IDEALOGUE +IDEALOGUES +IDEALOGY +IDEALS +IDEAS +IDEATE +IDEATED +IDEATES +IDEATING +IDEATION +IDEATIONAL +IDEATIONALLY +IDEATIONS +IDEATIVE +IDEM +IDEMPOTENT +IDEMPOTENTS +IDENTIC +IDENTICAL +IDENTICALLY +IDENTICALNESS +IDENTICALNESSES +IDENTIFIABLE +IDENTIFIABLY +IDENTIFICATION +IDENTIFICATIONS +IDENTIFIED +IDENTIFIER +IDENTIFIERS +IDENTIFIES +IDENTIFY +IDENTIFYING +IDENTIKIT +IDENTITIES +IDENTITY +IDEOGRAM +IDEOGRAMIC +IDEOGRAMMATIC +IDEOGRAMMIC +IDEOGRAMS +IDEOGRAPH +IDEOGRAPHIC +IDEOGRAPHICALLY +IDEOGRAPHIES +IDEOGRAPHS +IDEOGRAPHY +IDEOLOGIC +IDEOLOGICAL +IDEOLOGICALLY +IDEOLOGIES +IDEOLOGIST +IDEOLOGISTS +IDEOLOGIZE +IDEOLOGIZED +IDEOLOGIZES +IDEOLOGIZING +IDEOLOGUE +IDEOLOGUES +IDEOLOGY +IDEOMOTOR +IDEOPHONE +IDEOPHONES +IDES +IDIOBLAST +IDIOBLASTIC +IDIOBLASTS +IDIOCIES +IDIOCY +IDIOGRAPHIC +IDIOLECT +IDIOLECTAL +IDIOLECTS +IDIOM +IDIOMATIC +IDIOMATICALLY +IDIOMATICNESS +IDIOMATICNESSES +IDIOMORPHIC +IDIOMS +IDIOPATHIC +IDIOPATHICALLY +IDIOPATHIES +IDIOPATHY +IDIOPLASM +IDIOPLASMS +IDIOSYNCRASIES +IDIOSYNCRASY +IDIOSYNCRATIC +IDIOT +IDIOTIC +IDIOTICAL +IDIOTICALLY +IDIOTISM +IDIOTISMS +IDIOTS +IDIOTYPE +IDIOTYPES +IDIOTYPIC +IDLE +IDLED +IDLENESS +IDLENESSES +IDLER +IDLERS +IDLES +IDLESSE +IDLESSES +IDLEST +IDLING +IDLY +IDOCRASE +IDOCRASES +IDOL +IDOLATER +IDOLATERS +IDOLATOR +IDOLATORS +IDOLATRIES +IDOLATROUS +IDOLATROUSLY +IDOLATROUSNESS +IDOLATRY +IDOLISE +IDOLISED +IDOLISER +IDOLISERS +IDOLISES +IDOLISING +IDOLISM +IDOLISMS +IDOLIZATION +IDOLIZATIONS +IDOLIZE +IDOLIZED +IDOLIZER +IDOLIZERS +IDOLIZES +IDOLIZING +IDOLS +IDONEITIES +IDONEITY +IDONEOUS +IDS +IDYL +IDYLIST +IDYLISTS +IDYLL +IDYLLIC +IDYLLICALLY +IDYLLIST +IDYLLISTS +IDYLLS +IDYLS +IF +IFF +IFFIER +IFFIEST +IFFINESS +IFFINESSES +IFFY +IFS +IGG +IGGED +IGGING +IGGS +IGLOO +IGLOOS +IGLU +IGLUS +IGNATIA +IGNATIAS +IGNEOUS +IGNESCENT +IGNESCENTS +IGNIFIED +IGNIFIES +IGNIFY +IGNIFYING +IGNIMBRITE +IGNIMBRITES +IGNITABILITIES +IGNITABILITY +IGNITABLE +IGNITE +IGNITED +IGNITER +IGNITERS +IGNITES +IGNITIBLE +IGNITING +IGNITION +IGNITIONS +IGNITOR +IGNITORS +IGNITRON +IGNITRONS +IGNOBILITIES +IGNOBILITY +IGNOBLE +IGNOBLENESS +IGNOBLENESSES +IGNOBLY +IGNOMINIES +IGNOMINIOUS +IGNOMINIOUSLY +IGNOMINIOUSNESS +IGNOMINY +IGNORABLE +IGNORAMI +IGNORAMUS +IGNORAMUSES +IGNORANCE +IGNORANCES +IGNORANT +IGNORANTLY +IGNORANTNESS +IGNORANTNESSES +IGNORE +IGNORED +IGNORER +IGNORERS +IGNORES +IGNORING +IGUANA +IGUANAS +IGUANIAN +IGUANIANS +IGUANID +IGUANIDS +IGUANODON +IGUANODONS +IHRAM +IHRAMS +IKAT +IKATS +IKEBANA +IKEBANAS +IKON +IKONS +ILEA +ILEAC +ILEAL +ILEITIDES +ILEITIS +ILEOSTOMIES +ILEOSTOMY +ILEUM +ILEUS +ILEUSES +ILEX +ILEXES +ILIA +ILIAC +ILIAD +ILIADS +ILIAL +ILIUM +ILK +ILKA +ILKS +ILL +ILLATION +ILLATIONS +ILLATIVE +ILLATIVELY +ILLATIVES +ILLAUDABLE +ILLAUDABLY +ILLEGAL +ILLEGALITIES +ILLEGALITY +ILLEGALIZATION +ILLEGALIZATIONS +ILLEGALIZE +ILLEGALIZED +ILLEGALIZES +ILLEGALIZING +ILLEGALLY +ILLEGALS +ILLEGIBILITIES +ILLEGIBILITY +ILLEGIBLE +ILLEGIBLY +ILLEGITIMACIES +ILLEGITIMACY +ILLEGITIMATE +ILLEGITIMATELY +ILLER +ILLEST +ILLIBERAL +ILLIBERALISM +ILLIBERALISMS +ILLIBERALITIES +ILLIBERALITY +ILLIBERALLY +ILLIBERALNESS +ILLIBERALNESSES +ILLICIT +ILLICITLY +ILLIMITABILITY +ILLIMITABLE +ILLIMITABLENESS +ILLIMITABLY +ILLINIUM +ILLINIUMS +ILLIQUID +ILLIQUIDITIES +ILLIQUIDITY +ILLITE +ILLITERACIES +ILLITERACY +ILLITERATE +ILLITERATELY +ILLITERATENESS +ILLITERATES +ILLITES +ILLITIC +ILLNESS +ILLNESSES +ILLOCUTIONARY +ILLOGIC +ILLOGICAL +ILLOGICALITIES +ILLOGICALITY +ILLOGICALLY +ILLOGICALNESS +ILLOGICALNESSES +ILLOGICS +ILLS +ILLUDE +ILLUDED +ILLUDES +ILLUDING +ILLUME +ILLUMED +ILLUMES +ILLUMINABLE +ILLUMINANCE +ILLUMINANCES +ILLUMINANT +ILLUMINANTS +ILLUMINATE +ILLUMINATED +ILLUMINATES +ILLUMINATI +ILLUMINATING +ILLUMINATINGLY +ILLUMINATION +ILLUMINATIONS +ILLUMINATIVE +ILLUMINATOR +ILLUMINATORS +ILLUMINE +ILLUMINED +ILLUMINES +ILLUMING +ILLUMINING +ILLUMINISM +ILLUMINISMS +ILLUMINIST +ILLUMINISTS +ILLUSION +ILLUSIONAL +ILLUSIONARY +ILLUSIONISM +ILLUSIONISMS +ILLUSIONIST +ILLUSIONISTIC +ILLUSIONISTS +ILLUSIONS +ILLUSIVE +ILLUSIVELY +ILLUSIVENESS +ILLUSIVENESSES +ILLUSORILY +ILLUSORINESS +ILLUSORINESSES +ILLUSORY +ILLUSTRATE +ILLUSTRATED +ILLUSTRATES +ILLUSTRATING +ILLUSTRATION +ILLUSTRATIONAL +ILLUSTRATIONS +ILLUSTRATIVE +ILLUSTRATIVELY +ILLUSTRATOR +ILLUSTRATORS +ILLUSTRIOUS +ILLUSTRIOUSLY +ILLUSTRIOUSNESS +ILLUVIA +ILLUVIAL +ILLUVIATE +ILLUVIATED +ILLUVIATES +ILLUVIATING +ILLUVIATION +ILLUVIATIONS +ILLUVIUM +ILLUVIUMS +ILLY +ILMENITE +ILMENITES +IMAGE +IMAGEABLE +IMAGED +IMAGER +IMAGERIES +IMAGERS +IMAGERY +IMAGES +IMAGINABLE +IMAGINABLENESS +IMAGINABLY +IMAGINAL +IMAGINARIES +IMAGINARILY +IMAGINARINESS +IMAGINARINESSES +IMAGINARY +IMAGINATION +IMAGINATIONS +IMAGINATIVE +IMAGINATIVELY +IMAGINATIVENESS +IMAGINE +IMAGINED +IMAGINER +IMAGINERS +IMAGINES +IMAGING +IMAGINGS +IMAGINING +IMAGISM +IMAGISMS +IMAGIST +IMAGISTIC +IMAGISTICALLY +IMAGISTS +IMAGO +IMAGOES +IMAGOS +IMAM +IMAMATE +IMAMATES +IMAMS +IMARET +IMARETS +IMAUM +IMAUMS +IMBALANCE +IMBALANCED +IMBALANCES +IMBALM +IMBALMED +IMBALMER +IMBALMERS +IMBALMING +IMBALMS +IMBARK +IMBARKED +IMBARKING +IMBARKS +IMBECILE +IMBECILES +IMBECILIC +IMBECILITIES +IMBECILITY +IMBED +IMBEDDED +IMBEDDING +IMBEDS +IMBIBE +IMBIBED +IMBIBER +IMBIBERS +IMBIBES +IMBIBING +IMBIBITION +IMBIBITIONAL +IMBIBITIONS +IMBITTER +IMBITTERED +IMBITTERING +IMBITTERS +IMBLAZE +IMBLAZED +IMBLAZES +IMBLAZING +IMBODIED +IMBODIES +IMBODY +IMBODYING +IMBOLDEN +IMBOLDENED +IMBOLDENING +IMBOLDENS +IMBOSOM +IMBOSOMED +IMBOSOMING +IMBOSOMS +IMBOWER +IMBOWERED +IMBOWERING +IMBOWERS +IMBRICATE +IMBRICATED +IMBRICATES +IMBRICATING +IMBRICATION +IMBRICATIONS +IMBROGLIO +IMBROGLIOS +IMBROWN +IMBROWNED +IMBROWNING +IMBROWNS +IMBRUE +IMBRUED +IMBRUES +IMBRUING +IMBRUTE +IMBRUTED +IMBRUTES +IMBRUTING +IMBUE +IMBUED +IMBUEMENT +IMBUEMENTS +IMBUES +IMBUING +IMID +IMIDAZOLE +IMIDAZOLES +IMIDE +IMIDES +IMIDIC +IMIDO +IMIDS +IMINE +IMINES +IMINO +IMIPRAMINE +IMIPRAMINES +IMITABLE +IMITATE +IMITATED +IMITATES +IMITATING +IMITATION +IMITATIONS +IMITATIVE +IMITATIVELY +IMITATIVENESS +IMITATIVENESSES +IMITATOR +IMITATORS +IMMACULACIES +IMMACULACY +IMMACULATE +IMMACULATELY +IMMANE +IMMANENCE +IMMANENCES +IMMANENCIES +IMMANENCY +IMMANENT +IMMANENTISM +IMMANENTISMS +IMMANENTIST +IMMANENTISTIC +IMMANENTISTS +IMMANENTLY +IMMATERIAL +IMMATERIALISM +IMMATERIALISMS +IMMATERIALIST +IMMATERIALISTS +IMMATERIALITIES +IMMATERIALITY +IMMATERIALIZE +IMMATERIALIZED +IMMATERIALIZES +IMMATERIALIZING +IMMATURE +IMMATURELY +IMMATURES +IMMATURITIES +IMMATURITY +IMMEASURABLE +IMMEASURABLY +IMMEDIACIES +IMMEDIACY +IMMEDIATE +IMMEDIATELY +IMMEDIATENESS +IMMEDIATENESSES +IMMEDICABLE +IMMEDICABLY +IMMEMORIAL +IMMEMORIALLY +IMMENSE +IMMENSELY +IMMENSENESS +IMMENSENESSES +IMMENSER +IMMENSEST +IMMENSITIES +IMMENSITY +IMMENSURABLE +IMMERGE +IMMERGED +IMMERGES +IMMERGING +IMMERSE +IMMERSED +IMMERSES +IMMERSIBLE +IMMERSING +IMMERSION +IMMERSIONS +IMMESH +IMMESHED +IMMESHES +IMMESHING +IMMETHODICAL +IMMETHODICALLY +IMMIES +IMMIGRANT +IMMIGRANTS +IMMIGRATE +IMMIGRATED +IMMIGRATES +IMMIGRATING +IMMIGRATION +IMMIGRATIONAL +IMMIGRATIONS +IMMINENCE +IMMINENCES +IMMINENCIES +IMMINENCY +IMMINENT +IMMINENTLY +IMMINGLE +IMMINGLED +IMMINGLES +IMMINGLING +IMMISCIBILITIES +IMMISCIBILITY +IMMISCIBLE +IMMITIGABLE +IMMITIGABLY +IMMITTANCE +IMMITTANCES +IMMIX +IMMIXED +IMMIXES +IMMIXING +IMMIXTURE +IMMIXTURES +IMMOBILE +IMMOBILISM +IMMOBILISMS +IMMOBILITIES +IMMOBILITY +IMMOBILIZATION +IMMOBILIZATIONS +IMMOBILIZE +IMMOBILIZED +IMMOBILIZER +IMMOBILIZERS +IMMOBILIZES +IMMOBILIZING +IMMODERACIES +IMMODERACY +IMMODERATE +IMMODERATELY +IMMODERATENESS +IMMODERATION +IMMODERATIONS +IMMODEST +IMMODESTIES +IMMODESTLY +IMMODESTY +IMMOLATE +IMMOLATED +IMMOLATES +IMMOLATING +IMMOLATION +IMMOLATIONS +IMMOLATOR +IMMOLATORS +IMMORAL +IMMORALISM +IMMORALISMS +IMMORALIST +IMMORALISTS +IMMORALITIES +IMMORALITY +IMMORALLY +IMMORTAL +IMMORTALISE +IMMORTALISED +IMMORTALISES +IMMORTALISING +IMMORTALITIES +IMMORTALITY +IMMORTALIZATION +IMMORTALIZE +IMMORTALIZED +IMMORTALIZER +IMMORTALIZERS +IMMORTALIZES +IMMORTALIZING +IMMORTALLY +IMMORTALS +IMMORTELLE +IMMORTELLES +IMMOTILE +IMMOVABILITIES +IMMOVABILITY +IMMOVABLE +IMMOVABLENESS +IMMOVABLENESSES +IMMOVABLES +IMMOVABLY +IMMUNE +IMMUNES +IMMUNISE +IMMUNISED +IMMUNISES +IMMUNISING +IMMUNITIES +IMMUNITY +IMMUNIZATION +IMMUNIZATIONS +IMMUNIZE +IMMUNIZED +IMMUNIZER +IMMUNIZERS +IMMUNIZES +IMMUNIZING +IMMUNOASSAY +IMMUNOASSAYABLE +IMMUNOASSAYS +IMMUNOBLOT +IMMUNOBLOTS +IMMUNOBLOTTING +IMMUNOBLOTTINGS +IMMUNOCHEMICAL +IMMUNOCHEMIST +IMMUNOCHEMISTRY +IMMUNOCHEMISTS +IMMUNOCOMPETENT +IMMUNODEFICIENT +IMMUNODIAGNOSES +IMMUNODIAGNOSIS +IMMUNODIFFUSION +IMMUNOGEN +IMMUNOGENESES +IMMUNOGENESIS +IMMUNOGENETIC +IMMUNOGENETICS +IMMUNOGENIC +IMMUNOGENICITY +IMMUNOGENS +IMMUNOGLOBULIN +IMMUNOGLOBULINS +IMMUNOLOGIC +IMMUNOLOGICAL +IMMUNOLOGICALLY +IMMUNOLOGIES +IMMUNOLOGIST +IMMUNOLOGISTS +IMMUNOLOGY +IMMUNOMODULATOR +IMMUNOPATHOLOGY +IMMUNOREACTIVE +IMMUNOSORBENT +IMMUNOSORBENTS +IMMUNOSUPPRESS +IMMUNOTHERAPIES +IMMUNOTHERAPY +IMMURE +IMMURED +IMMUREMENT +IMMUREMENTS +IMMURES +IMMURING +IMMUTABILITIES +IMMUTABILITY +IMMUTABLE +IMMUTABLENESS +IMMUTABLENESSES +IMMUTABLY +IMMY +IMP +IMPACT +IMPACTED +IMPACTER +IMPACTERS +IMPACTFUL +IMPACTING +IMPACTION +IMPACTIONS +IMPACTIVE +IMPACTOR +IMPACTORS +IMPACTS +IMPAINT +IMPAINTED +IMPAINTING +IMPAINTS +IMPAIR +IMPAIRED +IMPAIRER +IMPAIRERS +IMPAIRING +IMPAIRMENT +IMPAIRMENTS +IMPAIRS +IMPALA +IMPALAS +IMPALE +IMPALED +IMPALEMENT +IMPALEMENTS +IMPALER +IMPALERS +IMPALES +IMPALING +IMPALPABILITIES +IMPALPABILITY +IMPALPABLE +IMPALPABLY +IMPANEL +IMPANELED +IMPANELING +IMPANELLED +IMPANELLING +IMPANELS +IMPARADISE +IMPARADISED +IMPARADISES +IMPARADISING +IMPARITIES +IMPARITY +IMPARK +IMPARKED +IMPARKING +IMPARKS +IMPART +IMPARTATION +IMPARTATIONS +IMPARTED +IMPARTER +IMPARTERS +IMPARTIAL +IMPARTIALITIES +IMPARTIALITY +IMPARTIALLY +IMPARTIBLE +IMPARTIBLY +IMPARTING +IMPARTMENT +IMPARTMENTS +IMPARTS +IMPASSABILITIES +IMPASSABILITY +IMPASSABLE +IMPASSABLENESS +IMPASSABLY +IMPASSE +IMPASSES +IMPASSIBILITIES +IMPASSIBILITY +IMPASSIBLE +IMPASSIBLY +IMPASSION +IMPASSIONED +IMPASSIONING +IMPASSIONS +IMPASSIVE +IMPASSIVELY +IMPASSIVENESS +IMPASSIVENESSES +IMPASSIVITIES +IMPASSIVITY +IMPASTE +IMPASTED +IMPASTES +IMPASTING +IMPASTO +IMPASTOED +IMPASTOS +IMPATIENCE +IMPATIENCES +IMPATIENS +IMPATIENT +IMPATIENTLY +IMPAVID +IMPAWN +IMPAWNED +IMPAWNING +IMPAWNS +IMPEACH +IMPEACHABLE +IMPEACHED +IMPEACHER +IMPEACHERS +IMPEACHES +IMPEACHING +IMPEACHMENT +IMPEACHMENTS +IMPEARL +IMPEARLED +IMPEARLING +IMPEARLS +IMPECCABILITIES +IMPECCABILITY +IMPECCABLE +IMPECCABLY +IMPECCANT +IMPECUNIOSITIES +IMPECUNIOSITY +IMPECUNIOUS +IMPECUNIOUSLY +IMPECUNIOUSNESS +IMPED +IMPEDANCE +IMPEDANCES +IMPEDE +IMPEDED +IMPEDER +IMPEDERS +IMPEDES +IMPEDIMENT +IMPEDIMENTA +IMPEDIMENTS +IMPEDING +IMPEL +IMPELLED +IMPELLENT +IMPELLENTS +IMPELLER +IMPELLERS +IMPELLING +IMPELLOR +IMPELLORS +IMPELS +IMPEND +IMPENDED +IMPENDENT +IMPENDING +IMPENDS +IMPENETRABILITY +IMPENETRABLE +IMPENETRABLY +IMPENITENCE +IMPENITENCES +IMPENITENT +IMPENITENTLY +IMPERATIVE +IMPERATIVELY +IMPERATIVENESS +IMPERATIVES +IMPERATOR +IMPERATORIAL +IMPERATORS +IMPERCEIVABLE +IMPERCEPTIBLE +IMPERCEPTIBLY +IMPERCEPTIVE +IMPERCIPIENCE +IMPERCIPIENCES +IMPERCIPIENT +IMPERFECT +IMPERFECTION +IMPERFECTIONS +IMPERFECTIVE +IMPERFECTIVES +IMPERFECTLY +IMPERFECTNESS +IMPERFECTNESSES +IMPERFECTS +IMPERFORATE +IMPERIA +IMPERIAL +IMPERIALISM +IMPERIALISMS +IMPERIALIST +IMPERIALISTIC +IMPERIALISTS +IMPERIALLY +IMPERIALS +IMPERIL +IMPERILED +IMPERILING +IMPERILLED +IMPERILLING +IMPERILMENT +IMPERILMENTS +IMPERILS +IMPERIOUS +IMPERIOUSLY +IMPERIOUSNESS +IMPERIOUSNESSES +IMPERISHABILITY +IMPERISHABLE +IMPERISHABLES +IMPERISHABLY +IMPERIUM +IMPERIUMS +IMPERMANENCE +IMPERMANENCES +IMPERMANENCIES +IMPERMANENCY +IMPERMANENT +IMPERMANENTLY +IMPERMEABILITY +IMPERMEABLE +IMPERMISSIBLE +IMPERMISSIBLY +IMPERSONAL +IMPERSONALITIES +IMPERSONALITY +IMPERSONALIZE +IMPERSONALIZED +IMPERSONALIZES +IMPERSONALIZING +IMPERSONALLY +IMPERSONATE +IMPERSONATED +IMPERSONATES +IMPERSONATING +IMPERSONATION +IMPERSONATIONS +IMPERSONATOR +IMPERSONATORS +IMPERTINENCE +IMPERTINENCES +IMPERTINENCIES +IMPERTINENCY +IMPERTINENT +IMPERTINENTLY +IMPERTURBABLE +IMPERTURBABLY +IMPERVIOUS +IMPERVIOUSLY +IMPERVIOUSNESS +IMPETIGINOUS +IMPETIGO +IMPETIGOS +IMPETRATE +IMPETRATED +IMPETRATES +IMPETRATING +IMPETRATION +IMPETRATIONS +IMPETUOSITIES +IMPETUOSITY +IMPETUOUS +IMPETUOUSLY +IMPETUOUSNESS +IMPETUOUSNESSES +IMPETUS +IMPETUSES +IMPHEE +IMPHEES +IMPI +IMPIETIES +IMPIETY +IMPING +IMPINGE +IMPINGED +IMPINGEMENT +IMPINGEMENTS +IMPINGER +IMPINGERS +IMPINGES +IMPINGING +IMPINGS +IMPIOUS +IMPIOUSLY +IMPIS +IMPISH +IMPISHLY +IMPISHNESS +IMPISHNESSES +IMPLACABILITIES +IMPLACABILITY +IMPLACABLE +IMPLACABLY +IMPLANT +IMPLANTABLE +IMPLANTATION +IMPLANTATIONS +IMPLANTED +IMPLANTER +IMPLANTERS +IMPLANTING +IMPLANTS +IMPLAUSIBILITY +IMPLAUSIBLE +IMPLAUSIBLY +IMPLEAD +IMPLEADED +IMPLEADER +IMPLEADERS +IMPLEADING +IMPLEADS +IMPLED +IMPLEDGE +IMPLEDGED +IMPLEDGES +IMPLEDGING +IMPLEMENT +IMPLEMENTATION +IMPLEMENTATIONS +IMPLEMENTED +IMPLEMENTER +IMPLEMENTERS +IMPLEMENTING +IMPLEMENTOR +IMPLEMENTORS +IMPLEMENTS +IMPLETION +IMPLETIONS +IMPLICATE +IMPLICATED +IMPLICATES +IMPLICATING +IMPLICATION +IMPLICATIONS +IMPLICATIVE +IMPLICATIVELY +IMPLICATIVENESS +IMPLICIT +IMPLICITLY +IMPLICITNESS +IMPLICITNESSES +IMPLIED +IMPLIES +IMPLODE +IMPLODED +IMPLODES +IMPLODING +IMPLORE +IMPLORED +IMPLORER +IMPLORERS +IMPLORES +IMPLORING +IMPLORINGLY +IMPLOSION +IMPLOSIONS +IMPLOSIVE +IMPLOSIVES +IMPLY +IMPLYING +IMPOLICIES +IMPOLICY +IMPOLITE +IMPOLITELY +IMPOLITENESS +IMPOLITENESSES +IMPOLITIC +IMPOLITICAL +IMPOLITICALLY +IMPOLITICLY +IMPONDERABILITY +IMPONDERABLE +IMPONDERABLES +IMPONDERABLY +IMPONE +IMPONED +IMPONES +IMPONING +IMPOROUS +IMPORT +IMPORTABLE +IMPORTANCE +IMPORTANCES +IMPORTANCIES +IMPORTANCY +IMPORTANT +IMPORTANTLY +IMPORTATION +IMPORTATIONS +IMPORTED +IMPORTER +IMPORTERS +IMPORTING +IMPORTS +IMPORTUNATE +IMPORTUNATELY +IMPORTUNATENESS +IMPORTUNE +IMPORTUNED +IMPORTUNELY +IMPORTUNER +IMPORTUNERS +IMPORTUNES +IMPORTUNING +IMPORTUNITIES +IMPORTUNITY +IMPOSABLE +IMPOSE +IMPOSED +IMPOSER +IMPOSERS +IMPOSES +IMPOSING +IMPOSINGLY +IMPOSITION +IMPOSITIONS +IMPOSSIBILITIES +IMPOSSIBILITY +IMPOSSIBLE +IMPOSSIBLENESS +IMPOSSIBLY +IMPOST +IMPOSTED +IMPOSTER +IMPOSTERS +IMPOSTHUME +IMPOSTHUMES +IMPOSTING +IMPOSTOR +IMPOSTORS +IMPOSTS +IMPOSTUME +IMPOSTUMES +IMPOSTURE +IMPOSTURES +IMPOTENCE +IMPOTENCES +IMPOTENCIES +IMPOTENCY +IMPOTENT +IMPOTENTLY +IMPOTENTS +IMPOUND +IMPOUNDED +IMPOUNDER +IMPOUNDERS +IMPOUNDING +IMPOUNDMENT +IMPOUNDMENTS +IMPOUNDS +IMPOVERISH +IMPOVERISHED +IMPOVERISHER +IMPOVERISHERS +IMPOVERISHES +IMPOVERISHING +IMPOVERISHMENT +IMPOVERISHMENTS +IMPOWER +IMPOWERED +IMPOWERING +IMPOWERS +IMPRACTICABLE +IMPRACTICABLY +IMPRACTICAL +IMPRACTICALITY +IMPRACTICALLY +IMPRECATE +IMPRECATED +IMPRECATES +IMPRECATING +IMPRECATION +IMPRECATIONS +IMPRECATORY +IMPRECISE +IMPRECISELY +IMPRECISENESS +IMPRECISENESSES +IMPRECISION +IMPRECISIONS +IMPREGN +IMPREGNABILITY +IMPREGNABLE +IMPREGNABLENESS +IMPREGNABLY +IMPREGNANT +IMPREGNANTS +IMPREGNATE +IMPREGNATED +IMPREGNATES +IMPREGNATING +IMPREGNATION +IMPREGNATIONS +IMPREGNATOR +IMPREGNATORS +IMPREGNED +IMPREGNING +IMPREGNS +IMPRESA +IMPRESARIO +IMPRESARIOS +IMPRESAS +IMPRESE +IMPRESES +IMPRESS +IMPRESSED +IMPRESSES +IMPRESSIBILITY +IMPRESSIBLE +IMPRESSING +IMPRESSION +IMPRESSIONABLE +IMPRESSIONISM +IMPRESSIONISMS +IMPRESSIONIST +IMPRESSIONISTIC +IMPRESSIONISTS +IMPRESSIONS +IMPRESSIVE +IMPRESSIVELY +IMPRESSIVENESS +IMPRESSMENT +IMPRESSMENTS +IMPRESSURE +IMPRESSURES +IMPREST +IMPRESTS +IMPRIMATUR +IMPRIMATURS +IMPRIMIS +IMPRINT +IMPRINTED +IMPRINTER +IMPRINTERS +IMPRINTING +IMPRINTINGS +IMPRINTS +IMPRISON +IMPRISONED +IMPRISONING +IMPRISONMENT +IMPRISONMENTS +IMPRISONS +IMPROBABILITIES +IMPROBABILITY +IMPROBABLE +IMPROBABLY +IMPROBITIES +IMPROBITY +IMPROMPTU +IMPROMPTUS +IMPROPER +IMPROPERLY +IMPROPERNESS +IMPROPERNESSES +IMPROPRIETIES +IMPROPRIETY +IMPROV +IMPROVABILITIES +IMPROVABILITY +IMPROVABLE +IMPROVE +IMPROVED +IMPROVEMENT +IMPROVEMENTS +IMPROVER +IMPROVERS +IMPROVES +IMPROVIDENCE +IMPROVIDENCES +IMPROVIDENT +IMPROVIDENTLY +IMPROVING +IMPROVISATION +IMPROVISATIONAL +IMPROVISATIONS +IMPROVISATOR +IMPROVISATORE +IMPROVISATORES +IMPROVISATORI +IMPROVISATORIAL +IMPROVISATORS +IMPROVISATORY +IMPROVISE +IMPROVISED +IMPROVISER +IMPROVISERS +IMPROVISES +IMPROVISING +IMPROVISOR +IMPROVISORS +IMPROVS +IMPRUDENCE +IMPRUDENCES +IMPRUDENT +IMPRUDENTLY +IMPS +IMPUDENCE +IMPUDENCES +IMPUDENCIES +IMPUDENCY +IMPUDENT +IMPUDENTLY +IMPUDICITIES +IMPUDICITY +IMPUGN +IMPUGNABLE +IMPUGNED +IMPUGNER +IMPUGNERS +IMPUGNING +IMPUGNS +IMPUISSANCE +IMPUISSANCES +IMPUISSANT +IMPULSE +IMPULSED +IMPULSES +IMPULSING +IMPULSION +IMPULSIONS +IMPULSIVE +IMPULSIVELY +IMPULSIVENESS +IMPULSIVENESSES +IMPULSIVITIES +IMPULSIVITY +IMPUNITIES +IMPUNITY +IMPURE +IMPURELY +IMPURENESS +IMPURENESSES +IMPURER +IMPUREST +IMPURITIES +IMPURITY +IMPUTABILITIES +IMPUTABILITY +IMPUTABLE +IMPUTABLY +IMPUTATION +IMPUTATIONS +IMPUTATIVE +IMPUTATIVELY +IMPUTE +IMPUTED +IMPUTER +IMPUTERS +IMPUTES +IMPUTING +IN +INABILITIES +INABILITY +INACCESSIBILITY +INACCESSIBLE +INACCESSIBLY +INACCURACIES +INACCURACY +INACCURATE +INACCURATELY +INACTION +INACTIONS +INACTIVATE +INACTIVATED +INACTIVATES +INACTIVATING +INACTIVATION +INACTIVATIONS +INACTIVE +INACTIVELY +INACTIVITIES +INACTIVITY +INADEQUACIES +INADEQUACY +INADEQUATE +INADEQUATELY +INADEQUATENESS +INADMISSIBILITY +INADMISSIBLE +INADMISSIBLY +INADVERTENCE +INADVERTENCES +INADVERTENCIES +INADVERTENCY +INADVERTENT +INADVERTENTLY +INADVISABILITY +INADVISABLE +INALIENABILITY +INALIENABLE +INALIENABLY +INALTERABILITY +INALTERABLE +INALTERABLENESS +INALTERABLY +INAMORATA +INAMORATAS +INAMORATO +INAMORATOS +INANE +INANELY +INANENESS +INANENESSES +INANER +INANES +INANEST +INANIMATE +INANIMATELY +INANIMATENESS +INANIMATENESSES +INANITIES +INANITION +INANITIONS +INANITY +INAPPARENT +INAPPARENTLY +INAPPEASABLE +INAPPETENCE +INAPPETENCES +INAPPLICABILITY +INAPPLICABLE +INAPPLICABLY +INAPPOSITE +INAPPOSITELY +INAPPOSITENESS +INAPPRECIABLE +INAPPRECIABLY +INAPPRECIATIVE +INAPPROACHABLE +INAPPROPRIATE +INAPPROPRIATELY +INAPT +INAPTITUDE +INAPTITUDES +INAPTLY +INAPTNESS +INAPTNESSES +INARABLE +INARCH +INARCHED +INARCHES +INARCHING +INARGUABLE +INARGUABLY +INARM +INARMED +INARMING +INARMS +INARTICULACIES +INARTICULACY +INARTICULATE +INARTICULATELY +INARTICULATES +INARTISTIC +INARTISTICALLY +INATTENTION +INATTENTIONS +INATTENTIVE +INATTENTIVELY +INATTENTIVENESS +INAUDIBILITIES +INAUDIBILITY +INAUDIBLE +INAUDIBLY +INAUGURAL +INAUGURALS +INAUGURATE +INAUGURATED +INAUGURATES +INAUGURATING +INAUGURATION +INAUGURATIONS +INAUGURATOR +INAUGURATORS +INAUSPICIOUS +INAUSPICIOUSLY +INAUTHENTIC +INAUTHENTICITY +INBEING +INBEINGS +INBOARD +INBOARDS +INBORN +INBOUND +INBOUNDED +INBOUNDING +INBOUNDS +INBREATHE +INBREATHED +INBREATHES +INBREATHING +INBRED +INBREDS +INBREED +INBREEDER +INBREEDERS +INBREEDING +INBREEDINGS +INBREEDS +INBUILT +INBURST +INBURSTS +INBY +INBYE +INCAGE +INCAGED +INCAGES +INCAGING +INCALCULABILITY +INCALCULABLE +INCALCULABLY +INCALESCENCE +INCALESCENCES +INCALESCENT +INCANDESCE +INCANDESCED +INCANDESCENCE +INCANDESCENCES +INCANDESCENT +INCANDESCENTLY +INCANDESCENTS +INCANDESCES +INCANDESCING +INCANT +INCANTATION +INCANTATIONAL +INCANTATIONS +INCANTATORY +INCANTED +INCANTING +INCANTS +INCAPABILITIES +INCAPABILITY +INCAPABLE +INCAPABLENESS +INCAPABLENESSES +INCAPABLY +INCAPACITATE +INCAPACITATED +INCAPACITATES +INCAPACITATING +INCAPACITATION +INCAPACITATIONS +INCAPACITIES +INCAPACITY +INCARCERATE +INCARCERATED +INCARCERATES +INCARCERATING +INCARCERATION +INCARCERATIONS +INCARDINATION +INCARDINATIONS +INCARNADINE +INCARNADINED +INCARNADINES +INCARNADINING +INCARNATE +INCARNATED +INCARNATES +INCARNATING +INCARNATION +INCARNATIONS +INCASE +INCASED +INCASES +INCASING +INCAUTION +INCAUTIONS +INCAUTIOUS +INCAUTIOUSLY +INCAUTIOUSNESS +INCENDIARIES +INCENDIARISM +INCENDIARISMS +INCENDIARY +INCENSE +INCENSED +INCENSES +INCENSING +INCENT +INCENTED +INCENTER +INCENTERS +INCENTING +INCENTIVE +INCENTIVES +INCENTIVIZE +INCENTIVIZED +INCENTIVIZES +INCENTIVIZING +INCENTS +INCEPT +INCEPTED +INCEPTING +INCEPTION +INCEPTIONS +INCEPTIVE +INCEPTIVELY +INCEPTIVES +INCEPTOR +INCEPTORS +INCEPTS +INCERTITUDE +INCERTITUDES +INCESSANCIES +INCESSANCY +INCESSANT +INCESSANTLY +INCEST +INCESTS +INCESTUOUS +INCESTUOUSLY +INCESTUOUSNESS +INCH +INCHED +INCHER +INCHERS +INCHES +INCHING +INCHMEAL +INCHOATE +INCHOATELY +INCHOATENESS +INCHOATENESSES +INCHOATIVE +INCHOATIVELY +INCHOATIVES +INCHWORM +INCHWORMS +INCIDENCE +INCIDENCES +INCIDENT +INCIDENTAL +INCIDENTALLY +INCIDENTALS +INCIDENTS +INCINERATE +INCINERATED +INCINERATES +INCINERATING +INCINERATION +INCINERATIONS +INCINERATOR +INCINERATORS +INCIPIENCE +INCIPIENCES +INCIPIENCIES +INCIPIENCY +INCIPIENT +INCIPIENTLY +INCIPIT +INCIPITS +INCISAL +INCISE +INCISED +INCISES +INCISING +INCISION +INCISIONS +INCISIVE +INCISIVELY +INCISIVENESS +INCISIVENESSES +INCISOR +INCISORS +INCISORY +INCISURE +INCISURES +INCITABLE +INCITANT +INCITANTS +INCITATION +INCITATIONS +INCITE +INCITED +INCITEMENT +INCITEMENTS +INCITER +INCITERS +INCITES +INCITING +INCIVIL +INCIVILITIES +INCIVILITY +INCLASP +INCLASPED +INCLASPING +INCLASPS +INCLEMENCIES +INCLEMENCY +INCLEMENT +INCLEMENTLY +INCLINABLE +INCLINATION +INCLINATIONAL +INCLINATIONS +INCLINE +INCLINED +INCLINER +INCLINERS +INCLINES +INCLINING +INCLININGS +INCLINOMETER +INCLINOMETERS +INCLIP +INCLIPPED +INCLIPPING +INCLIPS +INCLOSE +INCLOSED +INCLOSER +INCLOSERS +INCLOSES +INCLOSING +INCLOSURE +INCLOSURES +INCLUDABLE +INCLUDE +INCLUDED +INCLUDES +INCLUDIBLE +INCLUDING +INCLUSION +INCLUSIONS +INCLUSIVE +INCLUSIVELY +INCLUSIVENESS +INCLUSIVENESSES +INCOERCIBLE +INCOG +INCOGITANT +INCOGNITA +INCOGNITAS +INCOGNITO +INCOGNITOS +INCOGNIZANCE +INCOGNIZANCES +INCOGNIZANT +INCOGS +INCOHERENCE +INCOHERENCES +INCOHERENT +INCOHERENTLY +INCOMBUSTIBLE +INCOMBUSTIBLES +INCOME +INCOMER +INCOMERS +INCOMES +INCOMING +INCOMINGS +INCOMMENSURABLE +INCOMMENSURABLY +INCOMMENSURATE +INCOMMODE +INCOMMODED +INCOMMODES +INCOMMODING +INCOMMODIOUS +INCOMMODIOUSLY +INCOMMODITIES +INCOMMODITY +INCOMMUNICABLE +INCOMMUNICABLY +INCOMMUNICADO +INCOMMUNICATIVE +INCOMMUTABLE +INCOMMUTABLY +INCOMPACT +INCOMPARABILITY +INCOMPARABLE +INCOMPARABLY +INCOMPATIBILITY +INCOMPATIBLE +INCOMPATIBLES +INCOMPATIBLY +INCOMPETENCE +INCOMPETENCES +INCOMPETENCIES +INCOMPETENCY +INCOMPETENT +INCOMPETENTLY +INCOMPETENTS +INCOMPLETE +INCOMPLETELY +INCOMPLETENESS +INCOMPLIANT +INCOMPREHENSION +INCOMPRESSIBLE +INCOMPUTABLE +INCOMPUTABLY +INCONCEIVABLE +INCONCEIVABLY +INCONCINNITIES +INCONCINNITY +INCONCLUSIVE +INCONCLUSIVELY +INCONDITE +INCONFORMITIES +INCONFORMITY +INCONGRUENCE +INCONGRUENCES +INCONGRUENT +INCONGRUENTLY +INCONGRUITIES +INCONGRUITY +INCONGRUOUS +INCONGRUOUSLY +INCONGRUOUSNESS +INCONNU +INCONNUS +INCONSCIENT +INCONSECUTIVE +INCONSEQUENCE +INCONSEQUENCES +INCONSEQUENT +INCONSEQUENTIAL +INCONSEQUENTLY +INCONSIDERABLE +INCONSIDERABLY +INCONSIDERATE +INCONSIDERATELY +INCONSIDERATION +INCONSISTENCE +INCONSISTENCES +INCONSISTENCIES +INCONSISTENCY +INCONSISTENT +INCONSISTENTLY +INCONSOLABLE +INCONSOLABLY +INCONSONANCE +INCONSONANCES +INCONSONANT +INCONSPICUOUS +INCONSPICUOUSLY +INCONSTANCIES +INCONSTANCY +INCONSTANT +INCONSTANTLY +INCONSUMABLE +INCONSUMABLY +INCONTESTABLE +INCONTESTABLY +INCONTINENCE +INCONTINENCES +INCONTINENCIES +INCONTINENCY +INCONTINENT +INCONTINENTLY +INCONTROLLABLE +INCONVENIENCE +INCONVENIENCED +INCONVENIENCES +INCONVENIENCIES +INCONVENIENCING +INCONVENIENCY +INCONVENIENT +INCONVENIENTLY +INCONVERTIBLE +INCONVERTIBLY +INCONVINCIBLE +INCONY +INCOORDINATION +INCOORDINATIONS +INCORPORABLE +INCORPORATE +INCORPORATED +INCORPORATES +INCORPORATING +INCORPORATION +INCORPORATIONS +INCORPORATIVE +INCORPORATOR +INCORPORATORS +INCORPOREAL +INCORPOREALLY +INCORPOREITIES +INCORPOREITY +INCORPSE +INCORPSED +INCORPSES +INCORPSING +INCORRECT +INCORRECTLY +INCORRECTNESS +INCORRECTNESSES +INCORRIGIBILITY +INCORRIGIBLE +INCORRIGIBLES +INCORRIGIBLY +INCORRUPT +INCORRUPTED +INCORRUPTIBLE +INCORRUPTIBLES +INCORRUPTIBLY +INCORRUPTION +INCORRUPTIONS +INCORRUPTLY +INCORRUPTNESS +INCORRUPTNESSES +INCREASABLE +INCREASE +INCREASED +INCREASER +INCREASERS +INCREASES +INCREASING +INCREASINGLY +INCREATE +INCREDIBILITIES +INCREDIBILITY +INCREDIBLE +INCREDIBLENESS +INCREDIBLY +INCREDULITIES +INCREDULITY +INCREDULOUS +INCREDULOUSLY +INCREMENT +INCREMENTAL +INCREMENTALISM +INCREMENTALISMS +INCREMENTALIST +INCREMENTALISTS +INCREMENTALLY +INCREMENTS +INCRESCENT +INCRETION +INCRETIONS +INCRIMINATE +INCRIMINATED +INCRIMINATES +INCRIMINATING +INCRIMINATION +INCRIMINATIONS +INCRIMINATORY +INCROSS +INCROSSED +INCROSSES +INCROSSING +INCRUST +INCRUSTATION +INCRUSTATIONS +INCRUSTED +INCRUSTING +INCRUSTS +INCUBATE +INCUBATED +INCUBATES +INCUBATING +INCUBATION +INCUBATIONS +INCUBATIVE +INCUBATOR +INCUBATORS +INCUBATORY +INCUBI +INCUBUS +INCUBUSES +INCUDAL +INCUDATE +INCUDES +INCULCATE +INCULCATED +INCULCATES +INCULCATING +INCULCATION +INCULCATIONS +INCULCATOR +INCULCATORS +INCULPABLE +INCULPATE +INCULPATED +INCULPATES +INCULPATING +INCULPATION +INCULPATIONS +INCULPATORY +INCULT +INCUMBENCIES +INCUMBENCY +INCUMBENT +INCUMBENTS +INCUMBER +INCUMBERED +INCUMBERING +INCUMBERS +INCUNABLE +INCUNABLES +INCUNABULA +INCUNABULUM +INCUR +INCURABLE +INCURABLES +INCURABLY +INCURIOSITIES +INCURIOSITY +INCURIOUS +INCURIOUSLY +INCURIOUSNESS +INCURIOUSNESSES +INCURRED +INCURRENCE +INCURRENCES +INCURRENT +INCURRING +INCURS +INCURSION +INCURSIONS +INCURSIVE +INCURVATE +INCURVATED +INCURVATES +INCURVATING +INCURVATION +INCURVATIONS +INCURVATURE +INCURVATURES +INCURVE +INCURVED +INCURVES +INCURVING +INCUS +INCUSE +INCUSED +INCUSES +INCUSING +INDABA +INDABAS +INDAGATE +INDAGATED +INDAGATES +INDAGATING +INDAGATION +INDAGATIONS +INDAGATOR +INDAGATORS +INDAMIN +INDAMINE +INDAMINES +INDAMINS +INDEBTED +INDEBTEDNESS +INDEBTEDNESSES +INDECENCIES +INDECENCY +INDECENT +INDECENTER +INDECENTEST +INDECENTLY +INDECIPHERABLE +INDECISION +INDECISIONS +INDECISIVE +INDECISIVELY +INDECISIVENESS +INDECLINABLE +INDECOMPOSABLE +INDECOROUS +INDECOROUSLY +INDECOROUSNESS +INDECORUM +INDECORUMS +INDEED +INDEFATIGABLE +INDEFATIGABLY +INDEFEASIBILITY +INDEFEASIBLE +INDEFEASIBLY +INDEFECTIBILITY +INDEFECTIBLE +INDEFECTIBLY +INDEFENSIBILITY +INDEFENSIBLE +INDEFENSIBLY +INDEFINABILITY +INDEFINABLE +INDEFINABLENESS +INDEFINABLES +INDEFINABLY +INDEFINITE +INDEFINITELY +INDEFINITENESS +INDEFINITES +INDEHISCENCE +INDEHISCENCES +INDEHISCENT +INDELIBILITIES +INDELIBILITY +INDELIBLE +INDELIBLY +INDELICACIES +INDELICACY +INDELICATE +INDELICATELY +INDELICATENESS +INDEMNIFICATION +INDEMNIFIED +INDEMNIFIER +INDEMNIFIERS +INDEMNIFIES +INDEMNIFY +INDEMNIFYING +INDEMNITIES +INDEMNITY +INDEMONSTRABLE +INDEMONSTRABLY +INDENE +INDENES +INDENT +INDENTATION +INDENTATIONS +INDENTED +INDENTER +INDENTERS +INDENTING +INDENTION +INDENTIONS +INDENTOR +INDENTORS +INDENTS +INDENTURE +INDENTURED +INDENTURES +INDENTURING +INDEPENDENCE +INDEPENDENCES +INDEPENDENCIES +INDEPENDENCY +INDEPENDENT +INDEPENDENTLY +INDEPENDENTS +INDESCRIBABLE +INDESCRIBABLY +INDESTRUCTIBLE +INDESTRUCTIBLY +INDETERMINABLE +INDETERMINABLY +INDETERMINACIES +INDETERMINACY +INDETERMINATE +INDETERMINATELY +INDETERMINATION +INDETERMINISM +INDETERMINISMS +INDETERMINIST +INDETERMINISTIC +INDETERMINISTS +INDEVOUT +INDEX +INDEXABLE +INDEXATION +INDEXATIONS +INDEXED +INDEXER +INDEXERS +INDEXES +INDEXICAL +INDEXICALS +INDEXING +INDEXINGS +INDICAN +INDICANS +INDICANT +INDICANTS +INDICATE +INDICATED +INDICATES +INDICATING +INDICATION +INDICATIONAL +INDICATIONS +INDICATIVE +INDICATIVELY +INDICATIVES +INDICATOR +INDICATORS +INDICATORY +INDICES +INDICIA +INDICIAS +INDICIUM +INDICIUMS +INDICT +INDICTABLE +INDICTED +INDICTEE +INDICTEES +INDICTER +INDICTERS +INDICTING +INDICTION +INDICTIONS +INDICTMENT +INDICTMENTS +INDICTOR +INDICTORS +INDICTS +INDIE +INDIES +INDIFFERENCE +INDIFFERENCES +INDIFFERENCIES +INDIFFERENCY +INDIFFERENT +INDIFFERENTISM +INDIFFERENTISMS +INDIFFERENTIST +INDIFFERENTISTS +INDIFFERENTLY +INDIGEN +INDIGENCE +INDIGENCES +INDIGENCIES +INDIGENCY +INDIGENE +INDIGENES +INDIGENIZATION +INDIGENIZATIONS +INDIGENIZE +INDIGENIZED +INDIGENIZES +INDIGENIZING +INDIGENOUS +INDIGENOUSLY +INDIGENOUSNESS +INDIGENS +INDIGENT +INDIGENTS +INDIGESTED +INDIGESTIBILITY +INDIGESTIBLE +INDIGESTIBLES +INDIGESTION +INDIGESTIONS +INDIGN +INDIGNANT +INDIGNANTLY +INDIGNATION +INDIGNATIONS +INDIGNITIES +INDIGNITY +INDIGNLY +INDIGO +INDIGOES +INDIGOID +INDIGOIDS +INDIGOS +INDIGOTIN +INDIGOTINS +INDINAVIR +INDINAVIRS +INDIRECT +INDIRECTION +INDIRECTIONS +INDIRECTLY +INDIRECTNESS +INDIRECTNESSES +INDISCERNIBLE +INDISCIPLINABLE +INDISCIPLINE +INDISCIPLINED +INDISCIPLINES +INDISCOVERABLE +INDISCREET +INDISCREETLY +INDISCREETNESS +INDISCRETION +INDISCRETIONS +INDISCRIMINATE +INDISPENSABLE +INDISPENSABLES +INDISPENSABLY +INDISPOSE +INDISPOSED +INDISPOSES +INDISPOSING +INDISPOSITION +INDISPOSITIONS +INDISPUTABLE +INDISPUTABLY +INDISSOCIABLE +INDISSOCIABLY +INDISSOLUBILITY +INDISSOLUBLE +INDISSOLUBLY +INDISTINCT +INDISTINCTIVE +INDISTINCTLY +INDISTINCTNESS +INDITE +INDITED +INDITER +INDITERS +INDITES +INDITING +INDIUM +INDIUMS +INDIVIDUAL +INDIVIDUALISE +INDIVIDUALISED +INDIVIDUALISES +INDIVIDUALISING +INDIVIDUALISM +INDIVIDUALISMS +INDIVIDUALIST +INDIVIDUALISTIC +INDIVIDUALISTS +INDIVIDUALITIES +INDIVIDUALITY +INDIVIDUALIZE +INDIVIDUALIZED +INDIVIDUALIZES +INDIVIDUALIZING +INDIVIDUALLY +INDIVIDUALS +INDIVIDUATE +INDIVIDUATED +INDIVIDUATES +INDIVIDUATING +INDIVIDUATION +INDIVIDUATIONS +INDIVISIBILITY +INDIVISIBLE +INDIVISIBLES +INDIVISIBLY +INDOCILE +INDOCILITIES +INDOCILITY +INDOCTRINATE +INDOCTRINATED +INDOCTRINATES +INDOCTRINATING +INDOCTRINATION +INDOCTRINATIONS +INDOCTRINATOR +INDOCTRINATORS +INDOL +INDOLE +INDOLENCE +INDOLENCES +INDOLENT +INDOLENTLY +INDOLES +INDOLS +INDOMETHACIN +INDOMETHACINS +INDOMITABILITY +INDOMITABLE +INDOMITABLENESS +INDOMITABLY +INDOOR +INDOORS +INDOPHENOL +INDOPHENOLS +INDORSE +INDORSED +INDORSEE +INDORSEES +INDORSEMENT +INDORSEMENTS +INDORSER +INDORSERS +INDORSES +INDORSING +INDORSOR +INDORSORS +INDOW +INDOWED +INDOWING +INDOWS +INDOXYL +INDOXYLS +INDRAFT +INDRAFTS +INDRAUGHT +INDRAUGHTS +INDRAWN +INDRI +INDRIS +INDUBITABILITY +INDUBITABLE +INDUBITABLENESS +INDUBITABLY +INDUCE +INDUCED +INDUCEMENT +INDUCEMENTS +INDUCER +INDUCERS +INDUCES +INDUCIBILITIES +INDUCIBILITY +INDUCIBLE +INDUCING +INDUCT +INDUCTANCE +INDUCTANCES +INDUCTED +INDUCTEE +INDUCTEES +INDUCTILE +INDUCTING +INDUCTION +INDUCTIONS +INDUCTIVE +INDUCTIVELY +INDUCTOR +INDUCTORS +INDUCTS +INDUE +INDUED +INDUES +INDUING +INDULGE +INDULGED +INDULGENCE +INDULGENCES +INDULGENT +INDULGENTLY +INDULGER +INDULGERS +INDULGES +INDULGING +INDULIN +INDULINE +INDULINES +INDULINS +INDULT +INDULTS +INDURATE +INDURATED +INDURATES +INDURATING +INDURATION +INDURATIONS +INDURATIVE +INDUSIA +INDUSIAL +INDUSIATE +INDUSIUM +INDUSTRIAL +INDUSTRIALISE +INDUSTRIALISED +INDUSTRIALISES +INDUSTRIALISING +INDUSTRIALISM +INDUSTRIALISMS +INDUSTRIALIST +INDUSTRIALISTS +INDUSTRIALIZE +INDUSTRIALIZED +INDUSTRIALIZES +INDUSTRIALIZING +INDUSTRIALLY +INDUSTRIALS +INDUSTRIES +INDUSTRIOUS +INDUSTRIOUSLY +INDUSTRIOUSNESS +INDUSTRY +INDWELL +INDWELLER +INDWELLERS +INDWELLING +INDWELLS +INDWELT +INEARTH +INEARTHED +INEARTHING +INEARTHS +INEBRIANT +INEBRIANTS +INEBRIATE +INEBRIATED +INEBRIATES +INEBRIATING +INEBRIATION +INEBRIATIONS +INEBRIETIES +INEBRIETY +INEDIBLE +INEDIBLY +INEDITA +INEDITED +INEDUCABILITIES +INEDUCABILITY +INEDUCABLE +INEFFABILITIES +INEFFABILITY +INEFFABLE +INEFFABLENESS +INEFFABLENESSES +INEFFABLY +INEFFACEABILITY +INEFFACEABLE +INEFFACEABLY +INEFFECTIVE +INEFFECTIVELY +INEFFECTIVENESS +INEFFECTUAL +INEFFECTUALITY +INEFFECTUALLY +INEFFECTUALNESS +INEFFICACIES +INEFFICACIOUS +INEFFICACIOUSLY +INEFFICACY +INEFFICIENCIES +INEFFICIENCY +INEFFICIENT +INEFFICIENTLY +INEFFICIENTS +INEGALITARIAN +INELASTIC +INELASTICITIES +INELASTICITY +INELEGANCE +INELEGANCES +INELEGANT +INELEGANTLY +INELIGIBILITIES +INELIGIBILITY +INELIGIBLE +INELIGIBLES +INELOQUENT +INELOQUENTLY +INELUCTABILITY +INELUCTABLE +INELUCTABLY +INELUDIBLE +INENARRABLE +INEPT +INEPTITUDE +INEPTITUDES +INEPTLY +INEPTNESS +INEPTNESSES +INEQUALITIES +INEQUALITY +INEQUITABLE +INEQUITABLY +INEQUITIES +INEQUITY +INEQUIVALVE +INEQUIVALVED +INERADICABILITY +INERADICABLE +INERADICABLY +INERRABLE +INERRANCIES +INERRANCY +INERRANT +INERT +INERTIA +INERTIAE +INERTIAL +INERTIALLY +INERTIAS +INERTLY +INERTNESS +INERTNESSES +INERTS +INESCAPABLE +INESCAPABLY +INESSENTIAL +INESSENTIALS +INESTIMABLE +INESTIMABLY +INEVITABILITIES +INEVITABILITY +INEVITABLE +INEVITABLENESS +INEVITABLY +INEXACT +INEXACTITUDE +INEXACTITUDES +INEXACTLY +INEXACTNESS +INEXACTNESSES +INEXCUSABLE +INEXCUSABLENESS +INEXCUSABLY +INEXHAUSTIBLE +INEXHAUSTIBLY +INEXISTENCE +INEXISTENCES +INEXISTENT +INEXORABILITIES +INEXORABILITY +INEXORABLE +INEXORABLENESS +INEXORABLY +INEXPEDIENCE +INEXPEDIENCES +INEXPEDIENCIES +INEXPEDIENCY +INEXPEDIENT +INEXPEDIENTLY +INEXPENSIVE +INEXPENSIVELY +INEXPENSIVENESS +INEXPERIENCE +INEXPERIENCED +INEXPERIENCES +INEXPERT +INEXPERTLY +INEXPERTNESS +INEXPERTNESSES +INEXPERTS +INEXPIABLE +INEXPIABLY +INEXPLAINABLE +INEXPLICABILITY +INEXPLICABLE +INEXPLICABLY +INEXPLICIT +INEXPRESSIBLE +INEXPRESSIBLY +INEXPRESSIVE +INEXPRESSIVELY +INEXPUGNABLE +INEXPUGNABLY +INEXPUNGIBLE +INEXTRICABILITY +INEXTRICABLE +INEXTRICABLY +INFALL +INFALLIBILITIES +INFALLIBILITY +INFALLIBLE +INFALLIBLY +INFALLING +INFALLS +INFAMIES +INFAMOUS +INFAMOUSLY +INFAMY +INFANCIES +INFANCY +INFANT +INFANTA +INFANTAS +INFANTE +INFANTES +INFANTICIDAL +INFANTICIDE +INFANTICIDES +INFANTILE +INFANTILISM +INFANTILISMS +INFANTILITIES +INFANTILITY +INFANTILIZATION +INFANTILIZE +INFANTILIZED +INFANTILIZES +INFANTILIZING +INFANTINE +INFANTRIES +INFANTRY +INFANTRYMAN +INFANTRYMEN +INFANTS +INFARCT +INFARCTED +INFARCTION +INFARCTIONS +INFARCTS +INFARE +INFARES +INFATUATE +INFATUATED +INFATUATES +INFATUATING +INFATUATION +INFATUATIONS +INFAUNA +INFAUNAE +INFAUNAL +INFAUNAS +INFEASIBILITIES +INFEASIBILITY +INFEASIBLE +INFECT +INFECTANT +INFECTED +INFECTER +INFECTERS +INFECTING +INFECTION +INFECTIONS +INFECTIOUS +INFECTIOUSLY +INFECTIOUSNESS +INFECTIVE +INFECTIVITIES +INFECTIVITY +INFECTOR +INFECTORS +INFECTS +INFECUND +INFELICITIES +INFELICITOUS +INFELICITOUSLY +INFELICITY +INFEOFF +INFEOFFED +INFEOFFING +INFEOFFS +INFER +INFERABLE +INFERABLY +INFERENCE +INFERENCES +INFERENTIAL +INFERENTIALLY +INFERIOR +INFERIORITIES +INFERIORITY +INFERIORLY +INFERIORS +INFERNAL +INFERNALLY +INFERNO +INFERNOS +INFERRED +INFERRER +INFERRERS +INFERRIBLE +INFERRING +INFERS +INFERTILE +INFERTILITIES +INFERTILITY +INFEST +INFESTANT +INFESTANTS +INFESTATION +INFESTATIONS +INFESTED +INFESTER +INFESTERS +INFESTING +INFESTS +INFIDEL +INFIDELIC +INFIDELITIES +INFIDELITY +INFIDELS +INFIELD +INFIELDER +INFIELDERS +INFIELDS +INFIGHT +INFIGHTER +INFIGHTERS +INFIGHTING +INFIGHTINGS +INFIGHTS +INFILL +INFILTRATE +INFILTRATED +INFILTRATES +INFILTRATING +INFILTRATION +INFILTRATIONS +INFILTRATIVE +INFILTRATOR +INFILTRATORS +INFINITE +INFINITELY +INFINITENESS +INFINITENESSES +INFINITES +INFINITESIMAL +INFINITESIMALLY +INFINITESIMALS +INFINITIES +INFINITIVAL +INFINITIVE +INFINITIVELY +INFINITIVES +INFINITUDE +INFINITUDES +INFINITY +INFIRM +INFIRMARIES +INFIRMARY +INFIRMED +INFIRMING +INFIRMITIES +INFIRMITY +INFIRMLY +INFIRMS +INFIX +INFIXATION +INFIXATIONS +INFIXED +INFIXES +INFIXING +INFIXION +INFIXIONS +INFLAME +INFLAMED +INFLAMER +INFLAMERS +INFLAMES +INFLAMING +INFLAMMABILITY +INFLAMMABLE +INFLAMMABLENESS +INFLAMMABLES +INFLAMMABLY +INFLAMMATION +INFLAMMATIONS +INFLAMMATORILY +INFLAMMATORY +INFLATABLE +INFLATABLES +INFLATE +INFLATED +INFLATER +INFLATERS +INFLATES +INFLATING +INFLATION +INFLATIONARY +INFLATIONISM +INFLATIONISMS +INFLATIONIST +INFLATIONISTS +INFLATIONS +INFLATOR +INFLATORS +INFLECT +INFLECTABLE +INFLECTED +INFLECTING +INFLECTION +INFLECTIONAL +INFLECTIONALLY +INFLECTIONS +INFLECTIVE +INFLECTOR +INFLECTORS +INFLECTS +INFLEXED +INFLEXIBILITIES +INFLEXIBILITY +INFLEXIBLE +INFLEXIBLENESS +INFLEXIBLY +INFLEXION +INFLEXIONS +INFLICT +INFLICTED +INFLICTER +INFLICTERS +INFLICTING +INFLICTION +INFLICTIONS +INFLICTIVE +INFLICTOR +INFLICTORS +INFLICTS +INFLIGHT +INFLORESCENCE +INFLORESCENCES +INFLOW +INFLOWS +INFLUENCE +INFLUENCEABLE +INFLUENCED +INFLUENCES +INFLUENCING +INFLUENT +INFLUENTIAL +INFLUENTIALLY +INFLUENTIALS +INFLUENTS +INFLUENZA +INFLUENZAL +INFLUENZAS +INFLUX +INFLUXES +INFO +INFOBAHN +INFOBAHNS +INFOLD +INFOLDED +INFOLDER +INFOLDERS +INFOLDING +INFOLDS +INFOMERCIAL +INFOMERCIALS +INFORM +INFORMAL +INFORMALITIES +INFORMALITY +INFORMALLY +INFORMANT +INFORMANTS +INFORMATICS +INFORMATION +INFORMATIONAL +INFORMATIONALLY +INFORMATIONS +INFORMATIVE +INFORMATIVELY +INFORMATIVENESS +INFORMATORILY +INFORMATORY +INFORMED +INFORMEDLY +INFORMER +INFORMERS +INFORMING +INFORMS +INFOS +INFOTAINMENT +INFOTAINMENTS +INFOUGHT +INFRA +INFRACT +INFRACTED +INFRACTING +INFRACTION +INFRACTIONS +INFRACTOR +INFRACTORS +INFRACTS +INFRAHUMAN +INFRAHUMANS +INFRANGIBILITY +INFRANGIBLE +INFRANGIBLY +INFRARED +INFRAREDS +INFRASONIC +INFRASPECIFIC +INFRASTRUCTURE +INFRASTRUCTURES +INFREQUENCE +INFREQUENCES +INFREQUENCIES +INFREQUENCY +INFREQUENT +INFREQUENTLY +INFRINGE +INFRINGED +INFRINGEMENT +INFRINGEMENTS +INFRINGER +INFRINGERS +INFRINGES +INFRINGING +INFRUGAL +INFUNDIBULA +INFUNDIBULAR +INFUNDIBULIFORM +INFUNDIBULUM +INFURIATE +INFURIATED +INFURIATES +INFURIATING +INFURIATINGLY +INFURIATION +INFURIATIONS +INFUSCATE +INFUSE +INFUSED +INFUSER +INFUSERS +INFUSES +INFUSIBILITIES +INFUSIBILITY +INFUSIBLE +INFUSIBLENESS +INFUSIBLENESSES +INFUSING +INFUSION +INFUSIONS +INFUSIVE +INFUSORIAN +INFUSORIANS +INGATE +INGATES +INGATHER +INGATHERED +INGATHERING +INGATHERINGS +INGATHERS +INGENIOUS +INGENIOUSLY +INGENIOUSNESS +INGENIOUSNESSES +INGENUE +INGENUES +INGENUITIES +INGENUITY +INGENUOUS +INGENUOUSLY +INGENUOUSNESS +INGENUOUSNESSES +INGEST +INGESTA +INGESTED +INGESTIBLE +INGESTING +INGESTION +INGESTIONS +INGESTIVE +INGESTS +INGLE +INGLENOOK +INGLENOOKS +INGLES +INGLORIOUS +INGLORIOUSLY +INGLORIOUSNESS +INGOING +INGOT +INGOTED +INGOTING +INGOTS +INGRAFT +INGRAFTED +INGRAFTING +INGRAFTS +INGRAIN +INGRAINED +INGRAINEDLY +INGRAINING +INGRAINS +INGRATE +INGRATES +INGRATIATE +INGRATIATED +INGRATIATES +INGRATIATING +INGRATIATINGLY +INGRATIATION +INGRATIATIONS +INGRATIATORY +INGRATITUDE +INGRATITUDES +INGREDIENT +INGREDIENTS +INGRESS +INGRESSES +INGRESSION +INGRESSIONS +INGRESSIVE +INGRESSIVENESS +INGRESSIVES +INGROUND +INGROUP +INGROUPS +INGROWING +INGROWN +INGROWNNESS +INGROWNNESSES +INGROWTH +INGROWTHS +INGUINAL +INGULF +INGULFED +INGULFING +INGULFS +INGURGITATE +INGURGITATED +INGURGITATES +INGURGITATING +INGURGITATION +INGURGITATIONS +INHABIT +INHABITABLE +INHABITANCIES +INHABITANCY +INHABITANT +INHABITANTS +INHABITATION +INHABITATIONS +INHABITED +INHABITER +INHABITERS +INHABITING +INHABITS +INHALANT +INHALANTS +INHALATION +INHALATIONAL +INHALATIONS +INHALATOR +INHALATORS +INHALE +INHALED +INHALER +INHALERS +INHALES +INHALING +INHARMONIC +INHARMONIES +INHARMONIOUS +INHARMONIOUSLY +INHARMONY +INHAUL +INHAULER +INHAULERS +INHAULS +INHERE +INHERED +INHERENCE +INHERENCES +INHERENCIES +INHERENCY +INHERENT +INHERENTLY +INHERES +INHERING +INHERIT +INHERITABILITY +INHERITABLE +INHERITABLENESS +INHERITANCE +INHERITANCES +INHERITED +INHERITING +INHERITOR +INHERITORS +INHERITRESS +INHERITRESSES +INHERITRICES +INHERITRIX +INHERITRIXES +INHERITS +INHESION +INHESIONS +INHIBIN +INHIBINS +INHIBIT +INHIBITED +INHIBITER +INHIBITERS +INHIBITING +INHIBITION +INHIBITIONS +INHIBITIVE +INHIBITOR +INHIBITORS +INHIBITORY +INHIBITS +INHOLDER +INHOLDERS +INHOLDING +INHOLDINGS +INHOMOGENEITIES +INHOMOGENEITY +INHOMOGENEOUS +INHOSPITABLE +INHOSPITABLY +INHOSPITALITIES +INHOSPITALITY +INHUMAN +INHUMANE +INHUMANELY +INHUMANITIES +INHUMANITY +INHUMANLY +INHUMANNESS +INHUMANNESSES +INHUMATION +INHUMATIONS +INHUME +INHUMED +INHUMER +INHUMERS +INHUMES +INHUMING +INIA +INIMICAL +INIMICALLY +INIMITABLE +INIMITABLENESS +INIMITABLY +INION +INIONS +INIQUITIES +INIQUITOUS +INIQUITOUSLY +INIQUITOUSNESS +INIQUITY +INITIAL +INITIALED +INITIALER +INITIALERS +INITIALING +INITIALISM +INITIALISMS +INITIALIZATION +INITIALIZATIONS +INITIALIZE +INITIALIZED +INITIALIZES +INITIALIZING +INITIALLED +INITIALLING +INITIALLY +INITIALNESS +INITIALNESSES +INITIALS +INITIATE +INITIATED +INITIATES +INITIATING +INITIATION +INITIATIONS +INITIATIVE +INITIATIVES +INITIATOR +INITIATORS +INITIATORY +INJECT +INJECTABLE +INJECTABLES +INJECTANT +INJECTANTS +INJECTED +INJECTING +INJECTION +INJECTIONS +INJECTIVE +INJECTOR +INJECTORS +INJECTS +INJUDICIOUS +INJUDICIOUSLY +INJUDICIOUSNESS +INJUNCTION +INJUNCTIONS +INJUNCTIVE +INJURABLE +INJURE +INJURED +INJURER +INJURERS +INJURES +INJURIES +INJURING +INJURIOUS +INJURIOUSLY +INJURIOUSNESS +INJURIOUSNESSES +INJURY +INJUSTICE +INJUSTICES +INK +INKBERRIES +INKBERRY +INKBLOT +INKBLOTS +INKED +INKER +INKERS +INKHORN +INKHORNS +INKIER +INKIEST +INKINESS +INKINESSES +INKING +INKJET +INKLE +INKLES +INKLESS +INKLIKE +INKLING +INKLINGS +INKPOT +INKPOTS +INKS +INKSTAND +INKSTANDS +INKSTONE +INKSTONES +INKWELL +INKWELLS +INKWOOD +INKWOODS +INKY +INLACE +INLACED +INLACES +INLACING +INLAID +INLAND +INLANDER +INLANDERS +INLANDS +INLAY +INLAYER +INLAYERS +INLAYING +INLAYS +INLET +INLETS +INLETTING +INLIER +INLIERS +INLY +INLYING +INMATE +INMATES +INMESH +INMESHED +INMESHES +INMESHING +INMOST +INN +INNAGE +INNAGES +INNARDS +INNATE +INNATELY +INNATENESS +INNATENESSES +INNED +INNER +INNERLY +INNERMOST +INNERMOSTS +INNERNESS +INNERNESSES +INNERS +INNERSOLE +INNERSOLES +INNERSPRING +INNERVATE +INNERVATED +INNERVATES +INNERVATING +INNERVATION +INNERVATIONS +INNERVE +INNERVED +INNERVES +INNERVING +INNING +INNINGS +INNKEEPER +INNKEEPERS +INNLESS +INNOCENCE +INNOCENCES +INNOCENCIES +INNOCENCY +INNOCENT +INNOCENTER +INNOCENTEST +INNOCENTLY +INNOCENTS +INNOCUOUS +INNOCUOUSLY +INNOCUOUSNESS +INNOCUOUSNESSES +INNOMINATE +INNOVATE +INNOVATED +INNOVATES +INNOVATING +INNOVATION +INNOVATIONAL +INNOVATIONS +INNOVATIVE +INNOVATIVELY +INNOVATIVENESS +INNOVATOR +INNOVATORS +INNOVATORY +INNOXIOUS +INNS +INNUENDO +INNUENDOED +INNUENDOES +INNUENDOING +INNUENDOS +INNUMERABLE +INNUMERABLY +INNUMERACIES +INNUMERACY +INNUMERATE +INNUMERATES +INNUMEROUS +INOBSERVANCE +INOBSERVANCES +INOBSERVANT +INOCULA +INOCULANT +INOCULANTS +INOCULATE +INOCULATED +INOCULATES +INOCULATING +INOCULATION +INOCULATIONS +INOCULATIVE +INOCULATOR +INOCULATORS +INOCULUM +INOCULUMS +INODOROUS +INOFFENSIVE +INOFFENSIVELY +INOFFENSIVENESS +INOPERABLE +INOPERATIVE +INOPERATIVENESS +INOPERCULATE +INOPERCULATES +INOPPORTUNE +INOPPORTUNELY +INOPPORTUNENESS +INORDINATE +INORDINATELY +INORDINATENESS +INORGANIC +INORGANICALLY +INOSCULATE +INOSCULATED +INOSCULATES +INOSCULATING +INOSCULATION +INOSCULATIONS +INOSINE +INOSINES +INOSITE +INOSITES +INOSITOL +INOSITOLS +INOTROPIC +INPATIENT +INPATIENTS +INPHASE +INPOUR +INPOURED +INPOURING +INPOURINGS +INPOURS +INPUT +INPUTS +INPUTTED +INPUTTER +INPUTTERS +INPUTTING +INQUEST +INQUESTS +INQUIET +INQUIETED +INQUIETING +INQUIETS +INQUIETUDE +INQUIETUDES +INQUILINE +INQUILINES +INQUIRE +INQUIRED +INQUIRER +INQUIRERS +INQUIRES +INQUIRIES +INQUIRING +INQUIRINGLY +INQUIRY +INQUISITION +INQUISITIONAL +INQUISITIONS +INQUISITIVE +INQUISITIVELY +INQUISITIVENESS +INQUISITOR +INQUISITORIAL +INQUISITORIALLY +INQUISITORS +INRO +INROAD +INROADS +INRUN +INRUNS +INRUSH +INRUSHES +INRUSHING +INRUSHINGS +INS +INSALUBRIOUS +INSALUBRITIES +INSALUBRITY +INSANE +INSANELY +INSANENESS +INSANENESSES +INSANER +INSANEST +INSANITARY +INSANITATION +INSANITATIONS +INSANITIES +INSANITY +INSATIABILITIES +INSATIABILITY +INSATIABLE +INSATIABLENESS +INSATIABLY +INSATIATE +INSATIATELY +INSATIATENESS +INSATIATENESSES +INSCAPE +INSCAPES +INSCRIBE +INSCRIBED +INSCRIBER +INSCRIBERS +INSCRIBES +INSCRIBING +INSCRIPTION +INSCRIPTIONAL +INSCRIPTIONS +INSCRIPTIVE +INSCRIPTIVELY +INSCROLL +INSCROLLED +INSCROLLING +INSCROLLS +INSCRUTABILITY +INSCRUTABLE +INSCRUTABLENESS +INSCRUTABLY +INSCULP +INSCULPED +INSCULPING +INSCULPS +INSEAM +INSEAMS +INSECT +INSECTAN +INSECTARIES +INSECTARY +INSECTICIDAL +INSECTICIDALLY +INSECTICIDE +INSECTICIDES +INSECTILE +INSECTIVORE +INSECTIVORES +INSECTIVOROUS +INSECTS +INSECURE +INSECURELY +INSECURENESS +INSECURENESSES +INSECURITIES +INSECURITY +INSELBERG +INSELBERGE +INSELBERGS +INSEMINATE +INSEMINATED +INSEMINATES +INSEMINATING +INSEMINATION +INSEMINATIONS +INSEMINATOR +INSEMINATORS +INSENSATE +INSENSATELY +INSENSIBILITIES +INSENSIBILITY +INSENSIBLE +INSENSIBLENESS +INSENSIBLY +INSENSITIVE +INSENSITIVELY +INSENSITIVENESS +INSENSITIVITIES +INSENSITIVITY +INSENTIENCE +INSENTIENCES +INSENTIENT +INSEPARABILITY +INSEPARABLE +INSEPARABLENESS +INSEPARABLES +INSEPARABLY +INSERT +INSERTED +INSERTER +INSERTERS +INSERTING +INSERTION +INSERTIONAL +INSERTIONS +INSERTS +INSET +INSETS +INSETTED +INSETTER +INSETTERS +INSETTING +INSHEATH +INSHEATHE +INSHEATHED +INSHEATHES +INSHEATHING +INSHEATHS +INSHORE +INSHRINE +INSHRINED +INSHRINES +INSHRINING +INSIDE +INSIDER +INSIDERS +INSIDES +INSIDIOUS +INSIDIOUSLY +INSIDIOUSNESS +INSIDIOUSNESSES +INSIGHT +INSIGHTFUL +INSIGHTFULLY +INSIGHTS +INSIGNE +INSIGNIA +INSIGNIAS +INSIGNIFICANCE +INSIGNIFICANCES +INSIGNIFICANCY +INSIGNIFICANT +INSIGNIFICANTLY +INSINCERE +INSINCERELY +INSINCERITIES +INSINCERITY +INSINUATE +INSINUATED +INSINUATES +INSINUATING +INSINUATINGLY +INSINUATION +INSINUATIONS +INSINUATIVE +INSINUATOR +INSINUATORS +INSIPID +INSIPIDITIES +INSIPIDITY +INSIPIDLY +INSIST +INSISTED +INSISTENCE +INSISTENCES +INSISTENCIES +INSISTENCY +INSISTENT +INSISTENTLY +INSISTER +INSISTERS +INSISTING +INSISTS +INSNARE +INSNARED +INSNARER +INSNARERS +INSNARES +INSNARING +INSOBRIETIES +INSOBRIETY +INSOCIABILITIES +INSOCIABILITY +INSOCIABLE +INSOCIABLY +INSOFAR +INSOLATE +INSOLATED +INSOLATES +INSOLATING +INSOLATION +INSOLATIONS +INSOLE +INSOLENCE +INSOLENCES +INSOLENT +INSOLENTLY +INSOLENTS +INSOLES +INSOLUBILITIES +INSOLUBILITY +INSOLUBILIZE +INSOLUBILIZED +INSOLUBILIZES +INSOLUBILIZING +INSOLUBLE +INSOLUBLENESS +INSOLUBLENESSES +INSOLUBLES +INSOLUBLY +INSOLVABLE +INSOLVABLY +INSOLVENCIES +INSOLVENCY +INSOLVENT +INSOLVENTS +INSOMNIA +INSOMNIAC +INSOMNIACS +INSOMNIAS +INSOMUCH +INSOUCIANCE +INSOUCIANCES +INSOUCIANT +INSOUCIANTLY +INSOUL +INSOULED +INSOULING +INSOULS +INSPAN +INSPANNED +INSPANNING +INSPANS +INSPECT +INSPECTED +INSPECTING +INSPECTION +INSPECTIONS +INSPECTIVE +INSPECTOR +INSPECTORATE +INSPECTORATES +INSPECTORS +INSPECTORSHIP +INSPECTORSHIPS +INSPECTS +INSPHERE +INSPHERED +INSPHERES +INSPHERING +INSPIRATION +INSPIRATIONAL +INSPIRATIONALLY +INSPIRATIONS +INSPIRATOR +INSPIRATORS +INSPIRATORY +INSPIRE +INSPIRED +INSPIRER +INSPIRERS +INSPIRES +INSPIRING +INSPIRIT +INSPIRITED +INSPIRITING +INSPIRITINGLY +INSPIRITS +INSPISSATE +INSPISSATED +INSPISSATES +INSPISSATING +INSPISSATION +INSPISSATIONS +INSPISSATOR +INSPISSATORS +INSTABILITIES +INSTABILITY +INSTABLE +INSTAL +INSTALL +INSTALLATION +INSTALLATIONS +INSTALLED +INSTALLER +INSTALLERS +INSTALLING +INSTALLMENT +INSTALLMENTS +INSTALLS +INSTALMENT +INSTALMENTS +INSTALS +INSTANCE +INSTANCED +INSTANCES +INSTANCIES +INSTANCING +INSTANCY +INSTANT +INSTANTANEITIES +INSTANTANEITY +INSTANTANEOUS +INSTANTANEOUSLY +INSTANTER +INSTANTIATE +INSTANTIATED +INSTANTIATES +INSTANTIATING +INSTANTIATION +INSTANTIATIONS +INSTANTLY +INSTANTNESS +INSTANTNESSES +INSTANTS +INSTAR +INSTARRED +INSTARRING +INSTARS +INSTATE +INSTATED +INSTATES +INSTATING +INSTAURATION +INSTAURATIONS +INSTEAD +INSTEP +INSTEPS +INSTIGATE +INSTIGATED +INSTIGATES +INSTIGATING +INSTIGATION +INSTIGATIONS +INSTIGATIVE +INSTIGATOR +INSTIGATORS +INSTIL +INSTILL +INSTILLATION +INSTILLATIONS +INSTILLED +INSTILLER +INSTILLERS +INSTILLING +INSTILLMENT +INSTILLMENTS +INSTILLS +INSTILS +INSTINCT +INSTINCTIVE +INSTINCTIVELY +INSTINCTS +INSTINCTUAL +INSTINCTUALLY +INSTITUTE +INSTITUTED +INSTITUTER +INSTITUTERS +INSTITUTES +INSTITUTING +INSTITUTION +INSTITUTIONAL +INSTITUTIONALLY +INSTITUTIONS +INSTITUTOR +INSTITUTORS +INSTROKE +INSTROKES +INSTRUCT +INSTRUCTED +INSTRUCTING +INSTRUCTION +INSTRUCTIONAL +INSTRUCTIONS +INSTRUCTIVE +INSTRUCTIVELY +INSTRUCTIVENESS +INSTRUCTOR +INSTRUCTORS +INSTRUCTORSHIP +INSTRUCTORSHIPS +INSTRUCTRESS +INSTRUCTRESSES +INSTRUCTS +INSTRUMENT +INSTRUMENTAL +INSTRUMENTALISM +INSTRUMENTALIST +INSTRUMENTALITY +INSTRUMENTALLY +INSTRUMENTALS +INSTRUMENTATION +INSTRUMENTED +INSTRUMENTING +INSTRUMENTS +INSUBORDINATE +INSUBORDINATELY +INSUBORDINATES +INSUBORDINATION +INSUBSTANTIAL +INSUFFERABLE +INSUFFERABLY +INSUFFICIENCIES +INSUFFICIENCY +INSUFFICIENT +INSUFFICIENTLY +INSUFFLATE +INSUFFLATED +INSUFFLATES +INSUFFLATING +INSUFFLATION +INSUFFLATIONS +INSUFFLATOR +INSUFFLATORS +INSULANT +INSULANTS +INSULAR +INSULARISM +INSULARISMS +INSULARITIES +INSULARITY +INSULARLY +INSULARS +INSULATE +INSULATED +INSULATES +INSULATING +INSULATION +INSULATIONS +INSULATOR +INSULATORS +INSULIN +INSULINS +INSULT +INSULTED +INSULTER +INSULTERS +INSULTING +INSULTINGLY +INSULTS +INSUPERABLE +INSUPERABLY +INSUPPORTABLE +INSUPPORTABLY +INSUPPRESSIBLE +INSURABILITIES +INSURABILITY +INSURABLE +INSURANCE +INSURANCES +INSURANT +INSURANTS +INSURE +INSURED +INSUREDS +INSURER +INSURERS +INSURES +INSURGENCE +INSURGENCES +INSURGENCIES +INSURGENCY +INSURGENT +INSURGENTLY +INSURGENTS +INSURING +INSURMOUNTABLE +INSURMOUNTABLY +INSURRECTION +INSURRECTIONAL +INSURRECTIONARY +INSURRECTIONIST +INSURRECTIONS +INSUSCEPTIBLE +INSUSCEPTIBLY +INSWATHE +INSWATHED +INSWATHES +INSWATHING +INSWEPT +INTACT +INTACTLY +INTACTNESS +INTACTNESSES +INTAGLI +INTAGLIO +INTAGLIOED +INTAGLIOING +INTAGLIOS +INTAKE +INTAKES +INTANGIBILITIES +INTANGIBILITY +INTANGIBLE +INTANGIBLENESS +INTANGIBLES +INTANGIBLY +INTARSIA +INTARSIAS +INTEGER +INTEGERS +INTEGRABILITIES +INTEGRABILITY +INTEGRABLE +INTEGRAL +INTEGRALITIES +INTEGRALITY +INTEGRALLY +INTEGRALS +INTEGRAND +INTEGRANDS +INTEGRANT +INTEGRANTS +INTEGRATE +INTEGRATED +INTEGRATES +INTEGRATING +INTEGRATION +INTEGRATIONIST +INTEGRATIONISTS +INTEGRATIONS +INTEGRATIVE +INTEGRATOR +INTEGRATORS +INTEGRITIES +INTEGRITY +INTEGUMENT +INTEGUMENTARY +INTEGUMENTS +INTELLECT +INTELLECTION +INTELLECTIONS +INTELLECTIVE +INTELLECTIVELY +INTELLECTS +INTELLECTUAL +INTELLECTUALISM +INTELLECTUALIST +INTELLECTUALITY +INTELLECTUALIZE +INTELLECTUALLY +INTELLECTUALS +INTELLIGENCE +INTELLIGENCER +INTELLIGENCERS +INTELLIGENCES +INTELLIGENT +INTELLIGENTIAL +INTELLIGENTLY +INTELLIGENTSIA +INTELLIGENTSIAS +INTELLIGIBILITY +INTELLIGIBLE +INTELLIGIBLY +INTEMPERANCE +INTEMPERANCES +INTEMPERATE +INTEMPERATELY +INTEMPERATENESS +INTEND +INTENDANCE +INTENDANCES +INTENDANT +INTENDANTS +INTENDED +INTENDEDLY +INTENDEDS +INTENDER +INTENDERS +INTENDING +INTENDMENT +INTENDMENTS +INTENDS +INTENERATE +INTENERATED +INTENERATES +INTENERATING +INTENERATION +INTENERATIONS +INTENSE +INTENSELY +INTENSENESS +INTENSENESSES +INTENSER +INTENSEST +INTENSIFICATION +INTENSIFIED +INTENSIFIER +INTENSIFIERS +INTENSIFIES +INTENSIFY +INTENSIFYING +INTENSION +INTENSIONAL +INTENSIONALITY +INTENSIONALLY +INTENSIONS +INTENSITIES +INTENSITY +INTENSIVE +INTENSIVELY +INTENSIVENESS +INTENSIVENESSES +INTENSIVES +INTENT +INTENTION +INTENTIONAL +INTENTIONALITY +INTENTIONALLY +INTENTIONS +INTENTLY +INTENTNESS +INTENTNESSES +INTENTS +INTER +INTERABANG +INTERABANGS +INTERACT +INTERACTANT +INTERACTANTS +INTERACTED +INTERACTING +INTERACTION +INTERACTIONAL +INTERACTIONS +INTERACTIVE +INTERACTIVELY +INTERACTS +INTERAGE +INTERAGENCY +INTERALLELIC +INTERALLIED +INTERANIMATION +INTERANIMATIONS +INTERANNUAL +INTERARCH +INTERARCHED +INTERARCHES +INTERARCHING +INTERATOMIC +INTERBANK +INTERBASIN +INTERBED +INTERBEDDED +INTERBEDDING +INTERBEDS +INTERBEHAVIOR +INTERBEHAVIORAL +INTERBEHAVIORS +INTERBOROUGH +INTERBRANCH +INTERBRED +INTERBREED +INTERBREEDING +INTERBREEDS +INTERCALARY +INTERCALATE +INTERCALATED +INTERCALATES +INTERCALATING +INTERCALATION +INTERCALATIONS +INTERCAMPUS +INTERCASTE +INTERCEDE +INTERCEDED +INTERCEDER +INTERCEDERS +INTERCEDES +INTERCEDING +INTERCELL +INTERCELLULAR +INTERCENSAL +INTERCEPT +INTERCEPTED +INTERCEPTER +INTERCEPTERS +INTERCEPTING +INTERCEPTION +INTERCEPTIONS +INTERCEPTOR +INTERCEPTORS +INTERCEPTS +INTERCESSION +INTERCESSIONAL +INTERCESSIONS +INTERCESSOR +INTERCESSORS +INTERCESSORY +INTERCHAIN +INTERCHANGE +INTERCHANGEABLE +INTERCHANGEABLY +INTERCHANGED +INTERCHANGER +INTERCHANGERS +INTERCHANGES +INTERCHANGING +INTERCHANNEL +INTERCHURCH +INTERCITY +INTERCLAN +INTERCLASS +INTERCLUB +INTERCLUSTER +INTERCOASTAL +INTERCOLLEGIATE +INTERCOLONIAL +INTERCOM +INTERCOMMUNAL +INTERCOMMUNION +INTERCOMMUNIONS +INTERCOMMUNITY +INTERCOMPANY +INTERCOMPARE +INTERCOMPARED +INTERCOMPARES +INTERCOMPARING +INTERCOMPARISON +INTERCOMS +INTERCONNECT +INTERCONNECTED +INTERCONNECTING +INTERCONNECTION +INTERCONNECTS +INTERCONVERSION +INTERCONVERT +INTERCONVERTED +INTERCONVERTING +INTERCONVERTS +INTERCOOLER +INTERCOOLERS +INTERCORPORATE +INTERCORRELATE +INTERCORRELATED +INTERCORRELATES +INTERCORTICAL +INTERCOSTAL +INTERCOSTALS +INTERCOUNTRY +INTERCOUNTY +INTERCOUPLE +INTERCOURSE +INTERCOURSES +INTERCRATER +INTERCROP +INTERCROPPED +INTERCROPPING +INTERCROPS +INTERCROSS +INTERCROSSED +INTERCROSSES +INTERCROSSING +INTERCULTURAL +INTERCULTURALLY +INTERCULTURE +INTERCURRENT +INTERCUT +INTERCUTS +INTERCUTTING +INTERDEALER +INTERDENTAL +INTERDENTALLY +INTERDEPEND +INTERDEPENDED +INTERDEPENDENCE +INTERDEPENDENCY +INTERDEPENDENT +INTERDEPENDING +INTERDEPENDS +INTERDIALECTAL +INTERDICT +INTERDICTED +INTERDICTING +INTERDICTION +INTERDICTIONS +INTERDICTIVE +INTERDICTOR +INTERDICTORS +INTERDICTORY +INTERDICTS +INTERDIFFUSE +INTERDIFFUSED +INTERDIFFUSES +INTERDIFFUSING +INTERDIFFUSION +INTERDIFFUSIONS +INTERDIGITATE +INTERDIGITATED +INTERDIGITATES +INTERDIGITATING +INTERDIGITATION +INTERDISTRICT +INTERDIVISIONAL +INTERDOMINION +INTERELECTRODE +INTERELECTRON +INTERELECTRONIC +INTEREPIDEMIC +INTEREST +INTERESTED +INTERESTEDLY +INTERESTING +INTERESTINGLY +INTERESTINGNESS +INTERESTS +INTERETHNIC +INTERFACE +INTERFACED +INTERFACES +INTERFACIAL +INTERFACING +INTERFACINGS +INTERFACULTY +INTERFAITH +INTERFAMILIAL +INTERFAMILY +INTERFERE +INTERFERED +INTERFERENCE +INTERFERENCES +INTERFERENTIAL +INTERFERER +INTERFERERS +INTERFERES +INTERFERING +INTERFEROGRAM +INTERFEROGRAMS +INTERFEROMETER +INTERFEROMETERS +INTERFEROMETRIC +INTERFEROMETRY +INTERFERON +INTERFERONS +INTERFERTILE +INTERFERTILITY +INTERFIBER +INTERFILE +INTERFILED +INTERFILES +INTERFILING +INTERFIRM +INTERFLOW +INTERFLOWED +INTERFLOWING +INTERFLOWS +INTERFLUVE +INTERFLUVES +INTERFLUVIAL +INTERFOLD +INTERFOLDED +INTERFOLDING +INTERFOLDS +INTERFRATERNITY +INTERFUSE +INTERFUSED +INTERFUSES +INTERFUSING +INTERFUSION +INTERFUSIONS +INTERGALACTIC +INTERGANG +INTERGENERATION +INTERGENERIC +INTERGLACIAL +INTERGLACIALS +INTERGRADATION +INTERGRADATIONS +INTERGRADE +INTERGRADED +INTERGRADES +INTERGRADING +INTERGRAFT +INTERGRAFTED +INTERGRAFTING +INTERGRAFTS +INTERGRANULAR +INTERGROUP +INTERGROWTH +INTERGROWTHS +INTERIM +INTERIMS +INTERINDIVIDUAL +INTERINDUSTRY +INTERINFLUENCE +INTERINFLUENCES +INTERINVOLVE +INTERINVOLVED +INTERINVOLVES +INTERINVOLVING +INTERIONIC +INTERIOR +INTERIORISE +INTERIORISED +INTERIORISES +INTERIORISING +INTERIORITIES +INTERIORITY +INTERIORIZATION +INTERIORIZE +INTERIORIZED +INTERIORIZES +INTERIORIZING +INTERIORLY +INTERIORS +INTERISLAND +INTERJECT +INTERJECTED +INTERJECTING +INTERJECTION +INTERJECTIONAL +INTERJECTIONS +INTERJECTOR +INTERJECTORS +INTERJECTORY +INTERJECTS +INTERJOIN +INTERJOINED +INTERJOINING +INTERJOINS +INTERKNIT +INTERKNITS +INTERKNITTED +INTERKNITTING +INTERKNOT +INTERKNOTS +INTERKNOTTED +INTERKNOTTING +INTERLACE +INTERLACED +INTERLACEMENT +INTERLACEMENTS +INTERLACES +INTERLACING +INTERLACUSTRINE +INTERLAID +INTERLAMINAR +INTERLAP +INTERLAPPED +INTERLAPPING +INTERLAPS +INTERLARD +INTERLARDED +INTERLARDING +INTERLARDS +INTERLAY +INTERLAYER +INTERLAYERED +INTERLAYERING +INTERLAYERS +INTERLAYING +INTERLAYS +INTERLEAF +INTERLEAVE +INTERLEAVED +INTERLEAVES +INTERLEAVING +INTERLEND +INTERLENDING +INTERLENDS +INTERLENT +INTERLEUKIN +INTERLEUKINS +INTERLIBRARY +INTERLINE +INTERLINEAR +INTERLINEARLY +INTERLINEARS +INTERLINEATION +INTERLINEATIONS +INTERLINED +INTERLINER +INTERLINERS +INTERLINES +INTERLINING +INTERLININGS +INTERLINK +INTERLINKED +INTERLINKING +INTERLINKS +INTERLOAN +INTERLOANS +INTERLOBULAR +INTERLOCAL +INTERLOCK +INTERLOCKED +INTERLOCKING +INTERLOCKS +INTERLOCUTOR +INTERLOCUTORS +INTERLOCUTORY +INTERLOOP +INTERLOOPED +INTERLOOPING +INTERLOOPS +INTERLOPE +INTERLOPED +INTERLOPER +INTERLOPERS +INTERLOPES +INTERLOPING +INTERLUDE +INTERLUDES +INTERLUNAR +INTERLUNARY +INTERMALE +INTERMARGINAL +INTERMARRIAGE +INTERMARRIAGES +INTERMARRIED +INTERMARRIES +INTERMARRY +INTERMARRYING +INTERMAT +INTERMATS +INTERMATTED +INTERMATTING +INTERMEDDLE +INTERMEDDLED +INTERMEDDLER +INTERMEDDLERS +INTERMEDDLES +INTERMEDDLING +INTERMEDIACIES +INTERMEDIACY +INTERMEDIARIES +INTERMEDIARY +INTERMEDIATE +INTERMEDIATED +INTERMEDIATELY +INTERMEDIATES +INTERMEDIATING +INTERMEDIATION +INTERMEDIATIONS +INTERMEDIN +INTERMEDINS +INTERMEMBRANE +INTERMENSTRUAL +INTERMENT +INTERMENTS +INTERMESH +INTERMESHED +INTERMESHES +INTERMESHING +INTERMETALLIC +INTERMETALLICS +INTERMEZZI +INTERMEZZO +INTERMEZZOS +INTERMINABLE +INTERMINABLY +INTERMINGLE +INTERMINGLED +INTERMINGLES +INTERMINGLING +INTERMISSION +INTERMISSIONS +INTERMIT +INTERMITOTIC +INTERMITS +INTERMITTED +INTERMITTENCE +INTERMITTENCES +INTERMITTENCIES +INTERMITTENCY +INTERMITTENT +INTERMITTENTLY +INTERMITTER +INTERMITTERS +INTERMITTING +INTERMIX +INTERMIXED +INTERMIXES +INTERMIXING +INTERMIXTURE +INTERMIXTURES +INTERMODAL +INTERMODULATION +INTERMOLECULAR +INTERMONT +INTERMONTANE +INTERMOUNTAIN +INTERN +INTERNAL +INTERNALISE +INTERNALISED +INTERNALISES +INTERNALISING +INTERNALITIES +INTERNALITY +INTERNALIZATION +INTERNALIZE +INTERNALIZED +INTERNALIZES +INTERNALIZING +INTERNALLY +INTERNALS +INTERNATIONAL +INTERNATIONALLY +INTERNATIONALS +INTERNE +INTERNECINE +INTERNED +INTERNEE +INTERNEES +INTERNES +INTERNEURON +INTERNEURONAL +INTERNEURONS +INTERNING +INTERNIST +INTERNISTS +INTERNMENT +INTERNMENTS +INTERNODAL +INTERNODE +INTERNODES +INTERNS +INTERNSHIP +INTERNSHIPS +INTERNUCLEAR +INTERNUCLEON +INTERNUCLEONIC +INTERNUCLEOTIDE +INTERNUNCIAL +INTERNUNCIO +INTERNUNCIOS +INTEROBSERVER +INTEROCEAN +INTEROCEANIC +INTEROCEPTIVE +INTEROCEPTOR +INTEROCEPTORS +INTEROFFICE +INTEROPERABLE +INTEROPERATIVE +INTERORBITAL +INTERORGAN +INTERPANDEMIC +INTERPARISH +INTERPAROCHIAL +INTERPAROXYSMAL +INTERPARTICLE +INTERPARTY +INTERPELLATE +INTERPELLATED +INTERPELLATES +INTERPELLATING +INTERPELLATION +INTERPELLATIONS +INTERPELLATOR +INTERPELLATORS +INTERPENETRATE +INTERPENETRATED +INTERPENETRATES +INTERPERCEPTUAL +INTERPERMEATE +INTERPERMEATED +INTERPERMEATES +INTERPERMEATING +INTERPERSONAL +INTERPERSONALLY +INTERPHALANGEAL +INTERPHASE +INTERPHASES +INTERPLANETARY +INTERPLANT +INTERPLANTED +INTERPLANTING +INTERPLANTS +INTERPLAY +INTERPLAYED +INTERPLAYING +INTERPLAYS +INTERPLEAD +INTERPLEADED +INTERPLEADER +INTERPLEADERS +INTERPLEADING +INTERPLEADS +INTERPLED +INTERPLUVIAL +INTERPOINT +INTERPOLATE +INTERPOLATED +INTERPOLATES +INTERPOLATING +INTERPOLATION +INTERPOLATIONS +INTERPOLATIVE +INTERPOLATOR +INTERPOLATORS +INTERPOPULATION +INTERPOSE +INTERPOSED +INTERPOSER +INTERPOSERS +INTERPOSES +INTERPOSING +INTERPOSITION +INTERPOSITIONS +INTERPRET +INTERPRETABLE +INTERPRETATION +INTERPRETATIONS +INTERPRETATIVE +INTERPRETED +INTERPRETER +INTERPRETERS +INTERPRETING +INTERPRETIVE +INTERPRETIVELY +INTERPRETS +INTERPROVINCIAL +INTERPROXIMAL +INTERPSYCHIC +INTERPUPILLARY +INTERRACE +INTERRACIAL +INTERRACIALLY +INTERRED +INTERREGES +INTERREGIONAL +INTERREGNA +INTERREGNUM +INTERREGNUMS +INTERRELATE +INTERRELATED +INTERRELATEDLY +INTERRELATES +INTERRELATING +INTERRELATION +INTERRELATIONS +INTERRELIGIOUS +INTERRENAL +INTERREX +INTERRING +INTERROBANG +INTERROBANGS +INTERROGATE +INTERROGATED +INTERROGATEE +INTERROGATEES +INTERROGATES +INTERROGATING +INTERROGATION +INTERROGATIONAL +INTERROGATIONS +INTERROGATIVE +INTERROGATIVELY +INTERROGATIVES +INTERROGATOR +INTERROGATORIES +INTERROGATORS +INTERROGATORY +INTERROGEE +INTERROGEES +INTERROW +INTERRUPT +INTERRUPTED +INTERRUPTER +INTERRUPTERS +INTERRUPTIBLE +INTERRUPTING +INTERRUPTION +INTERRUPTIONS +INTERRUPTIVE +INTERRUPTOR +INTERRUPTORS +INTERRUPTS +INTERS +INTERSCHOLASTIC +INTERSCHOOL +INTERSECT +INTERSECTED +INTERSECTING +INTERSECTION +INTERSECTIONAL +INTERSECTIONS +INTERSECTS +INTERSEGMENT +INTERSEGMENTAL +INTERSENSORY +INTERSERVICE +INTERSESSION +INTERSESSIONS +INTERSEX +INTERSEXES +INTERSEXUAL +INTERSEXUALITY +INTERSEXUALLY +INTERSOCIETAL +INTERSOCIETY +INTERSPACE +INTERSPACED +INTERSPACES +INTERSPACING +INTERSPECIES +INTERSPECIFIC +INTERSPERSE +INTERSPERSED +INTERSPERSES +INTERSPERSING +INTERSPERSION +INTERSPERSIONS +INTERSTADIAL +INTERSTADIALS +INTERSTAGE +INTERSTATE +INTERSTATES +INTERSTATION +INTERSTELLAR +INTERSTERILE +INTERSTERILITY +INTERSTICE +INTERSTICES +INTERSTIMULUS +INTERSTITIAL +INTERSTITIALLY +INTERSTRAIN +INTERSTRAND +INTERSTRATIFIED +INTERSTRATIFIES +INTERSTRATIFY +INTERSUBJECTIVE +INTERSYSTEM +INTERTERM +INTERTERMINAL +INTERTEXTUAL +INTERTEXTUALITY +INTERTEXTUALLY +INTERTIDAL +INTERTIDALLY +INTERTIE +INTERTIES +INTERTILL +INTERTILLAGE +INTERTILLAGES +INTERTILLED +INTERTILLING +INTERTILLS +INTERTRIAL +INTERTRIBAL +INTERTROOP +INTERTROPICAL +INTERTWINE +INTERTWINED +INTERTWINEMENT +INTERTWINEMENTS +INTERTWINES +INTERTWINING +INTERTWIST +INTERTWISTED +INTERTWISTING +INTERTWISTS +INTERUNION +INTERUNIT +INTERUNIVERSITY +INTERURBAN +INTERVAL +INTERVALE +INTERVALES +INTERVALLEY +INTERVALLIC +INTERVALOMETER +INTERVALOMETERS +INTERVALS +INTERVENE +INTERVENED +INTERVENER +INTERVENERS +INTERVENES +INTERVENING +INTERVENOR +INTERVENORS +INTERVENTION +INTERVENTIONISM +INTERVENTIONIST +INTERVENTIONS +INTERVERTEBRAL +INTERVIEW +INTERVIEWED +INTERVIEWEE +INTERVIEWEES +INTERVIEWER +INTERVIEWERS +INTERVIEWING +INTERVIEWS +INTERVILLAGE +INTERVISIBILITY +INTERVISIBLE +INTERVISITATION +INTERVOCALIC +INTERWAR +INTERWEAVE +INTERWEAVED +INTERWEAVES +INTERWEAVING +INTERWORK +INTERWORKED +INTERWORKING +INTERWORKINGS +INTERWORKS +INTERWOVE +INTERWOVEN +INTERZONAL +INTERZONE +INTESTACIES +INTESTACY +INTESTATE +INTESTATES +INTESTINAL +INTESTINALLY +INTESTINE +INTESTINES +INTHRAL +INTHRALL +INTHRALLED +INTHRALLING +INTHRALLS +INTHRALS +INTHRONE +INTHRONED +INTHRONES +INTHRONING +INTI +INTIFADA +INTIFADAH +INTIFADAHS +INTIFADAS +INTIFADEH +INTIFADEHS +INTIMA +INTIMACIES +INTIMACY +INTIMAE +INTIMAL +INTIMAS +INTIMATE +INTIMATED +INTIMATELY +INTIMATENESS +INTIMATENESSES +INTIMATER +INTIMATERS +INTIMATES +INTIMATING +INTIMATION +INTIMATIONS +INTIME +INTIMIDATE +INTIMIDATED +INTIMIDATES +INTIMIDATING +INTIMIDATINGLY +INTIMIDATION +INTIMIDATIONS +INTIMIDATOR +INTIMIDATORS +INTIMIDATORY +INTIMIST +INTIMISTS +INTINCTION +INTINCTIONS +INTINE +INTINES +INTIS +INTITLE +INTITLED +INTITLES +INTITLING +INTITULE +INTITULED +INTITULES +INTITULING +INTO +INTOLERABILITY +INTOLERABLE +INTOLERABLENESS +INTOLERABLY +INTOLERANCE +INTOLERANCES +INTOLERANT +INTOLERANTLY +INTOLERANTNESS +INTOMB +INTOMBED +INTOMBING +INTOMBS +INTONATE +INTONATED +INTONATES +INTONATING +INTONATION +INTONATIONAL +INTONATIONS +INTONE +INTONED +INTONER +INTONERS +INTONES +INTONING +INTORT +INTORTED +INTORTING +INTORTS +INTOWN +INTOXICANT +INTOXICANTS +INTOXICATE +INTOXICATED +INTOXICATEDLY +INTOXICATES +INTOXICATING +INTOXICATION +INTOXICATIONS +INTRACARDIAC +INTRACARDIAL +INTRACARDIALLY +INTRACELLULAR +INTRACELLULARLY +INTRACEREBRAL +INTRACEREBRALLY +INTRACITY +INTRACOMPANY +INTRACRANIAL +INTRACRANIALLY +INTRACTABILITY +INTRACTABLE +INTRACTABLY +INTRACUTANEOUS +INTRADAY +INTRADERMAL +INTRADERMALLY +INTRADOS +INTRADOSES +INTRAGALACTIC +INTRAGENIC +INTRAMOLECULAR +INTRAMURAL +INTRAMURALLY +INTRAMUSCULAR +INTRAMUSCULARLY +INTRANASAL +INTRANASALLY +INTRANET +INTRANETS +INTRANSIGEANCE +INTRANSIGEANCES +INTRANSIGEANT +INTRANSIGEANTLY +INTRANSIGEANTS +INTRANSIGENCE +INTRANSIGENCES +INTRANSIGENT +INTRANSIGENTLY +INTRANSIGENTS +INTRANSITIVE +INTRANSITIVELY +INTRANSITIVITY +INTRANT +INTRANTS +INTRAOCULAR +INTRAOCULARLY +INTRAPERITONEAL +INTRAPERSONAL +INTRAPLATE +INTRAPOPULATION +INTRAPRENEUR +INTRAPRENEURIAL +INTRAPRENEURS +INTRAPSYCHIC +INTRASPECIES +INTRASPECIFIC +INTRASTATE +INTRATHECAL +INTRATHECALLY +INTRATHORACIC +INTRAUTERINE +INTRAVASCULAR +INTRAVASCULARLY +INTRAVENOUS +INTRAVENOUSLY +INTRAVITAL +INTRAVITALLY +INTRAVITAM +INTRAZONAL +INTREAT +INTREATED +INTREATING +INTREATS +INTRENCH +INTRENCHED +INTRENCHES +INTRENCHING +INTREPID +INTREPIDITIES +INTREPIDITY +INTREPIDLY +INTREPIDNESS +INTREPIDNESSES +INTRICACIES +INTRICACY +INTRICATE +INTRICATELY +INTRICATENESS +INTRICATENESSES +INTRIGANT +INTRIGANTS +INTRIGUANT +INTRIGUANTS +INTRIGUE +INTRIGUED +INTRIGUER +INTRIGUERS +INTRIGUES +INTRIGUING +INTRIGUINGLY +INTRINSIC +INTRINSICAL +INTRINSICALLY +INTRO +INTRODUCE +INTRODUCED +INTRODUCER +INTRODUCERS +INTRODUCES +INTRODUCING +INTRODUCTION +INTRODUCTIONS +INTRODUCTORILY +INTRODUCTORY +INTROFIED +INTROFIES +INTROFY +INTROFYING +INTROGRESSANT +INTROGRESSANTS +INTROGRESSION +INTROGRESSIONS +INTROGRESSIVE +INTROIT +INTROITS +INTROJECT +INTROJECTED +INTROJECTING +INTROJECTION +INTROJECTIONS +INTROJECTS +INTROMISSION +INTROMISSIONS +INTROMIT +INTROMITS +INTROMITTED +INTROMITTENT +INTROMITTER +INTROMITTERS +INTROMITTING +INTRON +INTRONS +INTRORSE +INTROS +INTROSPECT +INTROSPECTED +INTROSPECTING +INTROSPECTION +INTROSPECTIONAL +INTROSPECTIONS +INTROSPECTIVE +INTROSPECTIVELY +INTROSPECTS +INTROVERSION +INTROVERSIONS +INTROVERSIVE +INTROVERSIVELY +INTROVERT +INTROVERTED +INTROVERTING +INTROVERTS +INTRUDE +INTRUDED +INTRUDER +INTRUDERS +INTRUDES +INTRUDING +INTRUSION +INTRUSIONS +INTRUSIVE +INTRUSIVELY +INTRUSIVENESS +INTRUSIVENESSES +INTRUSIVES +INTRUST +INTRUSTED +INTRUSTING +INTRUSTS +INTUBATE +INTUBATED +INTUBATES +INTUBATING +INTUBATION +INTUBATIONS +INTUIT +INTUITABLE +INTUITED +INTUITING +INTUITION +INTUITIONAL +INTUITIONISM +INTUITIONISMS +INTUITIONIST +INTUITIONISTS +INTUITIONS +INTUITIVE +INTUITIVELY +INTUITIVENESS +INTUITIVENESSES +INTUITS +INTUMESCE +INTUMESCED +INTUMESCENCE +INTUMESCENCES +INTUMESCENT +INTUMESCES +INTUMESCING +INTURN +INTURNED +INTURNS +INTUSSUSCEPT +INTUSSUSCEPTED +INTUSSUSCEPTING +INTUSSUSCEPTION +INTUSSUSCEPTIVE +INTUSSUSCEPTS +INTWINE +INTWINED +INTWINES +INTWINING +INTWIST +INTWISTED +INTWISTING +INTWISTS +INULASE +INULASES +INULIN +INULINS +INUNCTION +INUNCTIONS +INUNDANT +INUNDATE +INUNDATED +INUNDATES +INUNDATING +INUNDATION +INUNDATIONS +INUNDATOR +INUNDATORS +INUNDATORY +INURBANE +INURE +INURED +INUREMENT +INUREMENTS +INURES +INURING +INURN +INURNED +INURNING +INURNMENT +INURNMENTS +INURNS +INUTILE +INUTILELY +INUTILITIES +INUTILITY +INVADE +INVADED +INVADER +INVADERS +INVADES +INVADING +INVAGINATE +INVAGINATED +INVAGINATES +INVAGINATING +INVAGINATION +INVAGINATIONS +INVALID +INVALIDATE +INVALIDATED +INVALIDATES +INVALIDATING +INVALIDATION +INVALIDATIONS +INVALIDATOR +INVALIDATORS +INVALIDED +INVALIDING +INVALIDISM +INVALIDISMS +INVALIDITIES +INVALIDITY +INVALIDLY +INVALIDS +INVALUABLE +INVALUABLENESS +INVALUABLY +INVAR +INVARIABILITIES +INVARIABILITY +INVARIABLE +INVARIABLES +INVARIABLY +INVARIANCE +INVARIANCES +INVARIANT +INVARIANTS +INVARS +INVASION +INVASIONS +INVASIVE +INVASIVENESS +INVASIVENESSES +INVECTED +INVECTIVE +INVECTIVELY +INVECTIVENESS +INVECTIVENESSES +INVECTIVES +INVEIGH +INVEIGHED +INVEIGHER +INVEIGHERS +INVEIGHING +INVEIGHS +INVEIGLE +INVEIGLED +INVEIGLEMENT +INVEIGLEMENTS +INVEIGLER +INVEIGLERS +INVEIGLES +INVEIGLING +INVENT +INVENTED +INVENTER +INVENTERS +INVENTING +INVENTION +INVENTIONS +INVENTIVE +INVENTIVELY +INVENTIVENESS +INVENTIVENESSES +INVENTOR +INVENTORIAL +INVENTORIALLY +INVENTORIED +INVENTORIES +INVENTORS +INVENTORY +INVENTORYING +INVENTRESS +INVENTRESSES +INVENTS +INVERITIES +INVERITY +INVERNESS +INVERNESSES +INVERSE +INVERSED +INVERSELY +INVERSES +INVERSING +INVERSION +INVERSIONS +INVERSIVE +INVERT +INVERTASE +INVERTASES +INVERTEBRATE +INVERTEBRATES +INVERTED +INVERTER +INVERTERS +INVERTIBLE +INVERTIN +INVERTING +INVERTINS +INVERTOR +INVERTORS +INVERTS +INVEST +INVESTABLE +INVESTED +INVESTIGATE +INVESTIGATED +INVESTIGATES +INVESTIGATING +INVESTIGATION +INVESTIGATIONAL +INVESTIGATIONS +INVESTIGATIVE +INVESTIGATOR +INVESTIGATORS +INVESTIGATORY +INVESTING +INVESTITURE +INVESTITURES +INVESTMENT +INVESTMENTS +INVESTOR +INVESTORS +INVESTS +INVETERACIES +INVETERACY +INVETERATE +INVETERATELY +INVIABILITIES +INVIABILITY +INVIABLE +INVIABLY +INVIDIOUS +INVIDIOUSLY +INVIDIOUSNESS +INVIDIOUSNESSES +INVIGILATE +INVIGILATED +INVIGILATES +INVIGILATING +INVIGILATION +INVIGILATIONS +INVIGILATOR +INVIGILATORS +INVIGORATE +INVIGORATED +INVIGORATES +INVIGORATING +INVIGORATINGLY +INVIGORATION +INVIGORATIONS +INVIGORATOR +INVIGORATORS +INVINCIBILITIES +INVINCIBILITY +INVINCIBLE +INVINCIBLENESS +INVINCIBLY +INVIOLABILITIES +INVIOLABILITY +INVIOLABLE +INVIOLABLENESS +INVIOLABLY +INVIOLACIES +INVIOLACY +INVIOLATE +INVIOLATELY +INVIOLATENESS +INVIOLATENESSES +INVIRILE +INVISCID +INVISIBILITIES +INVISIBILITY +INVISIBLE +INVISIBLENESS +INVISIBLENESSES +INVISIBLES +INVISIBLY +INVITAL +INVITATION +INVITATIONAL +INVITATIONALS +INVITATIONS +INVITATORIES +INVITATORY +INVITE +INVITED +INVITEE +INVITEES +INVITER +INVITERS +INVITES +INVITING +INVITINGLY +INVOCATE +INVOCATED +INVOCATES +INVOCATING +INVOCATION +INVOCATIONAL +INVOCATIONS +INVOCATORY +INVOICE +INVOICED +INVOICES +INVOICING +INVOKE +INVOKED +INVOKER +INVOKERS +INVOKES +INVOKING +INVOLUCEL +INVOLUCELS +INVOLUCRA +INVOLUCRAL +INVOLUCRATE +INVOLUCRE +INVOLUCRES +INVOLUCRUM +INVOLUNTARILY +INVOLUNTARINESS +INVOLUNTARY +INVOLUTE +INVOLUTED +INVOLUTES +INVOLUTING +INVOLUTION +INVOLUTIONAL +INVOLUTIONS +INVOLVE +INVOLVED +INVOLVEDLY +INVOLVEMENT +INVOLVEMENTS +INVOLVER +INVOLVERS +INVOLVES +INVOLVING +INVULNERABILITY +INVULNERABLE +INVULNERABLY +INWALL +INWALLED +INWALLING +INWALLS +INWARD +INWARDLY +INWARDNESS +INWARDNESSES +INWARDS +INWEAVE +INWEAVED +INWEAVES +INWEAVING +INWIND +INWINDING +INWINDS +INWOUND +INWOVE +INWOVEN +INWRAP +INWRAPPED +INWRAPPING +INWRAPS +INWROUGHT +IODATE +IODATED +IODATES +IODATING +IODATION +IODATIONS +IODIC +IODID +IODIDE +IODIDES +IODIDS +IODIN +IODINATE +IODINATED +IODINATES +IODINATING +IODINATION +IODINATIONS +IODINE +IODINES +IODINS +IODISE +IODISED +IODISES +IODISING +IODISM +IODISMS +IODIZE +IODIZED +IODIZER +IODIZERS +IODIZES +IODIZING +IODOFORM +IODOFORMS +IODOMETRIES +IODOMETRY +IODOPHOR +IODOPHORS +IODOPSIN +IODOPSINS +IODOUS +IOLITE +IOLITES +ION +IONIC +IONICITIES +IONICITY +IONICS +IONISE +IONISED +IONISES +IONISING +IONIUM +IONIUMS +IONIZABLE +IONIZATION +IONIZATIONS +IONIZE +IONIZED +IONIZER +IONIZERS +IONIZES +IONIZING +IONOGEN +IONOGENIC +IONOGENS +IONOMER +IONOMERS +IONONE +IONONES +IONOPHORE +IONOPHORES +IONOSONDE +IONOSONDES +IONOSPHERE +IONOSPHERES +IONOSPHERIC +IONOSPHERICALLY +IONS +IONTOPHORESES +IONTOPHORESIS +IONTOPHORETIC +IOTA +IOTACISM +IOTACISMS +IOTAS +IPECAC +IPECACS +IPECACUANHA +IPECACUANHAS +IPOMOEA +IPOMOEAS +IPRONIAZID +IPRONIAZIDS +IPSILATERAL +IPSILATERALLY +IRACUND +IRADE +IRADES +IRASCIBILITIES +IRASCIBILITY +IRASCIBLE +IRASCIBLENESS +IRASCIBLENESSES +IRASCIBLY +IRATE +IRATELY +IRATENESS +IRATENESSES +IRATER +IRATEST +IRE +IRED +IREFUL +IREFULLY +IRELESS +IRENIC +IRENICAL +IRENICALLY +IRENICS +IRES +IRID +IRIDES +IRIDESCENCE +IRIDESCENCES +IRIDESCENT +IRIDESCENTLY +IRIDIC +IRIDIUM +IRIDIUMS +IRIDOLOGIES +IRIDOLOGIST +IRIDOLOGISTS +IRIDOLOGY +IRIDOSMINE +IRIDOSMINES +IRIDS +IRING +IRIS +IRISED +IRISES +IRISING +IRITIC +IRITIS +IRITISES +IRK +IRKED +IRKING +IRKS +IRKSOME +IRKSOMELY +IRKSOMENESS +IRKSOMENESSES +IROKO +IROKOS +IRON +IRONBARK +IRONBARKS +IRONBOUND +IRONCLAD +IRONCLADS +IRONE +IRONED +IRONER +IRONERS +IRONES +IRONFISTED +IRONHANDED +IRONHEARTED +IRONIC +IRONICAL +IRONICALLY +IRONICALNESS +IRONICALNESSES +IRONIES +IRONING +IRONINGS +IRONIST +IRONISTS +IRONIZE +IRONIZED +IRONIZES +IRONIZING +IRONLIKE +IRONMAN +IRONMASTER +IRONMASTERS +IRONMEN +IRONMONGER +IRONMONGERIES +IRONMONGERS +IRONMONGERY +IRONNESS +IRONNESSES +IRONS +IRONSIDE +IRONSIDES +IRONSMITH +IRONSMITHS +IRONSTONE +IRONSTONES +IRONWARE +IRONWARES +IRONWEED +IRONWEEDS +IRONWOMAN +IRONWOMEN +IRONWOOD +IRONWOODS +IRONWORK +IRONWORKER +IRONWORKERS +IRONWORKS +IRONY +IRRADIANCE +IRRADIANCES +IRRADIANT +IRRADIATE +IRRADIATED +IRRADIATES +IRRADIATING +IRRADIATION +IRRADIATIONS +IRRADIATIVE +IRRADIATOR +IRRADIATORS +IRRADICABLE +IRRADICABLY +IRRATIONAL +IRRATIONALISM +IRRATIONALISMS +IRRATIONALIST +IRRATIONALISTIC +IRRATIONALISTS +IRRATIONALITIES +IRRATIONALITY +IRRATIONALLY +IRRATIONALS +IRREAL +IRREALITIES +IRREALITY +IRRECLAIMABLE +IRRECLAIMABLY +IRRECONCILABLE +IRRECONCILABLES +IRRECONCILABLY +IRRECOVERABLE +IRRECOVERABLY +IRRECUSABLE +IRRECUSABLY +IRREDEEMABLE +IRREDEEMABLY +IRREDENTA +IRREDENTAS +IRREDENTISM +IRREDENTISMS +IRREDENTIST +IRREDENTISTS +IRREDUCIBILITY +IRREDUCIBLE +IRREDUCIBLY +IRREFLEXIVE +IRREFORMABILITY +IRREFORMABLE +IRREFRAGABILITY +IRREFRAGABLE +IRREFRAGABLY +IRREFUTABILITY +IRREFUTABLE +IRREFUTABLY +IRREGARDLESS +IRREGULAR +IRREGULARITIES +IRREGULARITY +IRREGULARLY +IRREGULARS +IRRELATIVE +IRRELATIVELY +IRRELEVANCE +IRRELEVANCES +IRRELEVANCIES +IRRELEVANCY +IRRELEVANT +IRRELEVANTLY +IRRELIGION +IRRELIGIONIST +IRRELIGIONISTS +IRRELIGIONS +IRRELIGIOUS +IRRELIGIOUSLY +IRREMEABLE +IRREMEDIABLE +IRREMEDIABLY +IRREMOVABILITY +IRREMOVABLE +IRREMOVABLY +IRREPARABLE +IRREPARABLENESS +IRREPARABLY +IRREPEALABILITY +IRREPEALABLE +IRREPLACEABLE +IRREPLACEABLY +IRREPRESSIBLE +IRREPRESSIBLY +IRREPROACHABLE +IRREPROACHABLY +IRREPRODUCIBLE +IRRESISTIBILITY +IRRESISTIBLE +IRRESISTIBLY +IRRESOLUBLE +IRRESOLUTE +IRRESOLUTELY +IRRESOLUTENESS +IRRESOLUTION +IRRESOLUTIONS +IRRESOLVABLE +IRRESPONSIBLE +IRRESPONSIBLES +IRRESPONSIBLY +IRRESPONSIVE +IRRETRIEVABLE +IRRETRIEVABLY +IRREVERENCE +IRREVERENCES +IRREVERENT +IRREVERENTLY +IRREVERSIBILITY +IRREVERSIBLE +IRREVERSIBLY +IRREVOCABILITY +IRREVOCABLE +IRREVOCABLENESS +IRREVOCABLY +IRRIDENTA +IRRIDENTAS +IRRIGABLE +IRRIGABLY +IRRIGATE +IRRIGATED +IRRIGATES +IRRIGATING +IRRIGATION +IRRIGATIONS +IRRIGATOR +IRRIGATORS +IRRIGUOUS +IRRITABILITIES +IRRITABILITY +IRRITABLE +IRRITABLENESS +IRRITABLENESSES +IRRITABLY +IRRITANCIES +IRRITANCY +IRRITANT +IRRITANTS +IRRITATE +IRRITATED +IRRITATES +IRRITATING +IRRITATINGLY +IRRITATION +IRRITATIONS +IRRITATIVE +IRRITATOR +IRRITATORS +IRROTATIONAL +IRRUPT +IRRUPTED +IRRUPTING +IRRUPTION +IRRUPTIONS +IRRUPTIVE +IRRUPTIVELY +IRRUPTS +IS +ISAGOGE +ISAGOGES +ISAGOGIC +ISAGOGICS +ISALLOBAR +ISALLOBARIC +ISALLOBARS +ISARITHM +ISARITHMS +ISATIN +ISATINE +ISATINES +ISATINIC +ISATINS +ISBA +ISBAS +ISCHAEMIA +ISCHAEMIAS +ISCHEMIA +ISCHEMIAS +ISCHEMIC +ISCHIA +ISCHIADIC +ISCHIAL +ISCHIATIC +ISCHIUM +ISEIKONIA +ISEIKONIAS +ISEIKONIC +ISENTROPIC +ISENTROPICALLY +ISINGLASS +ISINGLASSES +ISLAND +ISLANDED +ISLANDER +ISLANDERS +ISLANDING +ISLANDS +ISLE +ISLED +ISLELESS +ISLES +ISLET +ISLETED +ISLETS +ISLING +ISM +ISMS +ISOAGGLUTININ +ISOAGGLUTININS +ISOALLOXAZINE +ISOALLOXAZINES +ISOANTIBODIES +ISOANTIBODY +ISOANTIGEN +ISOANTIGENIC +ISOANTIGENS +ISOBAR +ISOBARE +ISOBARES +ISOBARIC +ISOBARISM +ISOBARISMS +ISOBARS +ISOBATH +ISOBATHIC +ISOBATHS +ISOBUTANE +ISOBUTANES +ISOBUTENE +ISOBUTENES +ISOBUTYL +ISOBUTYLENE +ISOBUTYLENES +ISOBUTYLS +ISOCALORIC +ISOCARBOXAZID +ISOCARBOXAZIDS +ISOCHEIM +ISOCHEIMS +ISOCHIME +ISOCHIMES +ISOCHOR +ISOCHORE +ISOCHORES +ISOCHORIC +ISOCHORS +ISOCHROMOSOME +ISOCHROMOSOMES +ISOCHRON +ISOCHRONAL +ISOCHRONALLY +ISOCHRONE +ISOCHRONES +ISOCHRONISM +ISOCHRONISMS +ISOCHRONOUS +ISOCHRONOUSLY +ISOCHRONS +ISOCLINAL +ISOCLINALS +ISOCLINE +ISOCLINES +ISOCLINIC +ISOCLINICS +ISOCRACIES +ISOCRACY +ISOCYANATE +ISOCYANATES +ISOCYCLIC +ISODIAMETRIC +ISODOSE +ISOELECTRIC +ISOELECTRONIC +ISOENZYMATIC +ISOENZYME +ISOENZYMES +ISOENZYMIC +ISOFORM +ISOFORMS +ISOGAMETE +ISOGAMETES +ISOGAMETIC +ISOGAMIES +ISOGAMOUS +ISOGAMY +ISOGENEIC +ISOGENIC +ISOGENIES +ISOGENOUS +ISOGENY +ISOGLOSS +ISOGLOSSAL +ISOGLOSSES +ISOGLOSSIC +ISOGON +ISOGONAL +ISOGONALS +ISOGONE +ISOGONES +ISOGONIC +ISOGONICS +ISOGONIES +ISOGONS +ISOGONY +ISOGRAFT +ISOGRAFTED +ISOGRAFTING +ISOGRAFTS +ISOGRAM +ISOGRAMS +ISOGRAPH +ISOGRAPHS +ISOGRIV +ISOGRIVS +ISOHEL +ISOHELS +ISOHYET +ISOHYETAL +ISOHYETS +ISOLABLE +ISOLATABLE +ISOLATE +ISOLATED +ISOLATES +ISOLATING +ISOLATION +ISOLATIONISM +ISOLATIONISMS +ISOLATIONIST +ISOLATIONISTS +ISOLATIONS +ISOLATOR +ISOLATORS +ISOLEAD +ISOLEADS +ISOLEUCINE +ISOLEUCINES +ISOLINE +ISOLINES +ISOLOG +ISOLOGOUS +ISOLOGS +ISOLOGUE +ISOLOGUES +ISOMER +ISOMERASE +ISOMERASES +ISOMERIC +ISOMERISM +ISOMERISMS +ISOMERIZATION +ISOMERIZATIONS +ISOMERIZE +ISOMERIZED +ISOMERIZES +ISOMERIZING +ISOMEROUS +ISOMERS +ISOMETRIC +ISOMETRICALLY +ISOMETRICS +ISOMETRIES +ISOMETRY +ISOMORPH +ISOMORPHIC +ISOMORPHICALLY +ISOMORPHISM +ISOMORPHISMS +ISOMORPHOUS +ISOMORPHS +ISONIAZID +ISONIAZIDS +ISONOMIC +ISONOMIES +ISONOMY +ISOOCTANE +ISOOCTANES +ISOPACH +ISOPACHS +ISOPHOTAL +ISOPHOTE +ISOPHOTES +ISOPIESTIC +ISOPLETH +ISOPLETHIC +ISOPLETHS +ISOPOD +ISOPODAN +ISOPODANS +ISOPODS +ISOPRENALINE +ISOPRENALINES +ISOPRENE +ISOPRENES +ISOPRENOID +ISOPROPYL +ISOPROPYLS +ISOPROTERENOL +ISOPROTERENOLS +ISOPYCNIC +ISOSCELES +ISOSMOTIC +ISOSMOTICALLY +ISOSPIN +ISOSPINS +ISOSPORIES +ISOSPORY +ISOSTACIES +ISOSTACY +ISOSTASIES +ISOSTASY +ISOSTATIC +ISOSTATICALLY +ISOSTERIC +ISOTACH +ISOTACHS +ISOTACTIC +ISOTHERAL +ISOTHERE +ISOTHERES +ISOTHERM +ISOTHERMAL +ISOTHERMALLY +ISOTHERMS +ISOTONE +ISOTONES +ISOTONIC +ISOTONICALLY +ISOTONICITIES +ISOTONICITY +ISOTOPE +ISOTOPES +ISOTOPIC +ISOTOPICALLY +ISOTOPIES +ISOTOPY +ISOTROPIC +ISOTROPIES +ISOTROPY +ISOTYPE +ISOTYPES +ISOTYPIC +ISOZYME +ISOZYMES +ISOZYMIC +ISSEI +ISSEIS +ISSUABLE +ISSUABLY +ISSUANCE +ISSUANCES +ISSUANT +ISSUE +ISSUED +ISSUELESS +ISSUER +ISSUERS +ISSUES +ISSUING +ISTHMI +ISTHMIAN +ISTHMIANS +ISTHMIC +ISTHMOID +ISTHMUS +ISTHMUSES +ISTLE +ISTLES +IT +ITALIANATE +ITALIANATED +ITALIANATES +ITALIANATING +ITALIANISE +ITALIANISED +ITALIANISES +ITALIANISING +ITALIANIZE +ITALIANIZED +ITALIANIZES +ITALIANIZING +ITALIC +ITALICISE +ITALICISED +ITALICISES +ITALICISING +ITALICIZATION +ITALICIZATIONS +ITALICIZE +ITALICIZED +ITALICIZES +ITALICIZING +ITALICS +ITCH +ITCHED +ITCHES +ITCHIER +ITCHIEST +ITCHILY +ITCHINESS +ITCHINESSES +ITCHING +ITCHINGS +ITCHY +ITEM +ITEMED +ITEMING +ITEMISE +ITEMISED +ITEMISES +ITEMISING +ITEMIZATION +ITEMIZATIONS +ITEMIZE +ITEMIZED +ITEMIZER +ITEMIZERS +ITEMIZES +ITEMIZING +ITEMS +ITERANCE +ITERANCES +ITERANT +ITERATE +ITERATED +ITERATES +ITERATING +ITERATION +ITERATIONS +ITERATIVE +ITERATIVELY +ITERUM +ITHER +ITHYPHALLIC +ITINERACIES +ITINERACY +ITINERANCIES +ITINERANCY +ITINERANT +ITINERANTLY +ITINERANTS +ITINERARIES +ITINERARY +ITINERATE +ITINERATED +ITINERATES +ITINERATING +ITINERATION +ITINERATIONS +ITS +ITSELF +IVERMECTIN +IVERMECTINS +IVIED +IVIES +IVORIES +IVORY +IVORYBILL +IVORYBILLS +IVORYLIKE +IVY +IVYLIKE +IWIS +IXIA +IXIAS +IXODID +IXODIDS +IXORA +IXORAS +IXTLE +IXTLES +IZAR +IZARS +IZZARD +IZZARDS +JAB +JABBED +JABBER +JABBERED +JABBERER +JABBERERS +JABBERING +JABBERS +JABBERWOCKIES +JABBERWOCKY +JABBING +JABIRU +JABIRUS +JABORANDI +JABORANDIS +JABOT +JABOTICABA +JABOTICABAS +JABOTS +JABS +JACAL +JACALES +JACALS +JACAMAR +JACAMARS +JACANA +JACANAS +JACARANDA +JACARANDAS +JACINTH +JACINTHE +JACINTHES +JACINTHS +JACK +JACKAL +JACKALS +JACKANAPES +JACKANAPESES +JACKAROO +JACKAROOS +JACKASS +JACKASSERIES +JACKASSERY +JACKASSES +JACKBOOT +JACKBOOTED +JACKBOOTS +JACKDAW +JACKDAWS +JACKED +JACKER +JACKEROO +JACKEROOS +JACKERS +JACKET +JACKETED +JACKETING +JACKETLESS +JACKETS +JACKFISH +JACKFISHES +JACKFRUIT +JACKFRUITS +JACKHAMMER +JACKHAMMERED +JACKHAMMERING +JACKHAMMERS +JACKIES +JACKING +JACKKNIFE +JACKKNIFED +JACKKNIFES +JACKKNIFING +JACKKNIVES +JACKLEG +JACKLEGS +JACKLIGHT +JACKLIGHTED +JACKLIGHTING +JACKLIGHTS +JACKPLANE +JACKPLANES +JACKPOT +JACKPOTS +JACKRABBIT +JACKRABBITS +JACKROLL +JACKROLLED +JACKROLLING +JACKROLLS +JACKS +JACKSCREW +JACKSCREWS +JACKSHAFT +JACKSHAFTS +JACKSMELT +JACKSMELTS +JACKSNIPE +JACKSNIPES +JACKSTAY +JACKSTAYS +JACKSTONE +JACKSTONES +JACKSTRAW +JACKSTRAWS +JACKY +JACOBIN +JACOBINS +JACOBUS +JACOBUSES +JACONET +JACONETS +JACQUARD +JACQUARDS +JACQUERIE +JACQUERIES +JACTATION +JACTATIONS +JACTITATION +JACTITATIONS +JACULATE +JACULATED +JACULATES +JACULATING +JACUZZI +JACUZZIS +JADE +JADED +JADEDLY +JADEDNESS +JADEDNESSES +JADEITE +JADEITES +JADELIKE +JADES +JADING +JADISH +JADISHLY +JADITIC +JAEGER +JAEGERS +JAG +JAGER +JAGERS +JAGG +JAGGARIES +JAGGARY +JAGGED +JAGGEDER +JAGGEDEST +JAGGEDLY +JAGGEDNESS +JAGGEDNESSES +JAGGER +JAGGERIES +JAGGERS +JAGGERY +JAGGHERIES +JAGGHERY +JAGGIER +JAGGIES +JAGGIEST +JAGGING +JAGGS +JAGGY +JAGLESS +JAGRA +JAGRAS +JAGS +JAGUAR +JAGUARONDI +JAGUARONDIS +JAGUARS +JAGUARUNDI +JAGUARUNDIS +JAIL +JAILABLE +JAILBAIT +JAILBIRD +JAILBIRDS +JAILBREAK +JAILBREAKS +JAILED +JAILER +JAILERS +JAILHOUSE +JAILHOUSES +JAILING +JAILOR +JAILORS +JAILS +JAKE +JAKES +JALAP +JALAPENO +JALAPENOS +JALAPIC +JALAPIN +JALAPINS +JALAPS +JALOP +JALOPIES +JALOPPIES +JALOPPY +JALOPS +JALOPY +JALOUSIE +JALOUSIED +JALOUSIES +JAM +JAMB +JAMBALAYA +JAMBALAYAS +JAMBE +JAMBEAU +JAMBEAUX +JAMBED +JAMBES +JAMBING +JAMBOREE +JAMBOREES +JAMBS +JAMLIKE +JAMMABLE +JAMMED +JAMMER +JAMMERS +JAMMIER +JAMMIES +JAMMIEST +JAMMING +JAMMY +JAMPACKED +JAMS +JANE +JANES +JANGLE +JANGLED +JANGLER +JANGLERS +JANGLES +JANGLIER +JANGLIEST +JANGLING +JANGLY +JANIFORM +JANISARIES +JANISARY +JANISSARIES +JANISSARY +JANITOR +JANITORIAL +JANITORS +JANIZARIES +JANIZARY +JANTY +JAPAN +JAPANIZE +JAPANIZED +JAPANIZES +JAPANIZING +JAPANNED +JAPANNER +JAPANNERS +JAPANNING +JAPANS +JAPE +JAPED +JAPER +JAPERIES +JAPERS +JAPERY +JAPES +JAPING +JAPINGLY +JAPONAISERIE +JAPONAISERIES +JAPONICA +JAPONICAS +JAR +JARDINIERE +JARDINIERES +JARFUL +JARFULS +JARGON +JARGONED +JARGONEER +JARGONEERS +JARGONEL +JARGONELS +JARGONING +JARGONISH +JARGONIST +JARGONISTIC +JARGONISTS +JARGONIZE +JARGONIZED +JARGONIZES +JARGONIZING +JARGONS +JARGONY +JARGOON +JARGOONS +JARHEAD +JARHEADS +JARINA +JARINAS +JARL +JARLDOM +JARLDOMS +JARLS +JARLSBERG +JARLSBERGS +JAROSITE +JAROSITES +JAROVIZE +JAROVIZED +JAROVIZES +JAROVIZING +JARRAH +JARRAHS +JARRED +JARRING +JARRINGLY +JARS +JARSFUL +JARVEY +JARVEYS +JASMIN +JASMINE +JASMINES +JASMINS +JASPER +JASPERS +JASPERWARE +JASPERWARES +JASPERY +JASPILITE +JASPILITES +JASSID +JASSIDS +JATO +JATOS +JAUK +JAUKED +JAUKING +JAUKS +JAUNCE +JAUNCED +JAUNCES +JAUNCING +JAUNDICE +JAUNDICED +JAUNDICES +JAUNDICING +JAUNT +JAUNTED +JAUNTIER +JAUNTIEST +JAUNTILY +JAUNTINESS +JAUNTINESSES +JAUNTING +JAUNTS +JAUNTY +JAUP +JAUPED +JAUPING +JAUPS +JAVA +JAVAS +JAVELIN +JAVELINA +JAVELINAS +JAVELINED +JAVELINING +JAVELINS +JAW +JAWAN +JAWANS +JAWBONE +JAWBONED +JAWBONER +JAWBONERS +JAWBONES +JAWBONING +JAWBONINGS +JAWBREAKER +JAWBREAKERS +JAWED +JAWING +JAWLESS +JAWLIKE +JAWLINE +JAWLINES +JAWS +JAY +JAYBIRD +JAYBIRDS +JAYGEE +JAYGEES +JAYHAWKER +JAYHAWKERS +JAYS +JAYVEE +JAYVEES +JAYWALK +JAYWALKED +JAYWALKER +JAYWALKERS +JAYWALKING +JAYWALKS +JAZZ +JAZZBO +JAZZBOS +JAZZED +JAZZER +JAZZERS +JAZZES +JAZZIER +JAZZIEST +JAZZILY +JAZZINESS +JAZZINESSES +JAZZING +JAZZLIKE +JAZZMAN +JAZZMEN +JAZZY +JEALOUS +JEALOUSIES +JEALOUSLY +JEALOUSNESS +JEALOUSNESSES +JEALOUSY +JEAN +JEANED +JEANS +JEBEL +JEBELS +JEE +JEED +JEEING +JEEP +JEEPED +JEEPERS +JEEPING +JEEPNEY +JEEPNEYS +JEEPS +JEER +JEERED +JEERER +JEERERS +JEERING +JEERINGLY +JEERS +JEES +JEEZ +JEFE +JEFES +JEHAD +JEHADS +JEHU +JEHUS +JEJUNA +JEJUNAL +JEJUNE +JEJUNELY +JEJUNENESS +JEJUNENESSES +JEJUNITIES +JEJUNITY +JEJUNUM +JELL +JELLABA +JELLABAS +JELLED +JELLIED +JELLIES +JELLIFIED +JELLIFIES +JELLIFY +JELLIFYING +JELLING +JELLO +JELLOS +JELLS +JELLY +JELLYBEAN +JELLYBEANS +JELLYFISH +JELLYFISHES +JELLYING +JELLYLIKE +JELLYROLL +JELLYROLLS +JELUTONG +JELUTONGS +JEMADAR +JEMADARS +JEMIDAR +JEMIDARS +JEMMIED +JEMMIES +JEMMY +JEMMYING +JENNET +JENNETS +JENNIES +JENNY +JEON +JEOPARD +JEOPARDED +JEOPARDIES +JEOPARDING +JEOPARDISE +JEOPARDISED +JEOPARDISES +JEOPARDISING +JEOPARDIZE +JEOPARDIZED +JEOPARDIZES +JEOPARDIZING +JEOPARDS +JEOPARDY +JEQUIRITIES +JEQUIRITY +JERBOA +JERBOAS +JEREED +JEREEDS +JEREMIAD +JEREMIADS +JERID +JERIDS +JERK +JERKED +JERKER +JERKERS +JERKIER +JERKIES +JERKIEST +JERKILY +JERKIN +JERKINESS +JERKINESSES +JERKING +JERKINGLY +JERKINS +JERKS +JERKWATER +JERKWATERS +JERKY +JEROBOAM +JEROBOAMS +JERREED +JERREEDS +JERRICAN +JERRICANS +JERRID +JERRIDS +JERRIES +JERRY +JERRYCAN +JERRYCANS +JERSEY +JERSEYED +JERSEYS +JESS +JESSAMINE +JESSAMINES +JESSANT +JESSE +JESSED +JESSES +JESSING +JEST +JESTED +JESTER +JESTERS +JESTFUL +JESTING +JESTINGLY +JESTINGS +JESTS +JESUIT +JESUITIC +JESUITICAL +JESUITICALLY +JESUITISM +JESUITISMS +JESUITRIES +JESUITRY +JESUITS +JET +JETBEAD +JETBEADS +JETE +JETES +JETFOIL +JETFOILS +JETLAG +JETLAGS +JETLIKE +JETLINER +JETLINERS +JETON +JETONS +JETPORT +JETPORTS +JETS +JETSAM +JETSAMS +JETSOM +JETSOMS +JETSTREAM +JETSTREAMS +JETTED +JETTIED +JETTIER +JETTIES +JETTIEST +JETTINESS +JETTINESSES +JETTING +JETTISON +JETTISONABLE +JETTISONED +JETTISONING +JETTISONS +JETTON +JETTONS +JETTY +JETTYING +JETWAY +JETWAYS +JEU +JEUX +JEW +JEWED +JEWEL +JEWELED +JEWELER +JEWELERS +JEWELFISH +JEWELFISHES +JEWELING +JEWELLED +JEWELLER +JEWELLERIES +JEWELLERS +JEWELLERY +JEWELLIKE +JEWELLING +JEWELRIES +JEWELRY +JEWELS +JEWELWEED +JEWELWEEDS +JEWFISH +JEWFISHES +JEWING +JEWS +JEZAIL +JEZAILS +JEZEBEL +JEZEBELS +JIAO +JIB +JIBB +JIBBED +JIBBER +JIBBERS +JIBBING +JIBBOOM +JIBBOOMS +JIBBS +JIBE +JIBED +JIBER +JIBERS +JIBES +JIBING +JIBINGLY +JIBS +JICAMA +JICAMAS +JIFF +JIFFIES +JIFFS +JIFFY +JIG +JIGABOO +JIGABOOS +JIGGED +JIGGER +JIGGERED +JIGGERING +JIGGERS +JIGGIER +JIGGIEST +JIGGING +JIGGISH +JIGGLE +JIGGLED +JIGGLES +JIGGLIER +JIGGLIEST +JIGGLING +JIGGLY +JIGGY +JIGLIKE +JIGS +JIGSAW +JIGSAWED +JIGSAWING +JIGSAWN +JIGSAWS +JIHAD +JIHADS +JILL +JILLION +JILLIONS +JILLS +JILT +JILTED +JILTER +JILTERS +JILTING +JILTS +JIMINY +JIMJAMS +JIMMIE +JIMMIED +JIMMIES +JIMMINY +JIMMY +JIMMYING +JIMP +JIMPER +JIMPEST +JIMPLY +JIMPY +JIMSONWEED +JIMSONWEEDS +JIN +JINGAL +JINGALL +JINGALLS +JINGALS +JINGKO +JINGKOES +JINGLE +JINGLED +JINGLER +JINGLERS +JINGLES +JINGLIER +JINGLIEST +JINGLING +JINGLY +JINGO +JINGOES +JINGOISH +JINGOISM +JINGOISMS +JINGOIST +JINGOISTIC +JINGOISTICALLY +JINGOISTS +JINK +JINKED +JINKER +JINKERS +JINKING +JINKS +JINN +JINNEE +JINNI +JINNIS +JINNS +JINRICKSHA +JINRICKSHAS +JINRIKISHA +JINRIKISHAS +JINRIKSHA +JINRIKSHAS +JINS +JINX +JINXED +JINXES +JINXING +JIPIJAPA +JIPIJAPAS +JISM +JISMS +JITNEY +JITNEYS +JITTER +JITTERBUG +JITTERBUGGED +JITTERBUGGING +JITTERBUGS +JITTERED +JITTERIER +JITTERIEST +JITTERINESS +JITTERINESSES +JITTERING +JITTERS +JITTERY +JIUJITSU +JIUJITSUS +JIUJUTSU +JIUJUTSUS +JIVE +JIVEASS +JIVED +JIVER +JIVERS +JIVES +JIVEY +JIVIER +JIVIEST +JIVING +JIVY +JNANA +JNANAS +JO +JOANNES +JOB +JOBBED +JOBBER +JOBBERIES +JOBBERS +JOBBERY +JOBBING +JOBHOLDER +JOBHOLDERS +JOBLESS +JOBLESSNESS +JOBLESSNESSES +JOBNAME +JOBNAMES +JOBS +JOCK +JOCKETTE +JOCKETTES +JOCKEY +JOCKEYED +JOCKEYING +JOCKEYISH +JOCKEYS +JOCKO +JOCKOS +JOCKS +JOCKSTRAP +JOCKSTRAPS +JOCOSE +JOCOSELY +JOCOSENESS +JOCOSENESSES +JOCOSITIES +JOCOSITY +JOCULAR +JOCULARITIES +JOCULARITY +JOCULARLY +JOCUND +JOCUNDITIES +JOCUNDITY +JOCUNDLY +JODHPUR +JODHPURS +JOE +JOES +JOEY +JOEYS +JOG +JOGGED +JOGGER +JOGGERS +JOGGING +JOGGINGS +JOGGLE +JOGGLED +JOGGLER +JOGGLERS +JOGGLES +JOGGLING +JOGS +JOHANNES +JOHN +JOHNBOAT +JOHNBOATS +JOHNNIE +JOHNNIES +JOHNNY +JOHNNYCAKE +JOHNNYCAKES +JOHNS +JOHNSON +JOHNSONGRASS +JOHNSONGRASSES +JOHNSONS +JOIN +JOINABLE +JOINDER +JOINDERS +JOINED +JOINER +JOINERIES +JOINERS +JOINERY +JOINING +JOININGS +JOINS +JOINT +JOINTED +JOINTEDLY +JOINTEDNESS +JOINTEDNESSES +JOINTER +JOINTERS +JOINTING +JOINTLESS +JOINTLY +JOINTRESS +JOINTRESSES +JOINTS +JOINTURE +JOINTURED +JOINTURES +JOINTURING +JOINTWEED +JOINTWEEDS +JOINTWORM +JOINTWORMS +JOIST +JOISTED +JOISTING +JOISTS +JOJOBA +JOJOBAS +JOKE +JOKED +JOKER +JOKERS +JOKES +JOKESTER +JOKESTERS +JOKEY +JOKIER +JOKIEST +JOKILY +JOKINESS +JOKINESSES +JOKING +JOKINGLY +JOKY +JOLE +JOLES +JOLLIED +JOLLIER +JOLLIERS +JOLLIES +JOLLIEST +JOLLIFICATION +JOLLIFICATIONS +JOLLIFIED +JOLLIFIES +JOLLIFY +JOLLIFYING +JOLLILY +JOLLINESS +JOLLINESSES +JOLLITIES +JOLLITY +JOLLY +JOLLYBOAT +JOLLYBOATS +JOLLYING +JOLT +JOLTED +JOLTER +JOLTERS +JOLTIER +JOLTIEST +JOLTILY +JOLTING +JOLTINGLY +JOLTS +JOLTY +JOMON +JONES +JONESED +JONESES +JONESING +JONGLEUR +JONGLEURS +JONNYCAKE +JONNYCAKES +JONQUIL +JONQUILS +JORAM +JORAMS +JORDAN +JORDANS +JORUM +JORUMS +JOSEPH +JOSEPHS +JOSH +JOSHED +JOSHER +JOSHERS +JOSHES +JOSHING +JOSHINGLY +JOSS +JOSSES +JOSTLE +JOSTLED +JOSTLER +JOSTLERS +JOSTLES +JOSTLING +JOT +JOTA +JOTAS +JOTS +JOTTED +JOTTER +JOTTERS +JOTTING +JOTTINGS +JOTTY +JOUAL +JOUALS +JOUK +JOUKED +JOUKING +JOUKS +JOULE +JOULES +JOUNCE +JOUNCED +JOUNCES +JOUNCIER +JOUNCIEST +JOUNCING +JOUNCY +JOURNAL +JOURNALED +JOURNALESE +JOURNALESES +JOURNALING +JOURNALISM +JOURNALISMS +JOURNALIST +JOURNALISTIC +JOURNALISTS +JOURNALIZE +JOURNALIZED +JOURNALIZER +JOURNALIZERS +JOURNALIZES +JOURNALIZING +JOURNALS +JOURNEY +JOURNEYED +JOURNEYER +JOURNEYERS +JOURNEYING +JOURNEYMAN +JOURNEYMEN +JOURNEYS +JOURNEYWORK +JOURNEYWORKS +JOURNO +JOURNOS +JOUST +JOUSTED +JOUSTER +JOUSTERS +JOUSTING +JOUSTS +JOVIAL +JOVIALITIES +JOVIALITY +JOVIALLY +JOVIALTIES +JOVIALTY +JOW +JOWAR +JOWARS +JOWED +JOWING +JOWL +JOWLED +JOWLIER +JOWLIEST +JOWLINESS +JOWLINESSES +JOWLS +JOWLY +JOWS +JOY +JOYANCE +JOYANCES +JOYED +JOYFUL +JOYFULLER +JOYFULLEST +JOYFULLY +JOYFULNESS +JOYFULNESSES +JOYING +JOYLESS +JOYLESSLY +JOYLESSNESS +JOYLESSNESSES +JOYOUS +JOYOUSLY +JOYOUSNESS +JOYOUSNESSES +JOYPOP +JOYPOPPED +JOYPOPPER +JOYPOPPERS +JOYPOPPING +JOYPOPS +JOYRIDDEN +JOYRIDE +JOYRIDER +JOYRIDERS +JOYRIDES +JOYRIDING +JOYRIDINGS +JOYRODE +JOYS +JOYSTICK +JOYSTICKS +JUBA +JUBAS +JUBBAH +JUBBAHS +JUBE +JUBES +JUBHAH +JUBHAHS +JUBILANCE +JUBILANCES +JUBILANT +JUBILANTLY +JUBILARIAN +JUBILARIANS +JUBILATE +JUBILATED +JUBILATES +JUBILATING +JUBILATION +JUBILATIONS +JUBILE +JUBILEE +JUBILEES +JUBILES +JUCO +JUCOS +JUDAS +JUDASES +JUDDER +JUDDERED +JUDDERING +JUDDERS +JUDGE +JUDGED +JUDGEMENT +JUDGEMENTS +JUDGER +JUDGERS +JUDGES +JUDGESHIP +JUDGESHIPS +JUDGING +JUDGMATIC +JUDGMATICAL +JUDGMATICALLY +JUDGMENT +JUDGMENTAL +JUDGMENTALLY +JUDGMENTS +JUDICABLE +JUDICATORIES +JUDICATORY +JUDICATURE +JUDICATURES +JUDICIAL +JUDICIALLY +JUDICIARIES +JUDICIARY +JUDICIOUS +JUDICIOUSLY +JUDICIOUSNESS +JUDICIOUSNESSES +JUDO +JUDOIST +JUDOISTS +JUDOKA +JUDOKAS +JUDOS +JUG +JUGA +JUGAL +JUGATE +JUGFUL +JUGFULS +JUGGED +JUGGERNAUT +JUGGERNAUTS +JUGGING +JUGGLE +JUGGLED +JUGGLER +JUGGLERIES +JUGGLERS +JUGGLERY +JUGGLES +JUGGLING +JUGGLINGS +JUGHEAD +JUGHEADS +JUGS +JUGSFUL +JUGULA +JUGULAR +JUGULARS +JUGULATE +JUGULATED +JUGULATES +JUGULATING +JUGULUM +JUGUM +JUGUMS +JUICE +JUICED +JUICEHEAD +JUICEHEADS +JUICELESS +JUICER +JUICERS +JUICES +JUICIER +JUICIEST +JUICILY +JUICINESS +JUICINESSES +JUICING +JUICY +JUJITSU +JUJITSUS +JUJU +JUJUBE +JUJUBES +JUJUISM +JUJUISMS +JUJUIST +JUJUISTS +JUJUS +JUJUTSU +JUJUTSUS +JUKE +JUKEBOX +JUKEBOXES +JUKED +JUKES +JUKING +JUKU +JUKUS +JULEP +JULEPS +JULIENNE +JULIENNED +JULIENNES +JULIENNING +JUMBAL +JUMBALS +JUMBLE +JUMBLED +JUMBLER +JUMBLERS +JUMBLES +JUMBLING +JUMBO +JUMBOS +JUMBUCK +JUMBUCKS +JUMP +JUMPABLE +JUMPED +JUMPER +JUMPERS +JUMPIER +JUMPIEST +JUMPILY +JUMPINESS +JUMPINESSES +JUMPING +JUMPINGLY +JUMPOFF +JUMPOFFS +JUMPS +JUMPSUIT +JUMPSUITS +JUMPY +JUN +JUNCO +JUNCOES +JUNCOS +JUNCTION +JUNCTIONAL +JUNCTIONS +JUNCTURAL +JUNCTURE +JUNCTURES +JUNGLE +JUNGLED +JUNGLEGYM +JUNGLEGYMS +JUNGLELIKE +JUNGLES +JUNGLIER +JUNGLIEST +JUNGLY +JUNIOR +JUNIORATE +JUNIORATES +JUNIORITIES +JUNIORITY +JUNIORS +JUNIPER +JUNIPERS +JUNK +JUNKED +JUNKER +JUNKERS +JUNKET +JUNKETED +JUNKETEER +JUNKETEERED +JUNKETEERING +JUNKETEERS +JUNKETER +JUNKETERS +JUNKETING +JUNKETS +JUNKIE +JUNKIER +JUNKIES +JUNKIEST +JUNKING +JUNKMAN +JUNKMEN +JUNKS +JUNKY +JUNKYARD +JUNKYARDS +JUNTA +JUNTAS +JUNTO +JUNTOS +JUPE +JUPES +JUPON +JUPONS +JURA +JURAL +JURALLY +JURANT +JURANTS +JURASSIC +JURAT +JURATORY +JURATS +JUREL +JURELS +JURIDIC +JURIDICAL +JURIDICALLY +JURIED +JURIES +JURISCONSULT +JURISCONSULTS +JURISDICTION +JURISDICTIONAL +JURISDICTIONS +JURISPRUDENCE +JURISPRUDENCES +JURISPRUDENT +JURISPRUDENTIAL +JURISPRUDENTS +JURIST +JURISTIC +JURISTICALLY +JURISTS +JUROR +JURORS +JURY +JURYING +JURYLESS +JURYMAN +JURYMEN +JURYWOMAN +JURYWOMEN +JUS +JUSSIVE +JUSSIVES +JUST +JUSTED +JUSTER +JUSTERS +JUSTEST +JUSTICE +JUSTICES +JUSTICIABILITY +JUSTICIABLE +JUSTICIAR +JUSTICIARS +JUSTIFIABILITY +JUSTIFIABLE +JUSTIFIABLY +JUSTIFICATION +JUSTIFICATIONS +JUSTIFICATIVE +JUSTIFICATORY +JUSTIFIED +JUSTIFIER +JUSTIFIERS +JUSTIFIES +JUSTIFY +JUSTIFYING +JUSTING +JUSTLE +JUSTLED +JUSTLES +JUSTLING +JUSTLY +JUSTNESS +JUSTNESSES +JUSTS +JUT +JUTE +JUTELIKE +JUTES +JUTS +JUTTED +JUTTIED +JUTTIES +JUTTING +JUTTINGLY +JUTTY +JUTTYING +JUVENAL +JUVENALS +JUVENESCENCE +JUVENESCENCES +JUVENESCENT +JUVENILE +JUVENILES +JUVENILIA +JUVENILITIES +JUVENILITY +JUXTAPOSE +JUXTAPOSED +JUXTAPOSES +JUXTAPOSING +JUXTAPOSITION +JUXTAPOSITIONAL +JUXTAPOSITIONS +KA +KAAS +KAB +KABAB +KABABS +KABAKA +KABAKAS +KABALA +KABALAS +KABALISM +KABALISMS +KABALIST +KABALISTS +KABAR +KABARS +KABAYA +KABAYAS +KABBALA +KABBALAH +KABBALAHS +KABBALAS +KABBALISM +KABBALISMS +KABBALIST +KABBALISTS +KABELJOU +KABELJOUS +KABIKI +KABIKIS +KABOB +KABOBS +KABS +KABUKI +KABUKIS +KACHINA +KACHINAS +KADDISH +KADDISHES +KADDISHIM +KADI +KADIS +KAE +KAES +KAF +KAFFEEKLATSCH +KAFFEEKLATSCHES +KAFFIR +KAFFIRS +KAFFIYAH +KAFFIYAHS +KAFFIYEH +KAFFIYEHS +KAFIR +KAFIRS +KAFS +KAFTAN +KAFTANS +KAGU +KAGUS +KAHUNA +KAHUNAS +KAIAK +KAIAKS +KAIF +KAIFS +KAIL +KAILS +KAILYARD +KAILYARDS +KAIN +KAINIT +KAINITE +KAINITES +KAINITS +KAINS +KAIROMONE +KAIROMONES +KAISER +KAISERDOM +KAISERDOMS +KAISERIN +KAISERINS +KAISERISM +KAISERISMS +KAISERS +KAJEPUT +KAJEPUTS +KAKA +KAKAPO +KAKAPOS +KAKAS +KAKEMONO +KAKEMONOS +KAKI +KAKIEMON +KAKIEMONS +KAKIS +KALAM +KALAMATA +KALAMATAS +KALAMS +KALANCHOE +KALANCHOES +KALE +KALEIDOSCOPE +KALEIDOSCOPES +KALEIDOSCOPIC +KALENDS +KALES +KALEWIFE +KALEWIVES +KALEYARD +KALEYARDS +KALIAN +KALIANS +KALIF +KALIFATE +KALIFATES +KALIFS +KALIMBA +KALIMBAS +KALIPH +KALIPHATE +KALIPHATES +KALIPHS +KALIUM +KALIUMS +KALLIDIN +KALLIDINS +KALLIKREIN +KALLIKREINS +KALMIA +KALMIAS +KALONG +KALONGS +KALPA +KALPAC +KALPACS +KALPAK +KALPAKS +KALPAS +KALSOMINE +KALSOMINED +KALSOMINES +KALSOMINING +KALYPTRA +KALYPTRAS +KAMAAINA +KAMAAINAS +KAMACITE +KAMACITES +KAMALA +KAMALAS +KAME +KAMES +KAMI +KAMIK +KAMIKAZE +KAMIKAZES +KAMIKS +KAMPONG +KAMPONGS +KAMSEEN +KAMSEENS +KAMSIN +KAMSINS +KANA +KANAKA +KANAKAS +KANAMYCIN +KANAMYCINS +KANAS +KANBAN +KANBANS +KANE +KANES +KANGAROO +KANGAROOS +KANJI +KANJIS +KANTAR +KANTARS +KANTELE +KANTELES +KANZU +KANZUS +KAOLIANG +KAOLIANGS +KAOLIN +KAOLINE +KAOLINES +KAOLINIC +KAOLINITE +KAOLINITES +KAOLINITIC +KAOLINS +KAON +KAONIC +KAONS +KAPA +KAPAS +KAPELLMEISTER +KAPELLMEISTERS +KAPH +KAPHS +KAPOK +KAPOKS +KAPPA +KAPPAS +KAPUT +KAPUTT +KARABINER +KARABINERS +KARAKUL +KARAKULS +KARAOKE +KARAOKES +KARAT +KARATE +KARATEIST +KARATEISTS +KARATES +KARATS +KARMA +KARMAS +KARMIC +KARN +KARNS +KAROO +KAROOS +KAROSS +KAROSSES +KARROO +KARROOS +KARST +KARSTIC +KARSTS +KART +KARTING +KARTINGS +KARTS +KARYOGAMIES +KARYOGAMY +KARYOKINESES +KARYOKINESIS +KARYOKINETIC +KARYOLOGIC +KARYOLOGICAL +KARYOLOGIES +KARYOLOGY +KARYOLYMPH +KARYOLYMPHS +KARYOSOME +KARYOSOMES +KARYOTIN +KARYOTINS +KARYOTYPE +KARYOTYPED +KARYOTYPES +KARYOTYPIC +KARYOTYPICALLY +KARYOTYPING +KAS +KASBAH +KASBAHS +KASHA +KASHAS +KASHER +KASHERED +KASHERING +KASHERS +KASHMIR +KASHMIRS +KASHRUT +KASHRUTH +KASHRUTHS +KASHRUTS +KAT +KATA +KATABATIC +KATAKANA +KATAKANAS +KATAS +KATCHINA +KATCHINAS +KATCINA +KATCINAS +KATHARSES +KATHARSIS +KATHODAL +KATHODE +KATHODES +KATHODIC +KATION +KATIONS +KATS +KATSURA +KATSURAS +KATYDID +KATYDIDS +KATZENJAMMER +KATZENJAMMERS +KAURI +KAURIES +KAURIS +KAURY +KAVA +KAVAKAVA +KAVAKAVAS +KAVAS +KAVASS +KAVASSES +KAY +KAYAK +KAYAKED +KAYAKER +KAYAKERS +KAYAKING +KAYAKINGS +KAYAKS +KAYLES +KAYO +KAYOED +KAYOES +KAYOING +KAYOS +KAYS +KAZACHKI +KAZACHOK +KAZATSKI +KAZATSKIES +KAZATSKY +KAZILLION +KAZILLIONS +KAZOO +KAZOOS +KBAR +KBARS +KEA +KEAS +KEBAB +KEBABS +KEBAR +KEBARS +KEBBIE +KEBBIES +KEBBOCK +KEBBOCKS +KEBBUCK +KEBBUCKS +KEBLAH +KEBLAHS +KEBOB +KEBOBS +KECK +KECKED +KECKING +KECKLE +KECKLED +KECKLES +KECKLING +KECKS +KEDDAH +KEDDAHS +KEDGE +KEDGED +KEDGEREE +KEDGEREES +KEDGES +KEDGING +KEEF +KEEFS +KEEK +KEEKED +KEEKING +KEEKS +KEEL +KEELAGE +KEELAGES +KEELBOAT +KEELBOATS +KEELED +KEELHALE +KEELHALED +KEELHALES +KEELHALING +KEELHAUL +KEELHAULED +KEELHAULING +KEELHAULS +KEELING +KEELLESS +KEELS +KEELSON +KEELSONS +KEEN +KEENED +KEENER +KEENERS +KEENEST +KEENING +KEENLY +KEENNESS +KEENNESSES +KEENS +KEEP +KEEPABLE +KEEPER +KEEPERS +KEEPING +KEEPINGS +KEEPS +KEEPSAKE +KEEPSAKES +KEESHOND +KEESHONDEN +KEESHONDS +KEESTER +KEESTERS +KEET +KEETS +KEEVE +KEEVES +KEF +KEFFIYAH +KEFFIYAHS +KEFFIYEH +KEFFIYEHS +KEFIR +KEFIRS +KEFS +KEG +KEGELER +KEGELERS +KEGGED +KEGGER +KEGGERS +KEGGING +KEGLER +KEGLERS +KEGLING +KEGLINGS +KEGS +KEIR +KEIRETSU +KEIRETSUS +KEIRS +KEISTER +KEISTERS +KEITLOA +KEITLOAS +KELEP +KELEPS +KELIM +KELIMS +KELLIES +KELLY +KELOID +KELOIDAL +KELOIDS +KELP +KELPED +KELPIE +KELPIES +KELPING +KELPS +KELPY +KELSON +KELSONS +KELT +KELTER +KELTERS +KELTS +KELVIN +KELVINS +KEMP +KEMPS +KEMPT +KEN +KENAF +KENAFS +KENCH +KENCHES +KENDO +KENDOS +KENNED +KENNEL +KENNELED +KENNELING +KENNELLED +KENNELLING +KENNELS +KENNING +KENNINGS +KENO +KENOS +KENOSIS +KENOSISES +KENOTIC +KENOTRON +KENOTRONS +KENS +KENSPECKLE +KENT +KENTE +KENTES +KENTLEDGE +KENTLEDGES +KEP +KEPHALIN +KEPHALINS +KEPI +KEPIS +KEPPED +KEPPEN +KEPPING +KEPS +KEPT +KERAMIC +KERAMICS +KERATIN +KERATINIZATION +KERATINIZATIONS +KERATINIZE +KERATINIZED +KERATINIZES +KERATINIZING +KERATINOPHILIC +KERATINOUS +KERATINS +KERATITIDES +KERATITIS +KERATITISES +KERATOID +KERATOMA +KERATOMAS +KERATOMATA +KERATOPLASTIES +KERATOPLASTY +KERATOSE +KERATOSES +KERATOSIC +KERATOSIS +KERATOTIC +KERB +KERBED +KERBING +KERBS +KERCHIEF +KERCHIEFED +KERCHIEFS +KERCHIEVES +KERCHOO +KERF +KERFED +KERFING +KERFLOOEY +KERFS +KERFUFFLE +KERFUFFLES +KERMES +KERMESS +KERMESSE +KERMESSES +KERMIS +KERMISES +KERN +KERNE +KERNED +KERNEL +KERNELED +KERNELING +KERNELLED +KERNELLING +KERNELLY +KERNELS +KERNES +KERNING +KERNITE +KERNITES +KERNS +KEROGEN +KEROGENS +KEROSENE +KEROSENES +KEROSINE +KEROSINES +KERPLUNK +KERPLUNKED +KERPLUNKING +KERPLUNKS +KERRIA +KERRIAS +KERRIES +KERRY +KERSEY +KERSEYMERE +KERSEYMERES +KERSEYS +KERYGMA +KERYGMAS +KERYGMATA +KERYGMATIC +KESTREL +KESTRELS +KETAMINE +KETAMINES +KETCH +KETCHES +KETCHUP +KETCHUPS +KETENE +KETENES +KETO +KETOGENESES +KETOGENESIS +KETOGENIC +KETOL +KETOLS +KETONE +KETONEMIA +KETONEMIAS +KETONES +KETONIC +KETONURIA +KETONURIAS +KETOSE +KETOSES +KETOSIS +KETOSTEROID +KETOSTEROIDS +KETOTIC +KETTLE +KETTLEDRUM +KETTLEDRUMS +KETTLES +KEVEL +KEVELS +KEVIL +KEVILS +KEWPIE +KEWPIES +KEX +KEXES +KEY +KEYBOARD +KEYBOARDED +KEYBOARDER +KEYBOARDERS +KEYBOARDING +KEYBOARDIST +KEYBOARDISTS +KEYBOARDS +KEYBUTTON +KEYBUTTONS +KEYCARD +KEYCARDS +KEYED +KEYHOLE +KEYHOLES +KEYING +KEYLESS +KEYNOTE +KEYNOTED +KEYNOTER +KEYNOTERS +KEYNOTES +KEYNOTING +KEYPAD +KEYPADS +KEYPAL +KEYPALS +KEYPUNCH +KEYPUNCHED +KEYPUNCHER +KEYPUNCHERS +KEYPUNCHES +KEYPUNCHING +KEYS +KEYSET +KEYSETS +KEYSTER +KEYSTERS +KEYSTONE +KEYSTONES +KEYSTROKE +KEYSTROKED +KEYSTROKES +KEYSTROKING +KEYWAY +KEYWAYS +KEYWORD +KEYWORDS +KHADDAR +KHADDARS +KHADI +KHADIS +KHAF +KHAFS +KHAKI +KHAKILIKE +KHAKIS +KHALIF +KHALIFA +KHALIFAS +KHALIFATE +KHALIFATES +KHALIFS +KHAMSEEN +KHAMSEENS +KHAMSIN +KHAMSINS +KHAN +KHANATE +KHANATES +KHANS +KHAPH +KHAPHS +KHAT +KHATS +KHAZEN +KHAZENIM +KHAZENS +KHEDA +KHEDAH +KHEDAHS +KHEDAS +KHEDIVAL +KHEDIVE +KHEDIVES +KHEDIVIAL +KHET +KHETH +KHETHS +KHETS +KHI +KHIRKAH +KHIRKAHS +KHIS +KHOUM +KHOUMS +KI +KIANG +KIANGS +KIAUGH +KIAUGHS +KIBBE +KIBBEH +KIBBEHS +KIBBES +KIBBI +KIBBIS +KIBBITZ +KIBBITZED +KIBBITZER +KIBBITZERS +KIBBITZES +KIBBITZING +KIBBLE +KIBBLED +KIBBLES +KIBBLING +KIBBUTZ +KIBBUTZIM +KIBBUTZNIK +KIBBUTZNIKS +KIBE +KIBEI +KIBEIS +KIBES +KIBITZ +KIBITZED +KIBITZER +KIBITZERS +KIBITZES +KIBITZING +KIBLA +KIBLAH +KIBLAHS +KIBLAS +KIBOSH +KIBOSHED +KIBOSHES +KIBOSHING +KICK +KICKABLE +KICKBACK +KICKBACKS +KICKBALL +KICKBALLS +KICKBOARD +KICKBOARDS +KICKBOX +KICKBOXED +KICKBOXER +KICKBOXERS +KICKBOXES +KICKBOXING +KICKBOXINGS +KICKED +KICKER +KICKERS +KICKIER +KICKIEST +KICKING +KICKOFF +KICKOFFS +KICKS +KICKSHAW +KICKSHAWS +KICKSTAND +KICKSTANDS +KICKSTART +KICKSTARTED +KICKSTARTING +KICKSTARTS +KICKUP +KICKUPS +KICKY +KID +KIDDED +KIDDER +KIDDERS +KIDDIE +KIDDIES +KIDDING +KIDDINGLY +KIDDISH +KIDDO +KIDDOES +KIDDOS +KIDDUSH +KIDDUSHES +KIDDY +KIDLIKE +KIDNAP +KIDNAPED +KIDNAPEE +KIDNAPEES +KIDNAPER +KIDNAPERS +KIDNAPING +KIDNAPPED +KIDNAPPEE +KIDNAPPEES +KIDNAPPER +KIDNAPPERS +KIDNAPPING +KIDNAPS +KIDNEY +KIDNEYS +KIDS +KIDSKIN +KIDSKINS +KIDVID +KIDVIDS +KIEF +KIEFS +KIELBASA +KIELBASAS +KIELBASI +KIELBASY +KIER +KIERS +KIESELGUHR +KIESELGUHRS +KIESELGUR +KIESELGURS +KIESERITE +KIESERITES +KIESTER +KIESTERS +KIF +KIFS +KIKE +KIKES +KILDERKIN +KILDERKINS +KILIM +KILIMS +KILL +KILLABLE +KILLDEE +KILLDEER +KILLDEERS +KILLDEES +KILLED +KILLER +KILLERS +KILLICK +KILLICKS +KILLIE +KILLIES +KILLIFISH +KILLIFISHES +KILLING +KILLINGLY +KILLINGS +KILLJOY +KILLJOYS +KILLOCK +KILLOCKS +KILLS +KILN +KILNED +KILNING +KILNS +KILO +KILOBAR +KILOBARS +KILOBASE +KILOBASES +KILOBAUD +KILOBAUDS +KILOBIT +KILOBITS +KILOBYTE +KILOBYTES +KILOCALORIE +KILOCALORIES +KILOCURIE +KILOCURIES +KILOCYCLE +KILOCYCLES +KILOGAUSS +KILOGAUSSES +KILOGRAM +KILOGRAMS +KILOHERTZ +KILOHERTZES +KILOJOULE +KILOJOULES +KILOLITER +KILOLITERS +KILOLITRE +KILOLITRES +KILOMETER +KILOMETERS +KILOMETRE +KILOMETRES +KILOMOLE +KILOMOLES +KILOPARSEC +KILOPARSECS +KILOPASCAL +KILOPASCALS +KILORAD +KILORADS +KILOS +KILOTON +KILOTONS +KILOVOLT +KILOVOLTS +KILOWATT +KILOWATTS +KILT +KILTED +KILTER +KILTERS +KILTIE +KILTIES +KILTING +KILTINGS +KILTLIKE +KILTS +KILTY +KIMBERLITE +KIMBERLITES +KIMCHEE +KIMCHEES +KIMCHI +KIMCHIS +KIMONO +KIMONOED +KIMONOS +KIN +KINA +KINARA +KINARAS +KINAS +KINASE +KINASES +KIND +KINDER +KINDERGARTEN +KINDERGARTENER +KINDERGARTENERS +KINDERGARTENS +KINDERGARTNER +KINDERGARTNERS +KINDEST +KINDHEARTED +KINDHEARTEDLY +KINDHEARTEDNESS +KINDLE +KINDLED +KINDLER +KINDLERS +KINDLES +KINDLESS +KINDLESSLY +KINDLIER +KINDLIEST +KINDLINESS +KINDLINESSES +KINDLING +KINDLINGS +KINDLY +KINDNESS +KINDNESSES +KINDRED +KINDREDS +KINDS +KINE +KINEMA +KINEMAS +KINEMATIC +KINEMATICAL +KINEMATICALLY +KINEMATICS +KINES +KINESCOPE +KINESCOPED +KINESCOPES +KINESCOPING +KINESES +KINESIC +KINESICS +KINESIOLOGIES +KINESIOLOGY +KINESIS +KINESTHESES +KINESTHESIA +KINESTHESIAS +KINESTHESIS +KINESTHETIC +KINESTHETICALLY +KINETIC +KINETICALLY +KINETICIST +KINETICISTS +KINETICS +KINETIN +KINETINS +KINETOCHORE +KINETOCHORES +KINETOPLAST +KINETOPLASTS +KINETOSCOPE +KINETOSCOPES +KINETOSOME +KINETOSOMES +KINFOLK +KINFOLKS +KING +KINGBIRD +KINGBIRDS +KINGBOLT +KINGBOLTS +KINGCRAFT +KINGCRAFTS +KINGCUP +KINGCUPS +KINGDOM +KINGDOMS +KINGED +KINGFISH +KINGFISHER +KINGFISHERS +KINGFISHES +KINGHOOD +KINGHOODS +KINGING +KINGLESS +KINGLET +KINGLETS +KINGLIER +KINGLIEST +KINGLIKE +KINGLINESS +KINGLINESSES +KINGLY +KINGMAKER +KINGMAKERS +KINGPIN +KINGPINS +KINGPOST +KINGPOSTS +KINGS +KINGSHIP +KINGSHIPS +KINGSIDE +KINGSIDES +KINGSNAKE +KINGSNAKES +KINGWOOD +KINGWOODS +KININ +KININS +KINK +KINKAJOU +KINKAJOUS +KINKED +KINKIER +KINKIEST +KINKILY +KINKINESS +KINKINESSES +KINKING +KINKS +KINKY +KINLESS +KINNIKINNICK +KINNIKINNICKS +KINO +KINOS +KINS +KINSFOLK +KINSHIP +KINSHIPS +KINSMAN +KINSMEN +KINSWOMAN +KINSWOMEN +KIOSK +KIOSKS +KIP +KIPPED +KIPPEN +KIPPER +KIPPERED +KIPPERER +KIPPERERS +KIPPERING +KIPPERS +KIPPING +KIPS +KIPSKIN +KIPSKINS +KIR +KIRIGAMI +KIRIGAMIS +KIRK +KIRKMAN +KIRKMEN +KIRKS +KIRMESS +KIRMESSES +KIRN +KIRNED +KIRNING +KIRNS +KIRS +KIRSCH +KIRSCHES +KIRTLE +KIRTLED +KIRTLES +KIS +KISHKA +KISHKAS +KISHKE +KISHKES +KISMAT +KISMATS +KISMET +KISMETIC +KISMETS +KISS +KISSABLE +KISSABLY +KISSED +KISSER +KISSERS +KISSES +KISSING +KISSY +KIST +KISTFUL +KISTFULS +KISTS +KIT +KITBAG +KITBAGS +KITCHEN +KITCHENET +KITCHENETS +KITCHENETTE +KITCHENETTES +KITCHENS +KITCHENWARE +KITCHENWARES +KITE +KITED +KITELIKE +KITER +KITERS +KITES +KITH +KITHARA +KITHARAS +KITHE +KITHED +KITHES +KITHING +KITHS +KITING +KITLING +KITLINGS +KITS +KITSCH +KITSCHES +KITSCHIFIED +KITSCHIFIES +KITSCHIFY +KITSCHIFYING +KITSCHY +KITTED +KITTEL +KITTEN +KITTENED +KITTENING +KITTENISH +KITTENISHLY +KITTENISHNESS +KITTENISHNESSES +KITTENS +KITTIES +KITTING +KITTIWAKE +KITTIWAKES +KITTLE +KITTLED +KITTLER +KITTLES +KITTLEST +KITTLING +KITTY +KIVA +KIVAS +KIWI +KIWIFRUIT +KIWIFRUITS +KIWIS +KLATCH +KLATCHES +KLATSCH +KLATSCHES +KLAVERN +KLAVERNS +KLAXON +KLAXONS +KLEAGLE +KLEAGLES +KLEBSIELLA +KLEBSIELLAS +KLEENEX +KLEENEXES +KLEPHT +KLEPHTIC +KLEPHTS +KLEPTO +KLEPTOMANIA +KLEPTOMANIAC +KLEPTOMANIACS +KLEPTOMANIAS +KLEPTOS +KLEZMER +KLEZMERS +KLEZMORIM +KLICK +KLICKS +KLIK +KLIKS +KLISTER +KLISTERS +KLONDIKE +KLONDIKES +KLONG +KLONGS +KLOOF +KLOOFS +KLUDGE +KLUDGED +KLUDGES +KLUDGEY +KLUDGIER +KLUDGIEST +KLUDGING +KLUDGY +KLUGE +KLUGED +KLUGES +KLUGING +KLUTZ +KLUTZES +KLUTZIER +KLUTZIEST +KLUTZINESS +KLUTZINESSES +KLUTZY +KLYSTRON +KLYSTRONS +KNACK +KNACKED +KNACKER +KNACKERED +KNACKERIES +KNACKERS +KNACKERY +KNACKING +KNACKS +KNACKWURST +KNACKWURSTS +KNAP +KNAPPED +KNAPPER +KNAPPERS +KNAPPING +KNAPS +KNAPSACK +KNAPSACKED +KNAPSACKS +KNAPWEED +KNAPWEEDS +KNAR +KNARRED +KNARRY +KNARS +KNAUR +KNAURS +KNAVE +KNAVERIES +KNAVERY +KNAVES +KNAVISH +KNAVISHLY +KNAWE +KNAWEL +KNAWELS +KNAWES +KNEAD +KNEADABLE +KNEADED +KNEADER +KNEADERS +KNEADING +KNEADS +KNEE +KNEECAP +KNEECAPPED +KNEECAPPING +KNEECAPPINGS +KNEECAPS +KNEED +KNEEHOLE +KNEEHOLES +KNEEING +KNEEL +KNEELED +KNEELER +KNEELERS +KNEELING +KNEELS +KNEEPAD +KNEEPADS +KNEEPAN +KNEEPANS +KNEEPIECE +KNEEPIECES +KNEES +KNEESIES +KNEESOCK +KNEESOCKS +KNELL +KNELLED +KNELLING +KNELLS +KNELT +KNESSET +KNESSETS +KNEW +KNICKERBOCKER +KNICKERBOCKERS +KNICKERS +KNICKKNACK +KNICKKNACKS +KNIFE +KNIFED +KNIFELIKE +KNIFEPOINT +KNIFEPOINTS +KNIFER +KNIFERS +KNIFES +KNIFING +KNIGHT +KNIGHTED +KNIGHTHOOD +KNIGHTHOODS +KNIGHTING +KNIGHTLINESS +KNIGHTLINESSES +KNIGHTLY +KNIGHTS +KNISH +KNISHES +KNIT +KNITS +KNITTABLE +KNITTED +KNITTER +KNITTERS +KNITTING +KNITTINGS +KNITWEAR +KNIVES +KNOB +KNOBBED +KNOBBIER +KNOBBIEST +KNOBBLIER +KNOBBLIEST +KNOBBLY +KNOBBY +KNOBKERRIE +KNOBKERRIES +KNOBLIKE +KNOBS +KNOCK +KNOCKABOUT +KNOCKABOUTS +KNOCKDOWN +KNOCKDOWNS +KNOCKED +KNOCKER +KNOCKERS +KNOCKING +KNOCKLESS +KNOCKOFF +KNOCKOFFS +KNOCKOUT +KNOCKOUTS +KNOCKS +KNOCKWURST +KNOCKWURSTS +KNOLL +KNOLLED +KNOLLER +KNOLLERS +KNOLLING +KNOLLS +KNOLLY +KNOP +KNOPPED +KNOPS +KNOSP +KNOSPS +KNOT +KNOTGRASS +KNOTGRASSES +KNOTHOLE +KNOTHOLES +KNOTLESS +KNOTLIKE +KNOTS +KNOTTED +KNOTTER +KNOTTERS +KNOTTIER +KNOTTIEST +KNOTTILY +KNOTTINESS +KNOTTINESSES +KNOTTING +KNOTTINGS +KNOTTY +KNOTWEED +KNOTWEEDS +KNOUT +KNOUTED +KNOUTING +KNOUTS +KNOW +KNOWABLE +KNOWER +KNOWERS +KNOWING +KNOWINGER +KNOWINGEST +KNOWINGLY +KNOWINGNESS +KNOWINGNESSES +KNOWINGS +KNOWLEDGE +KNOWLEDGEABLE +KNOWLEDGEABLY +KNOWLEDGES +KNOWN +KNOWNS +KNOWS +KNUBBIER +KNUBBIEST +KNUBBY +KNUCKLE +KNUCKLEBALL +KNUCKLEBALLER +KNUCKLEBALLERS +KNUCKLEBALLS +KNUCKLEBONE +KNUCKLEBONES +KNUCKLED +KNUCKLEHEAD +KNUCKLEHEADED +KNUCKLEHEADS +KNUCKLER +KNUCKLERS +KNUCKLES +KNUCKLIER +KNUCKLIEST +KNUCKLING +KNUCKLY +KNUR +KNURL +KNURLED +KNURLIER +KNURLIEST +KNURLING +KNURLS +KNURLY +KNURS +KOA +KOALA +KOALAS +KOAN +KOANS +KOAS +KOB +KOBO +KOBOLD +KOBOLDS +KOBOS +KOBS +KOEL +KOELS +KOHL +KOHLRABI +KOHLRABIES +KOHLS +KOI +KOINE +KOINES +KOIS +KOJI +KOJIS +KOKANEE +KOKANEES +KOLA +KOLACKY +KOLAS +KOLBASI +KOLBASIS +KOLBASSI +KOLBASSIS +KOLHOZ +KOLHOZES +KOLHOZY +KOLINSKI +KOLINSKIES +KOLINSKY +KOLKHOS +KOLKHOSES +KOLKHOSY +KOLKHOZ +KOLKHOZES +KOLKHOZNIK +KOLKHOZNIKI +KOLKHOZNIKS +KOLKHOZY +KOLKOZ +KOLKOZES +KOLKOZY +KOLO +KOLOS +KOMATIK +KOMATIKS +KOMBU +KOMBUS +KOMONDOR +KOMONDOROCK +KOMONDOROK +KOMONDORS +KONK +KONKED +KONKING +KONKS +KOODOO +KOODOOS +KOOK +KOOKABURRA +KOOKABURRAS +KOOKIE +KOOKIER +KOOKIEST +KOOKINESS +KOOKINESSES +KOOKS +KOOKY +KOP +KOPECK +KOPECKS +KOPEK +KOPEKS +KOPH +KOPHS +KOPIYKA +KOPIYKAS +KOPJE +KOPJES +KOPPA +KOPPAS +KOPPIE +KOPPIES +KOPS +KOR +KORA +KORAI +KORAS +KORAT +KORATS +KORE +KORMA +KORMAS +KORS +KORUN +KORUNA +KORUNAS +KORUNY +KOS +KOSHER +KOSHERED +KOSHERING +KOSHERS +KOSS +KOTO +KOTOS +KOTOW +KOTOWED +KOTOWER +KOTOWERS +KOTOWING +KOTOWS +KOUMIS +KOUMISES +KOUMISS +KOUMISSES +KOUMYS +KOUMYSES +KOUMYSS +KOUMYSSES +KOUPREY +KOUPREYS +KOUROI +KOUROS +KOUSSO +KOUSSOS +KOWTOW +KOWTOWED +KOWTOWER +KOWTOWERS +KOWTOWING +KOWTOWS +KRAAL +KRAALED +KRAALING +KRAALS +KRAFT +KRAFTS +KRAIT +KRAITS +KRAKEN +KRAKENS +KRATER +KRATERS +KRAUT +KRAUTS +KREEP +KREEPS +KREMLIN +KREMLINOLOGIES +KREMLINOLOGIST +KREMLINOLOGISTS +KREMLINOLOGY +KREMLINS +KREPLACH +KREPLECH +KREUTZER +KREUTZERS +KREUZER +KREUZERS +KREWE +KREWES +KRILL +KRILLS +KRIMMER +KRIMMERS +KRIS +KRISES +KRONA +KRONE +KRONEN +KRONER +KRONOR +KRONUR +KROON +KROONI +KROONS +KRUBI +KRUBIS +KRUBUT +KRUBUTS +KRULLER +KRULLERS +KRUMHORN +KRUMHORNS +KRUMKAKE +KRUMKAKES +KRUMMHOLZ +KRUMMHORN +KRUMMHORNS +KRYOLITE +KRYOLITES +KRYOLITH +KRYOLITHS +KRYPTON +KRYPTONS +KUCHEN +KUCHENS +KUDO +KUDOS +KUDU +KUDUS +KUDZU +KUDZUS +KUE +KUES +KUFI +KUFIS +KUGEL +KUGELS +KUKRI +KUKRIS +KULAK +KULAKI +KULAKS +KULTUR +KULTURS +KUMISS +KUMISSES +KUMMEL +KUMMELS +KUMQUAT +KUMQUATS +KUMYS +KUMYSES +KUNA +KUNDALINI +KUNDALINIS +KUNE +KUNZITE +KUNZITES +KURBASH +KURBASHED +KURBASHES +KURBASHING +KURGAN +KURGANS +KURRAJONG +KURRAJONGS +KURTA +KURTAS +KURTOSES +KURTOSIS +KURTOSISES +KURU +KURUS +KUSSO +KUSSOS +KUVASZ +KUVASZOK +KVAS +KVASES +KVASS +KVASSES +KVELL +KVELLED +KVELLING +KVELLS +KVETCH +KVETCHED +KVETCHER +KVETCHERS +KVETCHES +KVETCHIER +KVETCHIEST +KVETCHING +KVETCHY +KWACHA +KWACHAS +KWANZA +KWANZAS +KWASHIORKOR +KWASHIORKORS +KYACK +KYACKS +KYAK +KYAKS +KYANISE +KYANISED +KYANISES +KYANISING +KYANITE +KYANITES +KYANIZE +KYANIZED +KYANIZES +KYANIZING +KYAR +KYARS +KYAT +KYATS +KYBOSH +KYBOSHED +KYBOSHES +KYBOSHING +KYE +KYES +KYLIKES +KYLIX +KYMOGRAM +KYMOGRAMS +KYMOGRAPH +KYMOGRAPHIC +KYMOGRAPHIES +KYMOGRAPHS +KYMOGRAPHY +KYPHOSES +KYPHOSIS +KYPHOTIC +KYRIE +KYRIES +KYTE +KYTES +KYTHE +KYTHED +KYTHES +KYTHING +LA +LAAGER +LAAGERED +LAAGERING +LAAGERS +LAARI +LAB +LABANOTATION +LABANOTATIONS +LABARA +LABARUM +LABARUMS +LABDANUM +LABDANUMS +LABEL +LABELABLE +LABELED +LABELER +LABELERS +LABELING +LABELLA +LABELLATE +LABELLED +LABELLER +LABELLERS +LABELLING +LABELLOID +LABELLUM +LABELS +LABIA +LABIAL +LABIALITIES +LABIALITY +LABIALIZATION +LABIALIZATIONS +LABIALIZE +LABIALIZED +LABIALIZES +LABIALIZING +LABIALLY +LABIALS +LABIATE +LABIATED +LABIATES +LABILE +LABILITIES +LABILITY +LABIODENTAL +LABIODENTALS +LABIOVELAR +LABIOVELARS +LABIUM +LABOR +LABORATORIES +LABORATORY +LABORED +LABOREDLY +LABORER +LABORERS +LABORING +LABORIOUS +LABORIOUSLY +LABORIOUSNESS +LABORIOUSNESSES +LABORITE +LABORITES +LABORS +LABORSAVING +LABOUR +LABOURED +LABOURER +LABOURERS +LABOURING +LABOURS +LABRA +LABRADOR +LABRADORITE +LABRADORITES +LABRADORS +LABRET +LABRETS +LABROID +LABROIDS +LABRUM +LABRUMS +LABRUSCA +LABS +LABURNUM +LABURNUMS +LABYRINTH +LABYRINTHIAN +LABYRINTHINE +LABYRINTHODONT +LABYRINTHODONTS +LABYRINTHS +LAC +LACCOLITH +LACCOLITHIC +LACCOLITHS +LACE +LACED +LACELESS +LACELIKE +LACER +LACERABLE +LACERATE +LACERATED +LACERATES +LACERATING +LACERATION +LACERATIONS +LACERATIVE +LACERS +LACERTID +LACERTIDS +LACES +LACEWING +LACEWINGS +LACEWOOD +LACEWOODS +LACEWORK +LACEWORKS +LACEY +LACHES +LACHRYMAL +LACHRYMALS +LACHRYMATOR +LACHRYMATORS +LACHRYMOSE +LACHRYMOSELY +LACHRYMOSITIES +LACHRYMOSITY +LACIER +LACIEST +LACILY +LACINESS +LACINESSES +LACING +LACINGS +LACINIATE +LACINIATION +LACINIATIONS +LACK +LACKADAISICAL +LACKADAISICALLY +LACKADAY +LACKED +LACKER +LACKERED +LACKERING +LACKERS +LACKEY +LACKEYED +LACKEYING +LACKEYS +LACKING +LACKLUSTER +LACKLUSTERS +LACKS +LACONIC +LACONICALLY +LACONISM +LACONISMS +LACQUER +LACQUERED +LACQUERER +LACQUERERS +LACQUERING +LACQUERS +LACQUERWARE +LACQUERWARES +LACQUERWORK +LACQUERWORKS +LACQUEY +LACQUEYED +LACQUEYING +LACQUEYS +LACRIMAL +LACRIMALS +LACRIMATION +LACRIMATIONS +LACRIMATOR +LACRIMATORS +LACROSSE +LACROSSES +LACS +LACTALBUMIN +LACTALBUMINS +LACTAM +LACTAMS +LACTARY +LACTASE +LACTASES +LACTATE +LACTATED +LACTATES +LACTATING +LACTATION +LACTATIONAL +LACTATIONS +LACTEAL +LACTEALLY +LACTEALS +LACTEAN +LACTEOUS +LACTIC +LACTIFEROUS +LACTOBACILLI +LACTOBACILLUS +LACTOGENIC +LACTOGLOBULIN +LACTOGLOBULINS +LACTONE +LACTONES +LACTONIC +LACTOSE +LACTOSES +LACUNA +LACUNAE +LACUNAL +LACUNAR +LACUNARIA +LACUNARS +LACUNARY +LACUNAS +LACUNATE +LACUNE +LACUNES +LACUNOSE +LACUSTRINE +LACY +LAD +LADANUM +LADANUMS +LADDER +LADDERED +LADDERING +LADDERLIKE +LADDERS +LADDIE +LADDIES +LADDISH +LADE +LADED +LADEN +LADENED +LADENING +LADENS +LADER +LADERS +LADES +LADHOOD +LADHOODS +LADIES +LADING +LADINGS +LADINO +LADINOS +LADLE +LADLED +LADLEFUL +LADLEFULS +LADLER +LADLERS +LADLES +LADLING +LADRON +LADRONE +LADRONES +LADRONS +LADS +LADY +LADYBIRD +LADYBIRDS +LADYBUG +LADYBUGS +LADYFINGER +LADYFINGERS +LADYFISH +LADYFISHES +LADYHOOD +LADYHOODS +LADYISH +LADYKIN +LADYKINS +LADYLIKE +LADYLOVE +LADYLOVES +LADYPALM +LADYPALMS +LADYSHIP +LADYSHIPS +LAETRILE +LAETRILES +LAEVO +LAG +LAGAN +LAGANS +LAGEND +LAGENDS +LAGER +LAGERED +LAGERING +LAGERS +LAGGARD +LAGGARDLY +LAGGARDNESS +LAGGARDNESSES +LAGGARDS +LAGGED +LAGGER +LAGGERS +LAGGING +LAGGINGS +LAGNAPPE +LAGNAPPES +LAGNIAPPE +LAGNIAPPES +LAGOMORPH +LAGOMORPHS +LAGOON +LAGOONAL +LAGOONS +LAGS +LAGUNA +LAGUNAS +LAGUNE +LAGUNES +LAHAR +LAHARS +LAIC +LAICAL +LAICALLY +LAICH +LAICHS +LAICISE +LAICISED +LAICISES +LAICISING +LAICISM +LAICISMS +LAICIZATION +LAICIZATIONS +LAICIZE +LAICIZED +LAICIZES +LAICIZING +LAICS +LAID +LAIGH +LAIGHS +LAIN +LAIR +LAIRD +LAIRDLY +LAIRDS +LAIRDSHIP +LAIRDSHIPS +LAIRED +LAIRING +LAIRS +LAITANCE +LAITANCES +LAITH +LAITHLY +LAITIES +LAITY +LAKE +LAKEBED +LAKEBEDS +LAKED +LAKEFRONT +LAKEFRONTS +LAKELIKE +LAKEPORT +LAKEPORTS +LAKER +LAKERS +LAKES +LAKESHORE +LAKESHORES +LAKESIDE +LAKESIDES +LAKH +LAKHS +LAKIER +LAKIEST +LAKING +LAKINGS +LAKY +LALIQUE +LALIQUES +LALL +LALLAN +LALLAND +LALLANDS +LALLANS +LALLATION +LALLATIONS +LALLED +LALLING +LALLS +LALLYGAG +LALLYGAGGED +LALLYGAGGING +LALLYGAGS +LAM +LAMA +LAMAS +LAMASERIES +LAMASERY +LAMB +LAMBADA +LAMBADAS +LAMBAST +LAMBASTE +LAMBASTED +LAMBASTES +LAMBASTING +LAMBASTS +LAMBDA +LAMBDAS +LAMBDOID +LAMBED +LAMBENCIES +LAMBENCY +LAMBENT +LAMBENTLY +LAMBER +LAMBERS +LAMBERT +LAMBERTS +LAMBIE +LAMBIER +LAMBIES +LAMBIEST +LAMBING +LAMBKILL +LAMBKILLS +LAMBKIN +LAMBKINS +LAMBLIKE +LAMBREQUIN +LAMBREQUINS +LAMBRUSCO +LAMBRUSCOS +LAMBS +LAMBSKIN +LAMBSKINS +LAMBY +LAME +LAMEBRAIN +LAMEBRAINED +LAMEBRAINS +LAMED +LAMEDH +LAMEDHS +LAMEDS +LAMELLA +LAMELLAE +LAMELLAR +LAMELLAS +LAMELLATE +LAMELLATELY +LAMELLIBRANCH +LAMELLIBRANCHS +LAMELLICORN +LAMELLICORNS +LAMELLIFORM +LAMELLOSE +LAMELY +LAMENESS +LAMENESSES +LAMENT +LAMENTABLE +LAMENTABLENESS +LAMENTABLY +LAMENTATION +LAMENTATIONS +LAMENTED +LAMENTEDLY +LAMENTER +LAMENTERS +LAMENTING +LAMENTS +LAMER +LAMES +LAMEST +LAMIA +LAMIAE +LAMIAS +LAMINA +LAMINABLE +LAMINAE +LAMINAL +LAMINALS +LAMINAR +LAMINARIA +LAMINARIAN +LAMINARIANS +LAMINARIAS +LAMINARIN +LAMINARINS +LAMINARY +LAMINAS +LAMINATE +LAMINATED +LAMINATES +LAMINATING +LAMINATION +LAMINATIONS +LAMINATOR +LAMINATORS +LAMING +LAMININ +LAMININS +LAMINITIS +LAMINITISES +LAMINOSE +LAMINOUS +LAMISTER +LAMISTERS +LAMMED +LAMMERGEIER +LAMMERGEIERS +LAMMERGEYER +LAMMERGEYERS +LAMMING +LAMP +LAMPAD +LAMPADS +LAMPAS +LAMPASES +LAMPBLACK +LAMPBLACKS +LAMPED +LAMPERS +LAMPERSES +LAMPING +LAMPION +LAMPIONS +LAMPLIGHT +LAMPLIGHTER +LAMPLIGHTERS +LAMPLIGHTS +LAMPOON +LAMPOONED +LAMPOONER +LAMPOONERIES +LAMPOONERS +LAMPOONERY +LAMPOONING +LAMPOONS +LAMPPOST +LAMPPOSTS +LAMPREY +LAMPREYS +LAMPS +LAMPSHADE +LAMPSHADES +LAMPSHELL +LAMPSHELLS +LAMPYRID +LAMPYRIDS +LAMS +LAMSTER +LAMSTERS +LANAI +LANAIS +LANATE +LANATED +LANCE +LANCED +LANCELET +LANCELETS +LANCEOLATE +LANCER +LANCERS +LANCES +LANCET +LANCETED +LANCETS +LANCEWOOD +LANCEWOODS +LANCIERS +LANCIFORM +LANCINATE +LANCINATED +LANCINATES +LANCINATING +LANCING +LAND +LANDAU +LANDAULET +LANDAULETS +LANDAUS +LANDED +LANDER +LANDERS +LANDFALL +LANDFALLS +LANDFILL +LANDFILLED +LANDFILLING +LANDFILLS +LANDFORM +LANDFORMS +LANDGRAB +LANDGRABS +LANDGRAVE +LANDGRAVES +LANDHOLDER +LANDHOLDERS +LANDHOLDING +LANDHOLDINGS +LANDING +LANDINGS +LANDLADIES +LANDLADY +LANDLER +LANDLERS +LANDLESS +LANDLESSNESS +LANDLESSNESSES +LANDLINE +LANDLINES +LANDLOCKED +LANDLOPER +LANDLOPERS +LANDLORD +LANDLORDISM +LANDLORDISMS +LANDLORDS +LANDLUBBER +LANDLUBBERLY +LANDLUBBERS +LANDLUBBING +LANDMAN +LANDMARK +LANDMARKED +LANDMARKING +LANDMARKS +LANDMASS +LANDMASSES +LANDMEN +LANDOWNER +LANDOWNERS +LANDOWNERSHIP +LANDOWNERSHIPS +LANDOWNING +LANDOWNINGS +LANDS +LANDSCAPE +LANDSCAPED +LANDSCAPER +LANDSCAPERS +LANDSCAPES +LANDSCAPING +LANDSCAPIST +LANDSCAPISTS +LANDSIDE +LANDSIDES +LANDSKIP +LANDSKIPS +LANDSLEIT +LANDSLID +LANDSLIDDEN +LANDSLIDE +LANDSLIDES +LANDSLIDING +LANDSLIP +LANDSLIPS +LANDSMAN +LANDSMEN +LANDWARD +LANDWARDS +LANE +LANELY +LANES +LANEWAY +LANEWAYS +LANG +LANGBEINITE +LANGBEINITES +LANGLAUF +LANGLAUFER +LANGLAUFERS +LANGLAUFS +LANGLEY +LANGLEYS +LANGOSTINO +LANGOSTINOS +LANGOUSTE +LANGOUSTES +LANGOUSTINE +LANGOUSTINES +LANGRAGE +LANGRAGES +LANGREL +LANGRELS +LANGRIDGE +LANGRIDGES +LANGSHAN +LANGSHANS +LANGSYNE +LANGSYNES +LANGUAGE +LANGUAGES +LANGUE +LANGUES +LANGUET +LANGUETS +LANGUETTE +LANGUETTES +LANGUID +LANGUIDLY +LANGUIDNESS +LANGUIDNESSES +LANGUISH +LANGUISHED +LANGUISHER +LANGUISHERS +LANGUISHES +LANGUISHING +LANGUISHINGLY +LANGUISHMENT +LANGUISHMENTS +LANGUOR +LANGUOROUS +LANGUOROUSLY +LANGUORS +LANGUR +LANGURS +LANIARD +LANIARDS +LANIARIES +LANIARY +LANITAL +LANITALS +LANK +LANKER +LANKEST +LANKIER +LANKIEST +LANKILY +LANKINESS +LANKINESSES +LANKLY +LANKNESS +LANKNESSES +LANKY +LANNER +LANNERET +LANNERETS +LANNERS +LANOLIN +LANOLINE +LANOLINES +LANOLINS +LANOSE +LANOSITIES +LANOSITY +LANTANA +LANTANAS +LANTERN +LANTERNS +LANTHANIDE +LANTHANIDES +LANTHANON +LANTHANONS +LANTHANUM +LANTHANUMS +LANTHORN +LANTHORNS +LANUGINOUS +LANUGO +LANUGOS +LANYARD +LANYARDS +LAOGAI +LAOGAIS +LAP +LAPAROSCOPE +LAPAROSCOPES +LAPAROSCOPIC +LAPAROSCOPIES +LAPAROSCOPIST +LAPAROSCOPISTS +LAPAROSCOPY +LAPAROTOMIES +LAPAROTOMY +LAPBOARD +LAPBOARDS +LAPDOG +LAPDOGS +LAPEL +LAPELED +LAPELLED +LAPELS +LAPFUL +LAPFULS +LAPIDARIAN +LAPIDARIES +LAPIDARY +LAPIDATE +LAPIDATED +LAPIDATES +LAPIDATING +LAPIDES +LAPIDIFIED +LAPIDIFIES +LAPIDIFY +LAPIDIFYING +LAPIDIST +LAPIDISTS +LAPILLI +LAPILLUS +LAPIN +LAPINS +LAPIS +LAPISES +LAPPED +LAPPER +LAPPERED +LAPPERING +LAPPERS +LAPPET +LAPPETED +LAPPETS +LAPPING +LAPS +LAPSABLE +LAPSE +LAPSED +LAPSER +LAPSERS +LAPSES +LAPSIBLE +LAPSING +LAPSTRAKE +LAPSTREAK +LAPSUS +LAPTOP +LAPTOPS +LAPWING +LAPWINGS +LAR +LARBOARD +LARBOARDS +LARCENER +LARCENERS +LARCENIES +LARCENIST +LARCENISTS +LARCENOUS +LARCENOUSLY +LARCENY +LARCH +LARCHEN +LARCHES +LARD +LARDED +LARDER +LARDERS +LARDIER +LARDIEST +LARDING +LARDLIKE +LARDON +LARDONS +LARDOON +LARDOONS +LARDS +LARDY +LAREE +LAREES +LARES +LARGANDO +LARGE +LARGEHEARTED +LARGELY +LARGEMOUTH +LARGEMOUTHS +LARGENESS +LARGENESSES +LARGER +LARGES +LARGESS +LARGESSE +LARGESSES +LARGEST +LARGHETTO +LARGHETTOS +LARGISH +LARGO +LARGOS +LARI +LARIAT +LARIATED +LARIATING +LARIATS +LARINE +LARIS +LARK +LARKED +LARKER +LARKERS +LARKIER +LARKIEST +LARKINESS +LARKINESSES +LARKING +LARKISH +LARKS +LARKSOME +LARKSPUR +LARKSPURS +LARKY +LARRIGAN +LARRIGANS +LARRIKIN +LARRIKINS +LARRUP +LARRUPED +LARRUPER +LARRUPERS +LARRUPING +LARRUPS +LARS +LARUM +LARUMS +LARVA +LARVAE +LARVAL +LARVAS +LARVICIDAL +LARVICIDE +LARVICIDES +LARYNGAL +LARYNGALS +LARYNGEAL +LARYNGEALS +LARYNGECTOMEE +LARYNGECTOMEES +LARYNGECTOMIES +LARYNGECTOMIZED +LARYNGECTOMY +LARYNGES +LARYNGITIC +LARYNGITIS +LARYNGITISES +LARYNGOLOGIES +LARYNGOLOGY +LARYNGOSCOPE +LARYNGOSCOPES +LARYNGOSCOPIES +LARYNGOSCOPY +LARYNX +LARYNXES +LAS +LASAGNA +LASAGNAS +LASAGNE +LASAGNES +LASCAR +LASCARS +LASCIVIOUS +LASCIVIOUSLY +LASCIVIOUSNESS +LASE +LASED +LASER +LASERDISC +LASERDISCS +LASERDISK +LASERDISKS +LASERS +LASES +LASH +LASHED +LASHER +LASHERS +LASHES +LASHING +LASHINGS +LASHINS +LASHKAR +LASHKARS +LASING +LASS +LASSES +LASSI +LASSIE +LASSIES +LASSIS +LASSITUDE +LASSITUDES +LASSO +LASSOED +LASSOER +LASSOERS +LASSOES +LASSOING +LASSOS +LAST +LASTBORN +LASTBORNS +LASTED +LASTER +LASTERS +LASTING +LASTINGLY +LASTINGNESS +LASTINGNESSES +LASTINGS +LASTLY +LASTS +LAT +LATAKIA +LATAKIAS +LATCH +LATCHED +LATCHES +LATCHET +LATCHETS +LATCHING +LATCHKEY +LATCHKEYS +LATCHSTRING +LATCHSTRINGS +LATE +LATECOMER +LATECOMERS +LATED +LATEEN +LATEENER +LATEENERS +LATEENS +LATELY +LATEN +LATENCIES +LATENCY +LATENED +LATENESS +LATENESSES +LATENING +LATENS +LATENSIFICATION +LATENT +LATENTLY +LATENTS +LATER +LATERAD +LATERAL +LATERALED +LATERALING +LATERALIZATION +LATERALIZATIONS +LATERALIZE +LATERALIZED +LATERALIZES +LATERALIZING +LATERALLED +LATERALLING +LATERALLY +LATERALS +LATERBORN +LATERBORNS +LATERITE +LATERITES +LATERITIC +LATERIZATION +LATERIZATIONS +LATERIZE +LATERIZED +LATERIZES +LATERIZING +LATEST +LATESTS +LATEWOOD +LATEWOODS +LATEX +LATEXES +LATH +LATHE +LATHED +LATHER +LATHERED +LATHERER +LATHERERS +LATHERING +LATHERS +LATHERY +LATHES +LATHI +LATHIER +LATHIEST +LATHING +LATHINGS +LATHIS +LATHS +LATHWORK +LATHWORKS +LATHY +LATHYRISM +LATHYRISMS +LATHYRITIC +LATI +LATICES +LATICIFER +LATICIFERS +LATIFUNDIA +LATIFUNDIO +LATIFUNDIOS +LATIFUNDIUM +LATIGO +LATIGOES +LATIGOS +LATILLA +LATILLAS +LATIMERIA +LATIMERIAS +LATINA +LATINAS +LATINITIES +LATINITY +LATINIZATION +LATINIZATIONS +LATINIZE +LATINIZED +LATINIZES +LATINIZING +LATINO +LATINOS +LATISH +LATITUDE +LATITUDES +LATITUDINAL +LATITUDINALLY +LATITUDINARIAN +LATITUDINARIANS +LATKE +LATKES +LATOSOL +LATOSOLIC +LATOSOLS +LATRIA +LATRIAS +LATRINE +LATRINES +LATS +LATTE +LATTEN +LATTENS +LATTER +LATTERLY +LATTES +LATTICE +LATTICED +LATTICES +LATTICEWORK +LATTICEWORKS +LATTICING +LATTICINGS +LATTIN +LATTINS +LATU +LAUAN +LAUANS +LAUD +LAUDABLE +LAUDABLENESS +LAUDABLENESSES +LAUDABLY +LAUDANUM +LAUDANUMS +LAUDATION +LAUDATIONS +LAUDATIVE +LAUDATOR +LAUDATORS +LAUDATORY +LAUDED +LAUDER +LAUDERS +LAUDING +LAUDS +LAUGH +LAUGHABLE +LAUGHABLENESS +LAUGHABLENESSES +LAUGHABLY +LAUGHED +LAUGHER +LAUGHERS +LAUGHING +LAUGHINGLY +LAUGHINGS +LAUGHINGSTOCK +LAUGHINGSTOCKS +LAUGHLINE +LAUGHLINES +LAUGHS +LAUGHTER +LAUGHTERS +LAUNCE +LAUNCES +LAUNCH +LAUNCHED +LAUNCHER +LAUNCHERS +LAUNCHES +LAUNCHING +LAUNCHPAD +LAUNCHPADS +LAUNDER +LAUNDERED +LAUNDERER +LAUNDERERS +LAUNDERETTE +LAUNDERETTES +LAUNDERING +LAUNDERS +LAUNDRESS +LAUNDRESSES +LAUNDRETTE +LAUNDRETTES +LAUNDRIES +LAUNDRY +LAUNDRYMAN +LAUNDRYMEN +LAURA +LAURAE +LAURAS +LAUREATE +LAUREATED +LAUREATES +LAUREATESHIP +LAUREATESHIPS +LAUREATING +LAUREATION +LAUREATIONS +LAUREL +LAURELED +LAURELING +LAURELLED +LAURELLING +LAURELS +LAUWINE +LAUWINES +LAV +LAVA +LAVABO +LAVABOES +LAVABOS +LAVAGE +LAVAGES +LAVALAVA +LAVALAVAS +LAVALIER +LAVALIERE +LAVALIERES +LAVALIERS +LAVALIKE +LAVALLIERE +LAVALLIERES +LAVAS +LAVASH +LAVASHES +LAVATION +LAVATIONS +LAVATORIES +LAVATORY +LAVE +LAVED +LAVEER +LAVEERED +LAVEERING +LAVEERS +LAVENDER +LAVENDERED +LAVENDERING +LAVENDERS +LAVER +LAVEROCK +LAVEROCKS +LAVERS +LAVES +LAVING +LAVISH +LAVISHED +LAVISHER +LAVISHERS +LAVISHES +LAVISHEST +LAVISHING +LAVISHLY +LAVISHNESS +LAVISHNESSES +LAVROCK +LAVROCKS +LAVS +LAW +LAWBOOK +LAWBOOKS +LAWBREAKER +LAWBREAKERS +LAWBREAKING +LAWBREAKINGS +LAWED +LAWFUL +LAWFULLY +LAWFULNESS +LAWFULNESSES +LAWGIVER +LAWGIVERS +LAWGIVING +LAWGIVINGS +LAWINE +LAWINES +LAWING +LAWINGS +LAWLESS +LAWLESSLY +LAWLESSNESS +LAWLESSNESSES +LAWLIKE +LAWMAKER +LAWMAKERS +LAWMAKING +LAWMAKINGS +LAWMAN +LAWMEN +LAWN +LAWNMOWER +LAWNMOWERS +LAWNS +LAWNY +LAWRENCIUM +LAWRENCIUMS +LAWS +LAWSUIT +LAWSUITS +LAWYER +LAWYERED +LAWYERING +LAWYERINGS +LAWYERLIKE +LAWYERLY +LAWYERS +LAX +LAXATION +LAXATIONS +LAXATIVE +LAXATIVES +LAXER +LAXES +LAXEST +LAXITIES +LAXITY +LAXLY +LAXNESS +LAXNESSES +LAY +LAYABOUT +LAYABOUTS +LAYAWAY +LAYAWAYS +LAYED +LAYER +LAYERAGE +LAYERAGES +LAYERED +LAYERING +LAYERINGS +LAYERS +LAYETTE +LAYETTES +LAYIN +LAYING +LAYINS +LAYMAN +LAYMEN +LAYOFF +LAYOFFS +LAYOUT +LAYOUTS +LAYOVER +LAYOVERS +LAYPEOPLE +LAYPERSON +LAYPERSONS +LAYS +LAYUP +LAYUPS +LAYWOMAN +LAYWOMEN +LAZAR +LAZARET +LAZARETS +LAZARETTE +LAZARETTES +LAZARETTO +LAZARETTOS +LAZARS +LAZE +LAZED +LAZES +LAZIED +LAZIER +LAZIES +LAZIEST +LAZILY +LAZINESS +LAZINESSES +LAZING +LAZULI +LAZULIS +LAZULITE +LAZULITES +LAZURITE +LAZURITES +LAZY +LAZYBONES +LAZYING +LAZYISH +LAZZARONE +LAZZARONI +LEA +LEACH +LEACHABILITIES +LEACHABILITY +LEACHABLE +LEACHATE +LEACHATES +LEACHED +LEACHER +LEACHERS +LEACHES +LEACHIER +LEACHIEST +LEACHING +LEACHY +LEAD +LEADED +LEADEN +LEADENED +LEADENING +LEADENLY +LEADENNESS +LEADENNESSES +LEADENS +LEADER +LEADERBOARD +LEADERBOARDS +LEADERLESS +LEADERS +LEADERSHIP +LEADERSHIPS +LEADIER +LEADIEST +LEADING +LEADINGS +LEADLESS +LEADMAN +LEADMEN +LEADOFF +LEADOFFS +LEADPLANT +LEADPLANTS +LEADS +LEADSCREW +LEADSCREWS +LEADSMAN +LEADSMEN +LEADWORK +LEADWORKS +LEADWORT +LEADWORTS +LEADY +LEAF +LEAFAGE +LEAFAGES +LEAFED +LEAFHOPPER +LEAFHOPPERS +LEAFIER +LEAFIEST +LEAFINESS +LEAFINESSES +LEAFING +LEAFLESS +LEAFLET +LEAFLETED +LEAFLETEER +LEAFLETEERS +LEAFLETER +LEAFLETERS +LEAFLETING +LEAFLETS +LEAFLETTED +LEAFLETTING +LEAFLIKE +LEAFS +LEAFSTALK +LEAFSTALKS +LEAFWORM +LEAFWORMS +LEAFY +LEAGUE +LEAGUED +LEAGUER +LEAGUERED +LEAGUERING +LEAGUERS +LEAGUES +LEAGUING +LEAK +LEAKAGE +LEAKAGES +LEAKED +LEAKER +LEAKERS +LEAKIER +LEAKIEST +LEAKILY +LEAKINESS +LEAKINESSES +LEAKING +LEAKLESS +LEAKPROOF +LEAKS +LEAKY +LEAL +LEALLY +LEALTIES +LEALTY +LEAN +LEANED +LEANER +LEANERS +LEANEST +LEANING +LEANINGS +LEANLY +LEANNESS +LEANNESSES +LEANS +LEANT +LEAP +LEAPED +LEAPER +LEAPERS +LEAPFROG +LEAPFROGGED +LEAPFROGGING +LEAPFROGS +LEAPING +LEAPS +LEAPT +LEAR +LEARIER +LEARIEST +LEARN +LEARNABLE +LEARNED +LEARNEDLY +LEARNEDNESS +LEARNEDNESSES +LEARNER +LEARNERS +LEARNING +LEARNINGS +LEARNS +LEARNT +LEARS +LEARY +LEAS +LEASABLE +LEASE +LEASEBACK +LEASEBACKS +LEASED +LEASEHOLD +LEASEHOLDER +LEASEHOLDERS +LEASEHOLDS +LEASER +LEASERS +LEASES +LEASH +LEASHED +LEASHES +LEASHING +LEASING +LEASINGS +LEAST +LEASTS +LEASTWAYS +LEASTWISE +LEATHER +LEATHERBACK +LEATHERBACKS +LEATHERED +LEATHERETTE +LEATHERETTES +LEATHERING +LEATHERLEAF +LEATHERLEAVES +LEATHERLIKE +LEATHERN +LEATHERNECK +LEATHERNECKS +LEATHERS +LEATHERWOOD +LEATHERWOODS +LEATHERY +LEAVE +LEAVED +LEAVEN +LEAVENED +LEAVENING +LEAVENINGS +LEAVENS +LEAVER +LEAVERS +LEAVES +LEAVIER +LEAVIEST +LEAVING +LEAVINGS +LEAVY +LEBEN +LEBENS +LEBENSRAUM +LEBENSRAUMS +LEBKUCHEN +LECH +LECHAYIM +LECHAYIMS +LECHED +LECHER +LECHERED +LECHERIES +LECHERING +LECHEROUS +LECHEROUSLY +LECHEROUSNESS +LECHEROUSNESSES +LECHERS +LECHERY +LECHES +LECHING +LECHWE +LECHWES +LECITHIN +LECITHINASE +LECITHINASES +LECITHINS +LECTERN +LECTERNS +LECTIN +LECTINS +LECTION +LECTIONARIES +LECTIONARY +LECTIONS +LECTOR +LECTORS +LECTOTYPE +LECTOTYPES +LECTURE +LECTURED +LECTURER +LECTURERS +LECTURES +LECTURESHIP +LECTURESHIPS +LECTURING +LECYTHI +LECYTHIS +LECYTHUS +LED +LEDERHOSEN +LEDGE +LEDGER +LEDGERS +LEDGES +LEDGIER +LEDGIEST +LEDGY +LEE +LEEBOARD +LEEBOARDS +LEECH +LEECHED +LEECHES +LEECHING +LEECHLIKE +LEEK +LEEKS +LEER +LEERED +LEERIER +LEERIEST +LEERILY +LEERINESS +LEERINESSES +LEERING +LEERINGLY +LEERS +LEERY +LEES +LEET +LEETS +LEEWARD +LEEWARDLY +LEEWARDS +LEEWAY +LEEWAYS +LEFT +LEFTER +LEFTEST +LEFTIES +LEFTISH +LEFTISM +LEFTISMS +LEFTIST +LEFTISTS +LEFTMOST +LEFTMOSTS +LEFTOVER +LEFTOVERS +LEFTS +LEFTWARD +LEFTWARDS +LEFTWING +LEFTY +LEG +LEGACIES +LEGACY +LEGAL +LEGALESE +LEGALESES +LEGALISE +LEGALISED +LEGALISES +LEGALISING +LEGALISM +LEGALISMS +LEGALIST +LEGALISTIC +LEGALISTICALLY +LEGALISTS +LEGALITIES +LEGALITY +LEGALIZATION +LEGALIZATIONS +LEGALIZE +LEGALIZED +LEGALIZER +LEGALIZERS +LEGALIZES +LEGALIZING +LEGALLY +LEGALS +LEGATE +LEGATED +LEGATEE +LEGATEES +LEGATES +LEGATESHIP +LEGATESHIPS +LEGATINE +LEGATING +LEGATION +LEGATIONS +LEGATO +LEGATOR +LEGATORS +LEGATOS +LEGEND +LEGENDARIES +LEGENDARILY +LEGENDARY +LEGENDIZE +LEGENDIZED +LEGENDIZES +LEGENDIZING +LEGENDRIES +LEGENDRY +LEGENDS +LEGER +LEGERDEMAIN +LEGERDEMAINS +LEGERITIES +LEGERITY +LEGERS +LEGES +LEGGED +LEGGIER +LEGGIERO +LEGGIEST +LEGGIN +LEGGINESS +LEGGINESSES +LEGGING +LEGGINGS +LEGGINS +LEGGY +LEGHORN +LEGHORNS +LEGIBILITIES +LEGIBILITY +LEGIBLE +LEGIBLY +LEGION +LEGIONARIES +LEGIONARY +LEGIONNAIRE +LEGIONNAIRES +LEGIONS +LEGISLATE +LEGISLATED +LEGISLATES +LEGISLATING +LEGISLATION +LEGISLATIONS +LEGISLATIVE +LEGISLATIVELY +LEGISLATIVES +LEGISLATOR +LEGISLATORIAL +LEGISLATORS +LEGISLATORSHIP +LEGISLATORSHIPS +LEGISLATURE +LEGISLATURES +LEGIST +LEGISTS +LEGIT +LEGITIMACIES +LEGITIMACY +LEGITIMATE +LEGITIMATED +LEGITIMATELY +LEGITIMATES +LEGITIMATING +LEGITIMATION +LEGITIMATIONS +LEGITIMATIZE +LEGITIMATIZED +LEGITIMATIZES +LEGITIMATIZING +LEGITIMATOR +LEGITIMATORS +LEGITIMISE +LEGITIMISED +LEGITIMISES +LEGITIMISING +LEGITIMISM +LEGITIMISMS +LEGITIMIST +LEGITIMISTS +LEGITIMIZATION +LEGITIMIZATIONS +LEGITIMIZE +LEGITIMIZED +LEGITIMIZER +LEGITIMIZERS +LEGITIMIZES +LEGITIMIZING +LEGITS +LEGLESS +LEGLIKE +LEGMAN +LEGMEN +LEGONG +LEGONGS +LEGROOM +LEGROOMS +LEGS +LEGUME +LEGUMES +LEGUMIN +LEGUMINOUS +LEGUMINS +LEGWARMER +LEGWARMERS +LEGWORK +LEGWORKS +LEHAYIM +LEHAYIMS +LEHR +LEHRS +LEHUA +LEHUAS +LEI +LEIOMYOMA +LEIOMYOMAS +LEIOMYOMATA +LEIS +LEISHMANIA +LEISHMANIAL +LEISHMANIAS +LEISHMANIASES +LEISHMANIASIS +LEISTER +LEISTERED +LEISTERING +LEISTERS +LEISURE +LEISURED +LEISURELINESS +LEISURELINESSES +LEISURELY +LEISURES +LEITMOTIF +LEITMOTIFS +LEITMOTIV +LEITMOTIVS +LEK +LEKE +LEKKED +LEKKING +LEKS +LEKU +LEKVAR +LEKVARS +LEKYTHI +LEKYTHOI +LEKYTHOS +LEKYTHUS +LEMAN +LEMANS +LEMMA +LEMMAS +LEMMATA +LEMMATIZE +LEMMATIZED +LEMMATIZES +LEMMATIZING +LEMMING +LEMMINGLIKE +LEMMINGS +LEMNISCAL +LEMNISCATE +LEMNISCATES +LEMNISCI +LEMNISCUS +LEMON +LEMONADE +LEMONADES +LEMONGRASS +LEMONGRASSES +LEMONISH +LEMONLIKE +LEMONS +LEMONY +LEMPIRA +LEMPIRAS +LEMUR +LEMURES +LEMURINE +LEMURLIKE +LEMUROID +LEMUROIDS +LEMURS +LEND +LENDABLE +LENDER +LENDERS +LENDING +LENDS +LENES +LENGTH +LENGTHEN +LENGTHENED +LENGTHENER +LENGTHENERS +LENGTHENING +LENGTHENS +LENGTHIER +LENGTHIEST +LENGTHILY +LENGTHINESS +LENGTHINESSES +LENGTHS +LENGTHWAYS +LENGTHWISE +LENGTHY +LENIENCE +LENIENCES +LENIENCIES +LENIENCY +LENIENT +LENIENTLY +LENIS +LENITE +LENITED +LENITES +LENITIES +LENITING +LENITION +LENITIONS +LENITIVE +LENITIVELY +LENITIVES +LENITY +LENO +LENOS +LENS +LENSE +LENSED +LENSES +LENSING +LENSLESS +LENSMAN +LENSMEN +LENT +LENTAMENTE +LENTANDO +LENTEN +LENTIC +LENTICEL +LENTICELS +LENTICULAR +LENTICULE +LENTICULES +LENTIGINES +LENTIGO +LENTIL +LENTILS +LENTISK +LENTISKS +LENTISSIMO +LENTIVIRUS +LENTIVIRUSES +LENTO +LENTOID +LENTOIDS +LENTOS +LEONE +LEONES +LEONINE +LEOPARD +LEOPARDESS +LEOPARDESSES +LEOPARDS +LEOTARD +LEOTARDED +LEOTARDS +LEPER +LEPERS +LEPIDOLITE +LEPIDOLITES +LEPIDOPTERA +LEPIDOPTERAN +LEPIDOPTERANS +LEPIDOPTERIST +LEPIDOPTERISTS +LEPIDOPTEROLOGY +LEPIDOPTEROUS +LEPIDOTE +LEPIDOTES +LEPORID +LEPORIDAE +LEPORIDS +LEPORINE +LEPRECHAUN +LEPRECHAUNISH +LEPRECHAUNS +LEPROMATOUS +LEPROSARIA +LEPROSARIUM +LEPROSARIUMS +LEPROSE +LEPROSIES +LEPROSY +LEPROTIC +LEPROUS +LEPROUSLY +LEPT +LEPTA +LEPTIN +LEPTINS +LEPTOCEPHALI +LEPTOCEPHALUS +LEPTON +LEPTONIC +LEPTONS +LEPTOPHOS +LEPTOPHOSES +LEPTOSOME +LEPTOSOMES +LEPTOSPIRAL +LEPTOSPIRE +LEPTOSPIRES +LEPTOSPIROSES +LEPTOSPIROSIS +LEPTOTENE +LEPTOTENES +LES +LESBIAN +LESBIANISM +LESBIANISMS +LESBIANS +LESBO +LESBOS +LESES +LESION +LESIONED +LESIONING +LESIONS +LESPEDEZA +LESPEDEZAS +LESS +LESSEE +LESSEES +LESSEN +LESSENED +LESSENING +LESSENS +LESSER +LESSON +LESSONED +LESSONING +LESSONS +LESSOR +LESSORS +LEST +LET +LETCH +LETCHED +LETCHES +LETCHING +LETDOWN +LETDOWNS +LETHAL +LETHALITIES +LETHALITY +LETHALLY +LETHALS +LETHARGIC +LETHARGICALLY +LETHARGIES +LETHARGY +LETHE +LETHEAN +LETHES +LETS +LETTED +LETTER +LETTERBOX +LETTERBOXED +LETTERBOXES +LETTERBOXING +LETTERBOXINGS +LETTERED +LETTERER +LETTERERS +LETTERFORM +LETTERFORMS +LETTERHEAD +LETTERHEADS +LETTERING +LETTERINGS +LETTERMAN +LETTERMEN +LETTERPRESS +LETTERPRESSES +LETTERS +LETTERSPACING +LETTERSPACINGS +LETTING +LETTUCE +LETTUCES +LETUP +LETUPS +LEU +LEUCEMIA +LEUCEMIAS +LEUCEMIC +LEUCIN +LEUCINE +LEUCINES +LEUCINS +LEUCITE +LEUCITES +LEUCITIC +LEUCOCIDIN +LEUCOCIDINS +LEUCOCYTE +LEUCOCYTES +LEUCOMA +LEUCOMAS +LEUCOPLAST +LEUCOPLASTS +LEUD +LEUDES +LEUDS +LEUKAEMIA +LEUKAEMIAS +LEUKAEMOGENESES +LEUKAEMOGENESIS +LEUKEMIA +LEUKEMIAS +LEUKEMIC +LEUKEMICS +LEUKEMOGENESES +LEUKEMOGENESIS +LEUKEMOGENIC +LEUKEMOID +LEUKOCYTE +LEUKOCYTES +LEUKOCYTIC +LEUKOCYTOSES +LEUKOCYTOSIS +LEUKODYSTROPHY +LEUKOMA +LEUKOMAS +LEUKON +LEUKONS +LEUKOPENIA +LEUKOPENIAS +LEUKOPENIC +LEUKOPLAKIA +LEUKOPLAKIAS +LEUKOPLAKIC +LEUKOPOIESES +LEUKOPOIESIS +LEUKOPOIETIC +LEUKORRHEA +LEUKORRHEAL +LEUKORRHEAS +LEUKOSES +LEUKOSIS +LEUKOTIC +LEUKOTOMIES +LEUKOTOMY +LEUKOTRIENE +LEUKOTRIENES +LEV +LEVA +LEVANT +LEVANTED +LEVANTER +LEVANTERS +LEVANTINE +LEVANTINES +LEVANTING +LEVANTS +LEVATOR +LEVATORES +LEVATORS +LEVEE +LEVEED +LEVEEING +LEVEES +LEVEL +LEVELED +LEVELER +LEVELERS +LEVELHEADED +LEVELHEADEDNESS +LEVELING +LEVELLED +LEVELLER +LEVELLERS +LEVELLING +LEVELLY +LEVELNESS +LEVELNESSES +LEVELS +LEVER +LEVERAGE +LEVERAGED +LEVERAGES +LEVERAGING +LEVERED +LEVERET +LEVERETS +LEVERING +LEVERS +LEVIABLE +LEVIATHAN +LEVIATHANS +LEVIED +LEVIER +LEVIERS +LEVIES +LEVIGATE +LEVIGATED +LEVIGATES +LEVIGATING +LEVIGATION +LEVIGATIONS +LEVIN +LEVINS +LEVIRATE +LEVIRATES +LEVIRATIC +LEVIS +LEVITATE +LEVITATED +LEVITATES +LEVITATING +LEVITATION +LEVITATIONAL +LEVITATIONS +LEVITATOR +LEVITATORS +LEVITIES +LEVITY +LEVO +LEVODOPA +LEVODOPAS +LEVOGYRE +LEVOROTARY +LEVOROTATORY +LEVULIN +LEVULINS +LEVULOSE +LEVULOSES +LEVY +LEVYING +LEWD +LEWDER +LEWDEST +LEWDLY +LEWDNESS +LEWDNESSES +LEWIS +LEWISES +LEWISITE +LEWISITES +LEWISSON +LEWISSONS +LEX +LEXEME +LEXEMES +LEXEMIC +LEXES +LEXICA +LEXICAL +LEXICALISATION +LEXICALISATIONS +LEXICALITIES +LEXICALITY +LEXICALIZATION +LEXICALIZATIONS +LEXICALIZE +LEXICALIZED +LEXICALIZES +LEXICALIZING +LEXICALLY +LEXICOGRAPHER +LEXICOGRAPHERS +LEXICOGRAPHIC +LEXICOGRAPHICAL +LEXICOGRAPHIES +LEXICOGRAPHY +LEXICOLOGIES +LEXICOLOGIST +LEXICOLOGISTS +LEXICOLOGY +LEXICON +LEXICONS +LEXIS +LEY +LEYS +LEZ +LEZZES +LEZZIE +LEZZIES +LEZZY +LI +LIABILITIES +LIABILITY +LIABLE +LIAISE +LIAISED +LIAISES +LIAISING +LIAISON +LIAISONS +LIANA +LIANAS +LIANE +LIANES +LIANG +LIANGS +LIANOID +LIAR +LIARD +LIARDS +LIARS +LIB +LIBATION +LIBATIONARY +LIBATIONS +LIBBER +LIBBERS +LIBECCHIO +LIBECCHIOS +LIBECCIO +LIBECCIOS +LIBEL +LIBELANT +LIBELANTS +LIBELED +LIBELEE +LIBELEES +LIBELER +LIBELERS +LIBELING +LIBELIST +LIBELISTS +LIBELLANT +LIBELLANTS +LIBELLED +LIBELLEE +LIBELLEES +LIBELLER +LIBELLERS +LIBELLING +LIBELLOUS +LIBELOUS +LIBELS +LIBER +LIBERAL +LIBERALISE +LIBERALISED +LIBERALISES +LIBERALISING +LIBERALISM +LIBERALISMS +LIBERALIST +LIBERALISTIC +LIBERALISTS +LIBERALITIES +LIBERALITY +LIBERALIZATION +LIBERALIZATIONS +LIBERALIZE +LIBERALIZED +LIBERALIZER +LIBERALIZERS +LIBERALIZES +LIBERALIZING +LIBERALLY +LIBERALNESS +LIBERALNESSES +LIBERALS +LIBERATE +LIBERATED +LIBERATES +LIBERATING +LIBERATION +LIBERATIONIST +LIBERATIONISTS +LIBERATIONS +LIBERATOR +LIBERATORS +LIBERS +LIBERTARIAN +LIBERTARIANISM +LIBERTARIANISMS +LIBERTARIANS +LIBERTIES +LIBERTINAGE +LIBERTINAGES +LIBERTINE +LIBERTINES +LIBERTINISM +LIBERTINISMS +LIBERTY +LIBIDINAL +LIBIDINALLY +LIBIDINOUS +LIBIDINOUSLY +LIBIDINOUSNESS +LIBIDO +LIBIDOS +LIBLAB +LIBLABS +LIBRA +LIBRAE +LIBRARIAN +LIBRARIANS +LIBRARIANSHIP +LIBRARIANSHIPS +LIBRARIES +LIBRARY +LIBRAS +LIBRATE +LIBRATED +LIBRATES +LIBRATING +LIBRATION +LIBRATIONAL +LIBRATIONS +LIBRATORY +LIBRETTI +LIBRETTIST +LIBRETTISTS +LIBRETTO +LIBRETTOS +LIBRI +LIBRIFORM +LIBS +LICE +LICENCE +LICENCED +LICENCEE +LICENCEES +LICENCER +LICENCERS +LICENCES +LICENCING +LICENSABLE +LICENSE +LICENSED +LICENSEE +LICENSEES +LICENSER +LICENSERS +LICENSES +LICENSING +LICENSOR +LICENSORS +LICENSURE +LICENSURES +LICENTE +LICENTIATE +LICENTIATES +LICENTIOUS +LICENTIOUSLY +LICENTIOUSNESS +LICH +LICHEE +LICHEES +LICHEN +LICHENED +LICHENIN +LICHENING +LICHENINS +LICHENOLOGICAL +LICHENOLOGIES +LICHENOLOGIST +LICHENOLOGISTS +LICHENOLOGY +LICHENOSE +LICHENOUS +LICHENS +LICHES +LICHI +LICHIS +LICHT +LICHTED +LICHTING +LICHTLY +LICHTS +LICIT +LICITLY +LICITNESS +LICITNESSES +LICK +LICKED +LICKER +LICKERISH +LICKERISHLY +LICKERISHNESS +LICKERISHNESSES +LICKERS +LICKING +LICKINGS +LICKS +LICKSPIT +LICKSPITS +LICKSPITTLE +LICKSPITTLES +LICORICE +LICORICES +LICTOR +LICTORIAN +LICTORS +LID +LIDAR +LIDARS +LIDDED +LIDDING +LIDLESS +LIDO +LIDOCAINE +LIDOCAINES +LIDOS +LIDS +LIE +LIEBFRAUMILCH +LIEBFRAUMILCHS +LIED +LIEDER +LIEF +LIEFER +LIEFEST +LIEFLY +LIEGE +LIEGEMAN +LIEGEMEN +LIEGES +LIEN +LIENABLE +LIENAL +LIENS +LIENTERIES +LIENTERY +LIER +LIERNE +LIERNES +LIERS +LIES +LIEU +LIEUS +LIEUTENANCIES +LIEUTENANCY +LIEUTENANT +LIEUTENANTS +LIEVE +LIEVER +LIEVEST +LIFE +LIFEBLOOD +LIFEBLOODS +LIFEBOAT +LIFEBOATS +LIFECARE +LIFECARES +LIFEFUL +LIFEGUARD +LIFEGUARDED +LIFEGUARDING +LIFEGUARDS +LIFELESS +LIFELESSLY +LIFELESSNESS +LIFELESSNESSES +LIFELIKE +LIFELIKENESS +LIFELIKENESSES +LIFELINE +LIFELINES +LIFELONG +LIFEMANSHIP +LIFEMANSHIPS +LIFER +LIFERS +LIFESAVER +LIFESAVERS +LIFESAVING +LIFESAVINGS +LIFESPAN +LIFESPANS +LIFESTYLE +LIFESTYLES +LIFETIME +LIFETIMES +LIFEWAY +LIFEWAYS +LIFEWORK +LIFEWORKS +LIFEWORLD +LIFEWORLDS +LIFT +LIFTABLE +LIFTED +LIFTER +LIFTERS +LIFTGATE +LIFTGATES +LIFTING +LIFTMAN +LIFTMEN +LIFTOFF +LIFTOFFS +LIFTS +LIGAMENT +LIGAMENTOUS +LIGAMENTS +LIGAN +LIGAND +LIGANDS +LIGANS +LIGASE +LIGASES +LIGATE +LIGATED +LIGATES +LIGATING +LIGATION +LIGATIONS +LIGATIVE +LIGATURE +LIGATURED +LIGATURES +LIGATURING +LIGER +LIGERS +LIGHT +LIGHTBULB +LIGHTBULBS +LIGHTED +LIGHTEN +LIGHTENED +LIGHTENER +LIGHTENERS +LIGHTENING +LIGHTENS +LIGHTER +LIGHTERAGE +LIGHTERAGES +LIGHTERED +LIGHTERING +LIGHTERS +LIGHTEST +LIGHTFACE +LIGHTFACED +LIGHTFACES +LIGHTFAST +LIGHTFASTNESS +LIGHTFASTNESSES +LIGHTFUL +LIGHTHEARTED +LIGHTHEARTEDLY +LIGHTHOUSE +LIGHTHOUSES +LIGHTING +LIGHTINGS +LIGHTISH +LIGHTLESS +LIGHTLY +LIGHTNESS +LIGHTNESSES +LIGHTNING +LIGHTNINGED +LIGHTNINGS +LIGHTPLANE +LIGHTPLANES +LIGHTPROOF +LIGHTS +LIGHTSHIP +LIGHTSHIPS +LIGHTSOME +LIGHTSOMELY +LIGHTSOMENESS +LIGHTSOMENESSES +LIGHTTIGHT +LIGHTWAVE +LIGHTWEIGHT +LIGHTWEIGHTS +LIGHTWOOD +LIGHTWOODS +LIGNALOES +LIGNAN +LIGNANS +LIGNEOUS +LIGNIFICATION +LIGNIFICATIONS +LIGNIFIED +LIGNIFIES +LIGNIFY +LIGNIFYING +LIGNIN +LIGNINS +LIGNITE +LIGNITES +LIGNITIC +LIGNOCELLULOSE +LIGNOCELLULOSES +LIGNOCELLULOSIC +LIGNOSULFONATE +LIGNOSULFONATES +LIGROIN +LIGROINE +LIGROINES +LIGROINS +LIGULA +LIGULAE +LIGULAR +LIGULAS +LIGULATE +LIGULATED +LIGULE +LIGULES +LIGULOID +LIGURE +LIGURES +LIKABILITIES +LIKABILITY +LIKABLE +LIKABLENESS +LIKABLENESSES +LIKE +LIKEABLE +LIKED +LIKELIER +LIKELIEST +LIKELIHOOD +LIKELIHOODS +LIKELY +LIKEN +LIKENED +LIKENESS +LIKENESSES +LIKENING +LIKENS +LIKER +LIKERS +LIKES +LIKEST +LIKEWISE +LIKING +LIKINGS +LIKUTA +LILAC +LILACS +LILANGENI +LILIED +LILIES +LILLIPUT +LILLIPUTIAN +LILLIPUTIANS +LILLIPUTS +LILO +LILOS +LILT +LILTED +LILTING +LILTINGLY +LILTINGNESS +LILTINGNESSES +LILTS +LILY +LILYLIKE +LIMA +LIMACINE +LIMACON +LIMACONS +LIMAN +LIMANS +LIMAS +LIMB +LIMBA +LIMBAS +LIMBATE +LIMBECK +LIMBECKS +LIMBED +LIMBER +LIMBERED +LIMBERER +LIMBEREST +LIMBERING +LIMBERLY +LIMBERNESS +LIMBERNESSES +LIMBERS +LIMBI +LIMBIC +LIMBIER +LIMBIEST +LIMBING +LIMBLESS +LIMBO +LIMBOS +LIMBS +LIMBUS +LIMBUSES +LIMBY +LIME +LIMEADE +LIMEADES +LIMED +LIMEKILN +LIMEKILNS +LIMELESS +LIMELIGHT +LIMELIGHTED +LIMELIGHTING +LIMELIGHTS +LIMEN +LIMENS +LIMERICK +LIMERICKS +LIMES +LIMESTONE +LIMESTONES +LIMEWATER +LIMEWATERS +LIMEY +LIMEYS +LIMIER +LIMIEST +LIMINA +LIMINAL +LIMINESS +LIMINESSES +LIMING +LIMIT +LIMITABLE +LIMITARY +LIMITATION +LIMITATIONAL +LIMITATIONS +LIMITATIVE +LIMITED +LIMITEDLY +LIMITEDNESS +LIMITEDNESSES +LIMITEDS +LIMITER +LIMITERS +LIMITES +LIMITING +LIMITINGLY +LIMITLESS +LIMITLESSLY +LIMITLESSNESS +LIMITLESSNESSES +LIMITROPHE +LIMITS +LIMMER +LIMMERS +LIMN +LIMNED +LIMNER +LIMNERS +LIMNETIC +LIMNIC +LIMNING +LIMNOLOGIC +LIMNOLOGICAL +LIMNOLOGIES +LIMNOLOGIST +LIMNOLOGISTS +LIMNOLOGY +LIMNS +LIMO +LIMONENE +LIMONENES +LIMONITE +LIMONITES +LIMONITIC +LIMOS +LIMOUSINE +LIMOUSINES +LIMP +LIMPA +LIMPAS +LIMPED +LIMPER +LIMPERS +LIMPEST +LIMPET +LIMPETS +LIMPID +LIMPIDITIES +LIMPIDITY +LIMPIDLY +LIMPIDNESS +LIMPIDNESSES +LIMPING +LIMPINGLY +LIMPKIN +LIMPKINS +LIMPLY +LIMPNESS +LIMPNESSES +LIMPS +LIMPSEY +LIMPSIER +LIMPSIEST +LIMPSY +LIMULI +LIMULOID +LIMULOIDS +LIMULUS +LIMY +LIN +LINABLE +LINAC +LINACS +LINAGE +LINAGES +LINALOL +LINALOLS +LINALOOL +LINALOOLS +LINCHPIN +LINCHPINS +LINCOMYCIN +LINCOMYCINS +LINDANE +LINDANES +LINDEN +LINDENS +LINDIES +LINDY +LINE +LINEABLE +LINEAGE +LINEAGES +LINEAL +LINEALITIES +LINEALITY +LINEALLY +LINEAMENT +LINEAMENTAL +LINEAMENTS +LINEAR +LINEARISE +LINEARISED +LINEARISES +LINEARISING +LINEARITIES +LINEARITY +LINEARIZATION +LINEARIZATIONS +LINEARIZE +LINEARIZED +LINEARIZES +LINEARIZING +LINEARLY +LINEATE +LINEATED +LINEATION +LINEATIONS +LINEBACKER +LINEBACKERS +LINEBACKING +LINEBACKINGS +LINEBRED +LINEBREEDING +LINEBREEDINGS +LINECASTER +LINECASTERS +LINECASTING +LINECASTINGS +LINECUT +LINECUTS +LINED +LINELESS +LINELIKE +LINEMAN +LINEMEN +LINEN +LINENS +LINENY +LINEOLATE +LINER +LINERBOARD +LINERBOARDS +LINERLESS +LINERS +LINES +LINESMAN +LINESMEN +LINEUP +LINEUPS +LINEY +LING +LINGA +LINGAM +LINGAMS +LINGAS +LINGBERRIES +LINGBERRY +LINGCOD +LINGCODS +LINGER +LINGERED +LINGERER +LINGERERS +LINGERIE +LINGERIES +LINGERING +LINGERINGLY +LINGERS +LINGIER +LINGIEST +LINGO +LINGOES +LINGONBERRIES +LINGONBERRY +LINGS +LINGUA +LINGUAE +LINGUAL +LINGUALLY +LINGUALS +LINGUICA +LINGUICAS +LINGUINE +LINGUINES +LINGUINI +LINGUINIS +LINGUISA +LINGUISAS +LINGUIST +LINGUISTIC +LINGUISTICAL +LINGUISTICALLY +LINGUISTICIAN +LINGUISTICIANS +LINGUISTICS +LINGUISTS +LINGULA +LINGULAE +LINGULAR +LINGULATE +LINGY +LINIER +LINIEST +LINIMENT +LINIMENTS +LININ +LINING +LININGS +LININS +LINK +LINKABLE +LINKAGE +LINKAGES +LINKBOY +LINKBOYS +LINKED +LINKER +LINKERS +LINKING +LINKMAN +LINKMEN +LINKS +LINKSLAND +LINKSLANDS +LINKSMAN +LINKSMEN +LINKUP +LINKUPS +LINKWORK +LINKWORKS +LINKY +LINN +LINNET +LINNETS +LINNS +LINO +LINOCUT +LINOCUTS +LINOLEATE +LINOLEATES +LINOLEUM +LINOLEUMS +LINOS +LINOTYPE +LINOTYPED +LINOTYPER +LINOTYPERS +LINOTYPES +LINOTYPING +LINS +LINSANG +LINSANGS +LINSEED +LINSEEDS +LINSEY +LINSEYS +LINSTOCK +LINSTOCKS +LINT +LINTED +LINTEL +LINTELS +LINTER +LINTERS +LINTIER +LINTIEST +LINTING +LINTLESS +LINTOL +LINTOLS +LINTS +LINTWHITE +LINTWHITES +LINTY +LINUM +LINUMS +LINURON +LINURONS +LINY +LION +LIONESS +LIONESSES +LIONFISH +LIONFISHES +LIONHEARTED +LIONISE +LIONISED +LIONISER +LIONISERS +LIONISES +LIONISING +LIONIZATION +LIONIZATIONS +LIONIZE +LIONIZED +LIONIZER +LIONIZERS +LIONIZES +LIONIZING +LIONLIKE +LIONS +LIP +LIPA +LIPASE +LIPASES +LIPE +LIPECTOMIES +LIPECTOMY +LIPID +LIPIDE +LIPIDES +LIPIDIC +LIPIDS +LIPIN +LIPINS +LIPLESS +LIPLIKE +LIPOCYTE +LIPOCYTES +LIPOGENESES +LIPOGENESIS +LIPOID +LIPOIDAL +LIPOIDS +LIPOLITIC +LIPOLYSES +LIPOLYSIS +LIPOLYTIC +LIPOMA +LIPOMAS +LIPOMATA +LIPOMATOUS +LIPOPHILIC +LIPOPROTEIN +LIPOPROTEINS +LIPOSOMAL +LIPOSOME +LIPOSOMES +LIPOSUCTION +LIPOSUCTIONS +LIPOTROPIC +LIPOTROPIES +LIPOTROPIN +LIPOTROPINS +LIPOTROPY +LIPPED +LIPPEN +LIPPENED +LIPPENING +LIPPENS +LIPPER +LIPPERED +LIPPERING +LIPPERS +LIPPIER +LIPPIEST +LIPPINESS +LIPPINESSES +LIPPING +LIPPINGS +LIPPY +LIPREAD +LIPREADER +LIPREADERS +LIPREADING +LIPREADINGS +LIPREADS +LIPS +LIPSTICK +LIPSTICKED +LIPSTICKS +LIQUATE +LIQUATED +LIQUATES +LIQUATING +LIQUATION +LIQUATIONS +LIQUEFACTION +LIQUEFACTIONS +LIQUEFIED +LIQUEFIER +LIQUEFIERS +LIQUEFIES +LIQUEFY +LIQUEFYING +LIQUESCENT +LIQUEUR +LIQUEURS +LIQUID +LIQUIDAMBAR +LIQUIDAMBARS +LIQUIDATE +LIQUIDATED +LIQUIDATES +LIQUIDATING +LIQUIDATION +LIQUIDATIONS +LIQUIDATOR +LIQUIDATORS +LIQUIDITIES +LIQUIDITY +LIQUIDIZE +LIQUIDIZED +LIQUIDIZES +LIQUIDIZING +LIQUIDLY +LIQUIDNESS +LIQUIDNESSES +LIQUIDS +LIQUIFIED +LIQUIFIES +LIQUIFY +LIQUIFYING +LIQUOR +LIQUORED +LIQUORICE +LIQUORICES +LIQUORING +LIQUORISH +LIQUORS +LIRA +LIRAS +LIRE +LIRI +LIRIOPE +LIRIOPES +LIRIPIPE +LIRIPIPES +LIROT +LIROTH +LIS +LISENTE +LISLE +LISLES +LISP +LISPED +LISPER +LISPERS +LISPING +LISPINGLY +LISPS +LISSOM +LISSOME +LISSOMELY +LISSOMENESS +LISSOMENESSES +LISSOMLY +LIST +LISTABLE +LISTED +LISTEE +LISTEES +LISTEL +LISTELS +LISTEN +LISTENABLE +LISTENED +LISTENER +LISTENERS +LISTENERSHIP +LISTENERSHIPS +LISTENING +LISTENS +LISTER +LISTERIA +LISTERIAS +LISTERIOSES +LISTERIOSIS +LISTERS +LISTING +LISTINGS +LISTLESS +LISTLESSLY +LISTLESSNESS +LISTLESSNESSES +LISTS +LIT +LITAI +LITANIES +LITANY +LITAS +LITCHI +LITCHIS +LITE +LITENESS +LITENESSES +LITER +LITERACIES +LITERACY +LITERAL +LITERALISM +LITERALISMS +LITERALIST +LITERALISTIC +LITERALISTS +LITERALITIES +LITERALITY +LITERALIZATION +LITERALIZATIONS +LITERALIZE +LITERALIZED +LITERALIZES +LITERALIZING +LITERALLY +LITERALNESS +LITERALNESSES +LITERALS +LITERARILY +LITERARINESS +LITERARINESSES +LITERARY +LITERATE +LITERATELY +LITERATENESS +LITERATENESSES +LITERATES +LITERATI +LITERATIM +LITERATION +LITERATIONS +LITERATOR +LITERATORS +LITERATURE +LITERATURES +LITERATUS +LITERS +LITHARGE +LITHARGES +LITHE +LITHELY +LITHEMIA +LITHEMIAS +LITHEMIC +LITHENESS +LITHENESSES +LITHER +LITHESOME +LITHEST +LITHIA +LITHIAS +LITHIASES +LITHIASIS +LITHIC +LITHIFICATION +LITHIFICATIONS +LITHIFIED +LITHIFIES +LITHIFY +LITHIFYING +LITHIUM +LITHIUMS +LITHO +LITHOED +LITHOGRAPH +LITHOGRAPHED +LITHOGRAPHER +LITHOGRAPHERS +LITHOGRAPHIC +LITHOGRAPHIES +LITHOGRAPHING +LITHOGRAPHS +LITHOGRAPHY +LITHOID +LITHOIDAL +LITHOING +LITHOLOGIC +LITHOLOGICAL +LITHOLOGICALLY +LITHOLOGIES +LITHOLOGY +LITHOPHANE +LITHOPHANES +LITHOPHYTE +LITHOPHYTES +LITHOPONE +LITHOPONES +LITHOPS +LITHOS +LITHOSOL +LITHOSOLS +LITHOSPHERE +LITHOSPHERES +LITHOSPHERIC +LITHOTOMIES +LITHOTOMY +LITHOTRIPSIES +LITHOTRIPSY +LITHOTRIPTER +LITHOTRIPTERS +LITHOTRIPTOR +LITHOTRIPTORS +LITIGABLE +LITIGANT +LITIGANTS +LITIGATE +LITIGATED +LITIGATES +LITIGATING +LITIGATION +LITIGATIONS +LITIGATOR +LITIGATORS +LITIGIOUS +LITIGIOUSLY +LITIGIOUSNESS +LITIGIOUSNESSES +LITMUS +LITMUSES +LITORAL +LITOTES +LITOTIC +LITRE +LITRES +LITS +LITTEN +LITTER +LITTERATEUR +LITTERATEURS +LITTERBAG +LITTERBAGS +LITTERBUG +LITTERBUGS +LITTERED +LITTERER +LITTERERS +LITTERING +LITTERMATE +LITTERMATES +LITTERS +LITTERY +LITTLE +LITTLENECK +LITTLENECKS +LITTLENESS +LITTLENESSES +LITTLER +LITTLES +LITTLEST +LITTLISH +LITTORAL +LITTORALS +LITU +LITURGIC +LITURGICAL +LITURGICALLY +LITURGICS +LITURGIES +LITURGIOLOGIES +LITURGIOLOGIST +LITURGIOLOGISTS +LITURGIOLOGY +LITURGISM +LITURGISMS +LITURGIST +LITURGISTS +LITURGY +LIVABILITIES +LIVABILITY +LIVABLE +LIVABLENESS +LIVABLENESSES +LIVE +LIVEABILITIES +LIVEABILITY +LIVEABLE +LIVED +LIVELIER +LIVELIEST +LIVELIHOOD +LIVELIHOODS +LIVELILY +LIVELINESS +LIVELINESSES +LIVELONG +LIVELY +LIVEN +LIVENED +LIVENER +LIVENERS +LIVENESS +LIVENESSES +LIVENING +LIVENS +LIVER +LIVERED +LIVERIED +LIVERIES +LIVERING +LIVERISH +LIVERISHNESS +LIVERISHNESSES +LIVERLEAF +LIVERLEAVES +LIVERS +LIVERWORT +LIVERWORTS +LIVERWURST +LIVERWURSTS +LIVERY +LIVERYMAN +LIVERYMEN +LIVES +LIVEST +LIVESTOCK +LIVESTOCKS +LIVETRAP +LIVETRAPPED +LIVETRAPPING +LIVETRAPS +LIVID +LIVIDITIES +LIVIDITY +LIVIDLY +LIVIDNESS +LIVIDNESSES +LIVIER +LIVIERS +LIVING +LIVINGLY +LIVINGNESS +LIVINGNESSES +LIVINGS +LIVRE +LIVRES +LIVYER +LIVYERS +LIXIVIA +LIXIVIAL +LIXIVIATE +LIXIVIATED +LIXIVIATES +LIXIVIATING +LIXIVIATION +LIXIVIATIONS +LIXIVIUM +LIXIVIUMS +LIZARD +LIZARDS +LLAMA +LLAMAS +LLANO +LLANOS +LO +LOACH +LOACHES +LOAD +LOADED +LOADER +LOADERS +LOADING +LOADINGS +LOADMASTER +LOADMASTERS +LOADS +LOADSTAR +LOADSTARS +LOADSTONE +LOADSTONES +LOAF +LOAFED +LOAFER +LOAFERS +LOAFING +LOAFS +LOAM +LOAMED +LOAMIER +LOAMIEST +LOAMINESS +LOAMINESSES +LOAMING +LOAMLESS +LOAMS +LOAMY +LOAN +LOANABLE +LOANED +LOANER +LOANERS +LOANING +LOANINGS +LOANS +LOANSHIFT +LOANSHIFTS +LOANWORD +LOANWORDS +LOATH +LOATHE +LOATHED +LOATHER +LOATHERS +LOATHES +LOATHFUL +LOATHING +LOATHINGS +LOATHLY +LOATHNESS +LOATHNESSES +LOATHSOME +LOATHSOMELY +LOATHSOMENESS +LOATHSOMENESSES +LOAVES +LOB +LOBAR +LOBATE +LOBATED +LOBATELY +LOBATION +LOBATIONS +LOBBED +LOBBER +LOBBERS +LOBBIED +LOBBIES +LOBBING +LOBBY +LOBBYER +LOBBYERS +LOBBYGOW +LOBBYGOWS +LOBBYING +LOBBYISM +LOBBYISMS +LOBBYIST +LOBBYISTS +LOBE +LOBECTOMIES +LOBECTOMY +LOBED +LOBEFIN +LOBEFINS +LOBELIA +LOBELIAS +LOBELINE +LOBELINES +LOBES +LOBLOLLIES +LOBLOLLY +LOBO +LOBOS +LOBOTOMIES +LOBOTOMISE +LOBOTOMISED +LOBOTOMISES +LOBOTOMISING +LOBOTOMIZE +LOBOTOMIZED +LOBOTOMIZES +LOBOTOMIZING +LOBOTOMY +LOBS +LOBSCOUSE +LOBSCOUSES +LOBSTER +LOBSTERED +LOBSTERER +LOBSTERERS +LOBSTERING +LOBSTERINGS +LOBSTERLIKE +LOBSTERMAN +LOBSTERMEN +LOBSTERS +LOBSTICK +LOBSTICKS +LOBULAR +LOBULARLY +LOBULATE +LOBULATED +LOBULATION +LOBULATIONS +LOBULE +LOBULES +LOBULOSE +LOBWORM +LOBWORMS +LOCA +LOCAL +LOCALE +LOCALES +LOCALISE +LOCALISED +LOCALISES +LOCALISING +LOCALISM +LOCALISMS +LOCALIST +LOCALISTS +LOCALITE +LOCALITES +LOCALITIES +LOCALITY +LOCALIZABILITY +LOCALIZABLE +LOCALIZATION +LOCALIZATIONS +LOCALIZE +LOCALIZED +LOCALIZER +LOCALIZERS +LOCALIZES +LOCALIZING +LOCALLY +LOCALNESS +LOCALNESSES +LOCALS +LOCATABLE +LOCATE +LOCATED +LOCATER +LOCATERS +LOCATES +LOCATING +LOCATION +LOCATIONAL +LOCATIONALLY +LOCATIONS +LOCATIVE +LOCATIVES +LOCATOR +LOCATORS +LOCH +LOCHAN +LOCHANS +LOCHIA +LOCHIAL +LOCHS +LOCI +LOCK +LOCKABLE +LOCKAGE +LOCKAGES +LOCKBOX +LOCKBOXES +LOCKDOWN +LOCKDOWNS +LOCKED +LOCKER +LOCKERS +LOCKET +LOCKETS +LOCKING +LOCKJAW +LOCKJAWS +LOCKKEEPER +LOCKKEEPERS +LOCKMAKER +LOCKMAKERS +LOCKNUT +LOCKNUTS +LOCKOUT +LOCKOUTS +LOCKRAM +LOCKRAMS +LOCKS +LOCKSET +LOCKSETS +LOCKSMITH +LOCKSMITHING +LOCKSMITHINGS +LOCKSMITHS +LOCKSTEP +LOCKSTEPS +LOCKSTITCH +LOCKSTITCHED +LOCKSTITCHES +LOCKSTITCHING +LOCKUP +LOCKUPS +LOCO +LOCOED +LOCOES +LOCOFOCO +LOCOFOCOS +LOCOING +LOCOISM +LOCOISMS +LOCOMOTE +LOCOMOTED +LOCOMOTES +LOCOMOTING +LOCOMOTION +LOCOMOTIONS +LOCOMOTIVE +LOCOMOTIVES +LOCOMOTOR +LOCOMOTORS +LOCOMOTORY +LOCOS +LOCOWEED +LOCOWEEDS +LOCULAR +LOCULATE +LOCULATED +LOCULE +LOCULED +LOCULES +LOCULI +LOCULICIDAL +LOCULUS +LOCUM +LOCUMS +LOCUS +LOCUST +LOCUSTA +LOCUSTAE +LOCUSTAL +LOCUSTS +LOCUTION +LOCUTIONS +LOCUTORIES +LOCUTORY +LODE +LODEN +LODENS +LODES +LODESTAR +LODESTARS +LODESTONE +LODESTONES +LODGE +LODGED +LODGEMENT +LODGEMENTS +LODGER +LODGERS +LODGES +LODGING +LODGINGS +LODGMENT +LODGMENTS +LODICULE +LODICULES +LOESS +LOESSAL +LOESSES +LOESSIAL +LOFT +LOFTED +LOFTER +LOFTERS +LOFTIER +LOFTIEST +LOFTILY +LOFTINESS +LOFTINESSES +LOFTING +LOFTLESS +LOFTLIKE +LOFTS +LOFTY +LOG +LOGAN +LOGANBERRIES +LOGANBERRY +LOGANIA +LOGANS +LOGAOEDIC +LOGAOEDICS +LOGARITHM +LOGARITHMIC +LOGARITHMICALLY +LOGARITHMS +LOGBOOK +LOGBOOKS +LOGE +LOGES +LOGGATS +LOGGED +LOGGER +LOGGERHEAD +LOGGERHEADS +LOGGERS +LOGGETS +LOGGIA +LOGGIAS +LOGGIE +LOGGIER +LOGGIEST +LOGGING +LOGGINGS +LOGGISH +LOGGY +LOGIA +LOGIC +LOGICAL +LOGICALITIES +LOGICALITY +LOGICALLY +LOGICALNESS +LOGICALNESSES +LOGICIAN +LOGICIANS +LOGICISE +LOGICISED +LOGICISES +LOGICISING +LOGICIZE +LOGICIZED +LOGICIZES +LOGICIZING +LOGICLESS +LOGICS +LOGIER +LOGIEST +LOGILY +LOGIN +LOGINESS +LOGINESSES +LOGINS +LOGION +LOGIONS +LOGISTIC +LOGISTICAL +LOGISTICALLY +LOGISTICIAN +LOGISTICIANS +LOGISTICS +LOGJAM +LOGJAMMED +LOGJAMMING +LOGJAMS +LOGNORMAL +LOGNORMALITIES +LOGNORMALITY +LOGNORMALLY +LOGO +LOGOGRAM +LOGOGRAMMATIC +LOGOGRAMS +LOGOGRAPH +LOGOGRAPHIC +LOGOGRAPHICALLY +LOGOGRAPHS +LOGOGRIPH +LOGOGRIPHS +LOGOI +LOGOMACH +LOGOMACHIES +LOGOMACHS +LOGOMACHY +LOGON +LOGONS +LOGOPHILE +LOGOPHILES +LOGORRHEA +LOGORRHEAS +LOGORRHEIC +LOGOS +LOGOTYPE +LOGOTYPES +LOGOTYPIES +LOGOTYPY +LOGROLL +LOGROLLED +LOGROLLER +LOGROLLERS +LOGROLLING +LOGROLLINGS +LOGROLLS +LOGS +LOGWAY +LOGWAYS +LOGWOOD +LOGWOODS +LOGY +LOID +LOIDED +LOIDING +LOIDS +LOIN +LOINCLOTH +LOINCLOTHS +LOINS +LOITER +LOITERED +LOITERER +LOITERERS +LOITERING +LOITERS +LOLL +LOLLED +LOLLER +LOLLERS +LOLLIES +LOLLING +LOLLINGLY +LOLLIPOP +LOLLIPOPS +LOLLOP +LOLLOPED +LOLLOPING +LOLLOPS +LOLLOPY +LOLLS +LOLLY +LOLLYGAG +LOLLYGAGGED +LOLLYGAGGING +LOLLYGAGS +LOLLYPOP +LOLLYPOPS +LOMEIN +LOMEINS +LOMENT +LOMENTA +LOMENTS +LOMENTUM +LOMENTUMS +LONE +LONELIER +LONELIEST +LONELILY +LONELINESS +LONELINESSES +LONELY +LONENESS +LONENESSES +LONER +LONERS +LONESOME +LONESOMELY +LONESOMENESS +LONESOMENESSES +LONESOMES +LONG +LONGAN +LONGANIMITIES +LONGANIMITY +LONGANS +LONGBOAT +LONGBOATS +LONGBOW +LONGBOWMAN +LONGBOWMEN +LONGBOWS +LONGCLOTH +LONGCLOTHS +LONGE +LONGED +LONGEING +LONGER +LONGERON +LONGERONS +LONGERS +LONGES +LONGEST +LONGEVITIES +LONGEVITY +LONGEVOUS +LONGHAIR +LONGHAIRED +LONGHAIRS +LONGHAND +LONGHANDS +LONGHEAD +LONGHEADED +LONGHEADEDNESS +LONGHEADS +LONGHORN +LONGHORNS +LONGHOUSE +LONGHOUSES +LONGICORN +LONGICORNS +LONGIES +LONGING +LONGINGLY +LONGINGS +LONGISH +LONGITUDE +LONGITUDES +LONGITUDINAL +LONGITUDINALLY +LONGJUMP +LONGJUMPED +LONGJUMPING +LONGJUMPS +LONGLEAF +LONGLEAVES +LONGLINE +LONGLINES +LONGLY +LONGNECK +LONGNECKS +LONGNESS +LONGNESSES +LONGS +LONGSHIP +LONGSHIPS +LONGSHORE +LONGSHOREMAN +LONGSHOREMEN +LONGSHORING +LONGSHORINGS +LONGSIGHTED +LONGSIGHTEDNESS +LONGSOME +LONGSOMELY +LONGSOMENESS +LONGSOMENESSES +LONGSPUR +LONGSPURS +LONGTIME +LONGUEUR +LONGUEURS +LONGWAYS +LONGWISE +LOO +LOOBIES +LOOBY +LOOED +LOOEY +LOOEYS +LOOF +LOOFA +LOOFAH +LOOFAHS +LOOFAS +LOOFS +LOOIE +LOOIES +LOOING +LOOK +LOOKALIKE +LOOKALIKES +LOOKDOWN +LOOKDOWNS +LOOKED +LOOKER +LOOKERS +LOOKING +LOOKISM +LOOKISMS +LOOKIST +LOOKISTS +LOOKOUT +LOOKOUTS +LOOKS +LOOKSISM +LOOKSISMS +LOOKUP +LOOKUPS +LOOM +LOOMED +LOOMING +LOOMS +LOON +LOONEY +LOONEYS +LOONIE +LOONIER +LOONIES +LOONIEST +LOONILY +LOONINESS +LOONINESSES +LOONS +LOONY +LOOP +LOOPED +LOOPER +LOOPERS +LOOPHOLE +LOOPHOLED +LOOPHOLES +LOOPHOLING +LOOPIER +LOOPIEST +LOOPILY +LOOPINESS +LOOPINESSES +LOOPING +LOOPS +LOOPY +LOOS +LOOSE +LOOSED +LOOSELY +LOOSEN +LOOSENED +LOOSENER +LOOSENERS +LOOSENESS +LOOSENESSES +LOOSENING +LOOSENS +LOOSER +LOOSES +LOOSEST +LOOSESTRIFE +LOOSESTRIFES +LOOSING +LOOT +LOOTED +LOOTER +LOOTERS +LOOTING +LOOTS +LOP +LOPE +LOPED +LOPER +LOPERS +LOPES +LOPHOPHORE +LOPHOPHORES +LOPING +LOPPED +LOPPER +LOPPERED +LOPPERING +LOPPERS +LOPPIER +LOPPIEST +LOPPING +LOPPY +LOPS +LOPSIDED +LOPSIDEDLY +LOPSIDEDNESS +LOPSIDEDNESSES +LOPSTICK +LOPSTICKS +LOQUACIOUS +LOQUACIOUSLY +LOQUACIOUSNESS +LOQUACITIES +LOQUACITY +LOQUAT +LOQUATS +LORAL +LORAN +LORANS +LORAZEPAM +LORAZEPAMS +LORD +LORDED +LORDING +LORDINGS +LORDLESS +LORDLIER +LORDLIEST +LORDLIKE +LORDLINESS +LORDLINESSES +LORDLING +LORDLINGS +LORDLY +LORDOMA +LORDOMAS +LORDOSES +LORDOSIS +LORDOTIC +LORDS +LORDSHIP +LORDSHIPS +LORE +LOREAL +LORES +LORGNETTE +LORGNETTES +LORGNON +LORGNONS +LORICA +LORICAE +LORICATE +LORICATED +LORICATES +LORIES +LORIKEET +LORIKEETS +LORIMER +LORIMERS +LORINER +LORINERS +LORIS +LORISES +LORN +LORNNESS +LORNNESSES +LORRIES +LORRY +LORY +LOSABLE +LOSABLENESS +LOSABLENESSES +LOSE +LOSEL +LOSELS +LOSER +LOSERS +LOSES +LOSING +LOSINGLY +LOSINGS +LOSS +LOSSES +LOSSLESS +LOSSY +LOST +LOSTNESS +LOSTNESSES +LOT +LOTA +LOTAH +LOTAHS +LOTAS +LOTH +LOTHARIO +LOTHARIOS +LOTHSOME +LOTI +LOTIC +LOTION +LOTIONS +LOTOS +LOTOSES +LOTS +LOTTE +LOTTED +LOTTER +LOTTERIES +LOTTERS +LOTTERY +LOTTES +LOTTING +LOTTO +LOTTOS +LOTUS +LOTUSES +LOTUSLAND +LOTUSLANDS +LOUCHE +LOUD +LOUDEN +LOUDENED +LOUDENING +LOUDENS +LOUDER +LOUDEST +LOUDISH +LOUDLIER +LOUDLIEST +LOUDLY +LOUDMOUTH +LOUDMOUTHED +LOUDMOUTHS +LOUDNESS +LOUDNESSES +LOUDSPEAKER +LOUDSPEAKERS +LOUGH +LOUGHS +LOUIE +LOUIES +LOUIS +LOUMA +LOUMAS +LOUNGE +LOUNGED +LOUNGER +LOUNGERS +LOUNGES +LOUNGEWEAR +LOUNGEWEARS +LOUNGING +LOUNGY +LOUP +LOUPE +LOUPED +LOUPEN +LOUPES +LOUPING +LOUPS +LOUR +LOURED +LOURING +LOURS +LOURY +LOUSE +LOUSED +LOUSES +LOUSEWORT +LOUSEWORTS +LOUSIER +LOUSIEST +LOUSILY +LOUSINESS +LOUSINESSES +LOUSING +LOUSY +LOUT +LOUTED +LOUTING +LOUTISH +LOUTISHLY +LOUTISHNESS +LOUTISHNESSES +LOUTS +LOUVER +LOUVERED +LOUVERS +LOUVRE +LOUVRED +LOUVRES +LOVABILITIES +LOVABILITY +LOVABLE +LOVABLENESS +LOVABLENESSES +LOVABLY +LOVAGE +LOVAGES +LOVASTATIN +LOVASTATINS +LOVAT +LOVATS +LOVE +LOVEABLE +LOVEABLY +LOVEBIRD +LOVEBIRDS +LOVEBUG +LOVEBUGS +LOVED +LOVEFEST +LOVEFESTS +LOVELESS +LOVELESSLY +LOVELESSNESS +LOVELESSNESSES +LOVELIER +LOVELIES +LOVELIEST +LOVELILY +LOVELINESS +LOVELINESSES +LOVELOCK +LOVELOCKS +LOVELORN +LOVELORNNESS +LOVELORNNESSES +LOVELY +LOVEMAKER +LOVEMAKERS +LOVEMAKING +LOVEMAKINGS +LOVER +LOVERLY +LOVERS +LOVES +LOVESEAT +LOVESEATS +LOVESICK +LOVESICKNESS +LOVESICKNESSES +LOVESOME +LOVEVINE +LOVEVINES +LOVING +LOVINGLY +LOVINGNESS +LOVINGNESSES +LOW +LOWBALL +LOWBALLED +LOWBALLING +LOWBALLS +LOWBORN +LOWBOY +LOWBOYS +LOWBRED +LOWBROW +LOWBROWED +LOWBROWS +LOWDOWN +LOWDOWNS +LOWE +LOWED +LOWER +LOWERCASE +LOWERCASED +LOWERCASES +LOWERCASING +LOWERED +LOWERING +LOWERMOST +LOWERS +LOWERY +LOWES +LOWEST +LOWING +LOWINGS +LOWISH +LOWLAND +LOWLANDER +LOWLANDERS +LOWLANDS +LOWLIER +LOWLIEST +LOWLIFE +LOWLIFER +LOWLIFERS +LOWLIFES +LOWLIGHT +LOWLIGHTS +LOWLIHEAD +LOWLIHEADS +LOWLILY +LOWLINESS +LOWLINESSES +LOWLIVES +LOWLY +LOWN +LOWNESS +LOWNESSES +LOWRIDER +LOWRIDERS +LOWS +LOWSE +LOX +LOXED +LOXES +LOXING +LOXODROME +LOXODROMES +LOYAL +LOYALER +LOYALEST +LOYALISM +LOYALISMS +LOYALIST +LOYALISTS +LOYALLY +LOYALTIES +LOYALTY +LOZENGE +LOZENGES +LUAU +LUAUS +LUBBER +LUBBERLINESS +LUBBERLINESSES +LUBBERLY +LUBBERS +LUBE +LUBED +LUBES +LUBING +LUBRIC +LUBRICAL +LUBRICANT +LUBRICANTS +LUBRICATE +LUBRICATED +LUBRICATES +LUBRICATING +LUBRICATION +LUBRICATIONS +LUBRICATIVE +LUBRICATOR +LUBRICATORS +LUBRICIOUS +LUBRICIOUSLY +LUBRICITIES +LUBRICITY +LUBRICOUS +LUCARNE +LUCARNES +LUCE +LUCENCE +LUCENCES +LUCENCIES +LUCENCY +LUCENT +LUCENTLY +LUCERN +LUCERNE +LUCERNES +LUCERNS +LUCES +LUCID +LUCIDITIES +LUCIDITY +LUCIDLY +LUCIDNESS +LUCIDNESSES +LUCIFER +LUCIFERASE +LUCIFERASES +LUCIFERIN +LUCIFERINS +LUCIFEROUS +LUCIFERS +LUCITE +LUCITES +LUCK +LUCKED +LUCKIE +LUCKIER +LUCKIES +LUCKIEST +LUCKILY +LUCKINESS +LUCKINESSES +LUCKING +LUCKLESS +LUCKS +LUCKY +LUCRATIVE +LUCRATIVELY +LUCRATIVENESS +LUCRATIVENESSES +LUCRE +LUCRES +LUCUBRATE +LUCUBRATED +LUCUBRATES +LUCUBRATING +LUCUBRATION +LUCUBRATIONS +LUCULENT +LUCULENTLY +LUDE +LUDES +LUDIC +LUDICROUS +LUDICROUSLY +LUDICROUSNESS +LUDICROUSNESSES +LUES +LUETIC +LUETICS +LUFF +LUFFA +LUFFAS +LUFFED +LUFFING +LUFFS +LUFTMENSCH +LUFTMENSCHEN +LUG +LUGE +LUGED +LUGEING +LUGER +LUGERS +LUGES +LUGGAGE +LUGGAGES +LUGGED +LUGGER +LUGGERS +LUGGIE +LUGGIES +LUGGING +LUGING +LUGS +LUGSAIL +LUGSAILS +LUGUBRIOUS +LUGUBRIOUSLY +LUGUBRIOUSNESS +LUGWORM +LUGWORMS +LUKEWARM +LUKEWARMLY +LUKEWARMNESS +LUKEWARMNESSES +LULL +LULLABIED +LULLABIES +LULLABY +LULLABYING +LULLED +LULLER +LULLERS +LULLING +LULLS +LULU +LULUS +LUM +LUMA +LUMAS +LUMBAGO +LUMBAGOS +LUMBAR +LUMBARS +LUMBER +LUMBERED +LUMBERER +LUMBERERS +LUMBERING +LUMBERINGS +LUMBERJACK +LUMBERJACKS +LUMBERLY +LUMBERMAN +LUMBERMEN +LUMBERS +LUMBERYARD +LUMBERYARDS +LUMBOSACRAL +LUMBRICAL +LUMBRICALS +LUMEN +LUMENAL +LUMENS +LUMINA +LUMINAIRE +LUMINAIRES +LUMINAL +LUMINANCE +LUMINANCES +LUMINARIA +LUMINARIAS +LUMINARIES +LUMINARY +LUMINESCE +LUMINESCED +LUMINESCENCE +LUMINESCENCES +LUMINESCENT +LUMINESCES +LUMINESCING +LUMINIFEROUS +LUMINISM +LUMINISMS +LUMINIST +LUMINISTS +LUMINOSITIES +LUMINOSITY +LUMINOUS +LUMINOUSLY +LUMINOUSNESS +LUMINOUSNESSES +LUMMOX +LUMMOXES +LUMP +LUMPECTOMIES +LUMPECTOMY +LUMPED +LUMPEN +LUMPENS +LUMPER +LUMPERS +LUMPFISH +LUMPFISHES +LUMPIER +LUMPIEST +LUMPILY +LUMPINESS +LUMPINESSES +LUMPING +LUMPINGLY +LUMPISH +LUMPISHLY +LUMPISHNESS +LUMPISHNESSES +LUMPS +LUMPY +LUMS +LUNA +LUNACIES +LUNACY +LUNAR +LUNARIAN +LUNARIANS +LUNARS +LUNAS +LUNATE +LUNATED +LUNATELY +LUNATIC +LUNATICS +LUNATION +LUNATIONS +LUNCH +LUNCHBOX +LUNCHBOXES +LUNCHED +LUNCHEON +LUNCHEONETTE +LUNCHEONETTES +LUNCHEONS +LUNCHER +LUNCHERS +LUNCHES +LUNCHING +LUNCHMEAT +LUNCHMEATS +LUNCHROOM +LUNCHROOMS +LUNCHTIME +LUNCHTIMES +LUNE +LUNES +LUNET +LUNETS +LUNETTE +LUNETTES +LUNG +LUNGAN +LUNGANS +LUNGE +LUNGED +LUNGEE +LUNGEES +LUNGER +LUNGERS +LUNGES +LUNGFISH +LUNGFISHES +LUNGFUL +LUNGFULS +LUNGI +LUNGING +LUNGIS +LUNGS +LUNGWORM +LUNGWORMS +LUNGWORT +LUNGWORTS +LUNGYI +LUNGYIS +LUNIER +LUNIES +LUNIEST +LUNISOLAR +LUNITIDAL +LUNK +LUNKER +LUNKERS +LUNKHEAD +LUNKHEADED +LUNKHEADS +LUNKS +LUNT +LUNTED +LUNTING +LUNTS +LUNULA +LUNULAE +LUNULAR +LUNULATE +LUNULATED +LUNULE +LUNULES +LUNY +LUPANAR +LUPANARS +LUPIN +LUPINE +LUPINES +LUPINS +LUPOUS +LUPULIN +LUPULINS +LUPUS +LUPUSES +LURCH +LURCHED +LURCHER +LURCHERS +LURCHES +LURCHING +LURDAN +LURDANE +LURDANES +LURDANS +LURE +LURED +LURER +LURERS +LURES +LUREX +LUREXES +LURID +LURIDLY +LURIDNESS +LURIDNESSES +LURING +LURINGLY +LURK +LURKED +LURKER +LURKERS +LURKING +LURKINGLY +LURKS +LUSCIOUS +LUSCIOUSLY +LUSCIOUSNESS +LUSCIOUSNESSES +LUSH +LUSHED +LUSHER +LUSHES +LUSHEST +LUSHING +LUSHLY +LUSHNESS +LUSHNESSES +LUST +LUSTED +LUSTER +LUSTERED +LUSTERING +LUSTERLESS +LUSTERS +LUSTERWARE +LUSTERWARES +LUSTFUL +LUSTFULLY +LUSTFULNESS +LUSTFULNESSES +LUSTIER +LUSTIEST +LUSTIHOOD +LUSTIHOODS +LUSTILY +LUSTINESS +LUSTINESSES +LUSTING +LUSTRA +LUSTRAL +LUSTRATE +LUSTRATED +LUSTRATES +LUSTRATING +LUSTRATION +LUSTRATIONS +LUSTRE +LUSTRED +LUSTRES +LUSTRING +LUSTRINGS +LUSTROUS +LUSTROUSLY +LUSTROUSNESS +LUSTROUSNESSES +LUSTRUM +LUSTRUMS +LUSTS +LUSTY +LUSUS +LUSUSES +LUTANIST +LUTANISTS +LUTE +LUTEA +LUTEAL +LUTECIUM +LUTECIUMS +LUTED +LUTEFISK +LUTEFISKS +LUTEIN +LUTEINIZATION +LUTEINIZATIONS +LUTEINIZE +LUTEINIZED +LUTEINIZES +LUTEINIZING +LUTEINS +LUTENIST +LUTENISTS +LUTEOLIN +LUTEOLINS +LUTEOTROPHIC +LUTEOTROPHIN +LUTEOTROPHINS +LUTEOTROPIC +LUTEOTROPIN +LUTEOTROPINS +LUTEOUS +LUTES +LUTESTRING +LUTESTRINGS +LUTETIUM +LUTETIUMS +LUTEUM +LUTFISK +LUTFISKS +LUTHERN +LUTHERNS +LUTHIER +LUTHIERS +LUTING +LUTINGS +LUTIST +LUTISTS +LUTZ +LUTZES +LUV +LUVS +LUX +LUXATE +LUXATED +LUXATES +LUXATING +LUXATION +LUXATIONS +LUXE +LUXES +LUXURIANCE +LUXURIANCES +LUXURIANT +LUXURIANTLY +LUXURIATE +LUXURIATED +LUXURIATES +LUXURIATING +LUXURIES +LUXURIOUS +LUXURIOUSLY +LUXURIOUSNESS +LUXURIOUSNESSES +LUXURY +LWEI +LWEIS +LYARD +LYART +LYASE +LYASES +LYCANTHROPIES +LYCANTHROPY +LYCEA +LYCEE +LYCEES +LYCEUM +LYCEUMS +LYCH +LYCHEE +LYCHEES +LYCHES +LYCHNIS +LYCHNISES +LYCOPENE +LYCOPENES +LYCOPOD +LYCOPODIUM +LYCOPODIUMS +LYCOPODS +LYCRA +LYCRAS +LYDDITE +LYDDITES +LYE +LYES +LYING +LYINGLY +LYINGS +LYMPH +LYMPHADENITIS +LYMPHADENITISES +LYMPHADENOPATHY +LYMPHANGIOGRAM +LYMPHANGIOGRAMS +LYMPHATIC +LYMPHATICALLY +LYMPHATICS +LYMPHOBLAST +LYMPHOBLASTIC +LYMPHOBLASTS +LYMPHOCYTE +LYMPHOCYTES +LYMPHOCYTIC +LYMPHOCYTOSES +LYMPHOCYTOSIS +LYMPHOGRAM +LYMPHOGRAMS +LYMPHOGRANULOMA +LYMPHOGRAPHIC +LYMPHOGRAPHIES +LYMPHOGRAPHY +LYMPHOID +LYMPHOKINE +LYMPHOKINES +LYMPHOMA +LYMPHOMAS +LYMPHOMATA +LYMPHOMATOSES +LYMPHOMATOSIS +LYMPHOMATOUS +LYMPHOSARCOMA +LYMPHOSARCOMAS +LYMPHOSARCOMATA +LYMPHS +LYNCEAN +LYNCH +LYNCHED +LYNCHER +LYNCHERS +LYNCHES +LYNCHING +LYNCHINGS +LYNCHPIN +LYNCHPINS +LYNX +LYNXES +LYONNAISE +LYOPHILE +LYOPHILED +LYOPHILIC +LYOPHILISE +LYOPHILISED +LYOPHILISES +LYOPHILISING +LYOPHILIZATION +LYOPHILIZATIONS +LYOPHILIZE +LYOPHILIZED +LYOPHILIZER +LYOPHILIZERS +LYOPHILIZES +LYOPHILIZING +LYOPHOBIC +LYRATE +LYRATED +LYRATELY +LYRE +LYREBIRD +LYREBIRDS +LYRES +LYRIC +LYRICAL +LYRICALLY +LYRICALNESS +LYRICALNESSES +LYRICISE +LYRICISED +LYRICISES +LYRICISING +LYRICISM +LYRICISMS +LYRICIST +LYRICISTS +LYRICIZE +LYRICIZED +LYRICIZES +LYRICIZING +LYRICON +LYRICONS +LYRICS +LYRIFORM +LYRISM +LYRISMS +LYRIST +LYRISTS +LYSATE +LYSATES +LYSE +LYSED +LYSES +LYSIMETER +LYSIMETERS +LYSIMETRIC +LYSIN +LYSINE +LYSINES +LYSING +LYSINS +LYSIS +LYSOGEN +LYSOGENIC +LYSOGENICITIES +LYSOGENICITY +LYSOGENIES +LYSOGENISE +LYSOGENISED +LYSOGENISES +LYSOGENISING +LYSOGENIZATION +LYSOGENIZATIONS +LYSOGENIZE +LYSOGENIZED +LYSOGENIZES +LYSOGENIZING +LYSOGENS +LYSOGENY +LYSOLECITHIN +LYSOLECITHINS +LYSOSOMAL +LYSOSOME +LYSOSOMES +LYSOZYME +LYSOZYMES +LYSSA +LYSSAS +LYTIC +LYTICALLY +LYTTA +LYTTAE +LYTTAS +MA +MAAR +MAARS +MABE +MABES +MAC +MACABER +MACABRE +MACABRELY +MACACO +MACACOS +MACADAM +MACADAMIA +MACADAMIAS +MACADAMIZE +MACADAMIZED +MACADAMIZES +MACADAMIZING +MACADAMS +MACAQUE +MACAQUES +MACARONI +MACARONIC +MACARONICS +MACARONIES +MACARONIS +MACAROON +MACAROONS +MACAW +MACAWS +MACCABAW +MACCABAWS +MACCABOY +MACCABOYS +MACCHIA +MACCHIE +MACCOBOY +MACCOBOYS +MACE +MACED +MACEDOINE +MACEDOINES +MACER +MACERATE +MACERATED +MACERATER +MACERATERS +MACERATES +MACERATING +MACERATION +MACERATIONS +MACERATOR +MACERATORS +MACERS +MACES +MACH +MACHE +MACHES +MACHETE +MACHETES +MACHICOLATED +MACHICOLATION +MACHICOLATIONS +MACHINABILITIES +MACHINABILITY +MACHINABLE +MACHINATE +MACHINATED +MACHINATES +MACHINATING +MACHINATION +MACHINATIONS +MACHINATOR +MACHINATORS +MACHINE +MACHINEABILITY +MACHINEABLE +MACHINED +MACHINELIKE +MACHINERIES +MACHINERY +MACHINES +MACHINING +MACHINIST +MACHINISTS +MACHISMO +MACHISMOS +MACHO +MACHOISM +MACHOISMS +MACHOS +MACHREE +MACHREES +MACHS +MACHZOR +MACHZORIM +MACHZORS +MACING +MACINTOSH +MACINTOSHES +MACK +MACKEREL +MACKERELS +MACKINAW +MACKINAWS +MACKINTOSH +MACKINTOSHES +MACKLE +MACKLED +MACKLES +MACKLING +MACKS +MACLE +MACLED +MACLES +MACON +MACONS +MACRAME +MACRAMES +MACRO +MACROAGGREGATE +MACROAGGREGATED +MACROAGGREGATES +MACROBIOTIC +MACROCOSM +MACROCOSMIC +MACROCOSMICALLY +MACROCOSMS +MACROCYCLIC +MACROCYST +MACROCYSTS +MACROCYTE +MACROCYTES +MACROCYTIC +MACROCYTOSES +MACROCYTOSIS +MACRODONT +MACROECONOMIC +MACROECONOMICS +MACROEVOLUTION +MACROEVOLUTIONS +MACROFOSSIL +MACROFOSSILS +MACROGAMETE +MACROGAMETES +MACROGLOBULIN +MACROGLOBULINS +MACROMERE +MACROMERES +MACROMOLE +MACROMOLECULAR +MACROMOLECULE +MACROMOLECULES +MACROMOLES +MACRON +MACRONS +MACRONUCLEAR +MACRONUCLEI +MACRONUCLEUS +MACRONUTRIENT +MACRONUTRIENTS +MACROPHAGE +MACROPHAGES +MACROPHAGIC +MACROPHOTOGRAPH +MACROPHYTE +MACROPHYTES +MACROPHYTIC +MACROPTEROUS +MACROS +MACROSCALE +MACROSCALES +MACROSCOPIC +MACROSCOPICALLY +MACROSTRUCTURAL +MACROSTRUCTURE +MACROSTRUCTURES +MACRURAL +MACRURAN +MACRURANS +MACRUROUS +MACS +MACULA +MACULAE +MACULAR +MACULAS +MACULATE +MACULATED +MACULATES +MACULATING +MACULATION +MACULATIONS +MACULE +MACULED +MACULES +MACULING +MACUMBA +MACUMBAS +MAD +MADAM +MADAME +MADAMES +MADAMS +MADCAP +MADCAPS +MADDED +MADDEN +MADDENED +MADDENING +MADDENINGLY +MADDENS +MADDER +MADDERS +MADDEST +MADDING +MADDISH +MADE +MADEIRA +MADEIRAS +MADELEINE +MADELEINES +MADEMOISELLE +MADEMOISELLES +MADERIZE +MADERIZED +MADERIZES +MADERIZING +MADHOUSE +MADHOUSES +MADLY +MADMAN +MADMEN +MADNESS +MADNESSES +MADONNA +MADONNAS +MADRAS +MADRASA +MADRASAH +MADRASAHS +MADRASAS +MADRASES +MADRASSA +MADRASSAH +MADRASSAHS +MADRASSAS +MADRE +MADREPORE +MADREPORES +MADREPORIAN +MADREPORIANS +MADREPORIC +MADREPORITE +MADREPORITES +MADRES +MADRIGAL +MADRIGALIAN +MADRIGALIST +MADRIGALISTS +MADRIGALS +MADRILENE +MADRILENES +MADRONA +MADRONAS +MADRONE +MADRONES +MADRONO +MADRONOS +MADS +MADTOM +MADTOMS +MADURO +MADUROS +MADWOMAN +MADWOMEN +MADWORT +MADWORTS +MADZOON +MADZOONS +MAE +MAELSTROM +MAELSTROMS +MAENAD +MAENADES +MAENADIC +MAENADISM +MAENADISMS +MAENADS +MAES +MAESTOSO +MAESTOSOS +MAESTRI +MAESTRO +MAESTROS +MAFFIA +MAFFIAS +MAFFICK +MAFFICKED +MAFFICKER +MAFFICKERS +MAFFICKING +MAFFICKS +MAFIA +MAFIAS +MAFIC +MAFIOSI +MAFIOSO +MAFIOSOS +MAFTIR +MAFTIRS +MAG +MAGALOG +MAGALOGS +MAGALOGUE +MAGALOGUES +MAGAZINE +MAGAZINES +MAGAZINIST +MAGAZINISTS +MAGDALEN +MAGDALENE +MAGDALENES +MAGDALENS +MAGE +MAGENTA +MAGENTAS +MAGES +MAGGOT +MAGGOTS +MAGGOTY +MAGI +MAGIAN +MAGIANS +MAGIC +MAGICAL +MAGICALLY +MAGICIAN +MAGICIANS +MAGICKED +MAGICKING +MAGICS +MAGILP +MAGILPS +MAGISTER +MAGISTERIAL +MAGISTERIALLY +MAGISTERIUM +MAGISTERIUMS +MAGISTERS +MAGISTRACIES +MAGISTRACY +MAGISTRAL +MAGISTRALLY +MAGISTRATE +MAGISTRATES +MAGISTRATICAL +MAGISTRATICALLY +MAGISTRATURE +MAGISTRATURES +MAGLEV +MAGLEVS +MAGMA +MAGMAS +MAGMATA +MAGMATIC +MAGNANIMITIES +MAGNANIMITY +MAGNANIMOUS +MAGNANIMOUSLY +MAGNANIMOUSNESS +MAGNATE +MAGNATES +MAGNESIA +MAGNESIAN +MAGNESIAS +MAGNESIC +MAGNESITE +MAGNESITES +MAGNESIUM +MAGNESIUMS +MAGNET +MAGNETIC +MAGNETICALLY +MAGNETICS +MAGNETISE +MAGNETISED +MAGNETISES +MAGNETISING +MAGNETISM +MAGNETISMS +MAGNETITE +MAGNETITES +MAGNETIZABLE +MAGNETIZATION +MAGNETIZATIONS +MAGNETIZE +MAGNETIZED +MAGNETIZER +MAGNETIZERS +MAGNETIZES +MAGNETIZING +MAGNETO +MAGNETOELECTRIC +MAGNETOGRAPH +MAGNETOGRAPHS +MAGNETOMETER +MAGNETOMETERS +MAGNETOMETRIC +MAGNETOMETRIES +MAGNETOMETRY +MAGNETON +MAGNETONS +MAGNETOPAUSE +MAGNETOPAUSES +MAGNETOS +MAGNETOSPHERE +MAGNETOSPHERES +MAGNETOSPHERIC +MAGNETOSTATIC +MAGNETRON +MAGNETRONS +MAGNETS +MAGNIFIC +MAGNIFICAL +MAGNIFICALLY +MAGNIFICAT +MAGNIFICATION +MAGNIFICATIONS +MAGNIFICATS +MAGNIFICENCE +MAGNIFICENCES +MAGNIFICENT +MAGNIFICENTLY +MAGNIFICO +MAGNIFICOES +MAGNIFICOS +MAGNIFIED +MAGNIFIER +MAGNIFIERS +MAGNIFIES +MAGNIFY +MAGNIFYING +MAGNILOQUENCE +MAGNILOQUENCES +MAGNILOQUENT +MAGNILOQUENTLY +MAGNITUDE +MAGNITUDES +MAGNOLIA +MAGNOLIAS +MAGNUM +MAGNUMS +MAGOT +MAGOTS +MAGPIE +MAGPIES +MAGS +MAGUEY +MAGUEYS +MAGUS +MAHARAJA +MAHARAJAH +MAHARAJAHS +MAHARAJAS +MAHARANEE +MAHARANEES +MAHARANI +MAHARANIS +MAHARISHI +MAHARISHIS +MAHATMA +MAHATMAS +MAHIMAHI +MAHIMAHIS +MAHJONG +MAHJONGG +MAHJONGGS +MAHJONGS +MAHLSTICK +MAHLSTICKS +MAHOE +MAHOES +MAHOGANIES +MAHOGANY +MAHONIA +MAHONIAS +MAHOUT +MAHOUTS +MAHUANG +MAHUANGS +MAHZOR +MAHZORIM +MAHZORS +MAIASAUR +MAIASAURA +MAIASAURAS +MAIASAURS +MAID +MAIDEN +MAIDENHAIR +MAIDENHAIRS +MAIDENHEAD +MAIDENHEADS +MAIDENHOOD +MAIDENHOODS +MAIDENLINESS +MAIDENLINESSES +MAIDENLY +MAIDENS +MAIDHOOD +MAIDHOODS +MAIDISH +MAIDS +MAIDSERVANT +MAIDSERVANTS +MAIEUTIC +MAIGRE +MAIHEM +MAIHEMS +MAIL +MAILABILITIES +MAILABILITY +MAILABLE +MAILBAG +MAILBAGS +MAILBOX +MAILBOXES +MAILE +MAILED +MAILER +MAILERS +MAILES +MAILGRAM +MAILGRAMS +MAILING +MAILINGS +MAILL +MAILLESS +MAILLOT +MAILLOTS +MAILLS +MAILMAN +MAILMEN +MAILROOM +MAILROOMS +MAILS +MAIM +MAIMED +MAIMER +MAIMERS +MAIMING +MAIMS +MAIN +MAINFRAME +MAINFRAMES +MAINLAND +MAINLANDER +MAINLANDERS +MAINLANDS +MAINLINE +MAINLINED +MAINLINER +MAINLINERS +MAINLINES +MAINLINING +MAINLY +MAINMAST +MAINMASTS +MAINS +MAINSAIL +MAINSAILS +MAINSHEET +MAINSHEETS +MAINSPRING +MAINSPRINGS +MAINSTAY +MAINSTAYS +MAINSTREAM +MAINSTREAMED +MAINSTREAMING +MAINSTREAMS +MAINTAIN +MAINTAINABILITY +MAINTAINABLE +MAINTAINED +MAINTAINER +MAINTAINERS +MAINTAINING +MAINTAINS +MAINTENANCE +MAINTENANCES +MAINTOP +MAINTOPS +MAIOLICA +MAIOLICAS +MAIR +MAIRS +MAISONETTE +MAISONETTES +MAIST +MAISTS +MAIZE +MAIZES +MAJAGUA +MAJAGUAS +MAJESTIC +MAJESTICALLY +MAJESTIES +MAJESTY +MAJOLICA +MAJOLICAS +MAJOR +MAJORDOMO +MAJORDOMOS +MAJORED +MAJORETTE +MAJORETTES +MAJORING +MAJORITARIAN +MAJORITARIANISM +MAJORITARIANS +MAJORITIES +MAJORITY +MAJORLY +MAJORS +MAJUSCULAR +MAJUSCULE +MAJUSCULES +MAKABLE +MAKAR +MAKARS +MAKE +MAKEABLE +MAKEBATE +MAKEBATES +MAKEFAST +MAKEFASTS +MAKEOVER +MAKEOVERS +MAKER +MAKEREADIES +MAKEREADY +MAKERS +MAKES +MAKESHIFT +MAKESHIFTS +MAKEUP +MAKEUPS +MAKEWEIGHT +MAKEWEIGHTS +MAKIMONO +MAKIMONOS +MAKING +MAKINGS +MAKO +MAKOS +MAKUTA +MALABSORPTION +MALABSORPTIONS +MALACCA +MALACCAS +MALACHITE +MALACHITES +MALACOLOGICAL +MALACOLOGIES +MALACOLOGIST +MALACOLOGISTS +MALACOLOGY +MALACOSTRACAN +MALACOSTRACANS +MALADAPTATION +MALADAPTATIONS +MALADAPTED +MALADAPTIVE +MALADIES +MALADJUSTED +MALADJUSTIVE +MALADJUSTMENT +MALADJUSTMENTS +MALADMINISTER +MALADMINISTERED +MALADMINISTERS +MALADROIT +MALADROITLY +MALADROITNESS +MALADROITNESSES +MALADROITS +MALADY +MALAGUENA +MALAGUENAS +MALAISE +MALAISES +MALAMUTE +MALAMUTES +MALANDERS +MALANGA +MALANGAS +MALAPERT +MALAPERTLY +MALAPERTNESS +MALAPERTNESSES +MALAPERTS +MALAPPORTIONED +MALAPROP +MALAPROPIAN +MALAPROPISM +MALAPROPISMS +MALAPROPIST +MALAPROPISTS +MALAPROPOS +MALAPROPS +MALAR +MALARIA +MALARIAL +MALARIAN +MALARIAS +MALARIOLOGIES +MALARIOLOGIST +MALARIOLOGISTS +MALARIOLOGY +MALARIOUS +MALARKEY +MALARKEYS +MALARKIES +MALARKY +MALAROMA +MALAROMAS +MALARS +MALATE +MALATES +MALATHION +MALATHIONS +MALCONTENT +MALCONTENTED +MALCONTENTEDLY +MALCONTENTS +MALDISTRIBUTION +MALE +MALEATE +MALEATES +MALEDICT +MALEDICTED +MALEDICTING +MALEDICTION +MALEDICTIONS +MALEDICTORY +MALEDICTS +MALEFACTION +MALEFACTIONS +MALEFACTOR +MALEFACTORS +MALEFIC +MALEFICENCE +MALEFICENCES +MALEFICENT +MALEMIUT +MALEMIUTS +MALEMUTE +MALEMUTES +MALENESS +MALENESSES +MALES +MALEVOLENCE +MALEVOLENCES +MALEVOLENT +MALEVOLENTLY +MALFEASANCE +MALFEASANCES +MALFED +MALFORMATION +MALFORMATIONS +MALFORMED +MALFUNCTION +MALFUNCTIONED +MALFUNCTIONING +MALFUNCTIONS +MALGRE +MALIC +MALICE +MALICES +MALICIOUS +MALICIOUSLY +MALICIOUSNESS +MALICIOUSNESSES +MALIGN +MALIGNANCE +MALIGNANCES +MALIGNANCIES +MALIGNANCY +MALIGNANT +MALIGNANTLY +MALIGNED +MALIGNER +MALIGNERS +MALIGNING +MALIGNITIES +MALIGNITY +MALIGNLY +MALIGNS +MALIHINI +MALIHINIS +MALINE +MALINES +MALINGER +MALINGERED +MALINGERER +MALINGERERS +MALINGERING +MALINGERS +MALISON +MALISONS +MALKIN +MALKINS +MALL +MALLARD +MALLARDS +MALLEABILITIES +MALLEABILITY +MALLEABLE +MALLEABLY +MALLED +MALLEE +MALLEES +MALLEI +MALLEMUCK +MALLEMUCKS +MALLEOLAR +MALLEOLI +MALLEOLUS +MALLET +MALLETS +MALLEUS +MALLING +MALLINGS +MALLOW +MALLOWS +MALLS +MALM +MALMIER +MALMIEST +MALMS +MALMSEY +MALMSEYS +MALMY +MALNOURISHED +MALNUTRITION +MALNUTRITIONS +MALOCCLUSION +MALOCCLUSIONS +MALODOR +MALODOROUS +MALODOROUSLY +MALODOROUSNESS +MALODORS +MALOLACTIC +MALOTI +MALPIGHIA +MALPOSED +MALPOSITION +MALPOSITIONS +MALPRACTICE +MALPRACTICES +MALPRACTITIONER +MALT +MALTASE +MALTASES +MALTED +MALTEDS +MALTHA +MALTHAS +MALTIER +MALTIEST +MALTINESS +MALTINESSES +MALTING +MALTOL +MALTOLS +MALTOSE +MALTOSES +MALTREAT +MALTREATED +MALTREATER +MALTREATERS +MALTREATING +MALTREATMENT +MALTREATMENTS +MALTREATS +MALTS +MALTSTER +MALTSTERS +MALTY +MALVASIA +MALVASIAN +MALVASIAS +MALVERSATION +MALVERSATIONS +MAMA +MAMALIGA +MAMALIGAS +MAMAS +MAMBA +MAMBAS +MAMBO +MAMBOED +MAMBOES +MAMBOING +MAMBOS +MAMELUKE +MAMELUKES +MAMEY +MAMEYES +MAMEYS +MAMIE +MAMIES +MAMLUK +MAMLUKS +MAMMA +MAMMAE +MAMMAL +MAMMALIAN +MAMMALIANS +MAMMALITIES +MAMMALITY +MAMMALOGIES +MAMMALOGIST +MAMMALOGISTS +MAMMALOGY +MAMMALS +MAMMARY +MAMMAS +MAMMATE +MAMMATI +MAMMATUS +MAMMEE +MAMMEES +MAMMER +MAMMERED +MAMMERING +MAMMERS +MAMMET +MAMMETS +MAMMEY +MAMMEYS +MAMMIE +MAMMIES +MAMMILLA +MAMMILLAE +MAMMILLARY +MAMMILLATED +MAMMITIDES +MAMMITIS +MAMMOCK +MAMMOCKED +MAMMOCKING +MAMMOCKS +MAMMOGRAM +MAMMOGRAMS +MAMMOGRAPHIC +MAMMOGRAPHIES +MAMMOGRAPHY +MAMMON +MAMMONISM +MAMMONISMS +MAMMONIST +MAMMONISTS +MAMMONS +MAMMOTH +MAMMOTHS +MAMMY +MAMZER +MAMZERS +MAN +MANA +MANACLE +MANACLED +MANACLES +MANACLING +MANAGE +MANAGEABILITIES +MANAGEABILITY +MANAGEABLE +MANAGEABLENESS +MANAGEABLY +MANAGED +MANAGEMENT +MANAGEMENTAL +MANAGEMENTS +MANAGER +MANAGERESS +MANAGERESSES +MANAGERIAL +MANAGERIALLY +MANAGERS +MANAGERSHIP +MANAGERSHIPS +MANAGES +MANAGING +MANAKIN +MANAKINS +MANANA +MANANAS +MANAS +MANAT +MANATEE +MANATEES +MANATOID +MANATS +MANCHE +MANCHES +MANCHET +MANCHETS +MANCHINEEL +MANCHINEELS +MANCIPLE +MANCIPLES +MANDALA +MANDALAS +MANDALIC +MANDAMUS +MANDAMUSED +MANDAMUSES +MANDAMUSING +MANDARIN +MANDARINATE +MANDARINATES +MANDARINIC +MANDARINISM +MANDARINISMS +MANDARINS +MANDATARIES +MANDATARY +MANDATE +MANDATED +MANDATES +MANDATING +MANDATOR +MANDATORIES +MANDATORILY +MANDATORS +MANDATORY +MANDIBLE +MANDIBLES +MANDIBULAR +MANDIBULATE +MANDIOCA +MANDIOCAS +MANDOLA +MANDOLAS +MANDOLIN +MANDOLINE +MANDOLINES +MANDOLINIST +MANDOLINISTS +MANDOLINS +MANDRAGORA +MANDRAGORAS +MANDRAKE +MANDRAKES +MANDREL +MANDRELS +MANDRIL +MANDRILL +MANDRILLS +MANDRILS +MANDUCATE +MANDUCATED +MANDUCATES +MANDUCATING +MANE +MANED +MANEGE +MANEGES +MANELESS +MANES +MANEUVER +MANEUVERABILITY +MANEUVERABLE +MANEUVERED +MANEUVERER +MANEUVERERS +MANEUVERING +MANEUVERS +MANFUL +MANFULLY +MANFULNESS +MANFULNESSES +MANGA +MANGABEY +MANGABEYS +MANGABIES +MANGABY +MANGANATE +MANGANATES +MANGANESE +MANGANESES +MANGANESIAN +MANGANIC +MANGANIN +MANGANINS +MANGANITE +MANGANITES +MANGANOUS +MANGAS +MANGE +MANGEL +MANGELS +MANGER +MANGERS +MANGES +MANGEY +MANGIER +MANGIEST +MANGILY +MANGINESS +MANGINESSES +MANGLE +MANGLED +MANGLER +MANGLERS +MANGLES +MANGLING +MANGO +MANGOES +MANGOLD +MANGOLDS +MANGONEL +MANGONELS +MANGOS +MANGOSTEEN +MANGOSTEENS +MANGROVE +MANGROVES +MANGY +MANHANDLE +MANHANDLED +MANHANDLES +MANHANDLING +MANHATTAN +MANHATTANS +MANHOLE +MANHOLES +MANHOOD +MANHOODS +MANHUNT +MANHUNTS +MANIA +MANIAC +MANIACAL +MANIACALLY +MANIACS +MANIAS +MANIC +MANICALLY +MANICOTTI +MANICOTTIS +MANICS +MANICURE +MANICURED +MANICURES +MANICURING +MANICURIST +MANICURISTS +MANIFEST +MANIFESTANT +MANIFESTANTS +MANIFESTATION +MANIFESTATIONS +MANIFESTED +MANIFESTER +MANIFESTERS +MANIFESTING +MANIFESTLY +MANIFESTO +MANIFESTOED +MANIFESTOES +MANIFESTOING +MANIFESTOS +MANIFESTS +MANIFOLD +MANIFOLDED +MANIFOLDING +MANIFOLDLY +MANIFOLDNESS +MANIFOLDNESSES +MANIFOLDS +MANIHOT +MANIHOTS +MANIKIN +MANIKINS +MANILA +MANILAS +MANILLA +MANILLAS +MANILLE +MANILLES +MANIOC +MANIOCA +MANIOCAS +MANIOCS +MANIPLE +MANIPLES +MANIPULABILITY +MANIPULABLE +MANIPULAR +MANIPULARS +MANIPULATABLE +MANIPULATE +MANIPULATED +MANIPULATES +MANIPULATING +MANIPULATION +MANIPULATIONS +MANIPULATIVE +MANIPULATIVELY +MANIPULATOR +MANIPULATORS +MANIPULATORY +MANITO +MANITOS +MANITOU +MANITOUS +MANITU +MANITUS +MANKIND +MANLESS +MANLIER +MANLIEST +MANLIKE +MANLIKELY +MANLILY +MANLINESS +MANLINESSES +MANLY +MANMADE +MANNA +MANNAN +MANNANS +MANNAS +MANNED +MANNEQUIN +MANNEQUINS +MANNER +MANNERED +MANNERISM +MANNERISMS +MANNERIST +MANNERISTIC +MANNERISTS +MANNERLESS +MANNERLINESS +MANNERLINESSES +MANNERLY +MANNERS +MANNIKIN +MANNIKINS +MANNING +MANNISH +MANNISHLY +MANNISHNESS +MANNISHNESSES +MANNITE +MANNITES +MANNITIC +MANNITOL +MANNITOLS +MANNOSE +MANNOSES +MANO +MANOEUVRE +MANOEUVRED +MANOEUVRES +MANOEUVRING +MANOMETER +MANOMETERS +MANOMETRIC +MANOMETRICALLY +MANOMETRIES +MANOMETRY +MANOR +MANORIAL +MANORIALISM +MANORIALISMS +MANORS +MANOS +MANPACK +MANPOWER +MANPOWERS +MANQUE +MANROPE +MANROPES +MANS +MANSARD +MANSARDED +MANSARDS +MANSE +MANSERVANT +MANSES +MANSION +MANSIONS +MANSLAUGHTER +MANSLAUGHTERS +MANSLAYER +MANSLAYERS +MANSUETUDE +MANSUETUDES +MANTA +MANTAS +MANTEAU +MANTEAUS +MANTEAUX +MANTEL +MANTELET +MANTELETS +MANTELPIECE +MANTELPIECES +MANTELS +MANTELSHELF +MANTELSHELVES +MANTES +MANTIC +MANTICORE +MANTICORES +MANTID +MANTIDS +MANTILLA +MANTILLAS +MANTIS +MANTISES +MANTISSA +MANTISSAS +MANTLE +MANTLED +MANTLES +MANTLET +MANTLETS +MANTLING +MANTLINGS +MANTRA +MANTRAM +MANTRAMS +MANTRAP +MANTRAPS +MANTRAS +MANTRIC +MANTUA +MANTUAS +MANUAL +MANUALLY +MANUALS +MANUARY +MANUBRIA +MANUBRIAL +MANUBRIUM +MANUBRIUMS +MANUFACTORIES +MANUFACTORY +MANUFACTURE +MANUFACTURED +MANUFACTURER +MANUFACTURERS +MANUFACTURES +MANUFACTURING +MANUFACTURINGS +MANUMISSION +MANUMISSIONS +MANUMIT +MANUMITS +MANUMITTED +MANUMITTING +MANURE +MANURED +MANURER +MANURERS +MANURES +MANURIAL +MANURING +MANUS +MANUSCRIPT +MANUSCRIPTS +MANWARD +MANWARDS +MANWISE +MANY +MANYFOLD +MANYPLIES +MANZANITA +MANZANITAS +MAP +MAPLE +MAPLELIKE +MAPLES +MAPLIKE +MAPMAKER +MAPMAKERS +MAPMAKING +MAPMAKINGS +MAPPABLE +MAPPED +MAPPER +MAPPERS +MAPPING +MAPPINGS +MAPS +MAQUETTE +MAQUETTES +MAQUI +MAQUILA +MAQUILADORA +MAQUILADORAS +MAQUILAS +MAQUILLAGE +MAQUILLAGES +MAQUIS +MAR +MARA +MARABOU +MARABOUS +MARABOUT +MARABOUTS +MARACA +MARACAS +MARANATHA +MARANATHAS +MARANTA +MARANTAS +MARAS +MARASCA +MARASCAS +MARASCHINO +MARASCHINOS +MARASMIC +MARASMOID +MARASMUS +MARASMUSES +MARATHON +MARATHONER +MARATHONERS +MARATHONING +MARATHONINGS +MARATHONS +MARAUD +MARAUDED +MARAUDER +MARAUDERS +MARAUDING +MARAUDS +MARAVEDI +MARAVEDIS +MARBELIZE +MARBELIZED +MARBELIZES +MARBELIZING +MARBLE +MARBLED +MARBLEISE +MARBLEISED +MARBLEISES +MARBLEISING +MARBLEIZE +MARBLEIZED +MARBLEIZES +MARBLEIZING +MARBLER +MARBLERS +MARBLES +MARBLIER +MARBLIEST +MARBLING +MARBLINGS +MARBLY +MARC +MARCASITE +MARCASITES +MARCATO +MARCATOS +MARCEL +MARCELLED +MARCELLER +MARCELLERS +MARCELLING +MARCELS +MARCH +MARCHED +MARCHEN +MARCHER +MARCHERS +MARCHES +MARCHESA +MARCHESE +MARCHESI +MARCHING +MARCHIONESS +MARCHIONESSES +MARCHLAND +MARCHLANDS +MARCHLIKE +MARCHPANE +MARCHPANES +MARCS +MARE +MAREMMA +MAREMME +MARENGO +MARES +MARGARIC +MARGARIN +MARGARINE +MARGARINES +MARGARINS +MARGARITA +MARGARITAS +MARGARITE +MARGARITES +MARGAY +MARGAYS +MARGE +MARGENT +MARGENTED +MARGENTING +MARGENTS +MARGES +MARGIN +MARGINAL +MARGINALIA +MARGINALITIES +MARGINALITY +MARGINALIZATION +MARGINALIZE +MARGINALIZED +MARGINALIZES +MARGINALIZING +MARGINALLY +MARGINALS +MARGINATE +MARGINATED +MARGINATES +MARGINATING +MARGINATION +MARGINATIONS +MARGINED +MARGINING +MARGINS +MARGRAVATE +MARGRAVATES +MARGRAVE +MARGRAVES +MARGRAVIAL +MARGRAVIATE +MARGRAVIATES +MARGRAVINE +MARGRAVINES +MARGUERITE +MARGUERITES +MARIA +MARIACHI +MARIACHIS +MARICULTURE +MARICULTURES +MARICULTURIST +MARICULTURISTS +MARIGOLD +MARIGOLDS +MARIHUANA +MARIHUANAS +MARIJUANA +MARIJUANAS +MARIMBA +MARIMBAS +MARIMBIST +MARIMBISTS +MARINA +MARINADE +MARINADED +MARINADES +MARINADING +MARINARA +MARINARAS +MARINAS +MARINATE +MARINATED +MARINATES +MARINATING +MARINATION +MARINATIONS +MARINE +MARINER +MARINERS +MARINES +MARIONETTE +MARIONETTES +MARIPOSA +MARIPOSAS +MARISH +MARISHES +MARITAL +MARITALLY +MARITIME +MARJORAM +MARJORAMS +MARK +MARKA +MARKAS +MARKDOWN +MARKDOWNS +MARKED +MARKEDLY +MARKEDNESS +MARKEDNESSES +MARKER +MARKERS +MARKET +MARKETABILITIES +MARKETABILITY +MARKETABLE +MARKETED +MARKETEER +MARKETEERS +MARKETER +MARKETERS +MARKETING +MARKETINGS +MARKETPLACE +MARKETPLACES +MARKETS +MARKHOOR +MARKHOORS +MARKHOR +MARKHORS +MARKING +MARKINGS +MARKKA +MARKKAA +MARKKAS +MARKS +MARKSMAN +MARKSMANSHIP +MARKSMANSHIPS +MARKSMEN +MARKSWOMAN +MARKSWOMEN +MARKUP +MARKUPS +MARL +MARLED +MARLIER +MARLIEST +MARLIN +MARLINE +MARLINES +MARLINESPIKE +MARLINESPIKES +MARLING +MARLINGS +MARLINS +MARLINSPIKE +MARLINSPIKES +MARLITE +MARLITES +MARLITIC +MARLS +MARLSTONE +MARLSTONES +MARLY +MARMALADE +MARMALADES +MARMITE +MARMITES +MARMOREAL +MARMOREALLY +MARMOREAN +MARMOSET +MARMOSETS +MARMOT +MARMOTS +MAROCAIN +MAROCAINS +MAROON +MAROONED +MAROONING +MAROONS +MARPLOT +MARPLOTS +MARQUE +MARQUEE +MARQUEES +MARQUES +MARQUESS +MARQUESSATE +MARQUESSATES +MARQUESSES +MARQUETERIE +MARQUETERIES +MARQUETRIES +MARQUETRY +MARQUIS +MARQUISATE +MARQUISATES +MARQUISE +MARQUISES +MARQUISETTE +MARQUISETTES +MARRAM +MARRAMS +MARRANO +MARRANOS +MARRED +MARRER +MARRERS +MARRIAGE +MARRIAGEABILITY +MARRIAGEABLE +MARRIAGES +MARRIED +MARRIEDS +MARRIER +MARRIERS +MARRIES +MARRING +MARRON +MARRONS +MARROW +MARROWBONE +MARROWBONES +MARROWED +MARROWFAT +MARROWFATS +MARROWING +MARROWS +MARROWY +MARRY +MARRYING +MARS +MARSALA +MARSALAS +MARSE +MARSEILLE +MARSEILLES +MARSES +MARSH +MARSHAL +MARSHALCIES +MARSHALCY +MARSHALED +MARSHALING +MARSHALL +MARSHALLED +MARSHALLING +MARSHALLS +MARSHALS +MARSHALSHIP +MARSHALSHIPS +MARSHES +MARSHIER +MARSHIEST +MARSHINESS +MARSHINESSES +MARSHLAND +MARSHLANDS +MARSHLIKE +MARSHMALLOW +MARSHMALLOWS +MARSHMALLOWY +MARSHY +MARSUPIA +MARSUPIAL +MARSUPIALS +MARSUPIUM +MART +MARTAGON +MARTAGONS +MARTED +MARTELLO +MARTELLOS +MARTEN +MARTENS +MARTENSITE +MARTENSITES +MARTENSITIC +MARTENSITICALLY +MARTIAL +MARTIALLY +MARTIAN +MARTIANS +MARTIN +MARTINET +MARTINETS +MARTING +MARTINGAL +MARTINGALE +MARTINGALES +MARTINGALS +MARTINI +MARTINIS +MARTINS +MARTLET +MARTLETS +MARTS +MARTYR +MARTYRDOM +MARTYRDOMS +MARTYRED +MARTYRIES +MARTYRING +MARTYRIZATION +MARTYRIZATIONS +MARTYRIZE +MARTYRIZED +MARTYRIZES +MARTYRIZING +MARTYRLY +MARTYROLOGIES +MARTYROLOGIST +MARTYROLOGISTS +MARTYROLOGY +MARTYRS +MARTYRY +MARVEL +MARVELED +MARVELING +MARVELLED +MARVELLING +MARVELLOUS +MARVELOUS +MARVELOUSLY +MARVELOUSNESS +MARVELOUSNESSES +MARVELS +MARVY +MARYJANE +MARYJANES +MARZIPAN +MARZIPANS +MAS +MASA +MASALA +MASALAS +MASAS +MASCARA +MASCARAED +MASCARAING +MASCARAS +MASCARPONE +MASCARPONES +MASCON +MASCONS +MASCOT +MASCOTS +MASCULINE +MASCULINELY +MASCULINES +MASCULINISE +MASCULINISED +MASCULINISES +MASCULINISING +MASCULINIST +MASCULINISTS +MASCULINITIES +MASCULINITY +MASCULINIZATION +MASCULINIZE +MASCULINIZED +MASCULINIZES +MASCULINIZING +MASER +MASERS +MASH +MASHED +MASHER +MASHERS +MASHES +MASHGIACH +MASHGIAH +MASHGICHIM +MASHGIHIM +MASHIE +MASHIES +MASHING +MASHY +MASJID +MASJIDS +MASK +MASKABLE +MASKED +MASKEG +MASKEGS +MASKER +MASKERS +MASKING +MASKINGS +MASKLIKE +MASKS +MASOCHISM +MASOCHISMS +MASOCHIST +MASOCHISTIC +MASOCHISTICALLY +MASOCHISTS +MASON +MASONED +MASONIC +MASONING +MASONITE +MASONITES +MASONRIES +MASONRY +MASONS +MASQUE +MASQUER +MASQUERADE +MASQUERADED +MASQUERADER +MASQUERADERS +MASQUERADES +MASQUERADING +MASQUERS +MASQUES +MASS +MASSA +MASSACRE +MASSACRED +MASSACRER +MASSACRERS +MASSACRES +MASSACRING +MASSAGE +MASSAGED +MASSAGER +MASSAGERS +MASSAGES +MASSAGING +MASSAS +MASSASAUGA +MASSASAUGAS +MASSCULT +MASSCULTS +MASSE +MASSED +MASSEDLY +MASSES +MASSETER +MASSETERIC +MASSETERS +MASSEUR +MASSEURS +MASSEUSE +MASSEUSES +MASSICOT +MASSICOTS +MASSIER +MASSIEST +MASSIF +MASSIFS +MASSINESS +MASSINESSES +MASSING +MASSIVE +MASSIVELY +MASSIVENESS +MASSIVENESSES +MASSLESS +MASSY +MAST +MASTABA +MASTABAH +MASTABAHS +MASTABAS +MASTECTOMIES +MASTECTOMY +MASTED +MASTER +MASTERDOM +MASTERDOMS +MASTERED +MASTERFUL +MASTERFULLY +MASTERFULNESS +MASTERFULNESSES +MASTERIES +MASTERING +MASTERLINESS +MASTERLINESSES +MASTERLY +MASTERMIND +MASTERMINDED +MASTERMINDING +MASTERMINDS +MASTERPIECE +MASTERPIECES +MASTERS +MASTERSHIP +MASTERSHIPS +MASTERSINGER +MASTERSINGERS +MASTERSTROKE +MASTERSTROKES +MASTERWORK +MASTERWORKS +MASTERY +MASTHEAD +MASTHEADED +MASTHEADING +MASTHEADS +MASTIC +MASTICATE +MASTICATED +MASTICATES +MASTICATING +MASTICATION +MASTICATIONS +MASTICATOR +MASTICATORIES +MASTICATORS +MASTICATORY +MASTICHE +MASTICHES +MASTICS +MASTIFF +MASTIFFS +MASTIGOPHORAN +MASTIGOPHORANS +MASTING +MASTITIC +MASTITIDES +MASTITIS +MASTIX +MASTIXES +MASTLESS +MASTLIKE +MASTODON +MASTODONIC +MASTODONS +MASTODONT +MASTODONTS +MASTOID +MASTOIDECTOMIES +MASTOIDECTOMY +MASTOIDITIS +MASTOIDITISES +MASTOIDS +MASTOPEXIES +MASTOPEXY +MASTS +MASTURBATE +MASTURBATED +MASTURBATES +MASTURBATING +MASTURBATION +MASTURBATIONS +MASTURBATOR +MASTURBATORS +MASTURBATORY +MASURIUM +MASURIUMS +MAT +MATADOR +MATADORS +MATAMBALA +MATCH +MATCHABLE +MATCHBOARD +MATCHBOARDS +MATCHBOOK +MATCHBOOKS +MATCHBOX +MATCHBOXES +MATCHED +MATCHER +MATCHERS +MATCHES +MATCHING +MATCHLESS +MATCHLESSLY +MATCHLOCK +MATCHLOCKS +MATCHMADE +MATCHMAKE +MATCHMAKER +MATCHMAKERS +MATCHMAKES +MATCHMAKING +MATCHMAKINGS +MATCHMARK +MATCHMARKED +MATCHMARKING +MATCHMARKS +MATCHSTICK +MATCHSTICKS +MATCHUP +MATCHUPS +MATCHWOOD +MATCHWOODS +MATE +MATED +MATELASSE +MATELASSES +MATELESS +MATELOT +MATELOTE +MATELOTES +MATELOTS +MATER +MATERFAMILIAS +MATERFAMILIASES +MATERIAL +MATERIALISE +MATERIALISED +MATERIALISES +MATERIALISING +MATERIALISM +MATERIALISMS +MATERIALIST +MATERIALISTIC +MATERIALISTS +MATERIALITIES +MATERIALITY +MATERIALIZATION +MATERIALIZE +MATERIALIZED +MATERIALIZER +MATERIALIZERS +MATERIALIZES +MATERIALIZING +MATERIALLY +MATERIALNESS +MATERIALNESSES +MATERIALS +MATERIEL +MATERIELS +MATERNAL +MATERNALLY +MATERNITIES +MATERNITY +MATERS +MATES +MATESHIP +MATESHIPS +MATEY +MATEYNESS +MATEYNESSES +MATEYS +MATH +MATHEMATIC +MATHEMATICAL +MATHEMATICALLY +MATHEMATICIAN +MATHEMATICIANS +MATHEMATICS +MATHEMATIZATION +MATHEMATIZE +MATHEMATIZED +MATHEMATIZES +MATHEMATIZING +MATHS +MATIER +MATIEST +MATILDA +MATILDAS +MATIN +MATINAL +MATINEE +MATINEES +MATINESS +MATINESSES +MATING +MATINGS +MATINS +MATLESS +MATRASS +MATRASSES +MATRES +MATRIARCH +MATRIARCHAL +MATRIARCHATE +MATRIARCHATES +MATRIARCHIES +MATRIARCHS +MATRIARCHY +MATRICES +MATRICIDAL +MATRICIDE +MATRICIDES +MATRICULANT +MATRICULANTS +MATRICULATE +MATRICULATED +MATRICULATES +MATRICULATING +MATRICULATION +MATRICULATIONS +MATRILINEAL +MATRILINEALLY +MATRIMONIAL +MATRIMONIALLY +MATRIMONIES +MATRIMONY +MATRIX +MATRIXES +MATRON +MATRONAL +MATRONIZE +MATRONIZED +MATRONIZES +MATRONIZING +MATRONLY +MATRONS +MATRONYMIC +MATRONYMICS +MATS +MATSAH +MATSAHS +MATSUTAKE +MATSUTAKES +MATT +MATTE +MATTED +MATTEDLY +MATTER +MATTERED +MATTERFUL +MATTERING +MATTERS +MATTERY +MATTES +MATTIN +MATTING +MATTINGS +MATTINS +MATTOCK +MATTOCKS +MATTOID +MATTOIDS +MATTRASS +MATTRASSES +MATTRESS +MATTRESSES +MATTS +MATURATE +MATURATED +MATURATES +MATURATING +MATURATION +MATURATIONAL +MATURATIONS +MATURE +MATURED +MATURELY +MATURER +MATURERS +MATURES +MATUREST +MATURING +MATURITIES +MATURITY +MATUTINAL +MATUTINALLY +MATZA +MATZAH +MATZAHS +MATZAS +MATZO +MATZOH +MATZOHS +MATZOON +MATZOONS +MATZOS +MATZOT +MATZOTH +MAUD +MAUDLIN +MAUDLINLY +MAUDS +MAUGER +MAUGRE +MAUL +MAULED +MAULER +MAULERS +MAULING +MAULS +MAULSTICK +MAULSTICKS +MAUMET +MAUMETRIES +MAUMETRY +MAUMETS +MAUN +MAUND +MAUNDER +MAUNDERED +MAUNDERER +MAUNDERERS +MAUNDERING +MAUNDERS +MAUNDIES +MAUNDS +MAUNDY +MAUSOLEA +MAUSOLEAN +MAUSOLEUM +MAUSOLEUMS +MAUT +MAUTS +MAUVE +MAUVES +MAVEN +MAVENS +MAVERICK +MAVERICKS +MAVIE +MAVIES +MAVIN +MAVINS +MAVIS +MAVISES +MAVOURNEEN +MAVOURNEENS +MAVOURNIN +MAVOURNINS +MAW +MAWED +MAWING +MAWKISH +MAWKISHLY +MAWKISHNESS +MAWKISHNESSES +MAWN +MAWS +MAX +MAXED +MAXES +MAXI +MAXICOAT +MAXICOATS +MAXILLA +MAXILLAE +MAXILLARIES +MAXILLARY +MAXILLAS +MAXILLIPED +MAXILLIPEDS +MAXILLOFACIAL +MAXIM +MAXIMA +MAXIMAL +MAXIMALIST +MAXIMALISTS +MAXIMALLY +MAXIMALS +MAXIMIN +MAXIMINS +MAXIMISE +MAXIMISED +MAXIMISES +MAXIMISING +MAXIMITE +MAXIMITES +MAXIMIZATION +MAXIMIZATIONS +MAXIMIZE +MAXIMIZED +MAXIMIZER +MAXIMIZERS +MAXIMIZES +MAXIMIZING +MAXIMS +MAXIMUM +MAXIMUMLY +MAXIMUMS +MAXING +MAXIS +MAXIXE +MAXIXES +MAXWELL +MAXWELLS +MAY +MAYA +MAYAN +MAYAPPLE +MAYAPPLES +MAYAS +MAYBE +MAYBES +MAYBIRD +MAYBIRDS +MAYBUSH +MAYBUSHES +MAYDAY +MAYDAYS +MAYED +MAYEST +MAYFLIES +MAYFLOWER +MAYFLOWERS +MAYFLY +MAYHAP +MAYHAPPEN +MAYHEM +MAYHEMS +MAYING +MAYINGS +MAYO +MAYONNAISE +MAYONNAISES +MAYOR +MAYORAL +MAYORALTIES +MAYORALTY +MAYORESS +MAYORESSES +MAYORS +MAYORSHIP +MAYORSHIPS +MAYOS +MAYPOLE +MAYPOLES +MAYPOP +MAYPOPS +MAYS +MAYST +MAYVIN +MAYVINS +MAYWEED +MAYWEEDS +MAZAEDIA +MAZAEDIUM +MAZARD +MAZARDS +MAZE +MAZED +MAZEDLY +MAZEDNESS +MAZEDNESSES +MAZELIKE +MAZELTOV +MAZER +MAZERS +MAZES +MAZIER +MAZIEST +MAZILY +MAZINESS +MAZINESSES +MAZING +MAZOURKA +MAZOURKAS +MAZUMA +MAZUMAS +MAZURKA +MAZURKAS +MAZY +MAZZARD +MAZZARDS +MBAQANGA +MBAQANGAS +MBIRA +MBIRAS +ME +MEAD +MEADOW +MEADOWLAND +MEADOWLANDS +MEADOWLARK +MEADOWLARKS +MEADOWS +MEADOWSWEET +MEADOWSWEETS +MEADOWY +MEADS +MEAGER +MEAGERLY +MEAGERNESS +MEAGERNESSES +MEAGRE +MEAGRELY +MEAL +MEALIE +MEALIER +MEALIES +MEALIEST +MEALINESS +MEALINESSES +MEALLESS +MEALS +MEALTIME +MEALTIMES +MEALWORM +MEALWORMS +MEALY +MEALYBUG +MEALYBUGS +MEALYMOUTHED +MEAN +MEANDER +MEANDERED +MEANDERER +MEANDERERS +MEANDERING +MEANDERS +MEANDROUS +MEANER +MEANERS +MEANEST +MEANIE +MEANIES +MEANING +MEANINGFUL +MEANINGFULLY +MEANINGFULNESS +MEANINGLESS +MEANINGLESSLY +MEANINGLESSNESS +MEANINGLY +MEANINGS +MEANLY +MEANNESS +MEANNESSES +MEANS +MEANT +MEANTIME +MEANTIMES +MEANWHILE +MEANWHILES +MEANY +MEASLE +MEASLED +MEASLES +MEASLIER +MEASLIEST +MEASLY +MEASURABILITIES +MEASURABILITY +MEASURABLE +MEASURABLY +MEASURE +MEASURED +MEASUREDLY +MEASURELESS +MEASUREMENT +MEASUREMENTS +MEASURER +MEASURERS +MEASURES +MEASURING +MEAT +MEATAL +MEATBALL +MEATBALLS +MEATED +MEATHEAD +MEATHEADS +MEATIER +MEATIEST +MEATILY +MEATINESS +MEATINESSES +MEATLESS +MEATLOAF +MEATLOAVES +MEATMAN +MEATMEN +MEATPACKING +MEATPACKINGS +MEATS +MEATUS +MEATUSES +MEATY +MECAMYLAMINE +MECAMYLAMINES +MECCA +MECCAS +MECHANIC +MECHANICAL +MECHANICALLY +MECHANICALS +MECHANICIAN +MECHANICIANS +MECHANICS +MECHANISM +MECHANISMS +MECHANIST +MECHANISTIC +MECHANISTICALLY +MECHANISTS +MECHANIZABLE +MECHANIZATION +MECHANIZATIONS +MECHANIZE +MECHANIZED +MECHANIZER +MECHANIZERS +MECHANIZES +MECHANIZING +MECHANOCHEMICAL +MECHANORECEPTOR +MECHITZA +MECHITZAS +MECHITZOT +MECLIZINE +MECLIZINES +MECONIUM +MECONIUMS +MED +MEDAILLON +MEDAILLONS +MEDAKA +MEDAKAS +MEDAL +MEDALED +MEDALING +MEDALIST +MEDALISTS +MEDALLED +MEDALLIC +MEDALLING +MEDALLION +MEDALLIONS +MEDALLIST +MEDALLISTS +MEDALS +MEDDLE +MEDDLED +MEDDLER +MEDDLERS +MEDDLES +MEDDLESOME +MEDDLESOMENESS +MEDDLING +MEDEVAC +MEDEVACED +MEDEVACING +MEDEVACKED +MEDEVACKING +MEDEVACS +MEDFLIES +MEDFLY +MEDIA +MEDIACIES +MEDIACY +MEDIAD +MEDIAE +MEDIAEVAL +MEDIAEVALS +MEDIAGENIC +MEDIAL +MEDIALLY +MEDIALS +MEDIAN +MEDIANLY +MEDIANS +MEDIANT +MEDIANTS +MEDIAS +MEDIASTINA +MEDIASTINAL +MEDIASTINUM +MEDIATE +MEDIATED +MEDIATELY +MEDIATES +MEDIATING +MEDIATION +MEDIATIONAL +MEDIATIONS +MEDIATIVE +MEDIATIZE +MEDIATIZED +MEDIATIZES +MEDIATIZING +MEDIATOR +MEDIATORS +MEDIATORY +MEDIATRICES +MEDIATRIX +MEDIATRIXES +MEDIC +MEDICABLE +MEDICAID +MEDICAIDS +MEDICAL +MEDICALLY +MEDICALS +MEDICAMENT +MEDICAMENTOUS +MEDICAMENTS +MEDICANT +MEDICANTS +MEDICARE +MEDICARES +MEDICATE +MEDICATED +MEDICATES +MEDICATING +MEDICATION +MEDICATIONS +MEDICIDE +MEDICIDES +MEDICINABLE +MEDICINAL +MEDICINALLY +MEDICINALS +MEDICINE +MEDICINED +MEDICINES +MEDICINING +MEDICK +MEDICKS +MEDICO +MEDICOLEGAL +MEDICOS +MEDICS +MEDIEVAL +MEDIEVALISM +MEDIEVALISMS +MEDIEVALIST +MEDIEVALISTS +MEDIEVALLY +MEDIEVALS +MEDIGAP +MEDIGAPS +MEDII +MEDINA +MEDINAS +MEDIOCRE +MEDIOCRITIES +MEDIOCRITY +MEDITATE +MEDITATED +MEDITATES +MEDITATING +MEDITATION +MEDITATIONS +MEDITATIVE +MEDITATIVELY +MEDITATIVENESS +MEDITATOR +MEDITATORS +MEDITERRANEAN +MEDIUM +MEDIUMISTIC +MEDIUMS +MEDIUMSHIP +MEDIUMSHIPS +MEDIUS +MEDIVAC +MEDIVACED +MEDIVACING +MEDIVACKED +MEDIVACKING +MEDIVACS +MEDLAR +MEDLARS +MEDLEY +MEDLEYS +MEDS +MEDULLA +MEDULLAE +MEDULLAR +MEDULLARY +MEDULLAS +MEDULLATED +MEDULLOBLASTOMA +MEDUSA +MEDUSAE +MEDUSAL +MEDUSAN +MEDUSANS +MEDUSAS +MEDUSOID +MEDUSOIDS +MEED +MEEDS +MEEK +MEEKER +MEEKEST +MEEKLY +MEEKNESS +MEEKNESSES +MEERKAT +MEERKATS +MEERSCHAUM +MEERSCHAUMS +MEET +MEETER +MEETERS +MEETING +MEETINGHOUSE +MEETINGHOUSES +MEETINGS +MEETLY +MEETNESS +MEETNESSES +MEETS +MEG +MEGA +MEGABAR +MEGABARS +MEGABIT +MEGABITS +MEGABUCK +MEGABUCKS +MEGABYTE +MEGABYTES +MEGACITIES +MEGACITY +MEGACORPORATION +MEGACYCLE +MEGACYCLES +MEGADEAL +MEGADEALS +MEGADEATH +MEGADEATHS +MEGADOSE +MEGADOSES +MEGADYNE +MEGADYNES +MEGAFAUNA +MEGAFAUNAE +MEGAFAUNAL +MEGAFAUNAS +MEGAFLOP +MEGAFLOPS +MEGAGAMETE +MEGAGAMETES +MEGAGAMETOPHYTE +MEGAHERTZ +MEGAHERTZES +MEGAHIT +MEGAHITS +MEGAKARYOCYTE +MEGAKARYOCYTES +MEGAKARYOCYTIC +MEGALITH +MEGALITHIC +MEGALITHS +MEGALOBLAST +MEGALOBLASTIC +MEGALOBLASTS +MEGALOMANIA +MEGALOMANIAC +MEGALOMANIACAL +MEGALOMANIACS +MEGALOMANIAS +MEGALOMANIC +MEGALOPIC +MEGALOPOLIS +MEGALOPOLISES +MEGALOPOLITAN +MEGALOPOLITANS +MEGALOPS +MEGALOPSES +MEGAPARSEC +MEGAPARSECS +MEGAPHONE +MEGAPHONED +MEGAPHONES +MEGAPHONIC +MEGAPHONING +MEGAPIXEL +MEGAPIXELS +MEGAPLEX +MEGAPLEXES +MEGAPOD +MEGAPODE +MEGAPODES +MEGAPODS +MEGAPROJECT +MEGAPROJECTS +MEGARA +MEGARON +MEGASCOPIC +MEGASCOPICALLY +MEGASPORANGIA +MEGASPORANGIUM +MEGASPORE +MEGASPORES +MEGASPORIC +MEGASPOROPHYLL +MEGASPOROPHYLLS +MEGASS +MEGASSE +MEGASSES +MEGASTAR +MEGASTARS +MEGATHERE +MEGATHERES +MEGATON +MEGATONNAGE +MEGATONNAGES +MEGATONS +MEGAVITAMIN +MEGAVITAMINS +MEGAVOLT +MEGAVOLTS +MEGAWATT +MEGAWATTS +MEGILLA +MEGILLAH +MEGILLAHS +MEGILLAS +MEGILP +MEGILPH +MEGILPHS +MEGILPS +MEGOHM +MEGOHMS +MEGRIM +MEGRIMS +MEGS +MEHNDI +MEHNDIS +MEIKLE +MEINIE +MEINIES +MEINY +MEIOSES +MEIOSIS +MEIOTIC +MEIOTICALLY +MEISTER +MEISTERS +MEITNERIUM +MEITNERIUMS +MEL +MELALEUCA +MELALEUCAS +MELAMDIM +MELAMED +MELAMINE +MELAMINES +MELANCHOLIA +MELANCHOLIAC +MELANCHOLIACS +MELANCHOLIAS +MELANCHOLIC +MELANCHOLICS +MELANCHOLIES +MELANCHOLY +MELANGE +MELANGES +MELANIAN +MELANIC +MELANICS +MELANIN +MELANINS +MELANISM +MELANISMS +MELANIST +MELANISTIC +MELANISTS +MELANITE +MELANITES +MELANITIC +MELANIZATION +MELANIZATIONS +MELANIZE +MELANIZED +MELANIZES +MELANIZING +MELANOBLAST +MELANOBLASTS +MELANOCYTE +MELANOCYTES +MELANOGENESES +MELANOGENESIS +MELANOID +MELANOIDS +MELANOMA +MELANOMAS +MELANOMATA +MELANOPHORE +MELANOPHORES +MELANOSES +MELANOSIS +MELANOSOME +MELANOSOMES +MELANOTIC +MELANOUS +MELAPHYRE +MELAPHYRES +MELASTOME +MELATONIN +MELATONINS +MELD +MELDED +MELDER +MELDERS +MELDING +MELDS +MELEE +MELEES +MELENA +MELENAS +MELIC +MELILITE +MELILITES +MELILOT +MELILOTS +MELINITE +MELINITES +MELIORATE +MELIORATED +MELIORATES +MELIORATING +MELIORATION +MELIORATIONS +MELIORATIVE +MELIORATOR +MELIORATORS +MELIORISM +MELIORISMS +MELIORIST +MELIORISTIC +MELIORISTS +MELISMA +MELISMAS +MELISMATA +MELISMATIC +MELL +MELLED +MELLIFIC +MELLIFLUENT +MELLIFLUENTLY +MELLIFLUOUS +MELLIFLUOUSLY +MELLIFLUOUSNESS +MELLING +MELLOPHONE +MELLOPHONES +MELLOTRON +MELLOTRONS +MELLOW +MELLOWED +MELLOWER +MELLOWEST +MELLOWING +MELLOWLY +MELLOWNESS +MELLOWNESSES +MELLOWS +MELLS +MELODEON +MELODEONS +MELODIA +MELODIAS +MELODIC +MELODICA +MELODICALLY +MELODICAS +MELODIES +MELODIOUS +MELODIOUSLY +MELODIOUSNESS +MELODIOUSNESSES +MELODISE +MELODISED +MELODISES +MELODISING +MELODIST +MELODISTS +MELODIZE +MELODIZED +MELODIZER +MELODIZERS +MELODIZES +MELODIZING +MELODRAMA +MELODRAMAS +MELODRAMATIC +MELODRAMATICS +MELODRAMATISE +MELODRAMATISED +MELODRAMATISES +MELODRAMATISING +MELODRAMATIST +MELODRAMATISTS +MELODRAMATIZE +MELODRAMATIZED +MELODRAMATIZES +MELODRAMATIZING +MELODY +MELOID +MELOIDS +MELON +MELONGENE +MELONGENES +MELONS +MELPHALAN +MELPHALANS +MELS +MELT +MELTABILITIES +MELTABILITY +MELTABLE +MELTAGE +MELTAGES +MELTDOWN +MELTDOWNS +MELTED +MELTER +MELTERS +MELTING +MELTINGLY +MELTON +MELTONS +MELTS +MELTWATER +MELTWATERS +MELTY +MEM +MEMBER +MEMBERED +MEMBERS +MEMBERSHIP +MEMBERSHIPS +MEMBRANAL +MEMBRANE +MEMBRANED +MEMBRANES +MEMBRANOUS +MEMBRANOUSLY +MEME +MEMENTO +MEMENTOES +MEMENTOS +MEMES +MEMETICS +MEMO +MEMOIR +MEMOIRIST +MEMOIRISTS +MEMOIRS +MEMORABILIA +MEMORABILITIES +MEMORABILITY +MEMORABLE +MEMORABLENESS +MEMORABLENESSES +MEMORABLY +MEMORANDA +MEMORANDUM +MEMORANDUMS +MEMORIAL +MEMORIALISE +MEMORIALISED +MEMORIALISES +MEMORIALISING +MEMORIALIST +MEMORIALISTS +MEMORIALIZE +MEMORIALIZED +MEMORIALIZES +MEMORIALIZING +MEMORIALLY +MEMORIALS +MEMORIES +MEMORISE +MEMORISED +MEMORISES +MEMORISING +MEMORITER +MEMORIZABLE +MEMORIZATION +MEMORIZATIONS +MEMORIZE +MEMORIZED +MEMORIZER +MEMORIZERS +MEMORIZES +MEMORIZING +MEMORY +MEMOS +MEMS +MEMSAHIB +MEMSAHIBS +MEN +MENACE +MENACED +MENACER +MENACERS +MENACES +MENACING +MENACINGLY +MENAD +MENADIONE +MENADIONES +MENADS +MENAGE +MENAGERIE +MENAGERIES +MENAGES +MENARCHE +MENARCHEAL +MENARCHES +MENAZON +MENAZONS +MEND +MENDABLE +MENDACIOUS +MENDACIOUSLY +MENDACIOUSNESS +MENDACITIES +MENDACITY +MENDED +MENDELEVIUM +MENDELEVIUMS +MENDER +MENDERS +MENDICANCIES +MENDICANCY +MENDICANT +MENDICANTS +MENDICITIES +MENDICITY +MENDIGO +MENDIGOS +MENDING +MENDINGS +MENDS +MENFOLK +MENFOLKS +MENHADEN +MENHADENS +MENHIR +MENHIRS +MENIAL +MENIALLY +MENIALS +MENINGEAL +MENINGES +MENINGIOMA +MENINGIOMAS +MENINGIOMATA +MENINGITIC +MENINGITIDES +MENINGITIS +MENINGOCOCCAL +MENINGOCOCCI +MENINGOCOCCIC +MENINGOCOCCUS +MENINX +MENISCAL +MENISCATE +MENISCI +MENISCOID +MENISCUS +MENISCUSES +MENO +MENOLOGIES +MENOLOGY +MENOPAUSAL +MENOPAUSE +MENOPAUSES +MENORAH +MENORAHS +MENORRHAGIA +MENORRHAGIAS +MENORRHEA +MENORRHEAS +MENSA +MENSAE +MENSAL +MENSAS +MENSCH +MENSCHEN +MENSCHES +MENSCHY +MENSE +MENSED +MENSEFUL +MENSELESS +MENSERVANTS +MENSES +MENSH +MENSHEN +MENSHES +MENSING +MENSTRUA +MENSTRUAL +MENSTRUALLY +MENSTRUATE +MENSTRUATED +MENSTRUATES +MENSTRUATING +MENSTRUATION +MENSTRUATIONS +MENSTRUUM +MENSTRUUMS +MENSURABILITIES +MENSURABILITY +MENSURABLE +MENSURAL +MENSURATION +MENSURATIONS +MENSWEAR +MENTA +MENTAL +MENTALESE +MENTALESES +MENTALISM +MENTALISMS +MENTALIST +MENTALISTIC +MENTALISTS +MENTALITIES +MENTALITY +MENTALLY +MENTATION +MENTATIONS +MENTEE +MENTEES +MENTHENE +MENTHENES +MENTHOL +MENTHOLATED +MENTHOLS +MENTION +MENTIONABLE +MENTIONED +MENTIONER +MENTIONERS +MENTIONING +MENTIONS +MENTOR +MENTORED +MENTORING +MENTORS +MENTORSHIP +MENTORSHIPS +MENTUM +MENU +MENUDO +MENUDOS +MENUS +MEOU +MEOUED +MEOUING +MEOUS +MEOW +MEOWED +MEOWING +MEOWS +MEPERIDINE +MEPERIDINES +MEPHITIC +MEPHITIS +MEPHITISES +MEPROBAMATE +MEPROBAMATES +MERBROMIN +MERBROMINS +MERC +MERCANTILE +MERCANTILISM +MERCANTILISMS +MERCANTILIST +MERCANTILISTIC +MERCANTILISTS +MERCAPTAN +MERCAPTANS +MERCAPTO +MERCAPTOPURINE +MERCAPTOPURINES +MERCENARIES +MERCENARILY +MERCENARINESS +MERCENARINESSES +MERCENARY +MERCER +MERCERIES +MERCERISE +MERCERISED +MERCERISES +MERCERISING +MERCERIZATION +MERCERIZATIONS +MERCERIZE +MERCERIZED +MERCERIZES +MERCERIZING +MERCERS +MERCERY +MERCES +MERCH +MERCHANDISE +MERCHANDISED +MERCHANDISER +MERCHANDISERS +MERCHANDISES +MERCHANDISING +MERCHANDISINGS +MERCHANDIZE +MERCHANDIZED +MERCHANDIZES +MERCHANDIZING +MERCHANDIZINGS +MERCHANT +MERCHANTABILITY +MERCHANTABLE +MERCHANTED +MERCHANTING +MERCHANTMAN +MERCHANTMEN +MERCHANTS +MERCHES +MERCIES +MERCIFUL +MERCIFULLY +MERCIFULNESS +MERCIFULNESSES +MERCILESS +MERCILESSLY +MERCILESSNESS +MERCILESSNESSES +MERCS +MERCURATE +MERCURATED +MERCURATES +MERCURATING +MERCURATION +MERCURATIONS +MERCURIAL +MERCURIALLY +MERCURIALNESS +MERCURIALNESSES +MERCURIALS +MERCURIC +MERCURIES +MERCUROUS +MERCURY +MERCY +MERDE +MERDES +MERE +MERELY +MERENGUE +MERENGUES +MERER +MERES +MEREST +MERETRICIOUS +MERETRICIOUSLY +MERGANSER +MERGANSERS +MERGE +MERGED +MERGEE +MERGEES +MERGENCE +MERGENCES +MERGER +MERGERS +MERGES +MERGING +MERIDIAN +MERIDIANS +MERIDIONAL +MERIDIONALLY +MERIDIONALS +MERINGUE +MERINGUES +MERINO +MERINOS +MERISES +MERISIS +MERISTEM +MERISTEMATIC +MERISTEMS +MERISTIC +MERISTICALLY +MERIT +MERITED +MERITING +MERITLESS +MERITOCRACIES +MERITOCRACY +MERITOCRAT +MERITOCRATIC +MERITOCRATS +MERITORIOUS +MERITORIOUSLY +MERITORIOUSNESS +MERITS +MERK +MERKS +MERL +MERLE +MERLES +MERLIN +MERLINS +MERLON +MERLONS +MERLOT +MERLOTS +MERLS +MERMAID +MERMAIDS +MERMAN +MERMEN +MEROBLASTIC +MEROBLASTICALLY +MEROCRINE +MEROMORPHIC +MEROMYOSIN +MEROMYOSINS +MEROPIA +MEROPIAS +MEROPIC +MEROZOITE +MEROZOITES +MERRIER +MERRIEST +MERRILY +MERRIMENT +MERRIMENTS +MERRINESS +MERRINESSES +MERRY +MERRYMAKER +MERRYMAKERS +MERRYMAKING +MERRYMAKINGS +MERRYTHOUGHT +MERRYTHOUGHTS +MESA +MESALLIANCE +MESALLIANCES +MESALLY +MESARCH +MESAS +MESCAL +MESCALINE +MESCALINES +MESCALS +MESCLUN +MESCLUNS +MESDAMES +MESDEMOISELLES +MESEEMED +MESEEMETH +MESEEMS +MESENCEPHALA +MESENCEPHALIC +MESENCEPHALON +MESENCHYMAL +MESENCHYME +MESENCHYMES +MESENTERA +MESENTERIC +MESENTERIES +MESENTERON +MESENTERY +MESH +MESHED +MESHES +MESHIER +MESHIEST +MESHING +MESHUGA +MESHUGAAS +MESHUGAH +MESHUGGA +MESHUGGAH +MESHUGGE +MESHUGGENER +MESHUGGENERS +MESHWORK +MESHWORKS +MESHY +MESIAL +MESIALLY +MESIAN +MESIC +MESICALLY +MESMERIC +MESMERICALLY +MESMERISE +MESMERISED +MESMERISES +MESMERISING +MESMERISM +MESMERISMS +MESMERIST +MESMERISTS +MESMERIZE +MESMERIZED +MESMERIZER +MESMERIZERS +MESMERIZES +MESMERIZING +MESNALTIES +MESNALTY +MESNE +MESNES +MESOBLAST +MESOBLASTS +MESOCARP +MESOCARPS +MESOCRANIES +MESOCRANY +MESOCYCLONE +MESOCYCLONES +MESODERM +MESODERMAL +MESODERMS +MESOGLEA +MESOGLEAL +MESOGLEAS +MESOGLOEA +MESOGLOEAS +MESOMERE +MESOMERES +MESOMORPH +MESOMORPHIC +MESOMORPHIES +MESOMORPHS +MESOMORPHY +MESON +MESONEPHRIC +MESONEPHROI +MESONEPHROS +MESONIC +MESONS +MESOPAUSE +MESOPAUSES +MESOPELAGIC +MESOPHYL +MESOPHYLL +MESOPHYLLIC +MESOPHYLLOUS +MESOPHYLLS +MESOPHYLS +MESOPHYTE +MESOPHYTES +MESOPHYTIC +MESOSCALE +MESOSOME +MESOSOMES +MESOSPHERE +MESOSPHERES +MESOSPHERIC +MESOTHELIA +MESOTHELIAL +MESOTHELIOMA +MESOTHELIOMAS +MESOTHELIOMATA +MESOTHELIUM +MESOTHORACES +MESOTHORACIC +MESOTHORAX +MESOTHORAXES +MESOTRON +MESOTRONS +MESOTROPHIC +MESOZOAN +MESOZOANS +MESOZOIC +MESQUIT +MESQUITE +MESQUITES +MESQUITS +MESS +MESSAGE +MESSAGED +MESSAGES +MESSAGING +MESSALINE +MESSALINES +MESSAN +MESSANS +MESSED +MESSEIGNEURS +MESSENGER +MESSENGERED +MESSENGERING +MESSENGERS +MESSES +MESSIAH +MESSIAHS +MESSIAHSHIP +MESSIAHSHIPS +MESSIANIC +MESSIANISM +MESSIANISMS +MESSIER +MESSIEST +MESSIEURS +MESSILY +MESSINESS +MESSINESSES +MESSING +MESSMAN +MESSMATE +MESSMATES +MESSMEN +MESSUAGE +MESSUAGES +MESSY +MESTEE +MESTEES +MESTESO +MESTESOES +MESTESOS +MESTINO +MESTINOES +MESTINOS +MESTIZA +MESTIZAS +MESTIZO +MESTIZOES +MESTIZOS +MESTRANOL +MESTRANOLS +MET +META +METABOLIC +METABOLICALLY +METABOLISM +METABOLISMS +METABOLITE +METABOLITES +METABOLIZABLE +METABOLIZE +METABOLIZED +METABOLIZES +METABOLIZING +METACARPAL +METACARPALS +METACARPI +METACARPUS +METACENTER +METACENTERS +METACENTRIC +METACENTRICS +METACERCARIA +METACERCARIAE +METACERCARIAL +METACHROMATIC +METAETHICAL +METAETHICS +METAFICTION +METAFICTIONAL +METAFICTIONIST +METAFICTIONISTS +METAFICTIONS +METAGALACTIC +METAGALAXIES +METAGALAXY +METAGE +METAGENESES +METAGENESIS +METAGENETIC +METAGENIC +METAGES +METAL +METALANGUAGE +METALANGUAGES +METALED +METALHEAD +METALHEADS +METALING +METALINGUISTIC +METALINGUISTICS +METALISE +METALISED +METALISES +METALISING +METALIST +METALISTS +METALIZE +METALIZED +METALIZES +METALIZING +METALLED +METALLIC +METALLICALLY +METALLICS +METALLIFEROUS +METALLIKE +METALLINE +METALLING +METALLIST +METALLISTS +METALLIZATION +METALLIZATIONS +METALLIZE +METALLIZED +METALLIZES +METALLIZING +METALLOGRAPHER +METALLOGRAPHERS +METALLOGRAPHIC +METALLOGRAPHIES +METALLOGRAPHY +METALLOID +METALLOIDAL +METALLOIDS +METALLOPHONE +METALLOPHONES +METALLURGICAL +METALLURGICALLY +METALLURGIES +METALLURGIST +METALLURGISTS +METALLURGY +METALMARK +METALMARKS +METALS +METALSMITH +METALSMITHS +METALWARE +METALWARES +METALWORK +METALWORKER +METALWORKERS +METALWORKING +METALWORKINGS +METALWORKS +METAMATHEMATICS +METAMER +METAMERE +METAMERES +METAMERIC +METAMERICALLY +METAMERISM +METAMERISMS +METAMERS +METAMORPHIC +METAMORPHICALLY +METAMORPHISM +METAMORPHISMS +METAMORPHOSE +METAMORPHOSED +METAMORPHOSES +METAMORPHOSING +METAMORPHOSIS +METANALYSES +METANALYSIS +METANEPHRIC +METANEPHROI +METANEPHROS +METAPHASE +METAPHASES +METAPHOR +METAPHORIC +METAPHORICAL +METAPHORICALLY +METAPHORS +METAPHOSPHATE +METAPHOSPHATES +METAPHRASE +METAPHRASES +METAPHYSIC +METAPHYSICAL +METAPHYSICALLY +METAPHYSICIAN +METAPHYSICIANS +METAPHYSICS +METAPLASIA +METAPLASIAS +METAPLASM +METAPLASMS +METAPLASTIC +METAPSYCHOLOGY +METASEQUOIA +METASEQUOIAS +METASOMATIC +METASOMATISM +METASOMATISMS +METASTABILITIES +METASTABILITY +METASTABLE +METASTABLY +METASTASES +METASTASIS +METASTASIZE +METASTASIZED +METASTASIZES +METASTASIZING +METASTATIC +METASTATICALLY +METATAG +METATAGS +METATARSAL +METATARSALS +METATARSI +METATARSUS +METATE +METATES +METATHESES +METATHESIS +METATHETIC +METATHETICAL +METATHETICALLY +METATHORACES +METATHORACIC +METATHORAX +METATHORAXES +METAXYLEM +METAXYLEMS +METAZOA +METAZOAL +METAZOAN +METAZOANS +METAZOIC +METAZOON +METE +METED +METEMPSYCHOSES +METEMPSYCHOSIS +METENCEPHALA +METENCEPHALIC +METENCEPHALON +METEOR +METEORIC +METEORICALLY +METEORITE +METEORITES +METEORITIC +METEORITICAL +METEORITICIST +METEORITICISTS +METEORITICS +METEOROID +METEOROIDAL +METEOROIDS +METEOROLOGIC +METEOROLOGICAL +METEOROLOGIES +METEOROLOGIST +METEOROLOGISTS +METEOROLOGY +METEORS +METEPA +METEPAS +METER +METERAGE +METERAGES +METERED +METERING +METERS +METERSTICK +METERSTICKS +METES +METESTRUS +METESTRUSES +METFORMIN +METFORMINS +METH +METHACRYLATE +METHACRYLATES +METHADON +METHADONE +METHADONES +METHADONS +METHAMPHETAMINE +METHANATION +METHANATIONS +METHANE +METHANES +METHANOL +METHANOLS +METHAQUALONE +METHAQUALONES +METHEDRINE +METHEDRINES +METHEGLIN +METHEGLINS +METHEMOGLOBIN +METHEMOGLOBINS +METHENAMINE +METHENAMINES +METHICILLIN +METHICILLINS +METHINKS +METHIONINE +METHIONINES +METHOD +METHODIC +METHODICAL +METHODICALLY +METHODICALNESS +METHODISE +METHODISED +METHODISES +METHODISING +METHODISM +METHODISMS +METHODIST +METHODISTIC +METHODISTS +METHODIZE +METHODIZED +METHODIZES +METHODIZING +METHODOLOGICAL +METHODOLOGIES +METHODOLOGIST +METHODOLOGISTS +METHODOLOGY +METHODS +METHOTREXATE +METHOTREXATES +METHOUGHT +METHOXIDE +METHOXIDES +METHOXY +METHOXYCHLOR +METHOXYCHLORS +METHOXYFLURANE +METHOXYFLURANES +METHOXYL +METHS +METHYL +METHYLAL +METHYLALS +METHYLAMINE +METHYLAMINES +METHYLASE +METHYLASES +METHYLATE +METHYLATED +METHYLATES +METHYLATING +METHYLATION +METHYLATIONS +METHYLATOR +METHYLATORS +METHYLCELLULOSE +METHYLDOPA +METHYLDOPAS +METHYLENE +METHYLENES +METHYLIC +METHYLMERCURIES +METHYLMERCURY +METHYLPHENIDATE +METHYLS +METHYLXANTHINE +METHYLXANTHINES +METHYSERGIDE +METHYSERGIDES +METICAIS +METICAL +METICALS +METICULOSITIES +METICULOSITY +METICULOUS +METICULOUSLY +METICULOUSNESS +METIER +METIERS +METING +METIS +METISSE +METISSES +METOL +METOLS +METONYM +METONYMIC +METONYMICAL +METONYMIES +METONYMS +METONYMY +METOPAE +METOPE +METOPES +METOPIC +METOPON +METOPONS +METRALGIA +METRALGIAS +METRAZOL +METRAZOLS +METRE +METRED +METRES +METRIC +METRICAL +METRICALLY +METRICATE +METRICATED +METRICATES +METRICATING +METRICATION +METRICATIONS +METRICISM +METRICISMS +METRICIZE +METRICIZED +METRICIZES +METRICIZING +METRICS +METRIFIED +METRIFIES +METRIFY +METRIFYING +METRING +METRIST +METRISTS +METRITIS +METRITISES +METRO +METROLOGICAL +METROLOGIES +METROLOGIST +METROLOGISTS +METROLOGY +METRONIDAZOLE +METRONIDAZOLES +METRONOME +METRONOMES +METRONOMIC +METRONOMICAL +METRONOMICALLY +METROPLEX +METROPLEXES +METROPOLIS +METROPOLISES +METROPOLITAN +METROPOLITANS +METRORRHAGIA +METRORRHAGIAS +METROS +METTLE +METTLED +METTLES +METTLESOME +METUMP +METUMPS +MEUNIERE +MEW +MEWED +MEWING +MEWL +MEWLED +MEWLER +MEWLERS +MEWLING +MEWLS +MEWS +MEZCAL +MEZCALS +MEZE +MEZEREON +MEZEREONS +MEZEREUM +MEZEREUMS +MEZES +MEZQUIT +MEZQUITE +MEZQUITES +MEZQUITS +MEZUZA +MEZUZAH +MEZUZAHS +MEZUZAS +MEZUZOT +MEZUZOTH +MEZZALUNA +MEZZALUNAS +MEZZANINE +MEZZANINES +MEZZO +MEZZOS +MEZZOTINT +MEZZOTINTED +MEZZOTINTING +MEZZOTINTS +MHO +MHOS +MI +MIAOU +MIAOUED +MIAOUING +MIAOUS +MIAOW +MIAOWED +MIAOWING +MIAOWS +MIASM +MIASMA +MIASMAL +MIASMAS +MIASMATA +MIASMATIC +MIASMIC +MIASMICALLY +MIASMS +MIAUL +MIAULED +MIAULING +MIAULS +MIB +MIBS +MIC +MICA +MICACEOUS +MICAS +MICAWBER +MICAWBERS +MICE +MICELL +MICELLA +MICELLAE +MICELLAR +MICELLE +MICELLES +MICELLS +MICHE +MICHED +MICHES +MICHING +MICK +MICKEY +MICKEYS +MICKLE +MICKLER +MICKLES +MICKLEST +MICKS +MICRA +MICRIFIED +MICRIFIES +MICRIFY +MICRIFYING +MICRO +MICROAMPERE +MICROAMPERES +MICROANALYSES +MICROANALYSIS +MICROANALYST +MICROANALYSTS +MICROANALYTIC +MICROANALYTICAL +MICROANATOMICAL +MICROANATOMIES +MICROANATOMY +MICROBALANCE +MICROBALANCES +MICROBAR +MICROBAROGRAPH +MICROBAROGRAPHS +MICROBARS +MICROBE +MICROBEAM +MICROBEAMS +MICROBES +MICROBIAL +MICROBIAN +MICROBIC +MICROBIOLOGIC +MICROBIOLOGICAL +MICROBIOLOGIES +MICROBIOLOGIST +MICROBIOLOGISTS +MICROBIOLOGY +MICROBREW +MICROBREWER +MICROBREWERIES +MICROBREWERS +MICROBREWERY +MICROBREWING +MICROBREWINGS +MICROBREWS +MICROBURST +MICROBURSTS +MICROBUS +MICROBUSES +MICROBUSSES +MICROCAP +MICROCAPSULE +MICROCAPSULES +MICROCASSETTE +MICROCASSETTES +MICROCEPHALIC +MICROCEPHALICS +MICROCEPHALIES +MICROCEPHALY +MICROCHIP +MICROCHIPS +MICROCIRCUIT +MICROCIRCUITRY +MICROCIRCUITS +MICROCLIMATE +MICROCLIMATES +MICROCLIMATIC +MICROCLINE +MICROCLINES +MICROCOCCAL +MICROCOCCI +MICROCOCCUS +MICROCODE +MICROCODES +MICROCOMPUTER +MICROCOMPUTERS +MICROCOPIES +MICROCOPY +MICROCOSM +MICROCOSMIC +MICROCOSMICALLY +MICROCOSMOS +MICROCOSMOSES +MICROCOSMS +MICROCRYSTAL +MICROCRYSTALS +MICROCULTURAL +MICROCULTURE +MICROCULTURES +MICROCURIE +MICROCURIES +MICROCYTE +MICROCYTES +MICROCYTIC +MICRODISSECTION +MICRODONT +MICRODOT +MICRODOTS +MICROEARTHQUAKE +MICROECONOMIC +MICROECONOMICS +MICROELECTRODE +MICROELECTRODES +MICROELECTRONIC +MICROELEMENT +MICROELEMENTS +MICROEVOLUTION +MICROEVOLUTIONS +MICROFARAD +MICROFARADS +MICROFAUNA +MICROFAUNAE +MICROFAUNAL +MICROFAUNAS +MICROFIBRIL +MICROFIBRILLAR +MICROFIBRILS +MICROFICHE +MICROFICHES +MICROFILAMENT +MICROFILAMENTS +MICROFILARIA +MICROFILARIAE +MICROFILARIAL +MICROFILM +MICROFILMABLE +MICROFILMED +MICROFILMER +MICROFILMERS +MICROFILMING +MICROFILMS +MICROFLORA +MICROFLORAE +MICROFLORAL +MICROFLORAS +MICROFORM +MICROFORMS +MICROFOSSIL +MICROFOSSILS +MICROFUNGI +MICROFUNGUS +MICROGAMETE +MICROGAMETES +MICROGAMETOCYTE +MICROGRAM +MICROGRAMS +MICROGRAPH +MICROGRAPHED +MICROGRAPHIC +MICROGRAPHICS +MICROGRAPHING +MICROGRAPHS +MICROGRAVITIES +MICROGRAVITY +MICROGROOVE +MICROGROOVES +MICROHABITAT +MICROHABITATS +MICROHM +MICROHMS +MICROIMAGE +MICROIMAGES +MICROINCH +MICROINCHES +MICROINJECT +MICROINJECTED +MICROINJECTING +MICROINJECTION +MICROINJECTIONS +MICROINJECTS +MICROLITER +MICROLITERS +MICROLITH +MICROLITHIC +MICROLITHS +MICROLOAN +MICROLOANS +MICROLUCES +MICROLUX +MICROLUXES +MICROMANAGE +MICROMANAGED +MICROMANAGEMENT +MICROMANAGER +MICROMANAGERS +MICROMANAGES +MICROMANAGING +MICROMERE +MICROMERES +MICROMETEORITE +MICROMETEORITES +MICROMETEORITIC +MICROMETEOROID +MICROMETEOROIDS +MICROMETER +MICROMETERS +MICROMETHOD +MICROMETHODS +MICROMHO +MICROMHOS +MICROMINI +MICROMINIATURE +MICROMINIS +MICROMOLAR +MICROMOLE +MICROMOLES +MICROMORPHOLOGY +MICRON +MICRONIZE +MICRONIZED +MICRONIZES +MICRONIZING +MICRONS +MICRONUCLEI +MICRONUCLEUS +MICRONUTRIENT +MICRONUTRIENTS +MICROORGANISM +MICROORGANISMS +MICROPARTICLE +MICROPARTICLES +MICROPHAGE +MICROPHAGES +MICROPHONE +MICROPHONES +MICROPHONIC +MICROPHONICS +MICROPHOTOGRAPH +MICROPHOTOMETER +MICROPHOTOMETRY +MICROPHYLL +MICROPHYLLOUS +MICROPHYLLS +MICROPHYSICAL +MICROPHYSICALLY +MICROPHYSICS +MICROPIPET +MICROPIPETS +MICROPIPETTE +MICROPIPETTES +MICROPLANKTON +MICROPLANKTONS +MICROPORE +MICROPORES +MICROPOROSITIES +MICROPOROSITY +MICROPOROUS +MICROPRISM +MICROPRISMS +MICROPROBE +MICROPROBES +MICROPROCESSOR +MICROPROCESSORS +MICROPROGRAM +MICROPROGRAMS +MICROPROJECTION +MICROPROJECTOR +MICROPROJECTORS +MICROPUBLISHER +MICROPUBLISHERS +MICROPUBLISHING +MICROPULSATION +MICROPULSATIONS +MICROPUNCTURE +MICROPUNCTURES +MICROPYLAR +MICROPYLE +MICROPYLES +MICROQUAKE +MICROQUAKES +MICRORADIOGRAPH +MICROREADER +MICROREADERS +MICROS +MICROSCALE +MICROSCALES +MICROSCOPE +MICROSCOPES +MICROSCOPIC +MICROSCOPICAL +MICROSCOPICALLY +MICROSCOPIES +MICROSCOPIST +MICROSCOPISTS +MICROSCOPY +MICROSECOND +MICROSECONDS +MICROSEISM +MICROSEISMIC +MICROSEISMICITY +MICROSEISMS +MICROSOMAL +MICROSOME +MICROSOMES +MICROSPHERE +MICROSPHERES +MICROSPHERICAL +MICROSPORANGIA +MICROSPORANGIUM +MICROSPORE +MICROSPORES +MICROSPOROCYTE +MICROSPOROCYTES +MICROSPOROPHYLL +MICROSPOROUS +MICROSTATE +MICROSTATES +MICROSTRUCTURAL +MICROSTRUCTURE +MICROSTRUCTURES +MICROSURGERIES +MICROSURGERY +MICROSURGICAL +MICROSWITCH +MICROSWITCHES +MICROTECHNIC +MICROTECHNICS +MICROTECHNIQUE +MICROTECHNIQUES +MICROTOME +MICROTOMES +MICROTOMIES +MICROTOMY +MICROTONAL +MICROTONALITIES +MICROTONALITY +MICROTONALLY +MICROTONE +MICROTONES +MICROTUBULAR +MICROTUBULE +MICROTUBULES +MICROVASCULAR +MICROVILLAR +MICROVILLI +MICROVILLOUS +MICROVILLUS +MICROVOLT +MICROVOLTS +MICROWATT +MICROWATTS +MICROWAVABLE +MICROWAVE +MICROWAVEABLE +MICROWAVED +MICROWAVES +MICROWAVING +MICROWORLD +MICROWORLDS +MICRURGIES +MICRURGY +MICS +MICTURATE +MICTURATED +MICTURATES +MICTURATING +MICTURITION +MICTURITIONS +MID +MIDAIR +MIDAIRS +MIDBRAIN +MIDBRAINS +MIDCAP +MIDCOURSE +MIDCULT +MIDCULTS +MIDDAY +MIDDAYS +MIDDEN +MIDDENS +MIDDIES +MIDDLE +MIDDLEBROW +MIDDLEBROWS +MIDDLED +MIDDLEMAN +MIDDLEMEN +MIDDLER +MIDDLERS +MIDDLES +MIDDLEWEIGHT +MIDDLEWEIGHTS +MIDDLING +MIDDLINGLY +MIDDLINGS +MIDDORSAL +MIDDY +MIDFIELD +MIDFIELDER +MIDFIELDERS +MIDFIELDS +MIDGE +MIDGES +MIDGET +MIDGETS +MIDGUT +MIDGUTS +MIDI +MIDINETTE +MIDINETTES +MIDIRON +MIDIRONS +MIDIS +MIDISKIRT +MIDISKIRTS +MIDLAND +MIDLANDS +MIDLATITUDE +MIDLATITUDES +MIDLEG +MIDLEGS +MIDLIFE +MIDLIFER +MIDLIFERS +MIDLINE +MIDLINES +MIDLIST +MIDLISTS +MIDLIVES +MIDMONTH +MIDMONTHS +MIDMOST +MIDMOSTS +MIDNIGHT +MIDNIGHTLY +MIDNIGHTS +MIDNOON +MIDNOONS +MIDPOINT +MIDPOINTS +MIDRANGE +MIDRANGES +MIDRASH +MIDRASHIC +MIDRASHIM +MIDRASHOT +MIDRASHOTH +MIDRIB +MIDRIBS +MIDRIFF +MIDRIFFS +MIDS +MIDSAGITTAL +MIDSECTION +MIDSECTIONS +MIDSHIP +MIDSHIPMAN +MIDSHIPMEN +MIDSHIPS +MIDSIZE +MIDSIZED +MIDSOLE +MIDSOLES +MIDSPACE +MIDSPACES +MIDST +MIDSTORIES +MIDSTORY +MIDSTREAM +MIDSTREAMS +MIDSTS +MIDSUMMER +MIDSUMMERS +MIDTERM +MIDTERMS +MIDTOWN +MIDTOWNS +MIDWATCH +MIDWATCHES +MIDWAY +MIDWAYS +MIDWEEK +MIDWEEKLY +MIDWEEKS +MIDWIFE +MIDWIFED +MIDWIFERIES +MIDWIFERY +MIDWIFES +MIDWIFING +MIDWINTER +MIDWINTERS +MIDWIVED +MIDWIVES +MIDWIVING +MIDYEAR +MIDYEARS +MIEN +MIENS +MIFEPRISTONE +MIFEPRISTONES +MIFF +MIFFED +MIFFIER +MIFFIEST +MIFFINESS +MIFFINESSES +MIFFING +MIFFS +MIFFY +MIG +MIGG +MIGGLE +MIGGLES +MIGGS +MIGHT +MIGHTIER +MIGHTIEST +MIGHTILY +MIGHTINESS +MIGHTINESSES +MIGHTS +MIGHTY +MIGNON +MIGNONETTE +MIGNONETTES +MIGNONNE +MIGNONS +MIGRAINE +MIGRAINES +MIGRAINOUS +MIGRANT +MIGRANTS +MIGRATE +MIGRATED +MIGRATES +MIGRATING +MIGRATION +MIGRATIONAL +MIGRATIONS +MIGRATOR +MIGRATORS +MIGRATORY +MIGS +MIHRAB +MIHRABS +MIJNHEER +MIJNHEERS +MIKADO +MIKADOS +MIKE +MIKED +MIKES +MIKING +MIKRA +MIKRON +MIKRONS +MIKVAH +MIKVAHS +MIKVEH +MIKVEHS +MIKVOS +MIKVOT +MIKVOTH +MIL +MILADI +MILADIES +MILADIS +MILADY +MILAGE +MILAGES +MILCH +MILCHIG +MILD +MILDED +MILDEN +MILDENED +MILDENING +MILDENS +MILDER +MILDEST +MILDEW +MILDEWED +MILDEWING +MILDEWS +MILDEWY +MILDING +MILDLY +MILDNESS +MILDNESSES +MILDS +MILE +MILEAGE +MILEAGES +MILEPOST +MILEPOSTS +MILER +MILERS +MILES +MILESIAN +MILESIMO +MILESIMOS +MILESTONE +MILESTONES +MILFOIL +MILFOILS +MILIA +MILIARIA +MILIARIAL +MILIARIAS +MILIARY +MILIEU +MILIEUS +MILIEUX +MILITANCE +MILITANCES +MILITANCIES +MILITANCY +MILITANT +MILITANTLY +MILITANTNESS +MILITANTNESSES +MILITANTS +MILITARIA +MILITARIES +MILITARILY +MILITARISE +MILITARISED +MILITARISES +MILITARISING +MILITARISM +MILITARISMS +MILITARIST +MILITARISTIC +MILITARISTS +MILITARIZATION +MILITARIZATIONS +MILITARIZE +MILITARIZED +MILITARIZES +MILITARIZING +MILITARY +MILITATE +MILITATED +MILITATES +MILITATING +MILITIA +MILITIAMAN +MILITIAMEN +MILITIAS +MILIUM +MILK +MILKED +MILKER +MILKERS +MILKFISH +MILKFISHES +MILKIER +MILKIEST +MILKILY +MILKINESS +MILKINESSES +MILKING +MILKLESS +MILKMAID +MILKMAIDS +MILKMAN +MILKMEN +MILKS +MILKSHAKE +MILKSHAKES +MILKSHED +MILKSHEDS +MILKSOP +MILKSOPPY +MILKSOPS +MILKWEED +MILKWEEDS +MILKWOOD +MILKWOODS +MILKWORT +MILKWORTS +MILKY +MILL +MILLABLE +MILLAGE +MILLAGES +MILLBOARD +MILLBOARDS +MILLCAKE +MILLCAKES +MILLDAM +MILLDAMS +MILLE +MILLED +MILLEFIORI +MILLEFIORIS +MILLEFLEUR +MILLEFLEURS +MILLENARIAN +MILLENARIANISM +MILLENARIANISMS +MILLENARIANS +MILLENARIES +MILLENARY +MILLENNIA +MILLENNIAL +MILLENNIALISM +MILLENNIALISMS +MILLENNIALIST +MILLENNIALISTS +MILLENNIUM +MILLENNIUMS +MILLEPED +MILLEPEDE +MILLEPEDES +MILLEPEDS +MILLEPORE +MILLEPORES +MILLER +MILLERITE +MILLERITES +MILLERS +MILLES +MILLESIMAL +MILLESIMALLY +MILLESIMALS +MILLET +MILLETS +MILLHOUSE +MILLHOUSES +MILLIAMPERE +MILLIAMPERES +MILLIARD +MILLIARDS +MILLIARE +MILLIARES +MILLIARIES +MILLIARY +MILLIBAR +MILLIBARS +MILLICURIE +MILLICURIES +MILLIDEGREE +MILLIDEGREES +MILLIEME +MILLIEMES +MILLIER +MILLIERS +MILLIGAL +MILLIGALS +MILLIGRAM +MILLIGRAMS +MILLIHENRIES +MILLIHENRY +MILLIHENRYS +MILLILAMBERT +MILLILAMBERTS +MILLILITER +MILLILITERS +MILLILUCES +MILLILUX +MILLILUXES +MILLIME +MILLIMES +MILLIMETER +MILLIMETERS +MILLIMHO +MILLIMHOS +MILLIMICRON +MILLIMICRONS +MILLIMOLAR +MILLIMOLE +MILLIMOLES +MILLINE +MILLINER +MILLINERIES +MILLINERS +MILLINERY +MILLINES +MILLING +MILLINGS +MILLIOHM +MILLIOHMS +MILLION +MILLIONAIRE +MILLIONAIRES +MILLIONAIRESS +MILLIONAIRESSES +MILLIONFOLD +MILLIONS +MILLIONTH +MILLIONTHS +MILLIOSMOL +MILLIOSMOLS +MILLIPED +MILLIPEDE +MILLIPEDES +MILLIPEDS +MILLIRADIAN +MILLIRADIANS +MILLIREM +MILLIREMS +MILLIROENTGEN +MILLIROENTGENS +MILLISECOND +MILLISECONDS +MILLIVOLT +MILLIVOLTS +MILLIWATT +MILLIWATTS +MILLPOND +MILLPONDS +MILLRACE +MILLRACES +MILLRUN +MILLRUNS +MILLS +MILLSTONE +MILLSTONES +MILLSTREAM +MILLSTREAMS +MILLWORK +MILLWORKS +MILLWRIGHT +MILLWRIGHTS +MILNEB +MILNEBS +MILO +MILORD +MILORDS +MILOS +MILPA +MILPAS +MILREIS +MILS +MILT +MILTED +MILTER +MILTERS +MILTIER +MILTIEST +MILTING +MILTS +MILTY +MIM +MIMBAR +MIMBARS +MIME +MIMED +MIMEO +MIMEOED +MIMEOGRAPH +MIMEOGRAPHED +MIMEOGRAPHING +MIMEOGRAPHS +MIMEOING +MIMEOS +MIMER +MIMERS +MIMES +MIMESES +MIMESIS +MIMESISES +MIMETIC +MIMETICALLY +MIMETITE +MIMETITES +MIMIC +MIMICAL +MIMICKED +MIMICKER +MIMICKERS +MIMICKING +MIMICRIES +MIMICRY +MIMICS +MIMING +MIMOSA +MIMOSAS +MINA +MINABLE +MINACIOUS +MINACITIES +MINACITY +MINAE +MINARET +MINARETED +MINARETS +MINAS +MINATORY +MINAUDIERE +MINAUDIERES +MINCE +MINCED +MINCEMEAT +MINCEMEATS +MINCER +MINCERS +MINCES +MINCIER +MINCIEST +MINCING +MINCINGLY +MINCY +MIND +MINDBLOWER +MINDBLOWERS +MINDED +MINDEDNESS +MINDEDNESSES +MINDER +MINDERS +MINDFUL +MINDFULLY +MINDFULNESS +MINDFULNESSES +MINDING +MINDLESS +MINDLESSLY +MINDLESSNESS +MINDLESSNESSES +MINDS +MINDSET +MINDSETS +MINE +MINEABLE +MINED +MINEFIELD +MINEFIELDS +MINELAYER +MINELAYERS +MINER +MINERAL +MINERALISE +MINERALISED +MINERALISES +MINERALISING +MINERALIZABLE +MINERALIZATION +MINERALIZATIONS +MINERALIZE +MINERALIZED +MINERALIZER +MINERALIZERS +MINERALIZES +MINERALIZING +MINERALOGIC +MINERALOGICAL +MINERALOGICALLY +MINERALOGIES +MINERALOGIST +MINERALOGISTS +MINERALOGY +MINERALS +MINERS +MINES +MINESHAFT +MINESHAFTS +MINESTRONE +MINESTRONES +MINESWEEPER +MINESWEEPERS +MINESWEEPING +MINESWEEPINGS +MINGIER +MINGIEST +MINGLE +MINGLED +MINGLER +MINGLERS +MINGLES +MINGLING +MINGY +MINI +MINIATURE +MINIATURES +MINIATURIST +MINIATURISTIC +MINIATURISTS +MINIATURIZATION +MINIATURIZE +MINIATURIZED +MINIATURIZES +MINIATURIZING +MINIBAR +MINIBARS +MINIBIKE +MINIBIKER +MINIBIKERS +MINIBIKES +MINIBUS +MINIBUSES +MINIBUSSES +MINICAB +MINICABS +MINICAM +MINICAMP +MINICAMPS +MINICAMS +MINICAR +MINICARS +MINICOMPUTER +MINICOMPUTERS +MINICOURSE +MINICOURSES +MINIDISC +MINIDISCS +MINIDRESS +MINIDRESSES +MINIFIED +MINIFIES +MINIFY +MINIFYING +MINIKIN +MINIKINS +MINILAB +MINILABS +MINIM +MINIMA +MINIMAL +MINIMALISM +MINIMALISMS +MINIMALIST +MINIMALISTS +MINIMALLY +MINIMALS +MINIMAX +MINIMAXES +MINIMILL +MINIMILLS +MINIMISE +MINIMISED +MINIMISES +MINIMISING +MINIMIZATION +MINIMIZATIONS +MINIMIZE +MINIMIZED +MINIMIZER +MINIMIZERS +MINIMIZES +MINIMIZING +MINIMS +MINIMUM +MINIMUMS +MINING +MININGS +MINION +MINIONS +MINIPARK +MINIPARKS +MINIPILL +MINIPILLS +MINIS +MINISCHOOL +MINISCHOOLS +MINISCULE +MINISCULES +MINISERIES +MINISH +MINISHED +MINISHES +MINISHING +MINISKI +MINISKIRT +MINISKIRTED +MINISKIRTS +MINISKIS +MINISTATE +MINISTATES +MINISTER +MINISTERED +MINISTERIAL +MINISTERIALLY +MINISTERING +MINISTERS +MINISTRANT +MINISTRANTS +MINISTRATION +MINISTRATIONS +MINISTRIES +MINISTRY +MINITOWER +MINITOWERS +MINITRACK +MINITRACKS +MINIUM +MINIUMS +MINIVAN +MINIVANS +MINIVER +MINIVERS +MINK +MINKE +MINKES +MINKS +MINNESINGER +MINNESINGERS +MINNIES +MINNOW +MINNOWS +MINNY +MINOR +MINORCA +MINORCAS +MINORED +MINORING +MINORITIES +MINORITY +MINORS +MINOXIDIL +MINOXIDILS +MINSTER +MINSTERS +MINSTREL +MINSTRELS +MINSTRELSIES +MINSTRELSY +MINT +MINTAGE +MINTAGES +MINTED +MINTER +MINTERS +MINTIER +MINTIEST +MINTING +MINTS +MINTY +MINUEND +MINUENDS +MINUET +MINUETS +MINUS +MINUSCULE +MINUSCULES +MINUSES +MINUTE +MINUTED +MINUTELY +MINUTEMAN +MINUTEMEN +MINUTENESS +MINUTENESSES +MINUTER +MINUTES +MINUTEST +MINUTIA +MINUTIAE +MINUTIAL +MINUTING +MINX +MINXES +MINXISH +MINYAN +MINYANIM +MINYANS +MIOCENE +MIOSES +MIOSIS +MIOTIC +MIOTICS +MIPS +MIQUELET +MIQUELETS +MIR +MIRABELLE +MIRABELLES +MIRACIDIA +MIRACIDIAL +MIRACIDIUM +MIRACLE +MIRACLES +MIRACULOUS +MIRACULOUSLY +MIRACULOUSNESS +MIRADOR +MIRADORS +MIRAGE +MIRAGES +MIRANDIZE +MIRANDIZED +MIRANDIZES +MIRANDIZING +MIRE +MIRED +MIREPOIX +MIRES +MIREX +MIREXES +MIRI +MIRIER +MIRIEST +MIRIN +MIRINESS +MIRINESSES +MIRING +MIRINS +MIRK +MIRKER +MIRKEST +MIRKIER +MIRKIEST +MIRKILY +MIRKS +MIRKY +MIRLITON +MIRLITONS +MIRROR +MIRRORED +MIRRORING +MIRRORLIKE +MIRRORS +MIRS +MIRTH +MIRTHFUL +MIRTHFULLY +MIRTHFULNESS +MIRTHFULNESSES +MIRTHLESS +MIRTHLESSLY +MIRTHS +MIRY +MIRZA +MIRZAS +MIS +MISACT +MISACTED +MISACTING +MISACTS +MISADAPT +MISADAPTED +MISADAPTING +MISADAPTS +MISADD +MISADDED +MISADDING +MISADDRESS +MISADDRESSED +MISADDRESSES +MISADDRESSING +MISADDS +MISADJUST +MISADJUSTED +MISADJUSTING +MISADJUSTS +MISADVENTURE +MISADVENTURES +MISADVICE +MISADVICES +MISADVISE +MISADVISED +MISADVISES +MISADVISING +MISAGENT +MISAGENTS +MISAIM +MISAIMED +MISAIMING +MISAIMS +MISALIGN +MISALIGNED +MISALIGNING +MISALIGNMENT +MISALIGNMENTS +MISALIGNS +MISALLIANCE +MISALLIANCES +MISALLIED +MISALLIES +MISALLOCATE +MISALLOCATED +MISALLOCATES +MISALLOCATING +MISALLOCATION +MISALLOCATIONS +MISALLOT +MISALLOTS +MISALLOTTED +MISALLOTTING +MISALLY +MISALLYING +MISALTER +MISALTERED +MISALTERING +MISALTERS +MISANALYSES +MISANALYSIS +MISANDRIES +MISANDRY +MISANTHROPE +MISANTHROPES +MISANTHROPIC +MISANTHROPIES +MISANTHROPY +MISAPPLICATION +MISAPPLICATIONS +MISAPPLIED +MISAPPLIES +MISAPPLY +MISAPPLYING +MISAPPRAISAL +MISAPPRAISALS +MISAPPREHEND +MISAPPREHENDED +MISAPPREHENDING +MISAPPREHENDS +MISAPPREHENSION +MISAPPROPRIATE +MISAPPROPRIATED +MISAPPROPRIATES +MISARTICULATE +MISARTICULATED +MISARTICULATES +MISARTICULATING +MISASSAY +MISASSAYED +MISASSAYING +MISASSAYS +MISASSEMBLE +MISASSEMBLED +MISASSEMBLES +MISASSEMBLING +MISASSIGN +MISASSIGNED +MISASSIGNING +MISASSIGNS +MISASSUMPTION +MISASSUMPTIONS +MISATE +MISATONE +MISATONED +MISATONES +MISATONING +MISATTRIBUTE +MISATTRIBUTED +MISATTRIBUTES +MISATTRIBUTING +MISATTRIBUTION +MISATTRIBUTIONS +MISAVER +MISAVERRED +MISAVERRING +MISAVERS +MISAWARD +MISAWARDED +MISAWARDING +MISAWARDS +MISBALANCE +MISBALANCED +MISBALANCES +MISBALANCING +MISBECAME +MISBECOME +MISBECOMES +MISBECOMING +MISBEGAN +MISBEGIN +MISBEGINNING +MISBEGINS +MISBEGOT +MISBEGOTTEN +MISBEGUN +MISBEHAVE +MISBEHAVED +MISBEHAVER +MISBEHAVERS +MISBEHAVES +MISBEHAVING +MISBEHAVIOR +MISBEHAVIORS +MISBELIEF +MISBELIEFS +MISBELIEVE +MISBELIEVED +MISBELIEVER +MISBELIEVERS +MISBELIEVES +MISBELIEVING +MISBIAS +MISBIASED +MISBIASES +MISBIASING +MISBIASSED +MISBIASSES +MISBIASSING +MISBILL +MISBILLED +MISBILLING +MISBILLS +MISBIND +MISBINDING +MISBINDS +MISBOUND +MISBRAND +MISBRANDED +MISBRANDING +MISBRANDS +MISBUILD +MISBUILDING +MISBUILDS +MISBUILT +MISBUTTON +MISBUTTONED +MISBUTTONING +MISBUTTONS +MISCALCULATE +MISCALCULATED +MISCALCULATES +MISCALCULATING +MISCALCULATION +MISCALCULATIONS +MISCALL +MISCALLED +MISCALLER +MISCALLERS +MISCALLING +MISCALLS +MISCAPTION +MISCAPTIONED +MISCAPTIONING +MISCAPTIONS +MISCARRIAGE +MISCARRIAGES +MISCARRIED +MISCARRIES +MISCARRY +MISCARRYING +MISCAST +MISCASTING +MISCASTS +MISCATALOG +MISCATALOGED +MISCATALOGING +MISCATALOGS +MISCEGENATION +MISCEGENATIONAL +MISCEGENATIONS +MISCELLANEA +MISCELLANEOUS +MISCELLANEOUSLY +MISCELLANIES +MISCELLANIST +MISCELLANISTS +MISCELLANY +MISCHANCE +MISCHANCES +MISCHANNEL +MISCHANNELED +MISCHANNELING +MISCHANNELLED +MISCHANNELLING +MISCHANNELS +MISCHARACTERIZE +MISCHARGE +MISCHARGED +MISCHARGES +MISCHARGING +MISCHIEF +MISCHIEFS +MISCHIEVOUS +MISCHIEVOUSLY +MISCHIEVOUSNESS +MISCHOICE +MISCHOICES +MISCHOOSE +MISCHOOSES +MISCHOOSING +MISCHOSE +MISCHOSEN +MISCIBILITIES +MISCIBILITY +MISCIBLE +MISCITATION +MISCITATIONS +MISCITE +MISCITED +MISCITES +MISCITING +MISCLAIM +MISCLAIMED +MISCLAIMING +MISCLAIMS +MISCLASS +MISCLASSED +MISCLASSES +MISCLASSIFIED +MISCLASSIFIES +MISCLASSIFY +MISCLASSIFYING +MISCLASSING +MISCODE +MISCODED +MISCODES +MISCODING +MISCOIN +MISCOINED +MISCOINING +MISCOINS +MISCOLOR +MISCOLORED +MISCOLORING +MISCOLORS +MISCOMPUTATION +MISCOMPUTATIONS +MISCOMPUTE +MISCOMPUTED +MISCOMPUTES +MISCOMPUTING +MISCONCEIVE +MISCONCEIVED +MISCONCEIVER +MISCONCEIVERS +MISCONCEIVES +MISCONCEIVING +MISCONCEPTION +MISCONCEPTIONS +MISCONDUCT +MISCONDUCTED +MISCONDUCTING +MISCONDUCTS +MISCONNECT +MISCONNECTED +MISCONNECTING +MISCONNECTION +MISCONNECTIONS +MISCONNECTS +MISCONSTRUCTION +MISCONSTRUE +MISCONSTRUED +MISCONSTRUES +MISCONSTRUING +MISCOOK +MISCOOKED +MISCOOKING +MISCOOKS +MISCOPIED +MISCOPIES +MISCOPY +MISCOPYING +MISCORRELATION +MISCORRELATIONS +MISCOUNT +MISCOUNTED +MISCOUNTING +MISCOUNTS +MISCREANT +MISCREANTS +MISCREATE +MISCREATED +MISCREATES +MISCREATING +MISCREATION +MISCREATIONS +MISCUE +MISCUED +MISCUES +MISCUING +MISCUT +MISCUTS +MISCUTTING +MISDATE +MISDATED +MISDATES +MISDATING +MISDEAL +MISDEALER +MISDEALERS +MISDEALING +MISDEALS +MISDEALT +MISDEED +MISDEEDS +MISDEEM +MISDEEMED +MISDEEMING +MISDEEMS +MISDEFINE +MISDEFINED +MISDEFINES +MISDEFINING +MISDEMEANANT +MISDEMEANANTS +MISDEMEANOR +MISDEMEANORS +MISDESCRIBE +MISDESCRIBED +MISDESCRIBES +MISDESCRIBING +MISDESCRIPTION +MISDESCRIPTIONS +MISDEVELOP +MISDEVELOPED +MISDEVELOPING +MISDEVELOPS +MISDIAGNOSE +MISDIAGNOSED +MISDIAGNOSES +MISDIAGNOSING +MISDIAGNOSIS +MISDIAL +MISDIALED +MISDIALING +MISDIALLED +MISDIALLING +MISDIALS +MISDID +MISDIRECT +MISDIRECTED +MISDIRECTING +MISDIRECTION +MISDIRECTIONS +MISDIRECTS +MISDISTRIBUTION +MISDIVIDE +MISDIVIDED +MISDIVIDES +MISDIVIDING +MISDIVISION +MISDIVISIONS +MISDO +MISDOER +MISDOERS +MISDOES +MISDOING +MISDOINGS +MISDONE +MISDOUBT +MISDOUBTED +MISDOUBTING +MISDOUBTS +MISDRAW +MISDRAWING +MISDRAWN +MISDRAWS +MISDREW +MISDRIVE +MISDRIVEN +MISDRIVES +MISDRIVING +MISDROVE +MISE +MISEASE +MISEASES +MISEAT +MISEATEN +MISEATING +MISEATS +MISEDIT +MISEDITED +MISEDITING +MISEDITS +MISEDUCATE +MISEDUCATED +MISEDUCATES +MISEDUCATING +MISEDUCATION +MISEDUCATIONS +MISEMPHASES +MISEMPHASIS +MISEMPHASIZE +MISEMPHASIZED +MISEMPHASIZES +MISEMPHASIZING +MISEMPLOY +MISEMPLOYED +MISEMPLOYING +MISEMPLOYMENT +MISEMPLOYMENTS +MISEMPLOYS +MISENROL +MISENROLL +MISENROLLED +MISENROLLING +MISENROLLS +MISENROLS +MISENTER +MISENTERED +MISENTERING +MISENTERS +MISENTRIES +MISENTRY +MISER +MISERABLE +MISERABLENESS +MISERABLENESSES +MISERABLES +MISERABLY +MISERERE +MISERERES +MISERICORD +MISERICORDE +MISERICORDES +MISERICORDS +MISERIES +MISERLINESS +MISERLINESSES +MISERLY +MISERS +MISERY +MISES +MISESTEEM +MISESTEEMED +MISESTEEMING +MISESTEEMS +MISESTIMATE +MISESTIMATED +MISESTIMATES +MISESTIMATING +MISESTIMATION +MISESTIMATIONS +MISEVALUATE +MISEVALUATED +MISEVALUATES +MISEVALUATING +MISEVALUATION +MISEVALUATIONS +MISEVENT +MISEVENTS +MISFAITH +MISFAITHS +MISFEASANCE +MISFEASANCES +MISFEASOR +MISFEASORS +MISFED +MISFEED +MISFEEDING +MISFEEDS +MISFIELD +MISFIELDED +MISFIELDING +MISFIELDS +MISFILE +MISFILED +MISFILES +MISFILING +MISFIRE +MISFIRED +MISFIRES +MISFIRING +MISFIT +MISFITS +MISFITTED +MISFITTING +MISFOCUS +MISFOCUSED +MISFOCUSES +MISFOCUSING +MISFOCUSSED +MISFOCUSSES +MISFOCUSSING +MISFORM +MISFORMED +MISFORMING +MISFORMS +MISFORTUNE +MISFORTUNES +MISFRAME +MISFRAMED +MISFRAMES +MISFRAMING +MISFUNCTION +MISFUNCTIONED +MISFUNCTIONING +MISFUNCTIONS +MISGAUGE +MISGAUGED +MISGAUGES +MISGAUGING +MISGAVE +MISGIVE +MISGIVEN +MISGIVES +MISGIVING +MISGIVINGS +MISGOVERN +MISGOVERNED +MISGOVERNING +MISGOVERNMENT +MISGOVERNMENTS +MISGOVERNS +MISGRADE +MISGRADED +MISGRADES +MISGRADING +MISGRAFT +MISGRAFTED +MISGRAFTING +MISGRAFTS +MISGREW +MISGROW +MISGROWING +MISGROWN +MISGROWS +MISGUESS +MISGUESSED +MISGUESSES +MISGUESSING +MISGUIDANCE +MISGUIDANCES +MISGUIDE +MISGUIDED +MISGUIDEDLY +MISGUIDEDNESS +MISGUIDEDNESSES +MISGUIDER +MISGUIDERS +MISGUIDES +MISGUIDING +MISHANDLE +MISHANDLED +MISHANDLES +MISHANDLING +MISHANTER +MISHANTERS +MISHAP +MISHAPS +MISHEAR +MISHEARD +MISHEARING +MISHEARS +MISHEGAAS +MISHEGOSS +MISHIT +MISHITS +MISHITTING +MISHMASH +MISHMASHES +MISHMOSH +MISHMOSHES +MISIDENTIFIED +MISIDENTIFIES +MISIDENTIFY +MISIDENTIFYING +MISIMPRESSION +MISIMPRESSIONS +MISINFER +MISINFERRED +MISINFERRING +MISINFERS +MISINFORM +MISINFORMATION +MISINFORMATIONS +MISINFORMED +MISINFORMING +MISINFORMS +MISINTER +MISINTERPRET +MISINTERPRETED +MISINTERPRETING +MISINTERPRETS +MISINTERRED +MISINTERRING +MISINTERS +MISJOIN +MISJOINDER +MISJOINDERS +MISJOINED +MISJOINING +MISJOINS +MISJUDGE +MISJUDGED +MISJUDGES +MISJUDGING +MISJUDGMENT +MISJUDGMENTS +MISKAL +MISKALS +MISKEEP +MISKEEPING +MISKEEPS +MISKEPT +MISKICK +MISKICKED +MISKICKING +MISKICKS +MISKNEW +MISKNOW +MISKNOWING +MISKNOWLEDGE +MISKNOWLEDGES +MISKNOWN +MISKNOWS +MISLABEL +MISLABELED +MISLABELING +MISLABELLED +MISLABELLING +MISLABELS +MISLABOR +MISLABORED +MISLABORING +MISLABORS +MISLAID +MISLAIN +MISLAY +MISLAYER +MISLAYERS +MISLAYING +MISLAYS +MISLEAD +MISLEADER +MISLEADERS +MISLEADING +MISLEADINGLY +MISLEADS +MISLEARED +MISLEARN +MISLEARNED +MISLEARNING +MISLEARNS +MISLEARNT +MISLED +MISLIE +MISLIES +MISLIGHT +MISLIGHTED +MISLIGHTING +MISLIGHTS +MISLIKE +MISLIKED +MISLIKER +MISLIKERS +MISLIKES +MISLIKING +MISLIT +MISLIVE +MISLIVED +MISLIVES +MISLIVING +MISLOCATE +MISLOCATED +MISLOCATES +MISLOCATING +MISLOCATION +MISLOCATIONS +MISLODGE +MISLODGED +MISLODGES +MISLODGING +MISLYING +MISMADE +MISMAKE +MISMAKES +MISMAKING +MISMANAGE +MISMANAGED +MISMANAGEMENT +MISMANAGEMENTS +MISMANAGES +MISMANAGING +MISMARK +MISMARKED +MISMARKING +MISMARKS +MISMARRIAGE +MISMARRIAGES +MISMATCH +MISMATCHED +MISMATCHES +MISMATCHING +MISMATE +MISMATED +MISMATES +MISMATING +MISMEET +MISMEETING +MISMEETS +MISMET +MISMOVE +MISMOVED +MISMOVES +MISMOVING +MISNAME +MISNAMED +MISNAMES +MISNAMING +MISNOMER +MISNOMERED +MISNOMERS +MISNUMBER +MISNUMBERED +MISNUMBERING +MISNUMBERS +MISO +MISOGAMIC +MISOGAMIES +MISOGAMIST +MISOGAMISTS +MISOGAMY +MISOGYNIC +MISOGYNIES +MISOGYNIST +MISOGYNISTIC +MISOGYNISTS +MISOGYNY +MISOLOGIES +MISOLOGY +MISONEISM +MISONEISMS +MISONEIST +MISONEISTS +MISORDER +MISORDERED +MISORDERING +MISORDERS +MISORIENT +MISORIENTATION +MISORIENTATIONS +MISORIENTED +MISORIENTING +MISORIENTS +MISOS +MISPACKAGE +MISPACKAGED +MISPACKAGES +MISPACKAGING +MISPAGE +MISPAGED +MISPAGES +MISPAGING +MISPAINT +MISPAINTED +MISPAINTING +MISPAINTS +MISPARSE +MISPARSED +MISPARSES +MISPARSING +MISPART +MISPARTED +MISPARTING +MISPARTS +MISPATCH +MISPATCHED +MISPATCHES +MISPATCHING +MISPEN +MISPENNED +MISPENNING +MISPENS +MISPERCEIVE +MISPERCEIVED +MISPERCEIVES +MISPERCEIVING +MISPERCEPTION +MISPERCEPTIONS +MISPHRASE +MISPHRASED +MISPHRASES +MISPHRASING +MISPICKEL +MISPICKELS +MISPLACE +MISPLACED +MISPLACEMENT +MISPLACEMENTS +MISPLACES +MISPLACING +MISPLAN +MISPLANNED +MISPLANNING +MISPLANS +MISPLANT +MISPLANTED +MISPLANTING +MISPLANTS +MISPLAY +MISPLAYED +MISPLAYING +MISPLAYS +MISPLEAD +MISPLEADED +MISPLEADING +MISPLEADS +MISPLED +MISPOINT +MISPOINTED +MISPOINTING +MISPOINTS +MISPOISE +MISPOISED +MISPOISES +MISPOISING +MISPOSITION +MISPOSITIONED +MISPOSITIONING +MISPOSITIONS +MISPRICE +MISPRICED +MISPRICES +MISPRICING +MISPRINT +MISPRINTED +MISPRINTING +MISPRINTS +MISPRISION +MISPRISIONS +MISPRIZE +MISPRIZED +MISPRIZER +MISPRIZERS +MISPRIZES +MISPRIZING +MISPROGRAM +MISPROGRAMED +MISPROGRAMING +MISPROGRAMMED +MISPROGRAMMING +MISPROGRAMS +MISPRONOUNCE +MISPRONOUNCED +MISPRONOUNCES +MISPRONOUNCING +MISQUOTATION +MISQUOTATIONS +MISQUOTE +MISQUOTED +MISQUOTER +MISQUOTERS +MISQUOTES +MISQUOTING +MISRAISE +MISRAISED +MISRAISES +MISRAISING +MISRATE +MISRATED +MISRATES +MISRATING +MISREAD +MISREADING +MISREADS +MISRECKON +MISRECKONED +MISRECKONING +MISRECKONS +MISRECOLLECTION +MISRECORD +MISRECORDED +MISRECORDING +MISRECORDS +MISREFER +MISREFERENCE +MISREFERENCES +MISREFERRED +MISREFERRING +MISREFERS +MISREGISTER +MISREGISTERED +MISREGISTERING +MISREGISTERS +MISREGISTRATION +MISRELATE +MISRELATED +MISRELATES +MISRELATING +MISRELIED +MISRELIES +MISRELY +MISRELYING +MISREMEMBER +MISREMEMBERED +MISREMEMBERING +MISREMEMBERS +MISRENDER +MISRENDERED +MISRENDERING +MISRENDERS +MISREPORT +MISREPORTED +MISREPORTING +MISREPORTS +MISREPRESENT +MISREPRESENTED +MISREPRESENTING +MISREPRESENTS +MISRHYMED +MISROUTE +MISROUTED +MISROUTES +MISROUTING +MISRULE +MISRULED +MISRULES +MISRULING +MISS +MISSABLE +MISSAID +MISSAL +MISSALS +MISSAY +MISSAYING +MISSAYS +MISSEAT +MISSEATED +MISSEATING +MISSEATS +MISSED +MISSEL +MISSELS +MISSEND +MISSENDING +MISSENDS +MISSENSE +MISSENSES +MISSENT +MISSES +MISSET +MISSETS +MISSETTING +MISSHAPE +MISSHAPED +MISSHAPEN +MISSHAPENLY +MISSHAPER +MISSHAPERS +MISSHAPES +MISSHAPING +MISSHOD +MISSIES +MISSILE +MISSILEER +MISSILEERS +MISSILEMAN +MISSILEMEN +MISSILERIES +MISSILERY +MISSILES +MISSILRIES +MISSILRY +MISSING +MISSIOLOGIES +MISSIOLOGY +MISSION +MISSIONAL +MISSIONARIES +MISSIONARY +MISSIONED +MISSIONER +MISSIONERS +MISSIONING +MISSIONIZATION +MISSIONIZATIONS +MISSIONIZE +MISSIONIZED +MISSIONIZER +MISSIONIZERS +MISSIONIZES +MISSIONIZING +MISSIONS +MISSIS +MISSISES +MISSIVE +MISSIVES +MISSORT +MISSORTED +MISSORTING +MISSORTS +MISSOUND +MISSOUNDED +MISSOUNDING +MISSOUNDS +MISSOUT +MISSOUTS +MISSPACE +MISSPACED +MISSPACES +MISSPACING +MISSPEAK +MISSPEAKING +MISSPEAKS +MISSPELL +MISSPELLED +MISSPELLING +MISSPELLINGS +MISSPELLS +MISSPELT +MISSPEND +MISSPENDING +MISSPENDS +MISSPENT +MISSPOKE +MISSPOKEN +MISSTAMP +MISSTAMPED +MISSTAMPING +MISSTAMPS +MISSTART +MISSTARTED +MISSTARTING +MISSTARTS +MISSTATE +MISSTATED +MISSTATEMENT +MISSTATEMENTS +MISSTATES +MISSTATING +MISSTEER +MISSTEERED +MISSTEERING +MISSTEERS +MISSTEP +MISSTEPPED +MISSTEPPING +MISSTEPS +MISSTOP +MISSTOPPED +MISSTOPPING +MISSTOPS +MISSTRICKEN +MISSTRIKE +MISSTRIKES +MISSTRIKING +MISSTRUCK +MISSTYLE +MISSTYLED +MISSTYLES +MISSTYLING +MISSUIT +MISSUITED +MISSUITING +MISSUITS +MISSUS +MISSUSES +MISSY +MIST +MISTAKABLE +MISTAKE +MISTAKEN +MISTAKENLY +MISTAKER +MISTAKERS +MISTAKES +MISTAKING +MISTAUGHT +MISTBOW +MISTBOWS +MISTEACH +MISTEACHES +MISTEACHING +MISTED +MISTEND +MISTENDED +MISTENDING +MISTENDS +MISTER +MISTERM +MISTERMED +MISTERMING +MISTERMS +MISTERS +MISTEUK +MISTHINK +MISTHINKING +MISTHINKS +MISTHOUGHT +MISTHREW +MISTHROW +MISTHROWING +MISTHROWN +MISTHROWS +MISTIER +MISTIEST +MISTILY +MISTIME +MISTIMED +MISTIMES +MISTIMING +MISTINESS +MISTINESSES +MISTING +MISTITLE +MISTITLED +MISTITLES +MISTITLING +MISTLETOE +MISTLETOES +MISTOOK +MISTOUCH +MISTOUCHED +MISTOUCHES +MISTOUCHING +MISTRACE +MISTRACED +MISTRACES +MISTRACING +MISTRAIN +MISTRAINED +MISTRAINING +MISTRAINS +MISTRAL +MISTRALS +MISTRANSCRIBE +MISTRANSCRIBED +MISTRANSCRIBES +MISTRANSCRIBING +MISTRANSLATE +MISTRANSLATED +MISTRANSLATES +MISTRANSLATING +MISTRANSLATION +MISTRANSLATIONS +MISTREAT +MISTREATED +MISTREATING +MISTREATMENT +MISTREATMENTS +MISTREATS +MISTRESS +MISTRESSES +MISTRIAL +MISTRIALS +MISTRUST +MISTRUSTED +MISTRUSTFUL +MISTRUSTFULLY +MISTRUSTFULNESS +MISTRUSTING +MISTRUSTS +MISTRUTH +MISTRUTHS +MISTRYST +MISTRYSTED +MISTRYSTING +MISTRYSTS +MISTS +MISTUNE +MISTUNED +MISTUNES +MISTUNING +MISTUTOR +MISTUTORED +MISTUTORING +MISTUTORS +MISTY +MISTYPE +MISTYPED +MISTYPES +MISTYPING +MISUNDERSTAND +MISUNDERSTANDS +MISUNDERSTOOD +MISUNION +MISUNIONS +MISUSAGE +MISUSAGES +MISUSE +MISUSED +MISUSER +MISUSERS +MISUSES +MISUSING +MISUTILIZATION +MISUTILIZATIONS +MISVALUE +MISVALUED +MISVALUES +MISVALUING +MISVOCALIZATION +MISWORD +MISWORDED +MISWORDING +MISWORDS +MISWRIT +MISWRITE +MISWRITES +MISWRITING +MISWRITTEN +MISWROTE +MISYOKE +MISYOKED +MISYOKES +MISYOKING +MITE +MITER +MITERED +MITERER +MITERERS +MITERING +MITERS +MITERWORT +MITERWORTS +MITES +MITHER +MITHERS +MITHRIDATE +MITHRIDATES +MITICIDAL +MITICIDE +MITICIDES +MITIER +MITIEST +MITIGABLE +MITIGATE +MITIGATED +MITIGATES +MITIGATING +MITIGATION +MITIGATIONS +MITIGATIVE +MITIGATOR +MITIGATORS +MITIGATORY +MITIS +MITISES +MITOCHONDRIA +MITOCHONDRIAL +MITOCHONDRION +MITOGEN +MITOGENIC +MITOGENICITIES +MITOGENICITY +MITOGENS +MITOMYCIN +MITOMYCINS +MITOSES +MITOSIS +MITOTIC +MITOTICALLY +MITRAL +MITRE +MITRED +MITRES +MITREWORT +MITREWORTS +MITRING +MITSVAH +MITSVAHS +MITSVOTH +MITT +MITTEN +MITTENED +MITTENS +MITTIMUS +MITTIMUSES +MITTS +MITY +MITZVAH +MITZVAHS +MITZVOTH +MIX +MIXABLE +MIXED +MIXEDLY +MIXER +MIXERS +MIXES +MIXIBLE +MIXING +MIXOLOGIES +MIXOLOGIST +MIXOLOGISTS +MIXOLOGY +MIXT +MIXTURE +MIXTURES +MIXUP +MIXUPS +MIZEN +MIZENMAST +MIZENMASTS +MIZENS +MIZUNA +MIZUNAS +MIZZEN +MIZZENMAST +MIZZENMASTS +MIZZENS +MIZZLE +MIZZLED +MIZZLES +MIZZLING +MIZZLY +MM +MNEMONIC +MNEMONICALLY +MNEMONICS +MO +MOA +MOAN +MOANED +MOANER +MOANERS +MOANFUL +MOANING +MOANINGLY +MOANS +MOAS +MOAT +MOATED +MOATING +MOATLIKE +MOATS +MOB +MOBBED +MOBBER +MOBBERS +MOBBING +MOBBISH +MOBBISHLY +MOBBISM +MOBBISMS +MOBCAP +MOBCAPS +MOBILE +MOBILES +MOBILISE +MOBILISED +MOBILISES +MOBILISING +MOBILITIES +MOBILITY +MOBILIZATION +MOBILIZATIONS +MOBILIZE +MOBILIZED +MOBILIZER +MOBILIZERS +MOBILIZES +MOBILIZING +MOBLED +MOBOCRACIES +MOBOCRACY +MOBOCRAT +MOBOCRATIC +MOBOCRATS +MOBS +MOBSTER +MOBSTERS +MOC +MOCCASIN +MOCCASINS +MOCHA +MOCHAS +MOCHILA +MOCHILAS +MOCK +MOCKABLE +MOCKED +MOCKER +MOCKERIES +MOCKERS +MOCKERY +MOCKING +MOCKINGBIRD +MOCKINGBIRDS +MOCKINGLY +MOCKS +MOCKTAIL +MOCKTAILS +MOCKUP +MOCKUPS +MOCS +MOD +MODAL +MODALITIES +MODALITY +MODALLY +MODALS +MODE +MODEL +MODELED +MODELER +MODELERS +MODELING +MODELINGS +MODELIST +MODELISTS +MODELLED +MODELLER +MODELLERS +MODELLING +MODELS +MODEM +MODEMED +MODEMING +MODEMS +MODERATE +MODERATED +MODERATELY +MODERATENESS +MODERATENESSES +MODERATES +MODERATING +MODERATION +MODERATIONS +MODERATO +MODERATOR +MODERATORS +MODERATORSHIP +MODERATORSHIPS +MODERATOS +MODERN +MODERNE +MODERNER +MODERNES +MODERNEST +MODERNISATION +MODERNISATIONS +MODERNISE +MODERNISED +MODERNISES +MODERNISING +MODERNISM +MODERNISMS +MODERNIST +MODERNISTIC +MODERNISTS +MODERNITIES +MODERNITY +MODERNIZATION +MODERNIZATIONS +MODERNIZE +MODERNIZED +MODERNIZER +MODERNIZERS +MODERNIZES +MODERNIZING +MODERNLY +MODERNNESS +MODERNNESSES +MODERNS +MODES +MODEST +MODESTER +MODESTEST +MODESTIES +MODESTLY +MODESTY +MODI +MODICA +MODICUM +MODICUMS +MODIFIABILITIES +MODIFIABILITY +MODIFIABLE +MODIFICATION +MODIFICATIONS +MODIFIED +MODIFIER +MODIFIERS +MODIFIES +MODIFY +MODIFYING +MODILLION +MODILLIONS +MODIOLI +MODIOLUS +MODISH +MODISHLY +MODISHNESS +MODISHNESSES +MODISTE +MODISTES +MODS +MODULABILITIES +MODULABILITY +MODULAR +MODULARITIES +MODULARITY +MODULARIZED +MODULARLY +MODULARS +MODULATE +MODULATED +MODULATES +MODULATING +MODULATION +MODULATIONS +MODULATOR +MODULATORS +MODULATORY +MODULE +MODULES +MODULI +MODULO +MODULUS +MODUS +MOFETTE +MOFETTES +MOFFETTE +MOFFETTES +MOG +MOGGED +MOGGIE +MOGGIES +MOGGING +MOGGY +MOGHUL +MOGHULS +MOGS +MOGUL +MOGULED +MOGULS +MOHAIR +MOHAIRS +MOHALIM +MOHAWK +MOHAWKS +MOHEL +MOHELIM +MOHELS +MOHUR +MOHURS +MOIDORE +MOIDORES +MOIETIES +MOIETY +MOIL +MOILED +MOILER +MOILERS +MOILING +MOILINGLY +MOILS +MOIRA +MOIRAI +MOIRE +MOIRES +MOIST +MOISTEN +MOISTENED +MOISTENER +MOISTENERS +MOISTENING +MOISTENS +MOISTER +MOISTEST +MOISTFUL +MOISTLY +MOISTNESS +MOISTNESSES +MOISTURE +MOISTURES +MOISTURISE +MOISTURISED +MOISTURISES +MOISTURISING +MOISTURIZE +MOISTURIZED +MOISTURIZER +MOISTURIZERS +MOISTURIZES +MOISTURIZING +MOJARRA +MOJARRAS +MOJO +MOJOES +MOJOS +MOKE +MOKES +MOL +MOLA +MOLAL +MOLALITIES +MOLALITY +MOLAR +MOLARITIES +MOLARITY +MOLARS +MOLAS +MOLASSES +MOLASSESES +MOLD +MOLDABLE +MOLDBOARD +MOLDBOARDS +MOLDED +MOLDER +MOLDERED +MOLDERING +MOLDERS +MOLDIER +MOLDIEST +MOLDINESS +MOLDINESSES +MOLDING +MOLDINGS +MOLDS +MOLDWARP +MOLDWARPS +MOLDY +MOLE +MOLECULAR +MOLECULARLY +MOLECULE +MOLECULES +MOLEHILL +MOLEHILLS +MOLES +MOLESKIN +MOLESKINS +MOLEST +MOLESTATION +MOLESTATIONS +MOLESTED +MOLESTER +MOLESTERS +MOLESTING +MOLESTS +MOLIES +MOLINE +MOLL +MOLLAH +MOLLAHS +MOLLIE +MOLLIES +MOLLIFICATION +MOLLIFICATIONS +MOLLIFIED +MOLLIFIER +MOLLIFIERS +MOLLIFIES +MOLLIFY +MOLLIFYING +MOLLS +MOLLUSC +MOLLUSCA +MOLLUSCAN +MOLLUSCANS +MOLLUSCICIDAL +MOLLUSCICIDE +MOLLUSCICIDES +MOLLUSCS +MOLLUSCUM +MOLLUSK +MOLLUSKAN +MOLLUSKANS +MOLLUSKS +MOLLY +MOLLYCODDLE +MOLLYCODDLED +MOLLYCODDLER +MOLLYCODDLERS +MOLLYCODDLES +MOLLYCODDLING +MOLLYMAWK +MOLLYMAWKS +MOLOCH +MOLOCHS +MOLS +MOLT +MOLTED +MOLTEN +MOLTENLY +MOLTER +MOLTERS +MOLTING +MOLTO +MOLTS +MOLY +MOLYBDATE +MOLYBDATES +MOLYBDENITE +MOLYBDENITES +MOLYBDENUM +MOLYBDENUMS +MOLYBDIC +MOLYBDOUS +MOM +MOME +MOMENT +MOMENTA +MOMENTARILY +MOMENTARINESS +MOMENTARINESSES +MOMENTARY +MOMENTLY +MOMENTO +MOMENTOES +MOMENTOS +MOMENTOUS +MOMENTOUSLY +MOMENTOUSNESS +MOMENTOUSNESSES +MOMENTS +MOMENTUM +MOMENTUMS +MOMES +MOMI +MOMISM +MOMISMS +MOMMA +MOMMAS +MOMMIES +MOMMY +MOMS +MOMSER +MOMSERS +MOMUS +MOMUSES +MOMZER +MOMZERS +MON +MONACHAL +MONACHISM +MONACHISMS +MONACID +MONACIDIC +MONACIDS +MONAD +MONADAL +MONADELPHOUS +MONADES +MONADIC +MONADICAL +MONADISM +MONADISMS +MONADNOCK +MONADNOCKS +MONADS +MONANDRIES +MONANDRY +MONARCH +MONARCHAL +MONARCHIAL +MONARCHIC +MONARCHICAL +MONARCHICALLY +MONARCHIES +MONARCHISM +MONARCHISMS +MONARCHIST +MONARCHISTS +MONARCHS +MONARCHY +MONARDA +MONARDAS +MONAS +MONASTERIES +MONASTERY +MONASTIC +MONASTICALLY +MONASTICISM +MONASTICISMS +MONASTICS +MONATOMIC +MONAURAL +MONAURALLY +MONAXIAL +MONAXON +MONAXONS +MONAZITE +MONAZITES +MONDE +MONDES +MONDO +MONDOS +MONECIAN +MONECIOUS +MONELLIN +MONELLINS +MONERAN +MONERANS +MONESTROUS +MONETARILY +MONETARISM +MONETARISMS +MONETARIST +MONETARISTS +MONETARY +MONETISE +MONETISED +MONETISES +MONETISING +MONETIZATION +MONETIZATIONS +MONETIZE +MONETIZED +MONETIZES +MONETIZING +MONEY +MONEYBAG +MONEYBAGS +MONEYED +MONEYER +MONEYERS +MONEYGRUBBING +MONEYGRUBBINGS +MONEYLENDER +MONEYLENDERS +MONEYLESS +MONEYMAKER +MONEYMAKERS +MONEYMAKING +MONEYMAKINGS +MONEYMAN +MONEYMEN +MONEYS +MONEYWORT +MONEYWORTS +MONGEESE +MONGER +MONGERED +MONGERING +MONGERS +MONGO +MONGOE +MONGOES +MONGOL +MONGOLIAN +MONGOLISM +MONGOLISMS +MONGOLOID +MONGOLOIDS +MONGOLS +MONGOOSE +MONGOOSES +MONGOS +MONGREL +MONGRELIZATION +MONGRELIZATIONS +MONGRELIZE +MONGRELIZED +MONGRELIZES +MONGRELIZING +MONGRELLY +MONGRELS +MONGST +MONICKER +MONICKERS +MONIE +MONIED +MONIES +MONIKER +MONIKERS +MONILIASES +MONILIASIS +MONILIFORM +MONISH +MONISHED +MONISHES +MONISHING +MONISM +MONISMS +MONIST +MONISTIC +MONISTS +MONITION +MONITIONS +MONITIVE +MONITOR +MONITORED +MONITORIAL +MONITORIES +MONITORING +MONITORS +MONITORSHIP +MONITORSHIPS +MONITORY +MONK +MONKERIES +MONKERY +MONKEY +MONKEYED +MONKEYING +MONKEYISH +MONKEYPOD +MONKEYPODS +MONKEYPOT +MONKEYPOTS +MONKEYS +MONKEYSHINE +MONKEYSHINES +MONKFISH +MONKFISHES +MONKHOOD +MONKHOODS +MONKISH +MONKISHLY +MONKS +MONKSHOOD +MONKSHOODS +MONO +MONOACID +MONOACIDIC +MONOACIDS +MONOAMINE +MONOAMINERGIC +MONOAMINES +MONOBASIC +MONOCARBOXYLIC +MONOCARP +MONOCARPIC +MONOCARPS +MONOCHASIA +MONOCHASIAL +MONOCHASIUM +MONOCHORD +MONOCHORDS +MONOCHROMAT +MONOCHROMATIC +MONOCHROMATISM +MONOCHROMATISMS +MONOCHROMATOR +MONOCHROMATORS +MONOCHROMATS +MONOCHROME +MONOCHROMES +MONOCHROMIC +MONOCHROMIST +MONOCHROMISTS +MONOCLE +MONOCLED +MONOCLES +MONOCLINE +MONOCLINES +MONOCLINIC +MONOCLONAL +MONOCLONALS +MONOCOQUE +MONOCOQUES +MONOCOT +MONOCOTS +MONOCOTYL +MONOCOTYLEDON +MONOCOTYLEDONS +MONOCOTYLS +MONOCRACIES +MONOCRACY +MONOCRAT +MONOCRATIC +MONOCRATS +MONOCRYSTAL +MONOCRYSTALLINE +MONOCRYSTALS +MONOCULAR +MONOCULARLY +MONOCULARS +MONOCULTURAL +MONOCULTURE +MONOCULTURES +MONOCYCLE +MONOCYCLES +MONOCYCLIC +MONOCYTE +MONOCYTES +MONOCYTIC +MONODIC +MONODICAL +MONODICALLY +MONODIES +MONODISPERSE +MONODIST +MONODISTS +MONODRAMA +MONODRAMAS +MONODRAMATIC +MONODY +MONOECIES +MONOECIOUS +MONOECISM +MONOECISMS +MONOECY +MONOESTER +MONOESTERS +MONOFIL +MONOFILAMENT +MONOFILAMENTS +MONOFILS +MONOFUEL +MONOFUELS +MONOGAMIC +MONOGAMIES +MONOGAMIST +MONOGAMISTS +MONOGAMOUS +MONOGAMOUSLY +MONOGAMY +MONOGASTRIC +MONOGENEAN +MONOGENEANS +MONOGENESES +MONOGENESIS +MONOGENETIC +MONOGENIC +MONOGENICALLY +MONOGENIES +MONOGENY +MONOGERM +MONOGLOT +MONOGLOTS +MONOGLYCERIDE +MONOGLYCERIDES +MONOGRAM +MONOGRAMED +MONOGRAMING +MONOGRAMMATIC +MONOGRAMMED +MONOGRAMMER +MONOGRAMMERS +MONOGRAMMING +MONOGRAMS +MONOGRAPH +MONOGRAPHED +MONOGRAPHIC +MONOGRAPHING +MONOGRAPHS +MONOGYNIES +MONOGYNOUS +MONOGYNY +MONOHULL +MONOHULLS +MONOHYBRID +MONOHYBRIDS +MONOHYDRIC +MONOHYDROXY +MONOICOUS +MONOKINE +MONOKINES +MONOLAYER +MONOLAYERS +MONOLINGUAL +MONOLINGUALS +MONOLITH +MONOLITHIC +MONOLITHICALLY +MONOLITHS +MONOLOG +MONOLOGGED +MONOLOGGING +MONOLOGIC +MONOLOGIES +MONOLOGIST +MONOLOGISTS +MONOLOGS +MONOLOGUE +MONOLOGUED +MONOLOGUES +MONOLOGUING +MONOLOGUIST +MONOLOGUISTS +MONOLOGY +MONOMANIA +MONOMANIAC +MONOMANIACAL +MONOMANIACALLY +MONOMANIACS +MONOMANIAS +MONOMER +MONOMERIC +MONOMERS +MONOMETALLIC +MONOMETALLISM +MONOMETALLISMS +MONOMETALLIST +MONOMETALLISTS +MONOMETER +MONOMETERS +MONOMIAL +MONOMIALS +MONOMOLECULAR +MONOMOLECULARLY +MONOMORPHEMIC +MONOMORPHIC +MONOMORPHISM +MONOMORPHISMS +MONONUCLEAR +MONONUCLEARS +MONONUCLEATE +MONONUCLEATED +MONONUCLEOSES +MONONUCLEOSIS +MONONUCLEOTIDE +MONONUCLEOTIDES +MONOPHAGIES +MONOPHAGOUS +MONOPHAGY +MONOPHONIC +MONOPHONICALLY +MONOPHONIES +MONOPHONY +MONOPHTHONG +MONOPHTHONGAL +MONOPHTHONGS +MONOPHYLETIC +MONOPHYLIES +MONOPHYLY +MONOPLANE +MONOPLANES +MONOPLOID +MONOPLOIDS +MONOPOD +MONOPODE +MONOPODES +MONOPODIA +MONOPODIAL +MONOPODIALLY +MONOPODIES +MONOPODIUM +MONOPODS +MONOPODY +MONOPOLE +MONOPOLES +MONOPOLIES +MONOPOLISE +MONOPOLISED +MONOPOLISES +MONOPOLISING +MONOPOLIST +MONOPOLISTIC +MONOPOLISTS +MONOPOLIZATION +MONOPOLIZATIONS +MONOPOLIZE +MONOPOLIZED +MONOPOLIZER +MONOPOLIZERS +MONOPOLIZES +MONOPOLIZING +MONOPOLY +MONOPROPELLANT +MONOPROPELLANTS +MONOPSONIES +MONOPSONISTIC +MONOPSONY +MONORAIL +MONORAILS +MONORCHID +MONORCHIDISM +MONORCHIDISMS +MONORCHIDS +MONORHYME +MONORHYMED +MONORHYMES +MONOS +MONOSACCHARIDE +MONOSACCHARIDES +MONOSOME +MONOSOMES +MONOSOMIC +MONOSOMICS +MONOSOMIES +MONOSOMY +MONOSPECIFIC +MONOSPECIFICITY +MONOSTELE +MONOSTELES +MONOSTELIC +MONOSTELIES +MONOSTELY +MONOSTICH +MONOSTICHS +MONOSTOME +MONOSYLLABIC +MONOSYLLABICITY +MONOSYLLABLE +MONOSYLLABLES +MONOSYNAPTIC +MONOTERPENE +MONOTERPENES +MONOTHEISM +MONOTHEISMS +MONOTHEIST +MONOTHEISTIC +MONOTHEISTICAL +MONOTHEISTS +MONOTINT +MONOTINTS +MONOTONE +MONOTONES +MONOTONIC +MONOTONICALLY +MONOTONICITIES +MONOTONICITY +MONOTONIES +MONOTONOUS +MONOTONOUSLY +MONOTONOUSNESS +MONOTONY +MONOTREME +MONOTREMES +MONOTYPE +MONOTYPES +MONOTYPIC +MONOUNSATURATE +MONOUNSATURATED +MONOUNSATURATES +MONOVALENT +MONOVULAR +MONOXIDE +MONOXIDES +MONOZYGOTIC +MONS +MONSEIGNEUR +MONSIEUR +MONSIGNOR +MONSIGNORI +MONSIGNORIAL +MONSIGNORS +MONSOON +MONSOONAL +MONSOONS +MONSTER +MONSTERA +MONSTERAS +MONSTERS +MONSTRANCE +MONSTRANCES +MONSTROSITIES +MONSTROSITY +MONSTROUS +MONSTROUSLY +MONSTROUSNESS +MONSTROUSNESSES +MONTADALE +MONTADALES +MONTAGE +MONTAGED +MONTAGES +MONTAGING +MONTAGNARD +MONTAGNARDS +MONTANE +MONTANES +MONTE +MONTEITH +MONTEITHS +MONTERO +MONTEROS +MONTES +MONTH +MONTHLIES +MONTHLONG +MONTHLY +MONTHS +MONTICULE +MONTICULES +MONTMORILLONITE +MONUMENT +MONUMENTAL +MONUMENTALITIES +MONUMENTALITY +MONUMENTALIZE +MONUMENTALIZED +MONUMENTALIZES +MONUMENTALIZING +MONUMENTALLY +MONUMENTS +MONURON +MONURONS +MONY +MONZONITE +MONZONITES +MOO +MOOCH +MOOCHED +MOOCHER +MOOCHERS +MOOCHES +MOOCHING +MOOD +MOODIER +MOODIEST +MOODILY +MOODINESS +MOODINESSES +MOODS +MOODY +MOOED +MOOING +MOOL +MOOLA +MOOLAH +MOOLAHS +MOOLAS +MOOLEY +MOOLEYS +MOOLS +MOON +MOONBEAM +MOONBEAMS +MOONBLIND +MOONBOW +MOONBOWS +MOONCALF +MOONCALVES +MOONCHILD +MOONCHILDREN +MOONDUST +MOONDUSTS +MOONED +MOONER +MOONERS +MOONEYE +MOONEYES +MOONFACED +MOONFISH +MOONFISHES +MOONFLOWER +MOONFLOWERS +MOONIER +MOONIEST +MOONILY +MOONINESS +MOONINESSES +MOONING +MOONISH +MOONISHLY +MOONLESS +MOONLET +MOONLETS +MOONLIGHT +MOONLIGHTED +MOONLIGHTER +MOONLIGHTERS +MOONLIGHTING +MOONLIGHTS +MOONLIKE +MOONLIT +MOONPORT +MOONPORTS +MOONQUAKE +MOONQUAKES +MOONRISE +MOONRISES +MOONROOF +MOONROOFS +MOONS +MOONSAIL +MOONSAILS +MOONSCAPE +MOONSCAPES +MOONSEED +MOONSEEDS +MOONSET +MOONSETS +MOONSHINE +MOONSHINED +MOONSHINER +MOONSHINERS +MOONSHINES +MOONSHINING +MOONSHINY +MOONSHOT +MOONSHOTS +MOONSTONE +MOONSTONES +MOONSTRUCK +MOONWALK +MOONWALKED +MOONWALKING +MOONWALKS +MOONWARD +MOONWARDS +MOONWORT +MOONWORTS +MOONY +MOOR +MOORAGE +MOORAGES +MOORCOCK +MOORCOCKS +MOORED +MOORFOWL +MOORFOWLS +MOORHEN +MOORHENS +MOORIER +MOORIEST +MOORING +MOORINGS +MOORISH +MOORLAND +MOORLANDS +MOORS +MOORWORT +MOORWORTS +MOORY +MOOS +MOOSE +MOOSEBIRD +MOOSEBIRDS +MOOSEWOOD +MOOSEWOODS +MOOT +MOOTED +MOOTER +MOOTERS +MOOTING +MOOTNESS +MOOTNESSES +MOOTS +MOP +MOPBOARD +MOPBOARDS +MOPE +MOPED +MOPEDS +MOPER +MOPERIES +MOPERS +MOPERY +MOPES +MOPEY +MOPIER +MOPIEST +MOPINESS +MOPINESSES +MOPING +MOPINGLY +MOPISH +MOPISHLY +MOPOKE +MOPOKES +MOPPED +MOPPER +MOPPERS +MOPPET +MOPPETS +MOPPING +MOPS +MOPY +MOQUETTE +MOQUETTES +MOR +MORA +MORAE +MORAINAL +MORAINE +MORAINES +MORAINIC +MORAL +MORALE +MORALES +MORALISE +MORALISED +MORALISES +MORALISING +MORALISM +MORALISMS +MORALIST +MORALISTIC +MORALISTICALLY +MORALISTS +MORALITIES +MORALITY +MORALIZATION +MORALIZATIONS +MORALIZE +MORALIZED +MORALIZER +MORALIZERS +MORALIZES +MORALIZING +MORALLY +MORALS +MORAS +MORASS +MORASSES +MORASSY +MORATORIA +MORATORIUM +MORATORIUMS +MORATORY +MORAY +MORAYS +MORBID +MORBIDITIES +MORBIDITY +MORBIDLY +MORBIDNESS +MORBIDNESSES +MORBIFIC +MORBILLI +MORCEAU +MORCEAUX +MORDACITIES +MORDACITY +MORDANCIES +MORDANCY +MORDANT +MORDANTED +MORDANTING +MORDANTLY +MORDANTS +MORDENT +MORDENTS +MORE +MOREEN +MOREENS +MOREL +MORELLE +MORELLES +MORELLO +MORELLOS +MORELS +MORENESS +MORENESSES +MOREOVER +MORES +MORESQUE +MORESQUES +MORGAN +MORGANATIC +MORGANATICALLY +MORGANITE +MORGANITES +MORGANS +MORGEN +MORGENS +MORGUE +MORGUES +MORIBUND +MORIBUNDITIES +MORIBUNDITY +MORION +MORIONS +MORN +MORNING +MORNINGS +MORNS +MOROCCO +MOROCCOS +MORON +MORONIC +MORONICALLY +MORONISM +MORONISMS +MORONITIES +MORONITY +MORONS +MOROSE +MOROSELY +MOROSENESS +MOROSENESSES +MOROSITIES +MOROSITY +MORPH +MORPHACTIN +MORPHACTINS +MORPHALLAXES +MORPHALLAXIS +MORPHED +MORPHEME +MORPHEMES +MORPHEMIC +MORPHEMICALLY +MORPHEMICS +MORPHIA +MORPHIAS +MORPHIC +MORPHIN +MORPHINE +MORPHINES +MORPHING +MORPHINGS +MORPHINIC +MORPHINISM +MORPHINISMS +MORPHINS +MORPHO +MORPHOGEN +MORPHOGENESES +MORPHOGENESIS +MORPHOGENETIC +MORPHOGENIC +MORPHOGENS +MORPHOLOGIC +MORPHOLOGICAL +MORPHOLOGICALLY +MORPHOLOGIES +MORPHOLOGIST +MORPHOLOGISTS +MORPHOLOGY +MORPHOMETRIC +MORPHOMETRIES +MORPHOMETRY +MORPHOPHONEMICS +MORPHOS +MORPHOSES +MORPHOSIS +MORPHS +MORRION +MORRIONS +MORRIS +MORRISES +MORRO +MORROS +MORROW +MORROWS +MORS +MORSE +MORSEL +MORSELED +MORSELING +MORSELLED +MORSELLING +MORSELS +MORT +MORTADELLA +MORTADELLAS +MORTAL +MORTALITIES +MORTALITY +MORTALLY +MORTALS +MORTAR +MORTARBOARD +MORTARBOARDS +MORTARED +MORTARING +MORTARLESS +MORTARMAN +MORTARMEN +MORTARS +MORTARY +MORTGAGE +MORTGAGED +MORTGAGEE +MORTGAGEES +MORTGAGER +MORTGAGERS +MORTGAGES +MORTGAGING +MORTGAGOR +MORTGAGORS +MORTICE +MORTICED +MORTICES +MORTICIAN +MORTICIANS +MORTICING +MORTIFICATION +MORTIFICATIONS +MORTIFIED +MORTIFIER +MORTIFIERS +MORTIFIES +MORTIFY +MORTIFYING +MORTISE +MORTISED +MORTISER +MORTISERS +MORTISES +MORTISING +MORTMAIN +MORTMAINS +MORTS +MORTUARIES +MORTUARY +MORULA +MORULAE +MORULAR +MORULAS +MORULATION +MORULATIONS +MOS +MOSAIC +MOSAICALLY +MOSAICISM +MOSAICISMS +MOSAICIST +MOSAICISTS +MOSAICKED +MOSAICKING +MOSAICLIKE +MOSAICS +MOSASAUR +MOSASAURS +MOSCHATE +MOSCHATEL +MOSCHATELS +MOSEY +MOSEYED +MOSEYING +MOSEYS +MOSH +MOSHAV +MOSHAVIM +MOSHED +MOSHER +MOSHERS +MOSHES +MOSHING +MOSHINGS +MOSK +MOSKS +MOSQUE +MOSQUES +MOSQUITO +MOSQUITOES +MOSQUITOEY +MOSQUITOS +MOSS +MOSSBACK +MOSSBACKED +MOSSBACKS +MOSSED +MOSSER +MOSSERS +MOSSES +MOSSGROWN +MOSSIER +MOSSIEST +MOSSINESS +MOSSINESSES +MOSSING +MOSSLIKE +MOSSO +MOSSY +MOST +MOSTE +MOSTEST +MOSTESTS +MOSTLY +MOSTS +MOT +MOTE +MOTEL +MOTELS +MOTES +MOTET +MOTETS +MOTEY +MOTH +MOTHBALL +MOTHBALLED +MOTHBALLING +MOTHBALLS +MOTHER +MOTHERBOARD +MOTHERBOARDS +MOTHERED +MOTHERFUCKER +MOTHERFUCKERS +MOTHERFUCKING +MOTHERHOOD +MOTHERHOODS +MOTHERHOUSE +MOTHERHOUSES +MOTHERING +MOTHERINGS +MOTHERLAND +MOTHERLANDS +MOTHERLESS +MOTHERLESSNESS +MOTHERLINESS +MOTHERLINESSES +MOTHERLY +MOTHERS +MOTHERY +MOTHIER +MOTHIEST +MOTHLIKE +MOTHPROOF +MOTHPROOFED +MOTHPROOFER +MOTHPROOFERS +MOTHPROOFING +MOTHPROOFS +MOTHS +MOTHY +MOTIF +MOTIFIC +MOTIFS +MOTILE +MOTILES +MOTILITIES +MOTILITY +MOTION +MOTIONAL +MOTIONED +MOTIONER +MOTIONERS +MOTIONING +MOTIONLESS +MOTIONLESSLY +MOTIONLESSNESS +MOTIONS +MOTIVATE +MOTIVATED +MOTIVATES +MOTIVATING +MOTIVATION +MOTIVATIONAL +MOTIVATIONALLY +MOTIVATIONS +MOTIVATIVE +MOTIVATOR +MOTIVATORS +MOTIVE +MOTIVED +MOTIVELESS +MOTIVELESSLY +MOTIVES +MOTIVIC +MOTIVING +MOTIVITIES +MOTIVITY +MOTLEY +MOTLEYER +MOTLEYEST +MOTLEYS +MOTLIER +MOTLIEST +MOTMOT +MOTMOTS +MOTOCROSS +MOTOCROSSES +MOTONEURON +MOTONEURONAL +MOTONEURONS +MOTOR +MOTORBIKE +MOTORBIKED +MOTORBIKES +MOTORBIKING +MOTORBOAT +MOTORBOATED +MOTORBOATER +MOTORBOATERS +MOTORBOATING +MOTORBOATINGS +MOTORBOATS +MOTORBUS +MOTORBUSES +MOTORBUSSES +MOTORCADE +MOTORCADED +MOTORCADES +MOTORCADING +MOTORCAR +MOTORCARS +MOTORCYCLE +MOTORCYCLED +MOTORCYCLES +MOTORCYCLING +MOTORCYCLIST +MOTORCYCLISTS +MOTORDOM +MOTORDOMS +MOTORED +MOTORIC +MOTORICALLY +MOTORING +MOTORINGS +MOTORISE +MOTORISED +MOTORISES +MOTORISING +MOTORIST +MOTORISTS +MOTORIZATION +MOTORIZATIONS +MOTORIZE +MOTORIZED +MOTORIZES +MOTORIZING +MOTORLESS +MOTORMAN +MOTORMEN +MOTORMOUTH +MOTORMOUTHS +MOTORS +MOTORSHIP +MOTORSHIPS +MOTORTRUCK +MOTORTRUCKS +MOTORWAY +MOTORWAYS +MOTS +MOTT +MOTTE +MOTTES +MOTTLE +MOTTLED +MOTTLER +MOTTLERS +MOTTLES +MOTTLING +MOTTO +MOTTOES +MOTTOS +MOTTS +MOUCH +MOUCHED +MOUCHES +MOUCHING +MOUCHOIR +MOUCHOIRS +MOUE +MOUES +MOUFFLON +MOUFFLONS +MOUFLON +MOUFLONS +MOUILLE +MOUJIK +MOUJIKS +MOULAGE +MOULAGES +MOULD +MOULDED +MOULDER +MOULDERED +MOULDERING +MOULDERS +MOULDIER +MOULDIEST +MOULDING +MOULDINGS +MOULDS +MOULDY +MOULIN +MOULINS +MOULT +MOULTED +MOULTER +MOULTERS +MOULTING +MOULTS +MOUND +MOUNDBIRD +MOUNDBIRDS +MOUNDED +MOUNDING +MOUNDS +MOUNT +MOUNTABLE +MOUNTAIN +MOUNTAINEER +MOUNTAINEERING +MOUNTAINEERINGS +MOUNTAINEERS +MOUNTAINOUS +MOUNTAINOUSLY +MOUNTAINOUSNESS +MOUNTAINS +MOUNTAINSIDE +MOUNTAINSIDES +MOUNTAINTOP +MOUNTAINTOPS +MOUNTAINY +MOUNTEBANK +MOUNTEBANKED +MOUNTEBANKERIES +MOUNTEBANKERY +MOUNTEBANKING +MOUNTEBANKS +MOUNTED +MOUNTER +MOUNTERS +MOUNTING +MOUNTINGS +MOUNTS +MOURN +MOURNED +MOURNER +MOURNERS +MOURNFUL +MOURNFULLER +MOURNFULLEST +MOURNFULLY +MOURNFULNESS +MOURNFULNESSES +MOURNING +MOURNINGLY +MOURNINGS +MOURNS +MOUSAKA +MOUSAKAS +MOUSE +MOUSEBIRD +MOUSEBIRDS +MOUSED +MOUSELIKE +MOUSEPAD +MOUSEPADS +MOUSER +MOUSERS +MOUSES +MOUSETAIL +MOUSETAILS +MOUSETRAP +MOUSETRAPPED +MOUSETRAPPING +MOUSETRAPS +MOUSEY +MOUSIER +MOUSIEST +MOUSILY +MOUSINESS +MOUSINESSES +MOUSING +MOUSINGS +MOUSSAKA +MOUSSAKAS +MOUSSE +MOUSSED +MOUSSELINE +MOUSSELINES +MOUSSES +MOUSSING +MOUSTACHE +MOUSTACHES +MOUSTACHIO +MOUSTACHIOS +MOUSY +MOUTH +MOUTHBREEDER +MOUTHBREEDERS +MOUTHED +MOUTHER +MOUTHERS +MOUTHFEEL +MOUTHFEELS +MOUTHFUL +MOUTHFULS +MOUTHIER +MOUTHIEST +MOUTHILY +MOUTHING +MOUTHLESS +MOUTHLIKE +MOUTHPART +MOUTHPARTS +MOUTHPIECE +MOUTHPIECES +MOUTHS +MOUTHWASH +MOUTHWASHES +MOUTHWATERING +MOUTHWATERINGLY +MOUTHY +MOUTON +MOUTONNEE +MOUTONS +MOVABILITIES +MOVABILITY +MOVABLE +MOVABLENESS +MOVABLENESSES +MOVABLES +MOVABLY +MOVE +MOVEABLE +MOVEABLES +MOVEABLY +MOVED +MOVELESS +MOVELESSLY +MOVELESSNESS +MOVELESSNESSES +MOVEMENT +MOVEMENTS +MOVER +MOVERS +MOVES +MOVIE +MOVIEDOM +MOVIEDOMS +MOVIEGOER +MOVIEGOERS +MOVIEGOING +MOVIEGOINGS +MOVIEMAKER +MOVIEMAKERS +MOVIEMAKING +MOVIEMAKINGS +MOVIEOLA +MOVIEOLAS +MOVIES +MOVING +MOVINGLY +MOVIOLA +MOVIOLAS +MOW +MOWED +MOWER +MOWERS +MOWING +MOWINGS +MOWN +MOWS +MOXA +MOXAS +MOXIE +MOXIES +MOZETTA +MOZETTAS +MOZETTE +MOZO +MOZOS +MOZZARELLA +MOZZARELLAS +MOZZETTA +MOZZETTAS +MOZZETTE +MRIDANGA +MRIDANGAM +MRIDANGAMS +MRIDANGAS +MU +MUCH +MUCHACHO +MUCHACHOS +MUCHES +MUCHLY +MUCHNESS +MUCHNESSES +MUCHO +MUCID +MUCIDITIES +MUCIDITY +MUCILAGE +MUCILAGES +MUCILAGINOUS +MUCILAGINOUSLY +MUCIN +MUCINOGEN +MUCINOGENS +MUCINOID +MUCINOUS +MUCINS +MUCK +MUCKAMUCK +MUCKAMUCKS +MUCKED +MUCKER +MUCKERS +MUCKIER +MUCKIEST +MUCKILY +MUCKING +MUCKLE +MUCKLES +MUCKLUCK +MUCKLUCKS +MUCKRAKE +MUCKRAKED +MUCKRAKER +MUCKRAKERS +MUCKRAKES +MUCKRAKING +MUCKS +MUCKWORM +MUCKWORMS +MUCKY +MUCLUC +MUCLUCS +MUCOCUTANEOUS +MUCOID +MUCOIDAL +MUCOIDS +MUCOLYTIC +MUCOPEPTIDE +MUCOPEPTIDES +MUCOPROTEIN +MUCOPROTEINS +MUCOR +MUCORS +MUCOSA +MUCOSAE +MUCOSAL +MUCOSAS +MUCOSE +MUCOSITIES +MUCOSITY +MUCOUS +MUCRO +MUCRONATE +MUCRONES +MUCUS +MUCUSES +MUD +MUDBUG +MUDBUGS +MUDCAP +MUDCAPPED +MUDCAPPING +MUDCAPS +MUDCAT +MUDCATS +MUDDED +MUDDER +MUDDERS +MUDDIED +MUDDIER +MUDDIES +MUDDIEST +MUDDILY +MUDDINESS +MUDDINESSES +MUDDING +MUDDLE +MUDDLED +MUDDLEHEADED +MUDDLEHEADEDLY +MUDDLER +MUDDLERS +MUDDLES +MUDDLING +MUDDLY +MUDDY +MUDDYING +MUDFISH +MUDFISHES +MUDFLAP +MUDFLAPS +MUDFLAT +MUDFLATS +MUDFLOW +MUDFLOWS +MUDGUARD +MUDGUARDS +MUDHEN +MUDHENS +MUDHOLE +MUDHOLES +MUDLARK +MUDLARKS +MUDPACK +MUDPACKS +MUDPUPPIES +MUDPUPPY +MUDRA +MUDRAS +MUDROCK +MUDROCKS +MUDROOM +MUDROOMS +MUDS +MUDSILL +MUDSILLS +MUDSKIPPER +MUDSKIPPERS +MUDSLIDE +MUDSLIDES +MUDSLINGER +MUDSLINGERS +MUDSLINGING +MUDSLINGINGS +MUDSTONE +MUDSTONES +MUEDDIN +MUEDDINS +MUENSTER +MUENSTERS +MUESLI +MUESLIS +MUEZZIN +MUEZZINS +MUFF +MUFFED +MUFFIN +MUFFINEER +MUFFINEERS +MUFFING +MUFFINS +MUFFLE +MUFFLED +MUFFLER +MUFFLERED +MUFFLERS +MUFFLES +MUFFLING +MUFFS +MUFTI +MUFTIS +MUG +MUGFUL +MUGFULS +MUGG +MUGGAR +MUGGARS +MUGGED +MUGGEE +MUGGEES +MUGGER +MUGGERS +MUGGIER +MUGGIEST +MUGGILY +MUGGINESS +MUGGINESSES +MUGGING +MUGGINGS +MUGGINS +MUGGS +MUGGUR +MUGGURS +MUGGY +MUGHAL +MUGHALS +MUGS +MUGWORT +MUGWORTS +MUGWUMP +MUGWUMPS +MUHLIES +MUHLY +MUJAHEDEEN +MUJAHEDIN +MUJAHIDEEN +MUJAHIDIN +MUJIK +MUJIKS +MUKLUK +MUKLUKS +MUKTUK +MUKTUKS +MULATTO +MULATTOES +MULATTOS +MULBERRIES +MULBERRY +MULCH +MULCHED +MULCHES +MULCHING +MULCT +MULCTED +MULCTING +MULCTS +MULE +MULED +MULES +MULETA +MULETAS +MULETEER +MULETEERS +MULEY +MULEYS +MULIEBRITIES +MULIEBRITY +MULING +MULISH +MULISHLY +MULISHNESS +MULISHNESSES +MULL +MULLA +MULLAH +MULLAHISM +MULLAHISMS +MULLAHS +MULLAS +MULLED +MULLEIN +MULLEINS +MULLEN +MULLENS +MULLER +MULLERS +MULLET +MULLETS +MULLEY +MULLEYS +MULLIGAN +MULLIGANS +MULLIGATAWNIES +MULLIGATAWNY +MULLING +MULLION +MULLIONED +MULLIONING +MULLIONS +MULLITE +MULLITES +MULLOCK +MULLOCKS +MULLOCKY +MULLS +MULTIAGE +MULTIAGENCY +MULTIARMED +MULTIATOM +MULTIAUTHOR +MULTIAXIAL +MULTIBAND +MULTIBANK +MULTIBARREL +MULTIBARRELED +MULTIBILLION +MULTIBLADED +MULTIBRANCHED +MULTIBUILDING +MULTICAMPUS +MULTICAR +MULTICARBON +MULTICAUSAL +MULTICELL +MULTICELLED +MULTICELLULAR +MULTICENTER +MULTICHAIN +MULTICHAMBERED +MULTICHANNEL +MULTICHARACTER +MULTICITY +MULTICLIENT +MULTICOATED +MULTICOLOR +MULTICOLORED +MULTICOLORS +MULTICOLUMN +MULTICOMPONENT +MULTICONDUCTOR +MULTICOPY +MULTICOUNTY +MULTICOURSE +MULTICULTURAL +MULTICURIE +MULTICURRENCIES +MULTICURRENCY +MULTIDAY +MULTIDIALECTAL +MULTIDISC +MULTIDISCIPLINE +MULTIDIVISIONAL +MULTIDOMAIN +MULTIDRUG +MULTIELECTRODE +MULTIELEMENT +MULTIEMPLOYER +MULTIEMPLOYERS +MULTIENGINE +MULTIENZYME +MULTIETHNIC +MULTIETHNICS +MULTIFACETED +MULTIFACTOR +MULTIFACTORIAL +MULTIFAMILY +MULTIFARIOUS +MULTIFID +MULTIFILAMENT +MULTIFLASH +MULTIFOCAL +MULTIFOIL +MULTIFOILS +MULTIFOLD +MULTIFORM +MULTIFORMITIES +MULTIFORMITY +MULTIFREQUENCY +MULTIFUNCTION +MULTIFUNCTIONAL +MULTIGENIC +MULTIGERM +MULTIGRADE +MULTIGRAIN +MULTIGRID +MULTIGROUP +MULTIHEADED +MULTIHOSPITAL +MULTIHUED +MULTIHULL +MULTIHULLS +MULTIJET +MULTILANE +MULTILANES +MULTILATERAL +MULTILATERALISM +MULTILATERALIST +MULTILATERALLY +MULTILAYER +MULTILAYERED +MULTILEVEL +MULTILEVELED +MULTILINE +MULTILINGUAL +MULTILINGUALISM +MULTILINGUALLY +MULTILOBE +MULTILOBED +MULTILOBES +MULTIMANNED +MULTIMEDIA +MULTIMEDIAS +MULTIMEGATON +MULTIMEGAWATT +MULTIMEGAWATTS +MULTIMEMBER +MULTIMETALLIC +MULTIMILLENNIAL +MULTIMILLION +MULTIMODAL +MULTIMODE +MULTIMOLECULAR +MULTINATION +MULTINATIONAL +MULTINATIONALS +MULTINOMIAL +MULTINOMIALS +MULTINUCLEAR +MULTINUCLEATE +MULTINUCLEATED +MULTIORGASMIC +MULTIPACK +MULTIPACKS +MULTIPAGE +MULTIPANED +MULTIPARA +MULTIPARAE +MULTIPARAMETER +MULTIPARAS +MULTIPAROUS +MULTIPART +MULTIPARTICLE +MULTIPARTITE +MULTIPARTY +MULTIPATH +MULTIPED +MULTIPEDE +MULTIPEDES +MULTIPEDS +MULTIPHASE +MULTIPHASIC +MULTIPHOTON +MULTIPICTURE +MULTIPIECE +MULTIPION +MULTIPISTON +MULTIPLANT +MULTIPLAYER +MULTIPLE +MULTIPLES +MULTIPLET +MULTIPLETS +MULTIPLEX +MULTIPLEXED +MULTIPLEXER +MULTIPLEXERS +MULTIPLEXES +MULTIPLEXING +MULTIPLEXOR +MULTIPLEXORS +MULTIPLICAND +MULTIPLICANDS +MULTIPLICATION +MULTIPLICATIONS +MULTIPLICATIVE +MULTIPLICITIES +MULTIPLICITY +MULTIPLIED +MULTIPLIER +MULTIPLIERS +MULTIPLIES +MULTIPLY +MULTIPLYING +MULTIPOLAR +MULTIPOLARITIES +MULTIPOLARITY +MULTIPOLE +MULTIPOLES +MULTIPORT +MULTIPOTENTIAL +MULTIPOWER +MULTIPROBLEM +MULTIPROCESSING +MULTIPROCESSOR +MULTIPROCESSORS +MULTIPRODUCT +MULTIPRONGED +MULTIPURPOSE +MULTIRACIAL +MULTIRACIALISM +MULTIRACIALISMS +MULTIRANGE +MULTIREGIONAL +MULTIRELIGIOUS +MULTIROOM +MULTISCREEN +MULTISENSE +MULTISENSORY +MULTISERVICE +MULTISIDED +MULTISITE +MULTISIZE +MULTISKILLED +MULTISOURCE +MULTISPECIES +MULTISPECTRAL +MULTISPEED +MULTISPORT +MULTISTAGE +MULTISTATE +MULTISTEMMED +MULTISTEP +MULTISTORIED +MULTISTORY +MULTISTRANDED +MULTISYLLABIC +MULTISYSTEM +MULTITALENTED +MULTITASK +MULTITASKED +MULTITASKING +MULTITASKINGS +MULTITASKS +MULTITERMINAL +MULTITIERED +MULTITON +MULTITONE +MULTITONES +MULTITOWERED +MULTITRACK +MULTITRILLION +MULTITUDE +MULTITUDES +MULTITUDINOUS +MULTITUDINOUSLY +MULTIUNION +MULTIUNIT +MULTIUSE +MULTIUSER +MULTIVALENCE +MULTIVALENCES +MULTIVALENT +MULTIVALENTS +MULTIVARIABLE +MULTIVARIATE +MULTIVERSITIES +MULTIVERSITY +MULTIVITAMIN +MULTIVITAMINS +MULTIVOLTINE +MULTIVOLUME +MULTIWALL +MULTIWARHEAD +MULTIWAVELENGTH +MULTIYEAR +MULTURE +MULTURES +MUM +MUMBLE +MUMBLED +MUMBLER +MUMBLERS +MUMBLES +MUMBLING +MUMBLY +MUMM +MUMMED +MUMMER +MUMMERIES +MUMMERS +MUMMERY +MUMMICHOG +MUMMICHOGS +MUMMIED +MUMMIES +MUMMIFICATION +MUMMIFICATIONS +MUMMIFIED +MUMMIFIES +MUMMIFY +MUMMIFYING +MUMMING +MUMMS +MUMMY +MUMMYING +MUMP +MUMPED +MUMPER +MUMPERS +MUMPING +MUMPS +MUMS +MUMU +MUMUS +MUN +MUNCH +MUNCHABLE +MUNCHABLES +MUNCHED +MUNCHER +MUNCHERS +MUNCHES +MUNCHIES +MUNCHING +MUNCHKIN +MUNCHKINS +MUNDANE +MUNDANELY +MUNDANENESS +MUNDANENESSES +MUNDANITIES +MUNDANITY +MUNDUNGO +MUNDUNGOS +MUNDUNGUS +MUNDUNGUSES +MUNGO +MUNGOES +MUNGOOSE +MUNGOOSES +MUNGOS +MUNI +MUNICIPAL +MUNICIPALITIES +MUNICIPALITY +MUNICIPALIZE +MUNICIPALIZED +MUNICIPALIZES +MUNICIPALIZING +MUNICIPALLY +MUNICIPALS +MUNIFICENCE +MUNIFICENCES +MUNIFICENT +MUNIFICENTLY +MUNIMENT +MUNIMENTS +MUNIS +MUNITION +MUNITIONED +MUNITIONING +MUNITIONS +MUNNION +MUNNIONS +MUNS +MUNSTER +MUNSTERS +MUNTIN +MUNTING +MUNTINGS +MUNTINS +MUNTJAC +MUNTJACS +MUNTJAK +MUNTJAKS +MUON +MUONIC +MUONIUM +MUONIUMS +MUONS +MURA +MURAENID +MURAENIDS +MURAL +MURALED +MURALIST +MURALISTS +MURALLED +MURALS +MURAS +MURDER +MURDERED +MURDEREE +MURDEREES +MURDERER +MURDERERS +MURDERESS +MURDERESSES +MURDERING +MURDEROUS +MURDEROUSLY +MURDEROUSNESS +MURDEROUSNESSES +MURDERS +MURE +MURED +MUREIN +MUREINS +MURES +MUREX +MUREXES +MURIATE +MURIATED +MURIATES +MURICATE +MURICATED +MURICES +MURID +MURIDS +MURINE +MURINES +MURING +MURK +MURKER +MURKEST +MURKIER +MURKIEST +MURKILY +MURKINESS +MURKINESSES +MURKLY +MURKS +MURKY +MURMUR +MURMURED +MURMURER +MURMURERS +MURMURING +MURMUROUS +MURMUROUSLY +MURMURS +MURPHIES +MURPHY +MURR +MURRA +MURRAIN +MURRAINS +MURRAS +MURRE +MURRELET +MURRELETS +MURRES +MURREY +MURREYS +MURRHA +MURRHAS +MURRHINE +MURRIES +MURRINE +MURRS +MURRY +MURTHER +MURTHERED +MURTHERING +MURTHERS +MUS +MUSCA +MUSCADEL +MUSCADELS +MUSCADET +MUSCADETS +MUSCADINE +MUSCADINES +MUSCAE +MUSCARINE +MUSCARINES +MUSCARINIC +MUSCAT +MUSCATEL +MUSCATELS +MUSCATS +MUSCID +MUSCIDS +MUSCLE +MUSCLED +MUSCLEMAN +MUSCLEMEN +MUSCLES +MUSCLING +MUSCLY +MUSCOVADO +MUSCOVADOS +MUSCOVITE +MUSCOVITES +MUSCULAR +MUSCULARITIES +MUSCULARITY +MUSCULARLY +MUSCULATURE +MUSCULATURES +MUSCULOSKELETAL +MUSE +MUSED +MUSEFUL +MUSEOLOGICAL +MUSEOLOGIES +MUSEOLOGIST +MUSEOLOGISTS +MUSEOLOGY +MUSER +MUSERS +MUSES +MUSETTE +MUSETTES +MUSEUM +MUSEUMS +MUSH +MUSHED +MUSHER +MUSHERS +MUSHES +MUSHIER +MUSHIEST +MUSHILY +MUSHINESS +MUSHINESSES +MUSHING +MUSHROOM +MUSHROOMED +MUSHROOMING +MUSHROOMS +MUSHY +MUSIC +MUSICAL +MUSICALE +MUSICALES +MUSICALISE +MUSICALISED +MUSICALISES +MUSICALISING +MUSICALITIES +MUSICALITY +MUSICALIZATION +MUSICALIZATIONS +MUSICALIZE +MUSICALIZED +MUSICALIZES +MUSICALIZING +MUSICALLY +MUSICALS +MUSICIAN +MUSICIANLY +MUSICIANS +MUSICIANSHIP +MUSICIANSHIPS +MUSICK +MUSICKED +MUSICKING +MUSICKS +MUSICLESS +MUSICOLOGICAL +MUSICOLOGIES +MUSICOLOGIST +MUSICOLOGISTS +MUSICOLOGY +MUSICS +MUSING +MUSINGLY +MUSINGS +MUSJID +MUSJIDS +MUSK +MUSKEG +MUSKEGS +MUSKELLUNGE +MUSKET +MUSKETEER +MUSKETEERS +MUSKETRIES +MUSKETRY +MUSKETS +MUSKIE +MUSKIER +MUSKIES +MUSKIEST +MUSKILY +MUSKINESS +MUSKINESSES +MUSKIT +MUSKITS +MUSKMELON +MUSKMELONS +MUSKOX +MUSKOXEN +MUSKRAT +MUSKRATS +MUSKROOT +MUSKROOTS +MUSKS +MUSKY +MUSLIN +MUSLINS +MUSPIKE +MUSPIKES +MUSQUASH +MUSQUASHES +MUSS +MUSSED +MUSSEL +MUSSELS +MUSSES +MUSSIER +MUSSIEST +MUSSILY +MUSSINESS +MUSSINESSES +MUSSING +MUSSY +MUST +MUSTACHE +MUSTACHED +MUSTACHES +MUSTACHIO +MUSTACHIOED +MUSTACHIOS +MUSTANG +MUSTANGS +MUSTARD +MUSTARDS +MUSTARDY +MUSTED +MUSTEE +MUSTEES +MUSTELID +MUSTELIDS +MUSTELINE +MUSTER +MUSTERED +MUSTERING +MUSTERS +MUSTH +MUSTHS +MUSTIER +MUSTIEST +MUSTILY +MUSTINESS +MUSTINESSES +MUSTING +MUSTS +MUSTY +MUT +MUTABILITIES +MUTABILITY +MUTABLE +MUTABLY +MUTAGEN +MUTAGENESES +MUTAGENESIS +MUTAGENIC +MUTAGENICALLY +MUTAGENICITIES +MUTAGENICITY +MUTAGENS +MUTANT +MUTANTS +MUTASE +MUTASES +MUTATE +MUTATED +MUTATES +MUTATING +MUTATION +MUTATIONAL +MUTATIONALLY +MUTATIONS +MUTATIVE +MUTCH +MUTCHES +MUTCHKIN +MUTCHKINS +MUTE +MUTED +MUTEDLY +MUTELY +MUTENESS +MUTENESSES +MUTER +MUTES +MUTEST +MUTICOUS +MUTILATE +MUTILATED +MUTILATES +MUTILATING +MUTILATION +MUTILATIONS +MUTILATOR +MUTILATORS +MUTINE +MUTINED +MUTINEER +MUTINEERED +MUTINEERING +MUTINEERS +MUTINES +MUTING +MUTINIED +MUTINIES +MUTINING +MUTINOUS +MUTINOUSLY +MUTINOUSNESS +MUTINOUSNESSES +MUTINY +MUTINYING +MUTISM +MUTISMS +MUTON +MUTONS +MUTS +MUTT +MUTTER +MUTTERED +MUTTERER +MUTTERERS +MUTTERING +MUTTERS +MUTTON +MUTTONCHOPS +MUTTONFISH +MUTTONFISHES +MUTTONS +MUTTONY +MUTTS +MUTUAL +MUTUALISM +MUTUALISMS +MUTUALIST +MUTUALISTIC +MUTUALISTS +MUTUALITIES +MUTUALITY +MUTUALIZATION +MUTUALIZATIONS +MUTUALIZE +MUTUALIZED +MUTUALIZES +MUTUALIZING +MUTUALLY +MUTUALS +MUTUEL +MUTUELS +MUTULAR +MUTULE +MUTULES +MUUMUU +MUUMUUS +MUZHIK +MUZHIKS +MUZJIK +MUZJIKS +MUZZIER +MUZZIEST +MUZZILY +MUZZINESS +MUZZINESSES +MUZZLE +MUZZLED +MUZZLER +MUZZLERS +MUZZLES +MUZZLING +MUZZY +MY +MYALGIA +MYALGIAS +MYALGIC +MYASES +MYASIS +MYASTHENIA +MYASTHENIAS +MYASTHENIC +MYASTHENICS +MYC +MYCELE +MYCELES +MYCELIA +MYCELIAL +MYCELIAN +MYCELIUM +MYCELOID +MYCETOMA +MYCETOMAS +MYCETOMATA +MYCETOMATOUS +MYCETOPHAGOUS +MYCETOZOAN +MYCETOZOANS +MYCOBACTERIA +MYCOBACTERIAL +MYCOBACTERIUM +MYCOFLORA +MYCOFLORAE +MYCOFLORAS +MYCOLOGIC +MYCOLOGICAL +MYCOLOGICALLY +MYCOLOGIES +MYCOLOGIST +MYCOLOGISTS +MYCOLOGY +MYCOPHAGIES +MYCOPHAGIST +MYCOPHAGISTS +MYCOPHAGOUS +MYCOPHAGY +MYCOPHILE +MYCOPHILES +MYCOPLASMA +MYCOPLASMAL +MYCOPLASMAS +MYCOPLASMATA +MYCORHIZA +MYCORHIZAE +MYCORHIZAS +MYCORRHIZA +MYCORRHIZAE +MYCORRHIZAL +MYCORRHIZAS +MYCOSES +MYCOSIS +MYCOTIC +MYCOTOXIN +MYCOTOXINS +MYCOVIRUS +MYCOVIRUSES +MYCS +MYDRIASES +MYDRIASIS +MYDRIATIC +MYDRIATICS +MYELENCEPHALA +MYELENCEPHALIC +MYELENCEPHALON +MYELIN +MYELINATED +MYELINE +MYELINES +MYELINIC +MYELINS +MYELITIDES +MYELITIS +MYELOBLAST +MYELOBLASTIC +MYELOBLASTS +MYELOCYTE +MYELOCYTES +MYELOCYTIC +MYELOFIBROSES +MYELOFIBROSIS +MYELOFIBROTIC +MYELOGENOUS +MYELOGRAM +MYELOGRAMS +MYELOID +MYELOMA +MYELOMAS +MYELOMATA +MYELOMATOUS +MYELOPATHIC +MYELOPATHIES +MYELOPATHY +MYIASES +MYIASIS +MYLAR +MYLARS +MYLONITE +MYLONITES +MYNA +MYNAH +MYNAHS +MYNAS +MYNHEER +MYNHEERS +MYOBLAST +MYOBLASTS +MYOCARDIA +MYOCARDIAL +MYOCARDITIS +MYOCARDITISES +MYOCARDIUM +MYOCLONIC +MYOCLONUS +MYOCLONUSES +MYOELECTRIC +MYOELECTRICAL +MYOFIBRIL +MYOFIBRILLAR +MYOFIBRILS +MYOFILAMENT +MYOFILAMENTS +MYOGENIC +MYOGLOBIN +MYOGLOBINS +MYOGRAPH +MYOGRAPHS +MYOID +MYOINOSITOL +MYOINOSITOLS +MYOLOGIC +MYOLOGIES +MYOLOGIST +MYOLOGISTS +MYOLOGY +MYOMA +MYOMAS +MYOMATA +MYOMATOUS +MYONEURAL +MYOPATHIC +MYOPATHIES +MYOPATHY +MYOPE +MYOPES +MYOPIA +MYOPIAS +MYOPIC +MYOPICALLY +MYOPIES +MYOPY +MYOSCOPE +MYOSCOPES +MYOSES +MYOSIN +MYOSINS +MYOSIS +MYOSITIS +MYOSITISES +MYOSOTE +MYOSOTES +MYOSOTIS +MYOSOTISES +MYOTIC +MYOTICS +MYOTOME +MYOTOMES +MYOTONIA +MYOTONIAS +MYOTONIC +MYRIAD +MYRIADS +MYRIAPOD +MYRIAPODS +MYRICA +MYRICAS +MYRIOPOD +MYRIOPODS +MYRMECOLOGICAL +MYRMECOLOGIES +MYRMECOLOGIST +MYRMECOLOGISTS +MYRMECOLOGY +MYRMECOPHILE +MYRMECOPHILES +MYRMECOPHILOUS +MYRMIDON +MYRMIDONES +MYRMIDONS +MYROBALAN +MYROBALANS +MYRRH +MYRRHIC +MYRRHS +MYRTLE +MYRTLES +MYSELF +MYSID +MYSIDS +MYSOST +MYSOSTS +MYSTAGOG +MYSTAGOGIES +MYSTAGOGS +MYSTAGOGUE +MYSTAGOGUES +MYSTAGOGY +MYSTERIES +MYSTERIOUS +MYSTERIOUSLY +MYSTERIOUSNESS +MYSTERY +MYSTIC +MYSTICAL +MYSTICALLY +MYSTICETE +MYSTICETES +MYSTICISM +MYSTICISMS +MYSTICLY +MYSTICS +MYSTIFICATION +MYSTIFICATIONS +MYSTIFIED +MYSTIFIER +MYSTIFIERS +MYSTIFIES +MYSTIFY +MYSTIFYING +MYSTIFYINGLY +MYSTIQUE +MYSTIQUES +MYTH +MYTHIC +MYTHICAL +MYTHICALLY +MYTHICIZE +MYTHICIZED +MYTHICIZER +MYTHICIZERS +MYTHICIZES +MYTHICIZING +MYTHIER +MYTHIEST +MYTHMAKER +MYTHMAKERS +MYTHMAKING +MYTHMAKINGS +MYTHOGRAPHER +MYTHOGRAPHERS +MYTHOGRAPHIES +MYTHOGRAPHY +MYTHOI +MYTHOLOGER +MYTHOLOGERS +MYTHOLOGIC +MYTHOLOGICAL +MYTHOLOGICALLY +MYTHOLOGIES +MYTHOLOGIST +MYTHOLOGISTS +MYTHOLOGIZE +MYTHOLOGIZED +MYTHOLOGIZER +MYTHOLOGIZERS +MYTHOLOGIZES +MYTHOLOGIZING +MYTHOLOGY +MYTHOMANIA +MYTHOMANIAC +MYTHOMANIACS +MYTHOMANIAS +MYTHOPEIC +MYTHOPOEIA +MYTHOPOEIAS +MYTHOPOEIC +MYTHOPOETIC +MYTHOPOETICAL +MYTHOS +MYTHS +MYTHY +MYXAMEBA +MYXAMEBAE +MYXAMEBAS +MYXAMOEBA +MYXAMOEBAE +MYXAMOEBAS +MYXEDEMA +MYXEDEMAS +MYXEDEMATOUS +MYXEDEMIC +MYXOCYTE +MYXOCYTES +MYXOEDEMA +MYXOEDEMAS +MYXOID +MYXOMA +MYXOMAS +MYXOMATA +MYXOMATOSES +MYXOMATOSIS +MYXOMATOUS +MYXOMYCETE +MYXOMYCETES +MYXOVIRAL +MYXOVIRUS +MYXOVIRUSES +NA +NAAN +NAANS +NAB +NABBED +NABBER +NABBERS +NABBING +NABE +NABES +NABIS +NABOB +NABOBERIES +NABOBERY +NABOBESS +NABOBESSES +NABOBISH +NABOBISM +NABOBISMS +NABOBS +NABS +NACELLE +NACELLES +NACHAS +NACHES +NACHO +NACHOS +NACRE +NACRED +NACREOUS +NACRES +NADA +NADAS +NADIR +NADIRAL +NADIRS +NAE +NAETHING +NAETHINGS +NAEVI +NAEVOID +NAEVUS +NAFF +NAFFED +NAFFING +NAFFS +NAG +NAGANA +NAGANAS +NAGGED +NAGGER +NAGGERS +NAGGIER +NAGGIEST +NAGGING +NAGGINGLY +NAGGY +NAGS +NAH +NAIAD +NAIADES +NAIADS +NAIF +NAIFS +NAIL +NAILBITER +NAILBITERS +NAILBRUSH +NAILBRUSHES +NAILED +NAILER +NAILERS +NAILFOLD +NAILFOLDS +NAILHEAD +NAILHEADS +NAILING +NAILS +NAILSET +NAILSETS +NAINSOOK +NAINSOOKS +NAIRA +NAIRAS +NAIRU +NAIRUS +NAISSANCE +NAISSANCES +NAIVE +NAIVELY +NAIVENESS +NAIVENESSES +NAIVER +NAIVES +NAIVEST +NAIVETE +NAIVETES +NAIVETIES +NAIVETY +NAKED +NAKEDER +NAKEDEST +NAKEDLY +NAKEDNESS +NAKEDNESSES +NAKFA +NAKFAS +NALA +NALAS +NALED +NALEDS +NALORPHINE +NALORPHINES +NALOXONE +NALOXONES +NALTREXONE +NALTREXONES +NAM +NAMABLE +NAMAYCUSH +NAMAYCUSHES +NAME +NAMEABLE +NAMED +NAMELESS +NAMELESSLY +NAMELESSNESS +NAMELESSNESSES +NAMELY +NAMEPLATE +NAMEPLATES +NAMER +NAMERS +NAMES +NAMESAKE +NAMESAKES +NAMETAG +NAMETAGS +NAMING +NAN +NANA +NANAS +NANCE +NANCES +NANCIES +NANCIFIED +NANCY +NANDIN +NANDINA +NANDINAS +NANDINS +NANISM +NANISMS +NANKEEN +NANKEENS +NANKIN +NANKINS +NANNIE +NANNIES +NANNOPLANKTON +NANNOPLANKTONS +NANNY +NANNYISH +NANOGRAM +NANOGRAMS +NANOMETER +NANOMETERS +NANOMETRE +NANOMETRES +NANOSCALE +NANOSECOND +NANOSECONDS +NANOTECH +NANOTECHNOLOGY +NANOTECHS +NANOTESLA +NANOTESLAS +NANOTUBE +NANOTUBES +NANOWATT +NANOWATTS +NANS +NAOI +NAOS +NAP +NAPA +NAPALM +NAPALMED +NAPALMING +NAPALMS +NAPAS +NAPE +NAPERIES +NAPERY +NAPES +NAPHTHA +NAPHTHALENE +NAPHTHALENES +NAPHTHAS +NAPHTHENE +NAPHTHENES +NAPHTHENIC +NAPHTHOL +NAPHTHOLS +NAPHTHOUS +NAPHTHYL +NAPHTHYLAMINE +NAPHTHYLAMINES +NAPHTHYLS +NAPHTOL +NAPHTOLS +NAPIFORM +NAPKIN +NAPKINS +NAPLESS +NAPOLEON +NAPOLEONS +NAPPA +NAPPAS +NAPPE +NAPPED +NAPPER +NAPPERS +NAPPES +NAPPIE +NAPPIER +NAPPIES +NAPPIEST +NAPPINESS +NAPPINESSES +NAPPING +NAPPY +NAPRAPATHIES +NAPRAPATHY +NAPROXEN +NAPROXENS +NAPS +NARC +NARCEIN +NARCEINE +NARCEINES +NARCEINS +NARCISM +NARCISMS +NARCISSI +NARCISSISM +NARCISSISMS +NARCISSIST +NARCISSISTIC +NARCISSISTS +NARCISSUS +NARCISSUSES +NARCIST +NARCISTIC +NARCISTS +NARCO +NARCOLEPSIES +NARCOLEPSY +NARCOLEPTIC +NARCOLEPTICS +NARCOMA +NARCOMAS +NARCOMATA +NARCOS +NARCOSE +NARCOSES +NARCOSIS +NARCOTIC +NARCOTICALLY +NARCOTICS +NARCOTISM +NARCOTISMS +NARCOTIZE +NARCOTIZED +NARCOTIZES +NARCOTIZING +NARCS +NARD +NARDINE +NARDS +NARES +NARGHILE +NARGHILES +NARGILE +NARGILEH +NARGILEHS +NARGILES +NARIAL +NARIC +NARINE +NARIS +NARK +NARKED +NARKING +NARKS +NARKY +NARRATE +NARRATED +NARRATER +NARRATERS +NARRATES +NARRATING +NARRATION +NARRATIONAL +NARRATIONS +NARRATIVE +NARRATIVELY +NARRATIVES +NARRATOLOGICAL +NARRATOLOGIES +NARRATOLOGIST +NARRATOLOGISTS +NARRATOLOGY +NARRATOR +NARRATORS +NARROW +NARROWBAND +NARROWCASTING +NARROWCASTINGS +NARROWED +NARROWER +NARROWEST +NARROWING +NARROWISH +NARROWLY +NARROWNESS +NARROWNESSES +NARROWS +NARTHEX +NARTHEXES +NARWAL +NARWALS +NARWHAL +NARWHALE +NARWHALES +NARWHALS +NARY +NASAL +NASALISE +NASALISED +NASALISES +NASALISING +NASALISM +NASALISMS +NASALITIES +NASALITY +NASALIZATION +NASALIZATIONS +NASALIZE +NASALIZED +NASALIZES +NASALIZING +NASALLY +NASALS +NASCENCE +NASCENCES +NASCENCIES +NASCENCY +NASCENT +NASEBERRIES +NASEBERRY +NASIAL +NASION +NASIONS +NASOGASTRIC +NASOPHARYNGEAL +NASOPHARYNGES +NASOPHARYNX +NASOPHARYNXES +NASTIC +NASTIER +NASTIES +NASTIEST +NASTILY +NASTINESS +NASTINESSES +NASTURTIUM +NASTURTIUMS +NASTY +NATAL +NATALITIES +NATALITY +NATANT +NATANTLY +NATATION +NATATIONS +NATATORIA +NATATORIAL +NATATORIUM +NATATORIUMS +NATATORY +NATCH +NATES +NATHELESS +NATHLESS +NATION +NATIONAL +NATIONALISE +NATIONALISED +NATIONALISES +NATIONALISING +NATIONALISM +NATIONALISMS +NATIONALIST +NATIONALISTIC +NATIONALISTS +NATIONALITIES +NATIONALITY +NATIONALIZATION +NATIONALIZE +NATIONALIZED +NATIONALIZER +NATIONALIZERS +NATIONALIZES +NATIONALIZING +NATIONALLY +NATIONALS +NATIONHOOD +NATIONHOODS +NATIONS +NATIONWIDE +NATIVE +NATIVELY +NATIVENESS +NATIVENESSES +NATIVES +NATIVISM +NATIVISMS +NATIVIST +NATIVISTIC +NATIVISTS +NATIVITIES +NATIVITY +NATRIUM +NATRIUMS +NATRIURESES +NATRIURESIS +NATRIURETIC +NATRIURETICS +NATROLITE +NATROLITES +NATRON +NATRONS +NATTER +NATTERED +NATTERING +NATTERS +NATTIER +NATTIEST +NATTILY +NATTINESS +NATTINESSES +NATTY +NATURAL +NATURALISE +NATURALISED +NATURALISES +NATURALISING +NATURALISM +NATURALISMS +NATURALIST +NATURALISTIC +NATURALISTS +NATURALIZATION +NATURALIZATIONS +NATURALIZE +NATURALIZED +NATURALIZES +NATURALIZING +NATURALLY +NATURALNESS +NATURALNESSES +NATURALS +NATURE +NATURED +NATURES +NATURISM +NATURISMS +NATURIST +NATURISTS +NATUROPATH +NATUROPATHIC +NATUROPATHIES +NATUROPATHS +NATUROPATHY +NAUGAHYDE +NAUGAHYDES +NAUGHT +NAUGHTIER +NAUGHTIES +NAUGHTIEST +NAUGHTILY +NAUGHTINESS +NAUGHTINESSES +NAUGHTS +NAUGHTY +NAUMACHIA +NAUMACHIAE +NAUMACHIAS +NAUMACHIES +NAUMACHY +NAUPLIAL +NAUPLII +NAUPLIUS +NAUSEA +NAUSEANT +NAUSEANTS +NAUSEAS +NAUSEATE +NAUSEATED +NAUSEATES +NAUSEATING +NAUSEATINGLY +NAUSEOUS +NAUSEOUSLY +NAUSEOUSNESS +NAUSEOUSNESSES +NAUTCH +NAUTCHES +NAUTICAL +NAUTICALLY +NAUTILI +NAUTILOID +NAUTILOIDS +NAUTILUS +NAUTILUSES +NAVAID +NAVAIDS +NAVAL +NAVALLY +NAVAR +NAVARS +NAVE +NAVEL +NAVELS +NAVELWORT +NAVELWORTS +NAVES +NAVETTE +NAVETTES +NAVICERT +NAVICERTS +NAVICULAR +NAVICULARS +NAVIES +NAVIGABILITIES +NAVIGABILITY +NAVIGABLE +NAVIGABLY +NAVIGATE +NAVIGATED +NAVIGATES +NAVIGATING +NAVIGATION +NAVIGATIONAL +NAVIGATIONALLY +NAVIGATIONS +NAVIGATOR +NAVIGATORS +NAVVIES +NAVVY +NAVY +NAW +NAWAB +NAWABS +NAY +NAYS +NAYSAID +NAYSAY +NAYSAYER +NAYSAYERS +NAYSAYING +NAYSAYINGS +NAYSAYS +NAZI +NAZIFICATION +NAZIFICATIONS +NAZIFIED +NAZIFIES +NAZIFY +NAZIFYING +NAZIS +NE +NEAP +NEAPS +NEAR +NEARBY +NEARED +NEARER +NEAREST +NEARING +NEARLIER +NEARLIEST +NEARLY +NEARNESS +NEARNESSES +NEARS +NEARSHORE +NEARSIDE +NEARSIDES +NEARSIGHTED +NEARSIGHTEDLY +NEARSIGHTEDNESS +NEAT +NEATEN +NEATENED +NEATENING +NEATENS +NEATER +NEATEST +NEATH +NEATHERD +NEATHERDS +NEATLY +NEATNESS +NEATNESSES +NEATNIK +NEATNIKS +NEATS +NEB +NEBBISH +NEBBISHES +NEBBISHY +NEBENKERN +NEBENKERNS +NEBS +NEBULA +NEBULAE +NEBULAR +NEBULAS +NEBULE +NEBULISE +NEBULISED +NEBULISES +NEBULISING +NEBULIZATION +NEBULIZATIONS +NEBULIZE +NEBULIZED +NEBULIZER +NEBULIZERS +NEBULIZES +NEBULIZING +NEBULOSE +NEBULOSITIES +NEBULOSITY +NEBULOUS +NEBULOUSLY +NEBULOUSNESS +NEBULOUSNESSES +NEBULY +NECESSARIES +NECESSARILY +NECESSARY +NECESSITARIAN +NECESSITARIANS +NECESSITATE +NECESSITATED +NECESSITATES +NECESSITATING +NECESSITATION +NECESSITATIONS +NECESSITIES +NECESSITOUS +NECESSITOUSLY +NECESSITOUSNESS +NECESSITY +NECK +NECKBAND +NECKBANDS +NECKCLOTH +NECKCLOTHS +NECKED +NECKER +NECKERCHIEF +NECKERCHIEFS +NECKERCHIEVES +NECKERS +NECKING +NECKINGS +NECKLACE +NECKLACED +NECKLACES +NECKLACING +NECKLESS +NECKLIKE +NECKLINE +NECKLINES +NECKPIECE +NECKPIECES +NECKS +NECKTIE +NECKTIES +NECKWEAR +NECROLOGICAL +NECROLOGIES +NECROLOGIST +NECROLOGISTS +NECROLOGY +NECROMANCER +NECROMANCERS +NECROMANCIES +NECROMANCY +NECROMANTIC +NECROMANTICALLY +NECROPHAGOUS +NECROPHILIA +NECROPHILIAC +NECROPHILIACS +NECROPHILIAS +NECROPHILIC +NECROPHILISM +NECROPHILISMS +NECROPOLEIS +NECROPOLES +NECROPOLI +NECROPOLIS +NECROPOLISES +NECROPSIED +NECROPSIES +NECROPSY +NECROPSYING +NECROSE +NECROSED +NECROSES +NECROSING +NECROSIS +NECROTIC +NECROTIZE +NECROTIZED +NECROTIZES +NECROTIZING +NECROTOMIES +NECROTOMY +NECTAR +NECTAREAN +NECTARIAL +NECTARIED +NECTARIES +NECTARINE +NECTARINES +NECTAROUS +NECTARS +NECTARY +NEDDIES +NEDDY +NEE +NEED +NEEDED +NEEDER +NEEDERS +NEEDFUL +NEEDFULLY +NEEDFULNESS +NEEDFULNESSES +NEEDFULS +NEEDIER +NEEDIEST +NEEDILY +NEEDINESS +NEEDINESSES +NEEDING +NEEDLE +NEEDLED +NEEDLEFISH +NEEDLEFISHES +NEEDLELIKE +NEEDLEPOINT +NEEDLEPOINTS +NEEDLER +NEEDLERS +NEEDLES +NEEDLESS +NEEDLESSLY +NEEDLESSNESS +NEEDLESSNESSES +NEEDLEWOMAN +NEEDLEWOMEN +NEEDLEWORK +NEEDLEWORKER +NEEDLEWORKERS +NEEDLEWORKS +NEEDLING +NEEDLINGS +NEEDS +NEEDY +NEEM +NEEMS +NEEP +NEEPS +NEFARIOUS +NEFARIOUSLY +NEG +NEGATE +NEGATED +NEGATER +NEGATERS +NEGATES +NEGATING +NEGATION +NEGATIONAL +NEGATIONS +NEGATIVE +NEGATIVED +NEGATIVELY +NEGATIVENESS +NEGATIVENESSES +NEGATIVES +NEGATIVING +NEGATIVISM +NEGATIVISMS +NEGATIVIST +NEGATIVISTIC +NEGATIVISTS +NEGATIVITIES +NEGATIVITY +NEGATON +NEGATONS +NEGATOR +NEGATORS +NEGATRON +NEGATRONS +NEGLECT +NEGLECTED +NEGLECTER +NEGLECTERS +NEGLECTFUL +NEGLECTFULLY +NEGLECTFULNESS +NEGLECTING +NEGLECTOR +NEGLECTORS +NEGLECTS +NEGLIGE +NEGLIGEE +NEGLIGEES +NEGLIGENCE +NEGLIGENCES +NEGLIGENT +NEGLIGENTLY +NEGLIGES +NEGLIGIBILITIES +NEGLIGIBILITY +NEGLIGIBLE +NEGLIGIBLY +NEGOTIABILITIES +NEGOTIABILITY +NEGOTIABLE +NEGOTIANT +NEGOTIANTS +NEGOTIATE +NEGOTIATED +NEGOTIATES +NEGOTIATING +NEGOTIATION +NEGOTIATIONS +NEGOTIATOR +NEGOTIATORS +NEGOTIATORY +NEGRITUDE +NEGRITUDES +NEGROID +NEGROIDS +NEGRONI +NEGRONIS +NEGROPHIL +NEGROPHILS +NEGROPHOBE +NEGROPHOBES +NEGROPHOBIA +NEGROPHOBIAS +NEGS +NEGUS +NEGUSES +NEIF +NEIFS +NEIGH +NEIGHBOR +NEIGHBORED +NEIGHBORHOOD +NEIGHBORHOODS +NEIGHBORING +NEIGHBORLINESS +NEIGHBORLY +NEIGHBORS +NEIGHBOUR +NEIGHBOURED +NEIGHBOURING +NEIGHBOURS +NEIGHED +NEIGHING +NEIGHS +NEIST +NEITHER +NEKTON +NEKTONIC +NEKTONS +NELLIE +NELLIES +NELLY +NELSON +NELSONS +NELUMBIUM +NELUMBIUMS +NELUMBO +NELUMBOS +NEMA +NEMAS +NEMATIC +NEMATICIDAL +NEMATICIDE +NEMATICIDES +NEMATOCIDAL +NEMATOCIDE +NEMATOCIDES +NEMATOCYST +NEMATOCYSTS +NEMATODE +NEMATODES +NEMATOLOGICAL +NEMATOLOGIES +NEMATOLOGIST +NEMATOLOGISTS +NEMATOLOGY +NEMERTEAN +NEMERTEANS +NEMERTINE +NEMERTINES +NEMESES +NEMESIS +NEMOPHILA +NEMOPHILAS +NENE +NENES +NEOCLASSIC +NEOCLASSICAL +NEOCLASSICISM +NEOCLASSICISMS +NEOCLASSICIST +NEOCLASSICISTS +NEOCOLONIAL +NEOCOLONIALISM +NEOCOLONIALISMS +NEOCOLONIALIST +NEOCOLONIALISTS +NEOCON +NEOCONS +NEOCONSERVATISM +NEOCONSERVATIVE +NEOCORTEX +NEOCORTEXES +NEOCORTICAL +NEOCORTICES +NEODYMIUM +NEODYMIUMS +NEOGENE +NEOLIBERAL +NEOLIBERALISM +NEOLIBERALISMS +NEOLIBERALS +NEOLITH +NEOLITHIC +NEOLITHS +NEOLOGIC +NEOLOGIES +NEOLOGISM +NEOLOGISMS +NEOLOGIST +NEOLOGISTIC +NEOLOGISTS +NEOLOGIZE +NEOLOGIZED +NEOLOGIZES +NEOLOGIZING +NEOLOGY +NEOMORPH +NEOMORPHS +NEOMYCIN +NEOMYCINS +NEON +NEONATAL +NEONATALLY +NEONATE +NEONATES +NEONATOLOGIES +NEONATOLOGIST +NEONATOLOGISTS +NEONATOLOGY +NEONED +NEONS +NEOORTHODOX +NEOORTHODOXIES +NEOORTHODOXY +NEOPHILIA +NEOPHILIAC +NEOPHILIACS +NEOPHILIAS +NEOPHYTE +NEOPHYTES +NEOPHYTIC +NEOPLASIA +NEOPLASIAS +NEOPLASM +NEOPLASMS +NEOPLASTIC +NEOPLASTICISM +NEOPLASTICISMS +NEOPLASTICIST +NEOPLASTICISTS +NEOPLASTIES +NEOPLASTY +NEOPRENE +NEOPRENES +NEOREALISM +NEOREALISMS +NEOREALIST +NEOREALISTIC +NEOREALISTS +NEOSTIGMINE +NEOSTIGMINES +NEOTENIC +NEOTENIES +NEOTENOUS +NEOTENY +NEOTERIC +NEOTERICS +NEOTROPIC +NEOTROPICS +NEOTYPE +NEOTYPES +NEPENTHE +NEPENTHEAN +NEPENTHES +NEPETA +NEPETAS +NEPHELINE +NEPHELINES +NEPHELINIC +NEPHELINITE +NEPHELINITES +NEPHELINITIC +NEPHELITE +NEPHELITES +NEPHELOMETER +NEPHELOMETERS +NEPHELOMETRIC +NEPHELOMETRIES +NEPHELOMETRY +NEPHEW +NEPHEWS +NEPHOGRAM +NEPHOGRAMS +NEPHOLOGIES +NEPHOLOGY +NEPHOSCOPE +NEPHOSCOPES +NEPHRECTOMIES +NEPHRECTOMIZE +NEPHRECTOMIZED +NEPHRECTOMIZES +NEPHRECTOMIZING +NEPHRECTOMY +NEPHRIC +NEPHRIDIA +NEPHRIDIAL +NEPHRIDIUM +NEPHRISM +NEPHRISMS +NEPHRITE +NEPHRITES +NEPHRITIC +NEPHRITIDES +NEPHRITIS +NEPHRITISES +NEPHROLOGIES +NEPHROLOGIST +NEPHROLOGISTS +NEPHROLOGY +NEPHRON +NEPHRONS +NEPHROPATHIC +NEPHROPATHIES +NEPHROPATHY +NEPHROSES +NEPHROSIS +NEPHROSTOME +NEPHROSTOMES +NEPHROTIC +NEPHROTICS +NEPHROTOXIC +NEPHROTOXICITY +NEPOTIC +NEPOTISM +NEPOTISMS +NEPOTIST +NEPOTISTIC +NEPOTISTS +NEPTUNIUM +NEPTUNIUMS +NERD +NERDIER +NERDIEST +NERDINESS +NERDINESSES +NERDISH +NERDS +NERDY +NEREID +NEREIDES +NEREIDS +NEREIS +NERITIC +NEROL +NEROLI +NEROLIS +NEROLS +NERTS +NERTZ +NERVATE +NERVATION +NERVATIONS +NERVATURE +NERVATURES +NERVE +NERVED +NERVELESS +NERVELESSLY +NERVELESSNESS +NERVELESSNESSES +NERVES +NERVIER +NERVIEST +NERVILY +NERVINE +NERVINES +NERVINESS +NERVINESSES +NERVING +NERVINGS +NERVOSITIES +NERVOSITY +NERVOUS +NERVOUSLY +NERVOUSNESS +NERVOUSNESSES +NERVULE +NERVULES +NERVURE +NERVURES +NERVY +NESCIENCE +NESCIENCES +NESCIENT +NESCIENTS +NESS +NESSES +NEST +NESTABLE +NESTED +NESTER +NESTERS +NESTING +NESTLE +NESTLED +NESTLER +NESTLERS +NESTLES +NESTLIKE +NESTLING +NESTLINGS +NESTOR +NESTORS +NESTS +NET +NETHER +NETHERMOST +NETHERWORLD +NETHERWORLDS +NETIQUETTE +NETIQUETTES +NETIZEN +NETIZENS +NETLESS +NETLIKE +NETMINDER +NETMINDERS +NETOP +NETOPS +NETS +NETSUKE +NETSUKES +NETT +NETTABLE +NETTED +NETTER +NETTERS +NETTIER +NETTIEST +NETTING +NETTINGS +NETTLE +NETTLED +NETTLER +NETTLERS +NETTLES +NETTLESOME +NETTLIER +NETTLIEST +NETTLING +NETTLY +NETTS +NETTY +NETWORK +NETWORKED +NETWORKER +NETWORKERS +NETWORKING +NETWORKINGS +NETWORKS +NEUK +NEUKS +NEUM +NEUMATIC +NEUME +NEUMES +NEUMIC +NEUMS +NEURAL +NEURALGIA +NEURALGIAS +NEURALGIC +NEURALLY +NEURAMINIDASE +NEURAMINIDASES +NEURASTHENIA +NEURASTHENIAS +NEURASTHENIC +NEURASTHENICS +NEURAXON +NEURAXONS +NEURILEMMA +NEURILEMMAL +NEURILEMMAS +NEURINE +NEURINES +NEURITIC +NEURITICS +NEURITIDES +NEURITIS +NEURITISES +NEUROACTIVE +NEUROANATOMIC +NEUROANATOMICAL +NEUROANATOMIES +NEUROANATOMIST +NEUROANATOMISTS +NEUROANATOMY +NEUROBIOLOGICAL +NEUROBIOLOGIES +NEUROBIOLOGIST +NEUROBIOLOGISTS +NEUROBIOLOGY +NEUROBLASTOMA +NEUROBLASTOMAS +NEUROBLASTOMATA +NEUROCHEMICAL +NEUROCHEMICALS +NEUROCHEMIST +NEUROCHEMISTRY +NEUROCHEMISTS +NEUROCOEL +NEUROCOELS +NEUROENDOCRINE +NEUROFIBRIL +NEUROFIBRILLARY +NEUROFIBRILS +NEUROFIBROMA +NEUROFIBROMAS +NEUROFIBROMATA +NEUROGENIC +NEUROGENICALLY +NEUROGLIA +NEUROGLIAL +NEUROGLIAS +NEUROHORMONAL +NEUROHORMONE +NEUROHORMONES +NEUROHUMOR +NEUROHUMORAL +NEUROHUMORS +NEUROHYPOPHYSES +NEUROHYPOPHYSIS +NEUROID +NEUROLEPTIC +NEUROLEPTICS +NEUROLOGIC +NEUROLOGICAL +NEUROLOGICALLY +NEUROLOGIES +NEUROLOGIST +NEUROLOGISTS +NEUROLOGY +NEUROMA +NEUROMAS +NEUROMAST +NEUROMASTS +NEUROMATA +NEUROMUSCULAR +NEURON +NEURONAL +NEURONE +NEURONES +NEURONIC +NEURONS +NEUROPATH +NEUROPATHIC +NEUROPATHICALLY +NEUROPATHIES +NEUROPATHOLOGIC +NEUROPATHOLOGY +NEUROPATHS +NEUROPATHY +NEUROPEPTIDE +NEUROPEPTIDES +NEUROPHYSIOLOGY +NEUROPSYCHIATRY +NEUROPSYCHOLOGY +NEUROPTERAN +NEUROPTERANS +NEUROPTEROUS +NEURORADIOLOGY +NEUROSAL +NEUROSCIENCE +NEUROSCIENCES +NEUROSCIENTIFIC +NEUROSCIENTIST +NEUROSCIENTISTS +NEUROSECRETION +NEUROSECRETIONS +NEUROSECRETORY +NEUROSENSORY +NEUROSES +NEUROSIS +NEUROSPORA +NEUROSPORAS +NEUROSURGEON +NEUROSURGEONS +NEUROSURGERIES +NEUROSURGERY +NEUROSURGICAL +NEUROTIC +NEUROTICALLY +NEUROTICISM +NEUROTICISMS +NEUROTICS +NEUROTOMIES +NEUROTOMY +NEUROTOXIC +NEUROTOXICITIES +NEUROTOXICITY +NEUROTOXIN +NEUROTOXINS +NEUROTROPIC +NEURULA +NEURULAE +NEURULAR +NEURULAS +NEURULATION +NEURULATIONS +NEUSTIC +NEUSTON +NEUSTONIC +NEUSTONS +NEUTER +NEUTERED +NEUTERING +NEUTERS +NEUTRAL +NEUTRALISE +NEUTRALISED +NEUTRALISES +NEUTRALISING +NEUTRALISM +NEUTRALISMS +NEUTRALIST +NEUTRALISTIC +NEUTRALISTS +NEUTRALITIES +NEUTRALITY +NEUTRALIZATION +NEUTRALIZATIONS +NEUTRALIZE +NEUTRALIZED +NEUTRALIZER +NEUTRALIZERS +NEUTRALIZES +NEUTRALIZING +NEUTRALLY +NEUTRALNESS +NEUTRALNESSES +NEUTRALS +NEUTRINO +NEUTRINOLESS +NEUTRINOS +NEUTRON +NEUTRONIC +NEUTRONS +NEUTROPHIL +NEUTROPHILIC +NEUTROPHILS +NEVE +NEVER +NEVERMIND +NEVERMINDS +NEVERMORE +NEVERTHELESS +NEVES +NEVI +NEVOID +NEVUS +NEW +NEWBIE +NEWBIES +NEWBORN +NEWBORNS +NEWCOMER +NEWCOMERS +NEWEL +NEWELS +NEWER +NEWEST +NEWFANGLED +NEWFANGLEDNESS +NEWFOUND +NEWIE +NEWIES +NEWISH +NEWLY +NEWLYWED +NEWLYWEDS +NEWMARKET +NEWMARKETS +NEWMOWN +NEWNESS +NEWNESSES +NEWS +NEWSAGENT +NEWSAGENTS +NEWSBEAT +NEWSBEATS +NEWSBOY +NEWSBOYS +NEWSBREAK +NEWSBREAKS +NEWSCAST +NEWSCASTER +NEWSCASTERS +NEWSCASTS +NEWSDEALER +NEWSDEALERS +NEWSDESK +NEWSDESKS +NEWSGIRL +NEWSGIRLS +NEWSGROUP +NEWSGROUPS +NEWSHAWK +NEWSHAWKS +NEWSHOUND +NEWSHOUNDS +NEWSIE +NEWSIER +NEWSIES +NEWSIEST +NEWSINESS +NEWSINESSES +NEWSLESS +NEWSLETTER +NEWSLETTERS +NEWSMAGAZINE +NEWSMAGAZINES +NEWSMAKER +NEWSMAKERS +NEWSMAN +NEWSMEN +NEWSMONGER +NEWSMONGERS +NEWSPAPER +NEWSPAPERED +NEWSPAPERING +NEWSPAPERMAN +NEWSPAPERMEN +NEWSPAPERS +NEWSPAPERWOMAN +NEWSPAPERWOMEN +NEWSPEAK +NEWSPEAKS +NEWSPEOPLE +NEWSPERSON +NEWSPERSONS +NEWSPRINT +NEWSPRINTS +NEWSREADER +NEWSREADERS +NEWSREEL +NEWSREELS +NEWSROOM +NEWSROOMS +NEWSSTAND +NEWSSTANDS +NEWSWEEKLIES +NEWSWEEKLY +NEWSWIRE +NEWSWIRES +NEWSWOMAN +NEWSWOMEN +NEWSWORTHINESS +NEWSWORTHY +NEWSWRITING +NEWSWRITINGS +NEWSY +NEWT +NEWTON +NEWTONS +NEWTS +NEWWAVER +NEWWAVERS +NEXT +NEXTDOOR +NEXUS +NEXUSES +NGULTRUM +NGULTRUMS +NGWEE +NIACIN +NIACINAMIDE +NIACINAMIDES +NIACINS +NIALAMIDE +NIALAMIDES +NIB +NIBBED +NIBBING +NIBBLE +NIBBLED +NIBBLER +NIBBLERS +NIBBLES +NIBBLING +NIBLICK +NIBLICKS +NIBLIKE +NIBS +NICAD +NICADS +NICCOLITE +NICCOLITES +NICE +NICELY +NICENESS +NICENESSES +NICER +NICEST +NICETIES +NICETY +NICHE +NICHED +NICHES +NICHING +NICK +NICKED +NICKEL +NICKELED +NICKELIC +NICKELIFEROUS +NICKELING +NICKELLED +NICKELLING +NICKELODEON +NICKELODEONS +NICKELOUS +NICKELS +NICKER +NICKERED +NICKERING +NICKERS +NICKING +NICKLE +NICKLED +NICKLES +NICKLING +NICKNACK +NICKNACKS +NICKNAME +NICKNAMED +NICKNAMER +NICKNAMERS +NICKNAMES +NICKNAMING +NICKS +NICOISE +NICOL +NICOLS +NICOTIANA +NICOTIANAS +NICOTIN +NICOTINAMIDE +NICOTINAMIDES +NICOTINE +NICOTINES +NICOTINIC +NICOTINS +NICTATE +NICTATED +NICTATES +NICTATING +NICTATION +NICTATIONS +NICTITANT +NICTITATE +NICTITATED +NICTITATES +NICTITATING +NIDAL +NIDATE +NIDATED +NIDATES +NIDATING +NIDATION +NIDATIONS +NIDDERING +NIDDERINGS +NIDE +NIDED +NIDERING +NIDERINGS +NIDES +NIDGET +NIDGETS +NIDI +NIDICOLOUS +NIDIFICATION +NIDIFICATIONS +NIDIFIED +NIDIFIES +NIDIFUGOUS +NIDIFY +NIDIFYING +NIDING +NIDUS +NIDUSES +NIECE +NIECES +NIELLI +NIELLIST +NIELLISTS +NIELLO +NIELLOED +NIELLOING +NIELLOS +NIEVE +NIEVES +NIFEDIPINE +NIFEDIPINES +NIFFER +NIFFERED +NIFFERING +NIFFERS +NIFTIER +NIFTIES +NIFTIEST +NIFTILY +NIFTINESS +NIFTINESSES +NIFTY +NIGELLA +NIGELLAS +NIGGARD +NIGGARDED +NIGGARDING +NIGGARDLINESS +NIGGARDLINESSES +NIGGARDLY +NIGGARDS +NIGGER +NIGGERS +NIGGLE +NIGGLED +NIGGLER +NIGGLERS +NIGGLES +NIGGLIER +NIGGLIEST +NIGGLING +NIGGLINGLY +NIGGLINGS +NIGGLY +NIGH +NIGHED +NIGHER +NIGHEST +NIGHING +NIGHNESS +NIGHNESSES +NIGHS +NIGHT +NIGHTCAP +NIGHTCAPS +NIGHTCLOTHES +NIGHTCLUB +NIGHTCLUBBED +NIGHTCLUBBER +NIGHTCLUBBERS +NIGHTCLUBBING +NIGHTCLUBS +NIGHTDRESS +NIGHTDRESSES +NIGHTFALL +NIGHTFALLS +NIGHTGLOW +NIGHTGLOWS +NIGHTGOWN +NIGHTGOWNS +NIGHTHAWK +NIGHTHAWKS +NIGHTIE +NIGHTIES +NIGHTINGALE +NIGHTINGALES +NIGHTJAR +NIGHTJARS +NIGHTLESS +NIGHTLIFE +NIGHTLIFES +NIGHTLIVES +NIGHTLONG +NIGHTLY +NIGHTMARE +NIGHTMARES +NIGHTMARISH +NIGHTMARISHLY +NIGHTS +NIGHTSCOPE +NIGHTSCOPES +NIGHTSHADE +NIGHTSHADES +NIGHTSHIRT +NIGHTSHIRTS +NIGHTSIDE +NIGHTSIDES +NIGHTSPOT +NIGHTSPOTS +NIGHTSTAND +NIGHTSTANDS +NIGHTSTICK +NIGHTSTICKS +NIGHTTIDE +NIGHTTIDES +NIGHTTIME +NIGHTTIMES +NIGHTWALKER +NIGHTWALKERS +NIGHTWEAR +NIGHTY +NIGRIFIED +NIGRIFIES +NIGRIFY +NIGRIFYING +NIGRITUDE +NIGRITUDES +NIGROSIN +NIGROSINE +NIGROSINES +NIGROSINS +NIHIL +NIHILISM +NIHILISMS +NIHILIST +NIHILISTIC +NIHILISTS +NIHILITIES +NIHILITY +NIHILS +NIL +NILGAI +NILGAIS +NILGAU +NILGAUS +NILGHAI +NILGHAIS +NILGHAU +NILGHAUS +NILL +NILLED +NILLING +NILLS +NILPOTENT +NILPOTENTS +NILS +NIM +NIMBI +NIMBLE +NIMBLENESS +NIMBLENESSES +NIMBLER +NIMBLEST +NIMBLY +NIMBOSTRATI +NIMBOSTRATUS +NIMBUS +NIMBUSED +NIMBUSES +NIMBYNESS +NIMBYNESSES +NIMIETIES +NIMIETY +NIMIOUS +NIMMED +NIMMING +NIMROD +NIMRODS +NIMS +NINCOMPOOP +NINCOMPOOPERIES +NINCOMPOOPERY +NINCOMPOOPS +NINE +NINEBARK +NINEBARKS +NINEFOLD +NINEPIN +NINEPINS +NINES +NINETEEN +NINETEENS +NINETEENTH +NINETEENTHS +NINETIES +NINETIETH +NINETIETHS +NINETY +NINHYDRIN +NINHYDRINS +NINJA +NINJAS +NINNIES +NINNY +NINNYHAMMER +NINNYHAMMERS +NINNYISH +NINON +NINONS +NINTH +NINTHLY +NINTHS +NIOBATE +NIOBATES +NIOBIC +NIOBITE +NIOBITES +NIOBIUM +NIOBIUMS +NIOBOUS +NIP +NIPA +NIPAS +NIPPED +NIPPER +NIPPERS +NIPPIER +NIPPIEST +NIPPILY +NIPPINESS +NIPPINESSES +NIPPING +NIPPINGLY +NIPPLE +NIPPLED +NIPPLES +NIPPY +NIPS +NIRVANA +NIRVANAS +NIRVANIC +NISEI +NISEIS +NISI +NISUS +NIT +NITCHIE +NITCHIES +NITE +NITER +NITERIE +NITERIES +NITERS +NITERY +NITES +NITID +NITINOL +NITINOLS +NITON +NITONS +NITPICK +NITPICKED +NITPICKER +NITPICKERS +NITPICKIER +NITPICKIEST +NITPICKING +NITPICKS +NITPICKY +NITRATE +NITRATED +NITRATES +NITRATING +NITRATION +NITRATIONS +NITRATOR +NITRATORS +NITRE +NITRES +NITRIC +NITRID +NITRIDE +NITRIDED +NITRIDES +NITRIDING +NITRIDS +NITRIFICATION +NITRIFICATIONS +NITRIFIED +NITRIFIER +NITRIFIERS +NITRIFIES +NITRIFY +NITRIFYING +NITRIL +NITRILE +NITRILES +NITRILS +NITRITE +NITRITES +NITRO +NITROBENZENE +NITROBENZENES +NITROCELLULOSE +NITROCELLULOSES +NITROFURAN +NITROFURANS +NITROGEN +NITROGENASE +NITROGENASES +NITROGENOUS +NITROGENS +NITROGLYCERIN +NITROGLYCERINE +NITROGLYCERINES +NITROGLYCERINS +NITROLIC +NITROMETHANE +NITROMETHANES +NITROPARAFFIN +NITROPARAFFINS +NITROS +NITROSAMINE +NITROSAMINES +NITROSO +NITROSYL +NITROSYLS +NITROUS +NITS +NITTIER +NITTIEST +NITTY +NITWIT +NITWITS +NIVAL +NIVEOUS +NIX +NIXE +NIXED +NIXES +NIXIE +NIXIES +NIXING +NIXY +NIZAM +NIZAMATE +NIZAMATES +NIZAMS +NO +NOB +NOBBIER +NOBBIEST +NOBBILY +NOBBLE +NOBBLED +NOBBLER +NOBBLERS +NOBBLES +NOBBLING +NOBBY +NOBELIUM +NOBELIUMS +NOBILIARY +NOBILITIES +NOBILITY +NOBLE +NOBLEMAN +NOBLEMEN +NOBLENESS +NOBLENESSES +NOBLER +NOBLES +NOBLESSE +NOBLESSES +NOBLEST +NOBLEWOMAN +NOBLEWOMEN +NOBLY +NOBODIES +NOBODY +NOBS +NOCENT +NOCICEPTIVE +NOCK +NOCKED +NOCKING +NOCKS +NOCTAMBULIST +NOCTAMBULISTS +NOCTILUCA +NOCTILUCAS +NOCTUID +NOCTUIDS +NOCTULE +NOCTULES +NOCTUOID +NOCTURN +NOCTURNAL +NOCTURNALLY +NOCTURNE +NOCTURNES +NOCTURNS +NOCUOUS +NOCUOUSLY +NOD +NODAL +NODALITIES +NODALITY +NODALLY +NODDED +NODDER +NODDERS +NODDIES +NODDING +NODDINGLY +NODDLE +NODDLED +NODDLES +NODDLING +NODDY +NODE +NODES +NODI +NODICAL +NODOSE +NODOSITIES +NODOSITY +NODOUS +NODS +NODULAR +NODULATION +NODULATIONS +NODULE +NODULES +NODULOSE +NODULOUS +NODUS +NOEL +NOELS +NOES +NOESIS +NOESISES +NOETIC +NOG +NOGG +NOGGED +NOGGIN +NOGGING +NOGGINGS +NOGGINS +NOGGS +NOGS +NOH +NOHOW +NOIL +NOILS +NOILY +NOIR +NOIRISH +NOIRS +NOISE +NOISED +NOISELESS +NOISELESSLY +NOISEMAKER +NOISEMAKERS +NOISEMAKING +NOISEMAKINGS +NOISES +NOISETTE +NOISETTES +NOISIER +NOISIEST +NOISILY +NOISINESS +NOISINESSES +NOISING +NOISOME +NOISOMELY +NOISOMENESS +NOISOMENESSES +NOISY +NOLO +NOLOS +NOM +NOMA +NOMAD +NOMADIC +NOMADISM +NOMADISMS +NOMADS +NOMARCH +NOMARCHIES +NOMARCHS +NOMARCHY +NOMAS +NOMBLES +NOMBRIL +NOMBRILS +NOME +NOMEN +NOMENCLATOR +NOMENCLATORIAL +NOMENCLATORS +NOMENCLATURAL +NOMENCLATURE +NOMENCLATURES +NOMES +NOMINA +NOMINAL +NOMINALISM +NOMINALISMS +NOMINALIST +NOMINALISTIC +NOMINALISTS +NOMINALLY +NOMINALS +NOMINATE +NOMINATED +NOMINATES +NOMINATING +NOMINATION +NOMINATIONS +NOMINATIVE +NOMINATIVES +NOMINATOR +NOMINATORS +NOMINEE +NOMINEES +NOMISM +NOMISMS +NOMISTIC +NOMOGRAM +NOMOGRAMS +NOMOGRAPH +NOMOGRAPHIC +NOMOGRAPHIES +NOMOGRAPHS +NOMOGRAPHY +NOMOI +NOMOLOGIC +NOMOLOGICAL +NOMOLOGIES +NOMOLOGY +NOMOS +NOMOTHETIC +NOMS +NONA +NONABRASIVE +NONABSORBABLE +NONABSORBENT +NONABSORPTIVE +NONABSTRACT +NONACADEMIC +NONACADEMICS +NONACCEPTANCE +NONACCEPTANCES +NONACCOUNTABLE +NONACCREDITED +NONACCRUAL +NONACHIEVEMENT +NONACHIEVEMENTS +NONACID +NONACIDIC +NONACIDS +NONACQUISITIVE +NONACTING +NONACTION +NONACTIONS +NONACTIVATED +NONACTIVE +NONACTOR +NONACTORS +NONADAPTIVE +NONADDICT +NONADDICTIVE +NONADDICTS +NONADDITIVE +NONADDITIVITIES +NONADDITIVITY +NONADHESIVE +NONADIABATIC +NONADJACENT +NONADMIRER +NONADMIRERS +NONADMISSION +NONADMISSIONS +NONADULT +NONADULTS +NONAESTHETIC +NONAFFILIATED +NONAFFLUENT +NONAGE +NONAGENARIAN +NONAGENARIANS +NONAGES +NONAGGRESSION +NONAGGRESSIONS +NONAGGRESSIVE +NONAGON +NONAGONAL +NONAGONS +NONAGRICULTURAL +NONALCOHOLIC +NONALIGNED +NONALIGNMENT +NONALIGNMENTS +NONALLELIC +NONALLERGENIC +NONALLERGIC +NONALPHABETIC +NONALUMINUM +NONAMBIGUOUS +NONANALYTIC +NONANATOMIC +NONANIMAL +NONANSWER +NONANSWERS +NONANTAGONISTIC +NONANTIBIOTIC +NONANTIBIOTICS +NONANTIGENIC +NONAPPEARANCE +NONAPPEARANCES +NONAQUATIC +NONAQUEOUS +NONARABLE +NONARBITRARY +NONARCHITECT +NONARCHITECTS +NONARCHITECTURE +NONARGUMENT +NONARGUMENTS +NONARISTOCRATIC +NONAROMATIC +NONAROMATICS +NONART +NONARTIST +NONARTISTIC +NONARTISTS +NONARTS +NONAS +NONASCETIC +NONASPIRIN +NONASSERTIVE +NONASSOCIATED +NONASTRONOMICAL +NONATHLETE +NONATHLETES +NONATHLETIC +NONATOMIC +NONATTACHED +NONATTACHMENT +NONATTACHMENTS +NONATTENDANCE +NONATTENDANCES +NONATTENDER +NONATTENDERS +NONAUDITORY +NONAUTHOR +NONAUTHORS +NONAUTOMATED +NONAUTOMATIC +NONAUTOMOTIVE +NONAUTONOMOUS +NONAVAILABILITY +NONBACTERIAL +NONBANK +NONBANKING +NONBANKS +NONBARBITURATE +NONBARBITURATES +NONBASIC +NONBEARING +NONBEHAVIORAL +NONBEING +NONBEINGS +NONBELIEF +NONBELIEFS +NONBELIEVER +NONBELIEVERS +NONBELLIGERENCY +NONBELLIGERENT +NONBELLIGERENTS +NONBETTING +NONBINARY +NONBINDING +NONBIOGRAPHICAL +NONBIOLOGICAL +NONBIOLOGICALLY +NONBIOLOGIST +NONBIOLOGISTS +NONBITING +NONBLACK +NONBLACKS +NONBODIES +NONBODY +NONBONDED +NONBONDING +NONBOOK +NONBOOKS +NONBOTANIST +NONBOTANISTS +NONBRAND +NONBREAKABLE +NONBREATHING +NONBREEDER +NONBREEDERS +NONBREEDING +NONBROADCAST +NONBUILDING +NONBURNABLE +NONBUSINESS +NONBUYING +NONCABINET +NONCAKING +NONCALLABLE +NONCALORIC +NONCAMPUS +NONCANCELABLE +NONCANCEROUS +NONCANDIDACIES +NONCANDIDACY +NONCANDIDATE +NONCANDIDATES +NONCAPITAL +NONCAPITALIST +NONCAPITALISTS +NONCARCINOGEN +NONCARCINOGENIC +NONCARCINOGENS +NONCARDIAC +NONCAREER +NONCARRIER +NONCARRIERS +NONCASH +NONCASUAL +NONCAUSAL +NONCE +NONCELEBRATION +NONCELEBRATIONS +NONCELEBRITIES +NONCELEBRITY +NONCELLULAR +NONCELLULOSIC +NONCENTRAL +NONCEREAL +NONCERTIFICATED +NONCERTIFIED +NONCES +NONCHALANCE +NONCHALANCES +NONCHALANT +NONCHALANTLY +NONCHARACTER +NONCHARACTERS +NONCHARISMATIC +NONCHARISMATICS +NONCHAUVINIST +NONCHEMICAL +NONCHEMICALS +NONCHROMOSOMAL +NONCHURCH +NONCHURCHGOER +NONCHURCHGOERS +NONCIRCULAR +NONCIRCULATING +NONCITIZEN +NONCITIZENS +NONCLANDESTINE +NONCLASS +NONCLASSES +NONCLASSICAL +NONCLASSIFIED +NONCLASSROOM +NONCLERICAL +NONCLING +NONCLINICAL +NONCLOGGING +NONCODING +NONCOERCIVE +NONCOGNITIVE +NONCOHERENT +NONCOINCIDENCE +NONCOINCIDENCES +NONCOITAL +NONCOKING +NONCOLA +NONCOLAS +NONCOLLECTOR +NONCOLLECTORS +NONCOLLEGE +NONCOLLEGIATE +NONCOLLINEAR +NONCOLOR +NONCOLORED +NONCOLORFAST +NONCOLORS +NONCOM +NONCOMBAT +NONCOMBATANT +NONCOMBATANTS +NONCOMBATIVE +NONCOMBUSTIBLE +NONCOMMERCIAL +NONCOMMITMENT +NONCOMMITMENTS +NONCOMMITTAL +NONCOMMITTALLY +NONCOMMITTED +NONCOMMUNIST +NONCOMMUNISTS +NONCOMMUNITY +NONCOMMUTATIVE +NONCOMPARABLE +NONCOMPATIBLE +NONCOMPETITION +NONCOMPETITIVE +NONCOMPETITOR +NONCOMPETITORS +NONCOMPLEX +NONCOMPLIANCE +NONCOMPLIANCES +NONCOMPLICATED +NONCOMPLYING +NONCOMPOSER +NONCOMPOSERS +NONCOMPOUND +NONCOMPRESSIBLE +NONCOMPUTER +NONCOMPUTERIZED +NONCOMS +NONCONCEPTUAL +NONCONCERN +NONCONCERNS +NONCONCLUSION +NONCONCLUSIONS +NONCONCUR +NONCONCURRED +NONCONCURRENCE +NONCONCURRENCES +NONCONCURRENT +NONCONCURRING +NONCONCURS +NONCONDENSABLE +NONCONDITIONED +NONCONDUCTING +NONCONDUCTION +NONCONDUCTIVE +NONCONDUCTOR +NONCONDUCTORS +NONCONFERENCE +NONCONFIDENCE +NONCONFIDENCES +NONCONFIDENTIAL +NONCONFLICTING +NONCONFORM +NONCONFORMANCE +NONCONFORMANCES +NONCONFORMED +NONCONFORMER +NONCONFORMERS +NONCONFORMING +NONCONFORMISM +NONCONFORMISMS +NONCONFORMIST +NONCONFORMISTS +NONCONFORMITIES +NONCONFORMITY +NONCONFORMS +NONCONGRUENT +NONCONJUGATED +NONCONNECTION +NONCONNECTIONS +NONCONSCIOUS +NONCONSECUTIVE +NONCONSENSUAL +NONCONSERVATION +NONCONSERVATIVE +NONCONSOLIDATED +NONCONSTANT +NONCONSTRUCTION +NONCONSTRUCTIVE +NONCONSUMER +NONCONSUMERS +NONCONSUMING +NONCONSUMPTION +NONCONSUMPTIONS +NONCONSUMPTIVE +NONCONTACT +NONCONTAGIOUS +NONCONTEMPORARY +NONCONTIGUOUS +NONCONTINGENT +NONCONTINUOUS +NONCONTRACT +NONCONTRACTUAL +NONCONTRIBUTORY +NONCONTROLLABLE +NONCONTROLLED +NONCONTROLLING +NONCONVENTIONAL +NONCONVERTIBLE +NONCOOPERATION +NONCOOPERATIONS +NONCOOPERATIVE +NONCOOPERATOR +NONCOOPERATORS +NONCOPLANAR +NONCORE +NONCORPORATE +NONCORRELATION +NONCORRELATIONS +NONCORRODIBLE +NONCORRODING +NONCORROSIVE +NONCOUNTRY +NONCOUNTY +NONCOVERAGE +NONCOVERAGES +NONCREATIVE +NONCREATIVITIES +NONCREATIVITY +NONCREDENTIALED +NONCREDIT +NONCRIME +NONCRIMES +NONCRIMINAL +NONCRIMINALS +NONCRISES +NONCRISIS +NONCRITICAL +NONCROSSOVER +NONCRUSHABLE +NONCRYSTALLINE +NONCULINARY +NONCULTIVATED +NONCULTIVATION +NONCULTIVATIONS +NONCULTURAL +NONCUMULATIVE +NONCURRENT +NONCUSTODIAL +NONCUSTOMER +NONCUSTOMERS +NONCYCLIC +NONCYCLICAL +NONDAIRY +NONDANCE +NONDANCER +NONDANCERS +NONDANCES +NONDECEPTIVE +NONDECISION +NONDECISIONS +NONDECREASING +NONDEDUCTIBLE +NONDEDUCTIVE +NONDEFENSE +NONDEFERRABLE +NONDEFORMING +NONDEGENERATE +NONDEGRADABLE +NONDEGREE +NONDELEGATE +NONDELEGATES +NONDELIBERATE +NONDELINQUENT +NONDELINQUENTS +NONDELIVERIES +NONDELIVERY +NONDEMAND +NONDEMANDING +NONDEMANDS +NONDEMOCRATIC +NONDEPARTMENTAL +NONDEPENDENT +NONDEPENDENTS +NONDEPLETABLE +NONDEPLETING +NONDEPOSITION +NONDEPOSITIONS +NONDEPRESSED +NONDERIVATIVE +NONDESCRIPT +NONDESCRIPTIVE +NONDESCRIPTS +NONDESERT +NONDESTRUCTIVE +NONDETACHABLE +NONDEVELOPMENT +NONDEVELOPMENTS +NONDEVIANT +NONDIABETIC +NONDIABETICS +NONDIALYZABLE +NONDIAPAUSING +NONDIDACTIC +NONDIFFUSIBLE +NONDIMENSIONAL +NONDIPLOMATIC +NONDIRECTED +NONDIRECTIONAL +NONDIRECTIVE +NONDISABLED +NONDISCLOSURE +NONDISCLOSURES +NONDISCOUNT +NONDISCURSIVE +NONDISJUNCTION +NONDISJUNCTIONS +NONDISPERSIVE +NONDISRUPTIVE +NONDISTINCTIVE +NONDIVERSIFIED +NONDIVIDING +NONDOCTOR +NONDOCTORS +NONDOCTRINAIRE +NONDOCUMENTARY +NONDOGMATIC +NONDOLLAR +NONDOMESTIC +NONDOMINANT +NONDORMANT +NONDRAMATIC +NONDRINKER +NONDRINKERS +NONDRINKING +NONDRIP +NONDRIVER +NONDRIVERS +NONDRUG +NONDRYING +NONDURABLE +NONE +NONEARNING +NONECONOMIC +NONECONOMIST +NONECONOMISTS +NONEDIBLE +NONEDIBLES +NONEDITORIAL +NONEDUCATION +NONEDUCATIONAL +NONEFFECTIVE +NONEGO +NONEGOS +NONELASTIC +NONELECT +NONELECTED +NONELECTION +NONELECTIONS +NONELECTIVE +NONELECTRIC +NONELECTRICAL +NONELECTROLYTE +NONELECTROLYTES +NONELECTRONIC +NONELEMENTARY +NONELITE +NONEMERGENCIES +NONEMERGENCY +NONEMOTIONAL +NONEMPHATIC +NONEMPIRICAL +NONEMPLOYEE +NONEMPLOYEES +NONEMPLOYMENT +NONEMPLOYMENTS +NONEMPTY +NONENCAPSULATED +NONENDING +NONENERGY +NONENFORCEMENT +NONENFORCEMENTS +NONENGAGEMENT +NONENGAGEMENTS +NONENGINEERING +NONENTITIES +NONENTITY +NONENTRIES +NONENTRY +NONENZYMATIC +NONENZYMIC +NONEQUAL +NONEQUALS +NONEQUILIBRIA +NONEQUILIBRIUM +NONEQUILIBRIUMS +NONEQUIVALENCE +NONEQUIVALENCES +NONEQUIVALENT +NONEROTIC +NONES +NONESSENTIAL +NONESSENTIALS +NONESTABLISHED +NONESTERIFIED +NONESUCH +NONESUCHES +NONET +NONETHELESS +NONETHICAL +NONETHNIC +NONETHNICS +NONETS +NONEVALUATIVE +NONEVENT +NONEVENTS +NONEVIDENCE +NONEVIDENCES +NONEXCLUSIVE +NONEXECUTIVE +NONEXECUTIVES +NONEXEMPT +NONEXEMPTS +NONEXISTENCE +NONEXISTENCES +NONEXISTENT +NONEXISTENTIAL +NONEXOTIC +NONEXPENDABLE +NONEXPERIMENTAL +NONEXPERT +NONEXPERTS +NONEXPLANATORY +NONEXPLOITATION +NONEXPLOITATIVE +NONEXPLOITIVE +NONEXPLOSIVE +NONEXPOSED +NONEXTANT +NONFACT +NONFACTOR +NONFACTORS +NONFACTS +NONFACTUAL +NONFACULTY +NONFADING +NONFAMILIAL +NONFAMILIES +NONFAMILY +NONFAN +NONFANS +NONFARM +NONFARMER +NONFARMERS +NONFAT +NONFATAL +NONFATTENING +NONFATTY +NONFEASANCE +NONFEASANCES +NONFEDERAL +NONFEDERATED +NONFEMINIST +NONFEMINISTS +NONFERROUS +NONFEUDAL +NONFICTION +NONFICTIONAL +NONFICTIONS +NONFIGURATIVE +NONFILAMENTOUS +NONFILIAL +NONFILTERABLE +NONFINAL +NONFINANCIAL +NONFINITE +NONFISCAL +NONFISSIONABLE +NONFLAMMABILITY +NONFLAMMABLE +NONFLOWERING +NONFLUENCIES +NONFLUENCY +NONFLUID +NONFLUIDS +NONFLUORESCENT +NONFLYING +NONFOCAL +NONFOOD +NONFORFEITABLE +NONFORFEITURE +NONFORFEITURES +NONFORMAL +NONFOSSIL +NONFREEZING +NONFRIVOLOUS +NONFROZEN +NONFUEL +NONFULFILLMENT +NONFULFILLMENTS +NONFUNCTIONAL +NONFUNCTIONING +NONFUNDED +NONGAME +NONGASEOUS +NONGAY +NONGAYS +NONGENETIC +NONGENITAL +NONGEOMETRICAL +NONGHETTO +NONGLAMOROUS +NONGLARE +NONGLARES +NONGLAZED +NONGLOSSY +NONGOLFER +NONGOLFERS +NONGONOCOCCAL +NONGOVERNMENT +NONGOVERNMENTAL +NONGRADED +NONGRADUATE +NONGRADUATES +NONGRAMMATICAL +NONGRANULAR +NONGREASY +NONGREEN +NONGREGARIOUS +NONGROWING +NONGROWTH +NONGUEST +NONGUESTS +NONGUILT +NONGUILTS +NONHALOGENATED +NONHANDICAPPED +NONHAPPENING +NONHAPPENINGS +NONHARDY +NONHARMONIC +NONHAZARDOUS +NONHEME +NONHEMOLYTIC +NONHEREDITARY +NONHERO +NONHEROES +NONHEROIC +NONHIERARCHICAL +NONHISTONE +NONHISTORICAL +NONHOME +NONHOMOGENEOUS +NONHOMOLOGOUS +NONHOMOSEXUAL +NONHOMOSEXUALS +NONHORMONAL +NONHOSPITAL +NONHOSPITALIZED +NONHOSTILE +NONHOUSING +NONHUMAN +NONHUMANS +NONHUNTER +NONHUNTERS +NONHUNTING +NONHYGROSCOPIC +NONHYSTERICAL +NONIDEAL +NONIDENTICAL +NONIDENTITIES +NONIDENTITY +NONIDEOLOGICAL +NONILLION +NONILLIONS +NONIMAGE +NONIMAGES +NONIMITATIVE +NONIMMIGRANT +NONIMMIGRANTS +NONIMMUNE +NONIMPACT +NONIMPLICATION +NONIMPLICATIONS +NONIMPORTATION +NONIMPORTATIONS +NONINCLUSION +NONINCLUSIONS +NONINCREASING +NONINCUMBENT +NONINCUMBENTS +NONINDEPENDENCE +NONINDIGENOUS +NONINDIVIDUAL +NONINDUCTIVE +NONINDUSTRIAL +NONINDUSTRY +NONINERT +NONINFECTED +NONINFECTIOUS +NONINFECTIVE +NONINFESTED +NONINFLAMMABLE +NONINFLAMMATORY +NONINFLATIONARY +NONINFLECTIONAL +NONINFLUENCE +NONINFLUENCES +NONINFORMATION +NONINFORMATIONS +NONINFRINGEMENT +NONINITIAL +NONINITIATE +NONINITIATES +NONINJURY +NONINSECT +NONINSECTICIDAL +NONINSECTS +NONINSTALLMENT +NONINSTALLMENTS +NONINSTRUMENTAL +NONINSURANCE +NONINSURED +NONINTEGRAL +NONINTEGRATED +NONINTELLECTUAL +NONINTERACTING +NONINTERACTIVE +NONINTERCOURSE +NONINTERCOURSES +NONINTEREST +NONINTERFERENCE +NONINTERSECTING +NONINTERVENTION +NONINTIMIDATING +NONINTOXICANT +NONINTOXICANTS +NONINTOXICATING +NONINTRUSIVE +NONINTUITIVE +NONINVASIVE +NONINVOLVED +NONINVOLVEMENT +NONINVOLVEMENTS +NONIONIC +NONIONIZING +NONIRON +NONIRRADIATED +NONIRRIGATED +NONIRRITANT +NONIRRITANTS +NONIRRITATING +NONISSUE +NONISSUES +NONJOINDER +NONJOINDERS +NONJOINER +NONJOINERS +NONJUDGMENTAL +NONJUDICIAL +NONJURIES +NONJURING +NONJUROR +NONJURORS +NONJURY +NONJUSTICIABLE +NONKOSHER +NONKOSHERS +NONLABOR +NONLANDOWNER +NONLANDOWNERS +NONLANGUAGE +NONLANGUAGES +NONLAWYER +NONLAWYERS +NONLEADED +NONLEAFY +NONLEAGUE +NONLEGAL +NONLEGUME +NONLEGUMES +NONLEGUMINOUS +NONLETHAL +NONLEVEL +NONLEXICAL +NONLIABLE +NONLIBRARIAN +NONLIBRARIANS +NONLIBRARY +NONLIFE +NONLINEAL +NONLINEAR +NONLINEARITIES +NONLINEARITY +NONLINGUISTIC +NONLIQUID +NONLIQUIDS +NONLITERAL +NONLITERARY +NONLITERATE +NONLITERATES +NONLIVES +NONLIVING +NONLIVINGS +NONLOCAL +NONLOCALS +NONLOGICAL +NONLOVING +NONLOYAL +NONLUMINOUS +NONLYRIC +NONMAGNETIC +NONMAINSTREAM +NONMAJOR +NONMAJORS +NONMALIGNANT +NONMALLEABLE +NONMAN +NONMANAGEMENT +NONMANAGERIAL +NONMANUAL +NONMARITAL +NONMARKET +NONMARKETS +NONMATERIAL +NONMATHEMATICAL +NONMATRICULATED +NONMATURE +NONMEANINGFUL +NONMEASURABLE +NONMEAT +NONMECHANICAL +NONMECHANISTIC +NONMEDICAL +NONMEETING +NONMEETINGS +NONMEMBER +NONMEMBERS +NONMEMBERSHIP +NONMEMBERSHIPS +NONMEN +NONMENTAL +NONMERCURIAL +NONMETAL +NONMETALLIC +NONMETALS +NONMETAMERIC +NONMETAPHORICAL +NONMETRIC +NONMETRICAL +NONMETRO +NONMETROPOLITAN +NONMICROBIAL +NONMIGRANT +NONMIGRATORY +NONMILITANT +NONMILITANTS +NONMILITARY +NONMIMETIC +NONMINORITIES +NONMINORITY +NONMOBILE +NONMODAL +NONMODERN +NONMODERNS +NONMOLECULAR +NONMONETARIST +NONMONETARISTS +NONMONETARY +NONMONEY +NONMONOGAMOUS +NONMORAL +NONMORTAL +NONMORTALS +NONMOTILE +NONMOTILITIES +NONMOTILITY +NONMOTORIZED +NONMOVING +NONMUNICIPAL +NONMUSIC +NONMUSICAL +NONMUSICALS +NONMUSICIAN +NONMUSICIANS +NONMUSICS +NONMUTANT +NONMUTANTS +NONMUTUAL +NONMYELINATED +NONMYSTICAL +NONNARRATIVE +NONNASAL +NONNATIONAL +NONNATIONALS +NONNATIVE +NONNATIVES +NONNATURAL +NONNAVAL +NONNECESSITIES +NONNECESSITY +NONNEGATIVE +NONNEGLIGENT +NONNEGOTIABLE +NONNEGOTIABLES +NONNETWORK +NONNEURAL +NONNEWS +NONNITROGENOUS +NONNOBLE +NONNORMAL +NONNORMATIVE +NONNOVEL +NONNOVELS +NONNUCLEAR +NONNUCLEATED +NONNUMERICAL +NONNUTRITIOUS +NONNUTRITIVE +NONOBESE +NONOBJECTIVE +NONOBJECTIVISM +NONOBJECTIVISMS +NONOBJECTIVIST +NONOBJECTIVISTS +NONOBJECTIVITY +NONOBSCENE +NONOBSERVANCE +NONOBSERVANCES +NONOBSERVANT +NONOBVIOUS +NONOCCUPATIONAL +NONOCCURRENCE +NONOCCURRENCES +NONOFFICIAL +NONOFFICIALS +NONOHMIC +NONOILY +NONOPERATIC +NONOPERATING +NONOPERATIONAL +NONOPERATIVE +NONOPTIMAL +NONORAL +NONORALLY +NONORGANIC +NONORGASMIC +NONORTHODOX +NONOVERLAPPING +NONOWNER +NONOWNERS +NONOXIDIZING +NONPAGAN +NONPAGANS +NONPAID +NONPAPAL +NONPAPIST +NONPAPISTS +NONPAR +NONPARALLEL +NONPARAMETRIC +NONPARASITIC +NONPAREIL +NONPAREILS +NONPARENT +NONPARENTS +NONPARITIES +NONPARITY +NONPARTICIPANT +NONPARTICIPANTS +NONPARTIES +NONPARTISAN +NONPARTISANSHIP +NONPARTY +NONPASSERINE +NONPASSIVE +NONPAST +NONPASTS +NONPATHOGENIC +NONPAYING +NONPAYMENT +NONPAYMENTS +NONPEAK +NONPERFORMANCE +NONPERFORMANCES +NONPERFORMER +NONPERFORMERS +NONPERFORMING +NONPERISHABLE +NONPERISHABLES +NONPERMISSIVE +NONPERSISTENT +NONPERSON +NONPERSONAL +NONPERSONS +NONPETROLEUM +NONPHILOSOPHER +NONPHILOSOPHERS +NONPHONEMIC +NONPHONETIC +NONPHOSPHATE +NONPHOTOGRAPHIC +NONPHYSICAL +NONPHYSICIAN +NONPHYSICIANS +NONPLANAR +NONPLASTIC +NONPLASTICS +NONPLAY +NONPLAYER +NONPLAYERS +NONPLAYING +NONPLAYS +NONPLIANT +NONPLUS +NONPLUSED +NONPLUSES +NONPLUSING +NONPLUSSED +NONPLUSSES +NONPLUSSING +NONPOETIC +NONPOINT +NONPOISONOUS +NONPOLAR +NONPOLARIZABLE +NONPOLICE +NONPOLITICAL +NONPOLITICALLY +NONPOLITICIAN +NONPOLITICIANS +NONPOLLUTING +NONPOOR +NONPOROUS +NONPOSSESSION +NONPOSSESSIONS +NONPOSTAL +NONPRACTICAL +NONPRACTICING +NONPREGNANT +NONPRESCRIPTION +NONPRINT +NONPROBLEM +NONPROBLEMS +NONPRODUCING +NONPRODUCTIVE +NONPROFESSIONAL +NONPROFESSORIAL +NONPROFIT +NONPROFITS +NONPROGRAM +NONPROGRAMMER +NONPROGRAMMERS +NONPROGRESSIVE +NONPROPRIETARY +NONPROS +NONPROSSED +NONPROSSES +NONPROSSING +NONPROTEIN +NONPROVEN +NONPSYCHIATRIC +NONPSYCHIATRIST +NONPSYCHOTIC +NONPUBLIC +NONPUNITIVE +NONPURPOSIVE +NONQUANTIFIABLE +NONQUANTITATIVE +NONQUOTA +NONRACIAL +NONRACIALLY +NONRADIOACTIVE +NONRAILROAD +NONRANDOM +NONRANDOMNESS +NONRANDOMNESSES +NONRATED +NONRATIONAL +NONREACTIVE +NONREACTOR +NONREACTORS +NONREADER +NONREADERS +NONREADING +NONREALISTIC +NONRECEIPT +NONRECEIPTS +NONRECIPROCAL +NONRECOGNITION +NONRECOGNITIONS +NONRECOMBINANT +NONRECOMBINANTS +NONRECOURSE +NONRECURRENT +NONRECURRING +NONRECYCLABLE +NONRECYCLABLES +NONREDUCING +NONREDUNDANT +NONREFILLABLE +NONREFLECTING +NONREFUNDABLE +NONREGULATED +NONREGULATION +NONRELATIVE +NONRELATIVES +NONRELATIVISTIC +NONRELEVANT +NONRELIGIOUS +NONRENEWABLE +NONRENEWAL +NONREPAYABLE +NONREPRODUCTIVE +NONRESIDENCE +NONRESIDENCES +NONRESIDENCIES +NONRESIDENCY +NONRESIDENT +NONRESIDENTIAL +NONRESIDENTS +NONRESISTANCE +NONRESISTANCES +NONRESISTANT +NONRESISTANTS +NONRESONANT +NONRESPONDENT +NONRESPONDENTS +NONRESPONDER +NONRESPONDERS +NONRESPONSE +NONRESPONSES +NONRESPONSIVE +NONRESTRICTED +NONRESTRICTIVE +NONRETRACTILE +NONRETROACTIVE +NONRETURNABLE +NONRETURNABLES +NONREUSABLE +NONREVERSIBLE +NONRHOTIC +NONRIGID +NONRIOTER +NONRIOTERS +NONRIOTING +NONRIVAL +NONRIVALS +NONROTATING +NONROUTINE +NONROYAL +NONRUBBER +NONRULING +NONRUMINANT +NONRUMINANTS +NONRURAL +NONSACRED +NONSALABLE +NONSALINE +NONSAPONIFIABLE +NONSCHEDULED +NONSCHOOL +NONSCIENCE +NONSCIENCES +NONSCIENTIFIC +NONSCIENTIST +NONSCIENTISTS +NONSEASONAL +NONSECRET +NONSECRETOR +NONSECRETORS +NONSECRETORY +NONSECRETS +NONSECTARIAN +NONSECURE +NONSEDIMENTABLE +NONSEGREGATED +NONSEGREGATION +NONSEGREGATIONS +NONSELECTED +NONSELECTIVE +NONSELF +NONSELVES +NONSENSATIONAL +NONSENSE +NONSENSES +NONSENSICAL +NONSENSICALLY +NONSENSICALNESS +NONSENSITIVE +NONSENSUOUS +NONSENTENCE +NONSENTENCES +NONSEPTATE +NONSEQUENTIAL +NONSERIAL +NONSERIALS +NONSERIOUS +NONSEXIST +NONSEXUAL +NONSHRINK +NONSHRINKABLE +NONSIGNER +NONSIGNERS +NONSIGNIFICANT +NONSIMULTANEOUS +NONSINKABLE +NONSKATER +NONSKATERS +NONSKED +NONSKEDS +NONSKELETAL +NONSKID +NONSKIER +NONSKIERS +NONSLIP +NONSMOKER +NONSMOKERS +NONSMOKING +NONSOCIAL +NONSOCIALIST +NONSOCIALISTS +NONSOLAR +NONSOLID +NONSOLIDS +NONSOLUTION +NONSOLUTIONS +NONSPATIAL +NONSPEAKER +NONSPEAKERS +NONSPEAKING +NONSPECIALIST +NONSPECIALISTS +NONSPECIFIC +NONSPECIFICALLY +NONSPECTACULAR +NONSPECULATIVE +NONSPEECH +NONSPHERICAL +NONSPORTING +NONSTANDARD +NONSTAPLE +NONSTAPLES +NONSTARTER +NONSTARTERS +NONSTATIC +NONSTATIONARY +NONSTATISTICAL +NONSTEADY +NONSTEROID +NONSTEROIDAL +NONSTEROIDS +NONSTICK +NONSTICKY +NONSTOP +NONSTOPS +NONSTORIES +NONSTORY +NONSTRATEGIC +NONSTRUCTURAL +NONSTRUCTURED +NONSTUDENT +NONSTUDENTS +NONSTYLE +NONSTYLES +NONSUBJECT +NONSUBJECTIVE +NONSUBJECTS +NONSUBSIDIZED +NONSUCCESS +NONSUCCESSES +NONSUCH +NONSUCHES +NONSUGAR +NONSUGARS +NONSUIT +NONSUITED +NONSUITING +NONSUITS +NONSUPERVISORY +NONSUPPORT +NONSUPPORTS +NONSURGICAL +NONSWIMMER +NONSWIMMERS +NONSYLLABIC +NONSYMBOLIC +NONSYMMETRIC +NONSYMMETRICAL +NONSYNCHRONOUS +NONSYSTEM +NONSYSTEMATIC +NONSYSTEMIC +NONSYSTEMS +NONTALKER +NONTALKERS +NONTARGET +NONTARIFF +NONTAX +NONTAXABLE +NONTAXES +NONTEACHING +NONTECHNICAL +NONTEMPORAL +NONTENURED +NONTERMINAL +NONTERMINALS +NONTERMINATING +NONTHEATRICAL +NONTHEIST +NONTHEISTIC +NONTHEISTS +NONTHEOLOGICAL +NONTHEORETICAL +NONTHERAPEUTIC +NONTHERMAL +NONTHINKING +NONTHREATENING +NONTIDAL +NONTITLE +NONTOBACCO +NONTONAL +NONTONIC +NONTOTALITARIAN +NONTOXIC +NONTRADITIONAL +NONTRAGIC +NONTRANSFERABLE +NONTREATMENT +NONTREATMENTS +NONTRIBAL +NONTRIVIAL +NONTROPICAL +NONTRUMP +NONTRUTH +NONTRUTHS +NONTURBULENT +NONTYPICAL +NONUNANIMOUS +NONUNIFORM +NONUNIFORMITIES +NONUNIFORMITY +NONUNION +NONUNIONIZED +NONUNIONS +NONUNIQUE +NONUNIQUENESS +NONUNIQUENESSES +NONUNIVERSAL +NONUNIVERSITY +NONUPLE +NONUPLES +NONURBAN +NONURGENT +NONUSABLE +NONUSE +NONUSER +NONUSERS +NONUSES +NONUSING +NONUTILITARIAN +NONUTILITIES +NONUTILITY +NONUTOPIAN +NONVACANT +NONVALID +NONVALIDITIES +NONVALIDITY +NONVANISHING +NONVASCULAR +NONVECTOR +NONVECTORS +NONVEGETARIAN +NONVEGETARIANS +NONVENOMOUS +NONVENOUS +NONVERBAL +NONVERBALLY +NONVESTED +NONVETERAN +NONVETERANS +NONVIABLE +NONVIEWER +NONVIEWERS +NONVINTAGE +NONVIOLENCE +NONVIOLENCES +NONVIOLENT +NONVIOLENTLY +NONVIRAL +NONVIRGIN +NONVIRGINS +NONVIRILE +NONVISCOUS +NONVISUAL +NONVITAL +NONVOCAL +NONVOCALS +NONVOCATIONAL +NONVOLATILE +NONVOLCANIC +NONVOLUNTARY +NONVOTER +NONVOTERS +NONVOTING +NONWAGE +NONWAR +NONWARS +NONWHITE +NONWHITES +NONWINGED +NONWINNING +NONWOODY +NONWOOL +NONWORD +NONWORDS +NONWORK +NONWORKER +NONWORKERS +NONWORKING +NONWOVEN +NONWOVENS +NONWRITER +NONWRITERS +NONYELLOWING +NONYL +NONYLS +NONZERO +NOO +NOODGE +NOODGED +NOODGES +NOODGING +NOODLE +NOODLED +NOODLES +NOODLING +NOOGIE +NOOGIES +NOOK +NOOKIE +NOOKIES +NOOKLIKE +NOOKS +NOOKY +NOON +NOONDAY +NOONDAYS +NOONING +NOONINGS +NOONS +NOONTIDE +NOONTIDES +NOONTIME +NOONTIMES +NOOSE +NOOSED +NOOSER +NOOSERS +NOOSES +NOOSING +NOOSPHERE +NOOSPHERES +NOOTROPIC +NOOTROPICS +NOPAL +NOPALES +NOPALITO +NOPALITOS +NOPALS +NOPE +NOPLACE +NOR +NORADRENALIN +NORADRENALINE +NORADRENALINES +NORADRENALINS +NORADRENERGIC +NORDIC +NOREPINEPHRINE +NOREPINEPHRINES +NORETHINDRONE +NORETHINDRONES +NORI +NORIA +NORIAS +NORIS +NORITE +NORITES +NORITIC +NORLAND +NORLANDS +NORM +NORMAL +NORMALCIES +NORMALCY +NORMALISE +NORMALISED +NORMALISES +NORMALISING +NORMALITIES +NORMALITY +NORMALIZABLE +NORMALIZATION +NORMALIZATIONS +NORMALIZE +NORMALIZED +NORMALIZER +NORMALIZERS +NORMALIZES +NORMALIZING +NORMALLY +NORMALS +NORMANDE +NORMATIVE +NORMATIVELY +NORMATIVENESS +NORMATIVENESSES +NORMED +NORMLESS +NORMOTENSIVE +NORMOTENSIVES +NORMOTHERMIA +NORMOTHERMIAS +NORMOTHERMIC +NORMS +NORTH +NORTHBOUND +NORTHEAST +NORTHEASTER +NORTHEASTERLY +NORTHEASTERN +NORTHEASTERS +NORTHEASTS +NORTHEASTWARD +NORTHEASTWARDS +NORTHER +NORTHERLIES +NORTHERLY +NORTHERN +NORTHERNMOST +NORTHERNS +NORTHERS +NORTHING +NORTHINGS +NORTHLAND +NORTHLANDS +NORTHMOST +NORTHS +NORTHWARD +NORTHWARDS +NORTHWEST +NORTHWESTER +NORTHWESTERLY +NORTHWESTERN +NORTHWESTERS +NORTHWESTS +NORTHWESTWARD +NORTHWESTWARDS +NORTRIPTYLINE +NORTRIPTYLINES +NOS +NOSE +NOSEBAG +NOSEBAGS +NOSEBAND +NOSEBANDS +NOSEBLEED +NOSEBLEEDS +NOSED +NOSEDIVE +NOSEDIVED +NOSEDIVES +NOSEDIVING +NOSEDOVE +NOSEGAY +NOSEGAYS +NOSEGUARD +NOSEGUARDS +NOSELESS +NOSELIKE +NOSEPIECE +NOSEPIECES +NOSES +NOSEWHEEL +NOSEWHEELS +NOSEY +NOSH +NOSHED +NOSHER +NOSHERS +NOSHES +NOSHING +NOSIER +NOSIEST +NOSILY +NOSINESS +NOSINESSES +NOSING +NOSINGS +NOSOCOMIAL +NOSOLOGIC +NOSOLOGICAL +NOSOLOGICALLY +NOSOLOGIES +NOSOLOGY +NOSTALGIA +NOSTALGIAS +NOSTALGIC +NOSTALGICALLY +NOSTALGICS +NOSTALGIST +NOSTALGISTS +NOSTOC +NOSTOCS +NOSTOLOGIES +NOSTOLOGY +NOSTRIL +NOSTRILS +NOSTRUM +NOSTRUMS +NOSY +NOT +NOTA +NOTABILIA +NOTABILITIES +NOTABILITY +NOTABLE +NOTABLENESS +NOTABLENESSES +NOTABLES +NOTABLY +NOTAL +NOTARIAL +NOTARIALLY +NOTARIES +NOTARIZATION +NOTARIZATIONS +NOTARIZE +NOTARIZED +NOTARIZES +NOTARIZING +NOTARY +NOTATE +NOTATED +NOTATES +NOTATING +NOTATION +NOTATIONAL +NOTATIONS +NOTCH +NOTCHBACK +NOTCHBACKS +NOTCHED +NOTCHER +NOTCHERS +NOTCHES +NOTCHING +NOTE +NOTEBOOK +NOTEBOOKS +NOTECARD +NOTECARDS +NOTECASE +NOTECASES +NOTED +NOTEDLY +NOTEDNESS +NOTEDNESSES +NOTELESS +NOTEPAD +NOTEPADS +NOTEPAPER +NOTEPAPERS +NOTER +NOTERS +NOTES +NOTEWORTHILY +NOTEWORTHINESS +NOTEWORTHY +NOTHER +NOTHING +NOTHINGNESS +NOTHINGNESSES +NOTHINGS +NOTICE +NOTICEABLE +NOTICEABLY +NOTICED +NOTICER +NOTICERS +NOTICES +NOTICING +NOTIFIABLE +NOTIFICATION +NOTIFICATIONS +NOTIFIED +NOTIFIER +NOTIFIERS +NOTIFIES +NOTIFY +NOTIFYING +NOTING +NOTION +NOTIONAL +NOTIONALITIES +NOTIONALITY +NOTIONALLY +NOTIONS +NOTOCHORD +NOTOCHORDAL +NOTOCHORDS +NOTORIETIES +NOTORIETY +NOTORIOUS +NOTORIOUSLY +NOTORNIS +NOTTURNI +NOTTURNO +NOTUM +NOTWITHSTANDING +NOUGAT +NOUGATS +NOUGHT +NOUGHTS +NOUMENA +NOUMENAL +NOUMENON +NOUN +NOUNAL +NOUNALLY +NOUNLESS +NOUNS +NOURISH +NOURISHED +NOURISHER +NOURISHERS +NOURISHES +NOURISHING +NOURISHMENT +NOURISHMENTS +NOUS +NOUSES +NOUVEAU +NOUVELLE +NOUVELLES +NOVA +NOVACULITE +NOVACULITES +NOVAE +NOVALIKE +NOVAS +NOVATION +NOVATIONS +NOVEL +NOVELETTE +NOVELETTES +NOVELETTISH +NOVELISE +NOVELISED +NOVELISES +NOVELISING +NOVELIST +NOVELISTIC +NOVELISTICALLY +NOVELISTS +NOVELIZATION +NOVELIZATIONS +NOVELIZE +NOVELIZED +NOVELIZER +NOVELIZERS +NOVELIZES +NOVELIZING +NOVELLA +NOVELLAS +NOVELLE +NOVELLY +NOVELS +NOVELTIES +NOVELTY +NOVEMDECILLION +NOVEMDECILLIONS +NOVENA +NOVENAE +NOVENAS +NOVERCAL +NOVICE +NOVICES +NOVICIATE +NOVICIATES +NOVITIATE +NOVITIATES +NOVOBIOCIN +NOVOBIOCINS +NOVOCAINE +NOVOCAINES +NOW +NOWADAYS +NOWAY +NOWAYS +NOWHERE +NOWHERES +NOWHITHER +NOWISE +NOWNESS +NOWNESSES +NOWS +NOWT +NOWTS +NOXIOUS +NOXIOUSLY +NOXIOUSNESS +NOXIOUSNESSES +NOYADE +NOYADES +NOZZLE +NOZZLES +NTH +NU +NUANCE +NUANCED +NUANCES +NUB +NUBBIER +NUBBIEST +NUBBIN +NUBBINESS +NUBBINESSES +NUBBINS +NUBBLE +NUBBLES +NUBBLIER +NUBBLIEST +NUBBLY +NUBBY +NUBIA +NUBIAS +NUBILE +NUBILITIES +NUBILITY +NUBILOSE +NUBILOUS +NUBS +NUBUCK +NUBUCKS +NUCELLAR +NUCELLI +NUCELLUS +NUCHA +NUCHAE +NUCHAL +NUCHALS +NUCLEAL +NUCLEAR +NUCLEASE +NUCLEASES +NUCLEATE +NUCLEATED +NUCLEATES +NUCLEATING +NUCLEATION +NUCLEATIONS +NUCLEATOR +NUCLEATORS +NUCLEI +NUCLEIN +NUCLEINIC +NUCLEINS +NUCLEOCAPSID +NUCLEOCAPSIDS +NUCLEOID +NUCLEOIDS +NUCLEOLAR +NUCLEOLE +NUCLEOLES +NUCLEOLI +NUCLEOLUS +NUCLEON +NUCLEONIC +NUCLEONICS +NUCLEONS +NUCLEOPHILE +NUCLEOPHILES +NUCLEOPHILIC +NUCLEOPHILICITY +NUCLEOPLASM +NUCLEOPLASMIC +NUCLEOPLASMS +NUCLEOPROTEIN +NUCLEOPROTEINS +NUCLEOSIDE +NUCLEOSIDES +NUCLEOSOMAL +NUCLEOSOME +NUCLEOSOMES +NUCLEOSYNTHESES +NUCLEOSYNTHESIS +NUCLEOSYNTHETIC +NUCLEOTIDASE +NUCLEOTIDASES +NUCLEOTIDE +NUCLEOTIDES +NUCLEUS +NUCLEUSES +NUCLIDE +NUCLIDES +NUCLIDIC +NUDE +NUDELY +NUDENESS +NUDENESSES +NUDER +NUDES +NUDEST +NUDGE +NUDGED +NUDGER +NUDGERS +NUDGES +NUDGING +NUDIBRANCH +NUDIBRANCHS +NUDICAUL +NUDIE +NUDIES +NUDISM +NUDISMS +NUDIST +NUDISTS +NUDITIES +NUDITY +NUDNICK +NUDNICKS +NUDNIK +NUDNIKS +NUDZH +NUDZHED +NUDZHES +NUDZHING +NUGATORY +NUGGET +NUGGETS +NUGGETY +NUISANCE +NUISANCES +NUKE +NUKED +NUKES +NUKING +NULL +NULLAH +NULLAHS +NULLED +NULLIFICATION +NULLIFICATIONS +NULLIFIED +NULLIFIER +NULLIFIERS +NULLIFIES +NULLIFY +NULLIFYING +NULLING +NULLIPARA +NULLIPARAE +NULLIPARAS +NULLIPAROUS +NULLIPORE +NULLIPORES +NULLITIES +NULLITY +NULLS +NUMB +NUMBAT +NUMBATS +NUMBED +NUMBER +NUMBERABLE +NUMBERED +NUMBERER +NUMBERERS +NUMBERING +NUMBERLESS +NUMBERS +NUMBEST +NUMBFISH +NUMBFISHES +NUMBING +NUMBINGLY +NUMBLES +NUMBLY +NUMBNESS +NUMBNESSES +NUMBS +NUMBSKULL +NUMBSKULLS +NUMCHUCK +NUMCHUCKS +NUMEN +NUMERABLE +NUMERABLY +NUMERACIES +NUMERACY +NUMERAL +NUMERALLY +NUMERALS +NUMERARY +NUMERATE +NUMERATED +NUMERATES +NUMERATING +NUMERATION +NUMERATIONS +NUMERATOR +NUMERATORS +NUMERIC +NUMERICAL +NUMERICALLY +NUMERICS +NUMEROLOGICAL +NUMEROLOGIES +NUMEROLOGIST +NUMEROLOGISTS +NUMEROLOGY +NUMEROUS +NUMEROUSLY +NUMEROUSNESS +NUMEROUSNESSES +NUMINA +NUMINOUS +NUMINOUSNESS +NUMINOUSNESSES +NUMISMATIC +NUMISMATICALLY +NUMISMATICS +NUMISMATIST +NUMISMATISTS +NUMMARY +NUMMULAR +NUMMULITE +NUMMULITES +NUMSKULL +NUMSKULLS +NUN +NUNATAK +NUNATAKS +NUNCHAKU +NUNCHAKUS +NUNCIATURE +NUNCIATURES +NUNCIO +NUNCIOS +NUNCLE +NUNCLES +NUNCUPATIVE +NUNLIKE +NUNNATION +NUNNATIONS +NUNNERIES +NUNNERY +NUNNISH +NUNS +NUPTIAL +NUPTIALITIES +NUPTIALITY +NUPTIALLY +NUPTIALS +NURD +NURDS +NURL +NURLED +NURLING +NURLS +NURSE +NURSED +NURSEMAID +NURSEMAIDS +NURSER +NURSERIES +NURSERS +NURSERY +NURSERYMAN +NURSERYMEN +NURSES +NURSING +NURSINGS +NURSLING +NURSLINGS +NURTURAL +NURTURANCE +NURTURANCES +NURTURANT +NURTURE +NURTURED +NURTURER +NURTURERS +NURTURES +NURTURING +NUS +NUT +NUTANT +NUTATE +NUTATED +NUTATES +NUTATING +NUTATION +NUTATIONAL +NUTATIONS +NUTBROWN +NUTCASE +NUTCASES +NUTCRACKER +NUTCRACKERS +NUTGALL +NUTGALLS +NUTGRASS +NUTGRASSES +NUTHATCH +NUTHATCHES +NUTHOUSE +NUTHOUSES +NUTLET +NUTLETS +NUTLIKE +NUTMEAT +NUTMEATS +NUTMEG +NUTMEGS +NUTPICK +NUTPICKS +NUTRACEUTICAL +NUTRACEUTICALS +NUTRIA +NUTRIAS +NUTRIENT +NUTRIENTS +NUTRIMENT +NUTRIMENTS +NUTRITION +NUTRITIONAL +NUTRITIONALLY +NUTRITIONIST +NUTRITIONISTS +NUTRITIONS +NUTRITIOUS +NUTRITIOUSLY +NUTRITIOUSNESS +NUTRITIVE +NUTRITIVELY +NUTRITIVES +NUTS +NUTSEDGE +NUTSEDGES +NUTSHELL +NUTSHELLS +NUTSIER +NUTSIEST +NUTSY +NUTTED +NUTTER +NUTTERS +NUTTIER +NUTTIEST +NUTTILY +NUTTINESS +NUTTINESSES +NUTTING +NUTTINGS +NUTTY +NUTWOOD +NUTWOODS +NUZZLE +NUZZLED +NUZZLER +NUZZLERS +NUZZLES +NUZZLING +NYALA +NYALAS +NYCTALOPIA +NYCTALOPIAS +NYLGHAI +NYLGHAIS +NYLGHAU +NYLGHAUS +NYLON +NYLONS +NYMPH +NYMPHA +NYMPHAE +NYMPHAL +NYMPHALID +NYMPHALIDS +NYMPHEAN +NYMPHET +NYMPHETIC +NYMPHETS +NYMPHETTE +NYMPHETTES +NYMPHO +NYMPHOLEPSIES +NYMPHOLEPSY +NYMPHOLEPT +NYMPHOLEPTIC +NYMPHOLEPTS +NYMPHOMANIA +NYMPHOMANIAC +NYMPHOMANIACAL +NYMPHOMANIACS +NYMPHOMANIAS +NYMPHOS +NYMPHS +NYSTAGMIC +NYSTAGMUS +NYSTAGMUSES +NYSTATIN +NYSTATINS +OAF +OAFISH +OAFISHLY +OAFISHNESS +OAFISHNESSES +OAFS +OAK +OAKEN +OAKIER +OAKIEST +OAKLIKE +OAKMOSS +OAKMOSSES +OAKS +OAKUM +OAKUMS +OAKY +OAR +OARED +OARFISH +OARFISHES +OARING +OARLESS +OARLIKE +OARLOCK +OARLOCKS +OARS +OARSMAN +OARSMANSHIP +OARSMANSHIPS +OARSMEN +OARSWOMAN +OARSWOMEN +OASES +OASIS +OAST +OASTHOUSE +OASTHOUSES +OASTS +OAT +OATCAKE +OATCAKES +OATEN +OATER +OATERS +OATH +OATHS +OATLIKE +OATMEAL +OATMEALS +OATS +OAVES +OBA +OBAS +OBBLIGATI +OBBLIGATO +OBBLIGATOS +OBCONIC +OBCONICAL +OBCORDATE +OBDURACIES +OBDURACY +OBDURATE +OBDURATELY +OBDURATENESS +OBDURATENESSES +OBE +OBEAH +OBEAHISM +OBEAHISMS +OBEAHS +OBEDIENCE +OBEDIENCES +OBEDIENT +OBEDIENTLY +OBEISANCE +OBEISANCES +OBEISANT +OBEISANTLY +OBELI +OBELIA +OBELIAS +OBELISCAL +OBELISE +OBELISED +OBELISES +OBELISING +OBELISK +OBELISKS +OBELISM +OBELISMS +OBELIZE +OBELIZED +OBELIZES +OBELIZING +OBELUS +OBENTO +OBENTOS +OBES +OBESE +OBESELY +OBESENESS +OBESENESSES +OBESITIES +OBESITY +OBEY +OBEYABLE +OBEYED +OBEYER +OBEYERS +OBEYING +OBEYS +OBFUSCATE +OBFUSCATED +OBFUSCATES +OBFUSCATING +OBFUSCATION +OBFUSCATIONS +OBFUSCATORY +OBI +OBIA +OBIAS +OBIISM +OBIISMS +OBIS +OBIT +OBITS +OBITUARIES +OBITUARIST +OBITUARISTS +OBITUARY +OBJECT +OBJECTED +OBJECTIFICATION +OBJECTIFIED +OBJECTIFIES +OBJECTIFY +OBJECTIFYING +OBJECTING +OBJECTION +OBJECTIONABLE +OBJECTIONABLY +OBJECTIONS +OBJECTIVE +OBJECTIVELY +OBJECTIVENESS +OBJECTIVENESSES +OBJECTIVES +OBJECTIVISM +OBJECTIVISMS +OBJECTIVIST +OBJECTIVISTIC +OBJECTIVISTS +OBJECTIVITIES +OBJECTIVITY +OBJECTLESS +OBJECTLESSNESS +OBJECTOR +OBJECTORS +OBJECTS +OBJET +OBJETS +OBJURGATE +OBJURGATED +OBJURGATES +OBJURGATING +OBJURGATION +OBJURGATIONS +OBJURGATORY +OBLANCEOLATE +OBLAST +OBLASTI +OBLASTS +OBLATE +OBLATELY +OBLATENESS +OBLATENESSES +OBLATES +OBLATION +OBLATIONS +OBLATORY +OBLIGABLE +OBLIGATE +OBLIGATED +OBLIGATELY +OBLIGATES +OBLIGATI +OBLIGATING +OBLIGATION +OBLIGATIONS +OBLIGATO +OBLIGATOR +OBLIGATORILY +OBLIGATORS +OBLIGATORY +OBLIGATOS +OBLIGE +OBLIGED +OBLIGEE +OBLIGEES +OBLIGER +OBLIGERS +OBLIGES +OBLIGING +OBLIGINGLY +OBLIGINGNESS +OBLIGINGNESSES +OBLIGOR +OBLIGORS +OBLIQUE +OBLIQUED +OBLIQUELY +OBLIQUENESS +OBLIQUENESSES +OBLIQUES +OBLIQUING +OBLIQUITIES +OBLIQUITY +OBLITERATE +OBLITERATED +OBLITERATES +OBLITERATING +OBLITERATION +OBLITERATIONS +OBLITERATIVE +OBLITERATOR +OBLITERATORS +OBLIVION +OBLIVIONS +OBLIVIOUS +OBLIVIOUSLY +OBLIVIOUSNESS +OBLIVIOUSNESSES +OBLONG +OBLONGLY +OBLONGS +OBLOQUIAL +OBLOQUIES +OBLOQUY +OBNOXIOUS +OBNOXIOUSLY +OBNOXIOUSNESS +OBNOXIOUSNESSES +OBNUBILATE +OBNUBILATED +OBNUBILATES +OBNUBILATING +OBNUBILATION +OBNUBILATIONS +OBOE +OBOES +OBOIST +OBOISTS +OBOL +OBOLE +OBOLES +OBOLI +OBOLS +OBOLUS +OBOVATE +OBOVOID +OBSCENE +OBSCENELY +OBSCENER +OBSCENEST +OBSCENITIES +OBSCENITY +OBSCURANT +OBSCURANTIC +OBSCURANTISM +OBSCURANTISMS +OBSCURANTIST +OBSCURANTISTS +OBSCURANTS +OBSCURATION +OBSCURATIONS +OBSCURE +OBSCURED +OBSCURELY +OBSCURENESS +OBSCURENESSES +OBSCURER +OBSCURES +OBSCUREST +OBSCURING +OBSCURITIES +OBSCURITY +OBSECRATE +OBSECRATED +OBSECRATES +OBSECRATING +OBSEQUIES +OBSEQUIOUS +OBSEQUIOUSLY +OBSEQUIOUSNESS +OBSEQUY +OBSERVABILITIES +OBSERVABILITY +OBSERVABLE +OBSERVABLES +OBSERVABLY +OBSERVANCE +OBSERVANCES +OBSERVANT +OBSERVANTLY +OBSERVANTS +OBSERVATION +OBSERVATIONAL +OBSERVATIONALLY +OBSERVATIONS +OBSERVATORIES +OBSERVATORY +OBSERVE +OBSERVED +OBSERVER +OBSERVERS +OBSERVES +OBSERVING +OBSERVINGLY +OBSESS +OBSESSED +OBSESSES +OBSESSING +OBSESSION +OBSESSIONAL +OBSESSIONALLY +OBSESSIONS +OBSESSIVE +OBSESSIVELY +OBSESSIVENESS +OBSESSIVENESSES +OBSESSIVES +OBSESSOR +OBSESSORS +OBSIDIAN +OBSIDIANS +OBSOLESCE +OBSOLESCED +OBSOLESCENCE +OBSOLESCENCES +OBSOLESCENT +OBSOLESCENTLY +OBSOLESCES +OBSOLESCING +OBSOLETE +OBSOLETED +OBSOLETELY +OBSOLETENESS +OBSOLETENESSES +OBSOLETES +OBSOLETING +OBSTACLE +OBSTACLES +OBSTETRIC +OBSTETRICAL +OBSTETRICALLY +OBSTETRICIAN +OBSTETRICIANS +OBSTETRICS +OBSTINACIES +OBSTINACY +OBSTINATE +OBSTINATELY +OBSTINATENESS +OBSTINATENESSES +OBSTREPEROUS +OBSTREPEROUSLY +OBSTRUCT +OBSTRUCTED +OBSTRUCTING +OBSTRUCTION +OBSTRUCTIONISM +OBSTRUCTIONISMS +OBSTRUCTIONIST +OBSTRUCTIONISTS +OBSTRUCTIONS +OBSTRUCTIVE +OBSTRUCTIVENESS +OBSTRUCTIVES +OBSTRUCTOR +OBSTRUCTORS +OBSTRUCTS +OBSTRUENT +OBSTRUENTS +OBTAIN +OBTAINABILITIES +OBTAINABILITY +OBTAINABLE +OBTAINED +OBTAINER +OBTAINERS +OBTAINING +OBTAINMENT +OBTAINMENTS +OBTAINS +OBTECT +OBTECTED +OBTEST +OBTESTED +OBTESTING +OBTESTS +OBTRUDE +OBTRUDED +OBTRUDER +OBTRUDERS +OBTRUDES +OBTRUDING +OBTRUSION +OBTRUSIONS +OBTRUSIVE +OBTRUSIVELY +OBTRUSIVENESS +OBTRUSIVENESSES +OBTUND +OBTUNDED +OBTUNDENT +OBTUNDENTS +OBTUNDING +OBTUNDITIES +OBTUNDITY +OBTUNDS +OBTURATE +OBTURATED +OBTURATES +OBTURATING +OBTURATION +OBTURATIONS +OBTURATOR +OBTURATORS +OBTUSE +OBTUSELY +OBTUSENESS +OBTUSENESSES +OBTUSER +OBTUSEST +OBTUSITIES +OBTUSITY +OBVERSE +OBVERSELY +OBVERSES +OBVERSION +OBVERSIONS +OBVERT +OBVERTED +OBVERTING +OBVERTS +OBVIABLE +OBVIATE +OBVIATED +OBVIATES +OBVIATING +OBVIATION +OBVIATIONS +OBVIATOR +OBVIATORS +OBVIOUS +OBVIOUSLY +OBVIOUSNESS +OBVIOUSNESSES +OBVOLUTE +OCA +OCARINA +OCARINAS +OCAS +OCCASION +OCCASIONAL +OCCASIONALLY +OCCASIONED +OCCASIONING +OCCASIONS +OCCIDENT +OCCIDENTAL +OCCIDENTALIZE +OCCIDENTALIZED +OCCIDENTALIZES +OCCIDENTALIZING +OCCIDENTALLY +OCCIDENTS +OCCIPITA +OCCIPITAL +OCCIPITALLY +OCCIPITALS +OCCIPUT +OCCIPUTS +OCCLUDE +OCCLUDED +OCCLUDENT +OCCLUDES +OCCLUDING +OCCLUSAL +OCCLUSION +OCCLUSIONS +OCCLUSIVE +OCCLUSIVES +OCCULT +OCCULTATION +OCCULTATIONS +OCCULTED +OCCULTER +OCCULTERS +OCCULTING +OCCULTISM +OCCULTISMS +OCCULTIST +OCCULTISTS +OCCULTLY +OCCULTS +OCCUPANCIES +OCCUPANCY +OCCUPANT +OCCUPANTS +OCCUPATION +OCCUPATIONAL +OCCUPATIONALLY +OCCUPATIONS +OCCUPIED +OCCUPIER +OCCUPIERS +OCCUPIES +OCCUPY +OCCUPYING +OCCUR +OCCURRED +OCCURRENCE +OCCURRENCES +OCCURRENT +OCCURRENTS +OCCURRING +OCCURS +OCEAN +OCEANARIA +OCEANARIUM +OCEANARIUMS +OCEANAUT +OCEANAUTS +OCEANFRONT +OCEANFRONTS +OCEANGOING +OCEANIC +OCEANOGRAPHER +OCEANOGRAPHERS +OCEANOGRAPHIC +OCEANOGRAPHICAL +OCEANOGRAPHIES +OCEANOGRAPHY +OCEANOLOGIES +OCEANOLOGIST +OCEANOLOGISTS +OCEANOLOGY +OCEANS +OCELLAR +OCELLATE +OCELLATED +OCELLI +OCELLUS +OCELOID +OCELOT +OCELOTS +OCHER +OCHERED +OCHERING +OCHEROUS +OCHERS +OCHERY +OCHLOCRACIES +OCHLOCRACY +OCHLOCRAT +OCHLOCRATIC +OCHLOCRATICAL +OCHLOCRATS +OCHONE +OCHRE +OCHREA +OCHREAE +OCHRED +OCHREOUS +OCHRES +OCHRING +OCHROID +OCHROUS +OCHRY +OCICAT +OCICATS +OCKER +OCKERS +OCOTILLO +OCOTILLOS +OCREA +OCREAE +OCREATE +OCTACHORD +OCTACHORDS +OCTAD +OCTADIC +OCTADS +OCTAGON +OCTAGONAL +OCTAGONALLY +OCTAGONS +OCTAHEDRA +OCTAHEDRAL +OCTAHEDRALLY +OCTAHEDRON +OCTAHEDRONS +OCTAL +OCTAMETER +OCTAMETERS +OCTAN +OCTANE +OCTANES +OCTANGLE +OCTANGLES +OCTANOL +OCTANOLS +OCTANS +OCTANT +OCTANTAL +OCTANTS +OCTAPEPTIDE +OCTAPEPTIDES +OCTARCHIES +OCTARCHY +OCTAVAL +OCTAVE +OCTAVES +OCTAVO +OCTAVOS +OCTENNIAL +OCTET +OCTETS +OCTETTE +OCTETTES +OCTILLION +OCTILLIONS +OCTODECILLION +OCTODECILLIONS +OCTOGENARIAN +OCTOGENARIANS +OCTONARIES +OCTONARY +OCTOPI +OCTOPLOID +OCTOPLOIDS +OCTOPOD +OCTOPODAN +OCTOPODANS +OCTOPODES +OCTOPODS +OCTOPUS +OCTOPUSES +OCTOROON +OCTOROONS +OCTOSYLLABIC +OCTOSYLLABICS +OCTOSYLLABLE +OCTOSYLLABLES +OCTOTHORP +OCTOTHORPS +OCTROI +OCTROIS +OCTUPLE +OCTUPLED +OCTUPLES +OCTUPLET +OCTUPLETS +OCTUPLEX +OCTUPLING +OCTUPLY +OCTYL +OCTYLS +OCULAR +OCULARIST +OCULARISTS +OCULARLY +OCULARS +OCULI +OCULIST +OCULISTS +OCULOMOTOR +OCULUS +OD +ODA +ODAH +ODAHS +ODALISK +ODALISKS +ODALISQUE +ODALISQUES +ODAS +ODD +ODDBALL +ODDBALLS +ODDER +ODDEST +ODDISH +ODDITIES +ODDITY +ODDLY +ODDMENT +ODDMENTS +ODDNESS +ODDNESSES +ODDS +ODDSMAKER +ODDSMAKERS +ODE +ODEA +ODEON +ODEONS +ODES +ODEUM +ODEUMS +ODIC +ODIFEROUS +ODIOUS +ODIOUSLY +ODIOUSNESS +ODIOUSNESSES +ODIST +ODISTS +ODIUM +ODIUMS +ODOGRAPH +ODOGRAPHS +ODOMETER +ODOMETERS +ODOMETRIES +ODOMETRY +ODONATE +ODONATES +ODONTOBLAST +ODONTOBLASTIC +ODONTOBLASTS +ODONTOGLOSSUM +ODONTOGLOSSUMS +ODONTOID +ODONTOIDS +ODOR +ODORANT +ODORANTS +ODORED +ODORFUL +ODORIFEROUS +ODORIFEROUSLY +ODORIFEROUSNESS +ODORIZE +ODORIZED +ODORIZES +ODORIZING +ODORLESS +ODOROUS +ODOROUSLY +ODOROUSNESS +ODOROUSNESSES +ODORS +ODOUR +ODOURFUL +ODOURS +ODS +ODYL +ODYLE +ODYLES +ODYLS +ODYSSEY +ODYSSEYS +OE +OECOLOGIES +OECOLOGY +OECUMENICAL +OEDEMA +OEDEMAS +OEDEMATA +OEDIPAL +OEDIPALLY +OEDIPEAN +OEILLADE +OEILLADES +OENOLOGIES +OENOLOGY +OENOMEL +OENOMELS +OENOPHILE +OENOPHILES +OERSTED +OERSTEDS +OES +OESOPHAGI +OESOPHAGUS +OESTRIN +OESTRINS +OESTRIOL +OESTRIOLS +OESTROGEN +OESTROGENS +OESTRONE +OESTRONES +OESTROUS +OESTRUM +OESTRUMS +OESTRUS +OESTRUSES +OEUVRE +OEUVRES +OF +OFAY +OFAYS +OFF +OFFAL +OFFALS +OFFBEAT +OFFBEATS +OFFCAST +OFFCASTS +OFFCUT +OFFCUTS +OFFED +OFFENCE +OFFENCES +OFFEND +OFFENDED +OFFENDER +OFFENDERS +OFFENDING +OFFENDS +OFFENSE +OFFENSELESS +OFFENSES +OFFENSIVE +OFFENSIVELY +OFFENSIVENESS +OFFENSIVENESSES +OFFENSIVES +OFFER +OFFERED +OFFERER +OFFERERS +OFFERING +OFFERINGS +OFFEROR +OFFERORS +OFFERS +OFFERTORIES +OFFERTORY +OFFHAND +OFFHANDED +OFFHANDEDLY +OFFHANDEDNESS +OFFHANDEDNESSES +OFFICE +OFFICEHOLDER +OFFICEHOLDERS +OFFICER +OFFICERED +OFFICERING +OFFICERS +OFFICES +OFFICIAL +OFFICIALDOM +OFFICIALDOMS +OFFICIALESE +OFFICIALESES +OFFICIALISM +OFFICIALISMS +OFFICIALLY +OFFICIALS +OFFICIANT +OFFICIANTS +OFFICIARIES +OFFICIARY +OFFICIATE +OFFICIATED +OFFICIATES +OFFICIATING +OFFICIATION +OFFICIATIONS +OFFICINAL +OFFICINALS +OFFICIOUS +OFFICIOUSLY +OFFICIOUSNESS +OFFICIOUSNESSES +OFFING +OFFINGS +OFFISH +OFFISHLY +OFFISHNESS +OFFISHNESSES +OFFKEY +OFFLINE +OFFLOAD +OFFLOADED +OFFLOADING +OFFLOADS +OFFPRINT +OFFPRINTED +OFFPRINTING +OFFPRINTS +OFFRAMP +OFFRAMPS +OFFS +OFFSCOURING +OFFSCOURINGS +OFFSCREEN +OFFSET +OFFSETS +OFFSETTING +OFFSHOOT +OFFSHOOTS +OFFSHORE +OFFSHORES +OFFSIDE +OFFSIDES +OFFSPRING +OFFSPRINGS +OFFSTAGE +OFFSTAGES +OFFTRACK +OFT +OFTEN +OFTENER +OFTENEST +OFTENTIMES +OFTER +OFTEST +OFTTIMES +OGAM +OGAMS +OGDOAD +OGDOADS +OGEE +OGEES +OGHAM +OGHAMIC +OGHAMIST +OGHAMISTS +OGHAMS +OGIVAL +OGIVE +OGIVES +OGLE +OGLED +OGLER +OGLERS +OGLES +OGLING +OGRE +OGREISH +OGREISHLY +OGREISM +OGREISMS +OGRES +OGRESS +OGRESSES +OGRISH +OGRISHLY +OGRISM +OGRISMS +OH +OHED +OHIA +OHIAS +OHING +OHM +OHMAGE +OHMAGES +OHMIC +OHMICALLY +OHMMETER +OHMMETERS +OHMS +OHO +OHS +OI +OIDIA +OIDIOID +OIDIUM +OIL +OILBIRD +OILBIRDS +OILCAMP +OILCAMPS +OILCAN +OILCANS +OILCLOTH +OILCLOTHS +OILCUP +OILCUPS +OILED +OILER +OILERS +OILHOLE +OILHOLES +OILIER +OILIEST +OILILY +OILINESS +OILINESSES +OILING +OILMAN +OILMEN +OILPAPER +OILPAPERS +OILPROOF +OILS +OILSEED +OILSEEDS +OILSKIN +OILSKINS +OILSTONE +OILSTONES +OILTIGHT +OILWAY +OILWAYS +OILY +OINK +OINKED +OINKING +OINKS +OINOLOGIES +OINOLOGY +OINOMEL +OINOMELS +OINTMENT +OINTMENTS +OITICICA +OITICICAS +OKA +OKAPI +OKAPIS +OKAS +OKAY +OKAYED +OKAYING +OKAYS +OKE +OKEH +OKEHS +OKES +OKEYDOKE +OKEYDOKEY +OKRA +OKRAS +OLD +OLDEN +OLDER +OLDEST +OLDFANGLED +OLDIE +OLDIES +OLDISH +OLDNESS +OLDNESSES +OLDS +OLDSQUAW +OLDSQUAWS +OLDSTER +OLDSTERS +OLDSTYLE +OLDSTYLES +OLDWIFE +OLDWIVES +OLDY +OLE +OLEA +OLEAGINOUS +OLEAGINOUSLY +OLEAGINOUSNESS +OLEANDER +OLEANDERS +OLEANDOMYCIN +OLEANDOMYCINS +OLEASTER +OLEASTERS +OLEATE +OLEATES +OLECRANAL +OLECRANON +OLECRANONS +OLEFIN +OLEFINE +OLEFINES +OLEFINIC +OLEFINS +OLEIC +OLEIN +OLEINE +OLEINES +OLEINS +OLEO +OLEOGRAPH +OLEOGRAPHS +OLEOMARGARINE +OLEOMARGARINES +OLEORESIN +OLEORESINOUS +OLEORESINS +OLEOS +OLES +OLESTRA +OLESTRAS +OLEUM +OLEUMS +OLFACTION +OLFACTIONS +OLFACTIVE +OLFACTOMETER +OLFACTOMETERS +OLFACTORIES +OLFACTORY +OLIBANUM +OLIBANUMS +OLICOOK +OLICOOKS +OLIGARCH +OLIGARCHIC +OLIGARCHICAL +OLIGARCHIES +OLIGARCHS +OLIGARCHY +OLIGOCENE +OLIGOCHAETE +OLIGOCHAETES +OLIGOCLASE +OLIGOCLASES +OLIGODENDROCYTE +OLIGODENDROGLIA +OLIGOGENE +OLIGOGENES +OLIGOMER +OLIGOMERIC +OLIGOMERIZATION +OLIGOMERS +OLIGONUCLEOTIDE +OLIGOPHAGIES +OLIGOPHAGOUS +OLIGOPHAGY +OLIGOPOLIES +OLIGOPOLISTIC +OLIGOPOLY +OLIGOPSONIES +OLIGOPSONISTIC +OLIGOPSONY +OLIGOSACCHARIDE +OLIGOTROPHIC +OLIGURIA +OLIGURIAS +OLINGO +OLINGOS +OLIO +OLIOS +OLIVACEOUS +OLIVARY +OLIVE +OLIVENITE +OLIVENITES +OLIVES +OLIVINE +OLIVINES +OLIVINIC +OLIVINITIC +OLLA +OLLAS +OLOGIES +OLOGIST +OLOGISTS +OLOGY +OLOLIUQUI +OLOLIUQUIS +OLOROSO +OLOROSOS +OLYMPIAD +OLYMPIADS +OM +OMASA +OMASUM +OMBER +OMBERS +OMBRE +OMBRES +OMBUDSMAN +OMBUDSMANSHIP +OMBUDSMANSHIPS +OMBUDSMEN +OMEGA +OMEGAS +OMELET +OMELETS +OMELETTE +OMELETTES +OMEN +OMENED +OMENING +OMENS +OMENTA +OMENTAL +OMENTUM +OMENTUMS +OMER +OMERS +OMICRON +OMICRONS +OMIKRON +OMIKRONS +OMINOUS +OMINOUSLY +OMINOUSNESS +OMINOUSNESSES +OMISSIBLE +OMISSION +OMISSIONS +OMISSIVE +OMIT +OMITS +OMITTED +OMITTER +OMITTERS +OMITTING +OMMATIDIA +OMMATIDIAL +OMMATIDIUM +OMNIARCH +OMNIARCHS +OMNIBUS +OMNIBUSES +OMNIBUSSES +OMNICOMPETENCE +OMNICOMPETENCES +OMNICOMPETENT +OMNIDIRECTIONAL +OMNIFARIOUS +OMNIFIC +OMNIFICENT +OMNIFORM +OMNIMODE +OMNIPOTENCE +OMNIPOTENCES +OMNIPOTENT +OMNIPOTENTLY +OMNIPOTENTS +OMNIPRESENCE +OMNIPRESENCES +OMNIPRESENT +OMNIRANGE +OMNIRANGES +OMNISCIENCE +OMNISCIENCES +OMNISCIENT +OMNISCIENTLY +OMNIVORA +OMNIVORE +OMNIVORES +OMNIVOROUS +OMNIVOROUSLY +OMOPHAGIA +OMOPHAGIAS +OMOPHAGIC +OMOPHAGIES +OMOPHAGY +OMPHALI +OMPHALOS +OMPHALOSKEPSES +OMPHALOSKEPSIS +OMS +ON +ONAGER +ONAGERS +ONAGRI +ONANISM +ONANISMS +ONANIST +ONANISTIC +ONANISTS +ONBOARD +ONCE +ONCET +ONCHOCERCIASES +ONCHOCERCIASIS +ONCIDIUM +ONCIDIUMS +ONCOGENE +ONCOGENES +ONCOGENESES +ONCOGENESIS +ONCOGENIC +ONCOGENICITIES +ONCOGENICITY +ONCOLOGIC +ONCOLOGICAL +ONCOLOGIES +ONCOLOGIST +ONCOLOGISTS +ONCOLOGY +ONCOMING +ONCOMINGS +ONCORNAVIRUS +ONCORNAVIRUSES +ONCOVIRUS +ONCOVIRUSES +ONDOGRAM +ONDOGRAMS +ONE +ONEFOLD +ONEIRIC +ONEIRICALLY +ONEIROMANCIES +ONEIROMANCY +ONENESS +ONENESSES +ONERIER +ONERIEST +ONEROUS +ONEROUSLY +ONEROUSNESS +ONEROUSNESSES +ONERY +ONES +ONESELF +ONETIME +ONGOING +ONGOINGNESS +ONGOINGNESSES +ONION +ONIONS +ONIONSKIN +ONIONSKINS +ONIONY +ONIUM +ONLAY +ONLAYS +ONLINE +ONLOAD +ONLOADED +ONLOADING +ONLOADS +ONLOOKER +ONLOOKERS +ONLOOKING +ONLY +ONO +ONOMASTIC +ONOMASTICALLY +ONOMASTICIAN +ONOMASTICIANS +ONOMASTICS +ONOMATOLOGIES +ONOMATOLOGIST +ONOMATOLOGISTS +ONOMATOLOGY +ONOMATOPOEIA +ONOMATOPOEIAS +ONOMATOPOEIC +ONOMATOPOETIC +ONOS +ONRUSH +ONRUSHES +ONRUSHING +ONS +ONSCREEN +ONSET +ONSETS +ONSHORE +ONSIDE +ONSLAUGHT +ONSLAUGHTS +ONSTAGE +ONSTREAM +ONTIC +ONTICALLY +ONTO +ONTOGENESES +ONTOGENESIS +ONTOGENETIC +ONTOGENETICALLY +ONTOGENIC +ONTOGENIES +ONTOGENY +ONTOLOGIC +ONTOLOGICAL +ONTOLOGICALLY +ONTOLOGIES +ONTOLOGIST +ONTOLOGISTS +ONTOLOGY +ONUS +ONUSES +ONWARD +ONWARDS +ONYCHOPHORAN +ONYCHOPHORANS +ONYX +ONYXES +OOCYST +OOCYSTS +OOCYTE +OOCYTES +OODLES +OODLINS +OOGAMETE +OOGAMETES +OOGAMIES +OOGAMOUS +OOGAMY +OOGENESES +OOGENESIS +OOGENETIC +OOGENIES +OOGENY +OOGONIA +OOGONIAL +OOGONIUM +OOGONIUMS +OOH +OOHED +OOHING +OOHS +OOLACHAN +OOLACHANS +OOLITE +OOLITES +OOLITH +OOLITHS +OOLITIC +OOLOGIC +OOLOGICAL +OOLOGIES +OOLOGIST +OOLOGISTS +OOLOGY +OOLONG +OOLONGS +OOMIAC +OOMIACK +OOMIACKS +OOMIACS +OOMIAK +OOMIAKS +OOMPAH +OOMPAHED +OOMPAHING +OOMPAHS +OOMPH +OOMPHS +OOPHORECTOMIES +OOPHORECTOMY +OOPHYTE +OOPHYTES +OOPHYTIC +OOPS +OORALI +OORALIS +OORIE +OOSPERM +OOSPERMS +OOSPHERE +OOSPHERES +OOSPORE +OOSPORES +OOSPORIC +OOT +OOTHECA +OOTHECAE +OOTHECAL +OOTID +OOTIDS +OOTS +OOZE +OOZED +OOZES +OOZIER +OOZIEST +OOZILY +OOZINESS +OOZINESSES +OOZING +OOZY +OP +OPACIFIED +OPACIFIER +OPACIFIERS +OPACIFIES +OPACIFY +OPACIFYING +OPACITIES +OPACITY +OPAH +OPAHS +OPAL +OPALESCE +OPALESCED +OPALESCENCE +OPALESCENCES +OPALESCENT +OPALESCENTLY +OPALESCES +OPALESCING +OPALINE +OPALINES +OPALS +OPAQUE +OPAQUED +OPAQUELY +OPAQUENESS +OPAQUENESSES +OPAQUER +OPAQUES +OPAQUEST +OPAQUING +OPE +OPED +OPEN +OPENABILITIES +OPENABILITY +OPENABLE +OPENCAST +OPENED +OPENER +OPENERS +OPENEST +OPENHANDED +OPENHANDEDLY +OPENHANDEDNESS +OPENHEARTED +OPENHEARTEDLY +OPENHEARTEDNESS +OPENING +OPENINGS +OPENLY +OPENMOUTHED +OPENMOUTHEDLY +OPENMOUTHEDNESS +OPENNESS +OPENNESSES +OPENS +OPENWORK +OPENWORKS +OPERA +OPERABILITIES +OPERABILITY +OPERABLE +OPERABLY +OPERAGOER +OPERAGOERS +OPERAGOING +OPERAGOINGS +OPERAND +OPERANDS +OPERANT +OPERANTLY +OPERANTS +OPERAS +OPERATE +OPERATED +OPERATES +OPERATIC +OPERATICALLY +OPERATICS +OPERATING +OPERATION +OPERATIONAL +OPERATIONALISM +OPERATIONALISMS +OPERATIONALIST +OPERATIONALISTS +OPERATIONALLY +OPERATIONISM +OPERATIONISMS +OPERATIONIST +OPERATIONISTS +OPERATIONS +OPERATIVE +OPERATIVELY +OPERATIVENESS +OPERATIVENESSES +OPERATIVES +OPERATOR +OPERATORLESS +OPERATORS +OPERCELE +OPERCELES +OPERCULA +OPERCULAR +OPERCULARS +OPERCULATE +OPERCULATED +OPERCULE +OPERCULES +OPERCULUM +OPERCULUMS +OPERETTA +OPERETTAS +OPERETTIST +OPERETTISTS +OPERON +OPERONS +OPEROSE +OPEROSELY +OPEROSENESS +OPEROSENESSES +OPES +OPHIDIAN +OPHIDIANS +OPHIOLITE +OPHIOLITES +OPHIOLOGIES +OPHIOLOGY +OPHITE +OPHITES +OPHITIC +OPHIUROID +OPHIUROIDS +OPHTHALMIA +OPHTHALMIAS +OPHTHALMIC +OPHTHALMOLOGIC +OPHTHALMOLOGIES +OPHTHALMOLOGIST +OPHTHALMOLOGY +OPHTHALMOSCOPE +OPHTHALMOSCOPES +OPHTHALMOSCOPIC +OPHTHALMOSCOPY +OPIATE +OPIATED +OPIATES +OPIATING +OPINE +OPINED +OPINES +OPING +OPINING +OPINION +OPINIONATED +OPINIONATEDLY +OPINIONATEDNESS +OPINIONATIVE +OPINIONATIVELY +OPINIONED +OPINIONS +OPIOID +OPIOIDS +OPISTHOBRANCH +OPISTHOBRANCHS +OPIUM +OPIUMISM +OPIUMISMS +OPIUMS +OPOSSUM +OPOSSUMS +OPPIDAN +OPPIDANS +OPPILANT +OPPILATE +OPPILATED +OPPILATES +OPPILATING +OPPONENCIES +OPPONENCY +OPPONENT +OPPONENTS +OPPORTUNE +OPPORTUNELY +OPPORTUNENESS +OPPORTUNENESSES +OPPORTUNISM +OPPORTUNISMS +OPPORTUNIST +OPPORTUNISTIC +OPPORTUNISTS +OPPORTUNITIES +OPPORTUNITY +OPPOSABILITIES +OPPOSABILITY +OPPOSABLE +OPPOSE +OPPOSED +OPPOSELESS +OPPOSER +OPPOSERS +OPPOSES +OPPOSING +OPPOSITE +OPPOSITELY +OPPOSITENESS +OPPOSITENESSES +OPPOSITES +OPPOSITION +OPPOSITIONAL +OPPOSITIONIST +OPPOSITIONISTS +OPPOSITIONS +OPPRESS +OPPRESSED +OPPRESSES +OPPRESSING +OPPRESSION +OPPRESSIONS +OPPRESSIVE +OPPRESSIVELY +OPPRESSIVENESS +OPPRESSOR +OPPRESSORS +OPPROBRIOUS +OPPROBRIOUSLY +OPPROBRIOUSNESS +OPPROBRIUM +OPPROBRIUMS +OPPUGN +OPPUGNANT +OPPUGNED +OPPUGNER +OPPUGNERS +OPPUGNING +OPPUGNS +OPS +OPSIN +OPSINS +OPSONIC +OPSONIFIED +OPSONIFIES +OPSONIFY +OPSONIFYING +OPSONIN +OPSONINS +OPSONIZE +OPSONIZED +OPSONIZES +OPSONIZING +OPT +OPTATIVE +OPTATIVELY +OPTATIVES +OPTED +OPTIC +OPTICAL +OPTICALLY +OPTICIAN +OPTICIANS +OPTICIST +OPTICISTS +OPTICS +OPTIMA +OPTIMAL +OPTIMALITIES +OPTIMALITY +OPTIMALLY +OPTIME +OPTIMES +OPTIMISATION +OPTIMISATIONS +OPTIMISE +OPTIMISED +OPTIMISES +OPTIMISING +OPTIMISM +OPTIMISMS +OPTIMIST +OPTIMISTIC +OPTIMISTICALLY +OPTIMISTS +OPTIMIZATION +OPTIMIZATIONS +OPTIMIZE +OPTIMIZED +OPTIMIZER +OPTIMIZERS +OPTIMIZES +OPTIMIZING +OPTIMUM +OPTIMUMS +OPTING +OPTION +OPTIONAL +OPTIONALITIES +OPTIONALITY +OPTIONALLY +OPTIONALS +OPTIONED +OPTIONEE +OPTIONEES +OPTIONING +OPTIONS +OPTOELECTRONIC +OPTOELECTRONICS +OPTOKINETIC +OPTOMETER +OPTOMETERS +OPTOMETRIC +OPTOMETRIES +OPTOMETRIST +OPTOMETRISTS +OPTOMETRY +OPTS +OPULENCE +OPULENCES +OPULENCIES +OPULENCY +OPULENT +OPULENTLY +OPUNTIA +OPUNTIAS +OPUS +OPUSCULA +OPUSCULAR +OPUSCULE +OPUSCULES +OPUSCULUM +OPUSES +OQUASSA +OQUASSAS +OR +ORA +ORACH +ORACHE +ORACHES +ORACLE +ORACLES +ORACULAR +ORACULARITIES +ORACULARITY +ORACULARLY +ORAD +ORAL +ORALISM +ORALISMS +ORALIST +ORALISTS +ORALITIES +ORALITY +ORALLY +ORALS +ORANG +ORANGE +ORANGEADE +ORANGEADES +ORANGERIE +ORANGERIES +ORANGERY +ORANGES +ORANGEWOOD +ORANGEWOODS +ORANGEY +ORANGIER +ORANGIEST +ORANGISH +ORANGS +ORANGUTAN +ORANGUTANS +ORANGY +ORATE +ORATED +ORATES +ORATING +ORATION +ORATIONS +ORATOR +ORATORICAL +ORATORICALLY +ORATORIES +ORATORIO +ORATORIOS +ORATORS +ORATORY +ORATRESS +ORATRESSES +ORATRICES +ORATRIX +ORB +ORBED +ORBICULAR +ORBICULARLY +ORBICULATE +ORBIER +ORBIEST +ORBING +ORBIT +ORBITAL +ORBITALS +ORBITED +ORBITER +ORBITERS +ORBITING +ORBITS +ORBLESS +ORBS +ORBY +ORC +ORCA +ORCAS +ORCEIN +ORCEINS +ORCHARD +ORCHARDIST +ORCHARDISTS +ORCHARDS +ORCHESTRA +ORCHESTRAL +ORCHESTRALLY +ORCHESTRAS +ORCHESTRATE +ORCHESTRATED +ORCHESTRATER +ORCHESTRATERS +ORCHESTRATES +ORCHESTRATING +ORCHESTRATION +ORCHESTRATIONAL +ORCHESTRATIONS +ORCHESTRATOR +ORCHESTRATORS +ORCHID +ORCHIDACEOUS +ORCHIDLIKE +ORCHIDS +ORCHIL +ORCHILS +ORCHIS +ORCHISES +ORCHITIC +ORCHITIS +ORCHITISES +ORCIN +ORCINOL +ORCINOLS +ORCINS +ORCS +ORDAIN +ORDAINED +ORDAINER +ORDAINERS +ORDAINING +ORDAINMENT +ORDAINMENTS +ORDAINS +ORDEAL +ORDEALS +ORDER +ORDERABLE +ORDERED +ORDERER +ORDERERS +ORDERING +ORDERLESS +ORDERLIES +ORDERLINESS +ORDERLINESSES +ORDERLY +ORDERS +ORDINAL +ORDINALLY +ORDINALS +ORDINANCE +ORDINANCES +ORDINAND +ORDINANDS +ORDINARIER +ORDINARIES +ORDINARIEST +ORDINARILY +ORDINARINESS +ORDINARINESSES +ORDINARY +ORDINATE +ORDINATES +ORDINATION +ORDINATIONS +ORDINES +ORDNANCE +ORDNANCES +ORDO +ORDONNANCE +ORDONNANCES +ORDOS +ORDURE +ORDURES +ORDUROUS +ORE +OREAD +OREADS +ORECTIC +ORECTIVE +OREGANO +OREGANOS +OREIDE +OREIDES +OREODONT +OREODONTS +ORES +ORFRAY +ORFRAYS +ORGAN +ORGANA +ORGANDIE +ORGANDIES +ORGANDY +ORGANELLE +ORGANELLES +ORGANIC +ORGANICALLY +ORGANICISM +ORGANICISMS +ORGANICIST +ORGANICISTS +ORGANICITIES +ORGANICITY +ORGANICS +ORGANISATION +ORGANISATIONS +ORGANISE +ORGANISED +ORGANISER +ORGANISERS +ORGANISES +ORGANISING +ORGANISM +ORGANISMAL +ORGANISMIC +ORGANISMICALLY +ORGANISMS +ORGANIST +ORGANISTS +ORGANIZABLE +ORGANIZATION +ORGANIZATIONAL +ORGANIZATIONS +ORGANIZE +ORGANIZED +ORGANIZER +ORGANIZERS +ORGANIZES +ORGANIZING +ORGANOCHLORINE +ORGANOCHLORINES +ORGANOGENESES +ORGANOGENESIS +ORGANOGENETIC +ORGANOLEPTIC +ORGANOLOGIES +ORGANOLOGY +ORGANOMERCURIAL +ORGANOMETALLIC +ORGANOMETALLICS +ORGANON +ORGANONS +ORGANOPHOSPHATE +ORGANOSOL +ORGANOSOLS +ORGANS +ORGANUM +ORGANUMS +ORGANZA +ORGANZAS +ORGANZINE +ORGANZINES +ORGASM +ORGASMED +ORGASMIC +ORGASMING +ORGASMS +ORGASTIC +ORGEAT +ORGEATS +ORGIAC +ORGIAST +ORGIASTIC +ORGIASTICALLY +ORGIASTS +ORGIC +ORGIES +ORGONE +ORGONES +ORGULOUS +ORGY +ORIBATID +ORIBATIDS +ORIBI +ORIBIS +ORIEL +ORIELS +ORIENT +ORIENTAL +ORIENTALISM +ORIENTALISMS +ORIENTALIST +ORIENTALISTS +ORIENTALIZE +ORIENTALIZED +ORIENTALIZES +ORIENTALIZING +ORIENTALLY +ORIENTALS +ORIENTATE +ORIENTATED +ORIENTATES +ORIENTATING +ORIENTATION +ORIENTATIONAL +ORIENTATIONALLY +ORIENTATIONS +ORIENTED +ORIENTEER +ORIENTEERING +ORIENTEERINGS +ORIENTEERS +ORIENTER +ORIENTERS +ORIENTING +ORIENTS +ORIFICE +ORIFICES +ORIFICIAL +ORIFLAMME +ORIFLAMMES +ORIGAMI +ORIGAMIS +ORIGAN +ORIGANS +ORIGANUM +ORIGANUMS +ORIGIN +ORIGINAL +ORIGINALITIES +ORIGINALITY +ORIGINALLY +ORIGINALS +ORIGINATE +ORIGINATED +ORIGINATES +ORIGINATING +ORIGINATION +ORIGINATIONS +ORIGINATIVE +ORIGINATIVELY +ORIGINATOR +ORIGINATORS +ORIGINS +ORINASAL +ORINASALS +ORIOLE +ORIOLES +ORISHA +ORISHAS +ORISMOLOGICAL +ORISMOLOGIES +ORISMOLOGY +ORISON +ORISONS +ORLE +ORLES +ORLON +ORLONS +ORLOP +ORLOPS +ORMER +ORMERS +ORMOLU +ORMOLUS +ORNAMENT +ORNAMENTAL +ORNAMENTALLY +ORNAMENTALS +ORNAMENTATION +ORNAMENTATIONS +ORNAMENTED +ORNAMENTING +ORNAMENTS +ORNATE +ORNATELY +ORNATENESS +ORNATENESSES +ORNERIER +ORNERIEST +ORNERINESS +ORNERINESSES +ORNERY +ORNIS +ORNITHES +ORNITHIC +ORNITHINE +ORNITHINES +ORNITHISCHIAN +ORNITHISCHIANS +ORNITHOID +ORNITHOLOGIC +ORNITHOLOGICAL +ORNITHOLOGIES +ORNITHOLOGIST +ORNITHOLOGISTS +ORNITHOLOGY +ORNITHOPOD +ORNITHOPODS +ORNITHOPTER +ORNITHOPTERS +ORNITHOSES +ORNITHOSIS +OROGENESES +OROGENESIS +OROGENETIC +OROGENIC +OROGENIES +OROGENY +OROGRAPHIC +OROGRAPHICAL +OROGRAPHIES +OROGRAPHY +OROIDE +OROIDES +OROLOGIES +OROLOGIST +OROLOGISTS +OROLOGY +OROMETER +OROMETERS +OROPHARYNGEAL +OROPHARYNGES +OROPHARYNX +OROPHARYNXES +OROTUND +OROTUNDITIES +OROTUNDITY +ORPHAN +ORPHANAGE +ORPHANAGES +ORPHANED +ORPHANHOOD +ORPHANHOODS +ORPHANING +ORPHANS +ORPHIC +ORPHICAL +ORPHICALLY +ORPHISM +ORPHISMS +ORPHREY +ORPHREYED +ORPHREYS +ORPIMENT +ORPIMENTS +ORPIN +ORPINE +ORPINES +ORPINS +ORRA +ORRERIES +ORRERY +ORRICE +ORRICES +ORRIS +ORRISES +ORRISROOT +ORRISROOTS +ORS +ORT +ORTHICON +ORTHICONS +ORTHO +ORTHOCENTER +ORTHOCENTERS +ORTHOCHROMATIC +ORTHOCLASE +ORTHOCLASES +ORTHODONTIA +ORTHODONTIAS +ORTHODONTIC +ORTHODONTICALLY +ORTHODONTICS +ORTHODONTIST +ORTHODONTISTS +ORTHODOX +ORTHODOXES +ORTHODOXIES +ORTHODOXLY +ORTHODOXY +ORTHOEPIC +ORTHOEPICALLY +ORTHOEPIES +ORTHOEPIST +ORTHOEPISTS +ORTHOEPY +ORTHOGENESES +ORTHOGENESIS +ORTHOGENETIC +ORTHOGONAL +ORTHOGONALITIES +ORTHOGONALITY +ORTHOGONALIZE +ORTHOGONALIZED +ORTHOGONALIZES +ORTHOGONALIZING +ORTHOGONALLY +ORTHOGRADE +ORTHOGRAPHIC +ORTHOGRAPHICAL +ORTHOGRAPHIES +ORTHOGRAPHY +ORTHOMOLECULAR +ORTHONORMAL +ORTHOPAEDIC +ORTHOPAEDICS +ORTHOPEDIC +ORTHOPEDICALLY +ORTHOPEDICS +ORTHOPEDIST +ORTHOPEDISTS +ORTHOPHOSPHATE +ORTHOPHOSPHATES +ORTHOPSYCHIATRY +ORTHOPTER +ORTHOPTERA +ORTHOPTERAN +ORTHOPTERANS +ORTHOPTERIST +ORTHOPTERISTS +ORTHOPTEROID +ORTHOPTEROIDS +ORTHOPTERS +ORTHOPTIC +ORTHORHOMBIC +ORTHOSCOPIC +ORTHOSES +ORTHOSIS +ORTHOSTATIC +ORTHOTIC +ORTHOTICS +ORTHOTIST +ORTHOTISTS +ORTHOTROPOUS +ORTOLAN +ORTOLANS +ORTS +ORYX +ORYXES +ORZO +ORZOS +OS +OSAR +OSCILLATE +OSCILLATED +OSCILLATES +OSCILLATING +OSCILLATION +OSCILLATIONAL +OSCILLATIONS +OSCILLATOR +OSCILLATORS +OSCILLATORY +OSCILLOGRAM +OSCILLOGRAMS +OSCILLOGRAPH +OSCILLOGRAPHIC +OSCILLOGRAPHIES +OSCILLOGRAPHS +OSCILLOGRAPHY +OSCILLOSCOPE +OSCILLOSCOPES +OSCILLOSCOPIC +OSCINE +OSCINES +OSCININE +OSCITANCE +OSCITANCES +OSCITANCIES +OSCITANCY +OSCITANT +OSCULA +OSCULANT +OSCULAR +OSCULATE +OSCULATED +OSCULATES +OSCULATING +OSCULATION +OSCULATIONS +OSCULATORY +OSCULE +OSCULES +OSCULUM +OSE +OSES +OSETRA +OSETRAS +OSIER +OSIERED +OSIERS +OSMATIC +OSMETERIA +OSMETERIUM +OSMIC +OSMICALLY +OSMICS +OSMIOUS +OSMIRIDIUM +OSMIRIDIUMS +OSMIUM +OSMIUMS +OSMOL +OSMOLAL +OSMOLALITIES +OSMOLALITY +OSMOLAR +OSMOLARITIES +OSMOLARITY +OSMOLE +OSMOLES +OSMOLS +OSMOMETER +OSMOMETERS +OSMOMETRIC +OSMOMETRIES +OSMOMETRY +OSMOREGULATION +OSMOREGULATIONS +OSMOREGULATORY +OSMOSE +OSMOSED +OSMOSES +OSMOSING +OSMOSIS +OSMOTIC +OSMOTICALLY +OSMOUS +OSMUND +OSMUNDA +OSMUNDAS +OSMUNDINE +OSMUNDINES +OSMUNDS +OSNABURG +OSNABURGS +OSPREY +OSPREYS +OSSA +OSSATURE +OSSATURES +OSSEIN +OSSEINS +OSSEOUS +OSSEOUSLY +OSSETRA +OSSETRAS +OSSIA +OSSICLE +OSSICLES +OSSICULAR +OSSIFIC +OSSIFICATION +OSSIFICATIONS +OSSIFIED +OSSIFIER +OSSIFIERS +OSSIFIES +OSSIFRAGE +OSSIFRAGES +OSSIFY +OSSIFYING +OSSUARIES +OSSUARY +OSTEAL +OSTEITIC +OSTEITIDES +OSTEITIS +OSTENSIBLE +OSTENSIBLY +OSTENSIVE +OSTENSIVELY +OSTENSORIA +OSTENSORIES +OSTENSORIUM +OSTENSORY +OSTENTATION +OSTENTATIONS +OSTENTATIOUS +OSTENTATIOUSLY +OSTEOARTHRITIC +OSTEOARTHRITIS +OSTEOBLAST +OSTEOBLASTIC +OSTEOBLASTS +OSTEOCLAST +OSTEOCLASTIC +OSTEOCLASTS +OSTEOCYTE +OSTEOCYTES +OSTEOGENESES +OSTEOGENESIS +OSTEOGENIC +OSTEOID +OSTEOIDS +OSTEOLOGICAL +OSTEOLOGIES +OSTEOLOGIST +OSTEOLOGISTS +OSTEOLOGY +OSTEOMA +OSTEOMALACIA +OSTEOMALACIAS +OSTEOMAS +OSTEOMATA +OSTEOMYELITIS +OSTEOMYELITISES +OSTEOPATH +OSTEOPATHIC +OSTEOPATHICALLY +OSTEOPATHIES +OSTEOPATHS +OSTEOPATHY +OSTEOPLASTIC +OSTEOPLASTIES +OSTEOPLASTY +OSTEOPOROSES +OSTEOPOROSIS +OSTEOPOROTIC +OSTEOSARCOMA +OSTEOSARCOMAS +OSTEOSARCOMATA +OSTEOSES +OSTEOSIS +OSTEOSISES +OSTEOTOME +OSTEOTOMES +OSTEOTOMIES +OSTEOTOMY +OSTIA +OSTIARIES +OSTIARY +OSTINATI +OSTINATO +OSTINATOS +OSTIOLAR +OSTIOLE +OSTIOLES +OSTIUM +OSTLER +OSTLERS +OSTMARK +OSTMARKS +OSTOMATE +OSTOMATES +OSTOMIES +OSTOMY +OSTOSES +OSTOSIS +OSTOSISES +OSTRACA +OSTRACISE +OSTRACISED +OSTRACISES +OSTRACISING +OSTRACISM +OSTRACISMS +OSTRACIZE +OSTRACIZED +OSTRACIZES +OSTRACIZING +OSTRACOD +OSTRACODE +OSTRACODERM +OSTRACODERMS +OSTRACODES +OSTRACODS +OSTRACON +OSTRAKA +OSTRAKON +OSTRICH +OSTRICHES +OSTRICHLIKE +OTALGIA +OTALGIAS +OTALGIC +OTALGIES +OTALGY +OTHER +OTHERGUESS +OTHERNESS +OTHERNESSES +OTHERS +OTHERWHERE +OTHERWHILE +OTHERWHILES +OTHERWISE +OTHERWORLD +OTHERWORLDLY +OTHERWORLDS +OTIC +OTIOSE +OTIOSELY +OTIOSENESS +OTIOSENESSES +OTIOSITIES +OTIOSITY +OTITIC +OTITIDES +OTITIS +OTITISES +OTOCYST +OTOCYSTIC +OTOCYSTS +OTOLARYNGOLOGY +OTOLITH +OTOLITHIC +OTOLITHS +OTOLOGIES +OTOLOGIST +OTOLOGISTS +OTOLOGY +OTOPLASTIES +OTOPLASTY +OTOSCLEROSES +OTOSCLEROSIS +OTOSCOPE +OTOSCOPES +OTOSCOPIES +OTOSCOPY +OTOTOXIC +OTOTOXICITIES +OTOTOXICITY +OTTAR +OTTARS +OTTAVA +OTTAVAS +OTTER +OTTERS +OTTO +OTTOMAN +OTTOMANS +OTTOS +OUABAIN +OUABAINS +OUBLIETTE +OUBLIETTES +OUCH +OUCHED +OUCHES +OUCHING +OUD +OUDS +OUGHT +OUGHTED +OUGHTING +OUGHTS +OUGUIYA +OUGUIYAS +OUISTITI +OUISTITIS +OUNCE +OUNCES +OUPH +OUPHE +OUPHES +OUPHS +OUR +OURANG +OURANGS +OURARI +OURARIS +OUREBI +OUREBIS +OURIE +OURS +OURSELF +OURSELVES +OUSEL +OUSELS +OUST +OUSTED +OUSTER +OUSTERS +OUSTING +OUSTS +OUT +OUTACHIEVE +OUTACHIEVED +OUTACHIEVES +OUTACHIEVING +OUTACT +OUTACTED +OUTACTING +OUTACTS +OUTADD +OUTADDED +OUTADDING +OUTADDS +OUTAGE +OUTAGES +OUTARGUE +OUTARGUED +OUTARGUES +OUTARGUING +OUTASK +OUTASKED +OUTASKING +OUTASKS +OUTATE +OUTBACK +OUTBACKER +OUTBACKERS +OUTBACKS +OUTBAKE +OUTBAKED +OUTBAKES +OUTBAKING +OUTBALANCE +OUTBALANCED +OUTBALANCES +OUTBALANCING +OUTBARGAIN +OUTBARGAINED +OUTBARGAINING +OUTBARGAINS +OUTBARK +OUTBARKED +OUTBARKING +OUTBARKS +OUTBAWL +OUTBAWLED +OUTBAWLING +OUTBAWLS +OUTBEAM +OUTBEAMED +OUTBEAMING +OUTBEAMS +OUTBEG +OUTBEGGED +OUTBEGGING +OUTBEGS +OUTBID +OUTBIDDEN +OUTBIDDER +OUTBIDDERS +OUTBIDDING +OUTBIDS +OUTBITCH +OUTBITCHED +OUTBITCHES +OUTBITCHING +OUTBLAZE +OUTBLAZED +OUTBLAZES +OUTBLAZING +OUTBLEAT +OUTBLEATED +OUTBLEATING +OUTBLEATS +OUTBLESS +OUTBLESSED +OUTBLESSES +OUTBLESSING +OUTBLOOM +OUTBLOOMED +OUTBLOOMING +OUTBLOOMS +OUTBLUFF +OUTBLUFFED +OUTBLUFFING +OUTBLUFFS +OUTBLUSH +OUTBLUSHED +OUTBLUSHES +OUTBLUSHING +OUTBOARD +OUTBOARDS +OUTBOAST +OUTBOASTED +OUTBOASTING +OUTBOASTS +OUTBOUGHT +OUTBOUND +OUTBOX +OUTBOXED +OUTBOXES +OUTBOXING +OUTBRAG +OUTBRAGGED +OUTBRAGGING +OUTBRAGS +OUTBRAVE +OUTBRAVED +OUTBRAVES +OUTBRAVING +OUTBRAWL +OUTBRAWLED +OUTBRAWLING +OUTBRAWLS +OUTBRAZEN +OUTBRAZENED +OUTBRAZENING +OUTBRAZENS +OUTBREAK +OUTBREAKS +OUTBRED +OUTBREED +OUTBREEDING +OUTBREEDINGS +OUTBREEDS +OUTBRIBE +OUTBRIBED +OUTBRIBES +OUTBRIBING +OUTBUILD +OUTBUILDING +OUTBUILDINGS +OUTBUILDS +OUTBUILT +OUTBULGE +OUTBULGED +OUTBULGES +OUTBULGING +OUTBULK +OUTBULKED +OUTBULKING +OUTBULKS +OUTBULLIED +OUTBULLIES +OUTBULLY +OUTBULLYING +OUTBURN +OUTBURNED +OUTBURNING +OUTBURNS +OUTBURNT +OUTBURST +OUTBURSTS +OUTBUY +OUTBUYING +OUTBUYS +OUTBY +OUTBYE +OUTCALL +OUTCALLS +OUTCAPER +OUTCAPERED +OUTCAPERING +OUTCAPERS +OUTCAST +OUTCASTE +OUTCASTES +OUTCASTS +OUTCATCH +OUTCATCHES +OUTCATCHING +OUTCAUGHT +OUTCAVIL +OUTCAVILED +OUTCAVILING +OUTCAVILLED +OUTCAVILLING +OUTCAVILS +OUTCHARGE +OUTCHARGED +OUTCHARGES +OUTCHARGING +OUTCHARM +OUTCHARMED +OUTCHARMING +OUTCHARMS +OUTCHEAT +OUTCHEATED +OUTCHEATING +OUTCHEATS +OUTCHID +OUTCHIDDEN +OUTCHIDE +OUTCHIDED +OUTCHIDES +OUTCHIDING +OUTCITIES +OUTCITY +OUTCLASS +OUTCLASSED +OUTCLASSES +OUTCLASSING +OUTCLIMB +OUTCLIMBED +OUTCLIMBING +OUTCLIMBS +OUTCLOMB +OUTCOACH +OUTCOACHED +OUTCOACHES +OUTCOACHING +OUTCOME +OUTCOMES +OUTCOMPETE +OUTCOMPETED +OUTCOMPETES +OUTCOMPETING +OUTCOOK +OUTCOOKED +OUTCOOKING +OUTCOOKS +OUTCOUNT +OUTCOUNTED +OUTCOUNTING +OUTCOUNTS +OUTCRAWL +OUTCRAWLED +OUTCRAWLING +OUTCRAWLS +OUTCRIED +OUTCRIES +OUTCROP +OUTCROPPED +OUTCROPPING +OUTCROPPINGS +OUTCROPS +OUTCROSS +OUTCROSSED +OUTCROSSES +OUTCROSSING +OUTCROW +OUTCROWD +OUTCROWDED +OUTCROWDING +OUTCROWDS +OUTCROWED +OUTCROWING +OUTCROWS +OUTCRY +OUTCRYING +OUTCURSE +OUTCURSED +OUTCURSES +OUTCURSING +OUTCURVE +OUTCURVES +OUTDANCE +OUTDANCED +OUTDANCES +OUTDANCING +OUTDARE +OUTDARED +OUTDARES +OUTDARING +OUTDATE +OUTDATED +OUTDATEDLY +OUTDATEDNESS +OUTDATEDNESSES +OUTDATES +OUTDATING +OUTDAZZLE +OUTDAZZLED +OUTDAZZLES +OUTDAZZLING +OUTDEBATE +OUTDEBATED +OUTDEBATES +OUTDEBATING +OUTDELIVER +OUTDELIVERED +OUTDELIVERING +OUTDELIVERS +OUTDESIGN +OUTDESIGNED +OUTDESIGNING +OUTDESIGNS +OUTDID +OUTDISTANCE +OUTDISTANCED +OUTDISTANCES +OUTDISTANCING +OUTDO +OUTDODGE +OUTDODGED +OUTDODGES +OUTDODGING +OUTDOER +OUTDOERS +OUTDOES +OUTDOING +OUTDONE +OUTDOOR +OUTDOORS +OUTDOORSMAN +OUTDOORSMANSHIP +OUTDOORSMEN +OUTDOORSY +OUTDRAG +OUTDRAGGED +OUTDRAGGING +OUTDRAGS +OUTDRANK +OUTDRAW +OUTDRAWING +OUTDRAWN +OUTDRAWS +OUTDREAM +OUTDREAMED +OUTDREAMING +OUTDREAMS +OUTDREAMT +OUTDRESS +OUTDRESSED +OUTDRESSES +OUTDRESSING +OUTDREW +OUTDRINK +OUTDRINKING +OUTDRINKS +OUTDRIVE +OUTDRIVEN +OUTDRIVES +OUTDRIVING +OUTDROP +OUTDROPPED +OUTDROPPING +OUTDROPS +OUTDROVE +OUTDRUNK +OUTDUEL +OUTDUELED +OUTDUELING +OUTDUELLED +OUTDUELLING +OUTDUELS +OUTEARN +OUTEARNED +OUTEARNING +OUTEARNS +OUTEAT +OUTEATEN +OUTEATING +OUTEATS +OUTECHO +OUTECHOED +OUTECHOES +OUTECHOING +OUTED +OUTER +OUTERCOAT +OUTERCOATS +OUTERMOST +OUTERS +OUTERWEAR +OUTFABLE +OUTFABLED +OUTFABLES +OUTFABLING +OUTFACE +OUTFACED +OUTFACES +OUTFACING +OUTFALL +OUTFALLS +OUTFAST +OUTFASTED +OUTFASTING +OUTFASTS +OUTFAWN +OUTFAWNED +OUTFAWNING +OUTFAWNS +OUTFEAST +OUTFEASTED +OUTFEASTING +OUTFEASTS +OUTFEEL +OUTFEELING +OUTFEELS +OUTFELT +OUTFENCE +OUTFENCED +OUTFENCES +OUTFENCING +OUTFIELD +OUTFIELDER +OUTFIELDERS +OUTFIELDS +OUTFIGHT +OUTFIGHTING +OUTFIGHTS +OUTFIGURE +OUTFIGURED +OUTFIGURES +OUTFIGURING +OUTFIND +OUTFINDING +OUTFINDS +OUTFIRE +OUTFIRED +OUTFIRES +OUTFIRING +OUTFISH +OUTFISHED +OUTFISHES +OUTFISHING +OUTFIT +OUTFITS +OUTFITTED +OUTFITTER +OUTFITTERS +OUTFITTING +OUTFLANK +OUTFLANKED +OUTFLANKING +OUTFLANKS +OUTFLEW +OUTFLIES +OUTFLOAT +OUTFLOATED +OUTFLOATING +OUTFLOATS +OUTFLOW +OUTFLOWED +OUTFLOWING +OUTFLOWN +OUTFLOWS +OUTFLY +OUTFLYING +OUTFOOL +OUTFOOLED +OUTFOOLING +OUTFOOLS +OUTFOOT +OUTFOOTED +OUTFOOTING +OUTFOOTS +OUTFOUGHT +OUTFOUND +OUTFOX +OUTFOXED +OUTFOXES +OUTFOXING +OUTFROWN +OUTFROWNED +OUTFROWNING +OUTFROWNS +OUTFUMBLE +OUTFUMBLED +OUTFUMBLES +OUTFUMBLING +OUTGAIN +OUTGAINED +OUTGAINING +OUTGAINS +OUTGALLOP +OUTGALLOPED +OUTGALLOPING +OUTGALLOPS +OUTGAMBLE +OUTGAMBLED +OUTGAMBLES +OUTGAMBLING +OUTGAS +OUTGASSED +OUTGASSES +OUTGASSING +OUTGAVE +OUTGAZE +OUTGAZED +OUTGAZES +OUTGAZING +OUTGENERAL +OUTGENERALED +OUTGENERALING +OUTGENERALS +OUTGIVE +OUTGIVEN +OUTGIVES +OUTGIVING +OUTGIVINGS +OUTGLARE +OUTGLARED +OUTGLARES +OUTGLARING +OUTGLEAM +OUTGLEAMED +OUTGLEAMING +OUTGLEAMS +OUTGLITTER +OUTGLITTERED +OUTGLITTERING +OUTGLITTERS +OUTGLOW +OUTGLOWED +OUTGLOWING +OUTGLOWS +OUTGNAW +OUTGNAWED +OUTGNAWING +OUTGNAWN +OUTGNAWS +OUTGO +OUTGOES +OUTGOING +OUTGOINGNESS +OUTGOINGNESSES +OUTGOINGS +OUTGONE +OUTGREW +OUTGRIN +OUTGRINNED +OUTGRINNING +OUTGRINS +OUTGROSS +OUTGROSSED +OUTGROSSES +OUTGROSSING +OUTGROUP +OUTGROUPS +OUTGROW +OUTGROWING +OUTGROWN +OUTGROWS +OUTGROWTH +OUTGROWTHS +OUTGUESS +OUTGUESSED +OUTGUESSES +OUTGUESSING +OUTGUIDE +OUTGUIDED +OUTGUIDES +OUTGUIDING +OUTGUN +OUTGUNNED +OUTGUNNING +OUTGUNS +OUTGUSH +OUTGUSHED +OUTGUSHES +OUTGUSHING +OUTHANDLE +OUTHANDLED +OUTHANDLES +OUTHANDLING +OUTHAUL +OUTHAULS +OUTHEAR +OUTHEARD +OUTHEARING +OUTHEARS +OUTHIT +OUTHITS +OUTHITTING +OUTHOMER +OUTHOMERED +OUTHOMERING +OUTHOMERS +OUTHOUSE +OUTHOUSES +OUTHOWL +OUTHOWLED +OUTHOWLING +OUTHOWLS +OUTHUMOR +OUTHUMORED +OUTHUMORING +OUTHUMORS +OUTHUNT +OUTHUNTED +OUTHUNTING +OUTHUNTS +OUTHUSTLE +OUTHUSTLED +OUTHUSTLES +OUTHUSTLING +OUTING +OUTINGS +OUTINTRIGUE +OUTINTRIGUED +OUTINTRIGUES +OUTINTRIGUING +OUTJINX +OUTJINXED +OUTJINXES +OUTJINXING +OUTJOCKEY +OUTJOCKEYED +OUTJOCKEYING +OUTJOCKEYS +OUTJUGGLE +OUTJUGGLED +OUTJUGGLES +OUTJUGGLING +OUTJUMP +OUTJUMPED +OUTJUMPING +OUTJUMPS +OUTJUT +OUTJUTS +OUTJUTTED +OUTJUTTING +OUTKEEP +OUTKEEPING +OUTKEEPS +OUTKEPT +OUTKICK +OUTKICKED +OUTKICKING +OUTKICKS +OUTKILL +OUTKILLED +OUTKILLING +OUTKILLS +OUTKISS +OUTKISSED +OUTKISSES +OUTKISSING +OUTLAID +OUTLAIN +OUTLAND +OUTLANDER +OUTLANDERS +OUTLANDISH +OUTLANDISHLY +OUTLANDISHNESS +OUTLANDS +OUTLAST +OUTLASTED +OUTLASTING +OUTLASTS +OUTLAUGH +OUTLAUGHED +OUTLAUGHING +OUTLAUGHS +OUTLAW +OUTLAWED +OUTLAWING +OUTLAWRIES +OUTLAWRY +OUTLAWS +OUTLAY +OUTLAYING +OUTLAYS +OUTLEAD +OUTLEADING +OUTLEADS +OUTLEAP +OUTLEAPED +OUTLEAPING +OUTLEAPS +OUTLEAPT +OUTLEARN +OUTLEARNED +OUTLEARNING +OUTLEARNS +OUTLEARNT +OUTLED +OUTLET +OUTLETS +OUTLIE +OUTLIER +OUTLIERS +OUTLIES +OUTLINE +OUTLINED +OUTLINER +OUTLINERS +OUTLINES +OUTLINING +OUTLIVE +OUTLIVED +OUTLIVER +OUTLIVERS +OUTLIVES +OUTLIVING +OUTLOOK +OUTLOOKS +OUTLOVE +OUTLOVED +OUTLOVES +OUTLOVING +OUTLYING +OUTMAN +OUTMANEUVER +OUTMANEUVERED +OUTMANEUVERING +OUTMANEUVERS +OUTMANIPULATE +OUTMANIPULATED +OUTMANIPULATES +OUTMANIPULATING +OUTMANNED +OUTMANNING +OUTMANS +OUTMARCH +OUTMARCHED +OUTMARCHES +OUTMARCHING +OUTMASTER +OUTMASTERED +OUTMASTERING +OUTMASTERS +OUTMATCH +OUTMATCHED +OUTMATCHES +OUTMATCHING +OUTMODE +OUTMODED +OUTMODES +OUTMODING +OUTMOST +OUTMOVE +OUTMOVED +OUTMOVES +OUTMOVING +OUTMUSCLE +OUTMUSCLED +OUTMUSCLES +OUTMUSCLING +OUTNUMBER +OUTNUMBERED +OUTNUMBERING +OUTNUMBERS +OUTOFFICE +OUTOFFICES +OUTORGANIZE +OUTORGANIZED +OUTORGANIZES +OUTORGANIZING +OUTPACE +OUTPACED +OUTPACES +OUTPACING +OUTPAINT +OUTPAINTED +OUTPAINTING +OUTPAINTS +OUTPASS +OUTPASSED +OUTPASSES +OUTPASSING +OUTPATIENT +OUTPATIENTS +OUTPEOPLE +OUTPEOPLED +OUTPEOPLES +OUTPEOPLING +OUTPERFORM +OUTPERFORMED +OUTPERFORMING +OUTPERFORMS +OUTPITCH +OUTPITCHED +OUTPITCHES +OUTPITCHING +OUTPITIED +OUTPITIES +OUTPITY +OUTPITYING +OUTPLACE +OUTPLACED +OUTPLACEMENT +OUTPLACEMENTS +OUTPLACES +OUTPLACING +OUTPLAN +OUTPLANNED +OUTPLANNING +OUTPLANS +OUTPLAY +OUTPLAYED +OUTPLAYING +OUTPLAYS +OUTPLOD +OUTPLODDED +OUTPLODDING +OUTPLODS +OUTPLOT +OUTPLOTS +OUTPLOTTED +OUTPLOTTING +OUTPOINT +OUTPOINTED +OUTPOINTING +OUTPOINTS +OUTPOLITICK +OUTPOLITICKED +OUTPOLITICKING +OUTPOLITICKS +OUTPOLL +OUTPOLLED +OUTPOLLING +OUTPOLLS +OUTPOPULATE +OUTPOPULATED +OUTPOPULATES +OUTPOPULATING +OUTPORT +OUTPORTS +OUTPOST +OUTPOSTS +OUTPOUR +OUTPOURED +OUTPOURER +OUTPOURERS +OUTPOURING +OUTPOURINGS +OUTPOURS +OUTPOWER +OUTPOWERED +OUTPOWERING +OUTPOWERS +OUTPRAY +OUTPRAYED +OUTPRAYING +OUTPRAYS +OUTPREACH +OUTPREACHED +OUTPREACHES +OUTPREACHING +OUTPREEN +OUTPREENED +OUTPREENING +OUTPREENS +OUTPRESS +OUTPRESSED +OUTPRESSES +OUTPRESSING +OUTPRICE +OUTPRICED +OUTPRICES +OUTPRICING +OUTPRODUCE +OUTPRODUCED +OUTPRODUCES +OUTPRODUCING +OUTPROMISE +OUTPROMISED +OUTPROMISES +OUTPROMISING +OUTPULL +OUTPULLED +OUTPULLING +OUTPULLS +OUTPUNCH +OUTPUNCHED +OUTPUNCHES +OUTPUNCHING +OUTPUPIL +OUTPUPILS +OUTPURSUE +OUTPURSUED +OUTPURSUES +OUTPURSUING +OUTPUSH +OUTPUSHED +OUTPUSHES +OUTPUSHING +OUTPUT +OUTPUTS +OUTPUTTED +OUTPUTTING +OUTQUOTE +OUTQUOTED +OUTQUOTES +OUTQUOTING +OUTRACE +OUTRACED +OUTRACES +OUTRACING +OUTRAGE +OUTRAGED +OUTRAGEOUS +OUTRAGEOUSLY +OUTRAGEOUSNESS +OUTRAGES +OUTRAGING +OUTRAISE +OUTRAISED +OUTRAISES +OUTRAISING +OUTRAN +OUTRANCE +OUTRANCES +OUTRANG +OUTRANGE +OUTRANGED +OUTRANGES +OUTRANGING +OUTRANK +OUTRANKED +OUTRANKING +OUTRANKS +OUTRATE +OUTRATED +OUTRATES +OUTRATING +OUTRAVE +OUTRAVED +OUTRAVES +OUTRAVING +OUTRE +OUTREACH +OUTREACHED +OUTREACHES +OUTREACHING +OUTREAD +OUTREADING +OUTREADS +OUTREASON +OUTREASONED +OUTREASONING +OUTREASONS +OUTREBOUND +OUTREBOUNDED +OUTREBOUNDING +OUTREBOUNDS +OUTRECKON +OUTRECKONED +OUTRECKONING +OUTRECKONS +OUTREPRODUCE +OUTREPRODUCED +OUTREPRODUCES +OUTREPRODUCING +OUTRIDDEN +OUTRIDE +OUTRIDER +OUTRIDERS +OUTRIDES +OUTRIDING +OUTRIG +OUTRIGGED +OUTRIGGER +OUTRIGGERS +OUTRIGGING +OUTRIGHT +OUTRIGHTLY +OUTRIGS +OUTRING +OUTRINGING +OUTRINGS +OUTRIVAL +OUTRIVALED +OUTRIVALING +OUTRIVALLED +OUTRIVALLING +OUTRIVALS +OUTROAR +OUTROARED +OUTROARING +OUTROARS +OUTROCK +OUTROCKED +OUTROCKING +OUTROCKS +OUTRODE +OUTROLL +OUTROLLED +OUTROLLING +OUTROLLS +OUTROOT +OUTROOTED +OUTROOTING +OUTROOTS +OUTROW +OUTROWED +OUTROWING +OUTROWS +OUTRUN +OUTRUNG +OUTRUNNER +OUTRUNNERS +OUTRUNNING +OUTRUNS +OUTRUSH +OUTRUSHED +OUTRUSHES +OUTRUSHING +OUTS +OUTSAID +OUTSAIL +OUTSAILED +OUTSAILING +OUTSAILS +OUTSANG +OUTSAT +OUTSAVOR +OUTSAVORED +OUTSAVORING +OUTSAVORS +OUTSAW +OUTSAY +OUTSAYING +OUTSAYS +OUTSCHEME +OUTSCHEMED +OUTSCHEMES +OUTSCHEMING +OUTSCOLD +OUTSCOLDED +OUTSCOLDING +OUTSCOLDS +OUTSCOOP +OUTSCOOPED +OUTSCOOPING +OUTSCOOPS +OUTSCORE +OUTSCORED +OUTSCORES +OUTSCORING +OUTSCORN +OUTSCORNED +OUTSCORNING +OUTSCORNS +OUTSCREAM +OUTSCREAMED +OUTSCREAMING +OUTSCREAMS +OUTSEE +OUTSEEING +OUTSEEN +OUTSEES +OUTSELL +OUTSELLING +OUTSELLS +OUTSERT +OUTSERTS +OUTSERVE +OUTSERVED +OUTSERVES +OUTSERVING +OUTSET +OUTSETS +OUTSHAME +OUTSHAMED +OUTSHAMES +OUTSHAMING +OUTSHINE +OUTSHINED +OUTSHINES +OUTSHINING +OUTSHONE +OUTSHOOT +OUTSHOOTING +OUTSHOOTS +OUTSHOT +OUTSHOUT +OUTSHOUTED +OUTSHOUTING +OUTSHOUTS +OUTSIDE +OUTSIDER +OUTSIDERNESS +OUTSIDERNESSES +OUTSIDERS +OUTSIDES +OUTSIGHT +OUTSIGHTS +OUTSIN +OUTSING +OUTSINGING +OUTSINGS +OUTSINNED +OUTSINNING +OUTSINS +OUTSIT +OUTSITS +OUTSITTING +OUTSIZE +OUTSIZED +OUTSIZES +OUTSKATE +OUTSKATED +OUTSKATES +OUTSKATING +OUTSKIRT +OUTSKIRTS +OUTSLEEP +OUTSLEEPING +OUTSLEEPS +OUTSLEPT +OUTSLICK +OUTSLICKED +OUTSLICKING +OUTSLICKS +OUTSMART +OUTSMARTED +OUTSMARTING +OUTSMARTS +OUTSMELL +OUTSMELLED +OUTSMELLING +OUTSMELLS +OUTSMELT +OUTSMILE +OUTSMILED +OUTSMILES +OUTSMILING +OUTSMOKE +OUTSMOKED +OUTSMOKES +OUTSMOKING +OUTSNORE +OUTSNORED +OUTSNORES +OUTSNORING +OUTSOAR +OUTSOARED +OUTSOARING +OUTSOARS +OUTSOLD +OUTSOLE +OUTSOLES +OUTSOURCE +OUTSOURCED +OUTSOURCES +OUTSOURCING +OUTSOURCINGS +OUTSPAN +OUTSPANNED +OUTSPANNING +OUTSPANS +OUTSPARKLE +OUTSPARKLED +OUTSPARKLES +OUTSPARKLING +OUTSPEAK +OUTSPEAKING +OUTSPEAKS +OUTSPED +OUTSPEED +OUTSPEEDED +OUTSPEEDING +OUTSPEEDS +OUTSPELL +OUTSPELLED +OUTSPELLING +OUTSPELLS +OUTSPELT +OUTSPEND +OUTSPENDING +OUTSPENDS +OUTSPENT +OUTSPOKE +OUTSPOKEN +OUTSPOKENLY +OUTSPOKENNESS +OUTSPOKENNESSES +OUTSPRANG +OUTSPREAD +OUTSPREADING +OUTSPREADS +OUTSPRING +OUTSPRINGING +OUTSPRINGS +OUTSPRINT +OUTSPRINTED +OUTSPRINTING +OUTSPRINTS +OUTSPRUNG +OUTSTAND +OUTSTANDING +OUTSTANDINGLY +OUTSTANDS +OUTSTARE +OUTSTARED +OUTSTARES +OUTSTARING +OUTSTART +OUTSTARTED +OUTSTARTING +OUTSTARTS +OUTSTATE +OUTSTATED +OUTSTATES +OUTSTATING +OUTSTATION +OUTSTATIONS +OUTSTAY +OUTSTAYED +OUTSTAYING +OUTSTAYS +OUTSTEER +OUTSTEERED +OUTSTEERING +OUTSTEERS +OUTSTOOD +OUTSTRETCH +OUTSTRETCHED +OUTSTRETCHES +OUTSTRETCHING +OUTSTRIDDEN +OUTSTRIDE +OUTSTRIDES +OUTSTRIDING +OUTSTRIP +OUTSTRIPPED +OUTSTRIPPING +OUTSTRIPS +OUTSTRIVE +OUTSTRIVEN +OUTSTRIVES +OUTSTRIVING +OUTSTRODE +OUTSTROKE +OUTSTROKES +OUTSTROVE +OUTSTUDIED +OUTSTUDIES +OUTSTUDY +OUTSTUDYING +OUTSTUNT +OUTSTUNTED +OUTSTUNTING +OUTSTUNTS +OUTSULK +OUTSULKED +OUTSULKING +OUTSULKS +OUTSUNG +OUTSWAM +OUTSWARE +OUTSWEAR +OUTSWEARING +OUTSWEARS +OUTSWEEP +OUTSWEEPING +OUTSWEEPS +OUTSWEPT +OUTSWIM +OUTSWIMMING +OUTSWIMS +OUTSWING +OUTSWINGING +OUTSWINGS +OUTSWORE +OUTSWORN +OUTSWUM +OUTSWUNG +OUTTAKE +OUTTAKES +OUTTALK +OUTTALKED +OUTTALKING +OUTTALKS +OUTTASK +OUTTASKED +OUTTASKING +OUTTASKS +OUTTELL +OUTTELLING +OUTTELLS +OUTTHANK +OUTTHANKED +OUTTHANKING +OUTTHANKS +OUTTHIEVE +OUTTHIEVED +OUTTHIEVES +OUTTHIEVING +OUTTHINK +OUTTHINKING +OUTTHINKS +OUTTHOUGHT +OUTTHREW +OUTTHROB +OUTTHROBBED +OUTTHROBBING +OUTTHROBS +OUTTHROW +OUTTHROWING +OUTTHROWN +OUTTHROWS +OUTTHRUST +OUTTHRUSTED +OUTTHRUSTING +OUTTHRUSTS +OUTTOLD +OUTTOWER +OUTTOWERED +OUTTOWERING +OUTTOWERS +OUTTRADE +OUTTRADED +OUTTRADES +OUTTRADING +OUTTRAVEL +OUTTRAVELED +OUTTRAVELING +OUTTRAVELLED +OUTTRAVELLING +OUTTRAVELS +OUTTRICK +OUTTRICKED +OUTTRICKING +OUTTRICKS +OUTTROT +OUTTROTS +OUTTROTTED +OUTTROTTING +OUTTRUMP +OUTTRUMPED +OUTTRUMPING +OUTTRUMPS +OUTTURN +OUTTURNS +OUTVALUE +OUTVALUED +OUTVALUES +OUTVALUING +OUTVAUNT +OUTVAUNTED +OUTVAUNTING +OUTVAUNTS +OUTVIE +OUTVIED +OUTVIES +OUTVOICE +OUTVOICED +OUTVOICES +OUTVOICING +OUTVOTE +OUTVOTED +OUTVOTES +OUTVOTING +OUTVYING +OUTWAIT +OUTWAITED +OUTWAITING +OUTWAITS +OUTWALK +OUTWALKED +OUTWALKING +OUTWALKS +OUTWAR +OUTWARD +OUTWARDLY +OUTWARDNESS +OUTWARDNESSES +OUTWARDS +OUTWARRED +OUTWARRING +OUTWARS +OUTWASH +OUTWASHES +OUTWASTE +OUTWASTED +OUTWASTES +OUTWASTING +OUTWATCH +OUTWATCHED +OUTWATCHES +OUTWATCHING +OUTWEAR +OUTWEARIED +OUTWEARIES +OUTWEARING +OUTWEARS +OUTWEARY +OUTWEARYING +OUTWEEP +OUTWEEPING +OUTWEEPS +OUTWEIGH +OUTWEIGHED +OUTWEIGHING +OUTWEIGHS +OUTWENT +OUTWEPT +OUTWHIRL +OUTWHIRLED +OUTWHIRLING +OUTWHIRLS +OUTWILE +OUTWILED +OUTWILES +OUTWILING +OUTWILL +OUTWILLED +OUTWILLING +OUTWILLS +OUTWIND +OUTWINDED +OUTWINDING +OUTWINDS +OUTWISH +OUTWISHED +OUTWISHES +OUTWISHING +OUTWIT +OUTWITH +OUTWITS +OUTWITTED +OUTWITTING +OUTWORE +OUTWORK +OUTWORKED +OUTWORKER +OUTWORKERS +OUTWORKING +OUTWORKS +OUTWORN +OUTWRESTLE +OUTWRESTLED +OUTWRESTLES +OUTWRESTLING +OUTWRIT +OUTWRITE +OUTWRITES +OUTWRITING +OUTWRITTEN +OUTWROTE +OUTWROUGHT +OUTYELL +OUTYELLED +OUTYELLING +OUTYELLS +OUTYELP +OUTYELPED +OUTYELPING +OUTYELPS +OUTYIELD +OUTYIELDED +OUTYIELDING +OUTYIELDS +OUZEL +OUZELS +OUZO +OUZOS +OVA +OVAL +OVALBUMIN +OVALBUMINS +OVALITIES +OVALITY +OVALLY +OVALNESS +OVALNESSES +OVALS +OVARIAL +OVARIAN +OVARIECTOMIES +OVARIECTOMIZED +OVARIECTOMY +OVARIES +OVARIOLE +OVARIOLES +OVARIOTOMIES +OVARIOTOMY +OVARITIDES +OVARITIS +OVARY +OVATE +OVATELY +OVATION +OVATIONAL +OVATIONS +OVEN +OVENBIRD +OVENBIRDS +OVENLIKE +OVENPROOF +OVENS +OVENWARE +OVENWARES +OVER +OVERABLE +OVERABSTRACT +OVERABUNDANCE +OVERABUNDANCES +OVERABUNDANT +OVERACCENTUATE +OVERACCENTUATED +OVERACCENTUATES +OVERACHIEVE +OVERACHIEVED +OVERACHIEVEMENT +OVERACHIEVER +OVERACHIEVERS +OVERACHIEVES +OVERACHIEVING +OVERACT +OVERACTED +OVERACTING +OVERACTION +OVERACTIONS +OVERACTIVE +OVERACTIVITIES +OVERACTIVITY +OVERACTS +OVERACUTE +OVERADJUSTMENT +OVERADJUSTMENTS +OVERADVERTISE +OVERADVERTISED +OVERADVERTISES +OVERADVERTISING +OVERAGE +OVERAGED +OVERAGES +OVERAGGRESSIVE +OVERALERT +OVERALL +OVERALLED +OVERALLS +OVERAMBITIOUS +OVERAMPLIFIED +OVERANALYSES +OVERANALYSIS +OVERANALYTICAL +OVERANALYZE +OVERANALYZED +OVERANALYZES +OVERANALYZING +OVERANXIETIES +OVERANXIETY +OVERANXIOUS +OVERAPPLICATION +OVERAPT +OVERARCH +OVERARCHED +OVERARCHES +OVERARCHING +OVERARM +OVERARMED +OVERARMING +OVERARMS +OVERAROUSAL +OVERAROUSALS +OVERARRANGE +OVERARRANGED +OVERARRANGES +OVERARRANGING +OVERARTICULATE +OVERARTICULATED +OVERARTICULATES +OVERASSERT +OVERASSERTED +OVERASSERTING +OVERASSERTION +OVERASSERTIONS +OVERASSERTIVE +OVERASSERTS +OVERASSESSMENT +OVERASSESSMENTS +OVERATE +OVERATTENTION +OVERATTENTIONS +OVERAWE +OVERAWED +OVERAWES +OVERAWING +OVERBAKE +OVERBAKED +OVERBAKES +OVERBAKING +OVERBALANCE +OVERBALANCED +OVERBALANCES +OVERBALANCING +OVERBEAR +OVERBEARING +OVERBEARINGLY +OVERBEARS +OVERBEAT +OVERBEATEN +OVERBEATING +OVERBEATS +OVERBED +OVERBEJEWELED +OVERBET +OVERBETS +OVERBETTED +OVERBETTING +OVERBID +OVERBIDDEN +OVERBIDDING +OVERBIDS +OVERBIG +OVERBILL +OVERBILLED +OVERBILLING +OVERBILLS +OVERBITE +OVERBITES +OVERBLEACH +OVERBLEACHED +OVERBLEACHES +OVERBLEACHING +OVERBLEW +OVERBLOUSE +OVERBLOUSES +OVERBLOW +OVERBLOWING +OVERBLOWN +OVERBLOWS +OVERBOARD +OVERBOIL +OVERBOILED +OVERBOILING +OVERBOILS +OVERBOLD +OVERBOOK +OVERBOOKED +OVERBOOKING +OVERBOOKS +OVERBORE +OVERBORN +OVERBORNE +OVERBORROW +OVERBORROWED +OVERBORROWING +OVERBORROWS +OVERBOUGHT +OVERBRAKE +OVERBRAKED +OVERBRAKES +OVERBRAKING +OVERBREATHING +OVERBREATHINGS +OVERBRED +OVERBREED +OVERBREEDING +OVERBREEDS +OVERBRIEF +OVERBRIEFED +OVERBRIEFING +OVERBRIEFS +OVERBRIGHT +OVERBROAD +OVERBROWSE +OVERBROWSED +OVERBROWSES +OVERBROWSING +OVERBRUTAL +OVERBUILD +OVERBUILDING +OVERBUILDS +OVERBUILT +OVERBURDEN +OVERBURDENED +OVERBURDENING +OVERBURDENS +OVERBURN +OVERBURNED +OVERBURNING +OVERBURNS +OVERBURNT +OVERBUSY +OVERBUY +OVERBUYING +OVERBUYS +OVERCALL +OVERCALLED +OVERCALLING +OVERCALLS +OVERCAME +OVERCAPACITIES +OVERCAPACITY +OVERCAPITALIZE +OVERCAPITALIZED +OVERCAPITALIZES +OVERCAREFUL +OVERCAST +OVERCASTED +OVERCASTING +OVERCASTINGS +OVERCASTS +OVERCAUTION +OVERCAUTIONS +OVERCAUTIOUS +OVERCENTRALIZE +OVERCENTRALIZED +OVERCENTRALIZES +OVERCHARGE +OVERCHARGED +OVERCHARGES +OVERCHARGING +OVERCHEAP +OVERCHILL +OVERCHILLED +OVERCHILLING +OVERCHILLS +OVERCIVIL +OVERCIVILIZED +OVERCLAIM +OVERCLAIMED +OVERCLAIMING +OVERCLAIMS +OVERCLASS +OVERCLASSES +OVERCLASSIFIED +OVERCLASSIFIES +OVERCLASSIFY +OVERCLASSIFYING +OVERCLEAN +OVERCLEANED +OVERCLEANING +OVERCLEANS +OVERCLEAR +OVERCLEARED +OVERCLEARING +OVERCLEARS +OVERCLOSE +OVERCLOUD +OVERCLOUDED +OVERCLOUDING +OVERCLOUDS +OVERCOACH +OVERCOACHED +OVERCOACHES +OVERCOACHING +OVERCOAT +OVERCOATS +OVERCOLD +OVERCOLOR +OVERCOLORED +OVERCOLORING +OVERCOLORS +OVERCOME +OVERCOMER +OVERCOMERS +OVERCOMES +OVERCOMING +OVERCOMMIT +OVERCOMMITMENT +OVERCOMMITMENTS +OVERCOMMITS +OVERCOMMITTED +OVERCOMMITTING +OVERCOMMUNICATE +OVERCOMPENSATE +OVERCOMPENSATED +OVERCOMPENSATES +OVERCOMPLEX +OVERCOMPLIANCE +OVERCOMPLIANCES +OVERCOMPLICATE +OVERCOMPLICATED +OVERCOMPLICATES +OVERCOMPRESS +OVERCOMPRESSED +OVERCOMPRESSES +OVERCOMPRESSING +OVERCONCERN +OVERCONCERNED +OVERCONCERNING +OVERCONCERNS +OVERCONFIDENCE +OVERCONFIDENCES +OVERCONFIDENT +OVERCONFIDENTLY +OVERCONSCIOUS +OVERCONSTRUCT +OVERCONSTRUCTED +OVERCONSTRUCTS +OVERCONSUME +OVERCONSUMED +OVERCONSUMES +OVERCONSUMING +OVERCONSUMPTION +OVERCONTROL +OVERCONTROLLED +OVERCONTROLLING +OVERCONTROLS +OVERCOOK +OVERCOOKED +OVERCOOKING +OVERCOOKS +OVERCOOL +OVERCOOLED +OVERCOOLING +OVERCOOLS +OVERCORRECT +OVERCORRECTED +OVERCORRECTING +OVERCORRECTS +OVERCOUNT +OVERCOUNTED +OVERCOUNTING +OVERCOUNTS +OVERCOY +OVERCRAM +OVERCRAMMED +OVERCRAMMING +OVERCRAMS +OVERCREDULOUS +OVERCRITICAL +OVERCROP +OVERCROPPED +OVERCROPPING +OVERCROPS +OVERCROWD +OVERCROWDED +OVERCROWDING +OVERCROWDS +OVERCULTIVATION +OVERCURE +OVERCURED +OVERCURES +OVERCURING +OVERCUT +OVERCUTS +OVERCUTTING +OVERDARE +OVERDARED +OVERDARES +OVERDARING +OVERDEAR +OVERDECK +OVERDECKED +OVERDECKING +OVERDECKS +OVERDECORATE +OVERDECORATED +OVERDECORATES +OVERDECORATING +OVERDECORATION +OVERDECORATIONS +OVERDEMANDING +OVERDEPENDENCE +OVERDEPENDENCES +OVERDEPENDENT +OVERDESIGN +OVERDESIGNED +OVERDESIGNING +OVERDESIGNS +OVERDETERMINED +OVERDEVELOP +OVERDEVELOPED +OVERDEVELOPING +OVERDEVELOPMENT +OVERDEVELOPS +OVERDID +OVERDIRECT +OVERDIRECTED +OVERDIRECTING +OVERDIRECTS +OVERDISCOUNT +OVERDISCOUNTED +OVERDISCOUNTING +OVERDISCOUNTS +OVERDIVERSITIES +OVERDIVERSITY +OVERDO +OVERDOCUMENT +OVERDOCUMENTED +OVERDOCUMENTING +OVERDOCUMENTS +OVERDOER +OVERDOERS +OVERDOES +OVERDOG +OVERDOGS +OVERDOING +OVERDOMINANCE +OVERDOMINANCES +OVERDOMINANT +OVERDONE +OVERDOSAGE +OVERDOSAGES +OVERDOSE +OVERDOSED +OVERDOSES +OVERDOSING +OVERDRAFT +OVERDRAFTS +OVERDRAMATIC +OVERDRAMATIZE +OVERDRAMATIZED +OVERDRAMATIZES +OVERDRAMATIZING +OVERDRANK +OVERDRAW +OVERDRAWING +OVERDRAWN +OVERDRAWS +OVERDRESS +OVERDRESSED +OVERDRESSES +OVERDRESSING +OVERDREW +OVERDRIED +OVERDRIES +OVERDRINK +OVERDRINKING +OVERDRINKS +OVERDRIVE +OVERDRIVEN +OVERDRIVES +OVERDRIVING +OVERDROVE +OVERDRUNK +OVERDRY +OVERDRYING +OVERDUB +OVERDUBBED +OVERDUBBING +OVERDUBS +OVERDUE +OVERDYE +OVERDYED +OVERDYEING +OVERDYER +OVERDYERS +OVERDYES +OVEREAGER +OVEREAGERNESS +OVEREAGERNESSES +OVEREARNEST +OVEREASY +OVEREAT +OVEREATEN +OVEREATER +OVEREATERS +OVEREATING +OVEREATS +OVERED +OVEREDIT +OVEREDITED +OVEREDITING +OVEREDITS +OVEREDUCATE +OVEREDUCATED +OVEREDUCATES +OVEREDUCATING +OVEREDUCATION +OVEREDUCATIONS +OVERELABORATE +OVERELABORATED +OVERELABORATES +OVERELABORATING +OVERELABORATION +OVEREMBELLISH +OVEREMBELLISHED +OVEREMBELLISHES +OVEREMOTE +OVEREMOTED +OVEREMOTES +OVEREMOTING +OVEREMOTIONAL +OVEREMPHASES +OVEREMPHASIS +OVEREMPHASIZE +OVEREMPHASIZED +OVEREMPHASIZES +OVEREMPHASIZING +OVEREMPHATIC +OVERENAMORED +OVERENCOURAGE +OVERENCOURAGED +OVERENCOURAGES +OVERENCOURAGING +OVERENERGETIC +OVERENGINEER +OVERENGINEERED +OVERENGINEERING +OVERENGINEERS +OVERENROLLED +OVERENTERTAINED +OVERENTHUSIASM +OVERENTHUSIASMS +OVEREQUIPPED +OVERESTIMATE +OVERESTIMATED +OVERESTIMATES +OVERESTIMATING +OVERESTIMATION +OVERESTIMATIONS +OVEREVALUATION +OVEREVALUATIONS +OVEREXAGGERATE +OVEREXAGGERATED +OVEREXAGGERATES +OVEREXCITE +OVEREXCITED +OVEREXCITES +OVEREXCITING +OVEREXERCISE +OVEREXERCISED +OVEREXERCISES +OVEREXERCISING +OVEREXERT +OVEREXERTED +OVEREXERTING +OVEREXERTION +OVEREXERTIONS +OVEREXERTS +OVEREXPAND +OVEREXPANDED +OVEREXPANDING +OVEREXPANDS +OVEREXPANSION +OVEREXPANSIONS +OVEREXPECTATION +OVEREXPLAIN +OVEREXPLAINED +OVEREXPLAINING +OVEREXPLAINS +OVEREXPLICIT +OVEREXPLOIT +OVEREXPLOITED +OVEREXPLOITING +OVEREXPLOITS +OVEREXPOSE +OVEREXPOSED +OVEREXPOSES +OVEREXPOSING +OVEREXPOSURE +OVEREXPOSURES +OVEREXTEND +OVEREXTENDED +OVEREXTENDING +OVEREXTENDS +OVEREXTENSION +OVEREXTENSIONS +OVEREXTRACTION +OVEREXTRACTIONS +OVEREXTRAVAGANT +OVEREXUBERANT +OVERFACILE +OVERFAMILIAR +OVERFAMILIARITY +OVERFAR +OVERFAST +OVERFASTIDIOUS +OVERFAT +OVERFATIGUE +OVERFATIGUED +OVERFATIGUES +OVERFAVOR +OVERFAVORED +OVERFAVORING +OVERFAVORS +OVERFEAR +OVERFEARED +OVERFEARING +OVERFEARS +OVERFED +OVERFEED +OVERFEEDING +OVERFEEDS +OVERFERTILIZE +OVERFERTILIZED +OVERFERTILIZES +OVERFERTILIZING +OVERFILL +OVERFILLED +OVERFILLING +OVERFILLS +OVERFISH +OVERFISHED +OVERFISHES +OVERFISHING +OVERFIT +OVERFLEW +OVERFLIES +OVERFLIGHT +OVERFLIGHTS +OVERFLOOD +OVERFLOODED +OVERFLOODING +OVERFLOODS +OVERFLOW +OVERFLOWED +OVERFLOWING +OVERFLOWN +OVERFLOWS +OVERFLY +OVERFLYING +OVERFOCUS +OVERFOCUSED +OVERFOCUSES +OVERFOCUSING +OVERFOCUSSED +OVERFOCUSSES +OVERFOCUSSING +OVERFOND +OVERFOUL +OVERFRANK +OVERFREE +OVERFULFILL +OVERFULFILLED +OVERFULFILLING +OVERFULFILLS +OVERFULL +OVERFUND +OVERFUNDED +OVERFUNDING +OVERFUNDS +OVERFUSSY +OVERGARMENT +OVERGARMENTS +OVERGENERALIZE +OVERGENERALIZED +OVERGENERALIZES +OVERGENEROSITY +OVERGENEROUS +OVERGENEROUSLY +OVERGILD +OVERGILDED +OVERGILDING +OVERGILDS +OVERGILT +OVERGIRD +OVERGIRDED +OVERGIRDING +OVERGIRDS +OVERGIRT +OVERGLAD +OVERGLAMORIZE +OVERGLAMORIZED +OVERGLAMORIZES +OVERGLAMORIZING +OVERGLAZE +OVERGLAZED +OVERGLAZES +OVERGLAZING +OVERGOAD +OVERGOADED +OVERGOADING +OVERGOADS +OVERGOVERN +OVERGOVERNED +OVERGOVERNING +OVERGOVERNS +OVERGRADE +OVERGRADED +OVERGRADES +OVERGRADING +OVERGRAZE +OVERGRAZED +OVERGRAZES +OVERGRAZING +OVERGREAT +OVERGREW +OVERGROW +OVERGROWING +OVERGROWN +OVERGROWS +OVERGROWTH +OVERGROWTHS +OVERHAND +OVERHANDED +OVERHANDING +OVERHANDLE +OVERHANDLED +OVERHANDLES +OVERHANDLING +OVERHANDS +OVERHANG +OVERHANGING +OVERHANGS +OVERHARD +OVERHARVEST +OVERHARVESTED +OVERHARVESTING +OVERHARVESTS +OVERHASTY +OVERHATE +OVERHATED +OVERHATES +OVERHATING +OVERHAUL +OVERHAULED +OVERHAULING +OVERHAULS +OVERHEAD +OVERHEADS +OVERHEAP +OVERHEAPED +OVERHEAPING +OVERHEAPS +OVERHEAR +OVERHEARD +OVERHEARING +OVERHEARS +OVERHEAT +OVERHEATED +OVERHEATING +OVERHEATS +OVERHELD +OVERHIGH +OVERHOLD +OVERHOLDING +OVERHOLDS +OVERHOLY +OVERHOMOGENIZE +OVERHOMOGENIZED +OVERHOMOGENIZES +OVERHONOR +OVERHONORED +OVERHONORING +OVERHONORS +OVERHOPE +OVERHOPED +OVERHOPES +OVERHOPING +OVERHOT +OVERHUNG +OVERHUNT +OVERHUNTED +OVERHUNTING +OVERHUNTINGS +OVERHUNTS +OVERHYPE +OVERHYPED +OVERHYPES +OVERHYPING +OVERIDEALIZE +OVERIDEALIZED +OVERIDEALIZES +OVERIDEALIZING +OVERIDENTIFIED +OVERIDENTIFIES +OVERIDENTIFY +OVERIDENTIFYING +OVERIDLE +OVERIMAGINATIVE +OVERIMPRESS +OVERIMPRESSED +OVERIMPRESSES +OVERIMPRESSING +OVERINDULGE +OVERINDULGED +OVERINDULGENCE +OVERINDULGENCES +OVERINDULGENT +OVERINDULGES +OVERINDULGING +OVERINFLATE +OVERINFLATED +OVERINFLATES +OVERINFLATING +OVERINFLATION +OVERINFLATIONS +OVERINFORM +OVERINFORMED +OVERINFORMING +OVERINFORMS +OVERING +OVERINGENIOUS +OVERINGENUITIES +OVERINGENUITY +OVERINSISTENT +OVERINTENSE +OVERINTENSITIES +OVERINTENSITY +OVERINVESTMENT +OVERINVESTMENTS +OVERISSUANCE +OVERISSUANCES +OVERISSUE +OVERISSUED +OVERISSUES +OVERISSUING +OVERJOY +OVERJOYED +OVERJOYING +OVERJOYS +OVERJUST +OVERKEEN +OVERKILL +OVERKILLED +OVERKILLING +OVERKILLS +OVERKIND +OVERLABOR +OVERLABORED +OVERLABORING +OVERLABORS +OVERLADE +OVERLADED +OVERLADEN +OVERLADES +OVERLADING +OVERLAID +OVERLAIN +OVERLAND +OVERLANDS +OVERLAP +OVERLAPPED +OVERLAPPING +OVERLAPS +OVERLARGE +OVERLATE +OVERLAVISH +OVERLAX +OVERLAY +OVERLAYING +OVERLAYS +OVERLEAF +OVERLEAP +OVERLEAPED +OVERLEAPING +OVERLEAPS +OVERLEAPT +OVERLEARN +OVERLEARNED +OVERLEARNING +OVERLEARNS +OVERLEARNT +OVERLEND +OVERLENDING +OVERLENDS +OVERLENGTH +OVERLENGTHEN +OVERLENGTHENED +OVERLENGTHENING +OVERLENGTHENS +OVERLENGTHS +OVERLENT +OVERLET +OVERLETS +OVERLETTING +OVERLEWD +OVERLIE +OVERLIES +OVERLIGHT +OVERLIGHTED +OVERLIGHTING +OVERLIGHTS +OVERLIT +OVERLITERAL +OVERLITERARY +OVERLIVE +OVERLIVED +OVERLIVES +OVERLIVING +OVERLOAD +OVERLOADED +OVERLOADING +OVERLOADS +OVERLONG +OVERLOOK +OVERLOOKED +OVERLOOKING +OVERLOOKS +OVERLORD +OVERLORDED +OVERLORDING +OVERLORDS +OVERLORDSHIP +OVERLORDSHIPS +OVERLOUD +OVERLOVE +OVERLOVED +OVERLOVES +OVERLOVING +OVERLUSH +OVERLY +OVERLYING +OVERMAN +OVERMANAGE +OVERMANAGED +OVERMANAGES +OVERMANAGING +OVERMANNED +OVERMANNERED +OVERMANNING +OVERMANS +OVERMANTEL +OVERMANTELS +OVERMANY +OVERMASTER +OVERMASTERED +OVERMASTERING +OVERMASTERS +OVERMATCH +OVERMATCHED +OVERMATCHES +OVERMATCHING +OVERMATURE +OVERMATURITIES +OVERMATURITY +OVERMEDICATE +OVERMEDICATED +OVERMEDICATES +OVERMEDICATING +OVERMEDICATION +OVERMEDICATIONS +OVERMEEK +OVERMELT +OVERMELTED +OVERMELTING +OVERMELTS +OVERMEN +OVERMIGHTY +OVERMILD +OVERMILK +OVERMILKED +OVERMILKING +OVERMILKS +OVERMINE +OVERMINED +OVERMINES +OVERMINING +OVERMIX +OVERMIXED +OVERMIXES +OVERMIXING +OVERMODEST +OVERMODESTLY +OVERMUCH +OVERMUCHES +OVERMUSCLED +OVERNEAR +OVERNEAT +OVERNEW +OVERNICE +OVERNIGHT +OVERNIGHTED +OVERNIGHTER +OVERNIGHTERS +OVERNIGHTING +OVERNIGHTS +OVERNOURISH +OVERNOURISHED +OVERNOURISHES +OVERNOURISHING +OVERNUTRITION +OVERNUTRITIONS +OVEROBVIOUS +OVEROPERATE +OVEROPERATED +OVEROPERATES +OVEROPERATING +OVEROPINIONATED +OVEROPTIMISM +OVEROPTIMISMS +OVEROPTIMIST +OVEROPTIMISTIC +OVEROPTIMISTS +OVERORCHESTRATE +OVERORGANIZE +OVERORGANIZED +OVERORGANIZES +OVERORGANIZING +OVERORNAMENT +OVERORNAMENTED +OVERORNAMENTING +OVERORNAMENTS +OVERPACK +OVERPACKAGE +OVERPACKAGED +OVERPACKAGES +OVERPACKAGING +OVERPACKED +OVERPACKING +OVERPACKS +OVERPAID +OVERPARTICULAR +OVERPASS +OVERPASSED +OVERPASSES +OVERPASSING +OVERPAST +OVERPAY +OVERPAYING +OVERPAYMENT +OVERPAYMENTS +OVERPAYS +OVERPEDAL +OVERPEDALED +OVERPEDALING +OVERPEDALLED +OVERPEDALLING +OVERPEDALS +OVERPEOPLE +OVERPEOPLED +OVERPEOPLES +OVERPEOPLING +OVERPERSUADE +OVERPERSUADED +OVERPERSUADES +OVERPERSUADING +OVERPERSUASION +OVERPERSUASIONS +OVERPERT +OVERPLAID +OVERPLAIDED +OVERPLAIDS +OVERPLAN +OVERPLANNED +OVERPLANNING +OVERPLANS +OVERPLANT +OVERPLANTED +OVERPLANTING +OVERPLANTS +OVERPLAY +OVERPLAYED +OVERPLAYING +OVERPLAYS +OVERPLIED +OVERPLIES +OVERPLOT +OVERPLOTS +OVERPLOTTED +OVERPLOTTING +OVERPLUS +OVERPLUSES +OVERPLY +OVERPLYING +OVERPOPULATE +OVERPOPULATED +OVERPOPULATES +OVERPOPULATING +OVERPOPULATION +OVERPOPULATIONS +OVERPOTENT +OVERPOWER +OVERPOWERED +OVERPOWERING +OVERPOWERINGLY +OVERPOWERS +OVERPRAISE +OVERPRAISED +OVERPRAISES +OVERPRAISING +OVERPRECISE +OVERPRESCRIBE +OVERPRESCRIBED +OVERPRESCRIBES +OVERPRESCRIBING +OVERPRESSURE +OVERPRESSURES +OVERPRICE +OVERPRICED +OVERPRICES +OVERPRICING +OVERPRINT +OVERPRINTED +OVERPRINTING +OVERPRINTS +OVERPRIVILEGED +OVERPRIZE +OVERPRIZED +OVERPRIZES +OVERPRIZING +OVERPROCESS +OVERPROCESSED +OVERPROCESSES +OVERPROCESSING +OVERPRODUCE +OVERPRODUCED +OVERPRODUCES +OVERPRODUCING +OVERPRODUCTION +OVERPRODUCTIONS +OVERPROGRAM +OVERPROGRAMED +OVERPROGRAMING +OVERPROGRAMMED +OVERPROGRAMMING +OVERPROGRAMS +OVERPROMISE +OVERPROMISED +OVERPROMISES +OVERPROMISING +OVERPROMOTE +OVERPROMOTED +OVERPROMOTES +OVERPROMOTING +OVERPROOF +OVERPROPORTION +OVERPROPORTIONS +OVERPROTECT +OVERPROTECTED +OVERPROTECTING +OVERPROTECTION +OVERPROTECTIONS +OVERPROTECTIVE +OVERPROTECTS +OVERPROUD +OVERPUMP +OVERPUMPED +OVERPUMPING +OVERPUMPS +OVERQUALIFIED +OVERQUICK +OVERRAN +OVERRANK +OVERRASH +OVERRATE +OVERRATED +OVERRATES +OVERRATING +OVERREACH +OVERREACHED +OVERREACHER +OVERREACHERS +OVERREACHES +OVERREACHING +OVERREACT +OVERREACTED +OVERREACTING +OVERREACTION +OVERREACTIONS +OVERREACTS +OVERREFINED +OVERREFINEMENT +OVERREFINEMENTS +OVERREGULATE +OVERREGULATED +OVERREGULATES +OVERREGULATING +OVERREGULATION +OVERREGULATIONS +OVERRELIANCE +OVERRELIANCES +OVERREPORT +OVERREPORTED +OVERREPORTING +OVERREPORTS +OVERREPRESENTED +OVERRESPOND +OVERRESPONDED +OVERRESPONDING +OVERRESPONDS +OVERRICH +OVERRIDDEN +OVERRIDE +OVERRIDES +OVERRIDING +OVERRIFE +OVERRIGID +OVERRIPE +OVERROAST +OVERROASTED +OVERROASTING +OVERROASTS +OVERRODE +OVERRUDE +OVERRUFF +OVERRUFFED +OVERRUFFING +OVERRUFFS +OVERRULE +OVERRULED +OVERRULES +OVERRULING +OVERRUN +OVERRUNNING +OVERRUNS +OVERS +OVERSAD +OVERSALE +OVERSALES +OVERSALT +OVERSALTED +OVERSALTING +OVERSALTS +OVERSANGUINE +OVERSATURATE +OVERSATURATED +OVERSATURATES +OVERSATURATING +OVERSATURATION +OVERSATURATIONS +OVERSAUCE +OVERSAUCED +OVERSAUCES +OVERSAUCING +OVERSAVE +OVERSAVED +OVERSAVES +OVERSAVING +OVERSAW +OVERSCALE +OVERSCALED +OVERSCORE +OVERSCORED +OVERSCORES +OVERSCORING +OVERSCRUPULOUS +OVERSEA +OVERSEAS +OVERSECRETION +OVERSECRETIONS +OVERSEE +OVERSEED +OVERSEEDED +OVERSEEDING +OVERSEEDS +OVERSEEING +OVERSEEN +OVERSEER +OVERSEERS +OVERSEES +OVERSELL +OVERSELLING +OVERSELLS +OVERSENSITIVE +OVERSENSITIVITY +OVERSERIOUS +OVERSERIOUSLY +OVERSERVICE +OVERSERVICED +OVERSERVICES +OVERSERVICING +OVERSET +OVERSETS +OVERSETTING +OVERSEW +OVERSEWED +OVERSEWING +OVERSEWN +OVERSEWS +OVERSEXED +OVERSHADE +OVERSHADED +OVERSHADES +OVERSHADING +OVERSHADOW +OVERSHADOWED +OVERSHADOWING +OVERSHADOWS +OVERSHARP +OVERSHIRT +OVERSHIRTS +OVERSHOE +OVERSHOES +OVERSHOOT +OVERSHOOTING +OVERSHOOTS +OVERSHOT +OVERSHOTS +OVERSICK +OVERSIDE +OVERSIDES +OVERSIGHT +OVERSIGHTS +OVERSIMPLE +OVERSIMPLIFIED +OVERSIMPLIFIES +OVERSIMPLIFY +OVERSIMPLIFYING +OVERSIMPLISTIC +OVERSIMPLY +OVERSIZE +OVERSIZED +OVERSIZES +OVERSKIRT +OVERSKIRTS +OVERSLAUGH +OVERSLAUGHED +OVERSLAUGHING +OVERSLAUGHS +OVERSLEEP +OVERSLEEPING +OVERSLEEPS +OVERSLEPT +OVERSLIP +OVERSLIPPED +OVERSLIPPING +OVERSLIPS +OVERSLIPT +OVERSLOW +OVERSMOKE +OVERSMOKED +OVERSMOKES +OVERSMOKING +OVERSOAK +OVERSOAKED +OVERSOAKING +OVERSOAKS +OVERSOFT +OVERSOLD +OVERSOLICITOUS +OVERSOON +OVERSOUL +OVERSOULS +OVERSPECIALIZE +OVERSPECIALIZED +OVERSPECIALIZES +OVERSPECULATE +OVERSPECULATED +OVERSPECULATES +OVERSPECULATING +OVERSPECULATION +OVERSPEND +OVERSPENDER +OVERSPENDERS +OVERSPENDING +OVERSPENDS +OVERSPENT +OVERSPICE +OVERSPICED +OVERSPICES +OVERSPICING +OVERSPILL +OVERSPILLED +OVERSPILLING +OVERSPILLS +OVERSPILT +OVERSPIN +OVERSPINS +OVERSPREAD +OVERSPREADING +OVERSPREADS +OVERSTABILITIES +OVERSTABILITY +OVERSTAFF +OVERSTAFFED +OVERSTAFFING +OVERSTAFFS +OVERSTATE +OVERSTATED +OVERSTATEMENT +OVERSTATEMENTS +OVERSTATES +OVERSTATING +OVERSTAY +OVERSTAYED +OVERSTAYING +OVERSTAYS +OVERSTEER +OVERSTEERED +OVERSTEERING +OVERSTEERS +OVERSTEP +OVERSTEPPED +OVERSTEPPING +OVERSTEPS +OVERSTIMULATE +OVERSTIMULATED +OVERSTIMULATES +OVERSTIMULATING +OVERSTIMULATION +OVERSTIR +OVERSTIRRED +OVERSTIRRING +OVERSTIRS +OVERSTOCK +OVERSTOCKED +OVERSTOCKING +OVERSTOCKS +OVERSTORIES +OVERSTORY +OVERSTRAIN +OVERSTRAINED +OVERSTRAINING +OVERSTRAINS +OVERSTRESS +OVERSTRESSED +OVERSTRESSES +OVERSTRESSING +OVERSTRETCH +OVERSTRETCHED +OVERSTRETCHES +OVERSTRETCHING +OVERSTREW +OVERSTREWED +OVERSTREWING +OVERSTREWN +OVERSTREWS +OVERSTRIDDEN +OVERSTRIDE +OVERSTRIDES +OVERSTRIDING +OVERSTRODE +OVERSTRUCTURED +OVERSTRUNG +OVERSTUDIED +OVERSTUDIES +OVERSTUDY +OVERSTUDYING +OVERSTUFF +OVERSTUFFED +OVERSTUFFING +OVERSTUFFS +OVERSUBSCRIBE +OVERSUBSCRIBED +OVERSUBSCRIBES +OVERSUBSCRIBING +OVERSUBTLE +OVERSUDS +OVERSUDSED +OVERSUDSES +OVERSUDSING +OVERSUP +OVERSUPPED +OVERSUPPING +OVERSUPPLIED +OVERSUPPLIES +OVERSUPPLY +OVERSUPPLYING +OVERSUPS +OVERSURE +OVERSUSPICIOUS +OVERSWEET +OVERSWEETEN +OVERSWEETENED +OVERSWEETENING +OVERSWEETENS +OVERSWEETNESS +OVERSWEETNESSES +OVERSWING +OVERSWINGING +OVERSWINGS +OVERSWUNG +OVERT +OVERTAKE +OVERTAKEN +OVERTAKES +OVERTAKING +OVERTALK +OVERTALKATIVE +OVERTALKED +OVERTALKING +OVERTALKS +OVERTAME +OVERTART +OVERTASK +OVERTASKED +OVERTASKING +OVERTASKS +OVERTAUGHT +OVERTAX +OVERTAXATION +OVERTAXATIONS +OVERTAXED +OVERTAXES +OVERTAXING +OVERTEACH +OVERTEACHES +OVERTEACHING +OVERTHICK +OVERTHIN +OVERTHINK +OVERTHINKING +OVERTHINKS +OVERTHOUGHT +OVERTHREW +OVERTHROW +OVERTHROWING +OVERTHROWN +OVERTHROWS +OVERTIGHT +OVERTIGHTEN +OVERTIGHTENED +OVERTIGHTENING +OVERTIGHTENS +OVERTIME +OVERTIMED +OVERTIMES +OVERTIMID +OVERTIMING +OVERTIP +OVERTIPPED +OVERTIPPING +OVERTIPS +OVERTIRE +OVERTIRED +OVERTIRES +OVERTIRING +OVERTLY +OVERTNESS +OVERTNESSES +OVERTOIL +OVERTOILED +OVERTOILING +OVERTOILS +OVERTONE +OVERTONES +OVERTOOK +OVERTOP +OVERTOPPED +OVERTOPPING +OVERTOPS +OVERTRADE +OVERTRADED +OVERTRADES +OVERTRADING +OVERTRAIN +OVERTRAINED +OVERTRAINING +OVERTRAINS +OVERTREAT +OVERTREATED +OVERTREATING +OVERTREATMENT +OVERTREATMENTS +OVERTREATS +OVERTRICK +OVERTRICKS +OVERTRIM +OVERTRIMMED +OVERTRIMMING +OVERTRIMS +OVERTRUMP +OVERTRUMPED +OVERTRUMPING +OVERTRUMPS +OVERTURE +OVERTURED +OVERTURES +OVERTURING +OVERTURN +OVERTURNED +OVERTURNING +OVERTURNS +OVERURGE +OVERURGED +OVERURGES +OVERURGING +OVERUSE +OVERUSED +OVERUSES +OVERUSING +OVERUTILIZATION +OVERUTILIZE +OVERUTILIZED +OVERUTILIZES +OVERUTILIZING +OVERVALUATION +OVERVALUATIONS +OVERVALUE +OVERVALUED +OVERVALUES +OVERVALUING +OVERVIEW +OVERVIEWS +OVERVIOLENT +OVERVIVID +OVERVOLTAGE +OVERVOLTAGES +OVERVOTE +OVERVOTED +OVERVOTES +OVERVOTING +OVERWARM +OVERWARMED +OVERWARMING +OVERWARMS +OVERWARY +OVERWATCH +OVERWATCHED +OVERWATCHES +OVERWATCHING +OVERWATER +OVERWATERED +OVERWATERING +OVERWATERS +OVERWEAK +OVERWEAR +OVERWEARIED +OVERWEARIES +OVERWEARING +OVERWEARS +OVERWEARY +OVERWEARYING +OVERWEEN +OVERWEENED +OVERWEENING +OVERWEENINGLY +OVERWEENS +OVERWEIGH +OVERWEIGHED +OVERWEIGHING +OVERWEIGHS +OVERWEIGHT +OVERWEIGHTED +OVERWEIGHTING +OVERWEIGHTS +OVERWET +OVERWETS +OVERWETTED +OVERWETTING +OVERWHELM +OVERWHELMED +OVERWHELMING +OVERWHELMINGLY +OVERWHELMS +OVERWIDE +OVERWILY +OVERWIND +OVERWINDING +OVERWINDS +OVERWINTER +OVERWINTERED +OVERWINTERING +OVERWINTERS +OVERWISE +OVERWITHHELD +OVERWITHHOLD +OVERWITHHOLDING +OVERWITHHOLDS +OVERWORD +OVERWORDS +OVERWORE +OVERWORK +OVERWORKED +OVERWORKING +OVERWORKS +OVERWORN +OVERWOUND +OVERWRITE +OVERWRITES +OVERWRITING +OVERWRITTEN +OVERWROTE +OVERWROUGHT +OVERZEAL +OVERZEALOUS +OVERZEALOUSNESS +OVERZEALS +OVIBOS +OVICIDAL +OVICIDE +OVICIDES +OVIDUCAL +OVIDUCT +OVIDUCTAL +OVIDUCTS +OVIFEROUS +OVIFORM +OVINE +OVINES +OVIPARA +OVIPARITIES +OVIPARITY +OVIPAROUS +OVIPOSIT +OVIPOSITED +OVIPOSITING +OVIPOSITION +OVIPOSITIONAL +OVIPOSITIONS +OVIPOSITOR +OVIPOSITORS +OVIPOSITS +OVIRAPTOR +OVIRAPTORS +OVISAC +OVISACS +OVOID +OVOIDAL +OVOIDALS +OVOIDS +OVOLI +OVOLO +OVOLOS +OVONIC +OVONICS +OVOTESTES +OVOTESTIS +OVOVIVIPAROUS +OVOVIVIPAROUSLY +OVULAR +OVULARY +OVULATE +OVULATED +OVULATES +OVULATING +OVULATION +OVULATIONS +OVULATORY +OVULE +OVULES +OVUM +OW +OWE +OWED +OWES +OWING +OWL +OWLET +OWLETS +OWLISH +OWLISHLY +OWLISHNESS +OWLISHNESSES +OWLLIKE +OWLS +OWN +OWNABLE +OWNED +OWNER +OWNERS +OWNERSHIP +OWNERSHIPS +OWNING +OWNS +OWSE +OWSEN +OX +OXACILLIN +OXACILLINS +OXALACETATE +OXALACETATES +OXALATE +OXALATED +OXALATES +OXALATING +OXALIC +OXALIS +OXALISES +OXALOACETATE +OXALOACETATES +OXAZEPAM +OXAZEPAMS +OXAZINE +OXAZINES +OXBLOOD +OXBLOODS +OXBOW +OXBOWS +OXCART +OXCARTS +OXEN +OXES +OXEYE +OXEYES +OXFORD +OXFORDS +OXHEART +OXHEARTS +OXID +OXIDABLE +OXIDANT +OXIDANTS +OXIDASE +OXIDASES +OXIDASIC +OXIDATE +OXIDATED +OXIDATES +OXIDATING +OXIDATION +OXIDATIONS +OXIDATIVE +OXIDATIVELY +OXIDE +OXIDES +OXIDIC +OXIDISE +OXIDISED +OXIDISER +OXIDISERS +OXIDISES +OXIDISING +OXIDIZABLE +OXIDIZE +OXIDIZED +OXIDIZER +OXIDIZERS +OXIDIZES +OXIDIZING +OXIDOREDUCTASE +OXIDOREDUCTASES +OXIDS +OXIM +OXIME +OXIMES +OXIMETER +OXIMETERS +OXIMETRIES +OXIMETRY +OXIMS +OXLIKE +OXLIP +OXLIPS +OXO +OXPECKER +OXPECKERS +OXTAIL +OXTAILS +OXTER +OXTERS +OXTONGUE +OXTONGUES +OXY +OXYACETYLENE +OXYACID +OXYACIDS +OXYCODONE +OXYCODONES +OXYGEN +OXYGENASE +OXYGENASES +OXYGENATE +OXYGENATED +OXYGENATES +OXYGENATING +OXYGENATION +OXYGENATIONS +OXYGENATOR +OXYGENATORS +OXYGENIC +OXYGENIZE +OXYGENIZED +OXYGENIZES +OXYGENIZING +OXYGENLESS +OXYGENOUS +OXYGENS +OXYHEMOGLOBIN +OXYHEMOGLOBINS +OXYHYDROGEN +OXYMORA +OXYMORON +OXYMORONIC +OXYMORONICALLY +OXYMORONS +OXYPHENBUTAZONE +OXYPHIL +OXYPHILE +OXYPHILES +OXYPHILIC +OXYPHILS +OXYSALT +OXYSALTS +OXYSOME +OXYSOMES +OXYTETRACYCLINE +OXYTOCIC +OXYTOCICS +OXYTOCIN +OXYTOCINS +OXYTONE +OXYTONES +OXYURIASES +OXYURIASIS +OY +OYER +OYERS +OYES +OYESSES +OYEZ +OYEZES +OYSTER +OYSTERCATCHER +OYSTERCATCHERS +OYSTERED +OYSTERER +OYSTERERS +OYSTERING +OYSTERINGS +OYSTERMAN +OYSTERMEN +OYSTERS +OZALID +OZALIDS +OZOCERITE +OZOCERITES +OZOKERITE +OZOKERITES +OZONATE +OZONATED +OZONATES +OZONATING +OZONATION +OZONATIONS +OZONE +OZONES +OZONIC +OZONIDE +OZONIDES +OZONISE +OZONISED +OZONISES +OZONISING +OZONIZATION +OZONIZATIONS +OZONIZE +OZONIZED +OZONIZER +OZONIZERS +OZONIZES +OZONIZING +OZONOSPHERE +OZONOSPHERES +OZONOUS +PA +PABLUM +PABLUMS +PABULAR +PABULUM +PABULUMS +PAC +PACA +PACAS +PACE +PACED +PACEMAKER +PACEMAKERS +PACEMAKING +PACEMAKINGS +PACER +PACERS +PACES +PACESETTER +PACESETTERS +PACESETTING +PACEY +PACHA +PACHADOM +PACHADOMS +PACHALIC +PACHALICS +PACHAS +PACHINKO +PACHINKOS +PACHISI +PACHISIS +PACHOULI +PACHOULIS +PACHUCO +PACHUCOS +PACHYDERM +PACHYDERMATOUS +PACHYDERMS +PACHYSANDRA +PACHYSANDRAS +PACHYTENE +PACHYTENES +PACIER +PACIEST +PACIFIABLE +PACIFIC +PACIFICAL +PACIFICALLY +PACIFICATION +PACIFICATIONS +PACIFICATOR +PACIFICATORS +PACIFICISM +PACIFICISMS +PACIFICIST +PACIFICISTS +PACIFIED +PACIFIER +PACIFIERS +PACIFIES +PACIFISM +PACIFISMS +PACIFIST +PACIFISTIC +PACIFISTICALLY +PACIFISTS +PACIFY +PACIFYING +PACING +PACK +PACKABILITIES +PACKABILITY +PACKABLE +PACKAGE +PACKAGED +PACKAGER +PACKAGERS +PACKAGES +PACKAGING +PACKAGINGS +PACKBOARD +PACKBOARDS +PACKED +PACKER +PACKERS +PACKET +PACKETED +PACKETING +PACKETS +PACKHORSE +PACKHORSES +PACKING +PACKINGHOUSE +PACKINGHOUSES +PACKINGS +PACKLY +PACKMAN +PACKMEN +PACKNESS +PACKNESSES +PACKS +PACKSACK +PACKSACKS +PACKSADDLE +PACKSADDLES +PACKTHREAD +PACKTHREADS +PACKWAX +PACKWAXES +PACLITAXEL +PACLITAXELS +PACS +PACT +PACTION +PACTIONS +PACTS +PACY +PAD +PADAUK +PADAUKS +PADDED +PADDER +PADDERS +PADDIES +PADDING +PADDINGS +PADDLE +PADDLEBALL +PADDLEBALLS +PADDLEBOARD +PADDLEBOARDS +PADDLEBOAT +PADDLEBOATS +PADDLED +PADDLEFISH +PADDLEFISHES +PADDLER +PADDLERS +PADDLES +PADDLING +PADDLINGS +PADDOCK +PADDOCKED +PADDOCKING +PADDOCKS +PADDY +PADDYWACK +PADDYWACKED +PADDYWACKING +PADDYWACKS +PADI +PADIS +PADISHAH +PADISHAHS +PADLE +PADLES +PADLOCK +PADLOCKED +PADLOCKING +PADLOCKS +PADNAG +PADNAGS +PADOUK +PADOUKS +PADRE +PADRES +PADRI +PADRONE +PADRONES +PADRONI +PADRONISM +PADRONISMS +PADS +PADSHAH +PADSHAHS +PADUASOY +PADUASOYS +PAEAN +PAEANISM +PAEANISMS +PAEANS +PAEDIATRIC +PAEDIATRICIAN +PAEDIATRICIANS +PAEDIATRICS +PAEDOGENESES +PAEDOGENESIS +PAEDOGENETIC +PAEDOGENIC +PAEDOMORPHIC +PAEDOMORPHISM +PAEDOMORPHISMS +PAEDOMORPHOSES +PAEDOMORPHOSIS +PAELLA +PAELLAS +PAEON +PAEONS +PAESAN +PAESANI +PAESANO +PAESANOS +PAESANS +PAGAN +PAGANDOM +PAGANDOMS +PAGANISE +PAGANISED +PAGANISES +PAGANISH +PAGANISING +PAGANISM +PAGANISMS +PAGANIST +PAGANISTS +PAGANIZE +PAGANIZED +PAGANIZER +PAGANIZERS +PAGANIZES +PAGANIZING +PAGANS +PAGE +PAGEANT +PAGEANTRIES +PAGEANTRY +PAGEANTS +PAGEBOY +PAGEBOYS +PAGED +PAGEFUL +PAGEFULS +PAGER +PAGERS +PAGES +PAGINAL +PAGINATE +PAGINATED +PAGINATES +PAGINATING +PAGINATION +PAGINATIONS +PAGING +PAGINGS +PAGOD +PAGODA +PAGODAS +PAGODS +PAGURIAN +PAGURIANS +PAGURID +PAGURIDS +PAH +PAHLAVI +PAHLAVIS +PAHOEHOE +PAHOEHOES +PAID +PAIK +PAIKED +PAIKING +PAIKS +PAIL +PAILFUL +PAILFULS +PAILLARD +PAILLARDS +PAILLASSE +PAILLASSES +PAILLETTE +PAILLETTES +PAILS +PAILSFUL +PAIN +PAINCH +PAINCHES +PAINED +PAINFUL +PAINFULLER +PAINFULLEST +PAINFULLY +PAINFULNESS +PAINFULNESSES +PAINING +PAINKILLER +PAINKILLERS +PAINKILLING +PAINLESS +PAINLESSLY +PAINLESSNESS +PAINLESSNESSES +PAINS +PAINSTAKING +PAINSTAKINGLY +PAINSTAKINGS +PAINT +PAINTABLE +PAINTBALL +PAINTBALLS +PAINTBRUSH +PAINTBRUSHES +PAINTED +PAINTER +PAINTERLINESS +PAINTERLINESSES +PAINTERLY +PAINTERS +PAINTIER +PAINTIEST +PAINTING +PAINTINGS +PAINTS +PAINTWORK +PAINTWORKS +PAINTY +PAIR +PAIRED +PAIRING +PAIRINGS +PAIRS +PAISA +PAISAN +PAISANA +PAISANAS +PAISANO +PAISANOS +PAISANS +PAISAS +PAISE +PAISLEY +PAISLEYS +PAJAMA +PAJAMAED +PAJAMAS +PAKEHA +PAKEHAS +PAKORA +PAKORAS +PAL +PALABRA +PALABRAS +PALACE +PALACED +PALACES +PALADIN +PALADINS +PALAESTRA +PALAESTRAE +PALAESTRAS +PALAIS +PALANKEEN +PALANKEENS +PALANQUIN +PALANQUINS +PALAPA +PALAPAS +PALATABILITIES +PALATABILITY +PALATABLE +PALATABLENESS +PALATABLENESSES +PALATABLY +PALATAL +PALATALIZATION +PALATALIZATIONS +PALATALIZE +PALATALIZED +PALATALIZES +PALATALIZING +PALATALLY +PALATALS +PALATE +PALATES +PALATIAL +PALATIALLY +PALATIALNESS +PALATIALNESSES +PALATINATE +PALATINATES +PALATINE +PALATINES +PALAVER +PALAVERED +PALAVERER +PALAVERERS +PALAVERING +PALAVERS +PALAZZI +PALAZZO +PALAZZOS +PALE +PALEA +PALEAE +PALEAL +PALEATE +PALED +PALEFACE +PALEFACES +PALELY +PALENESS +PALENESSES +PALEOBIOLOGIC +PALEOBIOLOGICAL +PALEOBIOLOGIES +PALEOBIOLOGIST +PALEOBIOLOGISTS +PALEOBIOLOGY +PALEOBOTANIC +PALEOBOTANICAL +PALEOBOTANIES +PALEOBOTANIST +PALEOBOTANISTS +PALEOBOTANY +PALEOCENE +PALEOECOLOGIC +PALEOECOLOGICAL +PALEOECOLOGIES +PALEOECOLOGIST +PALEOECOLOGISTS +PALEOECOLOGY +PALEOGENE +PALEOGEOGRAPHIC +PALEOGEOGRAPHY +PALEOGRAPHER +PALEOGRAPHERS +PALEOGRAPHIC +PALEOGRAPHICAL +PALEOGRAPHIES +PALEOGRAPHY +PALEOLITH +PALEOLITHS +PALEOLOGIES +PALEOLOGY +PALEOMAGNETIC +PALEOMAGNETISM +PALEOMAGNETISMS +PALEOMAGNETIST +PALEOMAGNETISTS +PALEONTOLOGIC +PALEONTOLOGICAL +PALEONTOLOGIES +PALEONTOLOGIST +PALEONTOLOGISTS +PALEONTOLOGY +PALEOPATHOLOGY +PALEOSOL +PALEOSOLS +PALEOZOIC +PALEOZOOLOGICAL +PALEOZOOLOGIES +PALEOZOOLOGIST +PALEOZOOLOGISTS +PALEOZOOLOGY +PALER +PALES +PALEST +PALESTRA +PALESTRAE +PALESTRAL +PALESTRAS +PALET +PALETOT +PALETOTS +PALETS +PALETTE +PALETTES +PALEWAYS +PALEWISE +PALFREY +PALFREYS +PALIER +PALIEST +PALIKAR +PALIKARS +PALIMONIES +PALIMONY +PALIMPSEST +PALIMPSESTS +PALINDROME +PALINDROMES +PALINDROMIC +PALINDROMIST +PALINDROMISTS +PALING +PALINGENESES +PALINGENESIS +PALINGENETIC +PALINGS +PALINODE +PALINODES +PALISADE +PALISADED +PALISADES +PALISADING +PALISH +PALL +PALLADIA +PALLADIC +PALLADIUM +PALLADIUMS +PALLADOUS +PALLBEARER +PALLBEARERS +PALLED +PALLET +PALLETED +PALLETING +PALLETISE +PALLETISED +PALLETISES +PALLETISING +PALLETIZATION +PALLETIZATIONS +PALLETIZE +PALLETIZED +PALLETIZER +PALLETIZERS +PALLETIZES +PALLETIZING +PALLETS +PALLETTE +PALLETTES +PALLIA +PALLIAL +PALLIASSE +PALLIASSES +PALLIATE +PALLIATED +PALLIATES +PALLIATING +PALLIATION +PALLIATIONS +PALLIATIVE +PALLIATIVELY +PALLIATIVES +PALLIATOR +PALLIATORS +PALLID +PALLIDLY +PALLIDNESS +PALLIDNESSES +PALLIER +PALLIEST +PALLING +PALLIUM +PALLIUMS +PALLOR +PALLORS +PALLS +PALLY +PALM +PALMAR +PALMARY +PALMATE +PALMATED +PALMATELY +PALMATION +PALMATIONS +PALMED +PALMER +PALMERS +PALMERWORM +PALMERWORMS +PALMETTE +PALMETTES +PALMETTO +PALMETTOES +PALMETTOS +PALMFUL +PALMFULS +PALMIER +PALMIEST +PALMING +PALMIST +PALMISTER +PALMISTERS +PALMISTRIES +PALMISTRY +PALMISTS +PALMITATE +PALMITATES +PALMITIN +PALMITINS +PALMLIKE +PALMS +PALMTOP +PALMTOPS +PALMY +PALMYRA +PALMYRAS +PALOMINO +PALOMINOS +PALOOKA +PALOOKAS +PALOVERDE +PALOVERDES +PALP +PALPABILITIES +PALPABILITY +PALPABLE +PALPABLY +PALPAL +PALPATE +PALPATED +PALPATES +PALPATING +PALPATION +PALPATIONS +PALPATOR +PALPATORS +PALPATORY +PALPEBRA +PALPEBRAE +PALPEBRAL +PALPEBRAS +PALPED +PALPI +PALPING +PALPITANT +PALPITATE +PALPITATED +PALPITATES +PALPITATING +PALPITATION +PALPITATIONS +PALPS +PALPUS +PALS +PALSGRAVE +PALSGRAVES +PALSHIP +PALSHIPS +PALSIED +PALSIES +PALSY +PALSYING +PALSYLIKE +PALTER +PALTERED +PALTERER +PALTERERS +PALTERING +PALTERS +PALTRIER +PALTRIEST +PALTRILY +PALTRINESS +PALTRINESSES +PALTRY +PALUDAL +PALUDISM +PALUDISMS +PALY +PALYNOLOGIC +PALYNOLOGICAL +PALYNOLOGICALLY +PALYNOLOGIES +PALYNOLOGIST +PALYNOLOGISTS +PALYNOLOGY +PAM +PAMPA +PAMPAS +PAMPEAN +PAMPEANS +PAMPER +PAMPERED +PAMPERER +PAMPERERS +PAMPERING +PAMPERO +PAMPEROS +PAMPERS +PAMPHLET +PAMPHLETEER +PAMPHLETEERED +PAMPHLETEERING +PAMPHLETEERS +PAMPHLETS +PAMS +PAN +PANACEA +PANACEAN +PANACEAS +PANACHE +PANACHES +PANADA +PANADAS +PANAMA +PANAMAS +PANATELA +PANATELAS +PANATELLA +PANATELLAS +PANBROIL +PANBROILED +PANBROILING +PANBROILS +PANCAKE +PANCAKED +PANCAKES +PANCAKING +PANCETTA +PANCETTAS +PANCHAX +PANCHAXES +PANCHROMATIC +PANCRATIA +PANCRATIC +PANCRATIUM +PANCRATIUMS +PANCREAS +PANCREASES +PANCREATECTOMY +PANCREATIC +PANCREATIN +PANCREATINS +PANCREATITIDES +PANCREATITIS +PANCREOZYMIN +PANCREOZYMINS +PANCYTOPENIA +PANCYTOPENIAS +PANDA +PANDANI +PANDANUS +PANDANUSES +PANDAS +PANDECT +PANDECTS +PANDEMIC +PANDEMICS +PANDEMONIUM +PANDEMONIUMS +PANDER +PANDERED +PANDERER +PANDERERS +PANDERING +PANDERS +PANDIED +PANDIES +PANDIT +PANDITS +PANDOOR +PANDOORS +PANDORA +PANDORAS +PANDORE +PANDORES +PANDOUR +PANDOURS +PANDOWDIES +PANDOWDY +PANDURA +PANDURAS +PANDURATE +PANDY +PANDYING +PANE +PANED +PANEGYRIC +PANEGYRICAL +PANEGYRICALLY +PANEGYRICS +PANEGYRIST +PANEGYRISTS +PANEL +PANELED +PANELESS +PANELING +PANELINGS +PANELIST +PANELISTS +PANELIZED +PANELLED +PANELLING +PANELLINGS +PANELS +PANES +PANETELA +PANETELAS +PANETELLA +PANETELLAS +PANETTONE +PANETTONES +PANETTONI +PANFISH +PANFISHES +PANFRIED +PANFRIES +PANFRY +PANFRYING +PANFUL +PANFULS +PANG +PANGA +PANGAS +PANGED +PANGEN +PANGENE +PANGENES +PANGENESES +PANGENESIS +PANGENETIC +PANGENS +PANGING +PANGOLIN +PANGOLINS +PANGRAM +PANGRAMS +PANGS +PANHANDLE +PANHANDLED +PANHANDLER +PANHANDLERS +PANHANDLES +PANHANDLING +PANHUMAN +PANIC +PANICALLY +PANICKED +PANICKIER +PANICKIEST +PANICKING +PANICKY +PANICLE +PANICLED +PANICLES +PANICS +PANICULATE +PANICUM +PANICUMS +PANIER +PANIERS +PANINI +PANINO +PANJANDRA +PANJANDRUM +PANJANDRUMS +PANLEUKOPENIA +PANLEUKOPENIAS +PANMICTIC +PANMIXES +PANMIXIA +PANMIXIAS +PANMIXIS +PANNE +PANNED +PANNER +PANNERS +PANNES +PANNIER +PANNIERED +PANNIERS +PANNIKIN +PANNIKINS +PANNING +PANOCHA +PANOCHAS +PANOCHE +PANOCHES +PANOPLIED +PANOPLIES +PANOPLY +PANOPTIC +PANORAMA +PANORAMAS +PANORAMIC +PANORAMICALLY +PANPIPE +PANPIPES +PANS +PANSEXUAL +PANSEXUALITIES +PANSEXUALITY +PANSEXUALS +PANSIES +PANSOPHIC +PANSOPHIES +PANSOPHY +PANSY +PANT +PANTALET +PANTALETS +PANTALETTES +PANTALONE +PANTALONES +PANTALOON +PANTALOONS +PANTDRESS +PANTDRESSES +PANTECHNICON +PANTECHNICONS +PANTED +PANTHEISM +PANTHEISMS +PANTHEIST +PANTHEISTIC +PANTHEISTICAL +PANTHEISTICALLY +PANTHEISTS +PANTHEON +PANTHEONS +PANTHER +PANTHERS +PANTIE +PANTIES +PANTIHOSE +PANTILE +PANTILED +PANTILES +PANTING +PANTINGLY +PANTISOCRACIES +PANTISOCRACY +PANTISOCRATIC +PANTISOCRATICAL +PANTISOCRATIST +PANTISOCRATISTS +PANTO +PANTOFFLE +PANTOFFLES +PANTOFLE +PANTOFLES +PANTOGRAPH +PANTOGRAPHIC +PANTOGRAPHS +PANTOMIME +PANTOMIMED +PANTOMIMES +PANTOMIMIC +PANTOMIMING +PANTOMIMIST +PANTOMIMISTS +PANTOS +PANTOTHENATE +PANTOTHENATES +PANTOUM +PANTOUMS +PANTRIES +PANTROPIC +PANTROPICAL +PANTRY +PANTRYMAN +PANTRYMEN +PANTS +PANTSUIT +PANTSUITED +PANTSUITS +PANTY +PANTYHOSE +PANTYWAIST +PANTYWAISTS +PANZER +PANZERS +PAP +PAPA +PAPACIES +PAPACY +PAPADAM +PAPADAMS +PAPADOM +PAPADOMS +PAPADUM +PAPADUMS +PAPAIN +PAPAINS +PAPAL +PAPALLY +PAPARAZZI +PAPARAZZO +PAPAS +PAPAVERINE +PAPAVERINES +PAPAW +PAPAWS +PAPAYA +PAPAYAN +PAPAYAS +PAPER +PAPERBACK +PAPERBACKED +PAPERBACKS +PAPERBARK +PAPERBARKS +PAPERBOARD +PAPERBOARDS +PAPERBOUND +PAPERBOUNDS +PAPERBOY +PAPERBOYS +PAPERCLIP +PAPERCLIPS +PAPERED +PAPERER +PAPERERS +PAPERGIRL +PAPERGIRLS +PAPERHANGER +PAPERHANGERS +PAPERHANGING +PAPERHANGINGS +PAPERINESS +PAPERINESSES +PAPERING +PAPERLESS +PAPERMAKER +PAPERMAKERS +PAPERMAKING +PAPERMAKINGS +PAPERS +PAPERWEIGHT +PAPERWEIGHTS +PAPERWORK +PAPERWORKS +PAPERY +PAPETERIE +PAPETERIES +PAPHIAN +PAPHIANS +PAPILIONACEOUS +PAPILLA +PAPILLAE +PAPILLAR +PAPILLARY +PAPILLATE +PAPILLOMA +PAPILLOMAS +PAPILLOMATA +PAPILLOMATOUS +PAPILLOMAVIRUS +PAPILLON +PAPILLONS +PAPILLOSE +PAPILLOTE +PAPILLOTES +PAPISM +PAPISMS +PAPIST +PAPISTIC +PAPISTRIES +PAPISTRY +PAPISTS +PAPOOSE +PAPOOSES +PAPOVAVIRUS +PAPOVAVIRUSES +PAPPADAM +PAPPADAMS +PAPPI +PAPPIER +PAPPIES +PAPPIEST +PAPPOOSE +PAPPOOSES +PAPPOSE +PAPPOUS +PAPPUS +PAPPY +PAPRICA +PAPRICAS +PAPRIKA +PAPRIKAS +PAPS +PAPULA +PAPULAE +PAPULAR +PAPULE +PAPULES +PAPULOSE +PAPYRAL +PAPYRI +PAPYRIAN +PAPYRINE +PAPYROLOGIES +PAPYROLOGIST +PAPYROLOGISTS +PAPYROLOGY +PAPYRUS +PAPYRUSES +PAR +PARA +PARABIOSES +PARABIOSIS +PARABIOTIC +PARABIOTICALLY +PARABLAST +PARABLASTS +PARABLE +PARABLES +PARABOLA +PARABOLAS +PARABOLIC +PARABOLICALLY +PARABOLOID +PARABOLOIDAL +PARABOLOIDS +PARACHOR +PARACHORS +PARACHUTE +PARACHUTED +PARACHUTES +PARACHUTIC +PARACHUTING +PARACHUTIST +PARACHUTISTS +PARACLETE +PARACLETES +PARACRINE +PARADE +PARADED +PARADER +PARADERS +PARADES +PARADIDDLE +PARADIDDLES +PARADIGM +PARADIGMATIC +PARADIGMS +PARADING +PARADISAIC +PARADISAICAL +PARADISAICALLY +PARADISAL +PARADISE +PARADISES +PARADISIAC +PARADISIACAL +PARADISIACALLY +PARADISIAL +PARADISICAL +PARADOR +PARADORES +PARADORS +PARADOS +PARADOSES +PARADOX +PARADOXES +PARADOXICAL +PARADOXICALITY +PARADOXICALLY +PARADOXICALNESS +PARADROP +PARADROPPED +PARADROPPING +PARADROPS +PARAE +PARAESTHESIA +PARAESTHESIAS +PARAFFIN +PARAFFINE +PARAFFINED +PARAFFINES +PARAFFINIC +PARAFFINING +PARAFFINS +PARAFOIL +PARAFOILS +PARAFORM +PARAFORMS +PARAGENESES +PARAGENESIS +PARAGENETIC +PARAGENETICALLY +PARAGLIDE +PARAGLIDED +PARAGLIDES +PARAGLIDING +PARAGOGE +PARAGOGES +PARAGON +PARAGONED +PARAGONING +PARAGONS +PARAGRAPH +PARAGRAPHED +PARAGRAPHER +PARAGRAPHERS +PARAGRAPHIC +PARAGRAPHING +PARAGRAPHS +PARAINFLUENZA +PARAINFLUENZAS +PARAJOURNALISM +PARAJOURNALISMS +PARAKEET +PARAKEETS +PARAKITE +PARAKITES +PARALANGUAGE +PARALANGUAGES +PARALDEHYDE +PARALDEHYDES +PARALEGAL +PARALEGALS +PARALINGUISTIC +PARALINGUISTICS +PARALLACTIC +PARALLAX +PARALLAXES +PARALLEL +PARALLELED +PARALLELEPIPED +PARALLELEPIPEDS +PARALLELING +PARALLELISM +PARALLELISMS +PARALLELLED +PARALLELLING +PARALLELOGRAM +PARALLELOGRAMS +PARALLELS +PARALOGISM +PARALOGISMS +PARALYSE +PARALYSED +PARALYSES +PARALYSING +PARALYSIS +PARALYTIC +PARALYTICALLY +PARALYTICS +PARALYZATION +PARALYZATIONS +PARALYZE +PARALYZED +PARALYZER +PARALYZERS +PARALYZES +PARALYZING +PARALYZINGLY +PARAMAGNET +PARAMAGNETIC +PARAMAGNETISM +PARAMAGNETISMS +PARAMAGNETS +PARAMATTA +PARAMATTAS +PARAMECIA +PARAMECIUM +PARAMECIUMS +PARAMEDIC +PARAMEDICAL +PARAMEDICALS +PARAMEDICS +PARAMENT +PARAMENTA +PARAMENTS +PARAMETER +PARAMETERIZE +PARAMETERIZED +PARAMETERIZES +PARAMETERIZING +PARAMETERS +PARAMETRIC +PARAMETRICALLY +PARAMETRIZATION +PARAMETRIZE +PARAMETRIZED +PARAMETRIZES +PARAMETRIZING +PARAMILITARY +PARAMNESIA +PARAMNESIAS +PARAMO +PARAMORPH +PARAMORPHS +PARAMOS +PARAMOUNT +PARAMOUNTCIES +PARAMOUNTCY +PARAMOUNTLY +PARAMOUNTS +PARAMOUR +PARAMOURS +PARAMYLUM +PARAMYLUMS +PARAMYXOVIRUS +PARAMYXOVIRUSES +PARANG +PARANGS +PARANOEA +PARANOEAS +PARANOIA +PARANOIAC +PARANOIACS +PARANOIAS +PARANOIC +PARANOICALLY +PARANOICS +PARANOID +PARANOIDAL +PARANOIDS +PARANORMAL +PARANORMALITIES +PARANORMALITY +PARANORMALLY +PARANORMALS +PARANYMPH +PARANYMPHS +PARAPET +PARAPETED +PARAPETS +PARAPH +PARAPHERNALIA +PARAPHRASABLE +PARAPHRASE +PARAPHRASED +PARAPHRASER +PARAPHRASERS +PARAPHRASES +PARAPHRASING +PARAPHRASTIC +PARAPHS +PARAPHYSES +PARAPHYSIS +PARAPLEGIA +PARAPLEGIAS +PARAPLEGIC +PARAPLEGICS +PARAPODIA +PARAPODIAL +PARAPODIUM +PARAPSYCHOLOGY +PARAQUAT +PARAQUATS +PARAQUET +PARAQUETS +PARAROSANILINE +PARAROSANILINES +PARAS +PARASAIL +PARASAILED +PARASAILING +PARASAILINGS +PARASAILS +PARASANG +PARASANGS +PARASEXUAL +PARASEXUALITIES +PARASEXUALITY +PARASHAH +PARASHAHS +PARASHIOTH +PARASHOT +PARASHOTH +PARASITE +PARASITES +PARASITIC +PARASITICAL +PARASITICALLY +PARASITICIDAL +PARASITICIDE +PARASITICIDES +PARASITISE +PARASITISED +PARASITISES +PARASITISING +PARASITISM +PARASITISMS +PARASITIZATION +PARASITIZATIONS +PARASITIZE +PARASITIZED +PARASITIZES +PARASITIZING +PARASITOID +PARASITOIDS +PARASITOLOGIC +PARASITOLOGICAL +PARASITOLOGIES +PARASITOLOGIST +PARASITOLOGISTS +PARASITOLOGY +PARASITOSES +PARASITOSIS +PARASOL +PARASOLED +PARASOLS +PARASYMPATHETIC +PARASYNTHESES +PARASYNTHESIS +PARASYNTHETIC +PARATACTIC +PARATACTICAL +PARATACTICALLY +PARATAXES +PARATAXIS +PARATHION +PARATHIONS +PARATHORMONE +PARATHORMONES +PARATHYROID +PARATHYROIDS +PARATROOP +PARATROOPER +PARATROOPERS +PARATROOPS +PARATYPHOID +PARATYPHOIDS +PARAVANE +PARAVANES +PARAWING +PARAWINGS +PARAZOAN +PARAZOANS +PARBAKE +PARBAKED +PARBAKES +PARBAKING +PARBOIL +PARBOILED +PARBOILING +PARBOILS +PARBUCKLE +PARBUCKLED +PARBUCKLES +PARBUCKLING +PARCEL +PARCELED +PARCELING +PARCELLED +PARCELLING +PARCELS +PARCENARIES +PARCENARY +PARCENER +PARCENERS +PARCH +PARCHED +PARCHEESI +PARCHEESIS +PARCHES +PARCHESI +PARCHESIS +PARCHING +PARCHISI +PARCHISIS +PARCHMENT +PARCHMENTS +PARCLOSE +PARCLOSES +PARD +PARDAH +PARDAHS +PARDEE +PARDI +PARDIE +PARDINE +PARDNER +PARDNERS +PARDON +PARDONABLE +PARDONABLENESS +PARDONABLY +PARDONED +PARDONER +PARDONERS +PARDONING +PARDONS +PARDS +PARDY +PARE +PARECISM +PARECISMS +PARED +PAREGORIC +PAREGORICS +PAREIRA +PAREIRAS +PARENCHYMA +PARENCHYMAL +PARENCHYMAS +PARENCHYMATOUS +PARENT +PARENTAGE +PARENTAGES +PARENTAL +PARENTALLY +PARENTED +PARENTERAL +PARENTERALLY +PARENTHESES +PARENTHESIS +PARENTHESIZE +PARENTHESIZED +PARENTHESIZES +PARENTHESIZING +PARENTHETIC +PARENTHETICAL +PARENTHETICALLY +PARENTHOOD +PARENTHOODS +PARENTING +PARENTINGS +PARENTLESS +PARENTS +PAREO +PAREOS +PARER +PARERGA +PARERGON +PARERS +PARES +PARESES +PARESIS +PARESTHESIA +PARESTHESIAS +PARESTHETIC +PARETIC +PARETICS +PAREU +PAREUS +PAREVE +PARFAIT +PARFAITS +PARFLECHE +PARFLECHES +PARFLESH +PARFLESHES +PARFOCAL +PARFOCALITIES +PARFOCALITY +PARFOCALIZE +PARFOCALIZED +PARFOCALIZES +PARFOCALIZING +PARGE +PARGED +PARGES +PARGET +PARGETED +PARGETING +PARGETINGS +PARGETS +PARGETTED +PARGETTING +PARGING +PARGINGS +PARGO +PARGOS +PARGYLINE +PARGYLINES +PARHELIA +PARHELIC +PARHELION +PARIAH +PARIAHS +PARIAN +PARIANS +PARIES +PARIETAL +PARIETALS +PARIETES +PARING +PARINGS +PARIS +PARISES +PARISH +PARISHES +PARISHIONER +PARISHIONERS +PARITIES +PARITY +PARK +PARKA +PARKADE +PARKADES +PARKAS +PARKED +PARKER +PARKERS +PARKETTE +PARKETTES +PARKING +PARKINGS +PARKINSONIAN +PARKINSONISM +PARKINSONISMS +PARKLAND +PARKLANDS +PARKLIKE +PARKS +PARKWAY +PARKWAYS +PARLANCE +PARLANCES +PARLANDO +PARLANTE +PARLAY +PARLAYED +PARLAYING +PARLAYS +PARLE +PARLED +PARLES +PARLEY +PARLEYED +PARLEYER +PARLEYERS +PARLEYING +PARLEYS +PARLIAMENT +PARLIAMENTARIAN +PARLIAMENTARY +PARLIAMENTS +PARLING +PARLOR +PARLORS +PARLOUR +PARLOURS +PARLOUS +PARLOUSLY +PARMESAN +PARMESANS +PARMIGIANA +PARMIGIANO +PAROCHIAL +PAROCHIALISM +PAROCHIALISMS +PAROCHIALLY +PARODIC +PARODICAL +PARODIED +PARODIES +PARODIST +PARODISTIC +PARODISTS +PARODOI +PARODOS +PARODY +PARODYING +PAROL +PAROLABLE +PAROLE +PAROLED +PAROLEE +PAROLEES +PAROLES +PAROLING +PAROLS +PARONOMASIA +PARONOMASIAS +PARONOMASTIC +PARONYM +PARONYMIC +PARONYMOUS +PARONYMS +PAROQUET +PAROQUETS +PAROSMIA +PAROSMIAS +PAROTIC +PAROTID +PAROTIDS +PAROTITIC +PAROTITIS +PAROTITISES +PAROTOID +PAROTOIDS +PAROUS +PAROXYSM +PAROXYSMAL +PAROXYSMS +PARQUET +PARQUETED +PARQUETING +PARQUETRIES +PARQUETRY +PARQUETS +PARR +PARRAKEET +PARRAKEETS +PARRAL +PARRALS +PARRED +PARREL +PARRELS +PARRICIDAL +PARRICIDE +PARRICIDES +PARRIDGE +PARRIDGES +PARRIED +PARRIER +PARRIERS +PARRIES +PARRING +PARRITCH +PARRITCHES +PARROKET +PARROKETS +PARROT +PARROTED +PARROTER +PARROTERS +PARROTING +PARROTS +PARROTY +PARRS +PARRY +PARRYING +PARS +PARSABLE +PARSE +PARSEC +PARSECS +PARSED +PARSER +PARSERS +PARSES +PARSIMONIES +PARSIMONIOUS +PARSIMONIOUSLY +PARSIMONY +PARSING +PARSLEY +PARSLEYED +PARSLEYS +PARSLIED +PARSNIP +PARSNIPS +PARSON +PARSONAGE +PARSONAGES +PARSONIC +PARSONISH +PARSONS +PART +PARTAKE +PARTAKEN +PARTAKER +PARTAKERS +PARTAKES +PARTAKING +PARTAN +PARTANS +PARTED +PARTERRE +PARTERRES +PARTHENOCARPIC +PARTHENOCARPIES +PARTHENOCARPY +PARTHENOGENESES +PARTHENOGENESIS +PARTHENOGENETIC +PARTIAL +PARTIALITIES +PARTIALITY +PARTIALLY +PARTIALS +PARTIBILITIES +PARTIBILITY +PARTIBLE +PARTICIPANT +PARTICIPANTS +PARTICIPATE +PARTICIPATED +PARTICIPATES +PARTICIPATING +PARTICIPATION +PARTICIPATIONAL +PARTICIPATIONS +PARTICIPATIVE +PARTICIPATOR +PARTICIPATORS +PARTICIPATORY +PARTICIPIAL +PARTICIPIALLY +PARTICIPLE +PARTICIPLES +PARTICLE +PARTICLEBOARD +PARTICLEBOARDS +PARTICLES +PARTICULAR +PARTICULARISE +PARTICULARISED +PARTICULARISES +PARTICULARISING +PARTICULARISM +PARTICULARISMS +PARTICULARIST +PARTICULARISTIC +PARTICULARISTS +PARTICULARITIES +PARTICULARITY +PARTICULARIZE +PARTICULARIZED +PARTICULARIZES +PARTICULARIZING +PARTICULARLY +PARTICULARS +PARTICULATE +PARTICULATES +PARTIED +PARTIER +PARTIERS +PARTIES +PARTING +PARTINGS +PARTISAN +PARTISANLY +PARTISANS +PARTISANSHIP +PARTISANSHIPS +PARTITA +PARTITAS +PARTITE +PARTITION +PARTITIONED +PARTITIONER +PARTITIONERS +PARTITIONING +PARTITIONIST +PARTITIONISTS +PARTITIONS +PARTITIVE +PARTITIVELY +PARTITIVES +PARTIZAN +PARTIZANS +PARTLET +PARTLETS +PARTLY +PARTNER +PARTNERED +PARTNERING +PARTNERLESS +PARTNERS +PARTNERSHIP +PARTNERSHIPS +PARTON +PARTONS +PARTOOK +PARTRIDGE +PARTRIDGEBERRY +PARTRIDGES +PARTS +PARTURIENT +PARTURIENTS +PARTURITION +PARTURITIONS +PARTWAY +PARTY +PARTYER +PARTYERS +PARTYGOER +PARTYGOERS +PARTYING +PARURA +PARURAS +PARURE +PARURES +PARVE +PARVENU +PARVENUE +PARVENUES +PARVENUS +PARVIS +PARVISE +PARVISES +PARVO +PARVOLIN +PARVOLINE +PARVOLINES +PARVOLINS +PARVOS +PARVOVIRUS +PARVOVIRUSES +PAS +PASCAL +PASCALS +PASCHAL +PASCHALS +PASE +PASEO +PASEOS +PASES +PASH +PASHA +PASHADOM +PASHADOMS +PASHALIC +PASHALICS +PASHALIK +PASHALIKS +PASHAS +PASHED +PASHES +PASHING +PASHMINA +PASHMINAS +PASODOBLE +PASODOBLES +PASQUEFLOWER +PASQUEFLOWERS +PASQUIL +PASQUILS +PASQUINADE +PASQUINADED +PASQUINADES +PASQUINADING +PASS +PASSABLE +PASSABLY +PASSACAGLIA +PASSACAGLIAS +PASSADE +PASSADES +PASSADO +PASSADOES +PASSADOS +PASSAGE +PASSAGED +PASSAGES +PASSAGEWAY +PASSAGEWAYS +PASSAGEWORK +PASSAGEWORKS +PASSAGING +PASSALONG +PASSALONGS +PASSANT +PASSBAND +PASSBANDS +PASSBOOK +PASSBOOKS +PASSE +PASSED +PASSEE +PASSEL +PASSELS +PASSEMENTERIE +PASSEMENTERIES +PASSENGER +PASSENGERS +PASSEPIED +PASSEPIEDS +PASSER +PASSERBY +PASSERINE +PASSERINES +PASSERS +PASSERSBY +PASSES +PASSIBLE +PASSIM +PASSING +PASSINGLY +PASSINGS +PASSION +PASSIONAL +PASSIONALS +PASSIONATE +PASSIONATELY +PASSIONATENESS +PASSIONFLOWER +PASSIONFLOWERS +PASSIONLESS +PASSIONS +PASSIVATE +PASSIVATED +PASSIVATES +PASSIVATING +PASSIVATION +PASSIVATIONS +PASSIVE +PASSIVELY +PASSIVENESS +PASSIVENESSES +PASSIVES +PASSIVISM +PASSIVISMS +PASSIVIST +PASSIVISTS +PASSIVITIES +PASSIVITY +PASSKEY +PASSKEYS +PASSLESS +PASSOVER +PASSOVERS +PASSPORT +PASSPORTS +PASSUS +PASSUSES +PASSWORD +PASSWORDS +PAST +PASTA +PASTALIKE +PASTAS +PASTE +PASTEBOARD +PASTEBOARDS +PASTED +PASTEDOWN +PASTEDOWNS +PASTEL +PASTELIST +PASTELISTS +PASTELLIST +PASTELLISTS +PASTELS +PASTER +PASTERN +PASTERNS +PASTERS +PASTES +PASTEUP +PASTEUPS +PASTEURISE +PASTEURISED +PASTEURISES +PASTEURISING +PASTEURIZATION +PASTEURIZATIONS +PASTEURIZE +PASTEURIZED +PASTEURIZER +PASTEURIZERS +PASTEURIZES +PASTEURIZING +PASTICCI +PASTICCIO +PASTICCIOS +PASTICHE +PASTICHES +PASTICHEUR +PASTICHEURS +PASTIE +PASTIER +PASTIES +PASTIEST +PASTIL +PASTILLE +PASTILLES +PASTILS +PASTIME +PASTIMES +PASTINA +PASTINAS +PASTINESS +PASTINESSES +PASTING +PASTIS +PASTISES +PASTITSIO +PASTITSIOS +PASTITSO +PASTITSOS +PASTLESS +PASTNESS +PASTNESSES +PASTOR +PASTORAL +PASTORALE +PASTORALES +PASTORALI +PASTORALISM +PASTORALISMS +PASTORALIST +PASTORALISTS +PASTORALLY +PASTORALNESS +PASTORALNESSES +PASTORALS +PASTORATE +PASTORATES +PASTORED +PASTORING +PASTORIUM +PASTORIUMS +PASTORLY +PASTORS +PASTORSHIP +PASTORSHIPS +PASTRAMI +PASTRAMIS +PASTRIES +PASTROMI +PASTROMIS +PASTRY +PASTS +PASTURAGE +PASTURAGES +PASTURAL +PASTURE +PASTURED +PASTURELAND +PASTURELANDS +PASTURER +PASTURERS +PASTURES +PASTURING +PASTY +PAT +PATACA +PATACAS +PATAGIA +PATAGIAL +PATAGIUM +PATAMAR +PATAMARS +PATCH +PATCHABLE +PATCHBOARD +PATCHBOARDS +PATCHED +PATCHER +PATCHERS +PATCHES +PATCHIER +PATCHIEST +PATCHILY +PATCHINESS +PATCHINESSES +PATCHING +PATCHOULI +PATCHOULIES +PATCHOULIS +PATCHOULY +PATCHWORK +PATCHWORKED +PATCHWORKING +PATCHWORKS +PATCHY +PATE +PATED +PATELLA +PATELLAE +PATELLAR +PATELLAS +PATELLATE +PATELLIFORM +PATEN +PATENCIES +PATENCY +PATENS +PATENT +PATENTABILITIES +PATENTABILITY +PATENTABLE +PATENTED +PATENTEE +PATENTEES +PATENTING +PATENTLY +PATENTOR +PATENTORS +PATENTS +PATER +PATERFAMILIAS +PATERNAL +PATERNALISM +PATERNALISMS +PATERNALIST +PATERNALISTIC +PATERNALISTS +PATERNALLY +PATERNITIES +PATERNITY +PATERNOSTER +PATERNOSTERS +PATERS +PATES +PATH +PATHBREAKING +PATHETIC +PATHETICAL +PATHETICALLY +PATHFINDER +PATHFINDERS +PATHFINDING +PATHFINDINGS +PATHLESS +PATHLESSNESS +PATHLESSNESSES +PATHOBIOLOGIES +PATHOBIOLOGY +PATHOGEN +PATHOGENE +PATHOGENES +PATHOGENESES +PATHOGENESIS +PATHOGENETIC +PATHOGENIC +PATHOGENICITIES +PATHOGENICITY +PATHOGENIES +PATHOGENS +PATHOGENY +PATHOGNOMONIC +PATHOLOGIC +PATHOLOGICAL +PATHOLOGICALLY +PATHOLOGIES +PATHOLOGIST +PATHOLOGISTS +PATHOLOGY +PATHOPHYSIOLOGY +PATHOS +PATHOSES +PATHS +PATHWAY +PATHWAYS +PATIENCE +PATIENCES +PATIENT +PATIENTER +PATIENTEST +PATIENTLY +PATIENTS +PATIN +PATINA +PATINAE +PATINAED +PATINAS +PATINATE +PATINATED +PATINATES +PATINATING +PATINATION +PATINATIONS +PATINE +PATINED +PATINES +PATINING +PATINIZE +PATINIZED +PATINIZES +PATINIZING +PATINS +PATIO +PATIOS +PATISSERIE +PATISSERIES +PATISSIER +PATISSIERS +PATLY +PATNESS +PATNESSES +PATOIS +PATOOTIE +PATOOTIES +PATRESFAMILIAS +PATRIARCH +PATRIARCHAL +PATRIARCHATE +PATRIARCHATES +PATRIARCHIES +PATRIARCHS +PATRIARCHY +PATRIATE +PATRIATED +PATRIATES +PATRIATING +PATRICIAN +PATRICIANS +PATRICIATE +PATRICIATES +PATRICIDAL +PATRICIDE +PATRICIDES +PATRILINEAL +PATRILINIES +PATRILINY +PATRIMONIAL +PATRIMONIES +PATRIMONY +PATRIOT +PATRIOTIC +PATRIOTICALLY +PATRIOTISM +PATRIOTISMS +PATRIOTS +PATRISTIC +PATRISTICAL +PATRISTICS +PATROL +PATROLLED +PATROLLER +PATROLLERS +PATROLLING +PATROLMAN +PATROLMEN +PATROLS +PATRON +PATRONAGE +PATRONAGES +PATRONAL +PATRONESS +PATRONESSES +PATRONISE +PATRONISED +PATRONISES +PATRONISING +PATRONIZATION +PATRONIZATIONS +PATRONIZE +PATRONIZED +PATRONIZES +PATRONIZING +PATRONIZINGLY +PATRONLY +PATRONS +PATRONYMIC +PATRONYMICS +PATROON +PATROONS +PATS +PATSIES +PATSY +PATTAMAR +PATTAMARS +PATTED +PATTEE +PATTEN +PATTENED +PATTENS +PATTER +PATTERED +PATTERER +PATTERERS +PATTERING +PATTERN +PATTERNED +PATTERNING +PATTERNINGS +PATTERNLESS +PATTERNS +PATTERS +PATTIE +PATTIES +PATTING +PATTY +PATTYPAN +PATTYPANS +PATULENT +PATULOUS +PATY +PATZER +PATZERS +PAUCITIES +PAUCITY +PAUGHTY +PAULDRON +PAULDRONS +PAULIN +PAULINS +PAULOWNIA +PAULOWNIAS +PAUNCH +PAUNCHED +PAUNCHES +PAUNCHIER +PAUNCHIEST +PAUNCHINESS +PAUNCHINESSES +PAUNCHY +PAUPER +PAUPERED +PAUPERING +PAUPERISM +PAUPERISMS +PAUPERIZE +PAUPERIZED +PAUPERIZES +PAUPERIZING +PAUPERS +PAUPIETTE +PAUPIETTES +PAUSAL +PAUSE +PAUSED +PAUSER +PAUSERS +PAUSES +PAUSING +PAVAN +PAVANE +PAVANES +PAVANS +PAVE +PAVED +PAVEED +PAVEMENT +PAVEMENTS +PAVER +PAVERS +PAVES +PAVID +PAVILION +PAVILIONED +PAVILIONING +PAVILIONS +PAVILLON +PAVILLONS +PAVIN +PAVING +PAVINGS +PAVINS +PAVIOR +PAVIORS +PAVIOUR +PAVIOURS +PAVIS +PAVISE +PAVISER +PAVISERS +PAVISES +PAVISSE +PAVISSES +PAVLOVA +PAVLOVAS +PAVONINE +PAW +PAWED +PAWER +PAWERS +PAWING +PAWKIER +PAWKIEST +PAWKILY +PAWKINESS +PAWKINESSES +PAWKY +PAWL +PAWLS +PAWN +PAWNABLE +PAWNAGE +PAWNAGES +PAWNBROKER +PAWNBROKERS +PAWNBROKING +PAWNBROKINGS +PAWNED +PAWNEE +PAWNEES +PAWNER +PAWNERS +PAWNING +PAWNOR +PAWNORS +PAWNS +PAWNSHOP +PAWNSHOPS +PAWPAW +PAWPAWS +PAWS +PAX +PAXES +PAXWAX +PAXWAXES +PAY +PAYABLE +PAYABLES +PAYABLY +PAYBACK +PAYBACKS +PAYCHECK +PAYCHECKS +PAYDAY +PAYDAYS +PAYED +PAYEE +PAYEES +PAYER +PAYERS +PAYGRADE +PAYGRADES +PAYING +PAYLOAD +PAYLOADS +PAYMASTER +PAYMASTERS +PAYMENT +PAYMENTS +PAYNIM +PAYNIMS +PAYOFF +PAYOFFS +PAYOLA +PAYOLAS +PAYOR +PAYORS +PAYOUT +PAYOUTS +PAYROLL +PAYROLLS +PAYS +PAZAZZ +PAZAZZES +PE +PEA +PEACE +PEACEABLE +PEACEABLENESS +PEACEABLENESSES +PEACEABLY +PEACED +PEACEFUL +PEACEFULLER +PEACEFULLEST +PEACEFULLY +PEACEFULNESS +PEACEFULNESSES +PEACEKEEPER +PEACEKEEPERS +PEACEKEEPING +PEACEKEEPINGS +PEACEMAKER +PEACEMAKERS +PEACEMAKING +PEACEMAKINGS +PEACENIK +PEACENIKS +PEACES +PEACETIME +PEACETIMES +PEACH +PEACHBLOW +PEACHBLOWS +PEACHED +PEACHER +PEACHERS +PEACHES +PEACHIER +PEACHIEST +PEACHING +PEACHY +PEACING +PEACOAT +PEACOATS +PEACOCK +PEACOCKED +PEACOCKIER +PEACOCKIEST +PEACOCKING +PEACOCKISH +PEACOCKS +PEACOCKY +PEAFOWL +PEAFOWLS +PEAG +PEAGE +PEAGES +PEAGS +PEAHEN +PEAHENS +PEAK +PEAKED +PEAKEDNESS +PEAKEDNESSES +PEAKIER +PEAKIEST +PEAKING +PEAKISH +PEAKLESS +PEAKLIKE +PEAKS +PEAKY +PEAL +PEALED +PEALIKE +PEALING +PEALS +PEAN +PEANS +PEANUT +PEANUTS +PEAR +PEARL +PEARLASH +PEARLASHES +PEARLED +PEARLER +PEARLERS +PEARLESCENCE +PEARLESCENCES +PEARLESCENT +PEARLIER +PEARLIEST +PEARLING +PEARLITE +PEARLITES +PEARLITIC +PEARLIZED +PEARLS +PEARLY +PEARMAIN +PEARMAINS +PEARS +PEART +PEARTER +PEARTEST +PEARTLY +PEARTNESS +PEARTNESSES +PEARWOOD +PEARWOODS +PEAS +PEASANT +PEASANTRIES +PEASANTRY +PEASANTS +PEASCOD +PEASCODS +PEASE +PEASECOD +PEASECODS +PEASEN +PEASES +PEASHOOTER +PEASHOOTERS +PEASOUPER +PEASOUPERS +PEAT +PEATIER +PEATIEST +PEATS +PEATY +PEAVEY +PEAVEYS +PEAVIES +PEAVY +PEBBLE +PEBBLED +PEBBLES +PEBBLIER +PEBBLIEST +PEBBLING +PEBBLY +PEC +PECAN +PECANS +PECCABLE +PECCADILLO +PECCADILLOES +PECCADILLOS +PECCANCIES +PECCANCY +PECCANT +PECCANTLY +PECCARIES +PECCARY +PECCAVI +PECCAVIS +PECH +PECHAN +PECHANS +PECHED +PECHING +PECHS +PECK +PECKED +PECKER +PECKERS +PECKERWOOD +PECKERWOODS +PECKIER +PECKIEST +PECKING +PECKISH +PECKISHLY +PECKS +PECKY +PECORINI +PECORINO +PECORINOS +PECS +PECTASE +PECTASES +PECTATE +PECTATES +PECTEN +PECTENS +PECTIC +PECTIN +PECTINACEOUS +PECTINATE +PECTINATION +PECTINATIONS +PECTINES +PECTINESTERASE +PECTINESTERASES +PECTINOUS +PECTINS +PECTIZE +PECTIZED +PECTIZES +PECTIZING +PECTORAL +PECTORALS +PECULATE +PECULATED +PECULATES +PECULATING +PECULATION +PECULATIONS +PECULATOR +PECULATORS +PECULIA +PECULIAR +PECULIARITIES +PECULIARITY +PECULIARLY +PECULIARS +PECULIUM +PECUNIARILY +PECUNIARY +PED +PEDAGOG +PEDAGOGIC +PEDAGOGICAL +PEDAGOGICALLY +PEDAGOGICS +PEDAGOGIES +PEDAGOGS +PEDAGOGUE +PEDAGOGUES +PEDAGOGY +PEDAL +PEDALED +PEDALER +PEDALERS +PEDALFER +PEDALFERS +PEDALIER +PEDALIERS +PEDALING +PEDALLED +PEDALLER +PEDALLERS +PEDALLING +PEDALO +PEDALOS +PEDALS +PEDANT +PEDANTIC +PEDANTICALLY +PEDANTRIES +PEDANTRY +PEDANTS +PEDATE +PEDATELY +PEDDLE +PEDDLED +PEDDLER +PEDDLERIES +PEDDLERS +PEDDLERY +PEDDLES +PEDDLING +PEDERAST +PEDERASTIC +PEDERASTIES +PEDERASTS +PEDERASTY +PEDES +PEDESTAL +PEDESTALED +PEDESTALING +PEDESTALLED +PEDESTALLING +PEDESTALS +PEDESTRIAN +PEDESTRIANISM +PEDESTRIANISMS +PEDESTRIANS +PEDIATRIC +PEDIATRICIAN +PEDIATRICIANS +PEDIATRICS +PEDIATRIST +PEDIATRISTS +PEDICAB +PEDICABS +PEDICEL +PEDICELLATE +PEDICELS +PEDICLE +PEDICLED +PEDICLES +PEDICULAR +PEDICULATE +PEDICULATES +PEDICULOSES +PEDICULOSIS +PEDICULOUS +PEDICURE +PEDICURED +PEDICURES +PEDICURING +PEDICURIST +PEDICURISTS +PEDIFORM +PEDIGREE +PEDIGREED +PEDIGREES +PEDIMENT +PEDIMENTAL +PEDIMENTED +PEDIMENTS +PEDIPALP +PEDIPALPS +PEDLAR +PEDLARIES +PEDLARS +PEDLARY +PEDLER +PEDLERIES +PEDLERS +PEDLERY +PEDOCAL +PEDOCALIC +PEDOCALS +PEDOGENESES +PEDOGENESIS +PEDOGENETIC +PEDOGENIC +PEDOLOGIC +PEDOLOGICAL +PEDOLOGIES +PEDOLOGIST +PEDOLOGISTS +PEDOLOGY +PEDOMETER +PEDOMETERS +PEDOPHILE +PEDOPHILES +PEDOPHILIA +PEDOPHILIAC +PEDOPHILIAS +PEDOPHILIC +PEDORTHIC +PEDRO +PEDROS +PEDS +PEDUNCLE +PEDUNCLED +PEDUNCLES +PEDUNCULAR +PEDUNCULATE +PEDUNCULATED +PEE +PEEBEEN +PEEBEENS +PEED +PEEING +PEEK +PEEKABOO +PEEKABOOS +PEEKAPOO +PEEKAPOOS +PEEKED +PEEKING +PEEKS +PEEL +PEELABLE +PEELED +PEELER +PEELERS +PEELING +PEELINGS +PEELS +PEEN +PEENED +PEENING +PEENS +PEEP +PEEPED +PEEPER +PEEPERS +PEEPHOLE +PEEPHOLES +PEEPING +PEEPS +PEEPSHOW +PEEPSHOWS +PEEPUL +PEEPULS +PEER +PEERAGE +PEERAGES +PEERED +PEERESS +PEERESSES +PEERIE +PEERIES +PEERING +PEERLESS +PEERS +PEERY +PEES +PEESWEEP +PEESWEEPS +PEETWEET +PEETWEETS +PEEVE +PEEVED +PEEVES +PEEVING +PEEVISH +PEEVISHLY +PEEVISHNESS +PEEVISHNESSES +PEEWEE +PEEWEES +PEEWIT +PEEWITS +PEG +PEGBOARD +PEGBOARDS +PEGBOX +PEGBOXES +PEGGED +PEGGING +PEGLEGGED +PEGLESS +PEGLIKE +PEGMATITE +PEGMATITES +PEGMATITIC +PEGS +PEH +PEHS +PEIGNOIR +PEIGNOIRS +PEIN +PEINED +PEINING +PEINS +PEISE +PEISED +PEISES +PEISING +PEJORATIVE +PEJORATIVELY +PEJORATIVES +PEKAN +PEKANS +PEKE +PEKEPOO +PEKEPOOS +PEKES +PEKIN +PEKINS +PEKOE +PEKOES +PELAGE +PELAGES +PELAGIAL +PELAGIC +PELAGICS +PELARGONIUM +PELARGONIUMS +PELE +PELECYPOD +PELECYPODS +PELERINE +PELERINES +PELES +PELF +PELFS +PELICAN +PELICANS +PELISSE +PELISSES +PELITE +PELITES +PELITIC +PELLAGRA +PELLAGRAS +PELLAGRIN +PELLAGRINS +PELLAGROUS +PELLET +PELLETAL +PELLETED +PELLETING +PELLETISE +PELLETISED +PELLETISES +PELLETISING +PELLETIZATION +PELLETIZATIONS +PELLETIZE +PELLETIZED +PELLETIZER +PELLETIZERS +PELLETIZES +PELLETIZING +PELLETS +PELLICLE +PELLICLES +PELLITORIES +PELLITORY +PELLMELL +PELLMELLS +PELLUCID +PELLUCIDLY +PELMET +PELMETS +PELON +PELORIA +PELORIAN +PELORIAS +PELORIC +PELORUS +PELORUSES +PELOTA +PELOTAS +PELOTON +PELOTONS +PELT +PELTAST +PELTASTS +PELTATE +PELTATELY +PELTATION +PELTATIONS +PELTED +PELTER +PELTERED +PELTERING +PELTERS +PELTING +PELTLESS +PELTRIES +PELTRY +PELTS +PELVES +PELVIC +PELVICS +PELVIS +PELVISES +PELYCOSAUR +PELYCOSAURS +PEMBINA +PEMBINAS +PEMICAN +PEMICANS +PEMMICAN +PEMMICANS +PEMOLINE +PEMOLINES +PEMPHIGUS +PEMPHIGUSES +PEMPHIX +PEMPHIXES +PEN +PENAL +PENALISE +PENALISED +PENALISES +PENALISING +PENALITIES +PENALITY +PENALIZATION +PENALIZATIONS +PENALIZE +PENALIZED +PENALIZES +PENALIZING +PENALLY +PENALTIES +PENALTY +PENANCE +PENANCED +PENANCES +PENANCING +PENANG +PENANGS +PENATES +PENCE +PENCEL +PENCELS +PENCHANT +PENCHANTS +PENCIL +PENCILED +PENCILER +PENCILERS +PENCILING +PENCILINGS +PENCILLED +PENCILLER +PENCILLERS +PENCILLING +PENCILLINGS +PENCILS +PEND +PENDANT +PENDANTLY +PENDANTS +PENDED +PENDENCIES +PENDENCY +PENDENT +PENDENTIVE +PENDENTIVES +PENDENTLY +PENDENTS +PENDING +PENDRAGON +PENDRAGONS +PENDS +PENDULAR +PENDULOUS +PENDULOUSNESS +PENDULOUSNESSES +PENDULUM +PENDULUMS +PENEPLAIN +PENEPLAINS +PENEPLANE +PENEPLANES +PENES +PENETRABILITIES +PENETRABILITY +PENETRABLE +PENETRALIA +PENETRANCE +PENETRANCES +PENETRANT +PENETRANTS +PENETRATE +PENETRATED +PENETRATES +PENETRATING +PENETRATINGLY +PENETRATION +PENETRATIONS +PENETRATIVE +PENETROMETER +PENETROMETERS +PENGO +PENGOS +PENGUIN +PENGUINS +PENHOLDER +PENHOLDERS +PENIAL +PENICIL +PENICILLAMINE +PENICILLAMINES +PENICILLATE +PENICILLIA +PENICILLIN +PENICILLINASE +PENICILLINASES +PENICILLINS +PENICILLIUM +PENICILS +PENILE +PENINSULA +PENINSULAR +PENINSULAS +PENIS +PENISES +PENITENCE +PENITENCES +PENITENT +PENITENTIAL +PENITENTIALLY +PENITENTIARIES +PENITENTIARY +PENITENTLY +PENITENTS +PENKNIFE +PENKNIVES +PENLIGHT +PENLIGHTS +PENLITE +PENLITES +PENMAN +PENMANSHIP +PENMANSHIPS +PENMEN +PENNA +PENNAE +PENNAME +PENNAMES +PENNANT +PENNANTS +PENNATE +PENNATED +PENNE +PENNED +PENNER +PENNERS +PENNI +PENNIA +PENNIES +PENNILESS +PENNINE +PENNINES +PENNING +PENNIS +PENNON +PENNONCEL +PENNONCELS +PENNONED +PENNONS +PENNY +PENNYCRESS +PENNYCRESSES +PENNYROYAL +PENNYROYALS +PENNYWEIGHT +PENNYWEIGHTS +PENNYWHISTLE +PENNYWHISTLES +PENNYWISE +PENNYWORT +PENNYWORTH +PENNYWORTHS +PENNYWORTS +PENOCHE +PENOCHES +PENOLOGICAL +PENOLOGIES +PENOLOGIST +PENOLOGISTS +PENOLOGY +PENONCEL +PENONCELS +PENPOINT +PENPOINTS +PENS +PENSEE +PENSEES +PENSIL +PENSILE +PENSILS +PENSION +PENSIONABLE +PENSIONARIES +PENSIONARY +PENSIONE +PENSIONED +PENSIONER +PENSIONERS +PENSIONES +PENSIONING +PENSIONLESS +PENSIONS +PENSIVE +PENSIVELY +PENSIVENESS +PENSIVENESSES +PENSTEMON +PENSTEMONS +PENSTER +PENSTERS +PENSTOCK +PENSTOCKS +PENT +PENTACLE +PENTACLES +PENTAD +PENTADS +PENTAGON +PENTAGONAL +PENTAGONALLY +PENTAGONALS +PENTAGONS +PENTAGRAM +PENTAGRAMS +PENTAHEDRA +PENTAHEDRAL +PENTAHEDRON +PENTAHEDRONS +PENTAMERIES +PENTAMEROUS +PENTAMERY +PENTAMETER +PENTAMETERS +PENTAMIDINE +PENTAMIDINES +PENTANE +PENTANES +PENTANGLE +PENTANGLES +PENTANOL +PENTANOLS +PENTAPEPTIDE +PENTAPEPTIDES +PENTAPLOID +PENTAPLOIDIES +PENTAPLOIDS +PENTAPLOIDY +PENTARCH +PENTARCHIES +PENTARCHS +PENTARCHY +PENTATHLETE +PENTATHLETES +PENTATHLON +PENTATHLONS +PENTATONIC +PENTAVALENT +PENTAZOCINE +PENTAZOCINES +PENTENE +PENTENES +PENTHOUSE +PENTHOUSES +PENTLANDITE +PENTLANDITES +PENTOBARBITAL +PENTOBARBITALS +PENTOBARBITONE +PENTOBARBITONES +PENTODE +PENTODES +PENTOMIC +PENTOSAN +PENTOSANS +PENTOSE +PENTOSES +PENTOSIDE +PENTOSIDES +PENTOXIDE +PENTOXIDES +PENTSTEMON +PENTSTEMONS +PENTYL +PENTYLS +PENUCHE +PENUCHES +PENUCHI +PENUCHIS +PENUCHLE +PENUCHLES +PENUCKLE +PENUCKLES +PENULT +PENULTIMA +PENULTIMAS +PENULTIMATE +PENULTIMATELY +PENULTS +PENUMBRA +PENUMBRAE +PENUMBRAL +PENUMBRAS +PENURIES +PENURIOUS +PENURIOUSLY +PENURIOUSNESS +PENURIOUSNESSES +PENURY +PEON +PEONAGE +PEONAGES +PEONES +PEONIES +PEONISM +PEONISMS +PEONS +PEONY +PEOPLE +PEOPLED +PEOPLEHOOD +PEOPLEHOODS +PEOPLELESS +PEOPLER +PEOPLERS +PEOPLES +PEOPLING +PEP +PEPEROMIA +PEPEROMIAS +PEPERONI +PEPERONIS +PEPINO +PEPINOS +PEPLA +PEPLOS +PEPLOSES +PEPLUM +PEPLUMED +PEPLUMS +PEPLUS +PEPLUSES +PEPO +PEPONIDA +PEPONIDAS +PEPONIUM +PEPONIUMS +PEPOS +PEPPED +PEPPER +PEPPERBOX +PEPPERBOXES +PEPPERCORN +PEPPERCORNS +PEPPERED +PEPPERER +PEPPERERS +PEPPERGRASS +PEPPERGRASSES +PEPPERINESS +PEPPERINESSES +PEPPERING +PEPPERMINT +PEPPERMINTS +PEPPERMINTY +PEPPERONI +PEPPERONIS +PEPPERS +PEPPERTREE +PEPPERTREES +PEPPERY +PEPPIER +PEPPIEST +PEPPILY +PEPPINESS +PEPPINESSES +PEPPING +PEPPY +PEPS +PEPSIN +PEPSINATE +PEPSINATED +PEPSINATES +PEPSINATING +PEPSINE +PEPSINES +PEPSINOGEN +PEPSINOGENS +PEPSINS +PEPTALK +PEPTALKED +PEPTALKING +PEPTALKS +PEPTIC +PEPTICS +PEPTID +PEPTIDASE +PEPTIDASES +PEPTIDE +PEPTIDES +PEPTIDIC +PEPTIDOGLYCAN +PEPTIDOGLYCANS +PEPTIDS +PEPTIZE +PEPTIZED +PEPTIZER +PEPTIZERS +PEPTIZES +PEPTIZING +PEPTONE +PEPTONES +PEPTONIC +PEPTONIZE +PEPTONIZED +PEPTONIZES +PEPTONIZING +PER +PERACID +PERACIDS +PERADVENTURE +PERADVENTURES +PERAMBULATE +PERAMBULATED +PERAMBULATES +PERAMBULATING +PERAMBULATION +PERAMBULATIONS +PERAMBULATOR +PERAMBULATORS +PERAMBULATORY +PERBORATE +PERBORATES +PERCALE +PERCALES +PERCALINE +PERCALINES +PERCEIVABLE +PERCEIVABLY +PERCEIVE +PERCEIVED +PERCEIVER +PERCEIVERS +PERCEIVES +PERCEIVING +PERCENT +PERCENTAGE +PERCENTAGES +PERCENTAL +PERCENTILE +PERCENTILES +PERCENTS +PERCEPT +PERCEPTIBILITY +PERCEPTIBLE +PERCEPTIBLY +PERCEPTION +PERCEPTIONAL +PERCEPTIONS +PERCEPTIVE +PERCEPTIVELY +PERCEPTIVENESS +PERCEPTIVITIES +PERCEPTIVITY +PERCEPTS +PERCEPTUAL +PERCEPTUALLY +PERCH +PERCHANCE +PERCHED +PERCHER +PERCHERS +PERCHES +PERCHING +PERCHLORATE +PERCHLORATES +PERCIPIENCE +PERCIPIENCES +PERCIPIENT +PERCIPIENTLY +PERCIPIENTS +PERCOID +PERCOIDS +PERCOLATE +PERCOLATED +PERCOLATES +PERCOLATING +PERCOLATION +PERCOLATIONS +PERCOLATOR +PERCOLATORS +PERCUSS +PERCUSSED +PERCUSSES +PERCUSSING +PERCUSSION +PERCUSSIONIST +PERCUSSIONISTS +PERCUSSIONS +PERCUSSIVE +PERCUSSIVELY +PERCUSSIVENESS +PERCUSSOR +PERCUSSORS +PERCUTANEOUS +PERCUTANEOUSLY +PERDIE +PERDITION +PERDITIONS +PERDU +PERDUE +PERDUES +PERDURABILITIES +PERDURABILITY +PERDURABLE +PERDURABLY +PERDURE +PERDURED +PERDURES +PERDURING +PERDUS +PERDY +PERE +PEREA +PEREGRIN +PEREGRINATE +PEREGRINATED +PEREGRINATES +PEREGRINATING +PEREGRINATION +PEREGRINATIONS +PEREGRINE +PEREGRINES +PEREGRINS +PEREIA +PEREION +PEREIONS +PEREIOPOD +PEREIOPODS +PEREMPTORILY +PEREMPTORINESS +PEREMPTORY +PERENNATE +PERENNATED +PERENNATES +PERENNATING +PERENNATION +PERENNATIONS +PERENNIAL +PERENNIALLY +PERENNIALS +PEREON +PEREONS +PEREOPOD +PEREOPODS +PERES +PERESTROIKA +PERESTROIKAS +PERFECT +PERFECTA +PERFECTAS +PERFECTED +PERFECTER +PERFECTERS +PERFECTEST +PERFECTIBILITY +PERFECTIBLE +PERFECTING +PERFECTION +PERFECTIONISM +PERFECTIONISMS +PERFECTIONIST +PERFECTIONISTIC +PERFECTIONISTS +PERFECTIONS +PERFECTIVE +PERFECTIVELY +PERFECTIVENESS +PERFECTIVES +PERFECTIVITIES +PERFECTIVITY +PERFECTLY +PERFECTNESS +PERFECTNESSES +PERFECTO +PERFECTOS +PERFECTS +PERFERVID +PERFIDIES +PERFIDIOUS +PERFIDIOUSLY +PERFIDIOUSNESS +PERFIDY +PERFOLIATE +PERFORATE +PERFORATED +PERFORATES +PERFORATING +PERFORATION +PERFORATIONS +PERFORATOR +PERFORATORS +PERFORCE +PERFORM +PERFORMABILITY +PERFORMABLE +PERFORMANCE +PERFORMANCES +PERFORMATIVE +PERFORMATIVES +PERFORMATORY +PERFORMED +PERFORMER +PERFORMERS +PERFORMING +PERFORMS +PERFUME +PERFUMED +PERFUMER +PERFUMERIES +PERFUMERS +PERFUMERY +PERFUMES +PERFUMING +PERFUMY +PERFUNCTORILY +PERFUNCTORINESS +PERFUNCTORY +PERFUSATE +PERFUSATES +PERFUSE +PERFUSED +PERFUSES +PERFUSING +PERFUSION +PERFUSIONIST +PERFUSIONISTS +PERFUSIONS +PERFUSIVE +PERGOLA +PERGOLAS +PERHAPS +PERHAPSES +PERI +PERIANTH +PERIANTHS +PERIAPSES +PERIAPSIS +PERIAPT +PERIAPTS +PERIBLEM +PERIBLEMS +PERICARDIA +PERICARDIAL +PERICARDITIS +PERICARDITISES +PERICARDIUM +PERICARP +PERICARPS +PERICHONDRAL +PERICHONDRIA +PERICHONDRIUM +PERICOPAE +PERICOPAL +PERICOPE +PERICOPES +PERICOPIC +PERICRANIA +PERICRANIAL +PERICRANIUM +PERICYCLE +PERICYCLES +PERICYCLIC +PERIDERM +PERIDERMS +PERIDIA +PERIDIAL +PERIDIUM +PERIDOT +PERIDOTIC +PERIDOTITE +PERIDOTITES +PERIDOTITIC +PERIDOTS +PERIGEAL +PERIGEAN +PERIGEE +PERIGEES +PERIGON +PERIGONS +PERIGYNIES +PERIGYNOUS +PERIGYNY +PERIHELIA +PERIHELIAL +PERIHELION +PERIKARYA +PERIKARYAL +PERIKARYON +PERIL +PERILED +PERILING +PERILLA +PERILLAS +PERILLED +PERILLING +PERILOUS +PERILOUSLY +PERILOUSNESS +PERILOUSNESSES +PERILS +PERILUNE +PERILUNES +PERILYMPH +PERILYMPHS +PERIMETER +PERIMETERS +PERIMETRIES +PERIMETRY +PERIMORPH +PERIMORPHS +PERIMYSIA +PERIMYSIUM +PERINATAL +PERINATALLY +PERINEA +PERINEAL +PERINEUM +PERINEURIA +PERINEURIUM +PERIOD +PERIODATE +PERIODATES +PERIODIC +PERIODICAL +PERIODICALLY +PERIODICALS +PERIODICITIES +PERIODICITY +PERIODID +PERIODIDS +PERIODIZATION +PERIODIZATIONS +PERIODONTAL +PERIODONTALLY +PERIODONTICS +PERIODONTIST +PERIODONTISTS +PERIODONTOLOGY +PERIODS +PERIONYCHIA +PERIONYCHIUM +PERIOSTEA +PERIOSTEAL +PERIOSTEUM +PERIOSTITIS +PERIOSTITISES +PERIOTIC +PERIPATETIC +PERIPATETICALLY +PERIPATETICS +PERIPATUS +PERIPATUSES +PERIPETEIA +PERIPETEIAS +PERIPETIA +PERIPETIAS +PERIPETIES +PERIPETY +PERIPHERAL +PERIPHERALLY +PERIPHERALS +PERIPHERIES +PERIPHERY +PERIPHRASES +PERIPHRASIS +PERIPHRASTIC +PERIPHYTIC +PERIPHYTON +PERIPHYTONS +PERIPLASM +PERIPLASMS +PERIPLAST +PERIPLASTS +PERIPTER +PERIPTERS +PERIQUE +PERIQUES +PERIS +PERISARC +PERISARCS +PERISCOPE +PERISCOPES +PERISCOPIC +PERISH +PERISHABILITIES +PERISHABILITY +PERISHABLE +PERISHABLES +PERISHED +PERISHES +PERISHING +PERISSODACTYL +PERISSODACTYLS +PERISTALSES +PERISTALSIS +PERISTALTIC +PERISTOME +PERISTOMES +PERISTOMIAL +PERISTYLE +PERISTYLES +PERITHECIA +PERITHECIAL +PERITHECIUM +PERITI +PERITONEA +PERITONEAL +PERITONEALLY +PERITONEUM +PERITONEUMS +PERITONITIS +PERITONITISES +PERITRICH +PERITRICHA +PERITRICHOUS +PERITRICHOUSLY +PERITRICHS +PERITUS +PERIWIG +PERIWIGGED +PERIWIGS +PERIWINKLE +PERIWINKLES +PERJURE +PERJURED +PERJURER +PERJURERS +PERJURES +PERJURIES +PERJURING +PERJURIOUS +PERJURIOUSLY +PERJURY +PERK +PERKED +PERKIER +PERKIEST +PERKILY +PERKINESS +PERKINESSES +PERKING +PERKISH +PERKS +PERKY +PERLITE +PERLITES +PERLITIC +PERM +PERMAFROST +PERMAFROSTS +PERMALLOY +PERMALLOYS +PERMANENCE +PERMANENCES +PERMANENCIES +PERMANENCY +PERMANENT +PERMANENTLY +PERMANENTNESS +PERMANENTNESSES +PERMANENTS +PERMANGANATE +PERMANGANATES +PERMEABILITIES +PERMEABILITY +PERMEABLE +PERMEABLY +PERMEANCE +PERMEANCES +PERMEANT +PERMEASE +PERMEASES +PERMEATE +PERMEATED +PERMEATES +PERMEATING +PERMEATION +PERMEATIONS +PERMEATIVE +PERMEATOR +PERMEATORS +PERMED +PERMETHRIN +PERMETHRINS +PERMIAN +PERMILLAGE +PERMILLAGES +PERMING +PERMISSIBILITY +PERMISSIBLE +PERMISSIBLENESS +PERMISSIBLY +PERMISSION +PERMISSIONS +PERMISSIVE +PERMISSIVELY +PERMISSIVENESS +PERMIT +PERMITS +PERMITTED +PERMITTEE +PERMITTEES +PERMITTER +PERMITTERS +PERMITTING +PERMITTIVITIES +PERMITTIVITY +PERMS +PERMUTABLE +PERMUTATION +PERMUTATIONAL +PERMUTATIONS +PERMUTE +PERMUTED +PERMUTES +PERMUTING +PERNICIOUS +PERNICIOUSLY +PERNICIOUSNESS +PERNICKETY +PERNIO +PERNIONES +PERNOD +PERNODS +PERONEAL +PERORAL +PERORALLY +PERORATE +PERORATED +PERORATES +PERORATING +PERORATION +PERORATIONAL +PERORATIONS +PERORATOR +PERORATORS +PEROVSKITE +PEROVSKITES +PEROXID +PEROXIDASE +PEROXIDASES +PEROXIDE +PEROXIDED +PEROXIDES +PEROXIDIC +PEROXIDING +PEROXIDS +PEROXISOMAL +PEROXISOME +PEROXISOMES +PEROXY +PERP +PERPEND +PERPENDED +PERPENDICULAR +PERPENDICULARLY +PERPENDICULARS +PERPENDING +PERPENDS +PERPENT +PERPENTS +PERPETRATE +PERPETRATED +PERPETRATES +PERPETRATING +PERPETRATION +PERPETRATIONS +PERPETRATOR +PERPETRATORS +PERPETUAL +PERPETUALLY +PERPETUALS +PERPETUATE +PERPETUATED +PERPETUATES +PERPETUATING +PERPETUATION +PERPETUATIONS +PERPETUATOR +PERPETUATORS +PERPETUITIES +PERPETUITY +PERPHENAZINE +PERPHENAZINES +PERPLEX +PERPLEXED +PERPLEXEDLY +PERPLEXER +PERPLEXERS +PERPLEXES +PERPLEXING +PERPLEXITIES +PERPLEXITY +PERPS +PERQUISITE +PERQUISITES +PERRIES +PERRON +PERRONS +PERRY +PERSALT +PERSALTS +PERSE +PERSECUTE +PERSECUTED +PERSECUTEE +PERSECUTEES +PERSECUTES +PERSECUTING +PERSECUTION +PERSECUTIONS +PERSECUTIVE +PERSECUTOR +PERSECUTORS +PERSECUTORY +PERSES +PERSEVERANCE +PERSEVERANCES +PERSEVERATE +PERSEVERATED +PERSEVERATES +PERSEVERATING +PERSEVERATION +PERSEVERATIONS +PERSEVERATIVE +PERSEVERE +PERSEVERED +PERSEVERES +PERSEVERING +PERSEVERINGLY +PERSIFLAGE +PERSIFLAGES +PERSIMMON +PERSIMMONS +PERSIST +PERSISTED +PERSISTENCE +PERSISTENCES +PERSISTENCIES +PERSISTENCY +PERSISTENT +PERSISTENTLY +PERSISTER +PERSISTERS +PERSISTING +PERSISTS +PERSNICKETINESS +PERSNICKETY +PERSON +PERSONA +PERSONABLE +PERSONABLENESS +PERSONAE +PERSONAGE +PERSONAGES +PERSONAL +PERSONALISE +PERSONALISED +PERSONALISES +PERSONALISING +PERSONALISM +PERSONALISMS +PERSONALIST +PERSONALISTIC +PERSONALISTS +PERSONALITIES +PERSONALITY +PERSONALIZATION +PERSONALIZE +PERSONALIZED +PERSONALIZES +PERSONALIZING +PERSONALLY +PERSONALS +PERSONALTIES +PERSONALTY +PERSONAS +PERSONATE +PERSONATED +PERSONATES +PERSONATING +PERSONATION +PERSONATIONS +PERSONATIVE +PERSONATOR +PERSONATORS +PERSONHOOD +PERSONHOODS +PERSONIFICATION +PERSONIFIED +PERSONIFIER +PERSONIFIERS +PERSONIFIES +PERSONIFY +PERSONIFYING +PERSONNEL +PERSONNELS +PERSONS +PERSPECTIVAL +PERSPECTIVE +PERSPECTIVELY +PERSPECTIVES +PERSPEX +PERSPEXES +PERSPICACIOUS +PERSPICACIOUSLY +PERSPICACITIES +PERSPICACITY +PERSPICUITIES +PERSPICUITY +PERSPICUOUS +PERSPICUOUSLY +PERSPICUOUSNESS +PERSPIRATION +PERSPIRATIONS +PERSPIRATORY +PERSPIRE +PERSPIRED +PERSPIRES +PERSPIRING +PERSPIRY +PERSUADABLE +PERSUADE +PERSUADED +PERSUADER +PERSUADERS +PERSUADES +PERSUADING +PERSUASIBLE +PERSUASION +PERSUASIONS +PERSUASIVE +PERSUASIVELY +PERSUASIVENESS +PERT +PERTAIN +PERTAINED +PERTAINING +PERTAINS +PERTER +PERTEST +PERTINACIOUS +PERTINACIOUSLY +PERTINACITIES +PERTINACITY +PERTINENCE +PERTINENCES +PERTINENCIES +PERTINENCY +PERTINENT +PERTINENTLY +PERTLY +PERTNESS +PERTNESSES +PERTURB +PERTURBABLE +PERTURBATION +PERTURBATIONAL +PERTURBATIONS +PERTURBED +PERTURBER +PERTURBERS +PERTURBING +PERTURBS +PERTUSSAL +PERTUSSES +PERTUSSIS +PERTUSSISES +PERUKE +PERUKED +PERUKES +PERUSABLE +PERUSAL +PERUSALS +PERUSE +PERUSED +PERUSER +PERUSERS +PERUSES +PERUSING +PERV +PERVADE +PERVADED +PERVADER +PERVADERS +PERVADES +PERVADING +PERVASION +PERVASIONS +PERVASIVE +PERVASIVELY +PERVASIVENESS +PERVASIVENESSES +PERVERSE +PERVERSELY +PERVERSENESS +PERVERSENESSES +PERVERSION +PERVERSIONS +PERVERSITIES +PERVERSITY +PERVERSIVE +PERVERT +PERVERTED +PERVERTEDLY +PERVERTEDNESS +PERVERTEDNESSES +PERVERTER +PERVERTERS +PERVERTING +PERVERTS +PERVIOUS +PERVIOUSNESS +PERVIOUSNESSES +PERVS +PES +PESADE +PESADES +PESETA +PESETAS +PESEWA +PESEWAS +PESKIER +PESKIEST +PESKILY +PESKINESS +PESKINESSES +PESKY +PESO +PESOS +PESSARIES +PESSARY +PESSIMISM +PESSIMISMS +PESSIMIST +PESSIMISTIC +PESSIMISTICALLY +PESSIMISTS +PEST +PESTER +PESTERED +PESTERER +PESTERERS +PESTERING +PESTERS +PESTHOLE +PESTHOLES +PESTHOUSE +PESTHOUSES +PESTICIDE +PESTICIDES +PESTIER +PESTIEST +PESTIFEROUS +PESTIFEROUSLY +PESTIFEROUSNESS +PESTILENCE +PESTILENCES +PESTILENT +PESTILENTIAL +PESTILENTIALLY +PESTILENTLY +PESTLE +PESTLED +PESTLES +PESTLING +PESTO +PESTOS +PESTS +PESTY +PET +PETABYTE +PETABYTES +PETAHERTZ +PETAHERTZES +PETAL +PETALED +PETALINE +PETALLED +PETALLIKE +PETALODIES +PETALODY +PETALOID +PETALOUS +PETALS +PETARD +PETARDS +PETASOS +PETASOSES +PETASUS +PETASUSES +PETCOCK +PETCOCKS +PETECHIA +PETECHIAE +PETECHIAL +PETER +PETERED +PETERING +PETERS +PETIOLAR +PETIOLATE +PETIOLE +PETIOLED +PETIOLES +PETIOLULE +PETIOLULES +PETIT +PETITE +PETITENESS +PETITENESSES +PETITES +PETITION +PETITIONARY +PETITIONED +PETITIONER +PETITIONERS +PETITIONING +PETITIONS +PETNAP +PETNAPER +PETNAPERS +PETNAPING +PETNAPINGS +PETNAPPED +PETNAPPER +PETNAPPERS +PETNAPPING +PETNAPS +PETRALE +PETRALES +PETREL +PETRELS +PETRIFACTION +PETRIFACTIONS +PETRIFICATION +PETRIFICATIONS +PETRIFIED +PETRIFIER +PETRIFIERS +PETRIFIES +PETRIFY +PETRIFYING +PETROCHEMICAL +PETROCHEMICALS +PETROCHEMISTRY +PETRODOLLAR +PETRODOLLARS +PETROGENESES +PETROGENESIS +PETROGENETIC +PETROGENIES +PETROGENY +PETROGLYPH +PETROGLYPHS +PETROGRAPHER +PETROGRAPHERS +PETROGRAPHIC +PETROGRAPHICAL +PETROGRAPHIES +PETROGRAPHY +PETROL +PETROLATUM +PETROLATUMS +PETROLEUM +PETROLEUMS +PETROLIC +PETROLOGIC +PETROLOGICAL +PETROLOGICALLY +PETROLOGIES +PETROLOGIST +PETROLOGISTS +PETROLOGY +PETROLS +PETRONEL +PETRONELS +PETROSAL +PETROUS +PETS +PETSAI +PETSAIS +PETTABLE +PETTED +PETTEDLY +PETTER +PETTERS +PETTI +PETTICOAT +PETTICOATED +PETTICOATS +PETTIER +PETTIEST +PETTIFOG +PETTIFOGGED +PETTIFOGGER +PETTIFOGGERIES +PETTIFOGGERS +PETTIFOGGERY +PETTIFOGGING +PETTIFOGGINGS +PETTIFOGS +PETTILY +PETTINESS +PETTINESSES +PETTING +PETTINGS +PETTISH +PETTISHLY +PETTISHNESS +PETTISHNESSES +PETTITOES +PETTLE +PETTLED +PETTLES +PETTLING +PETTO +PETTY +PETULANCE +PETULANCES +PETULANCIES +PETULANCY +PETULANT +PETULANTLY +PETUNIA +PETUNIAS +PETUNTSE +PETUNTSES +PETUNTZE +PETUNTZES +PEW +PEWEE +PEWEES +PEWHOLDER +PEWHOLDERS +PEWIT +PEWITS +PEWS +PEWTER +PEWTERER +PEWTERERS +PEWTERS +PEYOTE +PEYOTES +PEYOTL +PEYOTLS +PEYTRAL +PEYTRALS +PEYTREL +PEYTRELS +PFENNIG +PFENNIGE +PFENNIGS +PFFT +PFUI +PHAETON +PHAETONS +PHAGE +PHAGEDENA +PHAGEDENAS +PHAGES +PHAGOCYTE +PHAGOCYTES +PHAGOCYTIC +PHAGOCYTIZE +PHAGOCYTIZED +PHAGOCYTIZES +PHAGOCYTIZING +PHAGOCYTOSE +PHAGOCYTOSED +PHAGOCYTOSES +PHAGOCYTOSING +PHAGOCYTOSIS +PHAGOCYTOTIC +PHAGOSOME +PHAGOSOMES +PHALANGAL +PHALANGE +PHALANGEAL +PHALANGER +PHALANGERS +PHALANGES +PHALANSTERIES +PHALANSTERY +PHALANX +PHALANXES +PHALAROPE +PHALAROPES +PHALLI +PHALLIC +PHALLICALLY +PHALLICISM +PHALLICISMS +PHALLISM +PHALLISMS +PHALLIST +PHALLISTS +PHALLOCENTRIC +PHALLUS +PHALLUSES +PHANEROGAM +PHANEROGAMS +PHANEROPHYTE +PHANEROPHYTES +PHANTASIED +PHANTASIES +PHANTASM +PHANTASMA +PHANTASMAGORIA +PHANTASMAGORIAS +PHANTASMAGORIC +PHANTASMAL +PHANTASMATA +PHANTASMIC +PHANTASMS +PHANTAST +PHANTASTS +PHANTASY +PHANTASYING +PHANTOM +PHANTOMLIKE +PHANTOMS +PHARAOH +PHARAOHS +PHARAONIC +PHARISAIC +PHARISAICAL +PHARISAICALLY +PHARISAICALNESS +PHARISAISM +PHARISAISMS +PHARISEE +PHARISEES +PHARMACEUTICAL +PHARMACEUTICALS +PHARMACIES +PHARMACIST +PHARMACISTS +PHARMACODYNAMIC +PHARMACOGNOSIES +PHARMACOGNOSTIC +PHARMACOGNOSY +PHARMACOKINETIC +PHARMACOLOGIC +PHARMACOLOGICAL +PHARMACOLOGIES +PHARMACOLOGIST +PHARMACOLOGISTS +PHARMACOLOGY +PHARMACOPEIA +PHARMACOPEIAL +PHARMACOPEIAS +PHARMACOPOEIA +PHARMACOPOEIAL +PHARMACOPOEIAS +PHARMACOTHERAPY +PHARMACY +PHARMING +PHARMINGS +PHAROS +PHAROSES +PHARYNGAL +PHARYNGALS +PHARYNGEAL +PHARYNGES +PHARYNGITIDES +PHARYNGITIS +PHARYNX +PHARYNXES +PHASE +PHASEAL +PHASED +PHASEDOWN +PHASEDOWNS +PHASEOUT +PHASEOUTS +PHASES +PHASIC +PHASING +PHASIS +PHASMID +PHASMIDS +PHAT +PHATIC +PHATICALLY +PHATTER +PHATTEST +PHEASANT +PHEASANTS +PHELLEM +PHELLEMS +PHELLODERM +PHELLODERMS +PHELLOGEN +PHELLOGENS +PHELONIA +PHELONION +PHELONIONS +PHENACAINE +PHENACAINES +PHENACETIN +PHENACETINS +PHENACITE +PHENACITES +PHENAKITE +PHENAKITES +PHENANTHRENE +PHENANTHRENES +PHENATE +PHENATES +PHENAZIN +PHENAZINE +PHENAZINES +PHENAZINS +PHENCYCLIDINE +PHENCYCLIDINES +PHENETIC +PHENETICIST +PHENETICISTS +PHENETICS +PHENETOL +PHENETOLE +PHENETOLES +PHENETOLS +PHENIX +PHENIXES +PHENMETRAZINE +PHENMETRAZINES +PHENOBARBITAL +PHENOBARBITALS +PHENOBARBITONE +PHENOBARBITONES +PHENOCOPIES +PHENOCOPY +PHENOCRYST +PHENOCRYSTIC +PHENOCRYSTS +PHENOL +PHENOLATE +PHENOLATED +PHENOLATES +PHENOLATING +PHENOLIC +PHENOLICS +PHENOLOGICAL +PHENOLOGICALLY +PHENOLOGIES +PHENOLOGY +PHENOLPHTHALEIN +PHENOLS +PHENOM +PHENOMENA +PHENOMENAL +PHENOMENALISM +PHENOMENALISMS +PHENOMENALIST +PHENOMENALISTIC +PHENOMENALISTS +PHENOMENALLY +PHENOMENAS +PHENOMENOLOGIES +PHENOMENOLOGIST +PHENOMENOLOGY +PHENOMENON +PHENOMENONS +PHENOMS +PHENOTHIAZINE +PHENOTHIAZINES +PHENOTYPE +PHENOTYPES +PHENOTYPIC +PHENOTYPICAL +PHENOTYPICALLY +PHENOXIDE +PHENOXIDES +PHENOXY +PHENTOLAMINE +PHENTOLAMINES +PHENYL +PHENYLALANINE +PHENYLALANINES +PHENYLBUTAZONE +PHENYLBUTAZONES +PHENYLENE +PHENYLENES +PHENYLEPHRINE +PHENYLEPHRINES +PHENYLIC +PHENYLKETONURIA +PHENYLKETONURIC +PHENYLS +PHENYLTHIOUREA +PHENYLTHIOUREAS +PHENYTOIN +PHENYTOINS +PHERESES +PHERESIS +PHEROMONAL +PHEROMONE +PHEROMONES +PHEW +PHI +PHIAL +PHIALS +PHILABEG +PHILABEGS +PHILADELPHUS +PHILADELPHUSES +PHILANDER +PHILANDERED +PHILANDERER +PHILANDERERS +PHILANDERING +PHILANDERS +PHILANTHROPIC +PHILANTHROPICAL +PHILANTHROPIES +PHILANTHROPIST +PHILANTHROPISTS +PHILANTHROPOID +PHILANTHROPOIDS +PHILANTHROPY +PHILATELIC +PHILATELICALLY +PHILATELIES +PHILATELIST +PHILATELISTS +PHILATELY +PHILHARMONIC +PHILHARMONICS +PHILHELLENE +PHILHELLENES +PHILHELLENIC +PHILHELLENISM +PHILHELLENISMS +PHILHELLENIST +PHILHELLENISTS +PHILIBEG +PHILIBEGS +PHILIPPIC +PHILIPPICS +PHILISTIA +PHILISTIAS +PHILISTINE +PHILISTINES +PHILISTINISM +PHILISTINISMS +PHILLUMENIST +PHILLUMENISTS +PHILODENDRA +PHILODENDRON +PHILODENDRONS +PHILOGYNIES +PHILOGYNY +PHILOLOGICAL +PHILOLOGICALLY +PHILOLOGIES +PHILOLOGIST +PHILOLOGISTS +PHILOLOGY +PHILOMEL +PHILOMELA +PHILOMELAS +PHILOMELS +PHILOSOPHE +PHILOSOPHER +PHILOSOPHERS +PHILOSOPHES +PHILOSOPHIC +PHILOSOPHICAL +PHILOSOPHICALLY +PHILOSOPHIES +PHILOSOPHISE +PHILOSOPHISED +PHILOSOPHISES +PHILOSOPHISING +PHILOSOPHIZE +PHILOSOPHIZED +PHILOSOPHIZER +PHILOSOPHIZERS +PHILOSOPHIZES +PHILOSOPHIZING +PHILOSOPHY +PHILTER +PHILTERED +PHILTERING +PHILTERS +PHILTRA +PHILTRE +PHILTRED +PHILTRES +PHILTRING +PHILTRUM +PHIMOSES +PHIMOSIS +PHIMOTIC +PHIS +PHIZ +PHIZES +PHLEBITIC +PHLEBITIDES +PHLEBITIS +PHLEBITISES +PHLEBOGRAM +PHLEBOGRAMS +PHLEBOGRAPHIC +PHLEBOGRAPHIES +PHLEBOGRAPHY +PHLEBOLOGIES +PHLEBOLOGY +PHLEBOTOMIES +PHLEBOTOMIST +PHLEBOTOMISTS +PHLEBOTOMY +PHLEGM +PHLEGMATIC +PHLEGMATICALLY +PHLEGMIER +PHLEGMIEST +PHLEGMS +PHLEGMY +PHLOEM +PHLOEMS +PHLOGISTIC +PHLOGISTON +PHLOGISTONS +PHLOGOPITE +PHLOGOPITES +PHLORIZIN +PHLORIZINS +PHLOX +PHLOXES +PHLYCTENA +PHLYCTENAE +PHOBIA +PHOBIAS +PHOBIC +PHOBICS +PHOCINE +PHOEBE +PHOEBES +PHOEBUS +PHOEBUSES +PHOENIX +PHOENIXES +PHOENIXLIKE +PHON +PHONAL +PHONATE +PHONATED +PHONATES +PHONATHON +PHONATHONS +PHONATING +PHONATION +PHONATIONS +PHONE +PHONED +PHONEMATIC +PHONEME +PHONEMES +PHONEMIC +PHONEMICALLY +PHONEMICIST +PHONEMICISTS +PHONEMICS +PHONES +PHONETIC +PHONETICALLY +PHONETICIAN +PHONETICIANS +PHONETICS +PHONETIST +PHONETISTS +PHONEY +PHONEYED +PHONEYING +PHONEYS +PHONIC +PHONICALLY +PHONICS +PHONIED +PHONIER +PHONIES +PHONIEST +PHONILY +PHONINESS +PHONINESSES +PHONING +PHONO +PHONOCARDIOGRAM +PHONOGRAM +PHONOGRAMIC +PHONOGRAMICALLY +PHONOGRAMMIC +PHONOGRAMS +PHONOGRAPH +PHONOGRAPHER +PHONOGRAPHERS +PHONOGRAPHIC +PHONOGRAPHIES +PHONOGRAPHS +PHONOGRAPHY +PHONOLITE +PHONOLITES +PHONOLOGIC +PHONOLOGICAL +PHONOLOGICALLY +PHONOLOGIES +PHONOLOGIST +PHONOLOGISTS +PHONOLOGY +PHONON +PHONONS +PHONOS +PHONOTACTIC +PHONOTACTICS +PHONOTYPE +PHONOTYPES +PHONOTYPIES +PHONOTYPY +PHONS +PHONY +PHONYING +PHOOEY +PHORATE +PHORATES +PHORESIES +PHORESY +PHORONID +PHORONIDS +PHOSGENE +PHOSGENES +PHOSPHATASE +PHOSPHATASES +PHOSPHATE +PHOSPHATES +PHOSPHATIC +PHOSPHATIDE +PHOSPHATIDES +PHOSPHATIDIC +PHOSPHATIDYL +PHOSPHATIDYLS +PHOSPHATIZATION +PHOSPHATIZE +PHOSPHATIZED +PHOSPHATIZES +PHOSPHATIZING +PHOSPHATURIA +PHOSPHATURIAS +PHOSPHENE +PHOSPHENES +PHOSPHID +PHOSPHIDE +PHOSPHIDES +PHOSPHIDS +PHOSPHIN +PHOSPHINE +PHOSPHINES +PHOSPHINS +PHOSPHITE +PHOSPHITES +PHOSPHOCREATINE +PHOSPHOKINASE +PHOSPHOKINASES +PHOSPHOLIPASE +PHOSPHOLIPASES +PHOSPHOLIPID +PHOSPHOLIPIDS +PHOSPHONIUM +PHOSPHONIUMS +PHOSPHOPROTEIN +PHOSPHOPROTEINS +PHOSPHOR +PHOSPHORE +PHOSPHORES +PHOSPHORESCE +PHOSPHORESCED +PHOSPHORESCENCE +PHOSPHORESCENT +PHOSPHORESCES +PHOSPHORESCING +PHOSPHORI +PHOSPHORIC +PHOSPHORITE +PHOSPHORITES +PHOSPHORITIC +PHOSPHOROLYSES +PHOSPHOROLYSIS +PHOSPHOROLYTIC +PHOSPHOROUS +PHOSPHORS +PHOSPHORUS +PHOSPHORUSES +PHOSPHORYL +PHOSPHORYLASE +PHOSPHORYLASES +PHOSPHORYLATE +PHOSPHORYLATED +PHOSPHORYLATES +PHOSPHORYLATING +PHOSPHORYLATION +PHOSPHORYLATIVE +PHOSPHORYLS +PHOT +PHOTIC +PHOTICALLY +PHOTICS +PHOTO +PHOTOAUTOTROPH +PHOTOAUTOTROPHS +PHOTOBIOLOGIC +PHOTOBIOLOGICAL +PHOTOBIOLOGIES +PHOTOBIOLOGIST +PHOTOBIOLOGISTS +PHOTOBIOLOGY +PHOTOCATHODE +PHOTOCATHODES +PHOTOCELL +PHOTOCELLS +PHOTOCHEMICAL +PHOTOCHEMICALLY +PHOTOCHEMIST +PHOTOCHEMISTRY +PHOTOCHEMISTS +PHOTOCHROMIC +PHOTOCHROMISM +PHOTOCHROMISMS +PHOTOCOMPOSE +PHOTOCOMPOSED +PHOTOCOMPOSER +PHOTOCOMPOSERS +PHOTOCOMPOSES +PHOTOCOMPOSING +PHOTOCONDUCTIVE +PHOTOCOPIED +PHOTOCOPIER +PHOTOCOPIERS +PHOTOCOPIES +PHOTOCOPY +PHOTOCOPYING +PHOTOCURRENT +PHOTOCURRENTS +PHOTODEGRADABLE +PHOTODETECTOR +PHOTODETECTORS +PHOTODIODE +PHOTODIODES +PHOTODISSOCIATE +PHOTODUPLICATE +PHOTODUPLICATED +PHOTODUPLICATES +PHOTODYNAMIC +PHOTOED +PHOTOELECTRIC +PHOTOELECTRON +PHOTOELECTRONIC +PHOTOELECTRONS +PHOTOEMISSION +PHOTOEMISSIONS +PHOTOEMISSIVE +PHOTOENGRAVE +PHOTOENGRAVED +PHOTOENGRAVER +PHOTOENGRAVERS +PHOTOENGRAVES +PHOTOENGRAVING +PHOTOENGRAVINGS +PHOTOEXCITATION +PHOTOEXCITED +PHOTOFINISHER +PHOTOFINISHERS +PHOTOFINISHING +PHOTOFINISHINGS +PHOTOFLASH +PHOTOFLASHES +PHOTOFLOOD +PHOTOFLOODS +PHOTOG +PHOTOGENE +PHOTOGENES +PHOTOGENIC +PHOTOGENICALLY +PHOTOGEOLOGIC +PHOTOGEOLOGICAL +PHOTOGEOLOGIES +PHOTOGEOLOGIST +PHOTOGEOLOGISTS +PHOTOGEOLOGY +PHOTOGRAM +PHOTOGRAMMETRIC +PHOTOGRAMMETRY +PHOTOGRAMS +PHOTOGRAPH +PHOTOGRAPHED +PHOTOGRAPHER +PHOTOGRAPHERS +PHOTOGRAPHIC +PHOTOGRAPHIES +PHOTOGRAPHING +PHOTOGRAPHS +PHOTOGRAPHY +PHOTOGRAVURE +PHOTOGRAVURES +PHOTOGS +PHOTOINDUCED +PHOTOINDUCTION +PHOTOINDUCTIONS +PHOTOINDUCTIVE +PHOTOING +PHOTOIONIZATION +PHOTOIONIZE +PHOTOIONIZED +PHOTOIONIZES +PHOTOIONIZING +PHOTOJOURNALISM +PHOTOJOURNALIST +PHOTOKINESES +PHOTOKINESIS +PHOTOKINETIC +PHOTOLITHOGRAPH +PHOTOLYSES +PHOTOLYSIS +PHOTOLYTIC +PHOTOLYTICALLY +PHOTOLYZABLE +PHOTOLYZE +PHOTOLYZED +PHOTOLYZES +PHOTOLYZING +PHOTOMAP +PHOTOMAPPED +PHOTOMAPPING +PHOTOMAPS +PHOTOMASK +PHOTOMASKS +PHOTOMECHANICAL +PHOTOMETER +PHOTOMETERS +PHOTOMETRIC +PHOTOMETRICALLY +PHOTOMETRIES +PHOTOMETRY +PHOTOMICROGRAPH +PHOTOMONTAGE +PHOTOMONTAGES +PHOTOMOSAIC +PHOTOMOSAICS +PHOTOMULTIPLIER +PHOTOMURAL +PHOTOMURALS +PHOTON +PHOTONEGATIVE +PHOTONIC +PHOTONICS +PHOTONS +PHOTONUCLEAR +PHOTOOXIDATION +PHOTOOXIDATIONS +PHOTOOXIDATIVE +PHOTOOXIDIZE +PHOTOOXIDIZED +PHOTOOXIDIZES +PHOTOOXIDIZING +PHOTOPERIOD +PHOTOPERIODIC +PHOTOPERIODISM +PHOTOPERIODISMS +PHOTOPERIODS +PHOTOPHASE +PHOTOPHASES +PHOTOPHOBIA +PHOTOPHOBIAS +PHOTOPHOBIC +PHOTOPHORE +PHOTOPHORES +PHOTOPIA +PHOTOPIAS +PHOTOPIC +PHOTOPLAY +PHOTOPLAYS +PHOTOPOLYMER +PHOTOPOLYMERS +PHOTOPOSITIVE +PHOTOPRODUCT +PHOTOPRODUCTION +PHOTOPRODUCTS +PHOTOREACTION +PHOTOREACTIONS +PHOTORECEPTION +PHOTORECEPTIONS +PHOTORECEPTIVE +PHOTORECEPTOR +PHOTORECEPTORS +PHOTOREDUCE +PHOTOREDUCED +PHOTOREDUCES +PHOTOREDUCING +PHOTOREDUCTION +PHOTOREDUCTIONS +PHOTORESIST +PHOTORESISTS +PHOTOS +PHOTOSCAN +PHOTOSCANNED +PHOTOSCANNING +PHOTOSCANS +PHOTOSENSITIVE +PHOTOSENSITIZE +PHOTOSENSITIZED +PHOTOSENSITIZER +PHOTOSENSITIZES +PHOTOSET +PHOTOSETS +PHOTOSETTER +PHOTOSETTERS +PHOTOSETTING +PHOTOSPHERE +PHOTOSPHERES +PHOTOSPHERIC +PHOTOSTAT +PHOTOSTATED +PHOTOSTATIC +PHOTOSTATING +PHOTOSTATS +PHOTOSTATTED +PHOTOSTATTING +PHOTOSYNTHATE +PHOTOSYNTHATES +PHOTOSYNTHESES +PHOTOSYNTHESIS +PHOTOSYNTHESIZE +PHOTOSYNTHETIC +PHOTOSYSTEM +PHOTOSYSTEMS +PHOTOTACTIC +PHOTOTACTICALLY +PHOTOTAXES +PHOTOTAXIES +PHOTOTAXIS +PHOTOTAXY +PHOTOTELEGRAPHY +PHOTOTOXIC +PHOTOTOXICITIES +PHOTOTOXICITY +PHOTOTROPIC +PHOTOTROPICALLY +PHOTOTROPISM +PHOTOTROPISMS +PHOTOTUBE +PHOTOTUBES +PHOTOTYPE +PHOTOTYPES +PHOTOTYPESETTER +PHOTOVOLTAIC +PHOTOVOLTAICS +PHOTS +PHPHT +PHRAGMOPLAST +PHRAGMOPLASTS +PHRASAL +PHRASALLY +PHRASE +PHRASED +PHRASEMAKER +PHRASEMAKERS +PHRASEMAKING +PHRASEMAKINGS +PHRASEMONGER +PHRASEMONGERING +PHRASEMONGERS +PHRASEOLOGICAL +PHRASEOLOGIES +PHRASEOLOGIST +PHRASEOLOGISTS +PHRASEOLOGY +PHRASES +PHRASING +PHRASINGS +PHRATRAL +PHRATRIC +PHRATRIES +PHRATRY +PHREAK +PHREAKED +PHREAKER +PHREAKERS +PHREAKING +PHREAKINGS +PHREAKS +PHREATIC +PHREATOPHYTE +PHREATOPHYTES +PHREATOPHYTIC +PHRENETIC +PHRENIC +PHRENITIDES +PHRENITIS +PHRENITISES +PHRENOLOGICAL +PHRENOLOGIES +PHRENOLOGIST +PHRENOLOGISTS +PHRENOLOGY +PHRENSIED +PHRENSIES +PHRENSY +PHRENSYING +PHT +PHTHALATE +PHTHALATES +PHTHALEIN +PHTHALEINS +PHTHALIC +PHTHALIN +PHTHALINS +PHTHALOCYANINE +PHTHALOCYANINES +PHTHISES +PHTHISIC +PHTHISICAL +PHTHISICS +PHTHISIS +PHUT +PHUTS +PHYCOCYANIN +PHYCOCYANINS +PHYCOERYTHRIN +PHYCOERYTHRINS +PHYCOLOGICAL +PHYCOLOGIES +PHYCOLOGIST +PHYCOLOGISTS +PHYCOLOGY +PHYCOMYCETE +PHYCOMYCETES +PHYCOMYCETOUS +PHYLA +PHYLACTERIES +PHYLACTERY +PHYLAE +PHYLAR +PHYLAXIS +PHYLAXISES +PHYLE +PHYLESES +PHYLESIS +PHYLESISES +PHYLETIC +PHYLETICALLY +PHYLETICS +PHYLIC +PHYLLARIES +PHYLLARY +PHYLLITE +PHYLLITES +PHYLLITIC +PHYLLO +PHYLLOCLADE +PHYLLOCLADES +PHYLLODE +PHYLLODES +PHYLLODIA +PHYLLODIUM +PHYLLOID +PHYLLOIDS +PHYLLOME +PHYLLOMES +PHYLLOMIC +PHYLLOPOD +PHYLLOPODS +PHYLLOS +PHYLLOTACTIC +PHYLLOTAXES +PHYLLOTAXIES +PHYLLOTAXIS +PHYLLOTAXY +PHYLLOXERA +PHYLLOXERAS +PHYLOGENETIC +PHYLOGENIES +PHYLOGENY +PHYLON +PHYLUM +PHYSED +PHYSEDS +PHYSES +PHYSIATRIES +PHYSIATRIST +PHYSIATRISTS +PHYSIATRY +PHYSIC +PHYSICAL +PHYSICALISM +PHYSICALISMS +PHYSICALIST +PHYSICALISTIC +PHYSICALISTS +PHYSICALITIES +PHYSICALITY +PHYSICALLY +PHYSICALNESS +PHYSICALNESSES +PHYSICALS +PHYSICIAN +PHYSICIANS +PHYSICIST +PHYSICISTS +PHYSICKED +PHYSICKING +PHYSICOCHEMICAL +PHYSICS +PHYSIOCRATIC +PHYSIOGNOMIC +PHYSIOGNOMICAL +PHYSIOGNOMIES +PHYSIOGNOMY +PHYSIOGRAPHER +PHYSIOGRAPHERS +PHYSIOGRAPHIC +PHYSIOGRAPHICAL +PHYSIOGRAPHIES +PHYSIOGRAPHY +PHYSIOLOGIC +PHYSIOLOGICAL +PHYSIOLOGICALLY +PHYSIOLOGIES +PHYSIOLOGIST +PHYSIOLOGISTS +PHYSIOLOGY +PHYSIOPATHOLOGY +PHYSIOTHERAPIES +PHYSIOTHERAPIST +PHYSIOTHERAPY +PHYSIQUE +PHYSIQUED +PHYSIQUES +PHYSIS +PHYSOSTIGMINE +PHYSOSTIGMINES +PHYTANE +PHYTANES +PHYTIN +PHYTINS +PHYTOALEXIN +PHYTOALEXINS +PHYTOCHEMICAL +PHYTOCHEMICALLY +PHYTOCHEMIST +PHYTOCHEMISTRY +PHYTOCHEMISTS +PHYTOCHROME +PHYTOCHROMES +PHYTOFLAGELLATE +PHYTOGENIES +PHYTOGENY +PHYTOGEOGRAPHER +PHYTOGEOGRAPHIC +PHYTOGEOGRAPHY +PHYTOHORMONE +PHYTOHORMONES +PHYTOID +PHYTOL +PHYTOLITH +PHYTOLITHS +PHYTOLOGIES +PHYTOLOGY +PHYTOLS +PHYTON +PHYTONIC +PHYTONS +PHYTOPATHOGEN +PHYTOPATHOGENIC +PHYTOPATHOGENS +PHYTOPATHOLOGY +PHYTOPHAGOUS +PHYTOPLANKTER +PHYTOPLANKTERS +PHYTOPLANKTON +PHYTOPLANKTONIC +PHYTOPLANKTONS +PHYTOSOCIOLOGY +PHYTOSTEROL +PHYTOSTEROLS +PHYTOTOXIC +PHYTOTOXICITIES +PHYTOTOXICITY +PHYTOTRON +PHYTOTRONS +PI +PIA +PIACULAR +PIAFFE +PIAFFED +PIAFFER +PIAFFERS +PIAFFES +PIAFFING +PIAL +PIAN +PIANIC +PIANISM +PIANISMS +PIANISSIMI +PIANISSIMO +PIANISSIMOS +PIANIST +PIANISTIC +PIANISTICALLY +PIANISTS +PIANO +PIANOFORTE +PIANOFORTES +PIANOS +PIANS +PIAS +PIASABA +PIASABAS +PIASAVA +PIASAVAS +PIASSABA +PIASSABAS +PIASSAVA +PIASSAVAS +PIASTER +PIASTERS +PIASTRE +PIASTRES +PIAZZA +PIAZZAS +PIAZZE +PIBAL +PIBALS +PIBROCH +PIBROCHS +PIC +PICA +PICACHO +PICACHOS +PICADILLO +PICADILLOS +PICADOR +PICADORES +PICADORS +PICAL +PICANINNIES +PICANINNY +PICANTE +PICARA +PICARAS +PICARESQUE +PICARESQUES +PICARO +PICAROON +PICAROONED +PICAROONING +PICAROONS +PICAROS +PICAS +PICAYUNE +PICAYUNES +PICAYUNISH +PICCALILLI +PICCALILLIS +PICCATA +PICCOLO +PICCOLOIST +PICCOLOISTS +PICCOLOS +PICE +PICEOUS +PICHOLINE +PICHOLINES +PICIFORM +PICK +PICKABACK +PICKABACKED +PICKABACKING +PICKABACKS +PICKADIL +PICKADILS +PICKANINNIES +PICKANINNY +PICKAROON +PICKAROONS +PICKAX +PICKAXE +PICKAXED +PICKAXES +PICKAXING +PICKED +PICKEER +PICKEERED +PICKEERING +PICKEERS +PICKER +PICKEREL +PICKERELS +PICKERELWEED +PICKERELWEEDS +PICKERS +PICKET +PICKETBOAT +PICKETBOATS +PICKETED +PICKETER +PICKETERS +PICKETING +PICKETS +PICKIER +PICKIEST +PICKINESS +PICKINESSES +PICKING +PICKINGS +PICKLE +PICKLED +PICKLES +PICKLING +PICKLOCK +PICKLOCKS +PICKOFF +PICKOFFS +PICKPOCKET +PICKPOCKETS +PICKPROOF +PICKS +PICKTHANK +PICKTHANKS +PICKUP +PICKUPS +PICKWICK +PICKWICKS +PICKY +PICLORAM +PICLORAMS +PICNIC +PICNICKED +PICNICKER +PICNICKERS +PICNICKING +PICNICKY +PICNICS +PICOFARAD +PICOFARADS +PICOGRAM +PICOGRAMS +PICOLIN +PICOLINE +PICOLINES +PICOLINS +PICOMETER +PICOMETERS +PICOMETRE +PICOMETRES +PICOMOLE +PICOMOLES +PICORNAVIRUS +PICORNAVIRUSES +PICOSECOND +PICOSECONDS +PICOT +PICOTED +PICOTEE +PICOTEES +PICOTING +PICOTS +PICOWAVE +PICOWAVED +PICOWAVES +PICOWAVING +PICQUET +PICQUETS +PICRATE +PICRATED +PICRATES +PICRIC +PICRITE +PICRITES +PICRITIC +PICROTOXIN +PICROTOXINS +PICS +PICTOGRAM +PICTOGRAMS +PICTOGRAPH +PICTOGRAPHIC +PICTOGRAPHIES +PICTOGRAPHS +PICTOGRAPHY +PICTORIAL +PICTORIALISM +PICTORIALISMS +PICTORIALIST +PICTORIALISTS +PICTORIALIZE +PICTORIALIZED +PICTORIALIZES +PICTORIALIZING +PICTORIALLY +PICTORIALNESS +PICTORIALNESSES +PICTORIALS +PICTURE +PICTURED +PICTUREPHONE +PICTUREPHONES +PICTURES +PICTURESQUE +PICTURESQUELY +PICTURESQUENESS +PICTURING +PICTURIZATION +PICTURIZATIONS +PICTURIZE +PICTURIZED +PICTURIZES +PICTURIZING +PICUL +PICULS +PIDDLE +PIDDLED +PIDDLER +PIDDLERS +PIDDLES +PIDDLING +PIDDLY +PIDDOCK +PIDDOCKS +PIDGIN +PIDGINIZATION +PIDGINIZATIONS +PIDGINIZE +PIDGINIZED +PIDGINIZES +PIDGINIZING +PIDGINS +PIE +PIEBALD +PIEBALDS +PIECE +PIECED +PIECEMEAL +PIECER +PIECERS +PIECES +PIECEWISE +PIECEWORK +PIECEWORKER +PIECEWORKERS +PIECEWORKS +PIECING +PIECINGS +PIECRUST +PIECRUSTS +PIED +PIEDFORT +PIEDFORTS +PIEDMONT +PIEDMONTS +PIEFORT +PIEFORTS +PIEHOLE +PIEHOLES +PIEING +PIEPLANT +PIEPLANTS +PIER +PIERCE +PIERCED +PIERCER +PIERCERS +PIERCES +PIERCING +PIERCINGLY +PIERCINGS +PIERIDINE +PIEROGI +PIEROGIES +PIERROT +PIERROTS +PIERS +PIES +PIETA +PIETAS +PIETIES +PIETISM +PIETISMS +PIETIST +PIETISTIC +PIETISTICALLY +PIETISTS +PIETY +PIEZOELECTRIC +PIEZOMETER +PIEZOMETERS +PIEZOMETRIC +PIFFLE +PIFFLED +PIFFLES +PIFFLING +PIG +PIGBOAT +PIGBOATS +PIGEON +PIGEONHOLE +PIGEONHOLED +PIGEONHOLER +PIGEONHOLERS +PIGEONHOLES +PIGEONHOLING +PIGEONITE +PIGEONITES +PIGEONS +PIGEONWING +PIGEONWINGS +PIGFISH +PIGFISHES +PIGGED +PIGGERIES +PIGGERY +PIGGIE +PIGGIER +PIGGIES +PIGGIEST +PIGGIN +PIGGINESS +PIGGINESSES +PIGGING +PIGGINS +PIGGISH +PIGGISHLY +PIGGISHNESS +PIGGISHNESSES +PIGGY +PIGGYBACK +PIGGYBACKED +PIGGYBACKING +PIGGYBACKS +PIGHEADED +PIGHEADEDLY +PIGHEADEDNESS +PIGHEADEDNESSES +PIGLET +PIGLETS +PIGLIKE +PIGMENT +PIGMENTARY +PIGMENTATION +PIGMENTATIONS +PIGMENTED +PIGMENTING +PIGMENTS +PIGMIES +PIGMY +PIGNOLI +PIGNOLIA +PIGNOLIAS +PIGNOLIS +PIGNORA +PIGNUS +PIGNUT +PIGNUTS +PIGOUT +PIGOUTS +PIGPEN +PIGPENS +PIGS +PIGSKIN +PIGSKINS +PIGSNEY +PIGSNEYS +PIGSTICK +PIGSTICKED +PIGSTICKER +PIGSTICKERS +PIGSTICKING +PIGSTICKS +PIGSTIES +PIGSTY +PIGTAIL +PIGTAILED +PIGTAILS +PIGWEED +PIGWEEDS +PIING +PIKA +PIKAKE +PIKAKES +PIKAS +PIKE +PIKED +PIKEMAN +PIKEMEN +PIKEPERCH +PIKEPERCHES +PIKER +PIKERS +PIKES +PIKESTAFF +PIKESTAFFS +PIKESTAVES +PIKI +PIKING +PIKIS +PILAF +PILAFF +PILAFFS +PILAFS +PILAR +PILASTER +PILASTERS +PILAU +PILAUS +PILAW +PILAWS +PILCHARD +PILCHARDS +PILE +PILEA +PILEATE +PILEATED +PILED +PILEI +PILELESS +PILEOUS +PILES +PILEUM +PILEUP +PILEUPS +PILEUS +PILEWORT +PILEWORTS +PILFER +PILFERABLE +PILFERAGE +PILFERAGES +PILFERED +PILFERER +PILFERERS +PILFERING +PILFERPROOF +PILFERS +PILGARLIC +PILGARLICS +PILGRIM +PILGRIMAGE +PILGRIMAGED +PILGRIMAGES +PILGRIMAGING +PILGRIMS +PILI +PILIFORM +PILING +PILINGS +PILIS +PILL +PILLAGE +PILLAGED +PILLAGER +PILLAGERS +PILLAGES +PILLAGING +PILLAR +PILLARED +PILLARING +PILLARLESS +PILLARS +PILLBOX +PILLBOXES +PILLED +PILLING +PILLION +PILLIONS +PILLORIED +PILLORIES +PILLORY +PILLORYING +PILLOW +PILLOWCASE +PILLOWCASES +PILLOWED +PILLOWING +PILLOWS +PILLOWY +PILLS +PILOCARPINE +PILOCARPINES +PILONIDAL +PILOSE +PILOSITIES +PILOSITY +PILOT +PILOTAGE +PILOTAGES +PILOTED +PILOTFISH +PILOTFISHES +PILOTHOUSE +PILOTHOUSES +PILOTING +PILOTINGS +PILOTLESS +PILOTS +PILOUS +PILSENER +PILSENERS +PILSNER +PILSNERS +PILULAR +PILULE +PILULES +PILUS +PILY +PIMA +PIMAS +PIMENTO +PIMENTOS +PIMIENTO +PIMIENTOS +PIMP +PIMPED +PIMPERNEL +PIMPERNELS +PIMPING +PIMPLE +PIMPLED +PIMPLES +PIMPLIER +PIMPLIEST +PIMPLY +PIMPMOBILE +PIMPMOBILES +PIMPS +PIN +PINA +PINACEOUS +PINAFORE +PINAFORED +PINAFORES +PINANG +PINANGS +PINAS +PINASTER +PINASTERS +PINATA +PINATAS +PINBALL +PINBALLED +PINBALLING +PINBALLS +PINBONE +PINBONES +PINCER +PINCERLIKE +PINCERS +PINCH +PINCHBECK +PINCHBECKS +PINCHBUG +PINCHBUGS +PINCHCOCK +PINCHCOCKS +PINCHECK +PINCHECKS +PINCHED +PINCHER +PINCHERS +PINCHES +PINCHING +PINCHPENNY +PINCUSHION +PINCUSHIONS +PINDER +PINDERS +PINDLING +PINE +PINEAL +PINEALECTOMIES +PINEALECTOMIZE +PINEALECTOMIZED +PINEALECTOMIZES +PINEALECTOMY +PINEALS +PINEAPPLE +PINEAPPLES +PINECONE +PINECONES +PINED +PINEDROPS +PINELAND +PINELANDS +PINELIKE +PINENE +PINENES +PINERIES +PINERY +PINES +PINESAP +PINESAPS +PINETA +PINETUM +PINEWOOD +PINEWOODS +PINEY +PINFEATHER +PINFEATHERS +PINFISH +PINFISHES +PINFOLD +PINFOLDED +PINFOLDING +PINFOLDS +PING +PINGED +PINGER +PINGERS +PINGING +PINGO +PINGOES +PINGOS +PINGRASS +PINGRASSES +PINGS +PINGUID +PINHEAD +PINHEADED +PINHEADEDNESS +PINHEADEDNESSES +PINHEADS +PINHOLE +PINHOLES +PINIER +PINIEST +PINING +PINION +PINIONED +PINIONING +PINIONS +PINITE +PINITES +PINITOL +PINITOLS +PINK +PINKED +PINKEN +PINKENED +PINKENING +PINKENS +PINKER +PINKERS +PINKEST +PINKEY +PINKEYE +PINKEYES +PINKEYS +PINKIE +PINKIES +PINKING +PINKINGS +PINKISH +PINKISHNESS +PINKISHNESSES +PINKLY +PINKNESS +PINKNESSES +PINKO +PINKOES +PINKOS +PINKROOT +PINKROOTS +PINKS +PINKY +PINNA +PINNACE +PINNACES +PINNACLE +PINNACLED +PINNACLES +PINNACLING +PINNAE +PINNAL +PINNAS +PINNATE +PINNATED +PINNATELY +PINNATIFID +PINNATION +PINNATIONS +PINNED +PINNER +PINNERS +PINNIES +PINNING +PINNIPED +PINNIPEDS +PINNULA +PINNULAE +PINNULAR +PINNULATE +PINNULE +PINNULES +PINNY +PINOCHLE +PINOCHLES +PINOCLE +PINOCLES +PINOCYTIC +PINOCYTOSES +PINOCYTOSIS +PINOCYTOTIC +PINOCYTOTICALLY +PINOLE +PINOLES +PINON +PINONES +PINONS +PINOT +PINOTS +PINPOINT +PINPOINTED +PINPOINTING +PINPOINTS +PINPRICK +PINPRICKED +PINPRICKING +PINPRICKS +PINS +PINSCHER +PINSCHERS +PINSETTER +PINSETTERS +PINSPOTTER +PINSPOTTERS +PINSTRIPE +PINSTRIPES +PINT +PINTA +PINTADA +PINTADAS +PINTADO +PINTADOES +PINTADOS +PINTAIL +PINTAILED +PINTAILS +PINTANO +PINTANOS +PINTAS +PINTLE +PINTLES +PINTO +PINTOES +PINTOS +PINTS +PINTSIZE +PINTSIZED +PINUP +PINUPS +PINWALE +PINWALES +PINWEED +PINWEEDS +PINWHEEL +PINWHEELED +PINWHEELING +PINWHEELS +PINWORK +PINWORKS +PINWORM +PINWORMS +PINWRENCH +PINWRENCHES +PINY +PINYIN +PINYON +PINYONS +PIOLET +PIOLETS +PION +PIONEER +PIONEERED +PIONEERING +PIONEERS +PIONIC +PIONS +PIOSITIES +PIOSITY +PIOUS +PIOUSLY +PIOUSNESS +PIOUSNESSES +PIP +PIPAGE +PIPAGES +PIPAL +PIPALS +PIPE +PIPEAGE +PIPEAGES +PIPED +PIPEFISH +PIPEFISHES +PIPEFUL +PIPEFULS +PIPELESS +PIPELIKE +PIPELINE +PIPELINED +PIPELINES +PIPELINING +PIPER +PIPERAZINE +PIPERAZINES +PIPERIDINE +PIPERIDINES +PIPERINE +PIPERINES +PIPERONAL +PIPERONALS +PIPERS +PIPES +PIPESTEM +PIPESTEMS +PIPESTONE +PIPESTONES +PIPET +PIPETS +PIPETTE +PIPETTED +PIPETTES +PIPETTING +PIPIER +PIPIEST +PIPINESS +PIPINESSES +PIPING +PIPINGLY +PIPINGS +PIPISTREL +PIPISTRELS +PIPIT +PIPITS +PIPKIN +PIPKINS +PIPPED +PIPPIN +PIPPING +PIPPINS +PIPS +PIPSISSEWA +PIPSISSEWAS +PIPSQUEAK +PIPSQUEAKS +PIPY +PIQUANCE +PIQUANCES +PIQUANCIES +PIQUANCY +PIQUANT +PIQUANTLY +PIQUANTNESS +PIQUANTNESSES +PIQUE +PIQUED +PIQUES +PIQUET +PIQUETS +PIQUING +PIRACETAM +PIRACETAMS +PIRACIES +PIRACY +PIRAGUA +PIRAGUAS +PIRANA +PIRANAS +PIRANHA +PIRANHAS +PIRARUCU +PIRARUCUS +PIRATE +PIRATED +PIRATES +PIRATIC +PIRATICAL +PIRATICALLY +PIRATING +PIRAYA +PIRAYAS +PIRIFORM +PIRN +PIRNS +PIROG +PIROGEN +PIROGHI +PIROGI +PIROGIES +PIROGUE +PIROGUES +PIROJKI +PIROPLASM +PIROPLASMA +PIROPLASMATA +PIROPLASMS +PIROQUE +PIROQUES +PIROSHKI +PIROUETTE +PIROUETTED +PIROUETTES +PIROUETTING +PIROZHKI +PIROZHOK +PIS +PISCARIES +PISCARY +PISCATOR +PISCATORIAL +PISCATORS +PISCATORY +PISCICULTURE +PISCICULTURES +PISCIFORM +PISCINA +PISCINAE +PISCINAL +PISCINAS +PISCINE +PISCIVORE +PISCIVORES +PISCIVOROUS +PISCO +PISCOS +PISH +PISHED +PISHER +PISHERS +PISHES +PISHING +PISHOGE +PISHOGES +PISHOGUE +PISHOGUES +PISIFORM +PISIFORMS +PISMIRE +PISMIRES +PISO +PISOLITE +PISOLITES +PISOLITH +PISOLITHS +PISOLITIC +PISOS +PISS +PISSANT +PISSANTS +PISSED +PISSER +PISSERS +PISSES +PISSING +PISSOIR +PISSOIRS +PISTACHE +PISTACHES +PISTACHIO +PISTACHIOS +PISTAREEN +PISTAREENS +PISTE +PISTES +PISTIL +PISTILLATE +PISTILS +PISTOL +PISTOLE +PISTOLED +PISTOLEER +PISTOLEERS +PISTOLERO +PISTOLEROS +PISTOLES +PISTOLIER +PISTOLIERS +PISTOLING +PISTOLLED +PISTOLLING +PISTOLS +PISTON +PISTONS +PISTOU +PISTOUS +PIT +PITA +PITAHAYA +PITAHAYAS +PITAPAT +PITAPATS +PITAPATTED +PITAPATTING +PITAS +PITAYA +PITAYAS +PITCH +PITCHBLENDE +PITCHBLENDES +PITCHED +PITCHER +PITCHERFUL +PITCHERFULS +PITCHERS +PITCHERSFUL +PITCHES +PITCHFORK +PITCHFORKED +PITCHFORKING +PITCHFORKS +PITCHIER +PITCHIEST +PITCHILY +PITCHING +PITCHMAN +PITCHMEN +PITCHOUT +PITCHOUTS +PITCHPOLE +PITCHPOLED +PITCHPOLES +PITCHPOLING +PITCHWOMAN +PITCHWOMEN +PITCHY +PITEOUS +PITEOUSLY +PITEOUSNESS +PITEOUSNESSES +PITFALL +PITFALLS +PITH +PITHEAD +PITHEADS +PITHECANTHROPI +PITHECANTHROPUS +PITHECOID +PITHED +PITHIER +PITHIEST +PITHILY +PITHINESS +PITHINESSES +PITHING +PITHLESS +PITHS +PITHY +PITIABLE +PITIABLENESS +PITIABLENESSES +PITIABLY +PITIED +PITIER +PITIERS +PITIES +PITIFUL +PITIFULLER +PITIFULLEST +PITIFULLY +PITIFULNESS +PITIFULNESSES +PITILESS +PITILESSLY +PITILESSNESS +PITILESSNESSES +PITMAN +PITMANS +PITMEN +PITON +PITONS +PITS +PITSAW +PITSAWS +PITTA +PITTANCE +PITTANCES +PITTAS +PITTED +PITTING +PITTINGS +PITTOSPORUM +PITTOSPORUMS +PITUITARIES +PITUITARY +PITY +PITYING +PITYINGLY +PITYRIASES +PITYRIASIS +PIU +PIVOT +PIVOTABLE +PIVOTAL +PIVOTALLY +PIVOTED +PIVOTING +PIVOTMAN +PIVOTMEN +PIVOTS +PIX +PIXEL +PIXELS +PIXES +PIXIE +PIXIEISH +PIXIES +PIXILATED +PIXILATION +PIXILATIONS +PIXILLATED +PIXINESS +PIXINESSES +PIXY +PIXYISH +PIZAZZ +PIZAZZES +PIZAZZY +PIZZA +PIZZALIKE +PIZZAS +PIZZAZ +PIZZAZES +PIZZAZZ +PIZZAZZES +PIZZAZZY +PIZZELLE +PIZZELLES +PIZZERIA +PIZZERIAS +PIZZICATI +PIZZICATO +PIZZLE +PIZZLES +PLACABILITIES +PLACABILITY +PLACABLE +PLACABLY +PLACARD +PLACARDED +PLACARDING +PLACARDS +PLACATE +PLACATED +PLACATER +PLACATERS +PLACATES +PLACATING +PLACATINGLY +PLACATION +PLACATIONS +PLACATIVE +PLACATORY +PLACE +PLACEABLE +PLACEBO +PLACEBOES +PLACEBOS +PLACED +PLACEHOLDER +PLACEHOLDERS +PLACEKICK +PLACEKICKED +PLACEKICKER +PLACEKICKERS +PLACEKICKING +PLACEKICKS +PLACELESS +PLACELESSLY +PLACEMAN +PLACEMEN +PLACEMENT +PLACEMENTS +PLACENTA +PLACENTAE +PLACENTAL +PLACENTALS +PLACENTAS +PLACENTATION +PLACENTATIONS +PLACER +PLACERS +PLACES +PLACET +PLACETS +PLACID +PLACIDITIES +PLACIDITY +PLACIDLY +PLACIDNESS +PLACIDNESSES +PLACING +PLACK +PLACKET +PLACKETS +PLACKS +PLACODERM +PLACODERMS +PLACOID +PLACOIDS +PLAFOND +PLAFONDS +PLAGAL +PLAGE +PLAGES +PLAGIARIES +PLAGIARISE +PLAGIARISED +PLAGIARISES +PLAGIARISING +PLAGIARISM +PLAGIARISMS +PLAGIARIST +PLAGIARISTIC +PLAGIARISTS +PLAGIARIZE +PLAGIARIZED +PLAGIARIZER +PLAGIARIZERS +PLAGIARIZES +PLAGIARIZING +PLAGIARY +PLAGIOCLASE +PLAGIOCLASES +PLAGIOTROPIC +PLAGUE +PLAGUED +PLAGUER +PLAGUERS +PLAGUES +PLAGUEY +PLAGUILY +PLAGUING +PLAGUY +PLAICE +PLAICES +PLAID +PLAIDED +PLAIDS +PLAIN +PLAINCHANT +PLAINCHANTS +PLAINCLOTHES +PLAINCLOTHESMAN +PLAINCLOTHESMEN +PLAINED +PLAINER +PLAINEST +PLAINING +PLAINLY +PLAINNESS +PLAINNESSES +PLAINS +PLAINSMAN +PLAINSMEN +PLAINSONG +PLAINSONGS +PLAINSPOKEN +PLAINSPOKENNESS +PLAINT +PLAINTEXT +PLAINTEXTS +PLAINTFUL +PLAINTIFF +PLAINTIFFS +PLAINTIVE +PLAINTIVELY +PLAINTIVENESS +PLAINTIVENESSES +PLAINTS +PLAISTER +PLAISTERED +PLAISTERING +PLAISTERS +PLAIT +PLAITED +PLAITER +PLAITERS +PLAITING +PLAITINGS +PLAITS +PLAN +PLANAR +PLANARIA +PLANARIAN +PLANARIANS +PLANARIAS +PLANARITIES +PLANARITY +PLANATE +PLANATION +PLANATIONS +PLANCH +PLANCHE +PLANCHES +PLANCHET +PLANCHETS +PLANCHETTE +PLANCHETTES +PLANE +PLANED +PLANELOAD +PLANELOADS +PLANENESS +PLANENESSES +PLANER +PLANERS +PLANES +PLANESIDE +PLANESIDES +PLANET +PLANETARIA +PLANETARIES +PLANETARIUM +PLANETARIUMS +PLANETARY +PLANETESIMAL +PLANETESIMALS +PLANETLIKE +PLANETOID +PLANETOIDAL +PLANETOIDS +PLANETOLOGICAL +PLANETOLOGIES +PLANETOLOGIST +PLANETOLOGISTS +PLANETOLOGY +PLANETS +PLANETWIDE +PLANFORM +PLANFORMS +PLANGENCIES +PLANGENCY +PLANGENT +PLANGENTLY +PLANIMETER +PLANIMETERS +PLANIMETRIC +PLANIMETRICALLY +PLANING +PLANISH +PLANISHED +PLANISHER +PLANISHERS +PLANISHES +PLANISHING +PLANISPHERE +PLANISPHERES +PLANISPHERIC +PLANK +PLANKED +PLANKING +PLANKINGS +PLANKS +PLANKTER +PLANKTERS +PLANKTON +PLANKTONIC +PLANKTONS +PLANLESS +PLANLESSLY +PLANLESSNESS +PLANLESSNESSES +PLANNED +PLANNER +PLANNERS +PLANNING +PLANNINGS +PLANOGRAPHIC +PLANOGRAPHIES +PLANOGRAPHY +PLANOSOL +PLANOSOLS +PLANS +PLANT +PLANTABLE +PLANTAIN +PLANTAINS +PLANTAR +PLANTATION +PLANTATIONS +PLANTED +PLANTER +PLANTERS +PLANTIGRADE +PLANTIGRADES +PLANTING +PLANTINGS +PLANTLET +PLANTLETS +PLANTLIKE +PLANTOCRACIES +PLANTOCRACY +PLANTS +PLANTSMAN +PLANTSMEN +PLANULA +PLANULAE +PLANULAR +PLANULATE +PLANULOID +PLAQUE +PLAQUES +PLASH +PLASHED +PLASHER +PLASHERS +PLASHES +PLASHIER +PLASHIEST +PLASHING +PLASHY +PLASM +PLASMA +PLASMAGEL +PLASMAGELS +PLASMAGENE +PLASMAGENES +PLASMALEMMA +PLASMALEMMAS +PLASMAPHERESES +PLASMAPHERESIS +PLASMAS +PLASMASOL +PLASMASOLS +PLASMATIC +PLASMIC +PLASMID +PLASMIDS +PLASMIN +PLASMINOGEN +PLASMINOGENS +PLASMINS +PLASMODESM +PLASMODESMA +PLASMODESMAS +PLASMODESMATA +PLASMODIA +PLASMODIUM +PLASMOGAMIES +PLASMOGAMY +PLASMOID +PLASMOIDS +PLASMOLYSES +PLASMOLYSIS +PLASMOLYTIC +PLASMOLYZE +PLASMOLYZED +PLASMOLYZES +PLASMOLYZING +PLASMON +PLASMONS +PLASMS +PLASTER +PLASTERBOARD +PLASTERBOARDS +PLASTERED +PLASTERER +PLASTERERS +PLASTERING +PLASTERINGS +PLASTERS +PLASTERWORK +PLASTERWORKS +PLASTERY +PLASTIC +PLASTICALLY +PLASTICENE +PLASTICENES +PLASTICINE +PLASTICINES +PLASTICITIES +PLASTICITY +PLASTICIZATION +PLASTICIZATIONS +PLASTICIZE +PLASTICIZED +PLASTICIZER +PLASTICIZERS +PLASTICIZES +PLASTICIZING +PLASTICKY +PLASTICLY +PLASTICS +PLASTID +PLASTIDIAL +PLASTIDS +PLASTIQUE +PLASTIQUES +PLASTISOL +PLASTISOLS +PLASTOCYANIN +PLASTOCYANINS +PLASTOQUINONE +PLASTOQUINONES +PLASTRAL +PLASTRON +PLASTRONS +PLASTRUM +PLASTRUMS +PLAT +PLATAN +PLATANE +PLATANES +PLATANS +PLATE +PLATEAU +PLATEAUED +PLATEAUING +PLATEAUS +PLATEAUX +PLATED +PLATEFUL +PLATEFULS +PLATEGLASS +PLATELET +PLATELETS +PLATELIKE +PLATEMAKER +PLATEMAKERS +PLATEMAKING +PLATEMAKINGS +PLATEN +PLATENS +PLATER +PLATERESQUE +PLATERS +PLATES +PLATESFUL +PLATFORM +PLATFORMS +PLATIER +PLATIES +PLATIEST +PLATINA +PLATINAS +PLATING +PLATINGS +PLATINIC +PLATINIZE +PLATINIZED +PLATINIZES +PLATINIZING +PLATINOCYANIDE +PLATINOCYANIDES +PLATINOID +PLATINOIDS +PLATINOUS +PLATINUM +PLATINUMS +PLATITUDE +PLATITUDES +PLATITUDINAL +PLATITUDINARIAN +PLATITUDINIZE +PLATITUDINIZED +PLATITUDINIZES +PLATITUDINIZING +PLATITUDINOUS +PLATITUDINOUSLY +PLATONIC +PLATONICALLY +PLATONISM +PLATONISMS +PLATOON +PLATOONED +PLATOONING +PLATOONS +PLATS +PLATTED +PLATTER +PLATTERFUL +PLATTERFULS +PLATTERS +PLATTERSFUL +PLATTING +PLATY +PLATYFISH +PLATYFISHES +PLATYHELMINTH +PLATYHELMINTHIC +PLATYHELMINTHS +PLATYPI +PLATYPUS +PLATYPUSES +PLATYRRHINE +PLATYRRHINES +PLATYS +PLAUDIT +PLAUDITS +PLAUSIBILITIES +PLAUSIBILITY +PLAUSIBLE +PLAUSIBLENESS +PLAUSIBLENESSES +PLAUSIBLY +PLAUSIVE +PLAY +PLAYA +PLAYABILITIES +PLAYABILITY +PLAYABLE +PLAYACT +PLAYACTED +PLAYACTING +PLAYACTINGS +PLAYACTOR +PLAYACTORS +PLAYACTS +PLAYAS +PLAYBACK +PLAYBACKS +PLAYBILL +PLAYBILLS +PLAYBOOK +PLAYBOOKS +PLAYBOY +PLAYBOYS +PLAYDATE +PLAYDATES +PLAYDAY +PLAYDAYS +PLAYDOWN +PLAYDOWNS +PLAYED +PLAYER +PLAYERS +PLAYFELLOW +PLAYFELLOWS +PLAYFIELD +PLAYFIELDS +PLAYFUL +PLAYFULLY +PLAYFULNESS +PLAYFULNESSES +PLAYGIRL +PLAYGIRLS +PLAYGOER +PLAYGOERS +PLAYGOING +PLAYGOINGS +PLAYGROUND +PLAYGROUNDS +PLAYGROUP +PLAYGROUPS +PLAYHOUSE +PLAYHOUSES +PLAYING +PLAYLAND +PLAYLANDS +PLAYLESS +PLAYLET +PLAYLETS +PLAYLIKE +PLAYLIST +PLAYLISTS +PLAYMAKER +PLAYMAKERS +PLAYMAKING +PLAYMAKINGS +PLAYMATE +PLAYMATES +PLAYOFF +PLAYOFFS +PLAYPEN +PLAYPENS +PLAYROOM +PLAYROOMS +PLAYS +PLAYSUIT +PLAYSUITS +PLAYTHING +PLAYTHINGS +PLAYTIME +PLAYTIMES +PLAYWEAR +PLAYWRIGHT +PLAYWRIGHTING +PLAYWRIGHTINGS +PLAYWRIGHTS +PLAYWRITING +PLAYWRITINGS +PLAZA +PLAZAS +PLEA +PLEACH +PLEACHED +PLEACHES +PLEACHING +PLEAD +PLEADABLE +PLEADED +PLEADER +PLEADERS +PLEADING +PLEADINGLY +PLEADINGS +PLEADS +PLEAS +PLEASANCE +PLEASANCES +PLEASANT +PLEASANTER +PLEASANTEST +PLEASANTLY +PLEASANTNESS +PLEASANTNESSES +PLEASANTRIES +PLEASANTRY +PLEASE +PLEASED +PLEASER +PLEASERS +PLEASES +PLEASING +PLEASINGLY +PLEASINGNESS +PLEASINGNESSES +PLEASURABILITY +PLEASURABLE +PLEASURABLENESS +PLEASURABLY +PLEASURE +PLEASURED +PLEASURELESS +PLEASURES +PLEASURING +PLEAT +PLEATED +PLEATER +PLEATERS +PLEATHER +PLEATHERS +PLEATING +PLEATLESS +PLEATS +PLEB +PLEBE +PLEBEIAN +PLEBEIANISM +PLEBEIANISMS +PLEBEIANLY +PLEBEIANS +PLEBES +PLEBISCITARY +PLEBISCITE +PLEBISCITES +PLEBS +PLECOPTERAN +PLECOPTERANS +PLECTRA +PLECTRON +PLECTRONS +PLECTRUM +PLECTRUMS +PLED +PLEDGE +PLEDGED +PLEDGEE +PLEDGEES +PLEDGEOR +PLEDGEORS +PLEDGER +PLEDGERS +PLEDGES +PLEDGET +PLEDGETS +PLEDGING +PLEDGOR +PLEDGORS +PLEIAD +PLEIADES +PLEIADS +PLEINAIRISM +PLEINAIRISMS +PLEINAIRIST +PLEINAIRISTS +PLEIOCENE +PLEIOTAXIES +PLEIOTAXY +PLEIOTROPIC +PLEIOTROPIES +PLEIOTROPY +PLENA +PLENARIES +PLENARILY +PLENARY +PLENCH +PLENCHES +PLENIPOTENT +PLENIPOTENTIARY +PLENISH +PLENISHED +PLENISHES +PLENISHING +PLENISM +PLENISMS +PLENIST +PLENISTS +PLENITUDE +PLENITUDES +PLENITUDINOUS +PLENTEOUS +PLENTEOUSLY +PLENTEOUSNESS +PLENTEOUSNESSES +PLENTIES +PLENTIFUL +PLENTIFULLY +PLENTIFULNESS +PLENTIFULNESSES +PLENTITUDE +PLENTITUDES +PLENTY +PLENUM +PLENUMS +PLEOCHROIC +PLEOCHROISM +PLEOCHROISMS +PLEOMORPHIC +PLEOMORPHISM +PLEOMORPHISMS +PLEON +PLEONAL +PLEONASM +PLEONASMS +PLEONASTIC +PLEONASTICALLY +PLEONIC +PLEONS +PLEOPOD +PLEOPODS +PLEROCERCOID +PLEROCERCOIDS +PLESIOSAUR +PLESIOSAURS +PLESSOR +PLESSORS +PLETHORA +PLETHORAS +PLETHORIC +PLETHYSMOGRAM +PLETHYSMOGRAMS +PLETHYSMOGRAPH +PLETHYSMOGRAPHS +PLETHYSMOGRAPHY +PLEURA +PLEURAE +PLEURAL +PLEURAS +PLEURISIES +PLEURISY +PLEURITIC +PLEURON +PLEUROPNEUMONIA +PLEUSTON +PLEUSTONIC +PLEUSTONS +PLEW +PLEWS +PLEX +PLEXAL +PLEXES +PLEXIFORM +PLEXOR +PLEXORS +PLEXUS +PLEXUSES +PLIABILITIES +PLIABILITY +PLIABLE +PLIABLENESS +PLIABLENESSES +PLIABLY +PLIANCIES +PLIANCY +PLIANT +PLIANTLY +PLIANTNESS +PLIANTNESSES +PLICA +PLICAE +PLICAL +PLICATE +PLICATED +PLICATELY +PLICATION +PLICATIONS +PLICATURE +PLICATURES +PLIE +PLIED +PLIER +PLIERS +PLIES +PLIGHT +PLIGHTED +PLIGHTER +PLIGHTERS +PLIGHTING +PLIGHTS +PLIMSOL +PLIMSOLE +PLIMSOLES +PLIMSOLL +PLIMSOLLS +PLIMSOLS +PLINK +PLINKED +PLINKER +PLINKERS +PLINKING +PLINKS +PLINTH +PLINTHS +PLIOCENE +PLIOFILM +PLIOFILMS +PLIOTRON +PLIOTRONS +PLISKIE +PLISKIES +PLISKY +PLISSE +PLISSES +PLOD +PLODDED +PLODDER +PLODDERS +PLODDING +PLODDINGLY +PLODS +PLOIDIES +PLOIDY +PLONK +PLONKED +PLONKING +PLONKS +PLOP +PLOPPED +PLOPPING +PLOPS +PLOSION +PLOSIONS +PLOSIVE +PLOSIVES +PLOT +PLOTLESS +PLOTLESSNESS +PLOTLESSNESSES +PLOTLINE +PLOTLINES +PLOTS +PLOTTAGE +PLOTTAGES +PLOTTED +PLOTTER +PLOTTERS +PLOTTIER +PLOTTIES +PLOTTIEST +PLOTTING +PLOTTY +PLOTZ +PLOTZED +PLOTZES +PLOTZING +PLOUGH +PLOUGHED +PLOUGHER +PLOUGHERS +PLOUGHING +PLOUGHS +PLOVER +PLOVERS +PLOW +PLOWABLE +PLOWBACK +PLOWBACKS +PLOWBOY +PLOWBOYS +PLOWED +PLOWER +PLOWERS +PLOWHEAD +PLOWHEADS +PLOWING +PLOWLAND +PLOWLANDS +PLOWMAN +PLOWMEN +PLOWS +PLOWSHARE +PLOWSHARES +PLOY +PLOYED +PLOYING +PLOYS +PLUCK +PLUCKED +PLUCKER +PLUCKERS +PLUCKIER +PLUCKIEST +PLUCKILY +PLUCKINESS +PLUCKINESSES +PLUCKING +PLUCKS +PLUCKY +PLUG +PLUGGED +PLUGGER +PLUGGERS +PLUGGING +PLUGLESS +PLUGOLA +PLUGOLAS +PLUGS +PLUGUGLIES +PLUGUGLY +PLUM +PLUMAGE +PLUMAGED +PLUMAGES +PLUMATE +PLUMB +PLUMBABLE +PLUMBAGO +PLUMBAGOS +PLUMBED +PLUMBEOUS +PLUMBER +PLUMBERIES +PLUMBERS +PLUMBERY +PLUMBIC +PLUMBING +PLUMBINGS +PLUMBISM +PLUMBISMS +PLUMBNESS +PLUMBNESSES +PLUMBOUS +PLUMBS +PLUMBUM +PLUMBUMS +PLUME +PLUMED +PLUMELET +PLUMELETS +PLUMERIA +PLUMERIAS +PLUMES +PLUMIER +PLUMIEST +PLUMING +PLUMIPED +PLUMIPEDS +PLUMLIKE +PLUMMER +PLUMMEST +PLUMMET +PLUMMETED +PLUMMETING +PLUMMETS +PLUMMIER +PLUMMIEST +PLUMMY +PLUMOSE +PLUMOSELY +PLUMOSITIES +PLUMOSITY +PLUMP +PLUMPED +PLUMPEN +PLUMPENED +PLUMPENING +PLUMPENS +PLUMPER +PLUMPERS +PLUMPEST +PLUMPING +PLUMPISH +PLUMPLY +PLUMPNESS +PLUMPNESSES +PLUMPS +PLUMS +PLUMULAR +PLUMULE +PLUMULES +PLUMULOSE +PLUMY +PLUNDER +PLUNDERED +PLUNDERER +PLUNDERERS +PLUNDERING +PLUNDEROUS +PLUNDERS +PLUNGE +PLUNGED +PLUNGER +PLUNGERS +PLUNGES +PLUNGING +PLUNK +PLUNKED +PLUNKER +PLUNKERS +PLUNKIER +PLUNKIEST +PLUNKING +PLUNKS +PLUNKY +PLUPERFECT +PLUPERFECTS +PLURAL +PLURALISM +PLURALISMS +PLURALIST +PLURALISTIC +PLURALISTICALLY +PLURALISTS +PLURALITIES +PLURALITY +PLURALIZATION +PLURALIZATIONS +PLURALIZE +PLURALIZED +PLURALIZES +PLURALIZING +PLURALLY +PLURALS +PLURIPOTENT +PLUS +PLUSES +PLUSH +PLUSHER +PLUSHES +PLUSHEST +PLUSHIER +PLUSHIEST +PLUSHILY +PLUSHINESS +PLUSHINESSES +PLUSHLY +PLUSHNESS +PLUSHNESSES +PLUSHY +PLUSSAGE +PLUSSAGES +PLUSSES +PLUTEI +PLUTEUS +PLUTOCRACIES +PLUTOCRACY +PLUTOCRAT +PLUTOCRATIC +PLUTOCRATICALLY +PLUTOCRATS +PLUTON +PLUTONIAN +PLUTONIC +PLUTONISM +PLUTONISMS +PLUTONIUM +PLUTONIUMS +PLUTONS +PLUVIAL +PLUVIALS +PLUVIAN +PLUVIOSE +PLUVIOUS +PLY +PLYER +PLYERS +PLYING +PLYINGLY +PLYOMETRIC +PLYOMETRICS +PLYWOOD +PLYWOODS +PNEUMA +PNEUMAS +PNEUMATIC +PNEUMATICALLY +PNEUMATICITIES +PNEUMATICITY +PNEUMATICS +PNEUMATOLOGIES +PNEUMATOLOGY +PNEUMATOLYTIC +PNEUMATOPHORE +PNEUMATOPHORES +PNEUMOCOCCAL +PNEUMOCOCCI +PNEUMOCOCCUS +PNEUMOCONIOSES +PNEUMOCONIOSIS +PNEUMOGRAPH +PNEUMOGRAPHS +PNEUMONECTOMIES +PNEUMONECTOMY +PNEUMONIA +PNEUMONIAS +PNEUMONIC +PNEUMONITIS +PNEUMONITISES +PNEUMOTHORACES +PNEUMOTHORAX +PNEUMOTHORAXES +POACEOUS +POACH +POACHABLE +POACHED +POACHER +POACHERS +POACHES +POACHIER +POACHIEST +POACHING +POACHY +POBLANO +POBLANOS +POBOY +POBOYS +POCHARD +POCHARDS +POCK +POCKED +POCKET +POCKETABLE +POCKETBOOK +POCKETBOOKS +POCKETED +POCKETER +POCKETERS +POCKETFUL +POCKETFULS +POCKETING +POCKETKNIFE +POCKETKNIVES +POCKETS +POCKETSFUL +POCKIER +POCKIEST +POCKILY +POCKING +POCKMARK +POCKMARKED +POCKMARKING +POCKMARKS +POCKS +POCKY +POCO +POCOCURANTE +POCOCURANTISM +POCOCURANTISMS +POCOSEN +POCOSENS +POCOSIN +POCOSINS +POCOSON +POCOSONS +POD +PODAGRA +PODAGRAL +PODAGRAS +PODAGRIC +PODAGROUS +PODDED +PODDING +PODESTA +PODESTAS +PODGIER +PODGIEST +PODGILY +PODGY +PODIA +PODIATRIC +PODIATRIES +PODIATRIST +PODIATRISTS +PODIATRY +PODITE +PODITES +PODITIC +PODIUM +PODIUMS +PODLIKE +PODOCARP +PODOMERE +PODOMERES +PODOPHYLLI +PODOPHYLLIN +PODOPHYLLINS +PODOPHYLLUM +PODOPHYLLUMS +PODS +PODSOL +PODSOLIC +PODSOLIZATION +PODSOLIZATIONS +PODSOLS +PODZOL +PODZOLIC +PODZOLIZATION +PODZOLIZATIONS +PODZOLIZE +PODZOLIZED +PODZOLIZES +PODZOLIZING +PODZOLS +POECHORE +POECHORES +POEM +POEMS +POENOLOGIES +POENOLOGY +POESIES +POESY +POET +POETASTER +POETASTERS +POETESS +POETESSES +POETIC +POETICAL +POETICALLY +POETICALNESS +POETICALNESSES +POETICISM +POETICISMS +POETICIZE +POETICIZED +POETICIZES +POETICIZING +POETICS +POETISE +POETISED +POETISER +POETISERS +POETISES +POETISING +POETIZE +POETIZED +POETIZER +POETIZERS +POETIZES +POETIZING +POETLESS +POETLIKE +POETRIES +POETRY +POETS +POGEY +POGEYS +POGIES +POGONIA +POGONIAS +POGONIP +POGONIPS +POGONOPHORAN +POGONOPHORANS +POGROM +POGROMED +POGROMING +POGROMIST +POGROMISTS +POGROMS +POGY +POH +POI +POIGNANCE +POIGNANCES +POIGNANCIES +POIGNANCY +POIGNANT +POIGNANTLY +POIKILOTHERM +POIKILOTHERMIC +POIKILOTHERMS +POILU +POILUS +POINCIANA +POINCIANAS +POIND +POINDED +POINDING +POINDS +POINSETTIA +POINSETTIAS +POINT +POINTABLE +POINTE +POINTED +POINTEDLY +POINTEDNESS +POINTEDNESSES +POINTELLE +POINTELLES +POINTER +POINTERS +POINTES +POINTIER +POINTIEST +POINTILLISM +POINTILLISMS +POINTILLIST +POINTILLISTIC +POINTILLISTS +POINTING +POINTLESS +POINTLESSLY +POINTLESSNESS +POINTLESSNESSES +POINTMAN +POINTMEN +POINTS +POINTY +POIS +POISE +POISED +POISER +POISERS +POISES +POISHA +POISING +POISON +POISONED +POISONER +POISONERS +POISONING +POISONOUS +POISONOUSLY +POISONS +POISONWOOD +POISONWOODS +POITREL +POITRELS +POKABLE +POKE +POKEBERRIES +POKEBERRY +POKED +POKER +POKEROOT +POKEROOTS +POKERS +POKES +POKEWEED +POKEWEEDS +POKEY +POKEYS +POKIER +POKIES +POKIEST +POKILY +POKINESS +POKINESSES +POKING +POKY +POL +POLAR +POLARIMETER +POLARIMETERS +POLARIMETRIC +POLARIMETRIES +POLARIMETRY +POLARISCOPE +POLARISCOPES +POLARISCOPIC +POLARISE +POLARISED +POLARISES +POLARISING +POLARITIES +POLARITY +POLARIZABILITY +POLARIZABLE +POLARIZATION +POLARIZATIONS +POLARIZE +POLARIZED +POLARIZER +POLARIZERS +POLARIZES +POLARIZING +POLAROGRAPHIC +POLAROGRAPHIES +POLAROGRAPHY +POLARON +POLARONS +POLARS +POLDER +POLDERS +POLE +POLEAX +POLEAXE +POLEAXED +POLEAXES +POLEAXING +POLECAT +POLECATS +POLED +POLEIS +POLELESS +POLEMIC +POLEMICAL +POLEMICALLY +POLEMICIST +POLEMICISTS +POLEMICIZE +POLEMICIZED +POLEMICIZES +POLEMICIZING +POLEMICS +POLEMIST +POLEMISTS +POLEMIZE +POLEMIZED +POLEMIZES +POLEMIZING +POLEMONIUM +POLEMONIUMS +POLENTA +POLENTAS +POLER +POLERS +POLES +POLESTAR +POLESTARS +POLEWARD +POLEYN +POLEYNS +POLICE +POLICED +POLICEMAN +POLICEMEN +POLICER +POLICERS +POLICES +POLICEWOMAN +POLICEWOMEN +POLICIES +POLICING +POLICY +POLICYHOLDER +POLICYHOLDERS +POLIES +POLING +POLIO +POLIOMYELITIDES +POLIOMYELITIS +POLIOS +POLIOVIRUS +POLIOVIRUSES +POLIS +POLISH +POLISHED +POLISHER +POLISHERS +POLISHES +POLISHING +POLITBURO +POLITBUROS +POLITE +POLITELY +POLITENESS +POLITENESSES +POLITER +POLITESSE +POLITESSES +POLITEST +POLITIC +POLITICAL +POLITICALIZE +POLITICALIZED +POLITICALIZES +POLITICALIZING +POLITICALLY +POLITICIAN +POLITICIANS +POLITICISE +POLITICISED +POLITICISES +POLITICISING +POLITICIZATION +POLITICIZATIONS +POLITICIZE +POLITICIZED +POLITICIZES +POLITICIZING +POLITICK +POLITICKED +POLITICKER +POLITICKERS +POLITICKING +POLITICKS +POLITICLY +POLITICO +POLITICOES +POLITICOS +POLITICS +POLITIES +POLITY +POLKA +POLKAED +POLKAING +POLKAS +POLL +POLLACK +POLLACKS +POLLARD +POLLARDED +POLLARDING +POLLARDS +POLLED +POLLEE +POLLEES +POLLEN +POLLENATE +POLLENATED +POLLENATES +POLLENATING +POLLENED +POLLENING +POLLENIZER +POLLENIZERS +POLLENOSES +POLLENOSIS +POLLENS +POLLER +POLLERS +POLLEX +POLLICAL +POLLICES +POLLINATE +POLLINATED +POLLINATES +POLLINATING +POLLINATION +POLLINATIONS +POLLINATOR +POLLINATORS +POLLING +POLLINIA +POLLINIC +POLLINIUM +POLLINIZE +POLLINIZED +POLLINIZER +POLLINIZERS +POLLINIZES +POLLINIZING +POLLINOSES +POLLINOSIS +POLLIST +POLLISTS +POLLIWOG +POLLIWOGS +POLLOCK +POLLOCKS +POLLS +POLLSTER +POLLSTERS +POLLTAKER +POLLTAKERS +POLLUTANT +POLLUTANTS +POLLUTE +POLLUTED +POLLUTER +POLLUTERS +POLLUTES +POLLUTING +POLLUTION +POLLUTIONS +POLLUTIVE +POLLYWOG +POLLYWOGS +POLO +POLOIST +POLOISTS +POLONAISE +POLONAISES +POLONIUM +POLONIUMS +POLOS +POLS +POLTERGEIST +POLTERGEISTS +POLTROON +POLTROONERIES +POLTROONERY +POLTROONS +POLY +POLYACRYLAMIDE +POLYACRYLAMIDES +POLYALCOHOL +POLYALCOHOLS +POLYAMIDE +POLYAMIDES +POLYAMINE +POLYAMINES +POLYANDRIES +POLYANDROUS +POLYANDRY +POLYANTHA +POLYANTHAS +POLYANTHI +POLYANTHUS +POLYANTHUSES +POLYATOMIC +POLYBASIC +POLYBRID +POLYBRIDS +POLYBUTADIENE +POLYBUTADIENES +POLYCARBONATE +POLYCARBONATES +POLYCARPIES +POLYCARPY +POLYCENTRIC +POLYCENTRISM +POLYCENTRISMS +POLYCHAETE +POLYCHAETES +POLYCHETE +POLYCHETES +POLYCHOTOMIES +POLYCHOTOMOUS +POLYCHOTOMY +POLYCHROMATIC +POLYCHROME +POLYCHROMED +POLYCHROMES +POLYCHROMIES +POLYCHROMING +POLYCHROMY +POLYCISTRONIC +POLYCLINIC +POLYCLINICS +POLYCLONAL +POLYCOT +POLYCOTS +POLYCRYSTAL +POLYCRYSTALLINE +POLYCRYSTALS +POLYCYCLIC +POLYCYSTIC +POLYCYTHEMIA +POLYCYTHEMIAS +POLYCYTHEMIC +POLYDACTYL +POLYDACTYLIES +POLYDACTYLY +POLYDIPSIA +POLYDIPSIAS +POLYDIPSIC +POLYDISPERSE +POLYDISPERSITY +POLYELECTROLYTE +POLYEMBRYONIC +POLYEMBRYONIES +POLYEMBRYONY +POLYENE +POLYENES +POLYENIC +POLYESTER +POLYESTERS +POLYESTROUS +POLYETHYLENE +POLYETHYLENES +POLYGALA +POLYGALAS +POLYGAMIC +POLYGAMIES +POLYGAMIST +POLYGAMISTS +POLYGAMIZE +POLYGAMIZED +POLYGAMIZES +POLYGAMIZING +POLYGAMOUS +POLYGAMY +POLYGENE +POLYGENES +POLYGENESES +POLYGENESIS +POLYGENETIC +POLYGENIC +POLYGLOT +POLYGLOTISM +POLYGLOTISMS +POLYGLOTS +POLYGLOTTISM +POLYGLOTTISMS +POLYGON +POLYGONAL +POLYGONALLY +POLYGONIES +POLYGONS +POLYGONUM +POLYGONUMS +POLYGONY +POLYGRAPH +POLYGRAPHED +POLYGRAPHER +POLYGRAPHERS +POLYGRAPHIC +POLYGRAPHING +POLYGRAPHIST +POLYGRAPHISTS +POLYGRAPHS +POLYGYNIES +POLYGYNOUS +POLYGYNY +POLYHEDRA +POLYHEDRAL +POLYHEDRON +POLYHEDRONS +POLYHEDROSES +POLYHEDROSIS +POLYHISTOR +POLYHISTORIC +POLYHISTORS +POLYHYDROXY +POLYIMIDE +POLYIMIDES +POLYLYSINE +POLYLYSINES +POLYMATH +POLYMATHIC +POLYMATHIES +POLYMATHS +POLYMATHY +POLYMER +POLYMERASE +POLYMERASES +POLYMERIC +POLYMERISATION +POLYMERISATIONS +POLYMERISE +POLYMERISED +POLYMERISES +POLYMERISING +POLYMERISM +POLYMERISMS +POLYMERIZATION +POLYMERIZATIONS +POLYMERIZE +POLYMERIZED +POLYMERIZES +POLYMERIZING +POLYMERS +POLYMORPH +POLYMORPHIC +POLYMORPHICALLY +POLYMORPHISM +POLYMORPHISMS +POLYMORPHOUS +POLYMORPHOUSLY +POLYMORPHS +POLYMYXIN +POLYMYXINS +POLYNEURITIS +POLYNEURITISES +POLYNOMIAL +POLYNOMIALS +POLYNUCLEAR +POLYNUCLEOTIDE +POLYNUCLEOTIDES +POLYNYA +POLYNYAS +POLYNYI +POLYOL +POLYOLEFIN +POLYOLEFINS +POLYOLS +POLYOMA +POLYOMAS +POLYONYMIES +POLYONYMOUS +POLYONYMY +POLYP +POLYPARIA +POLYPARIES +POLYPARIUM +POLYPARY +POLYPED +POLYPEDS +POLYPEPTIDE +POLYPEPTIDES +POLYPEPTIDIC +POLYPETALOUS +POLYPHAGIA +POLYPHAGIAS +POLYPHAGIES +POLYPHAGOUS +POLYPHAGY +POLYPHASE +POLYPHASIC +POLYPHENOL +POLYPHENOLIC +POLYPHENOLS +POLYPHONE +POLYPHONES +POLYPHONIC +POLYPHONICALLY +POLYPHONIES +POLYPHONOUS +POLYPHONOUSLY +POLYPHONY +POLYPHYLETIC +POLYPI +POLYPIDE +POLYPIDES +POLYPLOID +POLYPLOIDIES +POLYPLOIDS +POLYPLOIDY +POLYPNEA +POLYPNEAS +POLYPNEIC +POLYPOD +POLYPODIES +POLYPODS +POLYPODY +POLYPOID +POLYPORE +POLYPORES +POLYPOUS +POLYPROPYLENE +POLYPROPYLENES +POLYPS +POLYPTYCH +POLYPTYCHS +POLYPUS +POLYPUSES +POLYRHYTHM +POLYRHYTHMIC +POLYRHYTHMS +POLYRIBOSOMAL +POLYRIBOSOME +POLYRIBOSOMES +POLYS +POLYSACCHARIDE +POLYSACCHARIDES +POLYSEMIC +POLYSEMIES +POLYSEMOUS +POLYSEMY +POLYSOME +POLYSOMES +POLYSOMIC +POLYSOMICS +POLYSORBATE +POLYSORBATES +POLYSTICHOUS +POLYSTYRENE +POLYSTYRENES +POLYSULFIDE +POLYSULFIDES +POLYSYLLABIC +POLYSYLLABLE +POLYSYLLABLES +POLYSYNAPTIC +POLYSYNDETON +POLYSYNDETONS +POLYTECHNIC +POLYTECHNICS +POLYTENE +POLYTENIES +POLYTENY +POLYTHEISM +POLYTHEISMS +POLYTHEIST +POLYTHEISTIC +POLYTHEISTICAL +POLYTHEISTS +POLYTHENE +POLYTHENES +POLYTONAL +POLYTONALITIES +POLYTONALITY +POLYTONALLY +POLYTYPE +POLYTYPES +POLYTYPIC +POLYUNSATURATED +POLYURETHANE +POLYURETHANES +POLYURIA +POLYURIAS +POLYURIC +POLYVALENCE +POLYVALENCES +POLYVALENT +POLYVINYL +POLYWATER +POLYWATERS +POLYZOAN +POLYZOANS +POLYZOARIES +POLYZOARY +POLYZOIC +POM +POMACE +POMACEOUS +POMACES +POMADE +POMADED +POMADES +POMADING +POMANDER +POMANDERS +POMATUM +POMATUMS +POME +POMEGRANATE +POMEGRANATES +POMELO +POMELOS +POMES +POMFRET +POMFRETS +POMMEE +POMMEL +POMMELED +POMMELING +POMMELLED +POMMELLING +POMMELS +POMMIE +POMMIES +POMMY +POMO +POMOLOGICAL +POMOLOGIES +POMOLOGIST +POMOLOGISTS +POMOLOGY +POMOS +POMP +POMPADOUR +POMPADOURED +POMPADOURS +POMPANO +POMPANOS +POMPOM +POMPOMS +POMPON +POMPONS +POMPOSITIES +POMPOSITY +POMPOUS +POMPOUSLY +POMPOUSNESS +POMPOUSNESSES +POMPS +POMS +PONCE +PONCED +PONCES +PONCHO +PONCHOED +PONCHOS +PONCING +POND +PONDED +PONDER +PONDERABLE +PONDERED +PONDERER +PONDERERS +PONDERING +PONDEROSA +PONDEROSAS +PONDEROUS +PONDEROUSLY +PONDEROUSNESS +PONDEROUSNESSES +PONDERS +PONDING +PONDS +PONDWEED +PONDWEEDS +PONE +PONENT +PONES +PONG +PONGED +PONGEE +PONGEES +PONGID +PONGIDS +PONGING +PONGS +PONIARD +PONIARDED +PONIARDING +PONIARDS +PONIED +PONIES +PONS +PONTES +PONTIFEX +PONTIFF +PONTIFFS +PONTIFIC +PONTIFICAL +PONTIFICALLY +PONTIFICALS +PONTIFICATE +PONTIFICATED +PONTIFICATES +PONTIFICATING +PONTIFICATION +PONTIFICATIONS +PONTIFICATOR +PONTIFICATORS +PONTIFICES +PONTIL +PONTILS +PONTINE +PONTON +PONTONIER +PONTONIERS +PONTONS +PONTOON +PONTOONS +PONY +PONYING +PONYTAIL +PONYTAILED +PONYTAILS +POO +POOCH +POOCHED +POOCHES +POOCHING +POOD +POODLE +POODLES +POODS +POOED +POOF +POOFS +POOFTAH +POOFTAHS +POOFTER +POOFTERS +POOFY +POOH +POOHED +POOHING +POOHS +POOING +POOL +POOLED +POOLER +POOLERS +POOLHALL +POOLHALLS +POOLING +POOLROOM +POOLROOMS +POOLS +POOLSIDE +POOLSIDES +POON +POONS +POONTANG +POONTANGS +POOP +POOPED +POOPING +POOPS +POOR +POORER +POOREST +POORHOUSE +POORHOUSES +POORI +POORIS +POORISH +POORLY +POORMOUTH +POORMOUTHED +POORMOUTHING +POORMOUTHS +POORNESS +POORNESSES +POORTITH +POORTITHS +POOS +POOVE +POOVES +POP +POPCORN +POPCORNS +POPE +POPEDOM +POPEDOMS +POPELESS +POPELIKE +POPERIES +POPERY +POPES +POPEYED +POPGUN +POPGUNS +POPINJAY +POPINJAYS +POPISH +POPISHLY +POPLAR +POPLARS +POPLIN +POPLINS +POPLITEAL +POPLITEI +POPLITEUS +POPLITIC +POPOVER +POPOVERS +POPPA +POPPADOM +POPPADOMS +POPPADUM +POPPADUMS +POPPAS +POPPED +POPPER +POPPERS +POPPET +POPPETS +POPPIED +POPPIES +POPPING +POPPLE +POPPLED +POPPLES +POPPLING +POPPY +POPPYCOCK +POPPYCOCKS +POPPYHEAD +POPPYHEADS +POPS +POPSICLE +POPSICLES +POPSIE +POPSIES +POPSY +POPULACE +POPULACES +POPULAR +POPULARISE +POPULARISED +POPULARISES +POPULARISING +POPULARITIES +POPULARITY +POPULARIZATION +POPULARIZATIONS +POPULARIZE +POPULARIZED +POPULARIZER +POPULARIZERS +POPULARIZES +POPULARIZING +POPULARLY +POPULATE +POPULATED +POPULATES +POPULATING +POPULATION +POPULATIONAL +POPULATIONS +POPULISM +POPULISMS +POPULIST +POPULISTIC +POPULISTS +POPULOUS +POPULOUSLY +POPULOUSNESS +POPULOUSNESSES +PORBEAGLE +PORBEAGLES +PORCELAIN +PORCELAINIZE +PORCELAINIZED +PORCELAINIZES +PORCELAINIZING +PORCELAINLIKE +PORCELAINS +PORCELANEOUS +PORCELLANEOUS +PORCH +PORCHES +PORCINE +PORCINI +PORCINIS +PORCINO +PORCUPINE +PORCUPINES +PORE +PORED +PORES +PORGIES +PORGY +PORIFERAL +PORIFERAN +PORIFERANS +PORING +PORISM +PORISMS +PORK +PORKED +PORKER +PORKERS +PORKIER +PORKIES +PORKIEST +PORKINESS +PORKINESSES +PORKING +PORKPIE +PORKPIES +PORKS +PORKWOOD +PORKWOODS +PORKY +PORN +PORNIER +PORNIEST +PORNO +PORNOGRAPHER +PORNOGRAPHERS +PORNOGRAPHIC +PORNOGRAPHIES +PORNOGRAPHY +PORNOS +PORNS +PORNY +POROMERIC +POROMERICS +POROSE +POROSITIES +POROSITY +POROUS +POROUSLY +POROUSNESS +POROUSNESSES +PORPHYRIA +PORPHYRIAS +PORPHYRIC +PORPHYRIES +PORPHYRIN +PORPHYRINS +PORPHYRITIC +PORPHYROPSIN +PORPHYROPSINS +PORPHYRY +PORPOISE +PORPOISED +PORPOISES +PORPOISING +PORRECT +PORRIDGE +PORRIDGES +PORRIDGY +PORRINGER +PORRINGERS +PORT +PORTABELLA +PORTABELLAS +PORTABELLO +PORTABELLOS +PORTABILITIES +PORTABILITY +PORTABLE +PORTABLES +PORTABLY +PORTAGE +PORTAGED +PORTAGES +PORTAGING +PORTAL +PORTALED +PORTALS +PORTAMENTI +PORTAMENTO +PORTANCE +PORTANCES +PORTAPACK +PORTAPACKS +PORTAPAK +PORTAPAKS +PORTATIVE +PORTCULLIS +PORTCULLISES +PORTED +PORTEND +PORTENDED +PORTENDING +PORTENDS +PORTENT +PORTENTOUS +PORTENTOUSLY +PORTENTOUSNESS +PORTENTS +PORTER +PORTERAGE +PORTERAGES +PORTERED +PORTERESS +PORTERESSES +PORTERHOUSE +PORTERHOUSES +PORTERING +PORTERS +PORTFOLIO +PORTFOLIOS +PORTHOLE +PORTHOLES +PORTICO +PORTICOED +PORTICOES +PORTICOS +PORTIERE +PORTIERES +PORTING +PORTION +PORTIONED +PORTIONER +PORTIONERS +PORTIONING +PORTIONLESS +PORTIONS +PORTLESS +PORTLIER +PORTLIEST +PORTLINESS +PORTLINESSES +PORTLY +PORTMANTEAU +PORTMANTEAUS +PORTMANTEAUX +PORTOBELLO +PORTOBELLOS +PORTRAIT +PORTRAITIST +PORTRAITISTS +PORTRAITS +PORTRAITURE +PORTRAITURES +PORTRAY +PORTRAYAL +PORTRAYALS +PORTRAYED +PORTRAYER +PORTRAYERS +PORTRAYING +PORTRAYS +PORTRESS +PORTRESSES +PORTS +PORTSIDE +PORTULACA +PORTULACAS +POSABLE +POSADA +POSADAS +POSE +POSED +POSER +POSERS +POSES +POSEUR +POSEURS +POSH +POSHER +POSHEST +POSHLY +POSHNESS +POSHNESSES +POSIES +POSING +POSINGLY +POSIT +POSITED +POSITING +POSITION +POSITIONAL +POSITIONALLY +POSITIONED +POSITIONING +POSITIONS +POSITIVE +POSITIVELY +POSITIVENESS +POSITIVENESSES +POSITIVER +POSITIVES +POSITIVEST +POSITIVISM +POSITIVISMS +POSITIVIST +POSITIVISTIC +POSITIVISTS +POSITIVITIES +POSITIVITY +POSITRON +POSITRONIUM +POSITRONIUMS +POSITRONS +POSITS +POSOLE +POSOLES +POSOLOGIC +POSOLOGIES +POSOLOGY +POSSE +POSSES +POSSESS +POSSESSED +POSSESSEDLY +POSSESSEDNESS +POSSESSEDNESSES +POSSESSES +POSSESSING +POSSESSION +POSSESSIONAL +POSSESSIONLESS +POSSESSIONS +POSSESSIVE +POSSESSIVELY +POSSESSIVENESS +POSSESSIVES +POSSESSOR +POSSESSORS +POSSESSORY +POSSET +POSSETS +POSSIBILITIES +POSSIBILITY +POSSIBLE +POSSIBLER +POSSIBLEST +POSSIBLY +POSSUM +POSSUMS +POST +POSTABORTION +POSTACCIDENT +POSTADOLESCENT +POSTAGE +POSTAGES +POSTAL +POSTALLY +POSTALS +POSTAMPUTATION +POSTANAL +POSTAPOCALYPTIC +POSTARREST +POSTATOMIC +POSTATTACK +POSTAXIAL +POSTBAG +POSTBAGS +POSTBASE +POSTBELLUM +POSTBIBLICAL +POSTBOURGEOIS +POSTBOX +POSTBOXES +POSTBOY +POSTBOYS +POSTBURN +POSTCAPITALIST +POSTCARD +POSTCARDLIKE +POSTCARDS +POSTCAVA +POSTCAVAE +POSTCAVAL +POSTCAVAS +POSTCLASSIC +POSTCLASSICAL +POSTCODE +POSTCODES +POSTCOITAL +POSTCOLLEGE +POSTCOLLEGIATE +POSTCOLONIAL +POSTCONCEPTION +POSTCONCERT +POSTCONQUEST +POSTCONSONANTAL +POSTCONVENTION +POSTCOPULATORY +POSTCORONARY +POSTCOUP +POSTCRANIAL +POSTCRANIALLY +POSTCRASH +POSTCRISIS +POSTDATE +POSTDATED +POSTDATES +POSTDATING +POSTDEADLINE +POSTDEBATE +POSTDEBUTANTE +POSTDELIVERY +POSTDEPRESSION +POSTDEVALUATION +POSTDILUVIAN +POSTDILUVIANS +POSTDIVE +POSTDIVESTITURE +POSTDIVORCE +POSTDOC +POSTDOCS +POSTDOCTORAL +POSTDOCTORATE +POSTDRUG +POSTED +POSTEDITING +POSTEEN +POSTEENS +POSTELECTION +POSTEMBRYONAL +POSTEMBRYONIC +POSTEMERGENCE +POSTEMERGENCY +POSTEPILEPTIC +POSTER +POSTERIOR +POSTERIORITIES +POSTERIORITY +POSTERIORLY +POSTERIORS +POSTERITIES +POSTERITY +POSTERN +POSTERNS +POSTEROLATERAL +POSTERS +POSTERUPTIVE +POSTEXERCISE +POSTEXILIC +POSTEXPERIENCE +POSTEXPOSURE +POSTFACE +POSTFACES +POSTFAULT +POSTFEMINIST +POSTFIRE +POSTFIX +POSTFIXAL +POSTFIXED +POSTFIXES +POSTFIXING +POSTFLIGHT +POSTFORM +POSTFORMED +POSTFORMING +POSTFORMS +POSTFRACTURE +POSTFREEZE +POSTGAME +POSTGANGLIONIC +POSTGLACIAL +POSTGRAD +POSTGRADS +POSTGRADUATE +POSTGRADUATES +POSTGRADUATION +POSTHARVEST +POSTHASTE +POSTHASTES +POSTHEAT +POSTHEATS +POSTHEMORRHAGIC +POSTHOLE +POSTHOLES +POSTHOLIDAY +POSTHOLOCAUST +POSTHOSPITAL +POSTHUMOUS +POSTHUMOUSLY +POSTHUMOUSNESS +POSTHYPNOTIC +POSTICHE +POSTICHES +POSTIE +POSTIES +POSTILION +POSTILIONS +POSTILLION +POSTILLIONS +POSTIMPACT +POSTIMPERIAL +POSTIN +POSTINAUGURAL +POSTINDUSTRIAL +POSTINFECTION +POSTING +POSTINGS +POSTINJECTION +POSTINOCULATION +POSTINS +POSTIQUE +POSTIQUES +POSTIRRADIATION +POSTISCHEMIC +POSTISOLATION +POSTLANDING +POSTLAPSARIAN +POSTLAUNCH +POSTLIBERATION +POSTLITERATE +POSTLUDE +POSTLUDES +POSTMAN +POSTMARITAL +POSTMARK +POSTMARKED +POSTMARKING +POSTMARKS +POSTMASTECTOMY +POSTMASTER +POSTMASTERS +POSTMASTERSHIP +POSTMASTERSHIPS +POSTMATING +POSTMEDIEVAL +POSTMEN +POSTMENOPAUSAL +POSTMIDNIGHT +POSTMILLENARIAN +POSTMILLENNIAL +POSTMISTRESS +POSTMISTRESSES +POSTMODERN +POSTMODERNISM +POSTMODERNISMS +POSTMODERNIST +POSTMODERNISTS +POSTMORTEM +POSTMORTEMS +POSTNASAL +POSTNATAL +POSTNATALLY +POSTNEONATAL +POSTNUPTIAL +POSTOP +POSTOPERATIVE +POSTOPERATIVELY +POSTOPS +POSTORAL +POSTORBITAL +POSTORGASMIC +POSTPAID +POSTPARTUM +POSTPOLLINATION +POSTPONABLE +POSTPONE +POSTPONED +POSTPONEMENT +POSTPONEMENTS +POSTPONER +POSTPONERS +POSTPONES +POSTPONING +POSTPOSE +POSTPOSED +POSTPOSES +POSTPOSING +POSTPOSITION +POSTPOSITIONAL +POSTPOSITIONS +POSTPOSITIVE +POSTPOSITIVELY +POSTPRANDIAL +POSTPRIMARY +POSTPRISON +POSTPRODUCTION +POSTPRODUCTIONS +POSTPUBERTY +POSTPUBESCENT +POSTPUNK +POSTRACE +POSTRECESSION +POSTRETIREMENT +POSTRIDER +POSTRIDERS +POSTRIOT +POSTROMANTIC +POSTS +POSTSCRIPT +POSTSCRIPTS +POSTSEASON +POSTSEASONS +POSTSECONDARY +POSTSHOW +POSTSTIMULATION +POSTSTIMULATORY +POSTSTIMULUS +POSTSTRIKE +POSTSURGICAL +POSTSYNAPTIC +POSTSYNC +POSTSYNCED +POSTSYNCING +POSTSYNCS +POSTTAX +POSTTEEN +POSTTEENS +POSTTENSION +POSTTENSIONED +POSTTENSIONING +POSTTENSIONS +POSTTEST +POSTTESTS +POSTTRANSFUSION +POSTTRAUMATIC +POSTTREATMENT +POSTTRIAL +POSTULANCIES +POSTULANCY +POSTULANT +POSTULANTS +POSTULATE +POSTULATED +POSTULATES +POSTULATING +POSTULATION +POSTULATIONAL +POSTULATIONS +POSTULATOR +POSTULATORS +POSTURAL +POSTURE +POSTURED +POSTURER +POSTURERS +POSTURES +POSTURING +POSTURIST +POSTURISTS +POSTVACCINAL +POSTVACCINATION +POSTVAGOTOMY +POSTVASECTOMY +POSTVOCALIC +POSTWAR +POSTWEANING +POSTWORKSHOP +POSY +POT +POTABILITIES +POTABILITY +POTABLE +POTABLENESS +POTABLENESSES +POTABLES +POTAGE +POTAGES +POTAMIC +POTASH +POTASHES +POTASSIC +POTASSIUM +POTASSIUMS +POTATION +POTATIONS +POTATO +POTATOBUG +POTATOBUGS +POTATOES +POTATORY +POTBELLIED +POTBELLIES +POTBELLY +POTBOIL +POTBOILED +POTBOILER +POTBOILERS +POTBOILING +POTBOILS +POTBOUND +POTBOY +POTBOYS +POTEEN +POTEENS +POTENCE +POTENCES +POTENCIES +POTENCY +POTENT +POTENTATE +POTENTATES +POTENTIAL +POTENTIALITIES +POTENTIALITY +POTENTIALLY +POTENTIALS +POTENTIATE +POTENTIATED +POTENTIATES +POTENTIATING +POTENTIATION +POTENTIATIONS +POTENTIATOR +POTENTIATORS +POTENTILLA +POTENTILLAS +POTENTIOMETER +POTENTIOMETERS +POTENTIOMETRIC +POTENTLY +POTFUL +POTFULS +POTHEAD +POTHEADS +POTHEEN +POTHEENS +POTHER +POTHERB +POTHERBS +POTHERED +POTHERING +POTHERS +POTHOLDER +POTHOLDERS +POTHOLE +POTHOLED +POTHOLES +POTHOOK +POTHOOKS +POTHOS +POTHOUSE +POTHOUSES +POTHUNTER +POTHUNTERS +POTHUNTING +POTHUNTINGS +POTICHE +POTICHES +POTION +POTIONS +POTLACH +POTLACHE +POTLACHES +POTLATCH +POTLATCHED +POTLATCHES +POTLATCHING +POTLIKE +POTLINE +POTLINES +POTLUCK +POTLUCKS +POTMAN +POTMEN +POTOMETER +POTOMETERS +POTPIE +POTPIES +POTPOURRI +POTPOURRIS +POTS +POTSHARD +POTSHARDS +POTSHERD +POTSHERDS +POTSHOT +POTSHOTS +POTSHOTTING +POTSIE +POTSIES +POTSTONE +POTSTONES +POTSY +POTTAGE +POTTAGES +POTTED +POTTEEN +POTTEENS +POTTER +POTTERED +POTTERER +POTTERERS +POTTERIES +POTTERING +POTTERINGLY +POTTERS +POTTERY +POTTIER +POTTIES +POTTIEST +POTTINESS +POTTINESSES +POTTING +POTTLE +POTTLES +POTTO +POTTOS +POTTY +POTZER +POTZERS +POUCH +POUCHED +POUCHES +POUCHIER +POUCHIEST +POUCHING +POUCHY +POUF +POUFED +POUFF +POUFFE +POUFFED +POUFFES +POUFFS +POUFFY +POUFS +POULARD +POULARDE +POULARDES +POULARDS +POULT +POULTER +POULTERER +POULTERERS +POULTERS +POULTICE +POULTICED +POULTICES +POULTICING +POULTRIES +POULTRY +POULTRYMAN +POULTRYMEN +POULTS +POUNCE +POUNCED +POUNCER +POUNCERS +POUNCES +POUNCING +POUND +POUNDAGE +POUNDAGES +POUNDAL +POUNDALS +POUNDCAKE +POUNDCAKES +POUNDED +POUNDER +POUNDERS +POUNDING +POUNDS +POUR +POURABLE +POURBOIRE +POURBOIRES +POURED +POURER +POURERS +POURING +POURINGLY +POURPARLER +POURPARLERS +POURPOINT +POURPOINTS +POURS +POUSSETTE +POUSSETTED +POUSSETTES +POUSSETTING +POUSSIE +POUSSIES +POUT +POUTED +POUTER +POUTERS +POUTFUL +POUTIER +POUTIEST +POUTINE +POUTINES +POUTING +POUTINGLY +POUTS +POUTY +POVERTIES +POVERTY +POW +POWDER +POWDERED +POWDERER +POWDERERS +POWDERING +POWDERLESS +POWDERLIKE +POWDERS +POWDERY +POWER +POWERBOAT +POWERBOATS +POWERED +POWERFUL +POWERFULLY +POWERHOUSE +POWERHOUSES +POWERING +POWERLESS +POWERLESSLY +POWERLESSNESS +POWERLESSNESSES +POWERS +POWS +POWTER +POWTERS +POWWOW +POWWOWED +POWWOWING +POWWOWS +POX +POXED +POXES +POXIER +POXIEST +POXING +POXVIRUS +POXVIRUSES +POXY +POYOU +POYOUS +POZOLE +POZOLES +POZZOLAN +POZZOLANA +POZZOLANAS +POZZOLANIC +POZZOLANS +PRAAM +PRAAMS +PRACTIC +PRACTICABILITY +PRACTICABLE +PRACTICABLENESS +PRACTICABLY +PRACTICAL +PRACTICALITIES +PRACTICALITY +PRACTICALLY +PRACTICALNESS +PRACTICALNESSES +PRACTICALS +PRACTICE +PRACTICED +PRACTICER +PRACTICERS +PRACTICES +PRACTICING +PRACTICUM +PRACTICUMS +PRACTISE +PRACTISED +PRACTISES +PRACTISING +PRACTITIONER +PRACTITIONERS +PRAECIPE +PRAECIPES +PRAEDIAL +PRAEFECT +PRAEFECTS +PRAELECT +PRAELECTED +PRAELECTING +PRAELECTS +PRAEMUNIRE +PRAEMUNIRES +PRAENOMEN +PRAENOMENS +PRAENOMINA +PRAESIDIA +PRAESIDIUM +PRAESIDIUMS +PRAETOR +PRAETORIAL +PRAETORIAN +PRAETORIANS +PRAETORS +PRAETORSHIP +PRAETORSHIPS +PRAGMATIC +PRAGMATICAL +PRAGMATICALLY +PRAGMATICISM +PRAGMATICISMS +PRAGMATICIST +PRAGMATICISTS +PRAGMATICS +PRAGMATISM +PRAGMATISMS +PRAGMATIST +PRAGMATISTIC +PRAGMATISTS +PRAHU +PRAHUS +PRAIRIE +PRAIRIES +PRAISE +PRAISED +PRAISER +PRAISERS +PRAISES +PRAISEWORTHILY +PRAISEWORTHY +PRAISING +PRAJNA +PRAJNAS +PRALINE +PRALINES +PRALLTRILLER +PRALLTRILLERS +PRAM +PRAMS +PRANCE +PRANCED +PRANCER +PRANCERS +PRANCES +PRANCING +PRANDIAL +PRANG +PRANGED +PRANGING +PRANGS +PRANK +PRANKED +PRANKING +PRANKISH +PRANKISHLY +PRANKISHNESS +PRANKISHNESSES +PRANKS +PRANKSTER +PRANKSTERS +PRAO +PRAOS +PRASE +PRASEODYMIUM +PRASEODYMIUMS +PRASES +PRAT +PRATE +PRATED +PRATER +PRATERS +PRATES +PRATFALL +PRATFALLS +PRATINCOLE +PRATINCOLES +PRATING +PRATINGLY +PRATIQUE +PRATIQUES +PRATS +PRATTLE +PRATTLED +PRATTLER +PRATTLERS +PRATTLES +PRATTLING +PRATTLINGLY +PRAU +PRAUS +PRAWN +PRAWNED +PRAWNER +PRAWNERS +PRAWNING +PRAWNS +PRAXEOLOGICAL +PRAXEOLOGIES +PRAXEOLOGY +PRAXES +PRAXIS +PRAXISES +PRAY +PRAYED +PRAYER +PRAYERFUL +PRAYERFULLY +PRAYERFULNESS +PRAYERFULNESSES +PRAYERS +PRAYING +PRAYS +PREABSORB +PREABSORBED +PREABSORBING +PREABSORBS +PREACCUSE +PREACCUSED +PREACCUSES +PREACCUSING +PREACH +PREACHED +PREACHER +PREACHERS +PREACHES +PREACHIER +PREACHIEST +PREACHIFIED +PREACHIFIES +PREACHIFY +PREACHIFYING +PREACHILY +PREACHINESS +PREACHINESSES +PREACHING +PREACHINGLY +PREACHMENT +PREACHMENTS +PREACHY +PREACT +PREACTED +PREACTING +PREACTS +PREADAPT +PREADAPTATION +PREADAPTATIONS +PREADAPTED +PREADAPTING +PREADAPTIVE +PREADAPTS +PREADJUST +PREADJUSTED +PREADJUSTING +PREADJUSTS +PREADMISSION +PREADMISSIONS +PREADMIT +PREADMITS +PREADMITTED +PREADMITTING +PREADOLESCENCE +PREADOLESCENCES +PREADOLESCENT +PREADOLESCENTS +PREADOPT +PREADOPTED +PREADOPTING +PREADOPTS +PREADULT +PREADULTS +PREAGED +PREAGRICULTURAL +PREALLOT +PREALLOTS +PREALLOTTED +PREALLOTTING +PREALTER +PREALTERED +PREALTERING +PREALTERS +PREAMBLE +PREAMBLED +PREAMBLES +PREAMP +PREAMPLIFIER +PREAMPLIFIERS +PREAMPS +PREANAL +PREANESTHETIC +PREANNOUNCE +PREANNOUNCED +PREANNOUNCES +PREANNOUNCING +PREAPPLIED +PREAPPLIES +PREAPPLY +PREAPPLYING +PREAPPROVE +PREAPPROVED +PREAPPROVES +PREAPPROVING +PREARM +PREARMED +PREARMING +PREARMS +PREARRANGE +PREARRANGED +PREARRANGEMENT +PREARRANGEMENTS +PREARRANGES +PREARRANGING +PREASSEMBLED +PREASSIGN +PREASSIGNED +PREASSIGNING +PREASSIGNS +PREASSURE +PREASSURED +PREASSURES +PREASSURING +PREATOMIC +PREATTUNE +PREATTUNED +PREATTUNES +PREATTUNING +PREAUDIT +PREAUDITS +PREAVER +PREAVERRED +PREAVERRING +PREAVERS +PREAXIAL +PREBADE +PREBAKE +PREBAKED +PREBAKES +PREBAKING +PREBASAL +PREBATTLE +PREBEND +PREBENDAL +PREBENDARIES +PREBENDARY +PREBENDS +PREBIBLICAL +PREBID +PREBIDDEN +PREBIDDING +PREBIDS +PREBILL +PREBILLED +PREBILLING +PREBILLS +PREBIND +PREBINDING +PREBINDS +PREBIOLOGIC +PREBIOLOGICAL +PREBIOTIC +PREBIRTH +PREBIRTHS +PREBLESS +PREBLESSED +PREBLESSES +PREBLESSING +PREBOARD +PREBOARDED +PREBOARDING +PREBOARDS +PREBOIL +PREBOILED +PREBOILING +PREBOILS +PREBOOK +PREBOOKED +PREBOOKING +PREBOOKS +PREBOOM +PREBOUGHT +PREBOUND +PREBREAKFAST +PREBUDGET +PREBUDGETS +PREBUILD +PREBUILDING +PREBUILDS +PREBUILT +PREBUY +PREBUYING +PREBUYS +PRECALCULI +PRECALCULUS +PRECALCULUSES +PRECANCEL +PRECANCELED +PRECANCELING +PRECANCELLATION +PRECANCELLED +PRECANCELLING +PRECANCELS +PRECANCER +PRECANCEROUS +PRECANCERS +PRECAPITALIST +PRECARIOUS +PRECARIOUSLY +PRECARIOUSNESS +PRECAST +PRECASTING +PRECASTS +PRECATIVE +PRECATORY +PRECAUDAL +PRECAUTION +PRECAUTIONARY +PRECAUTIONS +PRECAVA +PRECAVAE +PRECAVAL +PRECEDE +PRECEDED +PRECEDENCE +PRECEDENCES +PRECEDENCIES +PRECEDENCY +PRECEDENT +PRECEDENTS +PRECEDES +PRECEDING +PRECENSOR +PRECENSORED +PRECENSORING +PRECENSORS +PRECENT +PRECENTED +PRECENTING +PRECENTOR +PRECENTORIAL +PRECENTORS +PRECENTORSHIP +PRECENTORSHIPS +PRECENTS +PRECEPT +PRECEPTIVE +PRECEPTOR +PRECEPTORIAL +PRECEPTORIALS +PRECEPTORIES +PRECEPTORS +PRECEPTORSHIP +PRECEPTORSHIPS +PRECEPTORY +PRECEPTS +PRECESS +PRECESSED +PRECESSES +PRECESSING +PRECESSION +PRECESSIONAL +PRECESSIONS +PRECHARGE +PRECHARGED +PRECHARGES +PRECHARGING +PRECHECK +PRECHECKED +PRECHECKING +PRECHECKS +PRECHILL +PRECHILLED +PRECHILLING +PRECHILLS +PRECHOOSE +PRECHOOSES +PRECHOOSING +PRECHOSE +PRECHOSEN +PRECIEUSE +PRECIEUX +PRECINCT +PRECINCTS +PRECIOSITIES +PRECIOSITY +PRECIOUS +PRECIOUSES +PRECIOUSLY +PRECIOUSNESS +PRECIOUSNESSES +PRECIPE +PRECIPES +PRECIPICE +PRECIPICES +PRECIPITABLE +PRECIPITANCE +PRECIPITANCES +PRECIPITANCIES +PRECIPITANCY +PRECIPITANT +PRECIPITANTLY +PRECIPITANTNESS +PRECIPITANTS +PRECIPITATE +PRECIPITATED +PRECIPITATELY +PRECIPITATENESS +PRECIPITATES +PRECIPITATING +PRECIPITATION +PRECIPITATIONS +PRECIPITATIVE +PRECIPITATOR +PRECIPITATORS +PRECIPITIN +PRECIPITINOGEN +PRECIPITINOGENS +PRECIPITINS +PRECIPITOUS +PRECIPITOUSLY +PRECIPITOUSNESS +PRECIS +PRECISE +PRECISED +PRECISELY +PRECISENESS +PRECISENESSES +PRECISER +PRECISES +PRECISEST +PRECISIAN +PRECISIANS +PRECISING +PRECISION +PRECISIONIST +PRECISIONISTS +PRECISIONS +PRECITED +PRECLEAN +PRECLEANED +PRECLEANING +PRECLEANS +PRECLEAR +PRECLEARANCE +PRECLEARANCES +PRECLEARED +PRECLEARING +PRECLEARS +PRECLINICAL +PRECLUDE +PRECLUDED +PRECLUDES +PRECLUDING +PRECLUSION +PRECLUSIONS +PRECLUSIVE +PRECLUSIVELY +PRECOCIAL +PRECOCIOUS +PRECOCIOUSLY +PRECOCIOUSNESS +PRECOCITIES +PRECOCITY +PRECODE +PRECODED +PRECODES +PRECODING +PRECOGNITION +PRECOGNITIONS +PRECOGNITIVE +PRECOITAL +PRECOLLEGE +PRECOLLEGIATE +PRECOLONIAL +PRECOMBUSTION +PRECOMBUSTIONS +PRECOMMITMENT +PRECOMMITMENTS +PRECOMPUTE +PRECOMPUTED +PRECOMPUTER +PRECOMPUTES +PRECOMPUTING +PRECONCEIVE +PRECONCEIVED +PRECONCEIVES +PRECONCEIVING +PRECONCEPTION +PRECONCEPTIONS +PRECONCERT +PRECONCERTED +PRECONCERTING +PRECONCERTS +PRECONCILIAR +PRECONDITION +PRECONDITIONED +PRECONDITIONING +PRECONDITIONS +PRECONIZE +PRECONIZED +PRECONIZES +PRECONIZING +PRECONQUEST +PRECONSCIOUS +PRECONSCIOUSES +PRECONSCIOUSLY +PRECONSONANTAL +PRECONSTRUCTED +PRECONTACT +PRECONVENTION +PRECONVICTION +PRECONVICTIONS +PRECOOK +PRECOOKED +PRECOOKER +PRECOOKERS +PRECOOKING +PRECOOKS +PRECOOL +PRECOOLED +PRECOOLING +PRECOOLS +PRECOPULATORY +PRECOUP +PRECRASH +PRECREASE +PRECREASED +PRECREASES +PRECREASING +PRECRISIS +PRECRITICAL +PRECURE +PRECURED +PRECURES +PRECURING +PRECURSOR +PRECURSORS +PRECURSORY +PRECUT +PRECUTS +PRECUTTING +PREDACEOUS +PREDACEOUSNESS +PREDACIOUS +PREDACITIES +PREDACITY +PREDATE +PREDATED +PREDATES +PREDATING +PREDATION +PREDATIONS +PREDATISM +PREDATISMS +PREDATOR +PREDATORS +PREDATORY +PREDAWN +PREDAWNS +PREDEATH +PREDEATHS +PREDEBATE +PREDECEASE +PREDECEASED +PREDECEASES +PREDECEASING +PREDECESSOR +PREDECESSORS +PREDEDUCT +PREDEDUCTED +PREDEDUCTING +PREDEDUCTS +PREDEFINE +PREDEFINED +PREDEFINES +PREDEFINING +PREDELIVERY +PREDELLA +PREDELLAS +PREDEPARTURE +PREDESIGNATE +PREDESIGNATED +PREDESIGNATES +PREDESIGNATING +PREDESTINARIAN +PREDESTINARIANS +PREDESTINATE +PREDESTINATED +PREDESTINATES +PREDESTINATING +PREDESTINATION +PREDESTINATIONS +PREDESTINATOR +PREDESTINATORS +PREDESTINE +PREDESTINED +PREDESTINES +PREDESTINING +PREDETERMINE +PREDETERMINED +PREDETERMINER +PREDETERMINERS +PREDETERMINES +PREDETERMINING +PREDEVALUATION +PREDEVELOPMENT +PREDIABETES +PREDIABETESES +PREDIABETIC +PREDIABETICS +PREDIAL +PREDICABLE +PREDICABLES +PREDICAMENT +PREDICAMENTS +PREDICANT +PREDICANTS +PREDICATE +PREDICATED +PREDICATES +PREDICATING +PREDICATION +PREDICATIONS +PREDICATIVE +PREDICATIVELY +PREDICATORY +PREDICT +PREDICTABILITY +PREDICTABLE +PREDICTABLY +PREDICTED +PREDICTING +PREDICTION +PREDICTIONS +PREDICTIVE +PREDICTIVELY +PREDICTOR +PREDICTORS +PREDICTS +PREDIGEST +PREDIGESTED +PREDIGESTING +PREDIGESTION +PREDIGESTIONS +PREDIGESTS +PREDILECTION +PREDILECTIONS +PREDINNER +PREDINNERS +PREDISCHARGE +PREDISCOVERIES +PREDISCOVERY +PREDISPOSE +PREDISPOSED +PREDISPOSES +PREDISPOSING +PREDISPOSITION +PREDISPOSITIONS +PREDIVE +PREDNISOLONE +PREDNISOLONES +PREDNISONE +PREDNISONES +PREDOCTORAL +PREDOMINANCE +PREDOMINANCES +PREDOMINANCIES +PREDOMINANCY +PREDOMINANT +PREDOMINANTLY +PREDOMINATE +PREDOMINATED +PREDOMINATELY +PREDOMINATES +PREDOMINATING +PREDOMINATION +PREDOMINATIONS +PREDRAFT +PREDRIED +PREDRIES +PREDRILL +PREDRILLED +PREDRILLING +PREDRILLS +PREDRY +PREDRYING +PREDUSK +PREDUSKS +PREDYNASTIC +PREE +PREECLAMPSIA +PREECLAMPSIAS +PREECLAMPTIC +PREED +PREEDIT +PREEDITED +PREEDITING +PREEDITS +PREEING +PREELECT +PREELECTED +PREELECTING +PREELECTION +PREELECTRIC +PREELECTS +PREEMBARGO +PREEMERGENCE +PREEMERGENT +PREEMIE +PREEMIES +PREEMINENCE +PREEMINENCES +PREEMINENT +PREEMINENTLY +PREEMPLOYMENT +PREEMPT +PREEMPTED +PREEMPTING +PREEMPTION +PREEMPTIONS +PREEMPTIVE +PREEMPTIVELY +PREEMPTOR +PREEMPTORS +PREEMPTS +PREEN +PREENACT +PREENACTED +PREENACTING +PREENACTS +PREENED +PREENER +PREENERS +PREENING +PREENROLLMENT +PREENS +PREERECT +PREERECTED +PREERECTING +PREERECTS +PREES +PREESTABLISH +PREESTABLISHED +PREESTABLISHES +PREESTABLISHING +PREETHICAL +PREEXCITE +PREEXCITED +PREEXCITES +PREEXCITING +PREEXEMPT +PREEXEMPTED +PREEXEMPTING +PREEXEMPTS +PREEXILIC +PREEXIST +PREEXISTED +PREEXISTENCE +PREEXISTENCES +PREEXISTENT +PREEXISTING +PREEXISTS +PREEXPERIMENT +PREEXPOSE +PREEXPOSED +PREEXPOSES +PREEXPOSING +PREFAB +PREFABBED +PREFABBING +PREFABRICATE +PREFABRICATED +PREFABRICATES +PREFABRICATING +PREFABRICATION +PREFABRICATIONS +PREFABS +PREFACE +PREFACED +PREFACER +PREFACERS +PREFACES +PREFACING +PREFADE +PREFADED +PREFADES +PREFADING +PREFASCIST +PREFATORY +PREFECT +PREFECTS +PREFECTURAL +PREFECTURE +PREFECTURES +PREFER +PREFERABILITIES +PREFERABILITY +PREFERABLE +PREFERABLY +PREFERENCE +PREFERENCES +PREFERENTIAL +PREFERENTIALLY +PREFERMENT +PREFERMENTS +PREFERRED +PREFERRER +PREFERRERS +PREFERRING +PREFERS +PREFEUDAL +PREFIGHT +PREFIGURATION +PREFIGURATIONS +PREFIGURATIVE +PREFIGURATIVELY +PREFIGURE +PREFIGURED +PREFIGUREMENT +PREFIGUREMENTS +PREFIGURES +PREFIGURING +PREFILE +PREFILED +PREFILES +PREFILING +PREFILLED +PREFINANCE +PREFINANCED +PREFINANCES +PREFINANCING +PREFIRE +PREFIRED +PREFIRES +PREFIRING +PREFIX +PREFIXAL +PREFIXED +PREFIXES +PREFIXING +PREFIXION +PREFIXIONS +PREFLAME +PREFLIGHT +PREFLIGHTED +PREFLIGHTING +PREFLIGHTS +PREFOCUS +PREFOCUSED +PREFOCUSES +PREFOCUSING +PREFOCUSSED +PREFOCUSSES +PREFOCUSSING +PREFORM +PREFORMAT +PREFORMATION +PREFORMATIONIST +PREFORMATIONS +PREFORMATS +PREFORMATTED +PREFORMATTING +PREFORMED +PREFORMING +PREFORMS +PREFORMULATE +PREFORMULATED +PREFORMULATES +PREFORMULATING +PREFRANK +PREFRANKED +PREFRANKING +PREFRANKS +PREFREEZE +PREFREEZES +PREFREEZING +PREFRESHMAN +PREFRONTAL +PREFRONTALS +PREFROZE +PREFROZEN +PREFUND +PREFUNDED +PREFUNDING +PREFUNDS +PREGAME +PREGAMES +PREGANGLIONIC +PREGENITAL +PREGGERS +PREGNABILITIES +PREGNABILITY +PREGNABLE +PREGNANCIES +PREGNANCY +PREGNANT +PREGNANTLY +PREGNENOLONE +PREGNENOLONES +PREGROWTH +PREGROWTHS +PREGUIDE +PREGUIDED +PREGUIDES +PREGUIDING +PREHANDLE +PREHANDLED +PREHANDLES +PREHANDLING +PREHARDEN +PREHARDENED +PREHARDENING +PREHARDENS +PREHARVEST +PREHEADACHE +PREHEAT +PREHEATED +PREHEATER +PREHEATERS +PREHEATING +PREHEATS +PREHENSILE +PREHENSILITIES +PREHENSILITY +PREHENSION +PREHENSIONS +PREHIRING +PREHISTORIAN +PREHISTORIANS +PREHISTORIC +PREHISTORICAL +PREHISTORICALLY +PREHISTORIES +PREHISTORY +PREHOLIDAY +PREHOMINID +PREHOMINIDS +PREHUMAN +PREHUMANS +PREIGNITION +PREIGNITIONS +PREIMPLANTATION +PREIMPOSE +PREIMPOSED +PREIMPOSES +PREIMPOSING +PREINAUGURAL +PREINDUCTION +PREINDUSTRIAL +PREINFORM +PREINFORMED +PREINFORMING +PREINFORMS +PREINSERT +PREINSERTED +PREINSERTING +PREINSERTS +PREINTERVIEW +PREINTERVIEWED +PREINTERVIEWING +PREINTERVIEWS +PREINVASION +PREINVITE +PREINVITED +PREINVITES +PREINVITING +PREJUDGE +PREJUDGED +PREJUDGER +PREJUDGERS +PREJUDGES +PREJUDGING +PREJUDGMENT +PREJUDGMENTS +PREJUDICE +PREJUDICED +PREJUDICES +PREJUDICIAL +PREJUDICIALLY +PREJUDICIALNESS +PREJUDICING +PREKINDERGARTEN +PRELACIES +PRELACY +PRELAPSARIAN +PRELATE +PRELATES +PRELATIC +PRELATISM +PRELATISMS +PRELATURE +PRELATURES +PRELAUNCH +PRELAUNCHED +PRELAUNCHES +PRELAUNCHING +PRELAW +PRELECT +PRELECTED +PRELECTING +PRELECTION +PRELECTIONS +PRELECTOR +PRELECTORS +PRELECTS +PRELEGAL +PRELIBATION +PRELIBATIONS +PRELIFE +PRELIM +PRELIMINARIES +PRELIMINARILY +PRELIMINARY +PRELIMIT +PRELIMITED +PRELIMITING +PRELIMITS +PRELIMS +PRELITERARY +PRELITERATE +PRELITERATES +PRELIVES +PRELOAD +PRELOADED +PRELOADING +PRELOADS +PRELOCATE +PRELOCATED +PRELOCATES +PRELOCATING +PRELOGICAL +PRELUDE +PRELUDED +PRELUDER +PRELUDERS +PRELUDES +PRELUDIAL +PRELUDING +PRELUNCH +PRELUNCHEON +PRELUSION +PRELUSIONS +PRELUSIVE +PRELUSIVELY +PRELUSORY +PREMADE +PREMALIGNANT +PREMAN +PREMANUFACTURE +PREMANUFACTURED +PREMANUFACTURES +PREMARITAL +PREMARITALLY +PREMARKET +PREMARKETED +PREMARKETING +PREMARKETS +PREMARRIAGE +PREMATURE +PREMATURELY +PREMATURENESS +PREMATURENESSES +PREMATURES +PREMATURITIES +PREMATURITY +PREMAXILLA +PREMAXILLAE +PREMAXILLARIES +PREMAXILLARY +PREMAXILLAS +PREMEAL +PREMEASURE +PREMEASURED +PREMEASURES +PREMEASURING +PREMED +PREMEDIC +PREMEDICAL +PREMEDICS +PREMEDIEVAL +PREMEDITATE +PREMEDITATED +PREMEDITATEDLY +PREMEDITATES +PREMEDITATING +PREMEDITATION +PREMEDITATIONS +PREMEDITATIVE +PREMEDITATOR +PREMEDITATORS +PREMEDS +PREMEET +PREMEIOTIC +PREMEN +PREMENOPAUSAL +PREMENSTRUAL +PREMENSTRUALLY +PREMERGER +PREMIE +PREMIER +PREMIERE +PREMIERED +PREMIERES +PREMIERING +PREMIERS +PREMIERSHIP +PREMIERSHIPS +PREMIES +PREMIGRATION +PREMILLENARIAN +PREMILLENARIANS +PREMILLENNIAL +PREMILLENNIALLY +PREMISE +PREMISED +PREMISES +PREMISING +PREMISS +PREMISSES +PREMIUM +PREMIUMS +PREMIX +PREMIXED +PREMIXES +PREMIXING +PREMIXT +PREMODERN +PREMODIFICATION +PREMODIFIED +PREMODIFIES +PREMODIFY +PREMODIFYING +PREMOISTEN +PREMOISTENED +PREMOISTENING +PREMOISTENS +PREMOLAR +PREMOLARS +PREMOLD +PREMOLDED +PREMOLDING +PREMOLDS +PREMOLT +PREMONISH +PREMONISHED +PREMONISHES +PREMONISHING +PREMONITION +PREMONITIONS +PREMONITORILY +PREMONITORY +PREMORAL +PREMORSE +PREMUNE +PREMUNITION +PREMUNITIONS +PREMYCOTIC +PRENAME +PRENAMES +PRENATAL +PRENATALLY +PRENOMEN +PRENOMENS +PRENOMINA +PRENOMINATE +PRENOMINATED +PRENOMINATES +PRENOMINATING +PRENOMINATION +PRENOMINATIONS +PRENOON +PRENOTIFICATION +PRENOTIFIED +PRENOTIFIES +PRENOTIFY +PRENOTIFYING +PRENOTION +PRENOTIONS +PRENTICE +PRENTICED +PRENTICES +PRENTICING +PRENUMBER +PRENUMBERED +PRENUMBERING +PRENUMBERS +PRENUPTIAL +PREOBTAIN +PREOBTAINED +PREOBTAINING +PREOBTAINS +PREOCCUPANCIES +PREOCCUPANCY +PREOCCUPATION +PREOCCUPATIONS +PREOCCUPIED +PREOCCUPIES +PREOCCUPY +PREOCCUPYING +PREOP +PREOPENING +PREOPERATIONAL +PREOPERATIVE +PREOPERATIVELY +PREOPS +PREOPTION +PREOPTIONS +PREORAL +PREORDAIN +PREORDAINED +PREORDAINING +PREORDAINMENT +PREORDAINMENTS +PREORDAINS +PREORDER +PREORDERED +PREORDERING +PREORDERS +PREORDINATION +PREORDINATIONS +PREOVULATORY +PREOWNED +PREP +PREPACK +PREPACKAGE +PREPACKAGED +PREPACKAGES +PREPACKAGING +PREPACKED +PREPACKING +PREPACKS +PREPAID +PREPARATION +PREPARATIONS +PREPARATIVE +PREPARATIVELY +PREPARATIVES +PREPARATOR +PREPARATORILY +PREPARATORS +PREPARATORY +PREPARE +PREPARED +PREPAREDLY +PREPAREDNESS +PREPAREDNESSES +PREPARER +PREPARERS +PREPARES +PREPARING +PREPASTE +PREPASTED +PREPASTES +PREPASTING +PREPAVE +PREPAVED +PREPAVES +PREPAVING +PREPAY +PREPAYING +PREPAYMENT +PREPAYMENTS +PREPAYS +PREPENSE +PREPENSELY +PREPERFORMANCE +PREPILL +PREPLACE +PREPLACED +PREPLACES +PREPLACING +PREPLAN +PREPLANNED +PREPLANNING +PREPLANS +PREPLANT +PREPLANTING +PREPONDERANCE +PREPONDERANCES +PREPONDERANCIES +PREPONDERANCY +PREPONDERANT +PREPONDERANTLY +PREPONDERATE +PREPONDERATED +PREPONDERATELY +PREPONDERATES +PREPONDERATING +PREPONDERATION +PREPONDERATIONS +PREPORTION +PREPORTIONED +PREPORTIONING +PREPORTIONS +PREPOSITION +PREPOSITIONAL +PREPOSITIONALLY +PREPOSITIONS +PREPOSITIVE +PREPOSITIVELY +PREPOSSESS +PREPOSSESSED +PREPOSSESSES +PREPOSSESSING +PREPOSSESSION +PREPOSSESSIONS +PREPOSTEROUS +PREPOSTEROUSLY +PREPOTENCIES +PREPOTENCY +PREPOTENT +PREPOTENTLY +PREPPED +PREPPIE +PREPPIER +PREPPIES +PREPPIEST +PREPPILY +PREPPINESS +PREPPINESSES +PREPPING +PREPPY +PREPRANDIAL +PREPREG +PREPREGS +PREPREPARED +PREPRESIDENTIAL +PREPRESS +PREPRICE +PREPRICED +PREPRICES +PREPRICING +PREPRIMARIES +PREPRIMARY +PREPRINT +PREPRINTED +PREPRINTING +PREPRINTS +PREPROCESS +PREPROCESSED +PREPROCESSES +PREPROCESSING +PREPROCESSOR +PREPROCESSORS +PREPRODUCTION +PREPRODUCTIONS +PREPROFESSIONAL +PREPROGRAM +PREPROGRAMED +PREPROGRAMING +PREPROGRAMMED +PREPROGRAMMING +PREPROGRAMS +PREPS +PREPSYCHEDELIC +PREPUBERAL +PREPUBERTAL +PREPUBERTIES +PREPUBERTY +PREPUBES +PREPUBESCENCE +PREPUBESCENCES +PREPUBESCENT +PREPUBESCENTS +PREPUBIS +PREPUBLICATION +PREPUBLICATIONS +PREPUCE +PREPUCES +PREPUEBLO +PREPUNCH +PREPUNCHED +PREPUNCHES +PREPUNCHING +PREPUPA +PREPUPAE +PREPUPAL +PREPUPAS +PREPURCHASE +PREPURCHASED +PREPURCHASES +PREPURCHASING +PREPUTIAL +PREQUALIFIED +PREQUALIFIES +PREQUALIFY +PREQUALIFYING +PREQUEL +PREQUELS +PRERACE +PRERADIO +PRERECESSION +PRERECORD +PRERECORDED +PRERECORDING +PRERECORDS +PRERECTAL +PREREFORM +PREREGISTER +PREREGISTERED +PREREGISTERING +PREREGISTERS +PREREGISTRATION +PREREHEARSAL +PRERELEASE +PRERELEASED +PRERELEASES +PRERELEASING +PRERENAL +PREREQUIRE +PREREQUIRED +PREREQUIRES +PREREQUIRING +PREREQUISITE +PREREQUISITES +PRERETIREMENT +PRERETURN +PREREVIEW +PREREVISIONIST +PREREVOLUTION +PRERINSE +PRERINSED +PRERINSES +PRERINSING +PRERIOT +PREROCK +PREROGATIVE +PREROGATIVED +PREROGATIVES +PREROMANTIC +PRESA +PRESAGE +PRESAGED +PRESAGEFUL +PRESAGER +PRESAGERS +PRESAGES +PRESAGING +PRESALE +PRESALES +PRESANCTIFIED +PRESBYOPE +PRESBYOPES +PRESBYOPIA +PRESBYOPIAS +PRESBYOPIC +PRESBYOPICS +PRESBYTER +PRESBYTERATE +PRESBYTERATES +PRESBYTERIAL +PRESBYTERIALLY +PRESBYTERIALS +PRESBYTERIAN +PRESBYTERIES +PRESBYTERS +PRESBYTERY +PRESCHEDULE +PRESCHEDULED +PRESCHEDULES +PRESCHEDULING +PRESCHOOL +PRESCHOOLER +PRESCHOOLERS +PRESCHOOLS +PRESCIENCE +PRESCIENCES +PRESCIENT +PRESCIENTIFIC +PRESCIENTLY +PRESCIND +PRESCINDED +PRESCINDING +PRESCINDS +PRESCORE +PRESCORED +PRESCORES +PRESCORING +PRESCREEN +PRESCREENED +PRESCREENING +PRESCREENS +PRESCRIBE +PRESCRIBED +PRESCRIBER +PRESCRIBERS +PRESCRIBES +PRESCRIBING +PRESCRIPT +PRESCRIPTION +PRESCRIPTIONS +PRESCRIPTIVE +PRESCRIPTIVELY +PRESCRIPTS +PRESE +PRESEASON +PRESEASONS +PRESELECT +PRESELECTED +PRESELECTING +PRESELECTION +PRESELECTIONS +PRESELECTS +PRESELL +PRESELLING +PRESELLS +PRESENCE +PRESENCES +PRESENT +PRESENTABILITY +PRESENTABLE +PRESENTABLENESS +PRESENTABLY +PRESENTATION +PRESENTATIONAL +PRESENTATIONS +PRESENTATIVE +PRESENTED +PRESENTEE +PRESENTEES +PRESENTENCE +PRESENTENCED +PRESENTENCES +PRESENTENCING +PRESENTER +PRESENTERS +PRESENTIENT +PRESENTIMENT +PRESENTIMENTAL +PRESENTIMENTS +PRESENTING +PRESENTISM +PRESENTISMS +PRESENTIST +PRESENTLY +PRESENTMENT +PRESENTMENTS +PRESENTNESS +PRESENTNESSES +PRESENTS +PRESERVABILITY +PRESERVABLE +PRESERVATION +PRESERVATIONIST +PRESERVATIONS +PRESERVATIVE +PRESERVATIVES +PRESERVE +PRESERVED +PRESERVER +PRESERVERS +PRESERVES +PRESERVICE +PRESERVING +PRESET +PRESETS +PRESETTING +PRESETTLE +PRESETTLED +PRESETTLEMENT +PRESETTLES +PRESETTLING +PRESHAPE +PRESHAPED +PRESHAPES +PRESHAPING +PRESHIP +PRESHIPPED +PRESHIPPING +PRESHIPS +PRESHOW +PRESHOWED +PRESHOWING +PRESHOWN +PRESHOWS +PRESHRANK +PRESHRINK +PRESHRINKING +PRESHRINKS +PRESHRUNK +PRESHRUNKEN +PRESIDE +PRESIDED +PRESIDENCIES +PRESIDENCY +PRESIDENT +PRESIDENTIAL +PRESIDENTIALLY +PRESIDENTS +PRESIDENTSHIP +PRESIDENTSHIPS +PRESIDER +PRESIDERS +PRESIDES +PRESIDIA +PRESIDIAL +PRESIDIARY +PRESIDING +PRESIDIO +PRESIDIOS +PRESIDIUM +PRESIDIUMS +PRESIFT +PRESIFTED +PRESIFTING +PRESIFTS +PRESIGNAL +PRESIGNALED +PRESIGNALING +PRESIGNALLED +PRESIGNALLING +PRESIGNALS +PRESIGNIFIED +PRESIGNIFIES +PRESIGNIFY +PRESIGNIFYING +PRESLAUGHTER +PRESLEEP +PRESLICE +PRESLICED +PRESLICES +PRESLICING +PRESOAK +PRESOAKED +PRESOAKING +PRESOAKS +PRESOLD +PRESOLVE +PRESOLVED +PRESOLVES +PRESOLVING +PRESONG +PRESORT +PRESORTED +PRESORTING +PRESORTS +PRESPECIFIED +PRESPECIFIES +PRESPECIFY +PRESPECIFYING +PRESPLIT +PRESS +PRESSBOARD +PRESSBOARDS +PRESSED +PRESSER +PRESSERS +PRESSES +PRESSGANG +PRESSGANGS +PRESSING +PRESSINGLY +PRESSINGS +PRESSMAN +PRESSMARK +PRESSMARKS +PRESSMEN +PRESSOR +PRESSORS +PRESSROOM +PRESSROOMS +PRESSRUN +PRESSRUNS +PRESSURE +PRESSURED +PRESSURELESS +PRESSURES +PRESSURING +PRESSURISE +PRESSURISED +PRESSURISES +PRESSURISING +PRESSURIZATION +PRESSURIZATIONS +PRESSURIZE +PRESSURIZED +PRESSURIZER +PRESSURIZERS +PRESSURIZES +PRESSURIZING +PRESSWORK +PRESSWORKS +PREST +PRESTAMP +PRESTAMPED +PRESTAMPING +PRESTAMPS +PRESTER +PRESTERILIZE +PRESTERILIZED +PRESTERILIZES +PRESTERILIZING +PRESTERNA +PRESTERNUM +PRESTERS +PRESTIDIGITATOR +PRESTIGE +PRESTIGEFUL +PRESTIGES +PRESTIGIOUS +PRESTIGIOUSLY +PRESTIGIOUSNESS +PRESTISSIMO +PRESTO +PRESTORAGE +PRESTORE +PRESTORED +PRESTORES +PRESTORING +PRESTOS +PRESTRESS +PRESTRESSED +PRESTRESSES +PRESTRESSING +PRESTRIKE +PRESTRUCTURE +PRESTRUCTURED +PRESTRUCTURES +PRESTRUCTURING +PRESTS +PRESUMABLE +PRESUMABLY +PRESUME +PRESUMED +PRESUMEDLY +PRESUMER +PRESUMERS +PRESUMES +PRESUMING +PRESUMINGLY +PRESUMMIT +PRESUMMITS +PRESUMPTION +PRESUMPTIONS +PRESUMPTIVE +PRESUMPTIVELY +PRESUMPTUOUS +PRESUMPTUOUSLY +PRESUPPOSE +PRESUPPOSED +PRESUPPOSES +PRESUPPOSING +PRESUPPOSITION +PRESUPPOSITIONS +PRESURGERY +PRESURVEY +PRESURVEYED +PRESURVEYING +PRESURVEYS +PRESWEETEN +PRESWEETENED +PRESWEETENING +PRESWEETENS +PRESYMPTOMATIC +PRESYNAPTIC +PRESYNAPTICALLY +PRETAPE +PRETAPED +PRETAPES +PRETAPING +PRETASTE +PRETASTED +PRETASTES +PRETASTING +PRETAX +PRETEEN +PRETEENS +PRETELEVISION +PRETELL +PRETELLING +PRETELLS +PRETENCE +PRETENCES +PRETEND +PRETENDED +PRETENDEDLY +PRETENDER +PRETENDERS +PRETENDING +PRETENDS +PRETENSE +PRETENSES +PRETENSION +PRETENSIONED +PRETENSIONING +PRETENSIONLESS +PRETENSIONS +PRETENTIOUS +PRETENTIOUSLY +PRETENTIOUSNESS +PRETERIT +PRETERITE +PRETERITES +PRETERITS +PRETERM +PRETERMINAL +PRETERMINATION +PRETERMINATIONS +PRETERMISSION +PRETERMISSIONS +PRETERMIT +PRETERMITS +PRETERMITTED +PRETERMITTING +PRETERMS +PRETERNATURAL +PRETERNATURALLY +PRETEST +PRETESTED +PRETESTING +PRETESTS +PRETEXT +PRETEXTED +PRETEXTING +PRETEXTS +PRETHEATER +PRETOLD +PRETOR +PRETORIAL +PRETORIAN +PRETORIANS +PRETORS +PRETOURNAMENT +PRETRAIN +PRETRAINED +PRETRAINING +PRETRAINS +PRETRAVEL +PRETREAT +PRETREATED +PRETREATING +PRETREATMENT +PRETREATMENTS +PRETREATS +PRETRIAL +PRETRIALS +PRETRIM +PRETRIMMED +PRETRIMMING +PRETRIMS +PRETTIED +PRETTIER +PRETTIES +PRETTIEST +PRETTIFICATION +PRETTIFICATIONS +PRETTIFIED +PRETTIFIER +PRETTIFIERS +PRETTIFIES +PRETTIFY +PRETTIFYING +PRETTILY +PRETTINESS +PRETTINESSES +PRETTY +PRETTYING +PRETTYISH +PRETYPE +PRETYPED +PRETYPES +PRETYPING +PRETZEL +PRETZELS +PREUNIFICATION +PREUNION +PREUNIONS +PREUNITE +PREUNITED +PREUNITES +PREUNITING +PREUNIVERSITY +PREVAIL +PREVAILED +PREVAILER +PREVAILERS +PREVAILING +PREVAILS +PREVALENCE +PREVALENCES +PREVALENT +PREVALENTLY +PREVALENTS +PREVALUE +PREVALUED +PREVALUES +PREVALUING +PREVARICATE +PREVARICATED +PREVARICATES +PREVARICATING +PREVARICATION +PREVARICATIONS +PREVARICATOR +PREVARICATORS +PREVENIENT +PREVENIENTLY +PREVENT +PREVENTABILITY +PREVENTABLE +PREVENTATIVE +PREVENTATIVES +PREVENTED +PREVENTER +PREVENTERS +PREVENTIBLE +PREVENTING +PREVENTION +PREVENTIONS +PREVENTIVE +PREVENTIVELY +PREVENTIVENESS +PREVENTIVES +PREVENTS +PREVERB +PREVERBAL +PREVERBS +PREVIABLE +PREVIEW +PREVIEWED +PREVIEWER +PREVIEWERS +PREVIEWING +PREVIEWS +PREVIOUS +PREVIOUSLY +PREVIOUSNESS +PREVIOUSNESSES +PREVISE +PREVISED +PREVISES +PREVISING +PREVISION +PREVISIONAL +PREVISIONARY +PREVISIONED +PREVISIONING +PREVISIONS +PREVISIT +PREVISITED +PREVISITING +PREVISITS +PREVISOR +PREVISORS +PREVOCALIC +PREVOCATIONAL +PREVUE +PREVUED +PREVUES +PREVUING +PREWAR +PREWARM +PREWARMED +PREWARMING +PREWARMS +PREWARN +PREWARNED +PREWARNING +PREWARNS +PREWASH +PREWASHED +PREWASHES +PREWASHING +PREWEANING +PREWEIGH +PREWEIGHED +PREWEIGHING +PREWEIGHS +PREWIRE +PREWIRED +PREWIRES +PREWIRING +PREWORK +PREWORKED +PREWORKING +PREWORKS +PREWORN +PREWRAP +PREWRAPPED +PREWRAPPING +PREWRAPS +PREWRITING +PREWRITINGS +PREX +PREXES +PREXIES +PREXY +PREY +PREYED +PREYER +PREYERS +PREYING +PREYS +PREZ +PREZES +PRIAPEAN +PRIAPI +PRIAPIC +PRIAPISM +PRIAPISMS +PRIAPUS +PRIAPUSES +PRICE +PRICEABLE +PRICED +PRICELESS +PRICELESSLY +PRICER +PRICERS +PRICES +PRICEY +PRICIER +PRICIEST +PRICILY +PRICING +PRICK +PRICKED +PRICKER +PRICKERS +PRICKET +PRICKETS +PRICKIER +PRICKIEST +PRICKING +PRICKINGS +PRICKLE +PRICKLED +PRICKLES +PRICKLIER +PRICKLIEST +PRICKLINESS +PRICKLINESSES +PRICKLING +PRICKLY +PRICKS +PRICKY +PRICY +PRIDE +PRIDED +PRIDEFUL +PRIDEFULLY +PRIDEFULNESS +PRIDEFULNESSES +PRIDES +PRIDING +PRIED +PRIEDIEU +PRIEDIEUS +PRIEDIEUX +PRIER +PRIERS +PRIES +PRIEST +PRIESTED +PRIESTESS +PRIESTESSES +PRIESTHOOD +PRIESTHOODS +PRIESTING +PRIESTLIER +PRIESTLIEST +PRIESTLINESS +PRIESTLINESSES +PRIESTLY +PRIESTS +PRIG +PRIGGED +PRIGGERIES +PRIGGERY +PRIGGING +PRIGGISH +PRIGGISHLY +PRIGGISHNESS +PRIGGISHNESSES +PRIGGISM +PRIGGISMS +PRIGS +PRILL +PRILLED +PRILLING +PRILLS +PRIM +PRIMA +PRIMACIES +PRIMACY +PRIMAGE +PRIMAGES +PRIMAL +PRIMALITIES +PRIMALITY +PRIMARIES +PRIMARILY +PRIMARY +PRIMAS +PRIMATAL +PRIMATALS +PRIMATE +PRIMATES +PRIMATESHIP +PRIMATESHIPS +PRIMATIAL +PRIMATIALS +PRIMATOLOGICAL +PRIMATOLOGIES +PRIMATOLOGIST +PRIMATOLOGISTS +PRIMATOLOGY +PRIMAVERA +PRIMAVERAS +PRIME +PRIMED +PRIMELY +PRIMENESS +PRIMENESSES +PRIMER +PRIMERO +PRIMEROS +PRIMERS +PRIMES +PRIMEVAL +PRIMEVALLY +PRIMI +PRIMINE +PRIMINES +PRIMING +PRIMINGS +PRIMIPARA +PRIMIPARAE +PRIMIPARAS +PRIMIPAROUS +PRIMITIVE +PRIMITIVELY +PRIMITIVENESS +PRIMITIVENESSES +PRIMITIVES +PRIMITIVISM +PRIMITIVISMS +PRIMITIVIST +PRIMITIVISTIC +PRIMITIVISTS +PRIMITIVITIES +PRIMITIVITY +PRIMLY +PRIMMED +PRIMMER +PRIMMEST +PRIMMING +PRIMNESS +PRIMNESSES +PRIMO +PRIMOGENITOR +PRIMOGENITORS +PRIMOGENITURE +PRIMOGENITURES +PRIMORDIA +PRIMORDIAL +PRIMORDIALLY +PRIMORDIUM +PRIMOS +PRIMP +PRIMPED +PRIMPING +PRIMPS +PRIMROSE +PRIMROSES +PRIMS +PRIMSIE +PRIMULA +PRIMULAS +PRIMUS +PRIMUSES +PRINCE +PRINCEDOM +PRINCEDOMS +PRINCEKIN +PRINCEKINS +PRINCELET +PRINCELETS +PRINCELIER +PRINCELIEST +PRINCELINESS +PRINCELINESSES +PRINCELING +PRINCELINGS +PRINCELY +PRINCES +PRINCESHIP +PRINCESHIPS +PRINCESS +PRINCESSE +PRINCESSES +PRINCIPAL +PRINCIPALITIES +PRINCIPALITY +PRINCIPALLY +PRINCIPALS +PRINCIPALSHIP +PRINCIPALSHIPS +PRINCIPE +PRINCIPI +PRINCIPIA +PRINCIPIUM +PRINCIPLE +PRINCIPLED +PRINCIPLES +PRINCOCK +PRINCOCKS +PRINCOX +PRINCOXES +PRINK +PRINKED +PRINKER +PRINKERS +PRINKING +PRINKS +PRINT +PRINTABILITIES +PRINTABILITY +PRINTABLE +PRINTED +PRINTER +PRINTERIES +PRINTERS +PRINTERY +PRINTHEAD +PRINTHEADS +PRINTING +PRINTINGS +PRINTLESS +PRINTMAKER +PRINTMAKERS +PRINTMAKING +PRINTMAKINGS +PRINTOUT +PRINTOUTS +PRINTS +PRION +PRIONS +PRIOR +PRIORATE +PRIORATES +PRIORESS +PRIORESSES +PRIORIES +PRIORITIES +PRIORITIZATION +PRIORITIZATIONS +PRIORITIZE +PRIORITIZED +PRIORITIZES +PRIORITIZING +PRIORITY +PRIORLY +PRIORS +PRIORSHIP +PRIORSHIPS +PRIORY +PRISE +PRISED +PRISERE +PRISERES +PRISES +PRISING +PRISM +PRISMATIC +PRISMATICALLY +PRISMATOID +PRISMATOIDS +PRISMOID +PRISMOIDAL +PRISMOIDS +PRISMS +PRISON +PRISONED +PRISONER +PRISONERS +PRISONING +PRISONS +PRISS +PRISSED +PRISSES +PRISSIER +PRISSIES +PRISSIEST +PRISSILY +PRISSINESS +PRISSINESSES +PRISSING +PRISSY +PRISTANE +PRISTANES +PRISTINE +PRISTINELY +PRITHEE +PRIVACIES +PRIVACY +PRIVATDOCENT +PRIVATDOCENTS +PRIVATDOZENT +PRIVATDOZENTS +PRIVATE +PRIVATEER +PRIVATEERED +PRIVATEERING +PRIVATEERS +PRIVATELY +PRIVATENESS +PRIVATENESSES +PRIVATER +PRIVATES +PRIVATEST +PRIVATION +PRIVATIONS +PRIVATISE +PRIVATISED +PRIVATISES +PRIVATISING +PRIVATISM +PRIVATISMS +PRIVATIST +PRIVATISTS +PRIVATIVE +PRIVATIVELY +PRIVATIVES +PRIVATIZATION +PRIVATIZATIONS +PRIVATIZE +PRIVATIZED +PRIVATIZES +PRIVATIZING +PRIVET +PRIVETS +PRIVIER +PRIVIES +PRIVIEST +PRIVILEGE +PRIVILEGED +PRIVILEGES +PRIVILEGING +PRIVILY +PRIVITIES +PRIVITY +PRIVY +PRIZE +PRIZED +PRIZEFIGHT +PRIZEFIGHTER +PRIZEFIGHTERS +PRIZEFIGHTING +PRIZEFIGHTINGS +PRIZEFIGHTS +PRIZER +PRIZERS +PRIZES +PRIZEWINNER +PRIZEWINNERS +PRIZEWINNING +PRIZING +PRO +PROA +PROABORTION +PROACTION +PROACTIONS +PROACTIVE +PROAS +PROBABILISM +PROBABILISMS +PROBABILIST +PROBABILISTIC +PROBABILISTS +PROBABILITIES +PROBABILITY +PROBABLE +PROBABLES +PROBABLY +PROBAND +PROBANDS +PROBANG +PROBANGS +PROBATE +PROBATED +PROBATES +PROBATING +PROBATION +PROBATIONAL +PROBATIONALLY +PROBATIONARY +PROBATIONER +PROBATIONERS +PROBATIONS +PROBATIVE +PROBATORY +PROBE +PROBED +PROBENECID +PROBENECIDS +PROBER +PROBERS +PROBES +PROBING +PROBINGLY +PROBIOTIC +PROBIOTICS +PROBIT +PROBITIES +PROBITS +PROBITY +PROBLEM +PROBLEMATIC +PROBLEMATICAL +PROBLEMATICALLY +PROBLEMATICS +PROBLEMS +PROBOSCIDEAN +PROBOSCIDEANS +PROBOSCIDES +PROBOSCIDIAN +PROBOSCIDIANS +PROBOSCIS +PROBOSCISES +PROCAINE +PROCAINES +PROCAMBIA +PROCAMBIAL +PROCAMBIUM +PROCAMBIUMS +PROCARBAZINE +PROCARBAZINES +PROCARP +PROCARPS +PROCARYOTE +PROCARYOTES +PROCATHEDRAL +PROCATHEDRALS +PROCEDURAL +PROCEDURALLY +PROCEDURALS +PROCEDURE +PROCEDURES +PROCEED +PROCEEDED +PROCEEDER +PROCEEDERS +PROCEEDING +PROCEEDINGS +PROCEEDS +PROCEPHALIC +PROCERCOID +PROCERCOIDS +PROCESS +PROCESSABILITY +PROCESSABLE +PROCESSED +PROCESSER +PROCESSERS +PROCESSES +PROCESSIBILITY +PROCESSIBLE +PROCESSING +PROCESSION +PROCESSIONAL +PROCESSIONALLY +PROCESSIONALS +PROCESSIONED +PROCESSIONING +PROCESSIONS +PROCESSOR +PROCESSORS +PROCHAIN +PROCHEIN +PROCHOICE +PROCHURCH +PROCLAIM +PROCLAIMED +PROCLAIMER +PROCLAIMERS +PROCLAIMING +PROCLAIMS +PROCLAMATION +PROCLAMATIONS +PROCLISES +PROCLISIS +PROCLITIC +PROCLITICS +PROCLIVITIES +PROCLIVITY +PROCONSUL +PROCONSULAR +PROCONSULATE +PROCONSULATES +PROCONSULS +PROCONSULSHIP +PROCONSULSHIPS +PROCRASTINATE +PROCRASTINATED +PROCRASTINATES +PROCRASTINATING +PROCRASTINATION +PROCRASTINATOR +PROCRASTINATORS +PROCREANT +PROCREATE +PROCREATED +PROCREATES +PROCREATING +PROCREATION +PROCREATIONS +PROCREATIVE +PROCREATOR +PROCREATORS +PROCRUSTEAN +PROCRYPTIC +PROCTITIDES +PROCTITIS +PROCTITISES +PROCTODAEA +PROCTODAEUM +PROCTODAEUMS +PROCTODEA +PROCTODEUM +PROCTODEUMS +PROCTOLOGIC +PROCTOLOGICAL +PROCTOLOGIES +PROCTOLOGIST +PROCTOLOGISTS +PROCTOLOGY +PROCTOR +PROCTORED +PROCTORIAL +PROCTORING +PROCTORS +PROCTORSHIP +PROCTORSHIPS +PROCUMBENT +PROCURABLE +PROCURAL +PROCURALS +PROCURATION +PROCURATIONS +PROCURATOR +PROCURATORIAL +PROCURATORS +PROCURE +PROCURED +PROCUREMENT +PROCUREMENTS +PROCURER +PROCURERS +PROCURES +PROCURESS +PROCURESSES +PROCURING +PROD +PRODDED +PRODDER +PRODDERS +PRODDING +PRODIGAL +PRODIGALITIES +PRODIGALITY +PRODIGALLY +PRODIGALS +PRODIGIES +PRODIGIOUS +PRODIGIOUSLY +PRODIGIOUSNESS +PRODIGY +PRODROMAL +PRODROMATA +PRODROME +PRODROMES +PRODROMIC +PRODRUG +PRODRUGS +PRODS +PRODUCE +PRODUCED +PRODUCER +PRODUCERS +PRODUCES +PRODUCIBLE +PRODUCING +PRODUCT +PRODUCTION +PRODUCTIONAL +PRODUCTIONS +PRODUCTIVE +PRODUCTIVELY +PRODUCTIVENESS +PRODUCTIVITIES +PRODUCTIVITY +PRODUCTS +PROEM +PROEMIAL +PROEMS +PROENZYME +PROENZYMES +PROESTRUS +PROESTRUSES +PROETTE +PROETTES +PROF +PROFAMILY +PROFANATION +PROFANATIONS +PROFANATORY +PROFANE +PROFANED +PROFANELY +PROFANENESS +PROFANENESSES +PROFANER +PROFANERS +PROFANES +PROFANING +PROFANITIES +PROFANITY +PROFESS +PROFESSED +PROFESSEDLY +PROFESSES +PROFESSING +PROFESSION +PROFESSIONAL +PROFESSIONALISM +PROFESSIONALIZE +PROFESSIONALLY +PROFESSIONALS +PROFESSIONS +PROFESSOR +PROFESSORATE +PROFESSORATES +PROFESSORIAL +PROFESSORIALLY +PROFESSORIAT +PROFESSORIATE +PROFESSORIATES +PROFESSORIATS +PROFESSORS +PROFESSORSHIP +PROFESSORSHIPS +PROFFER +PROFFERED +PROFFERER +PROFFERERS +PROFFERING +PROFFERS +PROFICIENCIES +PROFICIENCY +PROFICIENT +PROFICIENTLY +PROFICIENTS +PROFILE +PROFILED +PROFILER +PROFILERS +PROFILES +PROFILING +PROFILINGS +PROFIT +PROFITABILITIES +PROFITABILITY +PROFITABLE +PROFITABLENESS +PROFITABLY +PROFITED +PROFITEER +PROFITEERED +PROFITEERING +PROFITEERS +PROFITER +PROFITEROLE +PROFITEROLES +PROFITERS +PROFITING +PROFITLESS +PROFITS +PROFITWISE +PROFLIGACIES +PROFLIGACY +PROFLIGATE +PROFLIGATELY +PROFLIGATES +PROFLUENT +PROFORMA +PROFOUND +PROFOUNDER +PROFOUNDEST +PROFOUNDLY +PROFOUNDNESS +PROFOUNDNESSES +PROFOUNDS +PROFS +PROFUNDITIES +PROFUNDITY +PROFUSE +PROFUSELY +PROFUSENESS +PROFUSENESSES +PROFUSION +PROFUSIONS +PROFUSIVE +PROG +PROGENIES +PROGENITOR +PROGENITORS +PROGENY +PROGERIA +PROGERIAS +PROGESTATIONAL +PROGESTERONE +PROGESTERONES +PROGESTIN +PROGESTINS +PROGESTOGEN +PROGESTOGENIC +PROGESTOGENS +PROGGED +PROGGER +PROGGERS +PROGGING +PROGLOTTID +PROGLOTTIDES +PROGLOTTIDS +PROGLOTTIS +PROGNATHISM +PROGNATHISMS +PROGNATHOUS +PROGNOSE +PROGNOSED +PROGNOSES +PROGNOSING +PROGNOSIS +PROGNOSTIC +PROGNOSTICATE +PROGNOSTICATED +PROGNOSTICATES +PROGNOSTICATING +PROGNOSTICATION +PROGNOSTICATIVE +PROGNOSTICATOR +PROGNOSTICATORS +PROGNOSTICS +PROGRADE +PROGRAM +PROGRAMED +PROGRAMER +PROGRAMERS +PROGRAMING +PROGRAMINGS +PROGRAMMABILITY +PROGRAMMABLE +PROGRAMMABLES +PROGRAMMATIC +PROGRAMME +PROGRAMMED +PROGRAMMER +PROGRAMMERS +PROGRAMMES +PROGRAMMING +PROGRAMMINGS +PROGRAMS +PROGRESS +PROGRESSED +PROGRESSES +PROGRESSING +PROGRESSION +PROGRESSIONAL +PROGRESSIONS +PROGRESSIVE +PROGRESSIVELY +PROGRESSIVENESS +PROGRESSIVES +PROGRESSIVISM +PROGRESSIVISMS +PROGRESSIVIST +PROGRESSIVISTIC +PROGRESSIVISTS +PROGRESSIVITIES +PROGRESSIVITY +PROGS +PROGUN +PROHIBIT +PROHIBITED +PROHIBITING +PROHIBITION +PROHIBITIONIST +PROHIBITIONISTS +PROHIBITIONS +PROHIBITIVE +PROHIBITIVELY +PROHIBITIVENESS +PROHIBITORY +PROHIBITS +PROINSULIN +PROINSULINS +PROJECT +PROJECTABLE +PROJECTED +PROJECTILE +PROJECTILES +PROJECTING +PROJECTION +PROJECTIONAL +PROJECTIONIST +PROJECTIONISTS +PROJECTIONS +PROJECTIVE +PROJECTIVELY +PROJECTOR +PROJECTORS +PROJECTS +PROJET +PROJETS +PROKARYOTE +PROKARYOTES +PROKARYOTIC +PROLABOR +PROLACTIN +PROLACTINS +PROLAMIN +PROLAMINE +PROLAMINES +PROLAMINS +PROLAN +PROLANS +PROLAPSE +PROLAPSED +PROLAPSES +PROLAPSING +PROLAPSUS +PROLATE +PROLATELY +PROLE +PROLEG +PROLEGOMENA +PROLEGOMENON +PROLEGOMENOUS +PROLEGS +PROLEPSES +PROLEPSIS +PROLEPTIC +PROLEPTICALLY +PROLES +PROLETARIAN +PROLETARIANISE +PROLETARIANISED +PROLETARIANISES +PROLETARIANIZE +PROLETARIANIZED +PROLETARIANIZES +PROLETARIANS +PROLETARIAT +PROLETARIATS +PROLETARIES +PROLETARY +PROLIFERATE +PROLIFERATED +PROLIFERATES +PROLIFERATING +PROLIFERATION +PROLIFERATIONS +PROLIFERATIVE +PROLIFIC +PROLIFICACIES +PROLIFICACY +PROLIFICALLY +PROLIFICITIES +PROLIFICITY +PROLIFICNESS +PROLIFICNESSES +PROLINE +PROLINES +PROLIX +PROLIXITIES +PROLIXITY +PROLIXLY +PROLOCUTOR +PROLOCUTORS +PROLOG +PROLOGED +PROLOGING +PROLOGIST +PROLOGISTS +PROLOGIZE +PROLOGIZED +PROLOGIZES +PROLOGIZING +PROLOGS +PROLOGUE +PROLOGUED +PROLOGUES +PROLOGUING +PROLOGUIZE +PROLOGUIZED +PROLOGUIZES +PROLOGUIZING +PROLONG +PROLONGATION +PROLONGATIONS +PROLONGE +PROLONGED +PROLONGER +PROLONGERS +PROLONGES +PROLONGING +PROLONGS +PROLUSION +PROLUSIONS +PROLUSORY +PROM +PROMENADE +PROMENADED +PROMENADER +PROMENADERS +PROMENADES +PROMENADING +PROMETHIUM +PROMETHIUMS +PROMETRIC +PROMINE +PROMINENCE +PROMINENCES +PROMINENT +PROMINENTLY +PROMINES +PROMISCUITIES +PROMISCUITY +PROMISCUOUS +PROMISCUOUSLY +PROMISCUOUSNESS +PROMISE +PROMISED +PROMISEE +PROMISEES +PROMISER +PROMISERS +PROMISES +PROMISING +PROMISINGLY +PROMISOR +PROMISORS +PROMISSORY +PROMO +PROMODERN +PROMOED +PROMOING +PROMONTORIES +PROMONTORY +PROMOS +PROMOTABILITIES +PROMOTABILITY +PROMOTABLE +PROMOTE +PROMOTED +PROMOTER +PROMOTERS +PROMOTES +PROMOTING +PROMOTION +PROMOTIONAL +PROMOTIONS +PROMOTIVE +PROMOTIVENESS +PROMOTIVENESSES +PROMPT +PROMPTBOOK +PROMPTBOOKS +PROMPTED +PROMPTER +PROMPTERS +PROMPTEST +PROMPTING +PROMPTITUDE +PROMPTITUDES +PROMPTLY +PROMPTNESS +PROMPTNESSES +PROMPTS +PROMS +PROMULGATE +PROMULGATED +PROMULGATES +PROMULGATING +PROMULGATION +PROMULGATIONS +PROMULGATOR +PROMULGATORS +PROMULGE +PROMULGED +PROMULGES +PROMULGING +PRONATE +PRONATED +PRONATES +PRONATING +PRONATION +PRONATIONS +PRONATOR +PRONATORES +PRONATORS +PRONE +PRONELY +PRONENESS +PRONENESSES +PRONEPHRA +PRONEPHRIC +PRONEPHROI +PRONEPHROS +PRONEPHROSES +PRONG +PRONGED +PRONGHORN +PRONGHORNS +PRONGING +PRONGS +PRONOMINAL +PRONOMINALLY +PRONOTA +PRONOTUM +PRONOUN +PRONOUNCE +PRONOUNCEABLE +PRONOUNCED +PRONOUNCEDLY +PRONOUNCEMENT +PRONOUNCEMENTS +PRONOUNCER +PRONOUNCERS +PRONOUNCES +PRONOUNCING +PRONOUNS +PRONTO +PRONUCLEAR +PRONUCLEI +PRONUCLEUS +PRONUCLEUSES +PRONUNCIAMENTO +PRONUNCIAMENTOS +PRONUNCIATION +PRONUNCIATIONAL +PRONUNCIATIONS +PROOF +PROOFED +PROOFER +PROOFERS +PROOFING +PROOFREAD +PROOFREADER +PROOFREADERS +PROOFREADING +PROOFREADS +PROOFROOM +PROOFROOMS +PROOFS +PROP +PROPAEDEUTIC +PROPAEDEUTICS +PROPAGABLE +PROPAGANDA +PROPAGANDAS +PROPAGANDIST +PROPAGANDISTIC +PROPAGANDISTS +PROPAGANDIZE +PROPAGANDIZED +PROPAGANDIZER +PROPAGANDIZERS +PROPAGANDIZES +PROPAGANDIZING +PROPAGATE +PROPAGATED +PROPAGATES +PROPAGATING +PROPAGATION +PROPAGATIONS +PROPAGATIVE +PROPAGATOR +PROPAGATORS +PROPAGULE +PROPAGULES +PROPANE +PROPANES +PROPEL +PROPELLANT +PROPELLANTS +PROPELLED +PROPELLENT +PROPELLENTS +PROPELLER +PROPELLERS +PROPELLING +PROPELLOR +PROPELLORS +PROPELS +PROPEND +PROPENDED +PROPENDING +PROPENDS +PROPENE +PROPENES +PROPENOL +PROPENOLS +PROPENSE +PROPENSITIES +PROPENSITY +PROPENYL +PROPER +PROPERDIN +PROPERDINS +PROPERER +PROPEREST +PROPERLY +PROPERNESS +PROPERNESSES +PROPERS +PROPERTIED +PROPERTIES +PROPERTY +PROPERTYLESS +PROPHAGE +PROPHAGES +PROPHASE +PROPHASES +PROPHASIC +PROPHECIES +PROPHECY +PROPHESIED +PROPHESIER +PROPHESIERS +PROPHESIES +PROPHESY +PROPHESYING +PROPHET +PROPHETESS +PROPHETESSES +PROPHETHOOD +PROPHETHOODS +PROPHETIC +PROPHETICAL +PROPHETICALLY +PROPHETS +PROPHYLACTIC +PROPHYLACTICS +PROPHYLAXES +PROPHYLAXIS +PROPINE +PROPINED +PROPINES +PROPINING +PROPINQUITIES +PROPINQUITY +PROPIONATE +PROPIONATES +PROPITIATE +PROPITIATED +PROPITIATES +PROPITIATING +PROPITIATION +PROPITIATIONS +PROPITIATOR +PROPITIATORS +PROPITIATORY +PROPITIOUS +PROPITIOUSLY +PROPITIOUSNESS +PROPJET +PROPJETS +PROPLASTID +PROPLASTIDS +PROPMAN +PROPMEN +PROPOLIS +PROPOLISES +PROPONE +PROPONED +PROPONENT +PROPONENTS +PROPONES +PROPONING +PROPORTION +PROPORTIONABLE +PROPORTIONABLY +PROPORTIONAL +PROPORTIONALITY +PROPORTIONALLY +PROPORTIONALS +PROPORTIONATE +PROPORTIONATED +PROPORTIONATELY +PROPORTIONATES +PROPORTIONATING +PROPORTIONED +PROPORTIONING +PROPORTIONS +PROPOSAL +PROPOSALS +PROPOSE +PROPOSED +PROPOSER +PROPOSERS +PROPOSES +PROPOSING +PROPOSITI +PROPOSITION +PROPOSITIONAL +PROPOSITIONED +PROPOSITIONING +PROPOSITIONS +PROPOSITUS +PROPOUND +PROPOUNDED +PROPOUNDER +PROPOUNDERS +PROPOUNDING +PROPOUNDS +PROPOXYPHENE +PROPOXYPHENES +PROPPED +PROPPING +PROPRAETOR +PROPRAETORS +PROPRANOLOL +PROPRANOLOLS +PROPRETOR +PROPRETORS +PROPRIA +PROPRIETARIES +PROPRIETARY +PROPRIETIES +PROPRIETOR +PROPRIETORIAL +PROPRIETORS +PROPRIETORSHIP +PROPRIETORSHIPS +PROPRIETRESS +PROPRIETRESSES +PROPRIETY +PROPRIOCEPTION +PROPRIOCEPTIONS +PROPRIOCEPTIVE +PROPRIOCEPTOR +PROPRIOCEPTORS +PROPRIUM +PROPS +PROPTOSES +PROPTOSIS +PROPULSION +PROPULSIONS +PROPULSIVE +PROPYL +PROPYLA +PROPYLAEA +PROPYLAEUM +PROPYLENE +PROPYLENES +PROPYLIC +PROPYLITE +PROPYLITES +PROPYLON +PROPYLS +PRORATE +PRORATED +PRORATES +PRORATING +PRORATION +PRORATIONS +PROREFORM +PROROGATE +PROROGATED +PROROGATES +PROROGATING +PROROGATION +PROROGATIONS +PROROGUE +PROROGUED +PROROGUES +PROROGUING +PROS +PROSAIC +PROSAICAL +PROSAICALLY +PROSAISM +PROSAISMS +PROSAIST +PROSAISTS +PROSATEUR +PROSATEURS +PROSAUROPOD +PROSAUROPODS +PROSCENIA +PROSCENIUM +PROSCENIUMS +PROSCIUTTI +PROSCIUTTO +PROSCIUTTOS +PROSCRIBE +PROSCRIBED +PROSCRIBER +PROSCRIBERS +PROSCRIBES +PROSCRIBING +PROSCRIPTION +PROSCRIPTIONS +PROSCRIPTIVE +PROSCRIPTIVELY +PROSE +PROSECT +PROSECTED +PROSECTING +PROSECTOR +PROSECTORS +PROSECTS +PROSECUTABLE +PROSECUTE +PROSECUTED +PROSECUTES +PROSECUTING +PROSECUTION +PROSECUTIONS +PROSECUTOR +PROSECUTORIAL +PROSECUTORS +PROSED +PROSELYTE +PROSELYTED +PROSELYTES +PROSELYTING +PROSELYTISE +PROSELYTISED +PROSELYTISES +PROSELYTISING +PROSELYTISM +PROSELYTISMS +PROSELYTIZATION +PROSELYTIZE +PROSELYTIZED +PROSELYTIZER +PROSELYTIZERS +PROSELYTIZES +PROSELYTIZING +PROSEMINAR +PROSEMINARS +PROSENCEPHALA +PROSENCEPHALIC +PROSENCEPHALON +PROSER +PROSERS +PROSES +PROSIER +PROSIEST +PROSILY +PROSIMIAN +PROSIMIANS +PROSINESS +PROSINESSES +PROSING +PROSIT +PROSO +PROSOBRANCH +PROSOBRANCHS +PROSODIC +PROSODICAL +PROSODICALLY +PROSODIES +PROSODIST +PROSODISTS +PROSODY +PROSOMA +PROSOMAL +PROSOMAS +PROSOMATA +PROSOPOGRAPHIES +PROSOPOGRAPHY +PROSOPOPOEIA +PROSOPOPOEIAS +PROSOS +PROSPECT +PROSPECTED +PROSPECTING +PROSPECTIVE +PROSPECTIVELY +PROSPECTOR +PROSPECTORS +PROSPECTS +PROSPECTUS +PROSPECTUSES +PROSPER +PROSPERED +PROSPERING +PROSPERITIES +PROSPERITY +PROSPEROUS +PROSPEROUSLY +PROSPEROUSNESS +PROSPERS +PROSS +PROSSES +PROSSIE +PROSSIES +PROST +PROSTACYCLIN +PROSTACYCLINS +PROSTAGLANDIN +PROSTAGLANDINS +PROSTATE +PROSTATECTOMIES +PROSTATECTOMY +PROSTATES +PROSTATIC +PROSTATISM +PROSTATISMS +PROSTATITIS +PROSTATITISES +PROSTHESES +PROSTHESIS +PROSTHETIC +PROSTHETICALLY +PROSTHETICS +PROSTHETIST +PROSTHETISTS +PROSTHODONTICS +PROSTHODONTIST +PROSTHODONTISTS +PROSTIE +PROSTIES +PROSTITUTE +PROSTITUTED +PROSTITUTES +PROSTITUTING +PROSTITUTION +PROSTITUTIONS +PROSTITUTOR +PROSTITUTORS +PROSTOMIA +PROSTOMIAL +PROSTOMIUM +PROSTRATE +PROSTRATED +PROSTRATES +PROSTRATING +PROSTRATION +PROSTRATIONS +PROSTYLE +PROSTYLES +PROSY +PROTACTINIUM +PROTACTINIUMS +PROTAGONIST +PROTAGONISTS +PROTAMIN +PROTAMINE +PROTAMINES +PROTAMINS +PROTASES +PROTASIS +PROTATIC +PROTEA +PROTEAN +PROTEANS +PROTEAS +PROTEASE +PROTEASES +PROTECT +PROTECTANT +PROTECTANTS +PROTECTED +PROTECTER +PROTECTERS +PROTECTING +PROTECTION +PROTECTIONISM +PROTECTIONISMS +PROTECTIONIST +PROTECTIONISTS +PROTECTIONS +PROTECTIVE +PROTECTIVELY +PROTECTIVENESS +PROTECTOR +PROTECTORAL +PROTECTORATE +PROTECTORATES +PROTECTORIES +PROTECTORS +PROTECTORSHIP +PROTECTORSHIPS +PROTECTORY +PROTECTRESS +PROTECTRESSES +PROTECTS +PROTEGE +PROTEGEE +PROTEGEES +PROTEGES +PROTEI +PROTEID +PROTEIDE +PROTEIDES +PROTEIDS +PROTEIN +PROTEINACEOUS +PROTEINASE +PROTEINASES +PROTEINIC +PROTEINS +PROTEINURIA +PROTEINURIAS +PROTEND +PROTENDED +PROTENDING +PROTENDS +PROTENSIVE +PROTENSIVELY +PROTEOGLYCAN +PROTEOGLYCANS +PROTEOLYSES +PROTEOLYSIS +PROTEOLYTIC +PROTEOLYTICALLY +PROTEOME +PROTEOMES +PROTEOMIC +PROTEOSE +PROTEOSES +PROTEST +PROTESTANT +PROTESTANTS +PROTESTATION +PROTESTATIONS +PROTESTED +PROTESTER +PROTESTERS +PROTESTING +PROTESTOR +PROTESTORS +PROTESTS +PROTEUS +PROTEUSES +PROTHALAMIA +PROTHALAMION +PROTHALAMIUM +PROTHALLI +PROTHALLIA +PROTHALLIUM +PROTHALLUS +PROTHALLUSES +PROTHESES +PROTHESIS +PROTHETIC +PROTHONOTARIAL +PROTHONOTARIES +PROTHONOTARY +PROTHORACES +PROTHORACIC +PROTHORAX +PROTHORAXES +PROTHROMBIN +PROTHROMBINS +PROTIST +PROTISTAN +PROTISTANS +PROTISTIC +PROTISTS +PROTIUM +PROTIUMS +PROTOCOL +PROTOCOLED +PROTOCOLING +PROTOCOLLED +PROTOCOLLING +PROTOCOLS +PROTODERM +PROTODERMS +PROTOGALAXIES +PROTOGALAXY +PROTOHISTORIAN +PROTOHISTORIANS +PROTOHISTORIC +PROTOHISTORIES +PROTOHISTORY +PROTOHUMAN +PROTOHUMANS +PROTOLANGUAGE +PROTOLANGUAGES +PROTOMARTYR +PROTOMARTYRS +PROTON +PROTONATE +PROTONATED +PROTONATES +PROTONATING +PROTONATION +PROTONATIONS +PROTONEMA +PROTONEMAL +PROTONEMATA +PROTONEMATAL +PROTONIC +PROTONOTARIES +PROTONOTARY +PROTONS +PROTOPATHIC +PROTOPHLOEM +PROTOPHLOEMS +PROTOPLANET +PROTOPLANETARY +PROTOPLANETS +PROTOPLASM +PROTOPLASMIC +PROTOPLASMS +PROTOPLAST +PROTOPLASTS +PROTOPOD +PROTOPODS +PROTOPORPHYRIN +PROTOPORPHYRINS +PROTOSTAR +PROTOSTARS +PROTOSTELE +PROTOSTELES +PROTOSTELIC +PROTOSTOME +PROTOSTOMES +PROTOTROPH +PROTOTROPHIC +PROTOTROPHIES +PROTOTROPHS +PROTOTROPHY +PROTOTYPAL +PROTOTYPE +PROTOTYPED +PROTOTYPES +PROTOTYPIC +PROTOTYPICAL +PROTOTYPICALLY +PROTOTYPING +PROTOXID +PROTOXIDE +PROTOXIDES +PROTOXIDS +PROTOXYLEM +PROTOXYLEMS +PROTOZOA +PROTOZOAL +PROTOZOAN +PROTOZOANS +PROTOZOIC +PROTOZOOLOGIES +PROTOZOOLOGIST +PROTOZOOLOGISTS +PROTOZOOLOGY +PROTOZOON +PROTOZOONS +PROTRACT +PROTRACTED +PROTRACTILE +PROTRACTING +PROTRACTION +PROTRACTIONS +PROTRACTIVE +PROTRACTOR +PROTRACTORS +PROTRACTS +PROTRADE +PROTREPTIC +PROTREPTICS +PROTRUDE +PROTRUDED +PROTRUDES +PROTRUDING +PROTRUSIBLE +PROTRUSION +PROTRUSIONS +PROTRUSIVE +PROTRUSIVELY +PROTRUSIVENESS +PROTUBERANCE +PROTUBERANCES +PROTUBERANT +PROTUBERANTLY +PROTYL +PROTYLE +PROTYLES +PROTYLS +PROUD +PROUDER +PROUDEST +PROUDFUL +PROUDHEARTED +PROUDLY +PROUDNESS +PROUDNESSES +PROUNION +PROUSTITE +PROUSTITES +PROVABLE +PROVABLENESS +PROVABLENESSES +PROVABLY +PROVASCULAR +PROVE +PROVED +PROVEN +PROVENANCE +PROVENANCES +PROVENDER +PROVENDERS +PROVENIENCE +PROVENIENCES +PROVENLY +PROVENTRICULI +PROVENTRICULUS +PROVER +PROVERB +PROVERBED +PROVERBIAL +PROVERBIALLY +PROVERBING +PROVERBS +PROVERS +PROVES +PROVIDE +PROVIDED +PROVIDENCE +PROVIDENCES +PROVIDENT +PROVIDENTIAL +PROVIDENTIALLY +PROVIDENTLY +PROVIDER +PROVIDERS +PROVIDES +PROVIDING +PROVINCE +PROVINCES +PROVINCIAL +PROVINCIALISM +PROVINCIALISMS +PROVINCIALIST +PROVINCIALISTS +PROVINCIALITIES +PROVINCIALITY +PROVINCIALIZE +PROVINCIALIZED +PROVINCIALIZES +PROVINCIALIZING +PROVINCIALLY +PROVINCIALS +PROVING +PROVIRAL +PROVIRUS +PROVIRUSES +PROVISION +PROVISIONAL +PROVISIONALLY +PROVISIONALS +PROVISIONARY +PROVISIONED +PROVISIONER +PROVISIONERS +PROVISIONING +PROVISIONS +PROVISO +PROVISOES +PROVISORY +PROVISOS +PROVITAMIN +PROVITAMINS +PROVOCATEUR +PROVOCATEURS +PROVOCATION +PROVOCATIONS +PROVOCATIVE +PROVOCATIVELY +PROVOCATIVENESS +PROVOCATIVES +PROVOKE +PROVOKED +PROVOKER +PROVOKERS +PROVOKES +PROVOKING +PROVOKINGLY +PROVOLONE +PROVOLONES +PROVOST +PROVOSTS +PROW +PROWAR +PROWER +PROWESS +PROWESSES +PROWEST +PROWL +PROWLED +PROWLER +PROWLERS +PROWLING +PROWLS +PROWS +PROXEMIC +PROXEMICS +PROXIES +PROXIMAL +PROXIMALLY +PROXIMATE +PROXIMATELY +PROXIMATENESS +PROXIMATENESSES +PROXIMITIES +PROXIMITY +PROXIMO +PROXY +PRUDE +PRUDENCE +PRUDENCES +PRUDENT +PRUDENTIAL +PRUDENTIALLY +PRUDENTLY +PRUDERIES +PRUDERY +PRUDES +PRUDISH +PRUDISHLY +PRUDISHNESS +PRUDISHNESSES +PRUINOSE +PRUNABLE +PRUNE +PRUNED +PRUNELLA +PRUNELLAS +PRUNELLE +PRUNELLES +PRUNELLO +PRUNELLOS +PRUNER +PRUNERS +PRUNES +PRUNING +PRUNUS +PRUNUSES +PRURIENCE +PRURIENCES +PRURIENCIES +PRURIENCY +PRURIENT +PRURIENTLY +PRURIGO +PRURIGOS +PRURITIC +PRURITUS +PRURITUSES +PRUSSIANISE +PRUSSIANISED +PRUSSIANISES +PRUSSIANISING +PRUSSIANIZATION +PRUSSIANIZE +PRUSSIANIZED +PRUSSIANIZES +PRUSSIANIZING +PRUSSIATE +PRUSSIATES +PRUSSIC +PRUTA +PRUTAH +PRUTOT +PRUTOTH +PRY +PRYER +PRYERS +PRYING +PRYINGLY +PRYTHEE +PSALM +PSALMBOOK +PSALMBOOKS +PSALMED +PSALMIC +PSALMING +PSALMIST +PSALMISTS +PSALMODIC +PSALMODIES +PSALMODY +PSALMS +PSALTER +PSALTERIA +PSALTERIES +PSALTERIUM +PSALTERS +PSALTERY +PSALTRIES +PSALTRY +PSAMMITE +PSAMMITES +PSAMMITIC +PSAMMON +PSAMMONS +PSCHENT +PSCHENTS +PSEPHITE +PSEPHITES +PSEPHITIC +PSEPHOLOGICAL +PSEPHOLOGIES +PSEPHOLOGIST +PSEPHOLOGISTS +PSEPHOLOGY +PSEUD +PSEUDEPIGRAPH +PSEUDEPIGRAPHA +PSEUDEPIGRAPHON +PSEUDEPIGRAPHS +PSEUDEPIGRAPHY +PSEUDO +PSEUDOALLELE +PSEUDOALLELES +PSEUDOCLASSIC +PSEUDOCLASSICS +PSEUDOCOEL +PSEUDOCOELOMATE +PSEUDOCOELS +PSEUDOCYESES +PSEUDOCYESIS +PSEUDOMONAD +PSEUDOMONADES +PSEUDOMONADS +PSEUDOMONAS +PSEUDOMORPH +PSEUDOMORPHIC +PSEUDOMORPHISM +PSEUDOMORPHISMS +PSEUDOMORPHOUS +PSEUDOMORPHS +PSEUDONYM +PSEUDONYMITIES +PSEUDONYMITY +PSEUDONYMOUS +PSEUDONYMOUSLY +PSEUDONYMS +PSEUDOPOD +PSEUDOPODAL +PSEUDOPODIA +PSEUDOPODIAL +PSEUDOPODIUM +PSEUDOPODS +PSEUDOPREGNANCY +PSEUDOPREGNANT +PSEUDORANDOM +PSEUDOS +PSEUDOSCIENCE +PSEUDOSCIENCES +PSEUDOSCIENTIST +PSEUDOSCORPION +PSEUDOSCORPIONS +PSEUDS +PSHAW +PSHAWED +PSHAWING +PSHAWS +PSI +PSILOCIN +PSILOCINS +PSILOCYBIN +PSILOCYBINS +PSILOPHYTE +PSILOPHYTES +PSILOPHYTIC +PSILOSES +PSILOSIS +PSILOTIC +PSIS +PSITTACINE +PSITTACINES +PSITTACOSES +PSITTACOSIS +PSITTACOTIC +PSOAE +PSOAI +PSOAS +PSOATIC +PSOCID +PSOCIDS +PSORALEA +PSORALEAS +PSORALEN +PSORALENS +PSORIASES +PSORIASIS +PSORIATIC +PSORIATICS +PSST +PST +PSYCH +PSYCHASTHENIA +PSYCHASTHENIAS +PSYCHASTHENIC +PSYCHASTHENICS +PSYCHE +PSYCHED +PSYCHEDELIA +PSYCHEDELIAS +PSYCHEDELIC +PSYCHEDELICALLY +PSYCHEDELICS +PSYCHES +PSYCHIATRIC +PSYCHIATRICALLY +PSYCHIATRIES +PSYCHIATRIST +PSYCHIATRISTS +PSYCHIATRY +PSYCHIC +PSYCHICAL +PSYCHICALLY +PSYCHICS +PSYCHING +PSYCHO +PSYCHOACOUSTIC +PSYCHOACOUSTICS +PSYCHOACTIVE +PSYCHOANALYSES +PSYCHOANALYSIS +PSYCHOANALYST +PSYCHOANALYSTS +PSYCHOANALYTIC +PSYCHOANALYZE +PSYCHOANALYZED +PSYCHOANALYZES +PSYCHOANALYZING +PSYCHOBABBLE +PSYCHOBABBLER +PSYCHOBABBLERS +PSYCHOBABBLES +PSYCHOBIOGRAPHY +PSYCHOBIOLOGIC +PSYCHOBIOLOGIES +PSYCHOBIOLOGIST +PSYCHOBIOLOGY +PSYCHOCHEMICAL +PSYCHOCHEMICALS +PSYCHODRAMA +PSYCHODRAMAS +PSYCHODRAMATIC +PSYCHODYNAMIC +PSYCHODYNAMICS +PSYCHOGENESES +PSYCHOGENESIS +PSYCHOGENETIC +PSYCHOGENIC +PSYCHOGENICALLY +PSYCHOGRAPH +PSYCHOGRAPHS +PSYCHOHISTORIAN +PSYCHOHISTORIES +PSYCHOHISTORY +PSYCHOKINESES +PSYCHOKINESIS +PSYCHOKINETIC +PSYCHOLINGUIST +PSYCHOLINGUISTS +PSYCHOLOGIC +PSYCHOLOGICAL +PSYCHOLOGICALLY +PSYCHOLOGIES +PSYCHOLOGISE +PSYCHOLOGISED +PSYCHOLOGISES +PSYCHOLOGISING +PSYCHOLOGISM +PSYCHOLOGISMS +PSYCHOLOGIST +PSYCHOLOGISTS +PSYCHOLOGIZE +PSYCHOLOGIZED +PSYCHOLOGIZES +PSYCHOLOGIZING +PSYCHOLOGY +PSYCHOMETRIC +PSYCHOMETRICIAN +PSYCHOMETRICS +PSYCHOMETRIES +PSYCHOMETRY +PSYCHOMOTOR +PSYCHONEUROSES +PSYCHONEUROSIS +PSYCHONEUROTIC +PSYCHONEUROTICS +PSYCHOPATH +PSYCHOPATHIC +PSYCHOPATHICS +PSYCHOPATHIES +PSYCHOPATHOLOGY +PSYCHOPATHS +PSYCHOPATHY +PSYCHOPHYSICAL +PSYCHOPHYSICIST +PSYCHOPHYSICS +PSYCHOS +PSYCHOSES +PSYCHOSEXUAL +PSYCHOSEXUALITY +PSYCHOSEXUALLY +PSYCHOSIS +PSYCHOSOCIAL +PSYCHOSOCIALLY +PSYCHOSOMATIC +PSYCHOSOMATICS +PSYCHOSURGEON +PSYCHOSURGEONS +PSYCHOSURGERIES +PSYCHOSURGERY +PSYCHOSURGICAL +PSYCHOSYNTHESES +PSYCHOSYNTHESIS +PSYCHOTHERAPIES +PSYCHOTHERAPIST +PSYCHOTHERAPY +PSYCHOTIC +PSYCHOTICALLY +PSYCHOTICS +PSYCHOTOMIMETIC +PSYCHOTROPIC +PSYCHOTROPICS +PSYCHROMETER +PSYCHROMETERS +PSYCHROMETRIC +PSYCHROMETRIES +PSYCHROMETRY +PSYCHROPHILIC +PSYCHS +PSYLLA +PSYLLAS +PSYLLID +PSYLLIDS +PSYLLIUM +PSYLLIUMS +PSYOPS +PSYWAR +PSYWARS +PTARMIGAN +PTARMIGANS +PTERANODON +PTERANODONS +PTERIDINE +PTERIDINES +PTERIDOLOGICAL +PTERIDOLOGIES +PTERIDOLOGIST +PTERIDOLOGISTS +PTERIDOLOGY +PTERIDOPHYTE +PTERIDOPHYTES +PTERIDOSPERM +PTERIDOSPERMS +PTERIN +PTERINS +PTERODACTYL +PTERODACTYLS +PTEROPOD +PTEROPODS +PTEROSAUR +PTEROSAURS +PTERYGIA +PTERYGIAL +PTERYGIUM +PTERYGIUMS +PTERYGOID +PTERYGOIDS +PTERYLA +PTERYLAE +PTISAN +PTISANS +PTOMAIN +PTOMAINE +PTOMAINES +PTOMAINIC +PTOMAINS +PTOOEY +PTOSES +PTOSIS +PTOTIC +PTUI +PTYALIN +PTYALINS +PTYALISM +PTYALISMS +PUB +PUBERAL +PUBERTAL +PUBERTIES +PUBERTY +PUBERULENT +PUBES +PUBESCENCE +PUBESCENCES +PUBESCENT +PUBIC +PUBIS +PUBLIC +PUBLICALLY +PUBLICAN +PUBLICANS +PUBLICATION +PUBLICATIONS +PUBLICISE +PUBLICISED +PUBLICISES +PUBLICISING +PUBLICIST +PUBLICISTS +PUBLICITIES +PUBLICITY +PUBLICIZE +PUBLICIZED +PUBLICIZES +PUBLICIZING +PUBLICLY +PUBLICNESS +PUBLICNESSES +PUBLICS +PUBLISH +PUBLISHABLE +PUBLISHED +PUBLISHER +PUBLISHERS +PUBLISHES +PUBLISHING +PUBLISHINGS +PUBS +PUCCOON +PUCCOONS +PUCE +PUCES +PUCK +PUCKA +PUCKER +PUCKERED +PUCKERER +PUCKERERS +PUCKERIER +PUCKERIEST +PUCKERING +PUCKERS +PUCKERY +PUCKISH +PUCKISHLY +PUCKISHNESS +PUCKISHNESSES +PUCKS +PUD +PUDDING +PUDDINGS +PUDDLE +PUDDLED +PUDDLER +PUDDLERS +PUDDLES +PUDDLIER +PUDDLIEST +PUDDLING +PUDDLINGS +PUDDLY +PUDENCIES +PUDENCY +PUDENDA +PUDENDAL +PUDENDUM +PUDGIER +PUDGIEST +PUDGILY +PUDGINESS +PUDGINESSES +PUDGY +PUDIBUND +PUDIC +PUDS +PUEBLO +PUEBLOS +PUERILE +PUERILELY +PUERILISM +PUERILISMS +PUERILITIES +PUERILITY +PUERPERA +PUERPERAE +PUERPERAL +PUERPERIA +PUERPERIUM +PUFF +PUFFBALL +PUFFBALLS +PUFFED +PUFFER +PUFFERIES +PUFFERS +PUFFERY +PUFFIER +PUFFIEST +PUFFILY +PUFFIN +PUFFINESS +PUFFINESSES +PUFFING +PUFFINS +PUFFS +PUFFY +PUG +PUGAREE +PUGAREES +PUGGAREE +PUGGAREES +PUGGED +PUGGIER +PUGGIEST +PUGGINESS +PUGGINESSES +PUGGING +PUGGISH +PUGGREE +PUGGREES +PUGGRIES +PUGGRY +PUGGY +PUGH +PUGILISM +PUGILISMS +PUGILIST +PUGILISTIC +PUGILISTS +PUGMARK +PUGMARKS +PUGNACIOUS +PUGNACIOUSLY +PUGNACIOUSNESS +PUGNACITIES +PUGNACITY +PUGREE +PUGREES +PUGS +PUISNE +PUISNES +PUISSANCE +PUISSANCES +PUISSANT +PUJA +PUJAH +PUJAHS +PUJAS +PUKE +PUKED +PUKES +PUKING +PUKKA +PUL +PULA +PULCHRITUDE +PULCHRITUDES +PULCHRITUDINOUS +PULE +PULED +PULER +PULERS +PULES +PULI +PULICENE +PULICIDE +PULICIDES +PULIK +PULING +PULINGLY +PULINGS +PULIS +PULL +PULLBACK +PULLBACKS +PULLED +PULLER +PULLERS +PULLET +PULLETS +PULLEY +PULLEYS +PULLING +PULLMAN +PULLMANS +PULLOUT +PULLOUTS +PULLOVER +PULLOVERS +PULLS +PULLULATE +PULLULATED +PULLULATES +PULLULATING +PULLULATION +PULLULATIONS +PULLUP +PULLUPS +PULMONARY +PULMONATE +PULMONATES +PULMONIC +PULMOTOR +PULMOTORS +PULP +PULPAL +PULPALLY +PULPED +PULPER +PULPERS +PULPIER +PULPIEST +PULPILY +PULPINESS +PULPINESSES +PULPING +PULPIT +PULPITAL +PULPITS +PULPLESS +PULPOUS +PULPS +PULPWOOD +PULPWOODS +PULPY +PULQUE +PULQUES +PULS +PULSANT +PULSAR +PULSARS +PULSATE +PULSATED +PULSATES +PULSATILE +PULSATING +PULSATION +PULSATIONS +PULSATIVE +PULSATOR +PULSATORS +PULSATORY +PULSE +PULSED +PULSEJET +PULSEJETS +PULSER +PULSERS +PULSES +PULSING +PULSION +PULSIONS +PULSOJET +PULSOJETS +PULVERABLE +PULVERISE +PULVERISED +PULVERISES +PULVERISING +PULVERIZABLE +PULVERIZATION +PULVERIZATIONS +PULVERIZE +PULVERIZED +PULVERIZER +PULVERIZERS +PULVERIZES +PULVERIZING +PULVERULENT +PULVILLAR +PULVILLI +PULVILLUS +PULVINAR +PULVINATE +PULVINI +PULVINUS +PUMA +PUMAS +PUMELO +PUMELOS +PUMICE +PUMICED +PUMICEOUS +PUMICER +PUMICERS +PUMICES +PUMICING +PUMICITE +PUMICITES +PUMMEL +PUMMELED +PUMMELING +PUMMELLED +PUMMELLING +PUMMELO +PUMMELOS +PUMMELS +PUMP +PUMPED +PUMPER +PUMPERNICKEL +PUMPERNICKELS +PUMPERS +PUMPING +PUMPKIN +PUMPKINS +PUMPKINSEED +PUMPKINSEEDS +PUMPLESS +PUMPLIKE +PUMPS +PUN +PUNA +PUNAS +PUNCH +PUNCHBALL +PUNCHBALLS +PUNCHBOARD +PUNCHBOARDS +PUNCHED +PUNCHEON +PUNCHEONS +PUNCHER +PUNCHERS +PUNCHES +PUNCHIER +PUNCHIEST +PUNCHILY +PUNCHINELLO +PUNCHINELLOS +PUNCHING +PUNCHLESS +PUNCHY +PUNCTATE +PUNCTATED +PUNCTATION +PUNCTATIONS +PUNCTILIO +PUNCTILIOS +PUNCTILIOUS +PUNCTILIOUSLY +PUNCTILIOUSNESS +PUNCTUAL +PUNCTUALITIES +PUNCTUALITY +PUNCTUALLY +PUNCTUATE +PUNCTUATED +PUNCTUATES +PUNCTUATING +PUNCTUATION +PUNCTUATIONS +PUNCTUATOR +PUNCTUATORS +PUNCTURE +PUNCTURED +PUNCTURES +PUNCTURING +PUNDIT +PUNDITIC +PUNDITRIES +PUNDITRY +PUNDITS +PUNG +PUNGENCIES +PUNGENCY +PUNGENT +PUNGENTLY +PUNGLE +PUNGLED +PUNGLES +PUNGLING +PUNGS +PUNIER +PUNIEST +PUNILY +PUNINESS +PUNINESSES +PUNISH +PUNISHABILITIES +PUNISHABILITY +PUNISHABLE +PUNISHED +PUNISHER +PUNISHERS +PUNISHES +PUNISHING +PUNISHMENT +PUNISHMENTS +PUNITION +PUNITIONS +PUNITIVE +PUNITIVELY +PUNITIVENESS +PUNITIVENESSES +PUNITORY +PUNJI +PUNJIS +PUNK +PUNKA +PUNKAH +PUNKAHS +PUNKAS +PUNKER +PUNKERS +PUNKEST +PUNKEY +PUNKEYS +PUNKIE +PUNKIER +PUNKIES +PUNKIEST +PUNKIN +PUNKINESS +PUNKINESSES +PUNKINS +PUNKISH +PUNKS +PUNKY +PUNNED +PUNNER +PUNNERS +PUNNET +PUNNETS +PUNNIER +PUNNIEST +PUNNING +PUNNINGLY +PUNNY +PUNS +PUNSTER +PUNSTERS +PUNT +PUNTED +PUNTER +PUNTERS +PUNTIES +PUNTING +PUNTO +PUNTOS +PUNTS +PUNTY +PUNY +PUP +PUPA +PUPAE +PUPAL +PUPARIA +PUPARIAL +PUPARIUM +PUPAS +PUPATE +PUPATED +PUPATES +PUPATING +PUPATION +PUPATIONS +PUPFISH +PUPFISHES +PUPIL +PUPILAGE +PUPILAGES +PUPILAR +PUPILARY +PUPILLAGE +PUPILLAGES +PUPILLARY +PUPILS +PUPPED +PUPPET +PUPPETEER +PUPPETEERED +PUPPETEERING +PUPPETEERS +PUPPETLIKE +PUPPETRIES +PUPPETRY +PUPPETS +PUPPIES +PUPPING +PUPPY +PUPPYDOM +PUPPYDOMS +PUPPYHOOD +PUPPYHOODS +PUPPYISH +PUPPYLIKE +PUPS +PUPU +PUPUS +PUR +PURANA +PURANAS +PURANIC +PURBLIND +PURBLINDLY +PURBLINDNESS +PURBLINDNESSES +PURCHASABLE +PURCHASE +PURCHASED +PURCHASER +PURCHASERS +PURCHASES +PURCHASING +PURDA +PURDAH +PURDAHS +PURDAS +PURE +PUREBLOOD +PUREBLOODS +PUREBRED +PUREBREDS +PUREE +PUREED +PUREEING +PUREES +PURELY +PURENESS +PURENESSES +PURER +PUREST +PURFLE +PURFLED +PURFLER +PURFLERS +PURFLES +PURFLING +PURFLINGS +PURGATION +PURGATIONS +PURGATIVE +PURGATIVES +PURGATORIAL +PURGATORIES +PURGATORY +PURGE +PURGEABLE +PURGED +PURGER +PURGERS +PURGES +PURGING +PURGINGS +PURI +PURIFICATION +PURIFICATIONS +PURIFICATOR +PURIFICATORS +PURIFICATORY +PURIFIED +PURIFIER +PURIFIERS +PURIFIES +PURIFY +PURIFYING +PURIN +PURINE +PURINES +PURINS +PURIS +PURISM +PURISMS +PURIST +PURISTIC +PURISTICALLY +PURISTS +PURITAN +PURITANIC +PURITANICAL +PURITANICALLY +PURITANISM +PURITANISMS +PURITANS +PURITIES +PURITY +PURL +PURLED +PURLIEU +PURLIEUS +PURLIN +PURLINE +PURLINES +PURLING +PURLINGS +PURLINS +PURLOIN +PURLOINED +PURLOINER +PURLOINERS +PURLOINING +PURLOINS +PURLS +PUROMYCIN +PUROMYCINS +PURPLE +PURPLED +PURPLEHEART +PURPLEHEARTS +PURPLER +PURPLES +PURPLEST +PURPLING +PURPLISH +PURPLY +PURPORT +PURPORTED +PURPORTEDLY +PURPORTING +PURPORTS +PURPOSE +PURPOSED +PURPOSEFUL +PURPOSEFULLY +PURPOSEFULNESS +PURPOSELESS +PURPOSELESSLY +PURPOSELESSNESS +PURPOSELY +PURPOSES +PURPOSING +PURPOSIVE +PURPOSIVELY +PURPOSIVENESS +PURPOSIVENESSES +PURPURA +PURPURAS +PURPURE +PURPURES +PURPURIC +PURPURIN +PURPURINS +PURR +PURRED +PURRING +PURRINGLY +PURRS +PURS +PURSE +PURSED +PURSELIKE +PURSER +PURSERS +PURSES +PURSIER +PURSIEST +PURSILY +PURSINESS +PURSINESSES +PURSING +PURSLANE +PURSLANES +PURSUABLE +PURSUANCE +PURSUANCES +PURSUANT +PURSUE +PURSUED +PURSUER +PURSUERS +PURSUES +PURSUING +PURSUIT +PURSUITS +PURSUIVANT +PURSUIVANTS +PURSY +PURTENANCE +PURTENANCES +PURTIER +PURTIEST +PURTY +PURULENCE +PURULENCES +PURULENCIES +PURULENCY +PURULENT +PURVEY +PURVEYANCE +PURVEYANCES +PURVEYED +PURVEYING +PURVEYOR +PURVEYORS +PURVEYS +PURVIEW +PURVIEWS +PUS +PUSES +PUSH +PUSHBALL +PUSHBALLS +PUSHCART +PUSHCARTS +PUSHCHAIR +PUSHCHAIRS +PUSHDOWN +PUSHDOWNS +PUSHED +PUSHER +PUSHERS +PUSHES +PUSHFUL +PUSHFULNESS +PUSHFULNESSES +PUSHIER +PUSHIEST +PUSHILY +PUSHINESS +PUSHINESSES +PUSHING +PUSHINGLY +PUSHOVER +PUSHOVERS +PUSHPIN +PUSHPINS +PUSHROD +PUSHRODS +PUSHUP +PUSHUPS +PUSHY +PUSILLANIMITIES +PUSILLANIMITY +PUSILLANIMOUS +PUSILLANIMOUSLY +PUSLEY +PUSLEYS +PUSLIKE +PUSS +PUSSES +PUSSIER +PUSSIES +PUSSIEST +PUSSLEY +PUSSLEYS +PUSSLIES +PUSSLIKE +PUSSLY +PUSSY +PUSSYCAT +PUSSYCATS +PUSSYFOOT +PUSSYFOOTED +PUSSYFOOTER +PUSSYFOOTERS +PUSSYFOOTING +PUSSYFOOTS +PUSSYTOES +PUSTULANT +PUSTULANTS +PUSTULAR +PUSTULATE +PUSTULATED +PUSTULATES +PUSTULATING +PUSTULATION +PUSTULATIONS +PUSTULE +PUSTULED +PUSTULES +PUSTULOUS +PUT +PUTAMEN +PUTAMINA +PUTATIVE +PUTATIVELY +PUTDOWN +PUTDOWNS +PUTLOG +PUTLOGS +PUTOFF +PUTOFFS +PUTON +PUTONGHUA +PUTONGHUAS +PUTONS +PUTOUT +PUTOUTS +PUTREFACTION +PUTREFACTIONS +PUTREFACTIVE +PUTREFIED +PUTREFIER +PUTREFIERS +PUTREFIES +PUTREFY +PUTREFYING +PUTRESCENCE +PUTRESCENCES +PUTRESCENT +PUTRESCIBLE +PUTRESCINE +PUTRESCINES +PUTRID +PUTRIDITIES +PUTRIDITY +PUTRIDLY +PUTS +PUTSCH +PUTSCHES +PUTSCHIST +PUTSCHISTS +PUTT +PUTTED +PUTTEE +PUTTEES +PUTTER +PUTTERED +PUTTERER +PUTTERERS +PUTTERING +PUTTERS +PUTTI +PUTTIE +PUTTIED +PUTTIER +PUTTIERS +PUTTIES +PUTTING +PUTTO +PUTTS +PUTTY +PUTTYING +PUTTYLESS +PUTTYLIKE +PUTTYROOT +PUTTYROOTS +PUTZ +PUTZED +PUTZES +PUTZING +PUZZLE +PUZZLED +PUZZLEDLY +PUZZLEHEADED +PUZZLEMENT +PUZZLEMENTS +PUZZLER +PUZZLERS +PUZZLES +PUZZLING +PUZZLINGLY +PYA +PYAEMIA +PYAEMIAS +PYAEMIC +PYAS +PYCNIDIA +PYCNIDIAL +PYCNIDIUM +PYCNOGONID +PYCNOGONIDS +PYCNOMETER +PYCNOMETERS +PYCNOSES +PYCNOSIS +PYCNOTIC +PYE +PYELITIC +PYELITIS +PYELITISES +PYELOGRAM +PYELOGRAMS +PYELONEPHRITIC +PYELONEPHRITIS +PYEMIA +PYEMIAS +PYEMIC +PYES +PYGIDIA +PYGIDIAL +PYGIDIUM +PYGMAEAN +PYGMEAN +PYGMIES +PYGMOID +PYGMY +PYGMYISH +PYGMYISM +PYGMYISMS +PYIC +PYIN +PYINS +PYJAMA +PYJAMAS +PYKNIC +PYKNICS +PYKNOSES +PYKNOSIS +PYKNOTIC +PYLON +PYLONS +PYLORI +PYLORIC +PYLORUS +PYLORUSES +PYODERMA +PYODERMAS +PYODERMIC +PYOGENIC +PYOID +PYORRHEA +PYORRHEAL +PYORRHEAS +PYORRHOEA +PYORRHOEAS +PYOSES +PYOSIS +PYRACANTHA +PYRACANTHAS +PYRALID +PYRALIDID +PYRALIDIDS +PYRALIDS +PYRAMID +PYRAMIDAL +PYRAMIDALLY +PYRAMIDED +PYRAMIDIC +PYRAMIDICAL +PYRAMIDING +PYRAMIDS +PYRAN +PYRANOID +PYRANOSE +PYRANOSES +PYRANOSIDE +PYRANOSIDES +PYRANS +PYRARGYRITE +PYRARGYRITES +PYRE +PYRENE +PYRENES +PYRENOID +PYRENOIDS +PYRES +PYRETHRIN +PYRETHRINS +PYRETHROID +PYRETHROIDS +PYRETHRUM +PYRETHRUMS +PYRETIC +PYREX +PYREXES +PYREXIA +PYREXIAL +PYREXIAS +PYREXIC +PYRHELIOMETER +PYRHELIOMETERS +PYRHELIOMETRIC +PYRIC +PYRIDIC +PYRIDINE +PYRIDINES +PYRIDOXAL +PYRIDOXALS +PYRIDOXAMINE +PYRIDOXAMINES +PYRIDOXIN +PYRIDOXINE +PYRIDOXINES +PYRIDOXINS +PYRIFORM +PYRIMETHAMINE +PYRIMETHAMINES +PYRIMIDINE +PYRIMIDINES +PYRITE +PYRITES +PYRITIC +PYRITICAL +PYRITOUS +PYRO +PYROCATECHOL +PYROCATECHOLS +PYROCERAM +PYROCERAMS +PYROCLASTIC +PYROELECTRIC +PYROELECTRICITY +PYROGALLOL +PYROGALLOLS +PYROGEN +PYROGENIC +PYROGENICITIES +PYROGENICITY +PYROGENS +PYROLA +PYROLAS +PYROLIZE +PYROLIZED +PYROLIZES +PYROLIZING +PYROLOGIES +PYROLOGY +PYROLUSITE +PYROLUSITES +PYROLYSATE +PYROLYSATES +PYROLYSES +PYROLYSIS +PYROLYTIC +PYROLYTICALLY +PYROLYZABLE +PYROLYZATE +PYROLYZATES +PYROLYZE +PYROLYZED +PYROLYZER +PYROLYZERS +PYROLYZES +PYROLYZING +PYROMANCIES +PYROMANCY +PYROMANIA +PYROMANIAC +PYROMANIACAL +PYROMANIACS +PYROMANIAS +PYROMETALLURGY +PYROMETER +PYROMETERS +PYROMETRIC +PYROMETRICALLY +PYROMETRIES +PYROMETRY +PYROMORPHITE +PYROMORPHITES +PYRONE +PYRONES +PYRONINE +PYRONINES +PYRONINOPHILIC +PYROPE +PYROPES +PYROPHORIC +PYROPHOSPHATE +PYROPHOSPHATES +PYROPHYLLITE +PYROPHYLLITES +PYROS +PYROSIS +PYROSISES +PYROSTAT +PYROSTATS +PYROTECHNIC +PYROTECHNICAL +PYROTECHNICALLY +PYROTECHNICS +PYROTECHNIST +PYROTECHNISTS +PYROXENE +PYROXENES +PYROXENIC +PYROXENITE +PYROXENITES +PYROXENITIC +PYROXENOID +PYROXENOIDS +PYROXYLIN +PYROXYLINS +PYRRHIC +PYRRHICS +PYRRHOTITE +PYRRHOTITES +PYRROL +PYRROLE +PYRROLES +PYRROLIC +PYRROLS +PYRUVATE +PYRUVATES +PYTHON +PYTHONESS +PYTHONESSES +PYTHONIC +PYTHONS +PYURIA +PYURIAS +PYX +PYXES +PYXIDES +PYXIDIA +PYXIDIUM +PYXIE +PYXIES +PYXIS +QABALA +QABALAH +QABALAHS +QABALAS +QADI +QADIS +QAID +QAIDS +QANAT +QANATS +QAT +QATS +QI +QINDAR +QINDARKA +QINDARS +QINTAR +QINTARS +QIS +QIVIUT +QIVIUTS +QOPH +QOPHS +QUA +QUAALUDE +QUAALUDES +QUACK +QUACKED +QUACKERIES +QUACKERY +QUACKIER +QUACKIEST +QUACKING +QUACKISH +QUACKISM +QUACKISMS +QUACKS +QUACKSALVER +QUACKSALVERS +QUACKY +QUAD +QUADDED +QUADDING +QUADPLEX +QUADPLEXES +QUADRANGLE +QUADRANGLES +QUADRANGULAR +QUADRANS +QUADRANT +QUADRANTAL +QUADRANTES +QUADRANTS +QUADRAPHONIC +QUADRAPHONICS +QUADRAT +QUADRATE +QUADRATED +QUADRATES +QUADRATIC +QUADRATICALLY +QUADRATICS +QUADRATING +QUADRATS +QUADRATURE +QUADRATURES +QUADRENNIA +QUADRENNIAL +QUADRENNIALLY +QUADRENNIALS +QUADRENNIUM +QUADRENNIUMS +QUADRIC +QUADRICEP +QUADRICEPS +QUADRICEPSES +QUADRICS +QUADRIFID +QUADRIGA +QUADRIGAE +QUADRILATERAL +QUADRILATERALS +QUADRILLE +QUADRILLES +QUADRILLION +QUADRILLIONS +QUADRILLIONTH +QUADRILLIONTHS +QUADRIPARTITE +QUADRIPHONIC +QUADRIPHONICS +QUADRIPLEGIA +QUADRIPLEGIAS +QUADRIPLEGIC +QUADRIPLEGICS +QUADRIVALENT +QUADRIVALENTS +QUADRIVIA +QUADRIVIAL +QUADRIVIUM +QUADROON +QUADROONS +QUADRUMANOUS +QUADRUMVIR +QUADRUMVIRATE +QUADRUMVIRATES +QUADRUMVIRS +QUADRUPED +QUADRUPEDAL +QUADRUPEDS +QUADRUPLE +QUADRUPLED +QUADRUPLES +QUADRUPLET +QUADRUPLETS +QUADRUPLICATE +QUADRUPLICATED +QUADRUPLICATES +QUADRUPLICATING +QUADRUPLICATION +QUADRUPLICITIES +QUADRUPLICITY +QUADRUPLING +QUADRUPLY +QUADRUPOLE +QUADRUPOLES +QUADS +QUAERE +QUAERES +QUAESTOR +QUAESTORS +QUAFF +QUAFFED +QUAFFER +QUAFFERS +QUAFFING +QUAFFS +QUAG +QUAGGA +QUAGGAS +QUAGGIER +QUAGGIEST +QUAGGY +QUAGMIRE +QUAGMIRES +QUAGMIRIER +QUAGMIRIEST +QUAGMIRY +QUAGS +QUAHAUG +QUAHAUGS +QUAHOG +QUAHOGS +QUAI +QUAICH +QUAICHES +QUAICHS +QUAIGH +QUAIGHS +QUAIL +QUAILED +QUAILING +QUAILS +QUAINT +QUAINTER +QUAINTEST +QUAINTLY +QUAINTNESS +QUAINTNESSES +QUAIS +QUAKE +QUAKED +QUAKER +QUAKERS +QUAKES +QUAKIER +QUAKIEST +QUAKILY +QUAKINESS +QUAKINESSES +QUAKING +QUAKINGLY +QUAKY +QUALE +QUALIA +QUALIFIABLE +QUALIFICATION +QUALIFICATIONS +QUALIFIED +QUALIFIEDLY +QUALIFIER +QUALIFIERS +QUALIFIES +QUALIFY +QUALIFYING +QUALITATIVE +QUALITATIVELY +QUALITIES +QUALITY +QUALM +QUALMIER +QUALMIEST +QUALMISH +QUALMISHLY +QUALMISHNESS +QUALMISHNESSES +QUALMS +QUALMY +QUAMASH +QUAMASHES +QUANDANG +QUANDANGS +QUANDARIES +QUANDARY +QUANDONG +QUANDONGS +QUANGO +QUANGOS +QUANT +QUANTA +QUANTAL +QUANTALLY +QUANTED +QUANTIC +QUANTICS +QUANTIFIABLE +QUANTIFICATION +QUANTIFICATIONS +QUANTIFIED +QUANTIFIER +QUANTIFIERS +QUANTIFIES +QUANTIFY +QUANTIFYING +QUANTILE +QUANTILES +QUANTING +QUANTITATE +QUANTITATED +QUANTITATES +QUANTITATING +QUANTITATION +QUANTITATIONS +QUANTITATIVE +QUANTITATIVELY +QUANTITIES +QUANTITY +QUANTIZATION +QUANTIZATIONS +QUANTIZE +QUANTIZED +QUANTIZER +QUANTIZERS +QUANTIZES +QUANTIZING +QUANTONG +QUANTONGS +QUANTS +QUANTUM +QUARANTINE +QUARANTINED +QUARANTINES +QUARANTINING +QUARE +QUARK +QUARKS +QUARREL +QUARRELED +QUARRELER +QUARRELERS +QUARRELING +QUARRELLED +QUARRELLER +QUARRELLERS +QUARRELLING +QUARRELS +QUARRELSOME +QUARRELSOMELY +QUARRELSOMENESS +QUARRIED +QUARRIER +QUARRIERS +QUARRIES +QUARRY +QUARRYING +QUARRYINGS +QUARRYMAN +QUARRYMEN +QUART +QUARTAN +QUARTANS +QUARTE +QUARTER +QUARTERAGE +QUARTERAGES +QUARTERBACK +QUARTERBACKED +QUARTERBACKING +QUARTERBACKS +QUARTERDECK +QUARTERDECKS +QUARTERED +QUARTERER +QUARTERERS +QUARTERFINAL +QUARTERFINALIST +QUARTERFINALS +QUARTERING +QUARTERINGS +QUARTERLIES +QUARTERLY +QUARTERMASTER +QUARTERMASTERS +QUARTERN +QUARTERNS +QUARTERS +QUARTERSAWED +QUARTERSAWN +QUARTERSTAFF +QUARTERSTAVES +QUARTES +QUARTET +QUARTETS +QUARTETTE +QUARTETTES +QUARTIC +QUARTICS +QUARTIER +QUARTIERS +QUARTILE +QUARTILES +QUARTO +QUARTOS +QUARTS +QUARTZ +QUARTZES +QUARTZITE +QUARTZITES +QUARTZITIC +QUARTZOSE +QUARTZOUS +QUASAR +QUASARS +QUASH +QUASHED +QUASHER +QUASHERS +QUASHES +QUASHING +QUASI +QUASICRYSTAL +QUASICRYSTALS +QUASIPARTICLE +QUASIPARTICLES +QUASIPERIODIC +QUASS +QUASSES +QUASSIA +QUASSIAS +QUASSIN +QUASSINS +QUATE +QUATERCENTENARY +QUATERNARIES +QUATERNARY +QUATERNION +QUATERNIONS +QUATERNITIES +QUATERNITY +QUATORZE +QUATORZES +QUATRAIN +QUATRAINS +QUATRE +QUATREFOIL +QUATREFOILS +QUATRES +QUATTROCENTO +QUATTROCENTOS +QUAVER +QUAVERED +QUAVERER +QUAVERERS +QUAVERING +QUAVERINGLY +QUAVERS +QUAVERY +QUAY +QUAYAGE +QUAYAGES +QUAYLIKE +QUAYS +QUAYSIDE +QUAYSIDES +QUBIT +QUBITS +QUBYTE +QUBYTES +QUEAN +QUEANS +QUEASIER +QUEASIEST +QUEASILY +QUEASINESS +QUEASINESSES +QUEASY +QUEAZIER +QUEAZIEST +QUEAZY +QUEBRACHO +QUEBRACHOS +QUEEN +QUEENDOM +QUEENDOMS +QUEENED +QUEENING +QUEENLIER +QUEENLIEST +QUEENLINESS +QUEENLINESSES +QUEENLY +QUEENS +QUEENSHIP +QUEENSHIPS +QUEENSIDE +QUEENSIDES +QUEER +QUEERED +QUEERER +QUEEREST +QUEERING +QUEERISH +QUEERLY +QUEERNESS +QUEERNESSES +QUEERS +QUELEA +QUELEAS +QUELL +QUELLABLE +QUELLED +QUELLER +QUELLERS +QUELLING +QUELLS +QUENCH +QUENCHABLE +QUENCHED +QUENCHER +QUENCHERS +QUENCHES +QUENCHING +QUENCHLESS +QUENELLE +QUENELLES +QUERCETIC +QUERCETIN +QUERCETINS +QUERCINE +QUERCITRON +QUERCITRONS +QUERIDA +QUERIDAS +QUERIED +QUERIER +QUERIERS +QUERIES +QUERIST +QUERISTS +QUERN +QUERNS +QUERULOUS +QUERULOUSLY +QUERULOUSNESS +QUERULOUSNESSES +QUERY +QUERYING +QUESADILLA +QUESADILLAS +QUEST +QUESTED +QUESTER +QUESTERS +QUESTING +QUESTION +QUESTIONABLE +QUESTIONABLY +QUESTIONARIES +QUESTIONARY +QUESTIONED +QUESTIONER +QUESTIONERS +QUESTIONING +QUESTIONLESS +QUESTIONNAIRE +QUESTIONNAIRES +QUESTIONS +QUESTOR +QUESTORS +QUESTS +QUETZAL +QUETZALES +QUETZALS +QUEUE +QUEUED +QUEUEING +QUEUER +QUEUERS +QUEUES +QUEUING +QUEY +QUEYS +QUEZAL +QUEZALES +QUEZALS +QUIBBLE +QUIBBLED +QUIBBLER +QUIBBLERS +QUIBBLES +QUIBBLING +QUICHE +QUICHES +QUICK +QUICKEN +QUICKENED +QUICKENER +QUICKENERS +QUICKENING +QUICKENS +QUICKER +QUICKEST +QUICKIE +QUICKIES +QUICKLIME +QUICKLIMES +QUICKLY +QUICKNESS +QUICKNESSES +QUICKS +QUICKSAND +QUICKSANDS +QUICKSET +QUICKSETS +QUICKSILVER +QUICKSILVERS +QUICKSTEP +QUICKSTEPS +QUID +QUIDDITIES +QUIDDITY +QUIDNUNC +QUIDNUNCS +QUIDS +QUIESCENCE +QUIESCENCES +QUIESCENT +QUIESCENTLY +QUIET +QUIETED +QUIETEN +QUIETENED +QUIETENER +QUIETENERS +QUIETENING +QUIETENS +QUIETER +QUIETERS +QUIETEST +QUIETING +QUIETISM +QUIETISMS +QUIETIST +QUIETISTIC +QUIETISTS +QUIETLY +QUIETNESS +QUIETNESSES +QUIETS +QUIETUDE +QUIETUDES +QUIETUS +QUIETUSES +QUIFF +QUIFFS +QUILL +QUILLAI +QUILLAIA +QUILLAIAS +QUILLAIS +QUILLAJA +QUILLAJAS +QUILLBACK +QUILLBACKS +QUILLED +QUILLET +QUILLETS +QUILLING +QUILLINGS +QUILLS +QUILLWORK +QUILLWORKS +QUILLWORT +QUILLWORTS +QUILT +QUILTED +QUILTER +QUILTERS +QUILTING +QUILTINGS +QUILTS +QUIN +QUINACRINE +QUINACRINES +QUINARIES +QUINARY +QUINATE +QUINCE +QUINCENTENARIES +QUINCENTENARY +QUINCENTENNIAL +QUINCENTENNIALS +QUINCES +QUINCUNCIAL +QUINCUNX +QUINCUNXES +QUINCUNXIAL +QUINDECILLION +QUINDECILLIONS +QUINELA +QUINELAS +QUINELLA +QUINELLAS +QUINIC +QUINIDINE +QUINIDINES +QUINIELA +QUINIELAS +QUININ +QUININA +QUININAS +QUININE +QUININES +QUININS +QUINNAT +QUINNATS +QUINOA +QUINOAS +QUINOID +QUINOIDAL +QUINOIDS +QUINOL +QUINOLIN +QUINOLINE +QUINOLINES +QUINOLINS +QUINOLONE +QUINOLONES +QUINOLS +QUINONE +QUINONES +QUINONOID +QUINQUENNIA +QUINQUENNIAL +QUINQUENNIALLY +QUINQUENNIALS +QUINQUENNIUM +QUINQUENNIUMS +QUINS +QUINSIED +QUINSIES +QUINSY +QUINT +QUINTA +QUINTAIN +QUINTAINS +QUINTAL +QUINTALS +QUINTAN +QUINTANS +QUINTAR +QUINTARS +QUINTAS +QUINTE +QUINTES +QUINTESSENCE +QUINTESSENCES +QUINTESSENTIAL +QUINTET +QUINTETS +QUINTETTE +QUINTETTES +QUINTIC +QUINTICS +QUINTILE +QUINTILES +QUINTILLION +QUINTILLIONS +QUINTILLIONTH +QUINTILLIONTHS +QUINTIN +QUINTINS +QUINTS +QUINTUPLE +QUINTUPLED +QUINTUPLES +QUINTUPLET +QUINTUPLETS +QUINTUPLICATE +QUINTUPLICATED +QUINTUPLICATES +QUINTUPLICATING +QUINTUPLING +QUINTUPLY +QUIP +QUIPPED +QUIPPER +QUIPPERS +QUIPPIER +QUIPPIEST +QUIPPING +QUIPPISH +QUIPPU +QUIPPUS +QUIPPY +QUIPS +QUIPSTER +QUIPSTERS +QUIPU +QUIPUS +QUIRE +QUIRED +QUIRES +QUIRING +QUIRK +QUIRKED +QUIRKIER +QUIRKIEST +QUIRKILY +QUIRKINESS +QUIRKINESSES +QUIRKING +QUIRKISH +QUIRKS +QUIRKY +QUIRT +QUIRTED +QUIRTING +QUIRTS +QUISLING +QUISLINGISM +QUISLINGISMS +QUISLINGS +QUIT +QUITCH +QUITCHES +QUITCLAIM +QUITCLAIMED +QUITCLAIMING +QUITCLAIMS +QUITE +QUITRENT +QUITRENTS +QUITS +QUITTANCE +QUITTANCES +QUITTED +QUITTER +QUITTERS +QUITTING +QUITTOR +QUITTORS +QUIVER +QUIVERED +QUIVERER +QUIVERERS +QUIVERING +QUIVERINGLY +QUIVERS +QUIVERY +QUIXOTE +QUIXOTES +QUIXOTIC +QUIXOTICAL +QUIXOTICALLY +QUIXOTISM +QUIXOTISMS +QUIXOTRIES +QUIXOTRY +QUIZ +QUIZMASTER +QUIZMASTERS +QUIZZED +QUIZZER +QUIZZERS +QUIZZES +QUIZZICAL +QUIZZICALITIES +QUIZZICALITY +QUIZZICALLY +QUIZZING +QUOD +QUODLIBET +QUODLIBETS +QUODS +QUOHOG +QUOHOGS +QUOIN +QUOINED +QUOINING +QUOINS +QUOIT +QUOITED +QUOITING +QUOITS +QUOKKA +QUOKKAS +QUOLL +QUOLLS +QUOMODO +QUOMODOS +QUONDAM +QUORUM +QUORUMS +QUOTA +QUOTABILITIES +QUOTABILITY +QUOTABLE +QUOTABLY +QUOTAS +QUOTATION +QUOTATIONS +QUOTE +QUOTED +QUOTER +QUOTERS +QUOTES +QUOTH +QUOTHA +QUOTIDIAN +QUOTIDIANS +QUOTIENT +QUOTIENTS +QUOTING +QURSH +QURSHES +QURUSH +QURUSHES +QWERTY +QWERTYS +RABAT +RABATO +RABATOS +RABATS +RABBET +RABBETED +RABBETING +RABBETS +RABBI +RABBIES +RABBIN +RABBINATE +RABBINATES +RABBINIC +RABBINICAL +RABBINICALLY +RABBINISM +RABBINISMS +RABBINS +RABBIS +RABBIT +RABBITBRUSH +RABBITBRUSHES +RABBITED +RABBITER +RABBITERS +RABBITING +RABBITRIES +RABBITRY +RABBITS +RABBITY +RABBLE +RABBLED +RABBLEMENT +RABBLEMENTS +RABBLER +RABBLERS +RABBLES +RABBLING +RABBONI +RABBONIS +RABIC +RABID +RABIDITIES +RABIDITY +RABIDLY +RABIDNESS +RABIDNESSES +RABIES +RABIETIC +RACCOON +RACCOONS +RACE +RACECOURSE +RACECOURSES +RACED +RACEHORSE +RACEHORSES +RACEMATE +RACEMATES +RACEME +RACEMED +RACEMES +RACEMIC +RACEMISM +RACEMISMS +RACEMIZATION +RACEMIZATIONS +RACEMIZE +RACEMIZED +RACEMIZES +RACEMIZING +RACEMOID +RACEMOSE +RACEMOUS +RACER +RACERS +RACES +RACETRACK +RACETRACKER +RACETRACKERS +RACETRACKS +RACEWALK +RACEWALKED +RACEWALKER +RACEWALKERS +RACEWALKING +RACEWALKINGS +RACEWALKS +RACEWAY +RACEWAYS +RACHET +RACHETED +RACHETING +RACHETS +RACHIAL +RACHIDES +RACHILLA +RACHILLAE +RACHIS +RACHISES +RACHITIC +RACHITIDES +RACHITIS +RACIAL +RACIALISM +RACIALISMS +RACIALIST +RACIALISTIC +RACIALISTS +RACIALIZE +RACIALIZED +RACIALIZES +RACIALIZING +RACIALLY +RACIER +RACIEST +RACILY +RACINESS +RACINESSES +RACING +RACINGS +RACISM +RACISMS +RACIST +RACISTS +RACK +RACKED +RACKER +RACKERS +RACKET +RACKETED +RACKETEER +RACKETEERED +RACKETEERING +RACKETEERS +RACKETIER +RACKETIEST +RACKETING +RACKETS +RACKETY +RACKFUL +RACKFULS +RACKING +RACKINGLY +RACKLE +RACKS +RACKWORK +RACKWORKS +RACLETTE +RACLETTES +RACON +RACONS +RACONTEUR +RACONTEURS +RACOON +RACOONS +RACQUET +RACQUETBALL +RACQUETBALLS +RACQUETS +RACY +RAD +RADAR +RADARS +RADARSCOPE +RADARSCOPES +RADDED +RADDING +RADDLE +RADDLED +RADDLES +RADDLING +RADIABLE +RADIAL +RADIALE +RADIALIA +RADIALLY +RADIALS +RADIAN +RADIANCE +RADIANCES +RADIANCIES +RADIANCY +RADIANS +RADIANT +RADIANTLY +RADIANTS +RADIATE +RADIATED +RADIATELY +RADIATES +RADIATING +RADIATION +RADIATIONAL +RADIATIONLESS +RADIATIONS +RADIATIVE +RADIATOR +RADIATORS +RADICAL +RADICALISE +RADICALISED +RADICALISES +RADICALISING +RADICALISM +RADICALISMS +RADICALIZATION +RADICALIZATIONS +RADICALIZE +RADICALIZED +RADICALIZES +RADICALIZING +RADICALLY +RADICALNESS +RADICALNESSES +RADICALS +RADICAND +RADICANDS +RADICATE +RADICATED +RADICATES +RADICATING +RADICCHIO +RADICCHIOS +RADICEL +RADICELS +RADICES +RADICLE +RADICLES +RADICULAR +RADII +RADIO +RADIOACTIVE +RADIOACTIVELY +RADIOACTIVITIES +RADIOACTIVITY +RADIOAUTOGRAPH +RADIOAUTOGRAPHS +RADIOAUTOGRAPHY +RADIOBIOLOGIC +RADIOBIOLOGICAL +RADIOBIOLOGIES +RADIOBIOLOGIST +RADIOBIOLOGISTS +RADIOBIOLOGY +RADIOCARBON +RADIOCARBONS +RADIOCHEMICAL +RADIOCHEMICALLY +RADIOCHEMIST +RADIOCHEMISTRY +RADIOCHEMISTS +RADIOECOLOGIES +RADIOECOLOGY +RADIOED +RADIOELEMENT +RADIOELEMENTS +RADIOGENIC +RADIOGRAM +RADIOGRAMS +RADIOGRAPH +RADIOGRAPHED +RADIOGRAPHIC +RADIOGRAPHIES +RADIOGRAPHING +RADIOGRAPHS +RADIOGRAPHY +RADIOING +RADIOISOTOPE +RADIOISOTOPES +RADIOISOTOPIC +RADIOLABEL +RADIOLABELED +RADIOLABELING +RADIOLABELLED +RADIOLABELLING +RADIOLABELS +RADIOLARIAN +RADIOLARIANS +RADIOLOGIC +RADIOLOGICAL +RADIOLOGICALLY +RADIOLOGIES +RADIOLOGIST +RADIOLOGISTS +RADIOLOGY +RADIOLUCENCIES +RADIOLUCENCY +RADIOLUCENT +RADIOLYSES +RADIOLYSIS +RADIOLYTIC +RADIOMAN +RADIOMEN +RADIOMETER +RADIOMETERS +RADIOMETRIC +RADIOMETRICALLY +RADIOMETRIES +RADIOMETRY +RADIOMIMETIC +RADIONICS +RADIONUCLIDE +RADIONUCLIDES +RADIOPAQUE +RADIOPHONE +RADIOPHONES +RADIOPHOTO +RADIOPHOTOS +RADIOPROTECTION +RADIOPROTECTIVE +RADIOS +RADIOSENSITIVE +RADIOSONDE +RADIOSONDES +RADIOSTRONTIUM +RADIOSTRONTIUMS +RADIOTELEGRAPH +RADIOTELEGRAPHS +RADIOTELEGRAPHY +RADIOTELEMETRIC +RADIOTELEMETRY +RADIOTELEPHONE +RADIOTELEPHONES +RADIOTELEPHONY +RADIOTHERAPIES +RADIOTHERAPIST +RADIOTHERAPISTS +RADIOTHERAPY +RADIOTHORIUM +RADIOTHORIUMS +RADIOTRACER +RADIOTRACERS +RADISH +RADISHES +RADIUM +RADIUMS +RADIUS +RADIUSES +RADIX +RADIXES +RADOME +RADOMES +RADON +RADONS +RADS +RADULA +RADULAE +RADULAR +RADULAS +RADWASTE +RADWASTES +RAFF +RAFFIA +RAFFIAS +RAFFINATE +RAFFINATES +RAFFINOSE +RAFFINOSES +RAFFISH +RAFFISHLY +RAFFISHNESS +RAFFISHNESSES +RAFFLE +RAFFLED +RAFFLER +RAFFLERS +RAFFLES +RAFFLESIA +RAFFLESIAS +RAFFLING +RAFFS +RAFT +RAFTED +RAFTER +RAFTERED +RAFTERS +RAFTING +RAFTS +RAFTSMAN +RAFTSMEN +RAG +RAGA +RAGAMUFFIN +RAGAMUFFINS +RAGAS +RAGBAG +RAGBAGS +RAGE +RAGED +RAGEE +RAGEES +RAGES +RAGG +RAGGED +RAGGEDER +RAGGEDEST +RAGGEDIER +RAGGEDIEST +RAGGEDLY +RAGGEDNESS +RAGGEDNESSES +RAGGEDY +RAGGEE +RAGGEES +RAGGIES +RAGGING +RAGGLE +RAGGLES +RAGGS +RAGGY +RAGI +RAGING +RAGINGLY +RAGIS +RAGLAN +RAGLANS +RAGMAN +RAGMEN +RAGOUT +RAGOUTED +RAGOUTING +RAGOUTS +RAGPICKER +RAGPICKERS +RAGS +RAGTAG +RAGTAGS +RAGTIME +RAGTIMES +RAGTOP +RAGTOPS +RAGWEED +RAGWEEDS +RAGWORT +RAGWORTS +RAH +RAI +RAIA +RAIAS +RAID +RAIDED +RAIDER +RAIDERS +RAIDING +RAIDS +RAIL +RAILBIRD +RAILBIRDS +RAILBUS +RAILBUSES +RAILBUSSES +RAILCAR +RAILCARS +RAILED +RAILER +RAILERS +RAILHEAD +RAILHEADS +RAILING +RAILINGS +RAILLERIES +RAILLERY +RAILROAD +RAILROADED +RAILROADER +RAILROADERS +RAILROADING +RAILROADINGS +RAILROADS +RAILS +RAILWAY +RAILWAYS +RAIMENT +RAIMENTS +RAIN +RAINBAND +RAINBANDS +RAINBIRD +RAINBIRDS +RAINBOW +RAINBOWLIKE +RAINBOWS +RAINCHECK +RAINCHECKS +RAINCOAT +RAINCOATS +RAINDROP +RAINDROPS +RAINED +RAINFALL +RAINFALLS +RAINIER +RAINIEST +RAINILY +RAININESS +RAININESSES +RAINING +RAINLESS +RAINMAKER +RAINMAKERS +RAINMAKING +RAINMAKINGS +RAINOUT +RAINOUTS +RAINPROOF +RAINPROOFED +RAINPROOFING +RAINPROOFS +RAINS +RAINSPOUT +RAINSPOUTS +RAINSQUALL +RAINSQUALLS +RAINSTORM +RAINSTORMS +RAINWASH +RAINWASHED +RAINWASHES +RAINWASHING +RAINWATER +RAINWATERS +RAINWEAR +RAINY +RAIS +RAISABLE +RAISE +RAISEABLE +RAISED +RAISER +RAISERS +RAISES +RAISIN +RAISING +RAISINGS +RAISINS +RAISINY +RAISONNE +RAITA +RAITAS +RAJ +RAJA +RAJAH +RAJAHS +RAJAS +RAJES +RAKE +RAKED +RAKEE +RAKEES +RAKEHELL +RAKEHELLS +RAKEHELLY +RAKEOFF +RAKEOFFS +RAKER +RAKERS +RAKES +RAKI +RAKING +RAKIS +RAKISH +RAKISHLY +RAKISHNESS +RAKISHNESSES +RAKU +RAKUS +RALE +RALES +RALLENTANDO +RALLIED +RALLIER +RALLIERS +RALLIES +RALLIFORM +RALLINE +RALLY +RALLYE +RALLYES +RALLYING +RALLYINGS +RALLYIST +RALLYISTS +RALPH +RALPHED +RALPHING +RALPHS +RAM +RAMADA +RAMADAS +RAMAL +RAMATE +RAMBLA +RAMBLAS +RAMBLE +RAMBLED +RAMBLER +RAMBLERS +RAMBLES +RAMBLING +RAMBLINGLY +RAMBOUILLET +RAMBOUILLETS +RAMBUNCTIOUS +RAMBUNCTIOUSLY +RAMBUTAN +RAMBUTANS +RAMEE +RAMEES +RAMEKIN +RAMEKINS +RAMEN +RAMENTA +RAMENTUM +RAMEQUIN +RAMEQUINS +RAMET +RAMETS +RAMI +RAMIE +RAMIES +RAMIFICATION +RAMIFICATIONS +RAMIFIED +RAMIFIES +RAMIFORM +RAMIFY +RAMIFYING +RAMILIE +RAMILIES +RAMILLIE +RAMILLIES +RAMJET +RAMJETS +RAMMED +RAMMER +RAMMERS +RAMMIER +RAMMIEST +RAMMING +RAMMISH +RAMMY +RAMONA +RAMONAS +RAMOSE +RAMOSELY +RAMOSITIES +RAMOSITY +RAMOUS +RAMP +RAMPAGE +RAMPAGED +RAMPAGEOUS +RAMPAGEOUSLY +RAMPAGEOUSNESS +RAMPAGER +RAMPAGERS +RAMPAGES +RAMPAGING +RAMPANCIES +RAMPANCY +RAMPANT +RAMPANTLY +RAMPART +RAMPARTED +RAMPARTING +RAMPARTS +RAMPED +RAMPIKE +RAMPIKES +RAMPING +RAMPION +RAMPIONS +RAMPOLE +RAMPOLES +RAMPS +RAMROD +RAMRODDED +RAMRODDING +RAMRODS +RAMS +RAMSHACKLE +RAMSHORN +RAMSHORNS +RAMSON +RAMSONS +RAMTIL +RAMTILLA +RAMTILLAS +RAMTILS +RAMULOSE +RAMULOUS +RAMUS +RAN +RANCE +RANCES +RANCH +RANCHED +RANCHER +RANCHERIA +RANCHERIAS +RANCHERO +RANCHEROS +RANCHERS +RANCHES +RANCHING +RANCHLESS +RANCHLIKE +RANCHMAN +RANCHMEN +RANCHO +RANCHOS +RANCID +RANCIDITIES +RANCIDITY +RANCIDLY +RANCIDNESS +RANCIDNESSES +RANCOR +RANCORED +RANCOROUS +RANCOROUSLY +RANCORS +RANCOUR +RANCOURED +RANCOURS +RAND +RANDAN +RANDANS +RANDIER +RANDIES +RANDIEST +RANDINESS +RANDINESSES +RANDOM +RANDOMIZATION +RANDOMIZATIONS +RANDOMIZE +RANDOMIZED +RANDOMIZER +RANDOMIZERS +RANDOMIZES +RANDOMIZING +RANDOMLY +RANDOMNESS +RANDOMNESSES +RANDOMS +RANDS +RANDY +RANEE +RANEES +RANG +RANGE +RANGED +RANGELAND +RANGELANDS +RANGER +RANGERS +RANGES +RANGIER +RANGIEST +RANGINESS +RANGINESSES +RANGING +RANGY +RANI +RANID +RANIDS +RANIS +RANK +RANKED +RANKER +RANKERS +RANKEST +RANKING +RANKINGS +RANKISH +RANKLE +RANKLED +RANKLES +RANKLESS +RANKLING +RANKLY +RANKNESS +RANKNESSES +RANKS +RANPIKE +RANPIKES +RANSACK +RANSACKED +RANSACKER +RANSACKERS +RANSACKING +RANSACKS +RANSOM +RANSOMED +RANSOMER +RANSOMERS +RANSOMING +RANSOMS +RANT +RANTED +RANTER +RANTERS +RANTING +RANTINGLY +RANTS +RANULA +RANULAR +RANULAS +RANUNCULI +RANUNCULUS +RANUNCULUSES +RAP +RAPACIOUS +RAPACIOUSLY +RAPACIOUSNESS +RAPACIOUSNESSES +RAPACITIES +RAPACITY +RAPE +RAPED +RAPER +RAPERS +RAPES +RAPESEED +RAPESEEDS +RAPHAE +RAPHE +RAPHES +RAPHIA +RAPHIAS +RAPHIDE +RAPHIDES +RAPHIS +RAPID +RAPIDER +RAPIDEST +RAPIDITIES +RAPIDITY +RAPIDLY +RAPIDNESS +RAPIDNESSES +RAPIDS +RAPIER +RAPIERED +RAPIERS +RAPINE +RAPINES +RAPING +RAPINI +RAPIST +RAPISTS +RAPPAREE +RAPPAREES +RAPPED +RAPPEE +RAPPEES +RAPPEL +RAPPELED +RAPPELING +RAPPELLED +RAPPELLING +RAPPELS +RAPPEN +RAPPER +RAPPERS +RAPPING +RAPPINI +RAPPORT +RAPPORTEUR +RAPPORTEURS +RAPPORTS +RAPPROCHEMENT +RAPPROCHEMENTS +RAPS +RAPSCALLION +RAPSCALLIONS +RAPT +RAPTLY +RAPTNESS +RAPTNESSES +RAPTOR +RAPTORIAL +RAPTORS +RAPTURE +RAPTURED +RAPTURES +RAPTURING +RAPTUROUS +RAPTUROUSLY +RAPTUROUSNESS +RAPTUROUSNESSES +RARE +RAREBIT +RAREBITS +RARED +RAREFACTION +RAREFACTIONAL +RAREFACTIONS +RAREFIED +RAREFIER +RAREFIERS +RAREFIES +RAREFY +RAREFYING +RARELY +RARENESS +RARENESSES +RARER +RARERIPE +RARERIPES +RARES +RAREST +RARIFIED +RARIFIES +RARIFY +RARIFYING +RARING +RARITIES +RARITY +RAS +RASBORA +RASBORAS +RASCAL +RASCALITIES +RASCALITY +RASCALLY +RASCALS +RASE +RASED +RASER +RASERS +RASES +RASH +RASHER +RASHERS +RASHES +RASHEST +RASHLIKE +RASHLY +RASHNESS +RASHNESSES +RASING +RASORIAL +RASP +RASPBERRIES +RASPBERRY +RASPED +RASPER +RASPERS +RASPIER +RASPIEST +RASPINESS +RASPINESSES +RASPING +RASPINGLY +RASPINGS +RASPISH +RASPS +RASPY +RASSLE +RASSLED +RASSLES +RASSLING +RASTER +RASTERS +RASURE +RASURES +RAT +RATABLE +RATABLES +RATABLY +RATAFEE +RATAFEES +RATAFIA +RATAFIAS +RATAL +RATALS +RATAN +RATANIES +RATANS +RATANY +RATAPLAN +RATAPLANNED +RATAPLANNING +RATAPLANS +RATATAT +RATATATS +RATATOUILLE +RATATOUILLES +RATBAG +RATBAGS +RATCH +RATCHES +RATCHET +RATCHETED +RATCHETING +RATCHETS +RATE +RATEABLE +RATEABLY +RATED +RATEL +RATELS +RATEMETER +RATEMETERS +RATEPAYER +RATEPAYERS +RATER +RATERS +RATES +RATFINK +RATFINKS +RATFISH +RATFISHES +RATH +RATHE +RATHER +RATHOLE +RATHOLES +RATHSKELLER +RATHSKELLERS +RATICIDE +RATICIDES +RATIFICATION +RATIFICATIONS +RATIFIED +RATIFIER +RATIFIERS +RATIFIES +RATIFY +RATIFYING +RATINE +RATINES +RATING +RATINGS +RATIO +RATIOCINATE +RATIOCINATED +RATIOCINATES +RATIOCINATING +RATIOCINATION +RATIOCINATIONS +RATIOCINATIVE +RATIOCINATOR +RATIOCINATORS +RATION +RATIONAL +RATIONALE +RATIONALES +RATIONALISE +RATIONALISED +RATIONALISES +RATIONALISING +RATIONALISM +RATIONALISMS +RATIONALIST +RATIONALISTIC +RATIONALISTS +RATIONALITIES +RATIONALITY +RATIONALIZABLE +RATIONALIZATION +RATIONALIZE +RATIONALIZED +RATIONALIZER +RATIONALIZERS +RATIONALIZES +RATIONALIZING +RATIONALLY +RATIONALNESS +RATIONALNESSES +RATIONALS +RATIONED +RATIONING +RATIONS +RATIOS +RATITE +RATITES +RATLIKE +RATLIN +RATLINE +RATLINES +RATLINS +RATO +RATOON +RATOONED +RATOONER +RATOONERS +RATOONING +RATOONS +RATOS +RATS +RATSBANE +RATSBANES +RATTAIL +RATTAILED +RATTAILS +RATTAN +RATTANS +RATTED +RATTEEN +RATTEENS +RATTEN +RATTENED +RATTENER +RATTENERS +RATTENING +RATTENS +RATTER +RATTERS +RATTIER +RATTIEST +RATTING +RATTISH +RATTLE +RATTLEBOX +RATTLEBOXES +RATTLEBRAIN +RATTLEBRAINED +RATTLEBRAINS +RATTLED +RATTLER +RATTLERS +RATTLES +RATTLESNAKE +RATTLESNAKES +RATTLETRAP +RATTLETRAPS +RATTLING +RATTLINGLY +RATTLINGS +RATTLY +RATTON +RATTONS +RATTOON +RATTOONED +RATTOONING +RATTOONS +RATTRAP +RATTRAPS +RATTY +RAUCITIES +RAUCITY +RAUCOUS +RAUCOUSLY +RAUCOUSNESS +RAUCOUSNESSES +RAUNCH +RAUNCHES +RAUNCHIER +RAUNCHIEST +RAUNCHILY +RAUNCHINESS +RAUNCHINESSES +RAUNCHY +RAUWOLFIA +RAUWOLFIAS +RAVAGE +RAVAGED +RAVAGEMENT +RAVAGEMENTS +RAVAGER +RAVAGERS +RAVAGES +RAVAGING +RAVE +RAVED +RAVEL +RAVELED +RAVELER +RAVELERS +RAVELIN +RAVELING +RAVELINGS +RAVELINS +RAVELLED +RAVELLER +RAVELLERS +RAVELLING +RAVELLINGS +RAVELLY +RAVELMENT +RAVELMENTS +RAVELS +RAVEN +RAVENED +RAVENER +RAVENERS +RAVENING +RAVENINGS +RAVENLIKE +RAVENOUS +RAVENOUSLY +RAVENOUSNESS +RAVENOUSNESSES +RAVENS +RAVER +RAVERS +RAVES +RAVIGOTE +RAVIGOTES +RAVIGOTTE +RAVIGOTTES +RAVIN +RAVINE +RAVINED +RAVINES +RAVING +RAVINGLY +RAVINGS +RAVINING +RAVINS +RAVIOLI +RAVIOLIS +RAVISH +RAVISHED +RAVISHER +RAVISHERS +RAVISHES +RAVISHING +RAVISHINGLY +RAVISHMENT +RAVISHMENTS +RAW +RAWBONED +RAWER +RAWEST +RAWHIDE +RAWHIDED +RAWHIDES +RAWHIDING +RAWIN +RAWINS +RAWINSONDE +RAWINSONDES +RAWISH +RAWLY +RAWNESS +RAWNESSES +RAWS +RAX +RAXED +RAXES +RAXING +RAY +RAYA +RAYAH +RAYAHS +RAYAS +RAYED +RAYGRASS +RAYGRASSES +RAYING +RAYLESS +RAYLESSNESS +RAYLESSNESSES +RAYLIKE +RAYON +RAYONS +RAYS +RAZE +RAZED +RAZEE +RAZEED +RAZEEING +RAZEES +RAZER +RAZERS +RAZES +RAZING +RAZOR +RAZORBACK +RAZORBACKS +RAZORBILL +RAZORBILLS +RAZORED +RAZORING +RAZORS +RAZZ +RAZZAMATAZZ +RAZZAMATAZZES +RAZZBERRIES +RAZZBERRY +RAZZED +RAZZES +RAZZING +RAZZMATAZZ +RAZZMATAZZES +RE +REABSORB +REABSORBED +REABSORBING +REABSORBS +REACCEDE +REACCEDED +REACCEDES +REACCEDING +REACCELERATE +REACCELERATED +REACCELERATES +REACCELERATING +REACCENT +REACCENTED +REACCENTING +REACCENTS +REACCEPT +REACCEPTED +REACCEPTING +REACCEPTS +REACCESSION +REACCESSIONS +REACCLAIM +REACCLAIMED +REACCLAIMING +REACCLAIMS +REACCLIMATIZE +REACCLIMATIZED +REACCLIMATIZES +REACCLIMATIZING +REACCREDIT +REACCREDITATION +REACCREDITED +REACCREDITING +REACCREDITS +REACCUSE +REACCUSED +REACCUSES +REACCUSING +REACH +REACHABLE +REACHED +REACHER +REACHERS +REACHES +REACHING +REACQUAINT +REACQUAINTED +REACQUAINTING +REACQUAINTS +REACQUIRE +REACQUIRED +REACQUIRES +REACQUIRING +REACQUISITION +REACQUISITIONS +REACT +REACTANCE +REACTANCES +REACTANT +REACTANTS +REACTED +REACTING +REACTION +REACTIONARIES +REACTIONARY +REACTIONARYISM +REACTIONARYISMS +REACTIONS +REACTIVATE +REACTIVATED +REACTIVATES +REACTIVATING +REACTIVATION +REACTIVATIONS +REACTIVE +REACTIVELY +REACTIVENESS +REACTIVENESSES +REACTIVITIES +REACTIVITY +REACTOR +REACTORS +REACTS +READ +READABILITIES +READABILITY +READABLE +READABLENESS +READABLENESSES +READABLY +READAPT +READAPTED +READAPTING +READAPTS +READD +READDED +READDICT +READDICTED +READDICTING +READDICTS +READDING +READDRESS +READDRESSED +READDRESSES +READDRESSING +READDS +READER +READERLY +READERS +READERSHIP +READERSHIPS +READIED +READIER +READIES +READIEST +READILY +READINESS +READINESSES +READING +READINGS +READJUST +READJUSTED +READJUSTING +READJUSTMENT +READJUSTMENTS +READJUSTS +READMISSION +READMISSIONS +READMIT +READMITS +READMITTED +READMITTING +READOPT +READOPTED +READOPTING +READOPTS +READORN +READORNED +READORNING +READORNS +READOUT +READOUTS +READS +READY +READYING +READYMADE +READYMADES +REAFFIRM +REAFFIRMATION +REAFFIRMATIONS +REAFFIRMED +REAFFIRMING +REAFFIRMS +REAFFIX +REAFFIXED +REAFFIXES +REAFFIXING +REAFFOREST +REAFFORESTATION +REAFFORESTED +REAFFORESTING +REAFFORESTS +REAGENT +REAGENTS +REAGGREGATE +REAGGREGATED +REAGGREGATES +REAGGREGATING +REAGGREGATION +REAGGREGATIONS +REAGIN +REAGINIC +REAGINS +REAL +REALER +REALES +REALEST +REALGAR +REALGARS +REALIA +REALIGN +REALIGNED +REALIGNING +REALIGNMENT +REALIGNMENTS +REALIGNS +REALISE +REALISED +REALISER +REALISERS +REALISES +REALISING +REALISM +REALISMS +REALIST +REALISTIC +REALISTICALLY +REALISTS +REALITIES +REALITY +REALIZABLE +REALIZATION +REALIZATIONS +REALIZE +REALIZED +REALIZER +REALIZERS +REALIZES +REALIZING +REALLOCATE +REALLOCATED +REALLOCATES +REALLOCATING +REALLOCATION +REALLOCATIONS +REALLOT +REALLOTS +REALLOTTED +REALLOTTING +REALLY +REALM +REALMS +REALNESS +REALNESSES +REALPOLITIK +REALPOLITIKS +REALS +REALTER +REALTERED +REALTERING +REALTERS +REALTIES +REALTOR +REALTORS +REALTY +REAM +REAMED +REAMER +REAMERS +REAMING +REAMS +REANALYSES +REANALYSIS +REANALYZE +REANALYZED +REANALYZES +REANALYZING +REANIMATE +REANIMATED +REANIMATES +REANIMATING +REANIMATION +REANIMATIONS +REANNEX +REANNEXATION +REANNEXATIONS +REANNEXED +REANNEXES +REANNEXING +REANOINT +REANOINTED +REANOINTING +REANOINTS +REAP +REAPABLE +REAPED +REAPER +REAPERS +REAPHOOK +REAPHOOKS +REAPING +REAPPEAR +REAPPEARANCE +REAPPEARANCES +REAPPEARED +REAPPEARING +REAPPEARS +REAPPLICATION +REAPPLICATIONS +REAPPLIED +REAPPLIES +REAPPLY +REAPPLYING +REAPPOINT +REAPPOINTED +REAPPOINTING +REAPPOINTMENT +REAPPOINTMENTS +REAPPOINTS +REAPPORTION +REAPPORTIONED +REAPPORTIONING +REAPPORTIONMENT +REAPPORTIONS +REAPPRAISAL +REAPPRAISALS +REAPPRAISE +REAPPRAISED +REAPPRAISES +REAPPRAISING +REAPPROPRIATE +REAPPROPRIATED +REAPPROPRIATES +REAPPROPRIATING +REAPPROVE +REAPPROVED +REAPPROVES +REAPPROVING +REAPS +REAR +REARED +REARER +REARERS +REARGUARD +REARGUE +REARGUED +REARGUES +REARGUING +REARGUMENT +REARGUMENTS +REARING +REARM +REARMAMENT +REARMAMENTS +REARMED +REARMICE +REARMING +REARMOST +REARMOUSE +REARMS +REAROUSAL +REAROUSALS +REAROUSE +REAROUSED +REAROUSES +REAROUSING +REARRANGE +REARRANGED +REARRANGEMENT +REARRANGEMENTS +REARRANGES +REARRANGING +REARREST +REARRESTED +REARRESTING +REARRESTS +REARS +REARTICULATE +REARTICULATED +REARTICULATES +REARTICULATING +REARWARD +REARWARDS +REASCEND +REASCENDED +REASCENDING +REASCENDS +REASCENT +REASCENTS +REASON +REASONABILITIES +REASONABILITY +REASONABLE +REASONABLENESS +REASONABLY +REASONED +REASONER +REASONERS +REASONING +REASONINGS +REASONLESS +REASONLESSLY +REASONS +REASSAIL +REASSAILED +REASSAILING +REASSAILS +REASSEMBLAGE +REASSEMBLAGES +REASSEMBLE +REASSEMBLED +REASSEMBLES +REASSEMBLIES +REASSEMBLING +REASSEMBLY +REASSERT +REASSERTED +REASSERTING +REASSERTION +REASSERTIONS +REASSERTS +REASSESS +REASSESSED +REASSESSES +REASSESSING +REASSESSMENT +REASSESSMENTS +REASSIGN +REASSIGNED +REASSIGNING +REASSIGNMENT +REASSIGNMENTS +REASSIGNS +REASSORT +REASSORTED +REASSORTING +REASSORTS +REASSUME +REASSUMED +REASSUMES +REASSUMING +REASSURANCE +REASSURANCES +REASSURE +REASSURED +REASSURES +REASSURING +REASSURINGLY +REATA +REATAS +REATTACH +REATTACHED +REATTACHES +REATTACHING +REATTACHMENT +REATTACHMENTS +REATTACK +REATTACKED +REATTACKING +REATTACKS +REATTAIN +REATTAINED +REATTAINING +REATTAINS +REATTEMPT +REATTEMPTED +REATTEMPTING +REATTEMPTS +REATTRIBUTE +REATTRIBUTED +REATTRIBUTES +REATTRIBUTING +REATTRIBUTION +REATTRIBUTIONS +REAUTHORIZATION +REAUTHORIZE +REAUTHORIZED +REAUTHORIZES +REAUTHORIZING +REAVAIL +REAVAILED +REAVAILING +REAVAILS +REAVE +REAVED +REAVER +REAVERS +REAVES +REAVING +REAVOW +REAVOWED +REAVOWING +REAVOWS +REAWAKE +REAWAKED +REAWAKEN +REAWAKENED +REAWAKENING +REAWAKENS +REAWAKES +REAWAKING +REAWOKE +REAWOKEN +REB +REBAIT +REBAITED +REBAITING +REBAITS +REBALANCE +REBALANCED +REBALANCES +REBALANCING +REBAPTISM +REBAPTISMS +REBAPTIZE +REBAPTIZED +REBAPTIZES +REBAPTIZING +REBAR +REBARBATIVE +REBARBATIVELY +REBARS +REBATE +REBATED +REBATER +REBATERS +REBATES +REBATING +REBATO +REBATOS +REBBE +REBBES +REBBETZIN +REBBETZINS +REBEC +REBECK +REBECKS +REBECS +REBEGAN +REBEGIN +REBEGINNING +REBEGINS +REBEGUN +REBEL +REBELDOM +REBELDOMS +REBELLED +REBELLING +REBELLION +REBELLIONS +REBELLIOUS +REBELLIOUSLY +REBELLIOUSNESS +REBELS +REBID +REBIDDEN +REBIDDING +REBIDS +REBILL +REBILLED +REBILLING +REBILLS +REBIND +REBINDING +REBINDS +REBIRTH +REBIRTHS +REBLEND +REBLENDED +REBLENDING +REBLENDS +REBLENT +REBLOOM +REBLOOMED +REBLOOMING +REBLOOMS +REBOANT +REBOARD +REBOARDED +REBOARDING +REBOARDS +REBODIED +REBODIES +REBODY +REBODYING +REBOIL +REBOILED +REBOILING +REBOILS +REBOOK +REBOOKED +REBOOKING +REBOOKS +REBOOT +REBOOTED +REBOOTING +REBOOTS +REBOP +REBOPS +REBORE +REBORED +REBORES +REBORING +REBORN +REBOTTLE +REBOTTLED +REBOTTLES +REBOTTLING +REBOUGHT +REBOUND +REBOUNDED +REBOUNDER +REBOUNDERS +REBOUNDING +REBOUNDS +REBOZO +REBOZOS +REBRANCH +REBRANCHED +REBRANCHES +REBRANCHING +REBRED +REBREED +REBREEDING +REBREEDS +REBROADCAST +REBROADCASTING +REBROADCASTS +REBS +REBUFF +REBUFFED +REBUFFING +REBUFFS +REBUILD +REBUILDED +REBUILDING +REBUILDS +REBUILT +REBUKE +REBUKED +REBUKER +REBUKERS +REBUKES +REBUKING +REBURIAL +REBURIALS +REBURIED +REBURIES +REBURY +REBURYING +REBUS +REBUSES +REBUT +REBUTS +REBUTTABLE +REBUTTAL +REBUTTALS +REBUTTED +REBUTTER +REBUTTERS +REBUTTING +REBUTTON +REBUTTONED +REBUTTONING +REBUTTONS +REBUY +REBUYING +REBUYS +REC +RECALCITRANCE +RECALCITRANCES +RECALCITRANCIES +RECALCITRANCY +RECALCITRANT +RECALCITRANTS +RECALCULATE +RECALCULATED +RECALCULATES +RECALCULATING +RECALCULATION +RECALCULATIONS +RECALIBRATE +RECALIBRATED +RECALIBRATES +RECALIBRATING +RECALIBRATION +RECALIBRATIONS +RECALL +RECALLABILITIES +RECALLABILITY +RECALLABLE +RECALLED +RECALLER +RECALLERS +RECALLING +RECALLS +RECAMIER +RECAMIERS +RECANALIZATION +RECANALIZATIONS +RECANALIZE +RECANALIZED +RECANALIZES +RECANALIZING +RECANE +RECANED +RECANES +RECANING +RECANT +RECANTATION +RECANTATIONS +RECANTED +RECANTER +RECANTERS +RECANTING +RECANTS +RECAP +RECAPITALIZE +RECAPITALIZED +RECAPITALIZES +RECAPITALIZING +RECAPITULATE +RECAPITULATED +RECAPITULATES +RECAPITULATING +RECAPITULATION +RECAPITULATIONS +RECAPPABLE +RECAPPED +RECAPPING +RECAPS +RECAPTURE +RECAPTURED +RECAPTURES +RECAPTURING +RECARPET +RECARPETED +RECARPETING +RECARPETS +RECARRIED +RECARRIES +RECARRY +RECARRYING +RECAST +RECASTING +RECASTS +RECATALOG +RECATALOGED +RECATALOGING +RECATALOGS +RECAUTION +RECAUTIONED +RECAUTIONING +RECAUTIONS +RECCE +RECCES +RECEDE +RECEDED +RECEDES +RECEDING +RECEIPT +RECEIPTED +RECEIPTING +RECEIPTOR +RECEIPTORS +RECEIPTS +RECEIVABLE +RECEIVABLES +RECEIVE +RECEIVED +RECEIVER +RECEIVERS +RECEIVERSHIP +RECEIVERSHIPS +RECEIVES +RECEIVING +RECEMENT +RECEMENTED +RECEMENTING +RECEMENTS +RECENCIES +RECENCY +RECENSION +RECENSIONS +RECENSOR +RECENSORED +RECENSORING +RECENSORS +RECENT +RECENTER +RECENTEST +RECENTLY +RECENTNESS +RECENTNESSES +RECENTRIFUGE +RECENTRIFUGED +RECENTRIFUGES +RECENTRIFUGING +RECEPT +RECEPTACLE +RECEPTACLES +RECEPTION +RECEPTIONIST +RECEPTIONISTS +RECEPTIONS +RECEPTIVE +RECEPTIVELY +RECEPTIVENESS +RECEPTIVENESSES +RECEPTIVITIES +RECEPTIVITY +RECEPTOR +RECEPTORS +RECEPTS +RECERTIFICATION +RECERTIFIED +RECERTIFIES +RECERTIFY +RECERTIFYING +RECESS +RECESSED +RECESSES +RECESSING +RECESSION +RECESSIONAL +RECESSIONALS +RECESSIONARY +RECESSIONS +RECESSIVE +RECESSIVELY +RECESSIVENESS +RECESSIVENESSES +RECESSIVES +RECHALLENGE +RECHALLENGED +RECHALLENGES +RECHALLENGING +RECHANGE +RECHANGED +RECHANGES +RECHANGING +RECHANNEL +RECHANNELED +RECHANNELING +RECHANNELLED +RECHANNELLING +RECHANNELS +RECHARGE +RECHARGEABLE +RECHARGED +RECHARGER +RECHARGERS +RECHARGES +RECHARGING +RECHART +RECHARTED +RECHARTER +RECHARTERED +RECHARTERING +RECHARTERS +RECHARTING +RECHARTS +RECHAUFFE +RECHAUFFES +RECHEAT +RECHEATS +RECHECK +RECHECKED +RECHECKING +RECHECKS +RECHERCHE +RECHEW +RECHEWED +RECHEWING +RECHEWS +RECHOOSE +RECHOOSES +RECHOOSING +RECHOREOGRAPH +RECHOREOGRAPHED +RECHOREOGRAPHS +RECHOSE +RECHOSEN +RECHRISTEN +RECHRISTENED +RECHRISTENING +RECHRISTENS +RECHROMATOGRAPH +RECIDIVISM +RECIDIVISMS +RECIDIVIST +RECIDIVISTIC +RECIDIVISTS +RECIPE +RECIPES +RECIPIENT +RECIPIENTS +RECIPROCAL +RECIPROCALLY +RECIPROCALS +RECIPROCATE +RECIPROCATED +RECIPROCATES +RECIPROCATING +RECIPROCATION +RECIPROCATIONS +RECIPROCATIVE +RECIPROCATOR +RECIPROCATORS +RECIPROCITIES +RECIPROCITY +RECIRCLE +RECIRCLED +RECIRCLES +RECIRCLING +RECIRCULATE +RECIRCULATED +RECIRCULATES +RECIRCULATING +RECIRCULATION +RECIRCULATIONS +RECISION +RECISIONS +RECIT +RECITAL +RECITALIST +RECITALISTS +RECITALS +RECITATION +RECITATIONS +RECITATIVE +RECITATIVES +RECITATIVI +RECITATIVO +RECITATIVOS +RECITE +RECITED +RECITER +RECITERS +RECITES +RECITING +RECITS +RECK +RECKED +RECKING +RECKLESS +RECKLESSLY +RECKLESSNESS +RECKLESSNESSES +RECKON +RECKONED +RECKONER +RECKONERS +RECKONING +RECKONINGS +RECKONS +RECKS +RECLAD +RECLADDED +RECLADDING +RECLADS +RECLAIM +RECLAIMABLE +RECLAIMED +RECLAIMER +RECLAIMERS +RECLAIMING +RECLAIMS +RECLAMATION +RECLAMATIONS +RECLAME +RECLAMES +RECLASP +RECLASPED +RECLASPING +RECLASPS +RECLASSIFIED +RECLASSIFIES +RECLASSIFY +RECLASSIFYING +RECLEAN +RECLEANED +RECLEANING +RECLEANS +RECLINATE +RECLINE +RECLINED +RECLINER +RECLINERS +RECLINES +RECLINING +RECLOSABLE +RECLOTHE +RECLOTHED +RECLOTHES +RECLOTHING +RECLUSE +RECLUSES +RECLUSION +RECLUSIONS +RECLUSIVE +RECLUSIVELY +RECLUSIVENESS +RECLUSIVENESSES +RECOAL +RECOALED +RECOALING +RECOALS +RECOAT +RECOATED +RECOATING +RECOATS +RECOCK +RECOCKED +RECOCKING +RECOCKS +RECODE +RECODED +RECODES +RECODIFICATION +RECODIFICATIONS +RECODIFIED +RECODIFIES +RECODIFY +RECODIFYING +RECODING +RECOGNISE +RECOGNISED +RECOGNISES +RECOGNISING +RECOGNITION +RECOGNITIONS +RECOGNIZABILITY +RECOGNIZABLE +RECOGNIZABLY +RECOGNIZANCE +RECOGNIZANCES +RECOGNIZE +RECOGNIZED +RECOGNIZER +RECOGNIZERS +RECOGNIZES +RECOGNIZING +RECOIL +RECOILED +RECOILER +RECOILERS +RECOILING +RECOILLESS +RECOILS +RECOIN +RECOINAGE +RECOINAGES +RECOINED +RECOINING +RECOINS +RECOLLECT +RECOLLECTED +RECOLLECTING +RECOLLECTION +RECOLLECTIONS +RECOLLECTS +RECOLONIZATION +RECOLONIZATIONS +RECOLONIZE +RECOLONIZED +RECOLONIZES +RECOLONIZING +RECOLOR +RECOLORED +RECOLORING +RECOLORS +RECOMB +RECOMBED +RECOMBINANT +RECOMBINANTS +RECOMBINATION +RECOMBINATIONAL +RECOMBINATIONS +RECOMBINE +RECOMBINED +RECOMBINES +RECOMBING +RECOMBINING +RECOMBS +RECOMMENCE +RECOMMENCED +RECOMMENCEMENT +RECOMMENCEMENTS +RECOMMENCES +RECOMMENCING +RECOMMEND +RECOMMENDABLE +RECOMMENDATION +RECOMMENDATIONS +RECOMMENDATORY +RECOMMENDED +RECOMMENDER +RECOMMENDERS +RECOMMENDING +RECOMMENDS +RECOMMISSION +RECOMMISSIONED +RECOMMISSIONING +RECOMMISSIONS +RECOMMIT +RECOMMITMENT +RECOMMITMENTS +RECOMMITS +RECOMMITTAL +RECOMMITTALS +RECOMMITTED +RECOMMITTING +RECOMPENSE +RECOMPENSED +RECOMPENSES +RECOMPENSING +RECOMPILATION +RECOMPILATIONS +RECOMPILE +RECOMPILED +RECOMPILES +RECOMPILING +RECOMPOSE +RECOMPOSED +RECOMPOSES +RECOMPOSING +RECOMPOSITION +RECOMPOSITIONS +RECOMPUTATION +RECOMPUTATIONS +RECOMPUTE +RECOMPUTED +RECOMPUTES +RECOMPUTING +RECON +RECONCEIVE +RECONCEIVED +RECONCEIVES +RECONCEIVING +RECONCENTRATE +RECONCENTRATED +RECONCENTRATES +RECONCENTRATING +RECONCENTRATION +RECONCEPTION +RECONCEPTIONS +RECONCEPTUALIZE +RECONCILABILITY +RECONCILABLE +RECONCILE +RECONCILED +RECONCILEMENT +RECONCILEMENTS +RECONCILER +RECONCILERS +RECONCILES +RECONCILIATION +RECONCILIATIONS +RECONCILIATORY +RECONCILING +RECONDENSE +RECONDENSED +RECONDENSES +RECONDENSING +RECONDITE +RECONDITELY +RECONDITENESS +RECONDITENESSES +RECONDITION +RECONDITIONED +RECONDITIONING +RECONDITIONS +RECONDUCT +RECONDUCTED +RECONDUCTING +RECONDUCTS +RECONFER +RECONFERRED +RECONFERRING +RECONFERS +RECONFIGURATION +RECONFIGURE +RECONFIGURED +RECONFIGURES +RECONFIGURING +RECONFINE +RECONFINED +RECONFINES +RECONFINING +RECONFIRM +RECONFIRMATION +RECONFIRMATIONS +RECONFIRMED +RECONFIRMING +RECONFIRMS +RECONNAISSANCE +RECONNAISSANCES +RECONNECT +RECONNECTED +RECONNECTING +RECONNECTION +RECONNECTIONS +RECONNECTS +RECONNED +RECONNING +RECONNOITER +RECONNOITERED +RECONNOITERING +RECONNOITERS +RECONNOITRE +RECONNOITRED +RECONNOITRES +RECONNOITRING +RECONQUER +RECONQUERED +RECONQUERING +RECONQUERS +RECONQUEST +RECONQUESTS +RECONS +RECONSECRATE +RECONSECRATED +RECONSECRATES +RECONSECRATING +RECONSECRATION +RECONSECRATIONS +RECONSIDER +RECONSIDERATION +RECONSIDERED +RECONSIDERING +RECONSIDERS +RECONSIGN +RECONSIGNED +RECONSIGNING +RECONSIGNS +RECONSOLE +RECONSOLED +RECONSOLES +RECONSOLIDATE +RECONSOLIDATED +RECONSOLIDATES +RECONSOLIDATING +RECONSOLING +RECONSTITUTE +RECONSTITUTED +RECONSTITUTES +RECONSTITUTING +RECONSTITUTION +RECONSTITUTIONS +RECONSTRUCT +RECONSTRUCTED +RECONSTRUCTIBLE +RECONSTRUCTING +RECONSTRUCTION +RECONSTRUCTIONS +RECONSTRUCTIVE +RECONSTRUCTOR +RECONSTRUCTORS +RECONSTRUCTS +RECONSULT +RECONSULTED +RECONSULTING +RECONSULTS +RECONTACT +RECONTACTED +RECONTACTING +RECONTACTS +RECONTAMINATE +RECONTAMINATED +RECONTAMINATES +RECONTAMINATING +RECONTAMINATION +RECONTEXTUALIZE +RECONTOUR +RECONTOURED +RECONTOURING +RECONTOURS +RECONVENE +RECONVENED +RECONVENES +RECONVENING +RECONVERSION +RECONVERSIONS +RECONVERT +RECONVERTED +RECONVERTING +RECONVERTS +RECONVEY +RECONVEYANCE +RECONVEYANCES +RECONVEYED +RECONVEYING +RECONVEYS +RECONVICT +RECONVICTED +RECONVICTING +RECONVICTION +RECONVICTIONS +RECONVICTS +RECONVINCE +RECONVINCED +RECONVINCES +RECONVINCING +RECOOK +RECOOKED +RECOOKING +RECOOKS +RECOPIED +RECOPIES +RECOPY +RECOPYING +RECORD +RECORDABLE +RECORDATION +RECORDATIONS +RECORDED +RECORDER +RECORDERS +RECORDING +RECORDINGS +RECORDIST +RECORDISTS +RECORDS +RECORK +RECORKED +RECORKING +RECORKS +RECOUNT +RECOUNTAL +RECOUNTALS +RECOUNTED +RECOUNTER +RECOUNTERS +RECOUNTING +RECOUNTS +RECOUP +RECOUPABLE +RECOUPE +RECOUPED +RECOUPING +RECOUPLE +RECOUPLED +RECOUPLES +RECOUPLING +RECOUPMENT +RECOUPMENTS +RECOUPS +RECOURSE +RECOURSES +RECOVER +RECOVERABILITY +RECOVERABLE +RECOVERED +RECOVERER +RECOVERERS +RECOVERIES +RECOVERING +RECOVERS +RECOVERY +RECRATE +RECRATED +RECRATES +RECRATING +RECREANCE +RECREANCES +RECREANCIES +RECREANCY +RECREANT +RECREANTS +RECREATE +RECREATED +RECREATES +RECREATING +RECREATION +RECREATIONAL +RECREATIONIST +RECREATIONISTS +RECREATIONS +RECREATIVE +RECREMENT +RECREMENTS +RECRIMINATE +RECRIMINATED +RECRIMINATES +RECRIMINATING +RECRIMINATION +RECRIMINATIONS +RECRIMINATIVE +RECRIMINATORY +RECROSS +RECROSSED +RECROSSES +RECROSSING +RECROWN +RECROWNED +RECROWNING +RECROWNS +RECRUDESCE +RECRUDESCED +RECRUDESCENCE +RECRUDESCENCES +RECRUDESCENT +RECRUDESCES +RECRUDESCING +RECRUIT +RECRUITED +RECRUITER +RECRUITERS +RECRUITING +RECRUITMENT +RECRUITMENTS +RECRUITS +RECRYSTALLIZE +RECRYSTALLIZED +RECRYSTALLIZES +RECRYSTALLIZING +RECS +RECTA +RECTAL +RECTALLY +RECTANGLE +RECTANGLES +RECTANGULAR +RECTANGULARITY +RECTANGULARLY +RECTI +RECTIFIABILITY +RECTIFIABLE +RECTIFICATION +RECTIFICATIONS +RECTIFIED +RECTIFIER +RECTIFIERS +RECTIFIES +RECTIFY +RECTIFYING +RECTILINEAR +RECTILINEARLY +RECTITUDE +RECTITUDES +RECTITUDINOUS +RECTO +RECTOCELE +RECTOCELES +RECTOR +RECTORATE +RECTORATES +RECTORIAL +RECTORIES +RECTORS +RECTORSHIP +RECTORSHIPS +RECTORY +RECTOS +RECTRICES +RECTRIX +RECTUM +RECTUMS +RECTUS +RECULTIVATE +RECULTIVATED +RECULTIVATES +RECULTIVATING +RECUMBENCIES +RECUMBENCY +RECUMBENT +RECUPERATE +RECUPERATED +RECUPERATES +RECUPERATING +RECUPERATION +RECUPERATIONS +RECUPERATIVE +RECUR +RECURRED +RECURRENCE +RECURRENCES +RECURRENT +RECURRENTLY +RECURRING +RECURS +RECURSION +RECURSIONS +RECURSIVE +RECURSIVELY +RECURSIVENESS +RECURSIVENESSES +RECURVATE +RECURVE +RECURVED +RECURVES +RECURVING +RECUSAL +RECUSALS +RECUSANCIES +RECUSANCY +RECUSANT +RECUSANTS +RECUSE +RECUSED +RECUSES +RECUSING +RECUT +RECUTS +RECUTTING +RECYCLABLE +RECYCLABLES +RECYCLE +RECYCLED +RECYCLER +RECYCLERS +RECYCLES +RECYCLING +RED +REDACT +REDACTED +REDACTING +REDACTION +REDACTIONAL +REDACTIONS +REDACTOR +REDACTORS +REDACTS +REDAMAGE +REDAMAGED +REDAMAGES +REDAMAGING +REDAN +REDANS +REDARGUE +REDARGUED +REDARGUES +REDARGUING +REDATE +REDATED +REDATES +REDATING +REDBAIT +REDBAITED +REDBAITER +REDBAITERS +REDBAITING +REDBAITS +REDBAY +REDBAYS +REDBIRD +REDBIRDS +REDBONE +REDBONES +REDBREAST +REDBREASTS +REDBRICK +REDBRICKS +REDBUD +REDBUDS +REDBUG +REDBUGS +REDCAP +REDCAPS +REDCOAT +REDCOATS +REDD +REDDED +REDDEN +REDDENED +REDDENING +REDDENS +REDDER +REDDERS +REDDEST +REDDING +REDDISH +REDDISHNESS +REDDISHNESSES +REDDLE +REDDLED +REDDLES +REDDLING +REDDS +REDE +REDEAR +REDEARS +REDECIDE +REDECIDED +REDECIDES +REDECIDING +REDECORATE +REDECORATED +REDECORATES +REDECORATING +REDECORATION +REDECORATIONS +REDECORATOR +REDECORATORS +REDED +REDEDICATE +REDEDICATED +REDEDICATES +REDEDICATING +REDEDICATION +REDEDICATIONS +REDEEM +REDEEMABLE +REDEEMED +REDEEMER +REDEEMERS +REDEEMING +REDEEMS +REDEFEAT +REDEFEATED +REDEFEATING +REDEFEATS +REDEFECT +REDEFECTED +REDEFECTING +REDEFECTS +REDEFIED +REDEFIES +REDEFINE +REDEFINED +REDEFINES +REDEFINING +REDEFINITION +REDEFINITIONS +REDEFY +REDEFYING +REDELIVER +REDELIVERED +REDELIVERIES +REDELIVERING +REDELIVERS +REDELIVERY +REDEMAND +REDEMANDED +REDEMANDING +REDEMANDS +REDEMPTION +REDEMPTIONER +REDEMPTIONERS +REDEMPTIONS +REDEMPTIVE +REDEMPTORY +REDENIED +REDENIES +REDENY +REDENYING +REDEPLOY +REDEPLOYED +REDEPLOYING +REDEPLOYMENT +REDEPLOYMENTS +REDEPLOYS +REDEPOSIT +REDEPOSITED +REDEPOSITING +REDEPOSITS +REDES +REDESCEND +REDESCENDED +REDESCENDING +REDESCENDS +REDESCRIBE +REDESCRIBED +REDESCRIBES +REDESCRIBING +REDESCRIPTION +REDESCRIPTIONS +REDESIGN +REDESIGNED +REDESIGNING +REDESIGNS +REDETERMINATION +REDETERMINE +REDETERMINED +REDETERMINES +REDETERMINING +REDEVELOP +REDEVELOPED +REDEVELOPER +REDEVELOPERS +REDEVELOPING +REDEVELOPMENT +REDEVELOPMENTS +REDEVELOPS +REDEYE +REDEYES +REDFIN +REDFINS +REDFISH +REDFISHES +REDHEAD +REDHEADED +REDHEADS +REDHORSE +REDHORSES +REDIA +REDIAE +REDIAL +REDIALED +REDIALING +REDIALLED +REDIALLING +REDIALS +REDIAS +REDICTATE +REDICTATED +REDICTATES +REDICTATING +REDID +REDIGEST +REDIGESTED +REDIGESTING +REDIGESTION +REDIGESTIONS +REDIGESTS +REDIGRESS +REDIGRESSED +REDIGRESSES +REDIGRESSING +REDING +REDINGOTE +REDINGOTES +REDINTEGRATE +REDINTEGRATED +REDINTEGRATES +REDINTEGRATING +REDINTEGRATION +REDINTEGRATIONS +REDINTEGRATIVE +REDIP +REDIPPED +REDIPPING +REDIPS +REDIPT +REDIRECT +REDIRECTED +REDIRECTING +REDIRECTION +REDIRECTIONS +REDIRECTS +REDISCOUNT +REDISCOUNTABLE +REDISCOUNTED +REDISCOUNTING +REDISCOUNTS +REDISCOVER +REDISCOVERED +REDISCOVERIES +REDISCOVERING +REDISCOVERS +REDISCOVERY +REDISCUSS +REDISCUSSED +REDISCUSSES +REDISCUSSING +REDISPLAY +REDISPLAYED +REDISPLAYING +REDISPLAYS +REDISPOSE +REDISPOSED +REDISPOSES +REDISPOSING +REDISPOSITION +REDISPOSITIONS +REDISSOLVE +REDISSOLVED +REDISSOLVES +REDISSOLVING +REDISTILL +REDISTILLATION +REDISTILLATIONS +REDISTILLED +REDISTILLING +REDISTILLS +REDISTRIBUTE +REDISTRIBUTED +REDISTRIBUTES +REDISTRIBUTING +REDISTRIBUTION +REDISTRIBUTIONS +REDISTRIBUTIVE +REDISTRICT +REDISTRICTED +REDISTRICTING +REDISTRICTS +REDIVIDE +REDIVIDED +REDIVIDES +REDIVIDING +REDIVISION +REDIVISIONS +REDIVIVUS +REDIVORCE +REDIVORCED +REDIVORCES +REDIVORCING +REDLEG +REDLEGS +REDLINE +REDLINED +REDLINER +REDLINERS +REDLINES +REDLINING +REDLININGS +REDLY +REDNECK +REDNECKED +REDNECKS +REDNESS +REDNESSES +REDO +REDOCK +REDOCKED +REDOCKING +REDOCKS +REDOES +REDOING +REDOLENCE +REDOLENCES +REDOLENCIES +REDOLENCY +REDOLENT +REDOLENTLY +REDON +REDONE +REDONNED +REDONNING +REDONS +REDOS +REDOUBLE +REDOUBLED +REDOUBLER +REDOUBLERS +REDOUBLES +REDOUBLING +REDOUBT +REDOUBTABLE +REDOUBTABLY +REDOUBTS +REDOUND +REDOUNDED +REDOUNDING +REDOUNDS +REDOUT +REDOUTS +REDOWA +REDOWAS +REDOX +REDOXES +REDPOLL +REDPOLLS +REDRAFT +REDRAFTED +REDRAFTING +REDRAFTS +REDRAW +REDRAWER +REDRAWERS +REDRAWING +REDRAWN +REDRAWS +REDREAM +REDREAMED +REDREAMING +REDREAMS +REDREAMT +REDRESS +REDRESSED +REDRESSER +REDRESSERS +REDRESSES +REDRESSING +REDRESSOR +REDRESSORS +REDREW +REDRIED +REDRIES +REDRILL +REDRILLED +REDRILLING +REDRILLS +REDRIVE +REDRIVEN +REDRIVES +REDRIVING +REDROOT +REDROOTS +REDROVE +REDRY +REDRYING +REDS +REDSHANK +REDSHANKS +REDSHIFT +REDSHIFTED +REDSHIFTS +REDSHIRT +REDSHIRTED +REDSHIRTING +REDSHIRTS +REDSKIN +REDSKINS +REDSTART +REDSTARTS +REDTAIL +REDTAILS +REDTOP +REDTOPS +REDUB +REDUBBED +REDUBBING +REDUBS +REDUCE +REDUCED +REDUCER +REDUCERS +REDUCES +REDUCIBILITIES +REDUCIBILITY +REDUCIBLE +REDUCIBLY +REDUCING +REDUCTANT +REDUCTANTS +REDUCTASE +REDUCTASES +REDUCTION +REDUCTIONAL +REDUCTIONISM +REDUCTIONISMS +REDUCTIONIST +REDUCTIONISTIC +REDUCTIONISTS +REDUCTIONS +REDUCTIVE +REDUCTIVELY +REDUCTIVENESS +REDUCTIVENESSES +REDUCTOR +REDUCTORS +REDUNDANCIES +REDUNDANCY +REDUNDANT +REDUNDANTLY +REDUPLICATE +REDUPLICATED +REDUPLICATES +REDUPLICATING +REDUPLICATION +REDUPLICATIONS +REDUPLICATIVE +REDUPLICATIVELY +REDUVIID +REDUVIIDS +REDUX +REDWARE +REDWARES +REDWING +REDWINGS +REDWOOD +REDWOODS +REDYE +REDYED +REDYEING +REDYES +REE +REEARN +REEARNED +REEARNING +REEARNS +REECHIER +REECHIEST +REECHO +REECHOED +REECHOES +REECHOING +REECHY +REED +REEDBIRD +REEDBIRDS +REEDBUCK +REEDBUCKS +REEDED +REEDIER +REEDIEST +REEDIFIED +REEDIFIES +REEDIFY +REEDIFYING +REEDILY +REEDINESS +REEDINESSES +REEDING +REEDINGS +REEDIT +REEDITED +REEDITING +REEDITION +REEDITIONS +REEDITS +REEDLIKE +REEDLING +REEDLINGS +REEDMAN +REEDMEN +REEDS +REEDUCATE +REEDUCATED +REEDUCATES +REEDUCATING +REEDUCATION +REEDUCATIONS +REEDUCATIVE +REEDY +REEF +REEFABLE +REEFED +REEFER +REEFERS +REEFIER +REEFIEST +REEFING +REEFS +REEFY +REEJECT +REEJECTED +REEJECTING +REEJECTS +REEK +REEKED +REEKER +REEKERS +REEKIER +REEKIEST +REEKING +REEKS +REEKY +REEL +REELABLE +REELECT +REELECTED +REELECTING +REELECTION +REELECTIONS +REELECTS +REELED +REELER +REELERS +REELEVATE +REELEVATED +REELEVATES +REELEVATING +REELIGIBILITIES +REELIGIBILITY +REELIGIBLE +REELING +REELINGS +REELS +REEMBARK +REEMBARKED +REEMBARKING +REEMBARKS +REEMBODIED +REEMBODIES +REEMBODY +REEMBODYING +REEMBRACE +REEMBRACED +REEMBRACES +REEMBRACING +REEMBROIDER +REEMBROIDERED +REEMBROIDERING +REEMBROIDERS +REEMERGE +REEMERGED +REEMERGENCE +REEMERGENCES +REEMERGES +REEMERGING +REEMISSION +REEMISSIONS +REEMIT +REEMITS +REEMITTED +REEMITTING +REEMPHASES +REEMPHASIS +REEMPHASIZE +REEMPHASIZED +REEMPHASIZES +REEMPHASIZING +REEMPLOY +REEMPLOYED +REEMPLOYING +REEMPLOYMENT +REEMPLOYMENTS +REEMPLOYS +REENACT +REENACTED +REENACTING +REENACTMENT +REENACTMENTS +REENACTOR +REENACTORS +REENACTS +REENCOUNTER +REENCOUNTERED +REENCOUNTERING +REENCOUNTERS +REENDOW +REENDOWED +REENDOWING +REENDOWS +REENERGIZE +REENERGIZED +REENERGIZES +REENERGIZING +REENFORCE +REENFORCED +REENFORCES +REENFORCING +REENGAGE +REENGAGED +REENGAGEMENT +REENGAGEMENTS +REENGAGES +REENGAGING +REENGINEER +REENGINEERED +REENGINEERING +REENGINEERS +REENGRAVE +REENGRAVED +REENGRAVES +REENGRAVING +REENJOY +REENJOYED +REENJOYING +REENJOYS +REENLARGE +REENLARGED +REENLARGES +REENLARGING +REENLIST +REENLISTED +REENLISTING +REENLISTMENT +REENLISTMENTS +REENLISTS +REENROLL +REENROLLED +REENROLLING +REENROLLS +REENSLAVE +REENSLAVED +REENSLAVES +REENSLAVING +REENTER +REENTERED +REENTERING +REENTERS +REENTHRONE +REENTHRONED +REENTHRONES +REENTHRONING +REENTRANCE +REENTRANCES +REENTRANT +REENTRANTS +REENTRIES +REENTRY +REEQUIP +REEQUIPMENT +REEQUIPMENTS +REEQUIPPED +REEQUIPPING +REEQUIPS +REERECT +REERECTED +REERECTING +REERECTS +REES +REESCALATE +REESCALATED +REESCALATES +REESCALATING +REESCALATION +REESCALATIONS +REEST +REESTABLISH +REESTABLISHED +REESTABLISHES +REESTABLISHING +REESTABLISHMENT +REESTED +REESTIMATE +REESTIMATED +REESTIMATES +REESTIMATING +REESTING +REESTS +REEVALUATE +REEVALUATED +REEVALUATES +REEVALUATING +REEVALUATION +REEVALUATIONS +REEVE +REEVED +REEVES +REEVING +REEVOKE +REEVOKED +REEVOKES +REEVOKING +REEXAMINATION +REEXAMINATIONS +REEXAMINE +REEXAMINED +REEXAMINES +REEXAMINING +REEXECUTE +REEXECUTED +REEXECUTES +REEXECUTING +REEXHIBIT +REEXHIBITED +REEXHIBITING +REEXHIBITS +REEXPEL +REEXPELLED +REEXPELLING +REEXPELS +REEXPERIENCE +REEXPERIENCED +REEXPERIENCES +REEXPERIENCING +REEXPLAIN +REEXPLAINED +REEXPLAINING +REEXPLAINS +REEXPLORE +REEXPLORED +REEXPLORES +REEXPLORING +REEXPORT +REEXPORTATION +REEXPORTATIONS +REEXPORTED +REEXPORTING +REEXPORTS +REEXPOSE +REEXPOSED +REEXPOSES +REEXPOSING +REEXPOSURE +REEXPOSURES +REEXPRESS +REEXPRESSED +REEXPRESSES +REEXPRESSING +REF +REFACE +REFACED +REFACES +REFACING +REFALL +REFALLEN +REFALLING +REFALLS +REFASHION +REFASHIONED +REFASHIONING +REFASHIONS +REFASTEN +REFASTENED +REFASTENING +REFASTENS +REFECT +REFECTED +REFECTING +REFECTION +REFECTIONS +REFECTIVE +REFECTORIES +REFECTORY +REFECTS +REFED +REFEED +REFEEDING +REFEEDS +REFEEL +REFEELING +REFEELS +REFEL +REFELL +REFELLED +REFELLING +REFELS +REFELT +REFENCE +REFENCED +REFENCES +REFENCING +REFER +REFERABLE +REFEREE +REFEREED +REFEREEING +REFEREES +REFERENCE +REFERENCED +REFERENCES +REFERENCING +REFERENDA +REFERENDUM +REFERENDUMS +REFERENT +REFERENTIAL +REFERENTIALITY +REFERENTIALLY +REFERENTS +REFERRAL +REFERRALS +REFERRED +REFERRER +REFERRERS +REFERRING +REFERS +REFFED +REFFING +REFIGHT +REFIGHTING +REFIGHTS +REFIGURE +REFIGURED +REFIGURES +REFIGURING +REFILE +REFILED +REFILES +REFILING +REFILL +REFILLABLE +REFILLED +REFILLING +REFILLS +REFILM +REFILMED +REFILMING +REFILMS +REFILTER +REFILTERED +REFILTERING +REFILTERS +REFINABLE +REFINANCE +REFINANCED +REFINANCES +REFINANCING +REFIND +REFINDING +REFINDS +REFINE +REFINED +REFINEMENT +REFINEMENTS +REFINER +REFINERIES +REFINERS +REFINERY +REFINES +REFINING +REFINISH +REFINISHED +REFINISHER +REFINISHERS +REFINISHES +REFINISHING +REFIRE +REFIRED +REFIRES +REFIRING +REFIT +REFITS +REFITTED +REFITTING +REFIX +REFIXED +REFIXES +REFIXING +REFLAG +REFLAGGED +REFLAGGING +REFLAGS +REFLATE +REFLATED +REFLATES +REFLATING +REFLATION +REFLATIONARY +REFLATIONS +REFLECT +REFLECTANCE +REFLECTANCES +REFLECTED +REFLECTING +REFLECTION +REFLECTIONAL +REFLECTIONS +REFLECTIVE +REFLECTIVELY +REFLECTIVENESS +REFLECTIVITIES +REFLECTIVITY +REFLECTOMETER +REFLECTOMETERS +REFLECTOMETRIES +REFLECTOMETRY +REFLECTOR +REFLECTORIZE +REFLECTORIZED +REFLECTORIZES +REFLECTORIZING +REFLECTORS +REFLECTS +REFLET +REFLETS +REFLEW +REFLEX +REFLEXED +REFLEXES +REFLEXING +REFLEXION +REFLEXIONS +REFLEXIVE +REFLEXIVELY +REFLEXIVENESS +REFLEXIVENESSES +REFLEXIVES +REFLEXIVITIES +REFLEXIVITY +REFLEXLY +REFLEXOLOGIES +REFLEXOLOGY +REFLIES +REFLOAT +REFLOATED +REFLOATING +REFLOATS +REFLOOD +REFLOODED +REFLOODING +REFLOODS +REFLOW +REFLOWED +REFLOWER +REFLOWERED +REFLOWERING +REFLOWERS +REFLOWING +REFLOWN +REFLOWS +REFLUENCE +REFLUENCES +REFLUENT +REFLUX +REFLUXED +REFLUXES +REFLUXING +REFLY +REFLYING +REFOCUS +REFOCUSED +REFOCUSES +REFOCUSING +REFOCUSSED +REFOCUSSES +REFOCUSSING +REFOLD +REFOLDED +REFOLDING +REFOLDS +REFOREST +REFORESTATION +REFORESTATIONS +REFORESTED +REFORESTING +REFORESTS +REFORGE +REFORGED +REFORGES +REFORGING +REFORM +REFORMABILITIES +REFORMABILITY +REFORMABLE +REFORMAT +REFORMATE +REFORMATES +REFORMATION +REFORMATIONAL +REFORMATIONS +REFORMATIVE +REFORMATORIES +REFORMATORY +REFORMATS +REFORMATTED +REFORMATTING +REFORMED +REFORMER +REFORMERS +REFORMING +REFORMISM +REFORMISMS +REFORMIST +REFORMISTS +REFORMS +REFORMULATE +REFORMULATED +REFORMULATES +REFORMULATING +REFORMULATION +REFORMULATIONS +REFORTIFICATION +REFORTIFIED +REFORTIFIES +REFORTIFY +REFORTIFYING +REFOUGHT +REFOUND +REFOUNDATION +REFOUNDATIONS +REFOUNDED +REFOUNDING +REFOUNDS +REFRACT +REFRACTED +REFRACTILE +REFRACTING +REFRACTION +REFRACTIONS +REFRACTIVE +REFRACTIVELY +REFRACTIVENESS +REFRACTIVITIES +REFRACTIVITY +REFRACTOMETER +REFRACTOMETERS +REFRACTOMETRIC +REFRACTOMETRIES +REFRACTOMETRY +REFRACTOR +REFRACTORIES +REFRACTORILY +REFRACTORINESS +REFRACTORS +REFRACTORY +REFRACTS +REFRAIN +REFRAINED +REFRAINER +REFRAINERS +REFRAINING +REFRAINMENT +REFRAINMENTS +REFRAINS +REFRAME +REFRAMED +REFRAMES +REFRAMING +REFRANGIBILITY +REFRANGIBLE +REFRANGIBLENESS +REFREEZE +REFREEZES +REFREEZING +REFRESH +REFRESHED +REFRESHEN +REFRESHENED +REFRESHENING +REFRESHENS +REFRESHER +REFRESHERS +REFRESHES +REFRESHING +REFRESHINGLY +REFRESHMENT +REFRESHMENTS +REFRIED +REFRIES +REFRIGERANT +REFRIGERANTS +REFRIGERATE +REFRIGERATED +REFRIGERATES +REFRIGERATING +REFRIGERATION +REFRIGERATIONS +REFRIGERATOR +REFRIGERATORS +REFRONT +REFRONTED +REFRONTING +REFRONTS +REFROZE +REFROZEN +REFRY +REFRYING +REFS +REFT +REFUEL +REFUELED +REFUELING +REFUELLED +REFUELLING +REFUELS +REFUGE +REFUGED +REFUGEE +REFUGEEISM +REFUGEEISMS +REFUGEES +REFUGES +REFUGIA +REFUGING +REFUGIUM +REFULGENCE +REFULGENCES +REFULGENT +REFUND +REFUNDABILITIES +REFUNDABILITY +REFUNDABLE +REFUNDED +REFUNDER +REFUNDERS +REFUNDING +REFUNDS +REFURBISH +REFURBISHED +REFURBISHER +REFURBISHERS +REFURBISHES +REFURBISHING +REFURBISHMENT +REFURBISHMENTS +REFURNISH +REFURNISHED +REFURNISHES +REFURNISHING +REFUSABLE +REFUSAL +REFUSALS +REFUSE +REFUSED +REFUSENIK +REFUSENIKS +REFUSER +REFUSERS +REFUSES +REFUSING +REFUSNIK +REFUSNIKS +REFUTABLE +REFUTABLY +REFUTAL +REFUTALS +REFUTATION +REFUTATIONS +REFUTE +REFUTED +REFUTER +REFUTERS +REFUTES +REFUTING +REG +REGAIN +REGAINED +REGAINER +REGAINERS +REGAINING +REGAINS +REGAL +REGALE +REGALED +REGALER +REGALERS +REGALES +REGALIA +REGALING +REGALITIES +REGALITY +REGALLY +REGALNESS +REGALNESSES +REGARD +REGARDANT +REGARDED +REGARDFUL +REGARDFULLY +REGARDFULNESS +REGARDFULNESSES +REGARDING +REGARDLESS +REGARDLESSLY +REGARDLESSNESS +REGARDS +REGATHER +REGATHERED +REGATHERING +REGATHERS +REGATTA +REGATTAS +REGAUGE +REGAUGED +REGAUGES +REGAUGING +REGAVE +REGEAR +REGEARED +REGEARING +REGEARS +REGELATE +REGELATED +REGELATES +REGELATING +REGENCIES +REGENCY +REGENERABLE +REGENERACIES +REGENERACY +REGENERATE +REGENERATED +REGENERATELY +REGENERATENESS +REGENERATES +REGENERATING +REGENERATION +REGENERATIONS +REGENERATIVE +REGENERATOR +REGENERATORS +REGENT +REGENTAL +REGENTS +REGES +REGGAE +REGGAES +REGICIDAL +REGICIDE +REGICIDES +REGILD +REGILDED +REGILDING +REGILDS +REGILT +REGIME +REGIMEN +REGIMENS +REGIMENT +REGIMENTAL +REGIMENTALS +REGIMENTATION +REGIMENTATIONS +REGIMENTED +REGIMENTING +REGIMENTS +REGIMES +REGINA +REGINAE +REGINAL +REGINAS +REGION +REGIONAL +REGIONALISM +REGIONALISMS +REGIONALIST +REGIONALISTIC +REGIONALISTS +REGIONALIZATION +REGIONALIZE +REGIONALIZED +REGIONALIZES +REGIONALIZING +REGIONALLY +REGIONALS +REGIONS +REGISSEUR +REGISSEURS +REGISTER +REGISTERABLE +REGISTERED +REGISTERING +REGISTERS +REGISTRABLE +REGISTRANT +REGISTRANTS +REGISTRAR +REGISTRARS +REGISTRATION +REGISTRATIONS +REGISTRIES +REGISTRY +REGIUS +REGIVE +REGIVEN +REGIVES +REGIVING +REGLAZE +REGLAZED +REGLAZES +REGLAZING +REGLET +REGLETS +REGLORIFIED +REGLORIFIES +REGLORIFY +REGLORIFYING +REGLOSS +REGLOSSED +REGLOSSES +REGLOSSING +REGLOW +REGLOWED +REGLOWING +REGLOWS +REGLUE +REGLUED +REGLUES +REGLUING +REGMA +REGMATA +REGNA +REGNAL +REGNANCIES +REGNANCY +REGNANT +REGNUM +REGOLITH +REGOLITHS +REGORGE +REGORGED +REGORGES +REGORGING +REGOSOL +REGOSOLS +REGRADE +REGRADED +REGRADES +REGRADING +REGRAFT +REGRAFTED +REGRAFTING +REGRAFTS +REGRANT +REGRANTED +REGRANTING +REGRANTS +REGRATE +REGRATED +REGRATES +REGRATING +REGREEN +REGREENED +REGREENING +REGREENS +REGREET +REGREETED +REGREETING +REGREETS +REGRESS +REGRESSED +REGRESSES +REGRESSING +REGRESSION +REGRESSIONS +REGRESSIVE +REGRESSIVELY +REGRESSIVENESS +REGRESSIVITIES +REGRESSIVITY +REGRESSOR +REGRESSORS +REGRET +REGRETFUL +REGRETFULLY +REGRETFULNESS +REGRETFULNESSES +REGRETS +REGRETTABLE +REGRETTABLY +REGRETTED +REGRETTER +REGRETTERS +REGRETTING +REGREW +REGRIND +REGRINDING +REGRINDS +REGROOM +REGROOMED +REGROOMING +REGROOMS +REGROOVE +REGROOVED +REGROOVES +REGROOVING +REGROUND +REGROUP +REGROUPED +REGROUPING +REGROUPS +REGROW +REGROWING +REGROWN +REGROWS +REGROWTH +REGROWTHS +REGS +REGULABLE +REGULAR +REGULARITIES +REGULARITY +REGULARIZATION +REGULARIZATIONS +REGULARIZE +REGULARIZED +REGULARIZES +REGULARIZING +REGULARLY +REGULARS +REGULATE +REGULATED +REGULATES +REGULATING +REGULATION +REGULATIONS +REGULATIVE +REGULATOR +REGULATORS +REGULATORY +REGULI +REGULINE +REGULUS +REGULUSES +REGURGITATE +REGURGITATED +REGURGITATES +REGURGITATING +REGURGITATION +REGURGITATIONS +REHAB +REHABBED +REHABBER +REHABBERS +REHABBING +REHABILITANT +REHABILITANTS +REHABILITATE +REHABILITATED +REHABILITATES +REHABILITATING +REHABILITATION +REHABILITATIONS +REHABILITATIVE +REHABILITATOR +REHABILITATORS +REHABS +REHAMMER +REHAMMERED +REHAMMERING +REHAMMERS +REHANDLE +REHANDLED +REHANDLES +REHANDLING +REHANG +REHANGED +REHANGING +REHANGS +REHARDEN +REHARDENED +REHARDENING +REHARDENS +REHASH +REHASHED +REHASHES +REHASHING +REHEAR +REHEARD +REHEARING +REHEARINGS +REHEARS +REHEARSAL +REHEARSALS +REHEARSE +REHEARSED +REHEARSER +REHEARSERS +REHEARSES +REHEARSING +REHEAT +REHEATED +REHEATER +REHEATERS +REHEATING +REHEATS +REHEEL +REHEELED +REHEELING +REHEELS +REHEM +REHEMMED +REHEMMING +REHEMS +REHINGE +REHINGED +REHINGES +REHINGING +REHIRE +REHIRED +REHIRES +REHIRING +REHOBOAM +REHOBOAMS +REHOSPITALIZE +REHOSPITALIZED +REHOSPITALIZES +REHOSPITALIZING +REHOUSE +REHOUSED +REHOUSES +REHOUSING +REHUMANIZE +REHUMANIZED +REHUMANIZES +REHUMANIZING +REHUNG +REHYDRATABLE +REHYDRATE +REHYDRATED +REHYDRATES +REHYDRATING +REHYDRATION +REHYDRATIONS +REHYPNOTIZE +REHYPNOTIZED +REHYPNOTIZES +REHYPNOTIZING +REI +REICHSMARK +REICHSMARKS +REIDENTIFIED +REIDENTIFIES +REIDENTIFY +REIDENTIFYING +REIF +REIFICATION +REIFICATIONS +REIFIED +REIFIER +REIFIERS +REIFIES +REIFS +REIFY +REIFYING +REIGN +REIGNED +REIGNING +REIGNITE +REIGNITED +REIGNITES +REIGNITING +REIGNITION +REIGNITIONS +REIGNS +REIMAGE +REIMAGED +REIMAGES +REIMAGINE +REIMAGINED +REIMAGINES +REIMAGING +REIMAGINING +REIMBURSABLE +REIMBURSE +REIMBURSED +REIMBURSEMENT +REIMBURSEMENTS +REIMBURSES +REIMBURSING +REIMMERSE +REIMMERSED +REIMMERSES +REIMMERSING +REIMPLANT +REIMPLANTATION +REIMPLANTATIONS +REIMPLANTED +REIMPLANTING +REIMPLANTS +REIMPORT +REIMPORTATION +REIMPORTATIONS +REIMPORTED +REIMPORTING +REIMPORTS +REIMPOSE +REIMPOSED +REIMPOSES +REIMPOSING +REIMPOSITION +REIMPOSITIONS +REIMPRESSION +REIMPRESSIONS +REIN +REINCARNATE +REINCARNATED +REINCARNATES +REINCARNATING +REINCARNATION +REINCARNATIONS +REINCITE +REINCITED +REINCITES +REINCITING +REINCORPORATE +REINCORPORATED +REINCORPORATES +REINCORPORATING +REINCORPORATION +REINCUR +REINCURRED +REINCURRING +REINCURS +REINDEER +REINDEERS +REINDEX +REINDEXED +REINDEXES +REINDEXING +REINDICT +REINDICTED +REINDICTING +REINDICTMENT +REINDICTMENTS +REINDICTS +REINDUCE +REINDUCED +REINDUCES +REINDUCING +REINDUCT +REINDUCTED +REINDUCTING +REINDUCTS +REINDUSTRIALIZE +REINED +REINFECT +REINFECTED +REINFECTING +REINFECTION +REINFECTIONS +REINFECTS +REINFESTATION +REINFESTATIONS +REINFLAME +REINFLAMED +REINFLAMES +REINFLAMING +REINFLATE +REINFLATED +REINFLATES +REINFLATING +REINFLATION +REINFLATIONS +REINFORCE +REINFORCEABLE +REINFORCED +REINFORCEMENT +REINFORCEMENTS +REINFORCER +REINFORCERS +REINFORCES +REINFORCING +REINFORM +REINFORMED +REINFORMING +REINFORMS +REINFUSE +REINFUSED +REINFUSES +REINFUSING +REINHABIT +REINHABITED +REINHABITING +REINHABITS +REINING +REINITIATE +REINITIATED +REINITIATES +REINITIATING +REINJECT +REINJECTED +REINJECTING +REINJECTION +REINJECTIONS +REINJECTS +REINJURE +REINJURED +REINJURES +REINJURIES +REINJURING +REINJURY +REINK +REINKED +REINKING +REINKS +REINLESS +REINNERVATE +REINNERVATED +REINNERVATES +REINNERVATING +REINNERVATION +REINNERVATIONS +REINOCULATE +REINOCULATED +REINOCULATES +REINOCULATING +REINOCULATION +REINOCULATIONS +REINS +REINSERT +REINSERTED +REINSERTING +REINSERTION +REINSERTIONS +REINSERTS +REINSMAN +REINSMEN +REINSPECT +REINSPECTED +REINSPECTING +REINSPECTION +REINSPECTIONS +REINSPECTS +REINSPIRE +REINSPIRED +REINSPIRES +REINSPIRING +REINSTALL +REINSTALLATION +REINSTALLATIONS +REINSTALLED +REINSTALLING +REINSTALLS +REINSTATE +REINSTATED +REINSTATEMENT +REINSTATEMENTS +REINSTATES +REINSTATING +REINSTITUTE +REINSTITUTED +REINSTITUTES +REINSTITUTING +REINSURANCE +REINSURANCES +REINSURE +REINSURED +REINSURER +REINSURERS +REINSURES +REINSURING +REINTEGRATE +REINTEGRATED +REINTEGRATES +REINTEGRATING +REINTEGRATION +REINTEGRATIONS +REINTEGRATIVE +REINTER +REINTERPRET +REINTERPRETED +REINTERPRETING +REINTERPRETS +REINTERRED +REINTERRING +REINTERS +REINTERVIEW +REINTERVIEWED +REINTERVIEWING +REINTERVIEWS +REINTRODUCE +REINTRODUCED +REINTRODUCES +REINTRODUCING +REINTRODUCTION +REINTRODUCTIONS +REINVADE +REINVADED +REINVADES +REINVADING +REINVASION +REINVASIONS +REINVENT +REINVENTED +REINVENTING +REINVENTION +REINVENTIONS +REINVENTS +REINVEST +REINVESTED +REINVESTIGATE +REINVESTIGATED +REINVESTIGATES +REINVESTIGATING +REINVESTIGATION +REINVESTING +REINVESTMENT +REINVESTMENTS +REINVESTS +REINVIGORATE +REINVIGORATED +REINVIGORATES +REINVIGORATING +REINVIGORATION +REINVIGORATIONS +REINVIGORATOR +REINVIGORATORS +REINVITE +REINVITED +REINVITES +REINVITING +REINVOKE +REINVOKED +REINVOKES +REINVOKING +REINVOLVE +REINVOLVED +REINVOLVES +REINVOLVING +REIS +REISSUE +REISSUED +REISSUER +REISSUERS +REISSUES +REISSUING +REITBOK +REITBOKS +REITERATE +REITERATED +REITERATES +REITERATING +REITERATION +REITERATIONS +REITERATIVE +REITERATIVELY +REIVE +REIVED +REIVER +REIVERS +REIVES +REIVING +REJACKET +REJACKETED +REJACKETING +REJACKETS +REJECT +REJECTED +REJECTEE +REJECTEES +REJECTER +REJECTERS +REJECTING +REJECTINGLY +REJECTION +REJECTIONS +REJECTIVE +REJECTOR +REJECTORS +REJECTS +REJIG +REJIGGED +REJIGGER +REJIGGERED +REJIGGERING +REJIGGERS +REJIGGING +REJIGS +REJOICE +REJOICED +REJOICER +REJOICERS +REJOICES +REJOICING +REJOICINGLY +REJOICINGS +REJOIN +REJOINDER +REJOINDERS +REJOINED +REJOINING +REJOINS +REJUDGE +REJUDGED +REJUDGES +REJUDGING +REJUGGLE +REJUGGLED +REJUGGLES +REJUGGLING +REJUSTIFIED +REJUSTIFIES +REJUSTIFY +REJUSTIFYING +REJUVENATE +REJUVENATED +REJUVENATES +REJUVENATING +REJUVENATION +REJUVENATIONS +REJUVENATOR +REJUVENATORS +REJUVENESCENCE +REJUVENESCENCES +REJUVENESCENT +REKEY +REKEYBOARD +REKEYBOARDED +REKEYBOARDING +REKEYBOARDS +REKEYED +REKEYING +REKEYS +REKINDLE +REKINDLED +REKINDLES +REKINDLING +REKNIT +REKNITS +REKNITTED +REKNITTING +REKNOT +REKNOTS +REKNOTTED +REKNOTTING +RELABEL +RELABELED +RELABELING +RELABELLED +RELABELLING +RELABELS +RELACE +RELACED +RELACES +RELACING +RELACQUER +RELACQUERED +RELACQUERING +RELACQUERS +RELAID +RELAND +RELANDED +RELANDING +RELANDS +RELANDSCAPE +RELANDSCAPED +RELANDSCAPES +RELANDSCAPING +RELAPSE +RELAPSED +RELAPSER +RELAPSERS +RELAPSES +RELAPSING +RELATABLE +RELATE +RELATED +RELATEDLY +RELATEDNESS +RELATEDNESSES +RELATER +RELATERS +RELATES +RELATING +RELATION +RELATIONAL +RELATIONALLY +RELATIONS +RELATIONSHIP +RELATIONSHIPS +RELATIVE +RELATIVELY +RELATIVES +RELATIVISM +RELATIVISMS +RELATIVIST +RELATIVISTIC +RELATIVISTS +RELATIVITIES +RELATIVITY +RELATIVIZE +RELATIVIZED +RELATIVIZES +RELATIVIZING +RELATOR +RELATORS +RELAUNCH +RELAUNCHED +RELAUNCHES +RELAUNCHING +RELAUNDER +RELAUNDERED +RELAUNDERING +RELAUNDERS +RELAX +RELAXABLE +RELAXANT +RELAXANTS +RELAXATION +RELAXATIONS +RELAXED +RELAXEDLY +RELAXEDNESS +RELAXEDNESSES +RELAXER +RELAXERS +RELAXES +RELAXIN +RELAXING +RELAXINS +RELAY +RELAYED +RELAYING +RELAYS +RELEARN +RELEARNED +RELEARNING +RELEARNS +RELEARNT +RELEASABLE +RELEASE +RELEASED +RELEASER +RELEASERS +RELEASES +RELEASING +RELEGABLE +RELEGATE +RELEGATED +RELEGATES +RELEGATING +RELEGATION +RELEGATIONS +RELEND +RELENDING +RELENDS +RELENT +RELENTED +RELENTING +RELENTLESS +RELENTLESSLY +RELENTLESSNESS +RELENTS +RELET +RELETS +RELETTER +RELETTERED +RELETTERING +RELETTERS +RELETTING +RELEVANCE +RELEVANCES +RELEVANCIES +RELEVANCY +RELEVANT +RELEVANTLY +RELEVE +RELEVES +RELIABILITIES +RELIABILITY +RELIABLE +RELIABLENESS +RELIABLENESSES +RELIABLES +RELIABLY +RELIANCE +RELIANCES +RELIANT +RELIANTLY +RELIC +RELICENSE +RELICENSED +RELICENSES +RELICENSING +RELICENSURE +RELICENSURES +RELICS +RELICT +RELICTION +RELICTIONS +RELICTS +RELIED +RELIEF +RELIEFS +RELIER +RELIERS +RELIES +RELIEVABLE +RELIEVE +RELIEVED +RELIEVEDLY +RELIEVER +RELIEVERS +RELIEVES +RELIEVING +RELIEVO +RELIEVOS +RELIGHT +RELIGHTED +RELIGHTING +RELIGHTS +RELIGION +RELIGIONIST +RELIGIONISTS +RELIGIONLESS +RELIGIONS +RELIGIOSE +RELIGIOSITIES +RELIGIOSITY +RELIGIOUS +RELIGIOUSLY +RELIGIOUSNESS +RELIGIOUSNESSES +RELINE +RELINED +RELINES +RELINING +RELINK +RELINKED +RELINKING +RELINKS +RELINQUISH +RELINQUISHED +RELINQUISHES +RELINQUISHING +RELINQUISHMENT +RELINQUISHMENTS +RELIQUARIES +RELIQUARY +RELIQUE +RELIQUEFIED +RELIQUEFIES +RELIQUEFY +RELIQUEFYING +RELIQUES +RELIQUIAE +RELISH +RELISHABLE +RELISHED +RELISHES +RELISHING +RELIST +RELISTED +RELISTING +RELISTS +RELIT +RELIVABLE +RELIVE +RELIVED +RELIVES +RELIVING +RELLENO +RELLENOS +RELOAD +RELOADED +RELOADER +RELOADERS +RELOADING +RELOADS +RELOAN +RELOANED +RELOANING +RELOANS +RELOCATABLE +RELOCATE +RELOCATED +RELOCATEE +RELOCATEES +RELOCATES +RELOCATING +RELOCATION +RELOCATIONS +RELOCK +RELOCKED +RELOCKING +RELOCKS +RELOOK +RELOOKED +RELOOKING +RELOOKS +RELUBRICATE +RELUBRICATED +RELUBRICATES +RELUBRICATING +RELUBRICATION +RELUBRICATIONS +RELUCENT +RELUCT +RELUCTANCE +RELUCTANCES +RELUCTANCIES +RELUCTANCY +RELUCTANT +RELUCTANTLY +RELUCTATE +RELUCTATED +RELUCTATES +RELUCTATING +RELUCTATION +RELUCTATIONS +RELUCTED +RELUCTING +RELUCTS +RELUME +RELUMED +RELUMES +RELUMINE +RELUMINED +RELUMINES +RELUMING +RELUMINING +RELY +RELYING +REM +REMADE +REMAIL +REMAILED +REMAILING +REMAILS +REMAIN +REMAINDER +REMAINDERED +REMAINDERING +REMAINDERS +REMAINED +REMAINING +REMAINS +REMAKE +REMAKER +REMAKERS +REMAKES +REMAKING +REMAN +REMAND +REMANDED +REMANDING +REMANDS +REMANENCE +REMANENCES +REMANENT +REMANNED +REMANNING +REMANS +REMANUFACTURE +REMANUFACTURED +REMANUFACTURER +REMANUFACTURERS +REMANUFACTURES +REMANUFACTURING +REMAP +REMAPPED +REMAPPING +REMAPS +REMARK +REMARKABLE +REMARKABLENESS +REMARKABLY +REMARKED +REMARKER +REMARKERS +REMARKET +REMARKETED +REMARKETING +REMARKETS +REMARKING +REMARKS +REMARQUE +REMARQUES +REMARRIAGE +REMARRIAGES +REMARRIED +REMARRIES +REMARRY +REMARRYING +REMASTER +REMASTERED +REMASTERING +REMASTERS +REMATCH +REMATCHED +REMATCHES +REMATCHING +REMATE +REMATED +REMATERIALIZE +REMATERIALIZED +REMATERIALIZES +REMATERIALIZING +REMATES +REMATING +REMEASURE +REMEASURED +REMEASUREMENT +REMEASUREMENTS +REMEASURES +REMEASURING +REMEDIABILITIES +REMEDIABILITY +REMEDIABLE +REMEDIAL +REMEDIALLY +REMEDIATE +REMEDIATED +REMEDIATES +REMEDIATING +REMEDIATION +REMEDIATIONS +REMEDIED +REMEDIES +REMEDILESS +REMEDY +REMEDYING +REMEET +REMEETING +REMEETS +REMELT +REMELTED +REMELTING +REMELTS +REMEMBER +REMEMBERABILITY +REMEMBERABLE +REMEMBERED +REMEMBERER +REMEMBERERS +REMEMBERING +REMEMBERS +REMEMBRANCE +REMEMBRANCER +REMEMBRANCERS +REMEMBRANCES +REMEND +REMENDED +REMENDING +REMENDS +REMERGE +REMERGED +REMERGES +REMERGING +REMET +REMEX +REMIGES +REMIGIAL +REMIGRATE +REMIGRATED +REMIGRATES +REMIGRATING +REMIGRATION +REMIGRATIONS +REMILITARIZE +REMILITARIZED +REMILITARIZES +REMILITARIZING +REMIND +REMINDED +REMINDER +REMINDERS +REMINDFUL +REMINDING +REMINDS +REMINISCE +REMINISCED +REMINISCENCE +REMINISCENCES +REMINISCENT +REMINISCENTIAL +REMINISCENTLY +REMINISCER +REMINISCERS +REMINISCES +REMINISCING +REMINT +REMINTED +REMINTING +REMINTS +REMISE +REMISED +REMISES +REMISING +REMISS +REMISSIBLE +REMISSIBLY +REMISSION +REMISSIONS +REMISSIVE +REMISSLY +REMISSNESS +REMISSNESSES +REMIT +REMITMENT +REMITMENTS +REMITS +REMITTABLE +REMITTAL +REMITTALS +REMITTANCE +REMITTANCES +REMITTED +REMITTENT +REMITTER +REMITTERS +REMITTING +REMITTOR +REMITTORS +REMIX +REMIXED +REMIXES +REMIXING +REMIXT +REMIXTURE +REMIXTURES +REMNANT +REMNANTAL +REMNANTS +REMOBILIZATION +REMOBILIZATIONS +REMOBILIZE +REMOBILIZED +REMOBILIZES +REMOBILIZING +REMODEL +REMODELED +REMODELER +REMODELERS +REMODELING +REMODELLED +REMODELLING +REMODELS +REMODIFIED +REMODIFIES +REMODIFY +REMODIFYING +REMOISTEN +REMOISTENED +REMOISTENING +REMOISTENS +REMOLADE +REMOLADES +REMOLD +REMOLDED +REMOLDING +REMOLDS +REMONETIZATION +REMONETIZATIONS +REMONETIZE +REMONETIZED +REMONETIZES +REMONETIZING +REMONSTRANCE +REMONSTRANCES +REMONSTRANT +REMONSTRANTLY +REMONSTRANTS +REMONSTRATE +REMONSTRATED +REMONSTRATES +REMONSTRATING +REMONSTRATION +REMONSTRATIONS +REMONSTRATIVE +REMONSTRATIVELY +REMONSTRATOR +REMONSTRATORS +REMONTANT +REMONTANTS +REMORA +REMORAS +REMORID +REMORSE +REMORSEFUL +REMORSEFULLY +REMORSEFULNESS +REMORSELESS +REMORSELESSLY +REMORSELESSNESS +REMORSES +REMOTE +REMOTELY +REMOTENESS +REMOTENESSES +REMOTER +REMOTES +REMOTEST +REMOTION +REMOTIONS +REMOTIVATE +REMOTIVATED +REMOTIVATES +REMOTIVATING +REMOTIVATION +REMOTIVATIONS +REMOULADE +REMOULADES +REMOUNT +REMOUNTED +REMOUNTING +REMOUNTS +REMOVABILITIES +REMOVABILITY +REMOVABLE +REMOVABLENESS +REMOVABLENESSES +REMOVABLY +REMOVAL +REMOVALS +REMOVE +REMOVEABLE +REMOVED +REMOVEDLY +REMOVER +REMOVERS +REMOVES +REMOVING +REMS +REMUDA +REMUDAS +REMUNERATE +REMUNERATED +REMUNERATES +REMUNERATING +REMUNERATION +REMUNERATIONS +REMUNERATIVE +REMUNERATIVELY +REMUNERATOR +REMUNERATORS +REMUNERATORY +REMYTHOLOGIZE +REMYTHOLOGIZED +REMYTHOLOGIZES +REMYTHOLOGIZING +RENAIL +RENAILED +RENAILING +RENAILS +RENAISSANCE +RENAISSANCES +RENAL +RENAME +RENAMED +RENAMES +RENAMING +RENASCENCE +RENASCENCES +RENASCENT +RENATIONALIZE +RENATIONALIZED +RENATIONALIZES +RENATIONALIZING +RENATURATION +RENATURATIONS +RENATURE +RENATURED +RENATURES +RENATURING +RENCONTRE +RENCONTRES +RENCOUNTER +RENCOUNTERED +RENCOUNTERING +RENCOUNTERS +REND +RENDED +RENDER +RENDERABLE +RENDERED +RENDERER +RENDERERS +RENDERING +RENDERINGS +RENDERS +RENDEZVOUS +RENDEZVOUSED +RENDEZVOUSES +RENDEZVOUSING +RENDIBLE +RENDING +RENDITION +RENDITIONS +RENDS +RENDZINA +RENDZINAS +RENEGADE +RENEGADED +RENEGADES +RENEGADING +RENEGADO +RENEGADOES +RENEGADOS +RENEGE +RENEGED +RENEGER +RENEGERS +RENEGES +RENEGING +RENEGOTIABLE +RENEGOTIATE +RENEGOTIATED +RENEGOTIATES +RENEGOTIATING +RENEGOTIATION +RENEGOTIATIONS +RENEST +RENESTED +RENESTING +RENESTS +RENEW +RENEWABILITIES +RENEWABILITY +RENEWABLE +RENEWABLES +RENEWABLY +RENEWAL +RENEWALS +RENEWED +RENEWEDLY +RENEWER +RENEWERS +RENEWING +RENEWS +RENIFORM +RENIG +RENIGGED +RENIGGING +RENIGS +RENIN +RENINS +RENITENCE +RENITENCES +RENITENCIES +RENITENCY +RENITENT +RENMINBI +RENNASE +RENNASES +RENNET +RENNETS +RENNIN +RENNINS +RENOGRAM +RENOGRAMS +RENOGRAPHIC +RENOGRAPHIES +RENOGRAPHY +RENOMINATE +RENOMINATED +RENOMINATES +RENOMINATING +RENOMINATION +RENOMINATIONS +RENOTIFIED +RENOTIFIES +RENOTIFY +RENOTIFYING +RENOUNCE +RENOUNCED +RENOUNCEMENT +RENOUNCEMENTS +RENOUNCER +RENOUNCERS +RENOUNCES +RENOUNCING +RENOVASCULAR +RENOVATE +RENOVATED +RENOVATES +RENOVATING +RENOVATION +RENOVATIONS +RENOVATIVE +RENOVATOR +RENOVATORS +RENOWN +RENOWNED +RENOWNING +RENOWNS +RENT +RENTABILITIES +RENTABILITY +RENTABLE +RENTAL +RENTALS +RENTE +RENTED +RENTER +RENTERS +RENTES +RENTIER +RENTIERS +RENTING +RENTS +RENUMBER +RENUMBERED +RENUMBERING +RENUMBERS +RENUNCIATION +RENUNCIATIONS +RENUNCIATIVE +RENUNCIATORY +RENVOI +RENVOIS +REOBJECT +REOBJECTED +REOBJECTING +REOBJECTS +REOBSERVE +REOBSERVED +REOBSERVES +REOBSERVING +REOBTAIN +REOBTAINED +REOBTAINING +REOBTAINS +REOCCUPATION +REOCCUPATIONS +REOCCUPIED +REOCCUPIES +REOCCUPY +REOCCUPYING +REOCCUR +REOCCURRED +REOCCURRENCE +REOCCURRENCES +REOCCURRING +REOCCURS +REOFFER +REOFFERED +REOFFERING +REOFFERS +REOIL +REOILED +REOILING +REOILS +REOPEN +REOPENED +REOPENING +REOPENS +REOPERATE +REOPERATED +REOPERATES +REOPERATING +REOPERATION +REOPERATIONS +REOPPOSE +REOPPOSED +REOPPOSES +REOPPOSING +REORCHESTRATE +REORCHESTRATED +REORCHESTRATES +REORCHESTRATING +REORCHESTRATION +REORDAIN +REORDAINED +REORDAINING +REORDAINS +REORDER +REORDERED +REORDERING +REORDERS +REORGANIZATION +REORGANIZATIONS +REORGANIZE +REORGANIZED +REORGANIZER +REORGANIZERS +REORGANIZES +REORGANIZING +REORIENT +REORIENTATE +REORIENTATED +REORIENTATES +REORIENTATING +REORIENTATION +REORIENTATIONS +REORIENTED +REORIENTING +REORIENTS +REOUTFIT +REOUTFITS +REOUTFITTED +REOUTFITTING +REOVIRUS +REOVIRUSES +REOXIDATION +REOXIDATIONS +REOXIDIZE +REOXIDIZED +REOXIDIZES +REOXIDIZING +REP +REPACIFIED +REPACIFIES +REPACIFY +REPACIFYING +REPACK +REPACKAGE +REPACKAGED +REPACKAGER +REPACKAGERS +REPACKAGES +REPACKAGING +REPACKED +REPACKING +REPACKS +REPAID +REPAINT +REPAINTED +REPAINTING +REPAINTS +REPAIR +REPAIRABILITIES +REPAIRABILITY +REPAIRABLE +REPAIRED +REPAIRER +REPAIRERS +REPAIRING +REPAIRMAN +REPAIRMEN +REPAIRS +REPAND +REPANDLY +REPANEL +REPANELED +REPANELING +REPANELLED +REPANELLING +REPANELS +REPAPER +REPAPERED +REPAPERING +REPAPERS +REPARABLE +REPARABLY +REPARATION +REPARATIONS +REPARATIVE +REPARK +REPARKED +REPARKING +REPARKS +REPARTEE +REPARTEES +REPARTITION +REPARTITIONS +REPASS +REPASSAGE +REPASSAGES +REPASSED +REPASSES +REPASSING +REPAST +REPASTED +REPASTING +REPASTS +REPATCH +REPATCHED +REPATCHES +REPATCHING +REPATRIATE +REPATRIATED +REPATRIATES +REPATRIATING +REPATRIATION +REPATRIATIONS +REPATTERN +REPATTERNED +REPATTERNING +REPATTERNS +REPAVE +REPAVED +REPAVES +REPAVING +REPAY +REPAYABLE +REPAYING +REPAYMENT +REPAYMENTS +REPAYS +REPEAL +REPEALABLE +REPEALED +REPEALER +REPEALERS +REPEALING +REPEALS +REPEAT +REPEATABILITIES +REPEATABILITY +REPEATABLE +REPEATED +REPEATEDLY +REPEATER +REPEATERS +REPEATING +REPEATS +REPECHAGE +REPECHAGES +REPEG +REPEGGED +REPEGGING +REPEGS +REPEL +REPELLANT +REPELLANTS +REPELLED +REPELLENCIES +REPELLENCY +REPELLENT +REPELLENTLY +REPELLENTS +REPELLER +REPELLERS +REPELLING +REPELS +REPENT +REPENTANCE +REPENTANCES +REPENTANT +REPENTANTLY +REPENTED +REPENTER +REPENTERS +REPENTING +REPENTS +REPEOPLE +REPEOPLED +REPEOPLES +REPEOPLING +REPERCUSSION +REPERCUSSIONS +REPERCUSSIVE +REPERK +REPERKED +REPERKING +REPERKS +REPERTOIRE +REPERTOIRES +REPERTORIES +REPERTORY +REPETEND +REPETENDS +REPETITION +REPETITIONAL +REPETITIONS +REPETITIOUS +REPETITIOUSLY +REPETITIOUSNESS +REPETITIVE +REPETITIVELY +REPETITIVENESS +REPHOTOGRAPH +REPHOTOGRAPHED +REPHOTOGRAPHING +REPHOTOGRAPHS +REPHRASE +REPHRASED +REPHRASES +REPHRASING +REPIGMENT +REPIGMENTED +REPIGMENTING +REPIGMENTS +REPIN +REPINE +REPINED +REPINER +REPINERS +REPINES +REPINING +REPINNED +REPINNING +REPINS +REPLACE +REPLACEABLE +REPLACED +REPLACEMENT +REPLACEMENTS +REPLACER +REPLACERS +REPLACES +REPLACING +REPLAN +REPLANNED +REPLANNING +REPLANS +REPLANT +REPLANTATION +REPLANTATIONS +REPLANTED +REPLANTING +REPLANTS +REPLASTER +REPLASTERED +REPLASTERING +REPLASTERS +REPLATE +REPLATED +REPLATES +REPLATING +REPLAY +REPLAYED +REPLAYING +REPLAYS +REPLEAD +REPLEADED +REPLEADER +REPLEADERS +REPLEADING +REPLEADS +REPLED +REPLEDGE +REPLEDGED +REPLEDGES +REPLEDGING +REPLENISH +REPLENISHABLE +REPLENISHED +REPLENISHER +REPLENISHERS +REPLENISHES +REPLENISHING +REPLENISHMENT +REPLENISHMENTS +REPLETE +REPLETELY +REPLETENESS +REPLETENESSES +REPLETES +REPLETION +REPLETIONS +REPLEVIABLE +REPLEVIED +REPLEVIES +REPLEVIN +REPLEVINED +REPLEVINING +REPLEVINS +REPLEVY +REPLEVYING +REPLICA +REPLICABILITIES +REPLICABILITY +REPLICABLE +REPLICAS +REPLICASE +REPLICASES +REPLICATE +REPLICATED +REPLICATES +REPLICATING +REPLICATION +REPLICATIONS +REPLICATIVE +REPLICON +REPLICONS +REPLIED +REPLIER +REPLIERS +REPLIES +REPLOT +REPLOTS +REPLOTTED +REPLOTTING +REPLOW +REPLOWED +REPLOWING +REPLOWS +REPLUMB +REPLUMBED +REPLUMBING +REPLUMBS +REPLUNGE +REPLUNGED +REPLUNGES +REPLUNGING +REPLY +REPLYING +REPO +REPOLARIZATION +REPOLARIZATIONS +REPOLARIZE +REPOLARIZED +REPOLARIZES +REPOLARIZING +REPOLISH +REPOLISHED +REPOLISHES +REPOLISHING +REPOLL +REPOLLED +REPOLLING +REPOLLS +REPOPULARIZE +REPOPULARIZED +REPOPULARIZES +REPOPULARIZING +REPOPULATE +REPOPULATED +REPOPULATES +REPOPULATING +REPOPULATION +REPOPULATIONS +REPORT +REPORTABLE +REPORTAGE +REPORTAGES +REPORTED +REPORTEDLY +REPORTER +REPORTERS +REPORTING +REPORTORIAL +REPORTORIALLY +REPORTS +REPOS +REPOSAL +REPOSALS +REPOSE +REPOSED +REPOSEDLY +REPOSEFUL +REPOSEFULLY +REPOSEFULNESS +REPOSEFULNESSES +REPOSER +REPOSERS +REPOSES +REPOSING +REPOSIT +REPOSITED +REPOSITING +REPOSITION +REPOSITIONED +REPOSITIONING +REPOSITIONS +REPOSITORIES +REPOSITORY +REPOSITS +REPOSSESS +REPOSSESSED +REPOSSESSES +REPOSSESSING +REPOSSESSION +REPOSSESSIONS +REPOSSESSOR +REPOSSESSORS +REPOT +REPOTS +REPOTTED +REPOTTING +REPOUR +REPOURED +REPOURING +REPOURS +REPOUSSE +REPOUSSES +REPOWER +REPOWERED +REPOWERING +REPOWERS +REPP +REPPED +REPPING +REPPS +REPREHEND +REPREHENDED +REPREHENDING +REPREHENDS +REPREHENSIBLE +REPREHENSIBLY +REPREHENSION +REPREHENSIONS +REPREHENSIVE +REPRESENT +REPRESENTABLE +REPRESENTATION +REPRESENTATIONS +REPRESENTATIVE +REPRESENTATIVES +REPRESENTED +REPRESENTER +REPRESENTERS +REPRESENTING +REPRESENTS +REPRESS +REPRESSED +REPRESSER +REPRESSERS +REPRESSES +REPRESSIBILITY +REPRESSIBLE +REPRESSING +REPRESSION +REPRESSIONIST +REPRESSIONS +REPRESSIVE +REPRESSIVELY +REPRESSIVENESS +REPRESSOR +REPRESSORS +REPRESSURIZE +REPRESSURIZED +REPRESSURIZES +REPRESSURIZING +REPRICE +REPRICED +REPRICES +REPRICING +REPRIEVAL +REPRIEVALS +REPRIEVE +REPRIEVED +REPRIEVES +REPRIEVING +REPRIMAND +REPRIMANDED +REPRIMANDING +REPRIMANDS +REPRINT +REPRINTED +REPRINTER +REPRINTERS +REPRINTING +REPRINTS +REPRISAL +REPRISALS +REPRISE +REPRISED +REPRISES +REPRISING +REPRISTINATE +REPRISTINATED +REPRISTINATES +REPRISTINATING +REPRISTINATION +REPRISTINATIONS +REPRIVATIZATION +REPRIVATIZE +REPRIVATIZED +REPRIVATIZES +REPRIVATIZING +REPRO +REPROACH +REPROACHABLE +REPROACHED +REPROACHER +REPROACHERS +REPROACHES +REPROACHFUL +REPROACHFULLY +REPROACHFULNESS +REPROACHING +REPROACHINGLY +REPROBANCE +REPROBANCES +REPROBATE +REPROBATED +REPROBATES +REPROBATING +REPROBATION +REPROBATIONS +REPROBATIVE +REPROBATORY +REPROBE +REPROBED +REPROBES +REPROBING +REPROCESS +REPROCESSED +REPROCESSES +REPROCESSING +REPRODUCE +REPRODUCED +REPRODUCER +REPRODUCERS +REPRODUCES +REPRODUCIBILITY +REPRODUCIBLE +REPRODUCIBLES +REPRODUCIBLY +REPRODUCING +REPRODUCTION +REPRODUCTIONS +REPRODUCTIVE +REPRODUCTIVELY +REPRODUCTIVES +REPROGRAM +REPROGRAMED +REPROGRAMING +REPROGRAMMABLE +REPROGRAMMED +REPROGRAMMING +REPROGRAMS +REPROGRAPHER +REPROGRAPHERS +REPROGRAPHIC +REPROGRAPHICS +REPROGRAPHIES +REPROGRAPHY +REPROOF +REPROOFS +REPROS +REPROVAL +REPROVALS +REPROVE +REPROVED +REPROVER +REPROVERS +REPROVES +REPROVING +REPROVINGLY +REPROVISION +REPROVISIONED +REPROVISIONING +REPROVISIONS +REPS +REPTANT +REPTILE +REPTILES +REPTILIA +REPTILIAN +REPTILIANS +REPTILIUM +REPUBLIC +REPUBLICAN +REPUBLICANISM +REPUBLICANISMS +REPUBLICANIZE +REPUBLICANIZED +REPUBLICANIZES +REPUBLICANIZING +REPUBLICANS +REPUBLICATION +REPUBLICATIONS +REPUBLICS +REPUBLISH +REPUBLISHED +REPUBLISHER +REPUBLISHERS +REPUBLISHES +REPUBLISHING +REPUDIATE +REPUDIATED +REPUDIATES +REPUDIATING +REPUDIATION +REPUDIATIONIST +REPUDIATIONISTS +REPUDIATIONS +REPUDIATOR +REPUDIATORS +REPUGN +REPUGNANCE +REPUGNANCES +REPUGNANCIES +REPUGNANCY +REPUGNANT +REPUGNANTLY +REPUGNED +REPUGNING +REPUGNS +REPULSE +REPULSED +REPULSER +REPULSERS +REPULSES +REPULSING +REPULSION +REPULSIONS +REPULSIVE +REPULSIVELY +REPULSIVENESS +REPULSIVENESSES +REPUMP +REPUMPED +REPUMPING +REPUMPS +REPUNCTUATION +REPUNCTUATIONS +REPURCHASE +REPURCHASED +REPURCHASES +REPURCHASING +REPURIFIED +REPURIFIES +REPURIFY +REPURIFYING +REPURPOSE +REPURPOSED +REPURPOSES +REPURPOSING +REPURSUE +REPURSUED +REPURSUES +REPURSUING +REPUTABILITIES +REPUTABILITY +REPUTABLE +REPUTABLY +REPUTATION +REPUTATIONAL +REPUTATIONS +REPUTE +REPUTED +REPUTEDLY +REPUTES +REPUTING +REQUALIFIED +REQUALIFIES +REQUALIFY +REQUALIFYING +REQUEST +REQUESTED +REQUESTER +REQUESTERS +REQUESTING +REQUESTOR +REQUESTORS +REQUESTS +REQUIEM +REQUIEMS +REQUIESCAT +REQUIESCATS +REQUIN +REQUINS +REQUIRE +REQUIRED +REQUIREMENT +REQUIREMENTS +REQUIRER +REQUIRERS +REQUIRES +REQUIRING +REQUISITE +REQUISITENESS +REQUISITENESSES +REQUISITES +REQUISITION +REQUISITIONED +REQUISITIONING +REQUISITIONS +REQUITAL +REQUITALS +REQUITE +REQUITED +REQUITER +REQUITERS +REQUITES +REQUITING +RERACK +RERACKED +RERACKING +RERACKS +RERADIATE +RERADIATED +RERADIATES +RERADIATING +RERADIATION +RERADIATIONS +RERAISE +RERAISED +RERAISES +RERAISING +RERAN +REREAD +REREADING +REREADINGS +REREADS +REREBRACE +REREBRACES +RERECORD +RERECORDED +RERECORDING +RERECORDS +REREDOS +REREDOSES +REREGISTER +REREGISTERED +REREGISTERING +REREGISTERS +REREGISTRATION +REREGISTRATIONS +REREGULATE +REREGULATED +REREGULATES +REREGULATING +REREGULATION +REREGULATIONS +RERELEASE +RERELEASED +RERELEASES +RERELEASING +REREMICE +REREMIND +REREMINDED +REREMINDING +REREMINDS +REREMOUSE +RERENT +RERENTED +RERENTING +RERENTS +REREPEAT +REREPEATED +REREPEATING +REREPEATS +REREVIEW +REREVIEWED +REREVIEWING +REREVIEWS +REREWARD +REREWARDS +RERIG +RERIGGED +RERIGGING +RERIGS +RERISE +RERISEN +RERISES +RERISING +REROLL +REROLLED +REROLLER +REROLLERS +REROLLING +REROLLS +REROOF +REROOFED +REROOFING +REROOFS +REROSE +REROUTE +REROUTED +REROUTES +REROUTING +RERUN +RERUNNING +RERUNS +RES +RESADDLE +RESADDLED +RESADDLES +RESADDLING +RESAID +RESAIL +RESAILED +RESAILING +RESAILS +RESALABLE +RESALE +RESALES +RESALUTE +RESALUTED +RESALUTES +RESALUTING +RESAMPLE +RESAMPLED +RESAMPLES +RESAMPLING +RESAT +RESAW +RESAWED +RESAWING +RESAWN +RESAWS +RESAY +RESAYING +RESAYS +RESCALE +RESCALED +RESCALES +RESCALING +RESCHEDULE +RESCHEDULED +RESCHEDULES +RESCHEDULING +RESCHOOL +RESCHOOLED +RESCHOOLING +RESCHOOLS +RESCIND +RESCINDED +RESCINDER +RESCINDERS +RESCINDING +RESCINDMENT +RESCINDMENTS +RESCINDS +RESCISSION +RESCISSIONS +RESCISSORY +RESCORE +RESCORED +RESCORES +RESCORING +RESCREEN +RESCREENED +RESCREENING +RESCREENS +RESCRIPT +RESCRIPTS +RESCUABLE +RESCUE +RESCUED +RESCUER +RESCUERS +RESCUES +RESCUING +RESCULPT +RESCULPTED +RESCULPTING +RESCULPTS +RESEAL +RESEALABLE +RESEALED +RESEALING +RESEALS +RESEARCH +RESEARCHABLE +RESEARCHED +RESEARCHER +RESEARCHERS +RESEARCHES +RESEARCHING +RESEARCHIST +RESEARCHISTS +RESEASON +RESEASONED +RESEASONING +RESEASONS +RESEAT +RESEATED +RESEATING +RESEATS +RESEAU +RESEAUS +RESEAUX +RESECT +RESECTABILITIES +RESECTABILITY +RESECTABLE +RESECTED +RESECTING +RESECTION +RESECTIONS +RESECTS +RESECURE +RESECURED +RESECURES +RESECURING +RESEDA +RESEDAS +RESEE +RESEED +RESEEDED +RESEEDING +RESEEDS +RESEEING +RESEEK +RESEEKING +RESEEKS +RESEEN +RESEES +RESEGREGATE +RESEGREGATED +RESEGREGATES +RESEGREGATING +RESEGREGATION +RESEGREGATIONS +RESEIZE +RESEIZED +RESEIZES +RESEIZING +RESEIZURE +RESEIZURES +RESELECT +RESELECTED +RESELECTING +RESELECTS +RESELL +RESELLER +RESELLERS +RESELLING +RESELLS +RESEMBLANCE +RESEMBLANCES +RESEMBLANT +RESEMBLE +RESEMBLED +RESEMBLER +RESEMBLERS +RESEMBLES +RESEMBLING +RESEND +RESENDING +RESENDS +RESENSITIZE +RESENSITIZED +RESENSITIZES +RESENSITIZING +RESENT +RESENTED +RESENTENCE +RESENTENCED +RESENTENCES +RESENTENCING +RESENTFUL +RESENTFULLY +RESENTFULNESS +RESENTFULNESSES +RESENTING +RESENTIVE +RESENTMENT +RESENTMENTS +RESENTS +RESERPINE +RESERPINES +RESERVABLE +RESERVATION +RESERVATIONIST +RESERVATIONISTS +RESERVATIONS +RESERVE +RESERVED +RESERVEDLY +RESERVEDNESS +RESERVEDNESSES +RESERVER +RESERVERS +RESERVES +RESERVICE +RESERVICED +RESERVICES +RESERVICING +RESERVING +RESERVIST +RESERVISTS +RESERVOIR +RESERVOIRS +RESET +RESETS +RESETTABLE +RESETTER +RESETTERS +RESETTING +RESETTLE +RESETTLED +RESETTLEMENT +RESETTLEMENTS +RESETTLES +RESETTLING +RESEW +RESEWED +RESEWING +RESEWN +RESEWS +RESH +RESHAPE +RESHAPED +RESHAPER +RESHAPERS +RESHAPES +RESHAPING +RESHARPEN +RESHARPENED +RESHARPENING +RESHARPENS +RESHAVE +RESHAVED +RESHAVEN +RESHAVES +RESHAVING +RESHES +RESHINE +RESHINED +RESHINES +RESHINGLE +RESHINGLED +RESHINGLES +RESHINGLING +RESHINING +RESHIP +RESHIPPED +RESHIPPER +RESHIPPERS +RESHIPPING +RESHIPS +RESHOD +RESHOE +RESHOED +RESHOEING +RESHOES +RESHONE +RESHOOT +RESHOOTING +RESHOOTS +RESHOT +RESHOW +RESHOWED +RESHOWER +RESHOWERED +RESHOWERING +RESHOWERS +RESHOWING +RESHOWN +RESHOWS +RESHUFFLE +RESHUFFLED +RESHUFFLES +RESHUFFLING +RESID +RESIDE +RESIDED +RESIDENCE +RESIDENCES +RESIDENCIES +RESIDENCY +RESIDENT +RESIDENTIAL +RESIDENTIALLY +RESIDENTS +RESIDER +RESIDERS +RESIDES +RESIDING +RESIDS +RESIDUA +RESIDUAL +RESIDUALLY +RESIDUALS +RESIDUARY +RESIDUE +RESIDUES +RESIDUUM +RESIDUUMS +RESIFT +RESIFTED +RESIFTING +RESIFTS +RESIGHT +RESIGHTED +RESIGHTING +RESIGHTS +RESIGN +RESIGNATION +RESIGNATIONS +RESIGNED +RESIGNEDLY +RESIGNEDNESS +RESIGNEDNESSES +RESIGNER +RESIGNERS +RESIGNING +RESIGNS +RESILE +RESILED +RESILES +RESILIENCE +RESILIENCES +RESILIENCIES +RESILIENCY +RESILIENT +RESILIENTLY +RESILIN +RESILING +RESILINS +RESILVER +RESILVERED +RESILVERING +RESILVERS +RESIN +RESINATE +RESINATED +RESINATES +RESINATING +RESINED +RESINIFIED +RESINIFIES +RESINIFY +RESINIFYING +RESINING +RESINLIKE +RESINOID +RESINOIDS +RESINOUS +RESINS +RESINY +RESIST +RESISTANCE +RESISTANCES +RESISTANT +RESISTANTS +RESISTED +RESISTER +RESISTERS +RESISTIBILITIES +RESISTIBILITY +RESISTIBLE +RESISTING +RESISTIVE +RESISTIVELY +RESISTIVENESS +RESISTIVENESSES +RESISTIVITIES +RESISTIVITY +RESISTLESS +RESISTLESSLY +RESISTLESSNESS +RESISTOR +RESISTORS +RESISTS +RESIT +RESITE +RESITED +RESITES +RESITING +RESITS +RESITTING +RESITTINGS +RESITUATE +RESITUATED +RESITUATES +RESITUATING +RESIZE +RESIZED +RESIZES +RESIZING +RESKETCH +RESKETCHED +RESKETCHES +RESKETCHING +RESLATE +RESLATED +RESLATES +RESLATING +RESMELT +RESMELTED +RESMELTING +RESMELTS +RESMOOTH +RESMOOTHED +RESMOOTHING +RESMOOTHS +RESOAK +RESOAKED +RESOAKING +RESOAKS +RESOCIALIZATION +RESOCIALIZE +RESOCIALIZED +RESOCIALIZES +RESOCIALIZING +RESOD +RESODDED +RESODDING +RESODS +RESOFTEN +RESOFTENED +RESOFTENING +RESOFTENS +RESOJET +RESOJETS +RESOLD +RESOLDER +RESOLDERED +RESOLDERING +RESOLDERS +RESOLE +RESOLED +RESOLES +RESOLIDIFIED +RESOLIDIFIES +RESOLIDIFY +RESOLIDIFYING +RESOLING +RESOLUBLE +RESOLUTE +RESOLUTELY +RESOLUTENESS +RESOLUTENESSES +RESOLUTER +RESOLUTES +RESOLUTEST +RESOLUTION +RESOLUTIONS +RESOLVABLE +RESOLVE +RESOLVED +RESOLVENT +RESOLVENTS +RESOLVER +RESOLVERS +RESOLVES +RESOLVING +RESONANCE +RESONANCES +RESONANT +RESONANTLY +RESONANTS +RESONATE +RESONATED +RESONATES +RESONATING +RESONATOR +RESONATORS +RESORB +RESORBED +RESORBING +RESORBS +RESORCIN +RESORCINOL +RESORCINOLS +RESORCINS +RESORPTION +RESORPTIONS +RESORPTIVE +RESORT +RESORTED +RESORTER +RESORTERS +RESORTING +RESORTS +RESOUGHT +RESOUND +RESOUNDED +RESOUNDING +RESOUNDINGLY +RESOUNDS +RESOURCE +RESOURCEFUL +RESOURCEFULLY +RESOURCEFULNESS +RESOURCES +RESOW +RESOWED +RESOWING +RESOWN +RESOWS +RESPACE +RESPACED +RESPACES +RESPACING +RESPADE +RESPADED +RESPADES +RESPADING +RESPEAK +RESPEAKING +RESPEAKS +RESPECIFIED +RESPECIFIES +RESPECIFY +RESPECIFYING +RESPECT +RESPECTABILITY +RESPECTABLE +RESPECTABLENESS +RESPECTABLES +RESPECTABLY +RESPECTED +RESPECTER +RESPECTERS +RESPECTFUL +RESPECTFULLY +RESPECTFULNESS +RESPECTING +RESPECTIVE +RESPECTIVELY +RESPECTIVENESS +RESPECTS +RESPELL +RESPELLED +RESPELLING +RESPELLINGS +RESPELLS +RESPELT +RESPIRABLE +RESPIRATION +RESPIRATIONS +RESPIRATOR +RESPIRATORS +RESPIRATORY +RESPIRE +RESPIRED +RESPIRES +RESPIRING +RESPIRITUALIZE +RESPIRITUALIZED +RESPIRITUALIZES +RESPIROMETER +RESPIROMETERS +RESPIROMETRIC +RESPIROMETRIES +RESPIROMETRY +RESPITE +RESPITED +RESPITES +RESPITING +RESPLENDENCE +RESPLENDENCES +RESPLENDENCIES +RESPLENDENCY +RESPLENDENT +RESPLENDENTLY +RESPLICE +RESPLICED +RESPLICES +RESPLICING +RESPLIT +RESPLITS +RESPLITTING +RESPOKE +RESPOKEN +RESPOND +RESPONDED +RESPONDENT +RESPONDENTS +RESPONDER +RESPONDERS +RESPONDING +RESPONDS +RESPONSA +RESPONSE +RESPONSES +RESPONSIBILITY +RESPONSIBLE +RESPONSIBLENESS +RESPONSIBLY +RESPONSIONS +RESPONSIVE +RESPONSIVELY +RESPONSIVENESS +RESPONSORIES +RESPONSORY +RESPONSUM +RESPOOL +RESPOOLED +RESPOOLING +RESPOOLS +RESPOT +RESPOTS +RESPOTTED +RESPOTTING +RESPRANG +RESPRAY +RESPRAYED +RESPRAYING +RESPRAYS +RESPREAD +RESPREADING +RESPREADS +RESPRING +RESPRINGING +RESPRINGS +RESPROUT +RESPROUTED +RESPROUTING +RESPROUTS +RESPRUNG +RESSENTIMENT +RESSENTIMENTS +REST +RESTABILIZE +RESTABILIZED +RESTABILIZES +RESTABILIZING +RESTABLE +RESTABLED +RESTABLES +RESTABLING +RESTACK +RESTACKED +RESTACKING +RESTACKS +RESTAFF +RESTAFFED +RESTAFFING +RESTAFFS +RESTAGE +RESTAGED +RESTAGES +RESTAGING +RESTAMP +RESTAMPED +RESTAMPING +RESTAMPS +RESTART +RESTARTABLE +RESTARTED +RESTARTING +RESTARTS +RESTATE +RESTATED +RESTATEMENT +RESTATEMENTS +RESTATES +RESTATING +RESTATION +RESTATIONED +RESTATIONING +RESTATIONS +RESTAURANT +RESTAURANTEUR +RESTAURANTEURS +RESTAURANTS +RESTAURATEUR +RESTAURATEURS +RESTED +RESTER +RESTERS +RESTFUL +RESTFULLER +RESTFULLEST +RESTFULLY +RESTFULNESS +RESTFULNESSES +RESTIFORM +RESTIMULATE +RESTIMULATED +RESTIMULATES +RESTIMULATING +RESTIMULATION +RESTIMULATIONS +RESTING +RESTITCH +RESTITCHED +RESTITCHES +RESTITCHING +RESTITUTE +RESTITUTED +RESTITUTES +RESTITUTING +RESTITUTION +RESTITUTIONS +RESTIVE +RESTIVELY +RESTIVENESS +RESTIVENESSES +RESTLESS +RESTLESSLY +RESTLESSNESS +RESTLESSNESSES +RESTOCK +RESTOCKED +RESTOCKING +RESTOCKS +RESTOKE +RESTOKED +RESTOKES +RESTOKING +RESTORABLE +RESTORAL +RESTORALS +RESTORATION +RESTORATIONS +RESTORATIVE +RESTORATIVES +RESTORE +RESTORED +RESTORER +RESTORERS +RESTORES +RESTORING +RESTRAIN +RESTRAINABLE +RESTRAINED +RESTRAINEDLY +RESTRAINER +RESTRAINERS +RESTRAINING +RESTRAINS +RESTRAINT +RESTRAINTS +RESTRENGTHEN +RESTRENGTHENED +RESTRENGTHENING +RESTRENGTHENS +RESTRESS +RESTRESSED +RESTRESSES +RESTRESSING +RESTRETCH +RESTRETCHED +RESTRETCHES +RESTRETCHING +RESTRICKEN +RESTRICT +RESTRICTED +RESTRICTEDLY +RESTRICTING +RESTRICTION +RESTRICTIONISM +RESTRICTIONISMS +RESTRICTIONIST +RESTRICTIONISTS +RESTRICTIONS +RESTRICTIVE +RESTRICTIVELY +RESTRICTIVENESS +RESTRICTIVES +RESTRICTS +RESTRIKE +RESTRIKES +RESTRIKING +RESTRING +RESTRINGING +RESTRINGS +RESTRIVE +RESTRIVEN +RESTRIVES +RESTRIVING +RESTROOM +RESTROOMS +RESTROVE +RESTRUCK +RESTRUCTURE +RESTRUCTURED +RESTRUCTURES +RESTRUCTURING +RESTRUNG +RESTS +RESTUDIED +RESTUDIES +RESTUDY +RESTUDYING +RESTUFF +RESTUFFED +RESTUFFING +RESTUFFS +RESTYLE +RESTYLED +RESTYLES +RESTYLING +RESUBJECT +RESUBJECTED +RESUBJECTING +RESUBJECTS +RESUBMISSION +RESUBMISSIONS +RESUBMIT +RESUBMITS +RESUBMITTED +RESUBMITTING +RESULT +RESULTANT +RESULTANTLY +RESULTANTS +RESULTED +RESULTFUL +RESULTING +RESULTLESS +RESULTS +RESUMABLE +RESUME +RESUMED +RESUMER +RESUMERS +RESUMES +RESUMING +RESUMMON +RESUMMONED +RESUMMONING +RESUMMONS +RESUMPTION +RESUMPTIONS +RESUPINATE +RESUPINE +RESUPPLIED +RESUPPLIES +RESUPPLY +RESUPPLYING +RESURFACE +RESURFACED +RESURFACER +RESURFACERS +RESURFACES +RESURFACING +RESURGE +RESURGED +RESURGENCE +RESURGENCES +RESURGENT +RESURGES +RESURGING +RESURRECT +RESURRECTED +RESURRECTING +RESURRECTION +RESURRECTIONAL +RESURRECTIONIST +RESURRECTIONS +RESURRECTS +RESURVEY +RESURVEYED +RESURVEYING +RESURVEYS +RESUSCITATE +RESUSCITATED +RESUSCITATES +RESUSCITATING +RESUSCITATION +RESUSCITATIONS +RESUSCITATIVE +RESUSCITATOR +RESUSCITATORS +RESUSPEND +RESUSPENDED +RESUSPENDING +RESUSPENDS +RESWALLOW +RESWALLOWED +RESWALLOWING +RESWALLOWS +RESYNTHESES +RESYNTHESIS +RESYNTHESIZE +RESYNTHESIZED +RESYNTHESIZES +RESYNTHESIZING +RESYSTEMATIZE +RESYSTEMATIZED +RESYSTEMATIZES +RESYSTEMATIZING +RET +RETABLE +RETABLES +RETACK +RETACKED +RETACKING +RETACKLE +RETACKLED +RETACKLES +RETACKLING +RETACKS +RETAG +RETAGGED +RETAGGING +RETAGS +RETAIL +RETAILED +RETAILER +RETAILERS +RETAILING +RETAILINGS +RETAILOR +RETAILORED +RETAILORING +RETAILORS +RETAILS +RETAIN +RETAINED +RETAINER +RETAINERS +RETAINING +RETAINS +RETAKE +RETAKEN +RETAKER +RETAKERS +RETAKES +RETAKING +RETALIATE +RETALIATED +RETALIATES +RETALIATING +RETALIATION +RETALIATIONS +RETALIATIVE +RETALIATORY +RETALLIED +RETALLIES +RETALLY +RETALLYING +RETAPE +RETAPED +RETAPES +RETAPING +RETARD +RETARDANT +RETARDANTS +RETARDATE +RETARDATES +RETARDATION +RETARDATIONS +RETARDED +RETARDER +RETARDERS +RETARDING +RETARDS +RETARGET +RETARGETED +RETARGETING +RETARGETS +RETASTE +RETASTED +RETASTES +RETASTING +RETAUGHT +RETAX +RETAXED +RETAXES +RETAXING +RETCH +RETCHED +RETCHES +RETCHING +RETE +RETEACH +RETEACHES +RETEACHING +RETEAM +RETEAMED +RETEAMING +RETEAMS +RETEAR +RETEARING +RETEARS +RETELL +RETELLING +RETELLINGS +RETELLS +RETEM +RETEMPER +RETEMPERED +RETEMPERING +RETEMPERS +RETEMS +RETENE +RETENES +RETENTION +RETENTIONS +RETENTIVE +RETENTIVELY +RETENTIVENESS +RETENTIVENESSES +RETENTIVITIES +RETENTIVITY +RETEST +RETESTED +RETESTIFIED +RETESTIFIES +RETESTIFY +RETESTIFYING +RETESTING +RETESTS +RETEXTURE +RETEXTURED +RETEXTURES +RETEXTURING +RETHINK +RETHINKER +RETHINKERS +RETHINKING +RETHINKS +RETHOUGHT +RETHREAD +RETHREADED +RETHREADING +RETHREADS +RETIA +RETIAL +RETIARII +RETIARIUS +RETIARY +RETICENCE +RETICENCES +RETICENCIES +RETICENCY +RETICENT +RETICENTLY +RETICLE +RETICLES +RETICULA +RETICULAR +RETICULATE +RETICULATED +RETICULATELY +RETICULATES +RETICULATING +RETICULATION +RETICULATIONS +RETICULE +RETICULES +RETICULOCYTE +RETICULOCYTES +RETICULUM +RETICULUMS +RETIE +RETIED +RETIEING +RETIES +RETIFORM +RETIGHTEN +RETIGHTENED +RETIGHTENING +RETIGHTENS +RETILE +RETILED +RETILES +RETILING +RETIME +RETIMED +RETIMES +RETIMING +RETINA +RETINACULA +RETINACULUM +RETINAE +RETINAL +RETINALS +RETINAS +RETINE +RETINENE +RETINENES +RETINES +RETINITE +RETINITES +RETINITIDES +RETINITIS +RETINITISES +RETINOBLASTOMA +RETINOBLASTOMAS +RETINOID +RETINOIDS +RETINOL +RETINOLS +RETINOPATHIES +RETINOPATHY +RETINOSCOPIES +RETINOSCOPY +RETINOTECTAL +RETINT +RETINTED +RETINTING +RETINTS +RETINUE +RETINUED +RETINUES +RETINULA +RETINULAE +RETINULAR +RETINULAS +RETIRANT +RETIRANTS +RETIRE +RETIRED +RETIREDLY +RETIREDNESS +RETIREDNESSES +RETIREE +RETIREES +RETIREMENT +RETIREMENTS +RETIRER +RETIRERS +RETIRES +RETIRING +RETIRINGLY +RETIRINGNESS +RETIRINGNESSES +RETITLE +RETITLED +RETITLES +RETITLING +RETOLD +RETOOK +RETOOL +RETOOLED +RETOOLING +RETOOLS +RETORE +RETORN +RETORSION +RETORSIONS +RETORT +RETORTED +RETORTER +RETORTERS +RETORTING +RETORTION +RETORTIONS +RETORTS +RETOTAL +RETOTALED +RETOTALING +RETOTALLED +RETOTALLING +RETOTALS +RETOUCH +RETOUCHED +RETOUCHER +RETOUCHERS +RETOUCHES +RETOUCHING +RETRACE +RETRACED +RETRACER +RETRACERS +RETRACES +RETRACING +RETRACK +RETRACKED +RETRACKING +RETRACKS +RETRACT +RETRACTABLE +RETRACTED +RETRACTILE +RETRACTILITIES +RETRACTILITY +RETRACTING +RETRACTION +RETRACTIONS +RETRACTOR +RETRACTORS +RETRACTS +RETRAIN +RETRAINABLE +RETRAINED +RETRAINEE +RETRAINEES +RETRAINING +RETRAINS +RETRAL +RETRALLY +RETRANSFER +RETRANSFERRED +RETRANSFERRING +RETRANSFERS +RETRANSFORM +RETRANSFORMED +RETRANSFORMING +RETRANSFORMS +RETRANSLATE +RETRANSLATED +RETRANSLATES +RETRANSLATING +RETRANSLATION +RETRANSLATIONS +RETRANSMISSION +RETRANSMISSIONS +RETRANSMIT +RETRANSMITS +RETRANSMITTED +RETRANSMITTING +RETREAD +RETREADED +RETREADING +RETREADS +RETREAT +RETREATANT +RETREATANTS +RETREATED +RETREATER +RETREATERS +RETREATING +RETREATS +RETRENCH +RETRENCHED +RETRENCHES +RETRENCHING +RETRENCHMENT +RETRENCHMENTS +RETRIAL +RETRIALS +RETRIBUTION +RETRIBUTIONS +RETRIBUTIVE +RETRIBUTIVELY +RETRIBUTORY +RETRIED +RETRIES +RETRIEVABILITY +RETRIEVABLE +RETRIEVAL +RETRIEVALS +RETRIEVE +RETRIEVED +RETRIEVER +RETRIEVERS +RETRIEVES +RETRIEVING +RETRIM +RETRIMMED +RETRIMMING +RETRIMS +RETRO +RETROACT +RETROACTED +RETROACTING +RETROACTION +RETROACTIONS +RETROACTIVE +RETROACTIVELY +RETROACTIVITIES +RETROACTIVITY +RETROACTS +RETROCEDE +RETROCEDED +RETROCEDES +RETROCEDING +RETROCESSION +RETROCESSIONS +RETRODICT +RETRODICTED +RETRODICTING +RETRODICTION +RETRODICTIONS +RETRODICTIVE +RETRODICTS +RETROFIRE +RETROFIRED +RETROFIRES +RETROFIRING +RETROFIT +RETROFITS +RETROFITTED +RETROFITTING +RETROFLECTION +RETROFLECTIONS +RETROFLEX +RETROFLEXES +RETROFLEXION +RETROFLEXIONS +RETROGRADATION +RETROGRADATIONS +RETROGRADE +RETROGRADED +RETROGRADELY +RETROGRADES +RETROGRADING +RETROGRESS +RETROGRESSED +RETROGRESSES +RETROGRESSING +RETROGRESSION +RETROGRESSIONS +RETROGRESSIVE +RETROGRESSIVELY +RETRONYM +RETRONYMS +RETROPACK +RETROPACKS +RETROPERITONEAL +RETROREFLECTION +RETROREFLECTIVE +RETROREFLECTOR +RETROREFLECTORS +RETRORSE +RETROS +RETROSPECT +RETROSPECTED +RETROSPECTING +RETROSPECTION +RETROSPECTIONS +RETROSPECTIVE +RETROSPECTIVELY +RETROSPECTIVES +RETROSPECTS +RETROUSSE +RETROVERSION +RETROVERSIONS +RETROVIRAL +RETROVIRUS +RETROVIRUSES +RETRY +RETRYING +RETS +RETSINA +RETSINAS +RETTED +RETTING +RETUNE +RETUNED +RETUNES +RETUNING +RETURN +RETURNABLE +RETURNABLES +RETURNED +RETURNEE +RETURNEES +RETURNER +RETURNERS +RETURNING +RETURNS +RETUSE +RETWIST +RETWISTED +RETWISTING +RETWISTS +RETYING +RETYPE +RETYPED +RETYPES +RETYPING +REUNIFICATION +REUNIFICATIONS +REUNIFIED +REUNIFIES +REUNIFY +REUNIFYING +REUNION +REUNIONIST +REUNIONISTIC +REUNIONISTS +REUNIONS +REUNITE +REUNITED +REUNITER +REUNITERS +REUNITES +REUNITING +REUPHOLSTER +REUPHOLSTERED +REUPHOLSTERING +REUPHOLSTERS +REUPTAKE +REUPTAKES +REUSABILITIES +REUSABILITY +REUSABLE +REUSABLES +REUSE +REUSED +REUSES +REUSING +REUTILIZATION +REUTILIZATIONS +REUTILIZE +REUTILIZED +REUTILIZES +REUTILIZING +REUTTER +REUTTERED +REUTTERING +REUTTERS +REV +REVACCINATE +REVACCINATED +REVACCINATES +REVACCINATING +REVACCINATION +REVACCINATIONS +REVALIDATE +REVALIDATED +REVALIDATES +REVALIDATING +REVALIDATION +REVALIDATIONS +REVALORIZATION +REVALORIZATIONS +REVALORIZE +REVALORIZED +REVALORIZES +REVALORIZING +REVALUATE +REVALUATED +REVALUATES +REVALUATING +REVALUATION +REVALUATIONS +REVALUE +REVALUED +REVALUES +REVALUING +REVAMP +REVAMPED +REVAMPER +REVAMPERS +REVAMPING +REVAMPS +REVANCHE +REVANCHES +REVANCHISM +REVANCHISMS +REVANCHIST +REVANCHISTS +REVARNISH +REVARNISHED +REVARNISHES +REVARNISHING +REVEAL +REVEALABLE +REVEALED +REVEALER +REVEALERS +REVEALING +REVEALINGLY +REVEALMENT +REVEALMENTS +REVEALS +REVEGETATE +REVEGETATED +REVEGETATES +REVEGETATING +REVEGETATION +REVEGETATIONS +REVEHENT +REVEILLE +REVEILLES +REVEL +REVELATION +REVELATIONS +REVELATOR +REVELATORS +REVELATORY +REVELED +REVELER +REVELERS +REVELING +REVELLED +REVELLER +REVELLERS +REVELLING +REVELMENT +REVELMENTS +REVELRIES +REVELROUS +REVELRY +REVELS +REVENANT +REVENANTS +REVENGE +REVENGED +REVENGEFUL +REVENGEFULLY +REVENGEFULNESS +REVENGER +REVENGERS +REVENGES +REVENGING +REVENUAL +REVENUE +REVENUED +REVENUER +REVENUERS +REVENUES +REVERABLE +REVERB +REVERBED +REVERBERANT +REVERBERANTLY +REVERBERATE +REVERBERATED +REVERBERATES +REVERBERATING +REVERBERATION +REVERBERATIONS +REVERBERATIVE +REVERBERATORY +REVERBING +REVERBS +REVERE +REVERED +REVERENCE +REVERENCED +REVERENCER +REVERENCERS +REVERENCES +REVERENCING +REVEREND +REVERENDS +REVERENT +REVERENTIAL +REVERENTIALLY +REVERENTLY +REVERER +REVERERS +REVERES +REVERIE +REVERIES +REVERIFIED +REVERIFIES +REVERIFY +REVERIFYING +REVERING +REVERS +REVERSAL +REVERSALS +REVERSE +REVERSED +REVERSELY +REVERSER +REVERSERS +REVERSES +REVERSIBILITIES +REVERSIBILITY +REVERSIBLE +REVERSIBLES +REVERSIBLY +REVERSING +REVERSION +REVERSIONAL +REVERSIONARY +REVERSIONER +REVERSIONERS +REVERSIONS +REVERSO +REVERSOS +REVERT +REVERTANT +REVERTANTS +REVERTED +REVERTER +REVERTERS +REVERTIBLE +REVERTING +REVERTIVE +REVERTS +REVERY +REVEST +REVESTED +REVESTING +REVESTS +REVET +REVETMENT +REVETMENTS +REVETS +REVETTED +REVETTING +REVIBRATE +REVIBRATED +REVIBRATES +REVIBRATING +REVICTUAL +REVICTUALED +REVICTUALING +REVICTUALLED +REVICTUALLING +REVICTUALS +REVIEW +REVIEWABLE +REVIEWAL +REVIEWALS +REVIEWED +REVIEWER +REVIEWERS +REVIEWING +REVIEWS +REVILE +REVILED +REVILEMENT +REVILEMENTS +REVILER +REVILERS +REVILES +REVILING +REVIOLATE +REVIOLATED +REVIOLATES +REVIOLATING +REVISABLE +REVISAL +REVISALS +REVISE +REVISED +REVISER +REVISERS +REVISES +REVISING +REVISION +REVISIONARY +REVISIONISM +REVISIONISMS +REVISIONIST +REVISIONISTS +REVISIONS +REVISIT +REVISITED +REVISITING +REVISITS +REVISOR +REVISORS +REVISORY +REVISUALIZATION +REVITALISE +REVITALISED +REVITALISES +REVITALISING +REVITALIZATION +REVITALIZATIONS +REVITALIZE +REVITALIZED +REVITALIZES +REVITALIZING +REVIVABLE +REVIVAL +REVIVALISM +REVIVALISMS +REVIVALIST +REVIVALISTIC +REVIVALISTS +REVIVALS +REVIVE +REVIVED +REVIVER +REVIVERS +REVIVES +REVIVIFICATION +REVIVIFICATIONS +REVIVIFIED +REVIVIFIES +REVIVIFY +REVIVIFYING +REVIVING +REVIVISCENCE +REVIVISCENCES +REVIVISCENT +REVOCABLE +REVOCABLY +REVOCATION +REVOCATIONS +REVOICE +REVOICED +REVOICES +REVOICING +REVOKABLE +REVOKE +REVOKED +REVOKER +REVOKERS +REVOKES +REVOKING +REVOLT +REVOLTED +REVOLTER +REVOLTERS +REVOLTING +REVOLTINGLY +REVOLTS +REVOLUTE +REVOLUTION +REVOLUTIONARIES +REVOLUTIONARILY +REVOLUTIONARY +REVOLUTIONISE +REVOLUTIONISED +REVOLUTIONISES +REVOLUTIONISING +REVOLUTIONIST +REVOLUTIONISTS +REVOLUTIONIZE +REVOLUTIONIZED +REVOLUTIONIZER +REVOLUTIONIZERS +REVOLUTIONIZES +REVOLUTIONIZING +REVOLUTIONS +REVOLVABLE +REVOLVE +REVOLVED +REVOLVER +REVOLVERS +REVOLVES +REVOLVING +REVOTE +REVOTED +REVOTES +REVOTING +REVS +REVUE +REVUES +REVUIST +REVUISTS +REVULSED +REVULSION +REVULSIONS +REVULSIVE +REVVED +REVVING +REWAKE +REWAKED +REWAKEN +REWAKENED +REWAKENING +REWAKENS +REWAKES +REWAKING +REWAN +REWARD +REWARDABLE +REWARDED +REWARDER +REWARDERS +REWARDING +REWARDINGLY +REWARDS +REWARM +REWARMED +REWARMING +REWARMS +REWASH +REWASHED +REWASHES +REWASHING +REWAX +REWAXED +REWAXES +REWAXING +REWEAR +REWEARING +REWEARS +REWEAVE +REWEAVED +REWEAVES +REWEAVING +REWED +REWEDDED +REWEDDING +REWEDS +REWEIGH +REWEIGHED +REWEIGHING +REWEIGHS +REWELD +REWELDED +REWELDING +REWELDS +REWET +REWETS +REWETTED +REWETTING +REWIDEN +REWIDENED +REWIDENING +REWIDENS +REWIN +REWIND +REWINDED +REWINDER +REWINDERS +REWINDING +REWINDS +REWINNING +REWINS +REWIRE +REWIRED +REWIRES +REWIRING +REWOKE +REWOKEN +REWON +REWORD +REWORDED +REWORDING +REWORDS +REWORE +REWORK +REWORKED +REWORKING +REWORKS +REWORN +REWOUND +REWOVE +REWOVEN +REWRAP +REWRAPPED +REWRAPPING +REWRAPS +REWRAPT +REWRITE +REWRITER +REWRITERS +REWRITES +REWRITING +REWRITTEN +REWROTE +REWROUGHT +REX +REXES +REXINE +REXINES +REYNARD +REYNARDS +REZERO +REZEROED +REZEROES +REZEROING +REZEROS +REZONE +REZONED +REZONES +REZONING +RHABDOCOELE +RHABDOCOELES +RHABDOM +RHABDOMAL +RHABDOMANCER +RHABDOMANCERS +RHABDOMANCIES +RHABDOMANCY +RHABDOME +RHABDOMERE +RHABDOMERES +RHABDOMES +RHABDOMS +RHABDOVIRUS +RHABDOVIRUSES +RHACHIDES +RHACHIS +RHACHISES +RHADAMANTHINE +RHAMNOSE +RHAMNOSES +RHAMNUS +RHAMNUSES +RHAPHAE +RHAPHE +RHAPHES +RHAPSODE +RHAPSODES +RHAPSODIC +RHAPSODICAL +RHAPSODICALLY +RHAPSODIES +RHAPSODIST +RHAPSODISTS +RHAPSODIZE +RHAPSODIZED +RHAPSODIZES +RHAPSODIZING +RHAPSODY +RHATANIES +RHATANY +RHEA +RHEAS +RHEBOK +RHEBOKS +RHEMATIC +RHEME +RHEMES +RHENIUM +RHENIUMS +RHEOBASE +RHEOBASES +RHEOBASIC +RHEOLOGIC +RHEOLOGICAL +RHEOLOGICALLY +RHEOLOGIES +RHEOLOGIST +RHEOLOGISTS +RHEOLOGY +RHEOMETER +RHEOMETERS +RHEOPHIL +RHEOPHILE +RHEOPHILES +RHEOSTAT +RHEOSTATIC +RHEOSTATS +RHEOTAXES +RHEOTAXIS +RHESUS +RHESUSES +RHETOR +RHETORIC +RHETORICAL +RHETORICALLY +RHETORICIAN +RHETORICIANS +RHETORICS +RHETORS +RHEUM +RHEUMATIC +RHEUMATICALLY +RHEUMATICS +RHEUMATISM +RHEUMATISMS +RHEUMATIZ +RHEUMATIZES +RHEUMATOID +RHEUMATOLOGIES +RHEUMATOLOGIST +RHEUMATOLOGISTS +RHEUMATOLOGY +RHEUMIC +RHEUMIER +RHEUMIEST +RHEUMS +RHEUMY +RHIGOLENE +RHIGOLENES +RHINAL +RHINENCEPHALA +RHINENCEPHALIC +RHINENCEPHALON +RHINESTONE +RHINESTONED +RHINESTONES +RHINITIDES +RHINITIS +RHINO +RHINOCERI +RHINOCEROS +RHINOCEROSES +RHINOLOGIES +RHINOLOGY +RHINOPLASTIES +RHINOPLASTY +RHINOS +RHINOSCOPIES +RHINOSCOPY +RHINOVIRUS +RHINOVIRUSES +RHIZOBIA +RHIZOBIAL +RHIZOBIUM +RHIZOCTONIA +RHIZOCTONIAS +RHIZOID +RHIZOIDAL +RHIZOIDS +RHIZOMA +RHIZOMATA +RHIZOMATOUS +RHIZOME +RHIZOMES +RHIZOMIC +RHIZOPI +RHIZOPLANE +RHIZOPLANES +RHIZOPOD +RHIZOPODS +RHIZOPUS +RHIZOPUSES +RHIZOSPHERE +RHIZOSPHERES +RHIZOTOMIES +RHIZOTOMY +RHO +RHODAMIN +RHODAMINE +RHODAMINES +RHODAMINS +RHODIC +RHODIUM +RHODIUMS +RHODOCHROSITE +RHODOCHROSITES +RHODODENDRON +RHODODENDRONS +RHODOLITE +RHODOLITES +RHODOMONTADE +RHODOMONTADES +RHODONITE +RHODONITES +RHODOPSIN +RHODOPSINS +RHODORA +RHODORAS +RHOMB +RHOMBENCEPHALA +RHOMBENCEPHALON +RHOMBI +RHOMBIC +RHOMBICAL +RHOMBOHEDRA +RHOMBOHEDRAL +RHOMBOHEDRON +RHOMBOHEDRONS +RHOMBOID +RHOMBOIDAL +RHOMBOIDEI +RHOMBOIDEUS +RHOMBOIDS +RHOMBS +RHOMBUS +RHOMBUSES +RHONCHAL +RHONCHI +RHONCHIAL +RHONCHUS +RHOS +RHOTACISM +RHOTACISMS +RHOTIC +RHUBARB +RHUBARBS +RHUMB +RHUMBA +RHUMBAED +RHUMBAING +RHUMBAS +RHUMBS +RHUS +RHUSES +RHYME +RHYMED +RHYMELESS +RHYMER +RHYMERS +RHYMES +RHYMESTER +RHYMESTERS +RHYMING +RHYOLITE +RHYOLITES +RHYOLITIC +RHYTA +RHYTHM +RHYTHMIC +RHYTHMICAL +RHYTHMICALLY +RHYTHMICITIES +RHYTHMICITY +RHYTHMICS +RHYTHMIST +RHYTHMISTS +RHYTHMIZATION +RHYTHMIZATIONS +RHYTHMIZE +RHYTHMIZED +RHYTHMIZES +RHYTHMIZING +RHYTHMS +RHYTIDOME +RHYTIDOMES +RHYTON +RHYTONS +RIA +RIAL +RIALS +RIALTO +RIALTOS +RIANT +RIANTLY +RIAS +RIATA +RIATAS +RIB +RIBALD +RIBALDLY +RIBALDRIES +RIBALDRY +RIBALDS +RIBAND +RIBANDS +RIBAVIRIN +RIBAVIRINS +RIBBAND +RIBBANDS +RIBBED +RIBBER +RIBBERS +RIBBIER +RIBBIEST +RIBBING +RIBBINGS +RIBBON +RIBBONED +RIBBONFISH +RIBBONFISHES +RIBBONING +RIBBONLIKE +RIBBONS +RIBBONY +RIBBY +RIBES +RIBGRASS +RIBGRASSES +RIBIER +RIBIERS +RIBLESS +RIBLET +RIBLETS +RIBLIKE +RIBOFLAVIN +RIBOFLAVINS +RIBONUCLEASE +RIBONUCLEASES +RIBONUCLEOSIDE +RIBONUCLEOSIDES +RIBONUCLEOTIDE +RIBONUCLEOTIDES +RIBOSE +RIBOSES +RIBOSOMAL +RIBOSOME +RIBOSOMES +RIBOZYMAL +RIBOZYME +RIBOZYMES +RIBS +RIBWORT +RIBWORTS +RICE +RICEBIRD +RICEBIRDS +RICED +RICER +RICERCAR +RICERCARE +RICERCARI +RICERCARS +RICERS +RICES +RICH +RICHEN +RICHENED +RICHENING +RICHENS +RICHER +RICHES +RICHEST +RICHLY +RICHNESS +RICHNESSES +RICHWEED +RICHWEEDS +RICIN +RICING +RICINS +RICINUS +RICINUSES +RICK +RICKED +RICKETIER +RICKETIEST +RICKETS +RICKETTSIA +RICKETTSIAE +RICKETTSIAL +RICKETTSIAS +RICKETY +RICKEY +RICKEYS +RICKING +RICKRACK +RICKRACKS +RICKS +RICKSHA +RICKSHAS +RICKSHAW +RICKSHAWS +RICOCHET +RICOCHETED +RICOCHETING +RICOCHETS +RICOCHETTED +RICOCHETTING +RICOTTA +RICOTTAS +RICRAC +RICRACS +RICTAL +RICTUS +RICTUSES +RID +RIDABLE +RIDDANCE +RIDDANCES +RIDDED +RIDDEN +RIDDER +RIDDERS +RIDDING +RIDDLE +RIDDLED +RIDDLER +RIDDLERS +RIDDLES +RIDDLING +RIDE +RIDEABLE +RIDENT +RIDER +RIDERLESS +RIDERS +RIDERSHIP +RIDERSHIPS +RIDES +RIDGE +RIDGEBACK +RIDGEBACKS +RIDGED +RIDGEL +RIDGELINE +RIDGELINES +RIDGELING +RIDGELINGS +RIDGELS +RIDGEPOLE +RIDGEPOLES +RIDGES +RIDGETOP +RIDGETOPS +RIDGIER +RIDGIEST +RIDGIL +RIDGILS +RIDGING +RIDGLING +RIDGLINGS +RIDGY +RIDICULE +RIDICULED +RIDICULER +RIDICULERS +RIDICULES +RIDICULING +RIDICULOUS +RIDICULOUSLY +RIDICULOUSNESS +RIDING +RIDINGS +RIDLEY +RIDLEYS +RIDOTTO +RIDOTTOS +RIDS +RIEL +RIELS +RIESLING +RIESLINGS +RIEVER +RIEVERS +RIF +RIFAMPICIN +RIFAMPICINS +RIFAMPIN +RIFAMPINS +RIFAMYCIN +RIFAMYCINS +RIFE +RIFELY +RIFENESS +RIFENESSES +RIFER +RIFEST +RIFF +RIFFED +RIFFING +RIFFLE +RIFFLED +RIFFLER +RIFFLERS +RIFFLES +RIFFLING +RIFFRAFF +RIFFRAFFS +RIFFS +RIFLE +RIFLEBIRD +RIFLEBIRDS +RIFLED +RIFLEMAN +RIFLEMEN +RIFLER +RIFLERIES +RIFLERS +RIFLERY +RIFLES +RIFLING +RIFLINGS +RIFLIP +RIFLIPS +RIFS +RIFT +RIFTED +RIFTING +RIFTLESS +RIFTS +RIG +RIGADOON +RIGADOONS +RIGAMAROLE +RIGAMAROLES +RIGATONI +RIGATONIS +RIGAUDON +RIGAUDONS +RIGGED +RIGGER +RIGGERS +RIGGING +RIGGINGS +RIGHT +RIGHTED +RIGHTEOUS +RIGHTEOUSLY +RIGHTEOUSNESS +RIGHTEOUSNESSES +RIGHTER +RIGHTERS +RIGHTEST +RIGHTFUL +RIGHTFULLY +RIGHTFULNESS +RIGHTFULNESSES +RIGHTIES +RIGHTING +RIGHTISM +RIGHTISMS +RIGHTIST +RIGHTISTS +RIGHTLY +RIGHTMOST +RIGHTNESS +RIGHTNESSES +RIGHTO +RIGHTS +RIGHTSIZE +RIGHTSIZED +RIGHTSIZES +RIGHTSIZING +RIGHTWARD +RIGHTY +RIGID +RIGIDIFICATION +RIGIDIFICATIONS +RIGIDIFIED +RIGIDIFIES +RIGIDIFY +RIGIDIFYING +RIGIDITIES +RIGIDITY +RIGIDLY +RIGIDNESS +RIGIDNESSES +RIGMAROLE +RIGMAROLES +RIGOR +RIGORISM +RIGORISMS +RIGORIST +RIGORISTIC +RIGORISTS +RIGOROUS +RIGOROUSLY +RIGOROUSNESS +RIGOROUSNESSES +RIGORS +RIGOUR +RIGOURS +RIGS +RIJSTAFEL +RIJSTAFELS +RIJSTTAFEL +RIJSTTAFELS +RIKISHA +RIKISHAS +RIKSHAW +RIKSHAWS +RILE +RILED +RILES +RILEY +RILIEVI +RILIEVO +RILING +RILL +RILLE +RILLED +RILLES +RILLET +RILLETS +RILLETTES +RILLING +RILLS +RIM +RIME +RIMED +RIMER +RIMERS +RIMES +RIMESTER +RIMESTERS +RIMFIRE +RIMFIRES +RIMIER +RIMIEST +RIMINESS +RIMINESSES +RIMING +RIMLAND +RIMLANDS +RIMLESS +RIMMED +RIMMER +RIMMERS +RIMMING +RIMOSE +RIMOSELY +RIMOSITIES +RIMOSITY +RIMOUS +RIMPLE +RIMPLED +RIMPLES +RIMPLING +RIMROCK +RIMROCKS +RIMS +RIMSHOT +RIMSHOTS +RIMY +RIN +RIND +RINDED +RINDERPEST +RINDERPESTS +RINDLESS +RINDS +RINDY +RING +RINGBARK +RINGBARKED +RINGBARKING +RINGBARKS +RINGBOLT +RINGBOLTS +RINGBONE +RINGBONES +RINGDOVE +RINGDOVES +RINGED +RINGENT +RINGER +RINGERS +RINGGIT +RINGGITS +RINGHALS +RINGHALSES +RINGING +RINGINGLY +RINGLEADER +RINGLEADERS +RINGLET +RINGLETED +RINGLETS +RINGLIKE +RINGMASTER +RINGMASTERS +RINGNECK +RINGNECKS +RINGS +RINGSIDE +RINGSIDES +RINGSTRAKED +RINGTAIL +RINGTAILS +RINGTAW +RINGTAWS +RINGTOSS +RINGTOSSES +RINGWORM +RINGWORMS +RINK +RINKS +RINNING +RINS +RINSABLE +RINSE +RINSED +RINSER +RINSERS +RINSES +RINSIBLE +RINSING +RINSINGS +RIOJA +RIOJAS +RIOT +RIOTED +RIOTER +RIOTERS +RIOTING +RIOTOUS +RIOTOUSLY +RIOTOUSNESS +RIOTOUSNESSES +RIOTS +RIP +RIPARIAN +RIPCORD +RIPCORDS +RIPE +RIPED +RIPELY +RIPEN +RIPENED +RIPENER +RIPENERS +RIPENESS +RIPENESSES +RIPENING +RIPENS +RIPER +RIPES +RIPEST +RIPIENI +RIPIENO +RIPIENOS +RIPING +RIPOFF +RIPOFFS +RIPOST +RIPOSTE +RIPOSTED +RIPOSTES +RIPOSTING +RIPOSTS +RIPPABLE +RIPPED +RIPPER +RIPPERS +RIPPING +RIPPINGLY +RIPPLE +RIPPLED +RIPPLER +RIPPLERS +RIPPLES +RIPPLET +RIPPLETS +RIPPLIER +RIPPLIEST +RIPPLING +RIPPLY +RIPRAP +RIPRAPPED +RIPRAPPING +RIPRAPS +RIPS +RIPSAW +RIPSAWED +RIPSAWING +RIPSAWN +RIPSAWS +RIPSNORTER +RIPSNORTERS +RIPSNORTING +RIPSTOP +RIPSTOPS +RIPTIDE +RIPTIDES +RISE +RISEN +RISER +RISERS +RISES +RISHI +RISHIS +RISIBILITIES +RISIBILITY +RISIBLE +RISIBLES +RISIBLY +RISING +RISINGS +RISK +RISKED +RISKER +RISKERS +RISKIER +RISKIEST +RISKILY +RISKINESS +RISKINESSES +RISKING +RISKLESS +RISKS +RISKY +RISORGIMENTO +RISORGIMENTOS +RISOTTO +RISOTTOS +RISQUE +RISSOLE +RISSOLES +RISTRA +RISTRAS +RISUS +RISUSES +RITARD +RITARDANDO +RITARDANDOS +RITARDS +RITE +RITES +RITONAVIR +RITONAVIRS +RITORNELLI +RITORNELLO +RITORNELLOS +RITTER +RITTERS +RITUAL +RITUALISM +RITUALISMS +RITUALIST +RITUALISTIC +RITUALISTICALLY +RITUALISTS +RITUALIZATION +RITUALIZATIONS +RITUALIZE +RITUALIZED +RITUALIZES +RITUALIZING +RITUALLY +RITUALS +RITZ +RITZES +RITZIER +RITZIEST +RITZILY +RITZINESS +RITZINESSES +RITZY +RIVAGE +RIVAGES +RIVAL +RIVALED +RIVALING +RIVALLED +RIVALLING +RIVALRIES +RIVALROUS +RIVALRY +RIVALS +RIVE +RIVED +RIVEN +RIVER +RIVERBANK +RIVERBANKS +RIVERBED +RIVERBEDS +RIVERBOAT +RIVERBOATS +RIVERFRONT +RIVERFRONTS +RIVERHEAD +RIVERHEADS +RIVERINE +RIVERLESS +RIVERLIKE +RIVERS +RIVERSIDE +RIVERSIDES +RIVERWARD +RIVERWARDS +RIVERWEED +RIVERWEEDS +RIVES +RIVET +RIVETED +RIVETER +RIVETERS +RIVETING +RIVETINGLY +RIVETS +RIVETTED +RIVETTING +RIVIERA +RIVIERAS +RIVIERE +RIVIERES +RIVING +RIVULET +RIVULETS +RIVULOSE +RIYAL +RIYALS +ROACH +ROACHED +ROACHES +ROACHING +ROAD +ROADABILITIES +ROADABILITY +ROADBED +ROADBEDS +ROADBLOCK +ROADBLOCKED +ROADBLOCKING +ROADBLOCKS +ROADEO +ROADEOS +ROADHOLDING +ROADHOLDINGS +ROADHOUSE +ROADHOUSES +ROADIE +ROADIES +ROADKILL +ROADKILLS +ROADLESS +ROADRUNNER +ROADRUNNERS +ROADS +ROADSHOW +ROADSHOWS +ROADSIDE +ROADSIDES +ROADSTEAD +ROADSTEADS +ROADSTER +ROADSTERS +ROADWAY +ROADWAYS +ROADWORK +ROADWORKS +ROADWORTHINESS +ROADWORTHY +ROAM +ROAMED +ROAMER +ROAMERS +ROAMING +ROAMS +ROAN +ROANS +ROAR +ROARED +ROARER +ROARERS +ROARING +ROARINGLY +ROARINGS +ROARS +ROAST +ROASTED +ROASTER +ROASTERS +ROASTING +ROASTS +ROB +ROBALO +ROBALOS +ROBAND +ROBANDS +ROBBED +ROBBER +ROBBERIES +ROBBERS +ROBBERY +ROBBIN +ROBBING +ROBBINS +ROBE +ROBED +ROBES +ROBIN +ROBING +ROBINS +ROBLE +ROBLES +ROBORANT +ROBORANTS +ROBOT +ROBOTIC +ROBOTICALLY +ROBOTICS +ROBOTISM +ROBOTISMS +ROBOTIZATION +ROBOTIZATIONS +ROBOTIZE +ROBOTIZED +ROBOTIZES +ROBOTIZING +ROBOTRIES +ROBOTRY +ROBOTS +ROBS +ROBUST +ROBUSTA +ROBUSTAS +ROBUSTER +ROBUSTEST +ROBUSTIOUS +ROBUSTIOUSLY +ROBUSTIOUSNESS +ROBUSTLY +ROBUSTNESS +ROBUSTNESSES +ROC +ROCAILLE +ROCAILLES +ROCAMBOLE +ROCAMBOLES +ROCHET +ROCHETS +ROCK +ROCKABIES +ROCKABILLIES +ROCKABILLY +ROCKABLE +ROCKABY +ROCKABYE +ROCKABYES +ROCKAWAY +ROCKAWAYS +ROCKBOUND +ROCKED +ROCKER +ROCKERIES +ROCKERS +ROCKERY +ROCKET +ROCKETED +ROCKETEER +ROCKETEERS +ROCKETER +ROCKETERS +ROCKETING +ROCKETRIES +ROCKETRY +ROCKETS +ROCKFALL +ROCKFALLS +ROCKFISH +ROCKFISHES +ROCKHOPPER +ROCKHOPPERS +ROCKHOUND +ROCKHOUNDING +ROCKHOUNDINGS +ROCKHOUNDS +ROCKIER +ROCKIEST +ROCKINESS +ROCKINESSES +ROCKING +ROCKINGLY +ROCKLESS +ROCKLIKE +ROCKLING +ROCKLINGS +ROCKOON +ROCKOONS +ROCKROSE +ROCKROSES +ROCKS +ROCKSHAFT +ROCKSHAFTS +ROCKSLIDE +ROCKSLIDES +ROCKWEED +ROCKWEEDS +ROCKWORK +ROCKWORKS +ROCKY +ROCOCO +ROCOCOS +ROCS +ROD +RODDED +RODDING +RODE +RODENT +RODENTICIDE +RODENTICIDES +RODENTS +RODEO +RODEOED +RODEOING +RODEOS +RODES +RODLESS +RODLIKE +RODMAN +RODMEN +RODOMONTADE +RODOMONTADES +RODS +RODSMAN +RODSMEN +ROE +ROEBUCK +ROEBUCKS +ROENTGEN +ROENTGENOGRAM +ROENTGENOGRAMS +ROENTGENOGRAPHY +ROENTGENOLOGIC +ROENTGENOLOGIES +ROENTGENOLOGIST +ROENTGENOLOGY +ROENTGENS +ROES +ROGATION +ROGATIONS +ROGATORY +ROGER +ROGERED +ROGERING +ROGERS +ROGUE +ROGUED +ROGUEING +ROGUERIES +ROGUERY +ROGUES +ROGUING +ROGUISH +ROGUISHLY +ROGUISHNESS +ROGUISHNESSES +ROIL +ROILED +ROILIER +ROILIEST +ROILING +ROILS +ROILY +ROISTER +ROISTERED +ROISTERER +ROISTERERS +ROISTERING +ROISTEROUS +ROISTEROUSLY +ROISTERS +ROLAMITE +ROLAMITES +ROLE +ROLES +ROLF +ROLFED +ROLFER +ROLFERS +ROLFING +ROLFS +ROLL +ROLLAWAY +ROLLAWAYS +ROLLBACK +ROLLBACKS +ROLLED +ROLLER +ROLLERS +ROLLICK +ROLLICKED +ROLLICKING +ROLLICKS +ROLLICKY +ROLLING +ROLLINGS +ROLLMOP +ROLLMOPS +ROLLOUT +ROLLOUTS +ROLLOVER +ROLLOVERS +ROLLS +ROLLTOP +ROLLWAY +ROLLWAYS +ROM +ROMAINE +ROMAINES +ROMAJI +ROMAJIS +ROMAN +ROMANCE +ROMANCED +ROMANCER +ROMANCERS +ROMANCES +ROMANCING +ROMANISE +ROMANISED +ROMANISES +ROMANISING +ROMANIZATION +ROMANIZATIONS +ROMANIZE +ROMANIZED +ROMANIZES +ROMANIZING +ROMANO +ROMANOS +ROMANS +ROMANTIC +ROMANTICALLY +ROMANTICISE +ROMANTICISED +ROMANTICISES +ROMANTICISING +ROMANTICISM +ROMANTICISMS +ROMANTICIST +ROMANTICISTS +ROMANTICIZATION +ROMANTICIZE +ROMANTICIZED +ROMANTICIZES +ROMANTICIZING +ROMANTICS +ROMAUNT +ROMAUNTS +ROMELDALE +ROMELDALES +ROMEO +ROMEOS +ROMP +ROMPED +ROMPER +ROMPERS +ROMPING +ROMPINGLY +ROMPISH +ROMPS +ROMS +RONDEAU +RONDEAUX +RONDEL +RONDELET +RONDELETS +RONDELLE +RONDELLES +RONDELS +RONDO +RONDOS +RONDURE +RONDURES +RONION +RONIONS +RONNEL +RONNELS +RONTGEN +RONTGENS +RONYON +RONYONS +ROOD +ROODS +ROOF +ROOFED +ROOFER +ROOFERS +ROOFIE +ROOFIES +ROOFING +ROOFINGS +ROOFLESS +ROOFLIKE +ROOFLINE +ROOFLINES +ROOFS +ROOFTOP +ROOFTOPS +ROOFTREE +ROOFTREES +ROOK +ROOKED +ROOKERIES +ROOKERY +ROOKIE +ROOKIER +ROOKIES +ROOKIEST +ROOKING +ROOKS +ROOKY +ROOM +ROOMED +ROOMER +ROOMERS +ROOMETTE +ROOMETTES +ROOMFUL +ROOMFULS +ROOMIE +ROOMIER +ROOMIES +ROOMIEST +ROOMILY +ROOMINESS +ROOMINESSES +ROOMING +ROOMMATE +ROOMMATES +ROOMS +ROOMY +ROORBACH +ROORBACHS +ROORBACK +ROORBACKS +ROOSE +ROOSED +ROOSER +ROOSERS +ROOSES +ROOSING +ROOST +ROOSTED +ROOSTER +ROOSTERS +ROOSTING +ROOSTS +ROOT +ROOTAGE +ROOTAGES +ROOTCAP +ROOTCAPS +ROOTED +ROOTEDNESS +ROOTEDNESSES +ROOTER +ROOTERS +ROOTHOLD +ROOTHOLDS +ROOTIER +ROOTIEST +ROOTINESS +ROOTINESSES +ROOTING +ROOTLE +ROOTLED +ROOTLES +ROOTLESS +ROOTLESSNESS +ROOTLESSNESSES +ROOTLET +ROOTLETS +ROOTLIKE +ROOTLING +ROOTS +ROOTSTALK +ROOTSTALKS +ROOTSTOCK +ROOTSTOCKS +ROOTWORM +ROOTWORMS +ROOTY +ROPABLE +ROPE +ROPED +ROPEDANCER +ROPEDANCERS +ROPEDANCING +ROPEDANCINGS +ROPELIKE +ROPER +ROPERIES +ROPERS +ROPERY +ROPES +ROPEWALK +ROPEWALKER +ROPEWALKERS +ROPEWALKS +ROPEWAY +ROPEWAYS +ROPEY +ROPIER +ROPIEST +ROPILY +ROPINESS +ROPINESSES +ROPING +ROPY +ROQUE +ROQUELAURE +ROQUELAURES +ROQUES +ROQUET +ROQUETED +ROQUETING +ROQUETS +ROQUETTE +ROQUETTES +RORQUAL +RORQUALS +ROSACEA +ROSACEAS +ROSACEOUS +ROSANILIN +ROSANILINS +ROSARIA +ROSARIAN +ROSARIANS +ROSARIES +ROSARIUM +ROSARIUMS +ROSARY +ROSCOE +ROSCOES +ROSE +ROSEATE +ROSEATELY +ROSEBAY +ROSEBAYS +ROSEBUD +ROSEBUDS +ROSEBUSH +ROSEBUSHES +ROSED +ROSEFISH +ROSEFISHES +ROSEHIP +ROSEHIPS +ROSELIKE +ROSELLE +ROSELLES +ROSEMALING +ROSEMALINGS +ROSEMARIES +ROSEMARY +ROSEOLA +ROSEOLAR +ROSEOLAS +ROSERIES +ROSEROOT +ROSEROOTS +ROSERY +ROSES +ROSESLUG +ROSESLUGS +ROSET +ROSETS +ROSETTE +ROSETTES +ROSEWATER +ROSEWOOD +ROSEWOODS +ROSHI +ROSHIS +ROSIER +ROSIEST +ROSILY +ROSIN +ROSINED +ROSINESS +ROSINESSES +ROSING +ROSINING +ROSINOL +ROSINOLS +ROSINOUS +ROSINS +ROSINWEED +ROSINWEEDS +ROSINY +ROSOLIO +ROSOLIOS +ROSTELLA +ROSTELLAR +ROSTELLUM +ROSTELLUMS +ROSTER +ROSTERS +ROSTRA +ROSTRAL +ROSTRALLY +ROSTRATE +ROSTRUM +ROSTRUMS +ROSULATE +ROSY +ROT +ROTA +ROTAMETER +ROTAMETERS +ROTARIES +ROTARY +ROTAS +ROTATABLE +ROTATE +ROTATED +ROTATES +ROTATING +ROTATION +ROTATIONAL +ROTATIONS +ROTATIVE +ROTATIVELY +ROTATOR +ROTATORES +ROTATORS +ROTATORY +ROTAVIRUS +ROTAVIRUSES +ROTCH +ROTCHE +ROTCHES +ROTE +ROTENONE +ROTENONES +ROTES +ROTGUT +ROTGUTS +ROTI +ROTIFER +ROTIFERAL +ROTIFERAN +ROTIFERANS +ROTIFERS +ROTIFORM +ROTIS +ROTISSERIE +ROTISSERIES +ROTL +ROTLS +ROTO +ROTOGRAVURE +ROTOGRAVURES +ROTOR +ROTORCRAFT +ROTORS +ROTOS +ROTOTILL +ROTOTILLED +ROTOTILLER +ROTOTILLERS +ROTOTILLING +ROTOTILLS +ROTS +ROTTE +ROTTED +ROTTEN +ROTTENER +ROTTENEST +ROTTENLY +ROTTENNESS +ROTTENNESSES +ROTTENSTONE +ROTTENSTONES +ROTTER +ROTTERS +ROTTES +ROTTING +ROTTWEILER +ROTTWEILERS +ROTUND +ROTUNDA +ROTUNDAS +ROTUNDITIES +ROTUNDITY +ROTUNDLY +ROTUNDNESS +ROTUNDNESSES +ROTURIER +ROTURIERS +ROUBLE +ROUBLES +ROUCHE +ROUCHES +ROUE +ROUEN +ROUENS +ROUES +ROUGE +ROUGED +ROUGES +ROUGH +ROUGHAGE +ROUGHAGES +ROUGHBACK +ROUGHBACKS +ROUGHCAST +ROUGHCASTING +ROUGHCASTS +ROUGHDRIED +ROUGHDRIES +ROUGHDRY +ROUGHDRYING +ROUGHED +ROUGHEN +ROUGHENED +ROUGHENING +ROUGHENS +ROUGHER +ROUGHERS +ROUGHEST +ROUGHHEW +ROUGHHEWED +ROUGHHEWING +ROUGHHEWN +ROUGHHEWS +ROUGHHOUSE +ROUGHHOUSED +ROUGHHOUSES +ROUGHHOUSING +ROUGHIES +ROUGHING +ROUGHISH +ROUGHLEG +ROUGHLEGS +ROUGHLY +ROUGHNECK +ROUGHNECKED +ROUGHNECKING +ROUGHNECKS +ROUGHNESS +ROUGHNESSES +ROUGHRIDER +ROUGHRIDERS +ROUGHS +ROUGHSHOD +ROUGHY +ROUGING +ROUILLE +ROUILLES +ROULADE +ROULADES +ROULEAU +ROULEAUS +ROULEAUX +ROULETTE +ROULETTED +ROULETTES +ROULETTING +ROUND +ROUNDABOUT +ROUNDABOUTNESS +ROUNDABOUTS +ROUNDBALL +ROUNDBALLS +ROUNDED +ROUNDEDNESS +ROUNDEDNESSES +ROUNDEL +ROUNDELAY +ROUNDELAYS +ROUNDELS +ROUNDER +ROUNDERS +ROUNDEST +ROUNDHEADED +ROUNDHEADEDNESS +ROUNDHEEL +ROUNDHEELS +ROUNDHOUSE +ROUNDHOUSES +ROUNDING +ROUNDISH +ROUNDLET +ROUNDLETS +ROUNDLY +ROUNDNESS +ROUNDNESSES +ROUNDS +ROUNDSMAN +ROUNDSMEN +ROUNDTABLE +ROUNDTABLES +ROUNDTRIP +ROUNDTRIPS +ROUNDUP +ROUNDUPS +ROUNDWOOD +ROUNDWOODS +ROUNDWORM +ROUNDWORMS +ROUP +ROUPED +ROUPET +ROUPIER +ROUPIEST +ROUPILY +ROUPING +ROUPS +ROUPY +ROUSE +ROUSEABOUT +ROUSEABOUTS +ROUSED +ROUSEMENT +ROUSEMENTS +ROUSER +ROUSERS +ROUSES +ROUSING +ROUSINGLY +ROUSSEAU +ROUSSEAUS +ROUST +ROUSTABOUT +ROUSTABOUTS +ROUSTED +ROUSTER +ROUSTERS +ROUSTING +ROUSTS +ROUT +ROUTE +ROUTED +ROUTEMAN +ROUTEMEN +ROUTER +ROUTERS +ROUTES +ROUTEWAY +ROUTEWAYS +ROUTH +ROUTHS +ROUTINE +ROUTINELY +ROUTINES +ROUTING +ROUTINISM +ROUTINISMS +ROUTINIST +ROUTINISTS +ROUTINIZATION +ROUTINIZATIONS +ROUTINIZE +ROUTINIZED +ROUTINIZES +ROUTINIZING +ROUTS +ROUX +ROVE +ROVED +ROVEN +ROVER +ROVERS +ROVES +ROVING +ROVINGLY +ROVINGS +ROW +ROWABLE +ROWAN +ROWANBERRIES +ROWANBERRY +ROWANS +ROWBOAT +ROWBOATS +ROWDIER +ROWDIES +ROWDIEST +ROWDILY +ROWDINESS +ROWDINESSES +ROWDY +ROWDYISH +ROWDYISM +ROWDYISMS +ROWED +ROWEL +ROWELED +ROWELING +ROWELLED +ROWELLING +ROWELS +ROWEN +ROWENS +ROWER +ROWERS +ROWING +ROWINGS +ROWLOCK +ROWLOCKS +ROWS +ROWTH +ROWTHS +ROYAL +ROYALISM +ROYALISMS +ROYALIST +ROYALISTS +ROYALLY +ROYALMAST +ROYALMASTS +ROYALS +ROYALTIES +ROYALTY +ROYSTER +ROYSTERED +ROYSTERING +ROYSTERS +ROZZER +ROZZERS +RUANA +RUANAS +RUB +RUBABOO +RUBABOOS +RUBACE +RUBACES +RUBAIYAT +RUBASSE +RUBASSES +RUBATI +RUBATO +RUBATOS +RUBBABOO +RUBBABOOS +RUBBED +RUBBER +RUBBERED +RUBBERIER +RUBBERIEST +RUBBERING +RUBBERIZE +RUBBERIZED +RUBBERIZES +RUBBERIZING +RUBBERLIKE +RUBBERNECK +RUBBERNECKED +RUBBERNECKER +RUBBERNECKERS +RUBBERNECKING +RUBBERNECKS +RUBBERS +RUBBERY +RUBBIES +RUBBING +RUBBINGS +RUBBISH +RUBBISHES +RUBBISHY +RUBBLE +RUBBLED +RUBBLES +RUBBLIER +RUBBLIEST +RUBBLING +RUBBLY +RUBBOARD +RUBBOARDS +RUBBY +RUBDOWN +RUBDOWNS +RUBE +RUBEFACIENT +RUBEFACIENTS +RUBEL +RUBELLA +RUBELLAS +RUBELLITE +RUBELLITES +RUBELS +RUBEOLA +RUBEOLAR +RUBEOLAS +RUBES +RUBESCENT +RUBICUND +RUBICUNDITIES +RUBICUNDITY +RUBIDIC +RUBIDIUM +RUBIDIUMS +RUBIED +RUBIER +RUBIES +RUBIEST +RUBIGO +RUBIGOS +RUBIOUS +RUBLE +RUBLES +RUBOFF +RUBOFFS +RUBOUT +RUBOUTS +RUBRIC +RUBRICAL +RUBRICALLY +RUBRICATE +RUBRICATED +RUBRICATES +RUBRICATING +RUBRICATION +RUBRICATIONS +RUBRICATOR +RUBRICATORS +RUBRICIAN +RUBRICIANS +RUBRICS +RUBS +RUBUS +RUBY +RUBYING +RUBYLIKE +RUBYTHROAT +RUBYTHROATS +RUCHE +RUCHED +RUCHES +RUCHING +RUCHINGS +RUCK +RUCKED +RUCKING +RUCKLE +RUCKLED +RUCKLES +RUCKLING +RUCKS +RUCKSACK +RUCKSACKS +RUCKUS +RUCKUSES +RUCTION +RUCTIONS +RUCTIOUS +RUDBECKIA +RUDBECKIAS +RUDD +RUDDER +RUDDERLESS +RUDDERPOST +RUDDERPOSTS +RUDDERS +RUDDIER +RUDDIEST +RUDDILY +RUDDINESS +RUDDINESSES +RUDDLE +RUDDLED +RUDDLEMAN +RUDDLEMEN +RUDDLES +RUDDLING +RUDDOCK +RUDDOCKS +RUDDS +RUDDY +RUDE +RUDELY +RUDENESS +RUDENESSES +RUDER +RUDERAL +RUDERALS +RUDERIES +RUDERY +RUDESBIES +RUDESBY +RUDEST +RUDIMENT +RUDIMENTAL +RUDIMENTARILY +RUDIMENTARINESS +RUDIMENTARY +RUDIMENTS +RUE +RUED +RUEFUL +RUEFULLY +RUEFULNESS +RUEFULNESSES +RUER +RUERS +RUES +RUFESCENT +RUFF +RUFFE +RUFFED +RUFFES +RUFFIAN +RUFFIANISM +RUFFIANISMS +RUFFIANLY +RUFFIANS +RUFFING +RUFFLE +RUFFLED +RUFFLER +RUFFLERS +RUFFLES +RUFFLIER +RUFFLIEST +RUFFLIKE +RUFFLING +RUFFLY +RUFFS +RUFIYAA +RUFOUS +RUG +RUGA +RUGAE +RUGAL +RUGALACH +RUGATE +RUGBIES +RUGBY +RUGELACH +RUGGED +RUGGEDER +RUGGEDEST +RUGGEDIZATION +RUGGEDIZATIONS +RUGGEDIZE +RUGGEDIZED +RUGGEDIZES +RUGGEDIZING +RUGGEDLY +RUGGEDNESS +RUGGEDNESSES +RUGGER +RUGGERS +RUGGING +RUGLIKE +RUGOLA +RUGOLAS +RUGOSA +RUGOSAS +RUGOSE +RUGOSELY +RUGOSITIES +RUGOSITY +RUGOUS +RUGS +RUGULOSE +RUIN +RUINABLE +RUINATE +RUINATED +RUINATES +RUINATING +RUINATION +RUINATIONS +RUINED +RUINER +RUINERS +RUING +RUINING +RUINOUS +RUINOUSLY +RUINOUSNESS +RUINOUSNESSES +RUINS +RULABLE +RULE +RULED +RULELESS +RULER +RULERS +RULERSHIP +RULERSHIPS +RULES +RULIER +RULIEST +RULING +RULINGS +RULY +RUM +RUMAKI +RUMAKIS +RUMBA +RUMBAED +RUMBAING +RUMBAS +RUMBLE +RUMBLED +RUMBLER +RUMBLERS +RUMBLES +RUMBLING +RUMBLINGS +RUMBLY +RUMBUSTIOUS +RUMBUSTIOUSLY +RUMBUSTIOUSNESS +RUMEN +RUMENS +RUMINA +RUMINAL +RUMINANT +RUMINANTLY +RUMINANTS +RUMINATE +RUMINATED +RUMINATES +RUMINATING +RUMINATION +RUMINATIONS +RUMINATIVE +RUMINATIVELY +RUMINATOR +RUMINATORS +RUMMAGE +RUMMAGED +RUMMAGER +RUMMAGERS +RUMMAGES +RUMMAGING +RUMMER +RUMMERS +RUMMEST +RUMMIER +RUMMIES +RUMMIEST +RUMMY +RUMOR +RUMORED +RUMORING +RUMORMONGER +RUMORMONGERING +RUMORMONGERINGS +RUMORMONGERS +RUMORS +RUMOUR +RUMOURED +RUMOURING +RUMOURS +RUMP +RUMPLE +RUMPLED +RUMPLES +RUMPLESS +RUMPLIER +RUMPLIEST +RUMPLING +RUMPLY +RUMPS +RUMPUS +RUMPUSES +RUMRUNNER +RUMRUNNERS +RUMS +RUN +RUNABOUT +RUNABOUTS +RUNAGATE +RUNAGATES +RUNAROUND +RUNAROUNDS +RUNAWAY +RUNAWAYS +RUNBACK +RUNBACKS +RUNCINATE +RUNDLE +RUNDLES +RUNDLET +RUNDLETS +RUNDOWN +RUNDOWNS +RUNE +RUNELIKE +RUNES +RUNG +RUNGLESS +RUNGS +RUNIC +RUNKLE +RUNKLED +RUNKLES +RUNKLING +RUNLESS +RUNLET +RUNLETS +RUNNEL +RUNNELS +RUNNER +RUNNERS +RUNNIER +RUNNIEST +RUNNINESS +RUNNINESSES +RUNNING +RUNNINGS +RUNNY +RUNOFF +RUNOFFS +RUNOUT +RUNOUTS +RUNOVER +RUNOVERS +RUNROUND +RUNROUNDS +RUNS +RUNT +RUNTIER +RUNTIEST +RUNTINESS +RUNTINESSES +RUNTISH +RUNTISHLY +RUNTS +RUNTY +RUNWAY +RUNWAYS +RUPEE +RUPEES +RUPIAH +RUPIAHS +RUPTURE +RUPTURED +RUPTURES +RUPTURING +RURAL +RURALISE +RURALISED +RURALISES +RURALISING +RURALISM +RURALISMS +RURALIST +RURALISTS +RURALITE +RURALITES +RURALITIES +RURALITY +RURALIZE +RURALIZED +RURALIZES +RURALIZING +RURALLY +RURBAN +RUSE +RUSES +RUSH +RUSHED +RUSHEE +RUSHEES +RUSHER +RUSHERS +RUSHES +RUSHIER +RUSHIEST +RUSHING +RUSHINGS +RUSHLIGHT +RUSHLIGHTS +RUSHLIKE +RUSHY +RUSINE +RUSK +RUSKS +RUSSET +RUSSETING +RUSSETINGS +RUSSETS +RUSSETTING +RUSSETTINGS +RUSSETY +RUSSIFIED +RUSSIFIES +RUSSIFY +RUSSIFYING +RUST +RUSTABLE +RUSTED +RUSTIC +RUSTICAL +RUSTICALLY +RUSTICALS +RUSTICATE +RUSTICATED +RUSTICATES +RUSTICATING +RUSTICATION +RUSTICATIONS +RUSTICATOR +RUSTICATORS +RUSTICITIES +RUSTICITY +RUSTICLY +RUSTICS +RUSTIER +RUSTIEST +RUSTILY +RUSTINESS +RUSTINESSES +RUSTING +RUSTLE +RUSTLED +RUSTLER +RUSTLERS +RUSTLES +RUSTLESS +RUSTLING +RUSTPROOF +RUSTPROOFED +RUSTPROOFING +RUSTPROOFS +RUSTS +RUSTY +RUT +RUTABAGA +RUTABAGAS +RUTH +RUTHENIC +RUTHENIUM +RUTHENIUMS +RUTHERFORDIUM +RUTHERFORDIUMS +RUTHFUL +RUTHFULLY +RUTHFULNESS +RUTHFULNESSES +RUTHLESS +RUTHLESSLY +RUTHLESSNESS +RUTHLESSNESSES +RUTHS +RUTILANT +RUTILE +RUTILES +RUTIN +RUTINS +RUTS +RUTTED +RUTTIER +RUTTIEST +RUTTILY +RUTTINESS +RUTTINESSES +RUTTING +RUTTISH +RUTTISHLY +RUTTISHNESS +RUTTISHNESSES +RUTTY +RYA +RYAS +RYE +RYEGRASS +RYEGRASSES +RYES +RYKE +RYKED +RYKES +RYKING +RYND +RYNDS +RYOKAN +RYOKANS +RYOT +RYOTS +SAB +SABADILLA +SABADILLAS +SABAL +SABALS +SABATON +SABATONS +SABAYON +SABAYONS +SABBAT +SABBATH +SABBATHS +SABBATIC +SABBATICAL +SABBATICALS +SABBATICS +SABBATS +SABBED +SABBING +SABE +SABED +SABEING +SABER +SABERED +SABERING +SABERLIKE +SABERMETRICIAN +SABERMETRICIANS +SABERMETRICS +SABERS +SABES +SABIN +SABINE +SABINES +SABINS +SABIR +SABIRS +SABLE +SABLEFISH +SABLEFISHES +SABLES +SABOT +SABOTAGE +SABOTAGED +SABOTAGES +SABOTAGING +SABOTEUR +SABOTEURS +SABOTS +SABRA +SABRAS +SABRE +SABRED +SABRES +SABRING +SABS +SABULOSE +SABULOUS +SAC +SACAHUISTA +SACAHUISTAS +SACAHUISTE +SACAHUISTES +SACATON +SACATONS +SACBUT +SACBUTS +SACCADE +SACCADES +SACCADIC +SACCATE +SACCHARASE +SACCHARASES +SACCHARIC +SACCHARIDE +SACCHARIDES +SACCHARIFIED +SACCHARIFIES +SACCHARIFY +SACCHARIFYING +SACCHARIMETER +SACCHARIMETERS +SACCHARIN +SACCHARINE +SACCHARINITIES +SACCHARINITY +SACCHARINS +SACCHAROIDAL +SACCHAROMETER +SACCHAROMETERS +SACCHAROMYCES +SACCHAROMYCETES +SACCULAR +SACCULATE +SACCULATED +SACCULATION +SACCULATIONS +SACCULE +SACCULES +SACCULI +SACCULUS +SACERDOTAL +SACERDOTALISM +SACERDOTALISMS +SACERDOTALIST +SACERDOTALISTS +SACERDOTALLY +SACHEM +SACHEMIC +SACHEMS +SACHET +SACHETED +SACHETS +SACK +SACKBUT +SACKBUTS +SACKCLOTH +SACKCLOTHS +SACKED +SACKER +SACKERS +SACKFUL +SACKFULS +SACKING +SACKINGS +SACKLIKE +SACKS +SACKSFUL +SACLIKE +SACQUE +SACQUES +SACRA +SACRAL +SACRALIZE +SACRALIZED +SACRALIZES +SACRALIZING +SACRALS +SACRAMENT +SACRAMENTAL +SACRAMENTALISM +SACRAMENTALISMS +SACRAMENTALIST +SACRAMENTALISTS +SACRAMENTALLY +SACRAMENTALS +SACRAMENTS +SACRARIA +SACRARIAL +SACRARIUM +SACRED +SACREDLY +SACREDNESS +SACREDNESSES +SACRIFICE +SACRIFICED +SACRIFICER +SACRIFICERS +SACRIFICES +SACRIFICIAL +SACRIFICIALLY +SACRIFICING +SACRILEGE +SACRILEGES +SACRILEGIOUS +SACRILEGIOUSLY +SACRING +SACRINGS +SACRIST +SACRISTAN +SACRISTANS +SACRISTIES +SACRISTS +SACRISTY +SACROILIAC +SACROILIACS +SACROSANCT +SACROSANCTITIES +SACROSANCTITY +SACRUM +SACRUMS +SACS +SAD +SADDEN +SADDENED +SADDENING +SADDENS +SADDER +SADDEST +SADDHU +SADDHUS +SADDLE +SADDLEBAG +SADDLEBAGS +SADDLEBOW +SADDLEBOWS +SADDLEBRED +SADDLEBREDS +SADDLECLOTH +SADDLECLOTHS +SADDLED +SADDLELESS +SADDLER +SADDLERIES +SADDLERS +SADDLERY +SADDLES +SADDLETREE +SADDLETREES +SADDLING +SADE +SADES +SADHE +SADHES +SADHU +SADHUS +SADI +SADIRON +SADIRONS +SADIS +SADISM +SADISMS +SADIST +SADISTIC +SADISTICALLY +SADISTS +SADLY +SADNESS +SADNESSES +SADOMASOCHISM +SADOMASOCHISMS +SADOMASOCHIST +SADOMASOCHISTIC +SADOMASOCHISTS +SAE +SAFARI +SAFARIED +SAFARIING +SAFARIS +SAFE +SAFECRACKER +SAFECRACKERS +SAFECRACKING +SAFECRACKINGS +SAFEGUARD +SAFEGUARDED +SAFEGUARDING +SAFEGUARDS +SAFEKEEPING +SAFEKEEPINGS +SAFELIGHT +SAFELIGHTS +SAFELY +SAFENESS +SAFENESSES +SAFER +SAFES +SAFEST +SAFETIED +SAFETIES +SAFETY +SAFETYING +SAFETYMAN +SAFETYMEN +SAFFLOWER +SAFFLOWERS +SAFFRON +SAFFRONS +SAFRANIN +SAFRANINE +SAFRANINES +SAFRANINS +SAFROL +SAFROLE +SAFROLES +SAFROLS +SAG +SAGA +SAGACIOUS +SAGACIOUSLY +SAGACIOUSNESS +SAGACIOUSNESSES +SAGACITIES +SAGACITY +SAGAMAN +SAGAMEN +SAGAMORE +SAGAMORES +SAGANASH +SAGANASHES +SAGAS +SAGBUT +SAGBUTS +SAGE +SAGEBRUSH +SAGEBRUSHES +SAGELY +SAGENESS +SAGENESSES +SAGER +SAGES +SAGEST +SAGGAR +SAGGARD +SAGGARDS +SAGGARED +SAGGARING +SAGGARS +SAGGED +SAGGER +SAGGERED +SAGGERING +SAGGERS +SAGGIER +SAGGIEST +SAGGING +SAGGY +SAGIER +SAGIEST +SAGITTAL +SAGITTALLY +SAGITTARIES +SAGITTARY +SAGITTATE +SAGO +SAGOS +SAGS +SAGUARO +SAGUAROS +SAGUM +SAGY +SAHIB +SAHIBS +SAHIWAL +SAHIWALS +SAHUARO +SAHUAROS +SAICE +SAICES +SAID +SAIDS +SAIGA +SAIGAS +SAIL +SAILABLE +SAILBOARD +SAILBOARDED +SAILBOARDING +SAILBOARDINGS +SAILBOARDS +SAILBOAT +SAILBOATER +SAILBOATERS +SAILBOATING +SAILBOATINGS +SAILBOATS +SAILCLOTH +SAILCLOTHS +SAILED +SAILER +SAILERS +SAILFISH +SAILFISHES +SAILING +SAILINGS +SAILLESS +SAILMAKER +SAILMAKERS +SAILOR +SAILORLY +SAILORS +SAILPLANE +SAILPLANED +SAILPLANER +SAILPLANERS +SAILPLANES +SAILPLANING +SAILS +SAIMIN +SAIMINS +SAIN +SAINED +SAINFOIN +SAINFOINS +SAINING +SAINS +SAINT +SAINTDOM +SAINTDOMS +SAINTED +SAINTHOOD +SAINTHOODS +SAINTING +SAINTLIER +SAINTLIEST +SAINTLIKE +SAINTLINESS +SAINTLINESSES +SAINTLY +SAINTS +SAINTSHIP +SAINTSHIPS +SAITH +SAITHE +SAIYID +SAIYIDS +SAJOU +SAJOUS +SAKE +SAKER +SAKERS +SAKES +SAKI +SAKIS +SAL +SALAAM +SALAAMED +SALAAMING +SALAAMS +SALABILITIES +SALABILITY +SALABLE +SALABLY +SALACIOUS +SALACIOUSLY +SALACIOUSNESS +SALACIOUSNESSES +SALACITIES +SALACITY +SALAD +SALADANG +SALADANGS +SALADS +SALAL +SALALS +SALAMANDER +SALAMANDERS +SALAMANDRINE +SALAMI +SALAMIS +SALARIAT +SALARIATS +SALARIED +SALARIES +SALARY +SALARYING +SALARYMAN +SALARYMEN +SALCHOW +SALCHOWS +SALE +SALEABLE +SALEABLY +SALEP +SALEPS +SALERATUS +SALERATUSES +SALEROOM +SALEROOMS +SALES +SALESCLERK +SALESCLERKS +SALESGIRL +SALESGIRLS +SALESLADIES +SALESLADY +SALESMAN +SALESMANSHIP +SALESMANSHIPS +SALESMEN +SALESPEOPLE +SALESPERSON +SALESPERSONS +SALESROOM +SALESROOMS +SALESWOMAN +SALESWOMEN +SALIC +SALICIN +SALICINE +SALICINES +SALICINS +SALICYLATE +SALICYLATES +SALIENCE +SALIENCES +SALIENCIES +SALIENCY +SALIENT +SALIENTLY +SALIENTS +SALIFIED +SALIFIES +SALIFY +SALIFYING +SALIMETER +SALIMETERS +SALIMETRIES +SALIMETRY +SALINA +SALINAS +SALINE +SALINES +SALINITIES +SALINITY +SALINIZATION +SALINIZATIONS +SALINIZE +SALINIZED +SALINIZES +SALINIZING +SALINOMETER +SALINOMETERS +SALIVA +SALIVARY +SALIVAS +SALIVATE +SALIVATED +SALIVATES +SALIVATING +SALIVATION +SALIVATIONS +SALIVATOR +SALIVATORS +SALL +SALLET +SALLETS +SALLIED +SALLIER +SALLIERS +SALLIES +SALLOW +SALLOWED +SALLOWER +SALLOWEST +SALLOWING +SALLOWISH +SALLOWLY +SALLOWNESS +SALLOWNESSES +SALLOWS +SALLOWY +SALLY +SALLYING +SALMAGUNDI +SALMAGUNDIS +SALMI +SALMIS +SALMON +SALMONBERRIES +SALMONBERRY +SALMONELLA +SALMONELLAE +SALMONELLAS +SALMONELLOSES +SALMONELLOSIS +SALMONID +SALMONIDS +SALMONOID +SALMONOIDS +SALMONS +SALOL +SALOLS +SALOMETER +SALOMETERS +SALON +SALONS +SALOON +SALOONS +SALOOP +SALOOPS +SALP +SALPA +SALPAE +SALPAS +SALPIAN +SALPIANS +SALPID +SALPIDS +SALPIFORM +SALPIGLOSSES +SALPIGLOSSIS +SALPINGES +SALPINGITIS +SALPINGITISES +SALPINX +SALPS +SALS +SALSA +SALSAS +SALSIFIES +SALSIFY +SALSILLA +SALSILLAS +SALT +SALTANT +SALTARELLO +SALTARELLOS +SALTATION +SALTATIONS +SALTATORIAL +SALTATORY +SALTBOX +SALTBOXES +SALTBUSH +SALTBUSHES +SALTCELLAR +SALTCELLARS +SALTCHUCK +SALTCHUCKS +SALTED +SALTER +SALTERN +SALTERNS +SALTERS +SALTEST +SALTIE +SALTIER +SALTIERS +SALTIES +SALTIEST +SALTILY +SALTIMBOCCA +SALTIMBOCCAS +SALTINE +SALTINES +SALTINESS +SALTINESSES +SALTING +SALTINGS +SALTIRE +SALTIRES +SALTISH +SALTLESS +SALTLIKE +SALTNESS +SALTNESSES +SALTPAN +SALTPANS +SALTPETER +SALTPETERS +SALTPETRE +SALTPETRES +SALTS +SALTSHAKER +SALTSHAKERS +SALTWATER +SALTWORK +SALTWORKS +SALTWORT +SALTWORTS +SALTY +SALUBRIOUS +SALUBRIOUSLY +SALUBRIOUSNESS +SALUBRITIES +SALUBRITY +SALUKI +SALUKIS +SALURETIC +SALURETICS +SALUTARILY +SALUTARINESS +SALUTARINESSES +SALUTARY +SALUTATION +SALUTATIONAL +SALUTATIONS +SALUTATORIAN +SALUTATORIANS +SALUTATORIES +SALUTATORY +SALUTE +SALUTED +SALUTER +SALUTERS +SALUTES +SALUTIFEROUS +SALUTING +SALVABLE +SALVABLY +SALVAGE +SALVAGEABILITY +SALVAGEABLE +SALVAGED +SALVAGEE +SALVAGEES +SALVAGER +SALVAGERS +SALVAGES +SALVAGING +SALVARSAN +SALVARSANS +SALVATION +SALVATIONAL +SALVATIONISM +SALVATIONISMS +SALVATIONIST +SALVATIONISTS +SALVATIONS +SALVE +SALVED +SALVER +SALVERFORM +SALVERS +SALVES +SALVIA +SALVIAS +SALVIFIC +SALVING +SALVO +SALVOED +SALVOES +SALVOING +SALVOR +SALVORS +SALVOS +SAMADHI +SAMADHIS +SAMARA +SAMARAS +SAMARITAN +SAMARITANS +SAMARIUM +SAMARIUMS +SAMARSKITE +SAMARSKITES +SAMBA +SAMBAED +SAMBAING +SAMBAL +SAMBALS +SAMBAR +SAMBARS +SAMBAS +SAMBHAR +SAMBHARS +SAMBHUR +SAMBHURS +SAMBO +SAMBOS +SAMBUCA +SAMBUCAS +SAMBUKE +SAMBUKES +SAMBUR +SAMBURS +SAME +SAMECH +SAMECHS +SAMEK +SAMEKH +SAMEKHS +SAMEKS +SAMENESS +SAMENESSES +SAMIEL +SAMIELS +SAMISEN +SAMISENS +SAMITE +SAMITES +SAMIZDAT +SAMIZDATS +SAMLET +SAMLETS +SAMOSA +SAMOSAS +SAMOVAR +SAMOVARS +SAMOYED +SAMOYEDS +SAMP +SAMPAN +SAMPANS +SAMPHIRE +SAMPHIRES +SAMPLE +SAMPLED +SAMPLER +SAMPLERS +SAMPLES +SAMPLING +SAMPLINGS +SAMPS +SAMSARA +SAMSARAS +SAMSHU +SAMSHUS +SAMURAI +SAMURAIS +SANATIVE +SANATORIA +SANATORIUM +SANATORIUMS +SANBENITO +SANBENITOS +SANCTA +SANCTIFICATION +SANCTIFICATIONS +SANCTIFIED +SANCTIFIER +SANCTIFIERS +SANCTIFIES +SANCTIFY +SANCTIFYING +SANCTIMONIES +SANCTIMONIOUS +SANCTIMONIOUSLY +SANCTIMONY +SANCTION +SANCTIONABLE +SANCTIONED +SANCTIONING +SANCTIONS +SANCTITIES +SANCTITY +SANCTUARIES +SANCTUARY +SANCTUM +SANCTUMS +SAND +SANDABLE +SANDAL +SANDALED +SANDALING +SANDALLED +SANDALLING +SANDALS +SANDALWOOD +SANDALWOODS +SANDARAC +SANDARACS +SANDBAG +SANDBAGGED +SANDBAGGER +SANDBAGGERS +SANDBAGGING +SANDBAGS +SANDBANK +SANDBANKS +SANDBAR +SANDBARS +SANDBLAST +SANDBLASTED +SANDBLASTER +SANDBLASTERS +SANDBLASTING +SANDBLASTS +SANDBOX +SANDBOXES +SANDBUR +SANDBURR +SANDBURRS +SANDBURS +SANDCRACK +SANDCRACKS +SANDDAB +SANDDABS +SANDED +SANDER +SANDERLING +SANDERLINGS +SANDERS +SANDFISH +SANDFISHES +SANDFLIES +SANDFLY +SANDGLASS +SANDGLASSES +SANDGROUSE +SANDGROUSES +SANDHI +SANDHIS +SANDHOG +SANDHOGS +SANDIER +SANDIEST +SANDINESS +SANDINESSES +SANDING +SANDLESS +SANDLIKE +SANDLING +SANDLINGS +SANDLOT +SANDLOTS +SANDLOTTER +SANDLOTTERS +SANDMAN +SANDMEN +SANDPAINTING +SANDPAINTINGS +SANDPAPER +SANDPAPERED +SANDPAPERING +SANDPAPERS +SANDPAPERY +SANDPEEP +SANDPEEPS +SANDPILE +SANDPILES +SANDPIPER +SANDPIPERS +SANDPIT +SANDPITS +SANDS +SANDSHOE +SANDSHOES +SANDSOAP +SANDSOAPS +SANDSPUR +SANDSPURS +SANDSTONE +SANDSTONES +SANDSTORM +SANDSTORMS +SANDWICH +SANDWICHED +SANDWICHES +SANDWICHING +SANDWORM +SANDWORMS +SANDWORT +SANDWORTS +SANDY +SANE +SANED +SANELY +SANENESS +SANENESSES +SANER +SANES +SANEST +SANG +SANGA +SANGAR +SANGAREE +SANGAREES +SANGARS +SANGAS +SANGER +SANGERS +SANGFROID +SANGFROIDS +SANGH +SANGHS +SANGRIA +SANGRIAS +SANGUINARIA +SANGUINARIAS +SANGUINARILY +SANGUINARY +SANGUINE +SANGUINELY +SANGUINENESS +SANGUINENESSES +SANGUINEOUS +SANGUINES +SANGUINITIES +SANGUINITY +SANICLE +SANICLES +SANIDINE +SANIDINES +SANIES +SANING +SANIOUS +SANITARIA +SANITARIAN +SANITARIANS +SANITARIES +SANITARILY +SANITARIUM +SANITARIUMS +SANITARY +SANITATE +SANITATED +SANITATES +SANITATING +SANITATION +SANITATIONS +SANITIES +SANITISE +SANITISED +SANITISES +SANITISING +SANITIZATION +SANITIZATIONS +SANITIZE +SANITIZED +SANITIZER +SANITIZERS +SANITIZES +SANITIZING +SANITORIA +SANITORIUM +SANITORIUMS +SANITY +SANJAK +SANJAKS +SANK +SANNOP +SANNOPS +SANNUP +SANNUPS +SANNYASI +SANNYASIN +SANNYASINS +SANNYASIS +SANS +SANSAR +SANSARS +SANSCULOTTE +SANSCULOTTES +SANSCULOTTIC +SANSCULOTTISH +SANSCULOTTISM +SANSCULOTTISMS +SANSEI +SANSEIS +SANSERIF +SANSERIFS +SANSEVIERIA +SANSEVIERIAS +SANTALIC +SANTALOL +SANTALOLS +SANTERA +SANTERAS +SANTERIA +SANTERIAS +SANTERO +SANTEROS +SANTIMI +SANTIMS +SANTIMU +SANTIR +SANTIRS +SANTO +SANTOL +SANTOLINA +SANTOLINAS +SANTOLS +SANTONICA +SANTONICAS +SANTONIN +SANTONINS +SANTOOR +SANTOORS +SANTOS +SANTOUR +SANTOURS +SANTUR +SANTURS +SAP +SAPAJOU +SAPAJOUS +SAPANWOOD +SAPANWOODS +SAPHEAD +SAPHEADED +SAPHEADS +SAPHENA +SAPHENAE +SAPHENAS +SAPHENOUS +SAPID +SAPIDITIES +SAPIDITY +SAPIENCE +SAPIENCES +SAPIENCIES +SAPIENCY +SAPIENS +SAPIENT +SAPIENTLY +SAPIENTS +SAPLESS +SAPLESSNESS +SAPLESSNESSES +SAPLING +SAPLINGS +SAPODILLA +SAPODILLAS +SAPOGENIN +SAPOGENINS +SAPONACEOUS +SAPONACEOUSNESS +SAPONATED +SAPONIFIABLE +SAPONIFICATION +SAPONIFICATIONS +SAPONIFIED +SAPONIFIER +SAPONIFIERS +SAPONIFIES +SAPONIFY +SAPONIFYING +SAPONIN +SAPONINE +SAPONINES +SAPONINS +SAPONITE +SAPONITES +SAPOR +SAPORIFIC +SAPOROUS +SAPORS +SAPOTA +SAPOTAS +SAPOTE +SAPOTES +SAPOUR +SAPOURS +SAPPED +SAPPER +SAPPERS +SAPPHIC +SAPPHICS +SAPPHIRE +SAPPHIRES +SAPPHIRINE +SAPPHISM +SAPPHISMS +SAPPHIST +SAPPHISTS +SAPPIER +SAPPIEST +SAPPILY +SAPPINESS +SAPPINESSES +SAPPING +SAPPY +SAPRAEMIA +SAPRAEMIAS +SAPREMIA +SAPREMIAS +SAPREMIC +SAPROBE +SAPROBES +SAPROBIAL +SAPROBIC +SAPROGENIC +SAPROGENICITIES +SAPROGENICITY +SAPROLITE +SAPROLITES +SAPROPEL +SAPROPELS +SAPROPHAGOUS +SAPROPHYTE +SAPROPHYTES +SAPROPHYTIC +SAPROPHYTICALLY +SAPROZOIC +SAPS +SAPSAGO +SAPSAGOS +SAPSUCKER +SAPSUCKERS +SAPWOOD +SAPWOODS +SARABAND +SARABANDE +SARABANDES +SARABANDS +SARAN +SARANS +SARAPE +SARAPES +SARCASM +SARCASMS +SARCASTIC +SARCASTICALLY +SARCENET +SARCENETS +SARCINA +SARCINAE +SARCINAS +SARCOCARP +SARCOCARPS +SARCOID +SARCOIDOSES +SARCOIDOSIS +SARCOIDS +SARCOLEMMA +SARCOLEMMAL +SARCOLEMMAS +SARCOLOGIES +SARCOLOGY +SARCOMA +SARCOMAS +SARCOMATA +SARCOMATOSES +SARCOMATOSIS +SARCOMATOUS +SARCOMERE +SARCOMERES +SARCOPHAGI +SARCOPHAGUS +SARCOPHAGUSES +SARCOPLASM +SARCOPLASMIC +SARCOPLASMS +SARCOSOMAL +SARCOSOME +SARCOSOMES +SARCOUS +SARD +SARDANA +SARDANAS +SARDAR +SARDARS +SARDINE +SARDINED +SARDINES +SARDINING +SARDIUS +SARDIUSES +SARDONIC +SARDONICALLY +SARDONICISM +SARDONICISMS +SARDONYX +SARDONYXES +SARDS +SAREE +SAREES +SARGASSO +SARGASSOS +SARGASSUM +SARGASSUMS +SARGE +SARGES +SARGO +SARGOS +SARI +SARIN +SARINS +SARIS +SARK +SARKIER +SARKIEST +SARKS +SARKY +SARMENT +SARMENTA +SARMENTS +SARMENTUM +SAROD +SARODE +SARODES +SARODIST +SARODISTS +SARODS +SARONG +SARONGS +SAROS +SAROSES +SARRACENIA +SARRACENIAS +SARSAPARILLA +SARSAPARILLAS +SARSAR +SARSARS +SARSEN +SARSENET +SARSENETS +SARSENS +SARSNET +SARSNETS +SARTOR +SARTORIAL +SARTORIALLY +SARTORII +SARTORIUS +SARTORS +SASH +SASHAY +SASHAYED +SASHAYING +SASHAYS +SASHED +SASHES +SASHIMI +SASHIMIS +SASHING +SASHLESS +SASIN +SASINS +SASKATOON +SASKATOONS +SASQUATCH +SASQUATCHES +SASS +SASSABIES +SASSABY +SASSAFRAS +SASSAFRASES +SASSED +SASSES +SASSIER +SASSIES +SASSIEST +SASSILY +SASSINESS +SASSINESSES +SASSING +SASSWOOD +SASSWOODS +SASSY +SASSYWOOD +SASSYWOODS +SASTRUGA +SASTRUGI +SAT +SATANG +SATANGS +SATANIC +SATANICAL +SATANICALLY +SATANISM +SATANISMS +SATANIST +SATANISTS +SATARA +SATARAS +SATAY +SATAYS +SATCHEL +SATCHELED +SATCHELFUL +SATCHELFULS +SATCHELS +SATCHELSFUL +SATE +SATED +SATEEN +SATEENS +SATELLITE +SATELLITES +SATEM +SATES +SATI +SATIABLE +SATIABLY +SATIATE +SATIATED +SATIATES +SATIATING +SATIATION +SATIATIONS +SATIETIES +SATIETY +SATIN +SATINET +SATINETS +SATINETTE +SATINETTES +SATING +SATINPOD +SATINPODS +SATINS +SATINWOOD +SATINWOODS +SATINY +SATIRE +SATIRES +SATIRIC +SATIRICAL +SATIRICALLY +SATIRISE +SATIRISED +SATIRISES +SATIRISING +SATIRIST +SATIRISTS +SATIRIZABLE +SATIRIZE +SATIRIZED +SATIRIZER +SATIRIZERS +SATIRIZES +SATIRIZING +SATIS +SATISFACTION +SATISFACTIONS +SATISFACTORILY +SATISFACTORY +SATISFIABLE +SATISFICE +SATISFICED +SATISFICES +SATISFICING +SATISFIED +SATISFIER +SATISFIERS +SATISFIES +SATISFY +SATISFYING +SATISFYINGLY +SATORI +SATORIS +SATRAP +SATRAPIES +SATRAPS +SATRAPY +SATSUMA +SATSUMAS +SATURABLE +SATURANT +SATURANTS +SATURATE +SATURATED +SATURATER +SATURATERS +SATURATES +SATURATING +SATURATION +SATURATIONS +SATURATOR +SATURATORS +SATURNALIA +SATURNALIAN +SATURNALIANLY +SATURNALIAS +SATURNIID +SATURNIIDS +SATURNINE +SATURNISM +SATURNISMS +SATYAGRAHA +SATYAGRAHAS +SATYR +SATYRIASES +SATYRIASIS +SATYRIC +SATYRICAL +SATYRID +SATYRIDS +SATYRLIKE +SATYRS +SAU +SAUCE +SAUCEBOAT +SAUCEBOATS +SAUCEBOX +SAUCEBOXES +SAUCED +SAUCEPAN +SAUCEPANS +SAUCEPOT +SAUCEPOTS +SAUCER +SAUCERLIKE +SAUCERS +SAUCES +SAUCH +SAUCHS +SAUCIER +SAUCIERS +SAUCIEST +SAUCILY +SAUCINESS +SAUCINESSES +SAUCING +SAUCY +SAUERBRATEN +SAUERBRATENS +SAUERKRAUT +SAUERKRAUTS +SAUGER +SAUGERS +SAUGH +SAUGHS +SAUGHY +SAUL +SAULS +SAULT +SAULTS +SAUNA +SAUNAED +SAUNAING +SAUNAS +SAUNTER +SAUNTERED +SAUNTERER +SAUNTERERS +SAUNTERING +SAUNTERS +SAUREL +SAURELS +SAURIAN +SAURIANS +SAURIES +SAURISCHIAN +SAURISCHIANS +SAUROPOD +SAUROPODS +SAURY +SAUSAGE +SAUSAGES +SAUTE +SAUTED +SAUTEED +SAUTEING +SAUTERNE +SAUTERNES +SAUTES +SAUTOIR +SAUTOIRE +SAUTOIRES +SAUTOIRS +SAVABLE +SAVAGE +SAVAGED +SAVAGELY +SAVAGENESS +SAVAGENESSES +SAVAGER +SAVAGERIES +SAVAGERY +SAVAGES +SAVAGEST +SAVAGING +SAVAGISM +SAVAGISMS +SAVANNA +SAVANNAH +SAVANNAHS +SAVANNAS +SAVANT +SAVANTS +SAVARIN +SAVARINS +SAVATE +SAVATES +SAVE +SAVEABLE +SAVED +SAVELOY +SAVELOYS +SAVER +SAVERS +SAVES +SAVIN +SAVINE +SAVINES +SAVING +SAVINGLY +SAVINGS +SAVINS +SAVIOR +SAVIORS +SAVIOUR +SAVIOURS +SAVOR +SAVORED +SAVORER +SAVORERS +SAVORIER +SAVORIES +SAVORIEST +SAVORILY +SAVORINESS +SAVORINESSES +SAVORING +SAVORLESS +SAVOROUS +SAVORS +SAVORY +SAVOUR +SAVOURED +SAVOURER +SAVOURERS +SAVOURIER +SAVOURIES +SAVOURIEST +SAVOURING +SAVOURS +SAVOURY +SAVOY +SAVOYS +SAVVIED +SAVVIER +SAVVIES +SAVVIEST +SAVVILY +SAVVINESS +SAVVINESSES +SAVVY +SAVVYING +SAW +SAWBILL +SAWBILLS +SAWBONES +SAWBONESES +SAWBUCK +SAWBUCKS +SAWDUST +SAWDUSTS +SAWDUSTY +SAWED +SAWER +SAWERS +SAWFISH +SAWFISHES +SAWFLIES +SAWFLY +SAWHORSE +SAWHORSES +SAWING +SAWLIKE +SAWLOG +SAWLOGS +SAWMILL +SAWMILLS +SAWN +SAWNEY +SAWNEYS +SAWS +SAWTEETH +SAWTIMBER +SAWTIMBERS +SAWTOOTH +SAWYER +SAWYERS +SAX +SAXATILE +SAXES +SAXHORN +SAXHORNS +SAXICOLOUS +SAXIFRAGE +SAXIFRAGES +SAXITOXIN +SAXITOXINS +SAXONIES +SAXONY +SAXOPHONE +SAXOPHONES +SAXOPHONIC +SAXOPHONIST +SAXOPHONISTS +SAXTUBA +SAXTUBAS +SAY +SAYABLE +SAYED +SAYEDS +SAYER +SAYERS +SAYEST +SAYID +SAYIDS +SAYING +SAYINGS +SAYONARA +SAYONARAS +SAYS +SAYST +SAYYID +SAYYIDS +SCAB +SCABBARD +SCABBARDED +SCABBARDING +SCABBARDS +SCABBED +SCABBIER +SCABBIEST +SCABBILY +SCABBING +SCABBLE +SCABBLED +SCABBLES +SCABBLING +SCABBY +SCABIES +SCABIETIC +SCABIOSA +SCABIOSAS +SCABIOUS +SCABIOUSES +SCABLAND +SCABLANDS +SCABLIKE +SCABROUS +SCABROUSLY +SCABROUSNESS +SCABROUSNESSES +SCABS +SCAD +SCADS +SCAFFOLD +SCAFFOLDED +SCAFFOLDING +SCAFFOLDINGS +SCAFFOLDS +SCAG +SCAGLIOLA +SCAGLIOLAS +SCAGS +SCALABLE +SCALABLY +SCALADE +SCALADES +SCALADO +SCALADOS +SCALAGE +SCALAGES +SCALAR +SCALARE +SCALARES +SCALARIFORM +SCALARIFORMLY +SCALARS +SCALATION +SCALATIONS +SCALAWAG +SCALAWAGS +SCALD +SCALDED +SCALDIC +SCALDING +SCALDS +SCALE +SCALED +SCALELESS +SCALELIKE +SCALENE +SCALENI +SCALENUS +SCALEPAN +SCALEPANS +SCALER +SCALERS +SCALES +SCALETAIL +SCALETAILS +SCALEUP +SCALEUPS +SCALIER +SCALIEST +SCALINESS +SCALINESSES +SCALING +SCALL +SCALLAWAG +SCALLAWAGS +SCALLION +SCALLIONS +SCALLOP +SCALLOPED +SCALLOPER +SCALLOPERS +SCALLOPING +SCALLOPINI +SCALLOPINIS +SCALLOPS +SCALLS +SCALLYWAG +SCALLYWAGS +SCALOGRAM +SCALOGRAMS +SCALOPPINE +SCALOPPINES +SCALP +SCALPED +SCALPEL +SCALPELS +SCALPER +SCALPERS +SCALPING +SCALPS +SCALY +SCAM +SCAMMED +SCAMMER +SCAMMERS +SCAMMING +SCAMMONIES +SCAMMONY +SCAMP +SCAMPED +SCAMPER +SCAMPERED +SCAMPERER +SCAMPERERS +SCAMPERING +SCAMPERS +SCAMPI +SCAMPIES +SCAMPING +SCAMPISH +SCAMPS +SCAMS +SCAMSTER +SCAMSTERS +SCAN +SCANDAL +SCANDALED +SCANDALING +SCANDALISE +SCANDALISED +SCANDALISES +SCANDALISING +SCANDALIZE +SCANDALIZED +SCANDALIZES +SCANDALIZING +SCANDALLED +SCANDALLING +SCANDALMONGER +SCANDALMONGERS +SCANDALOUS +SCANDALOUSLY +SCANDALOUSNESS +SCANDALS +SCANDENT +SCANDIA +SCANDIAS +SCANDIC +SCANDIUM +SCANDIUMS +SCANNABLE +SCANNED +SCANNER +SCANNERS +SCANNING +SCANNINGS +SCANS +SCANSION +SCANSIONS +SCANT +SCANTED +SCANTER +SCANTEST +SCANTIER +SCANTIES +SCANTIEST +SCANTILY +SCANTINESS +SCANTINESSES +SCANTING +SCANTLING +SCANTLINGS +SCANTLY +SCANTNESS +SCANTNESSES +SCANTS +SCANTY +SCAPE +SCAPED +SCAPEGOAT +SCAPEGOATED +SCAPEGOATING +SCAPEGOATISM +SCAPEGOATISMS +SCAPEGOATS +SCAPEGRACE +SCAPEGRACES +SCAPES +SCAPHOID +SCAPHOIDS +SCAPHOPOD +SCAPHOPODS +SCAPING +SCAPOLITE +SCAPOLITES +SCAPOSE +SCAPULA +SCAPULAE +SCAPULAR +SCAPULARS +SCAPULARY +SCAPULAS +SCAR +SCARAB +SCARABAEI +SCARABAEUS +SCARABAEUSES +SCARABOID +SCARABS +SCARAMOUCH +SCARAMOUCHE +SCARAMOUCHES +SCARCE +SCARCELY +SCARCENESS +SCARCENESSES +SCARCER +SCARCEST +SCARCITIES +SCARCITY +SCARE +SCARECROW +SCARECROWS +SCARED +SCAREDER +SCAREDEST +SCAREHEAD +SCAREHEADS +SCAREMONGER +SCAREMONGERS +SCARER +SCARERS +SCARES +SCAREY +SCARF +SCARFED +SCARFER +SCARFERS +SCARFING +SCARFPIN +SCARFPINS +SCARFS +SCARFSKIN +SCARFSKINS +SCARIER +SCARIEST +SCARIFICATION +SCARIFICATIONS +SCARIFIED +SCARIFIER +SCARIFIERS +SCARIFIES +SCARIFY +SCARIFYING +SCARIFYINGLY +SCARILY +SCARINESS +SCARINESSES +SCARING +SCARIOSE +SCARIOUS +SCARLATINA +SCARLATINAL +SCARLATINAS +SCARLESS +SCARLET +SCARLETS +SCARP +SCARPED +SCARPER +SCARPERED +SCARPERING +SCARPERS +SCARPH +SCARPHED +SCARPHING +SCARPHS +SCARPING +SCARPS +SCARRED +SCARRIER +SCARRIEST +SCARRING +SCARRY +SCARS +SCART +SCARTED +SCARTING +SCARTS +SCARVES +SCARY +SCAT +SCATBACK +SCATBACKS +SCATHE +SCATHED +SCATHELESS +SCATHES +SCATHING +SCATHINGLY +SCATOLOGICAL +SCATOLOGIES +SCATOLOGY +SCATS +SCATT +SCATTED +SCATTER +SCATTERATION +SCATTERATIONS +SCATTERBRAIN +SCATTERBRAINED +SCATTERBRAINS +SCATTERED +SCATTERER +SCATTERERS +SCATTERGOOD +SCATTERGOODS +SCATTERGRAM +SCATTERGRAMS +SCATTERGUN +SCATTERGUNS +SCATTERING +SCATTERINGLY +SCATTERINGS +SCATTERS +SCATTERSHOT +SCATTIER +SCATTIEST +SCATTING +SCATTS +SCATTY +SCAUP +SCAUPER +SCAUPERS +SCAUPS +SCAUR +SCAURS +SCAVENGE +SCAVENGED +SCAVENGER +SCAVENGERS +SCAVENGES +SCAVENGING +SCENA +SCENARIO +SCENARIOS +SCENARIST +SCENARISTS +SCENAS +SCEND +SCENDED +SCENDING +SCENDS +SCENE +SCENERIES +SCENERY +SCENES +SCENESHIFTER +SCENESHIFTERS +SCENIC +SCENICAL +SCENICALLY +SCENICS +SCENOGRAPHER +SCENOGRAPHERS +SCENOGRAPHIC +SCENOGRAPHIES +SCENOGRAPHY +SCENT +SCENTED +SCENTING +SCENTLESS +SCENTS +SCEPTER +SCEPTERED +SCEPTERING +SCEPTERS +SCEPTIC +SCEPTICAL +SCEPTICISM +SCEPTICISMS +SCEPTICS +SCEPTRAL +SCEPTRE +SCEPTRED +SCEPTRES +SCEPTRING +SCHADENFREUDE +SCHADENFREUDES +SCHAPPE +SCHAPPES +SCHATCHEN +SCHATCHENS +SCHAV +SCHAVS +SCHEDULAR +SCHEDULE +SCHEDULED +SCHEDULER +SCHEDULERS +SCHEDULES +SCHEDULING +SCHEELITE +SCHEELITES +SCHEMA +SCHEMAS +SCHEMATA +SCHEMATIC +SCHEMATICALLY +SCHEMATICS +SCHEMATISM +SCHEMATISMS +SCHEMATIZATION +SCHEMATIZATIONS +SCHEMATIZE +SCHEMATIZED +SCHEMATIZES +SCHEMATIZING +SCHEME +SCHEMED +SCHEMER +SCHEMERS +SCHEMES +SCHEMING +SCHERZANDO +SCHERZANDOS +SCHERZI +SCHERZO +SCHERZOS +SCHILLER +SCHILLERS +SCHILLING +SCHILLINGS +SCHIPPERKE +SCHIPPERKES +SCHISM +SCHISMATIC +SCHISMATICAL +SCHISMATICALLY +SCHISMATICS +SCHISMATIZE +SCHISMATIZED +SCHISMATIZES +SCHISMATIZING +SCHISMS +SCHIST +SCHISTOSE +SCHISTOSITIES +SCHISTOSITY +SCHISTOSOMAL +SCHISTOSOME +SCHISTOSOMES +SCHISTOSOMIASES +SCHISTOSOMIASIS +SCHISTOUS +SCHISTS +SCHIZIER +SCHIZIEST +SCHIZO +SCHIZOCARP +SCHIZOCARPS +SCHIZOGONIC +SCHIZOGONIES +SCHIZOGONOUS +SCHIZOGONY +SCHIZOID +SCHIZOIDS +SCHIZONT +SCHIZONTS +SCHIZOPHRENE +SCHIZOPHRENES +SCHIZOPHRENIA +SCHIZOPHRENIAS +SCHIZOPHRENIC +SCHIZOPHRENICS +SCHIZOPOD +SCHIZOPODS +SCHIZOS +SCHIZY +SCHIZZIER +SCHIZZIEST +SCHIZZY +SCHLEMIEL +SCHLEMIELS +SCHLEMIHL +SCHLEMIHLS +SCHLEP +SCHLEPP +SCHLEPPED +SCHLEPPING +SCHLEPPS +SCHLEPS +SCHLIERE +SCHLIEREN +SCHLIERIC +SCHLOCK +SCHLOCKIER +SCHLOCKIEST +SCHLOCKS +SCHLOCKY +SCHLUB +SCHLUBS +SCHLUMP +SCHLUMPED +SCHLUMPIER +SCHLUMPIEST +SCHLUMPING +SCHLUMPS +SCHLUMPY +SCHMALTZ +SCHMALTZES +SCHMALTZIER +SCHMALTZIEST +SCHMALTZY +SCHMALZ +SCHMALZES +SCHMALZIER +SCHMALZIEST +SCHMALZY +SCHMATTE +SCHMATTES +SCHMEAR +SCHMEARED +SCHMEARING +SCHMEARS +SCHMEER +SCHMEERED +SCHMEERING +SCHMEERS +SCHMELZE +SCHMELZES +SCHMO +SCHMOE +SCHMOES +SCHMOOS +SCHMOOSE +SCHMOOSED +SCHMOOSES +SCHMOOSING +SCHMOOZE +SCHMOOZED +SCHMOOZER +SCHMOOZERS +SCHMOOZES +SCHMOOZIER +SCHMOOZIEST +SCHMOOZING +SCHMOOZY +SCHMOS +SCHMUCK +SCHMUCKS +SCHNAPPER +SCHNAPPERS +SCHNAPPS +SCHNAPS +SCHNAUZER +SCHNAUZERS +SCHNECKE +SCHNECKEN +SCHNITZEL +SCHNITZELS +SCHNOOK +SCHNOOKS +SCHNORKEL +SCHNORKELED +SCHNORKELING +SCHNORKELS +SCHNORRER +SCHNORRERS +SCHNOZ +SCHNOZES +SCHNOZZ +SCHNOZZES +SCHNOZZLE +SCHNOZZLES +SCHOLAR +SCHOLARLY +SCHOLARS +SCHOLARSHIP +SCHOLARSHIPS +SCHOLASTIC +SCHOLASTICALLY +SCHOLASTICATE +SCHOLASTICATES +SCHOLASTICISM +SCHOLASTICISMS +SCHOLASTICS +SCHOLIA +SCHOLIAST +SCHOLIASTIC +SCHOLIASTS +SCHOLIUM +SCHOLIUMS +SCHOOL +SCHOOLBAG +SCHOOLBAGS +SCHOOLBOOK +SCHOOLBOOKS +SCHOOLBOY +SCHOOLBOYISH +SCHOOLBOYS +SCHOOLCHILD +SCHOOLCHILDREN +SCHOOLED +SCHOOLFELLOW +SCHOOLFELLOWS +SCHOOLGIRL +SCHOOLGIRLS +SCHOOLHOUSE +SCHOOLHOUSES +SCHOOLING +SCHOOLINGS +SCHOOLKID +SCHOOLKIDS +SCHOOLMAN +SCHOOLMARM +SCHOOLMARMISH +SCHOOLMARMS +SCHOOLMASTER +SCHOOLMASTERISH +SCHOOLMASTERLY +SCHOOLMASTERS +SCHOOLMATE +SCHOOLMATES +SCHOOLMEN +SCHOOLMISTRESS +SCHOOLROOM +SCHOOLROOMS +SCHOOLS +SCHOOLTEACHER +SCHOOLTEACHERS +SCHOOLTIME +SCHOOLTIMES +SCHOOLWORK +SCHOOLWORKS +SCHOONER +SCHOONERS +SCHORL +SCHORLS +SCHOTTISCHE +SCHOTTISCHES +SCHRIK +SCHRIKS +SCHROD +SCHRODS +SCHTICK +SCHTICKS +SCHTIK +SCHTIKS +SCHUIT +SCHUITS +SCHUL +SCHULN +SCHULS +SCHUSS +SCHUSSBOOMER +SCHUSSBOOMERS +SCHUSSED +SCHUSSER +SCHUSSERS +SCHUSSES +SCHUSSING +SCHVARTZE +SCHVARTZES +SCHWA +SCHWARMEREI +SCHWARMEREIS +SCHWARTZE +SCHWARTZES +SCHWAS +SCIAENID +SCIAENIDS +SCIAENOID +SCIAENOIDS +SCIAMACHIES +SCIAMACHY +SCIATIC +SCIATICA +SCIATICAS +SCIATICS +SCIENCE +SCIENCES +SCIENTIAL +SCIENTIFIC +SCIENTIFICALLY +SCIENTISM +SCIENTISMS +SCIENTIST +SCIENTISTS +SCIENTIZE +SCIENTIZED +SCIENTIZES +SCIENTIZING +SCILICET +SCILLA +SCILLAS +SCIMETAR +SCIMETARS +SCIMITAR +SCIMITARS +SCIMITER +SCIMITERS +SCINCOID +SCINCOIDS +SCINTIGRAPHIC +SCINTIGRAPHIES +SCINTIGRAPHY +SCINTILLA +SCINTILLAE +SCINTILLANT +SCINTILLANTLY +SCINTILLAS +SCINTILLATE +SCINTILLATED +SCINTILLATES +SCINTILLATING +SCINTILLATION +SCINTILLATIONS +SCINTILLATOR +SCINTILLATORS +SCINTILLOMETER +SCINTILLOMETERS +SCIOLISM +SCIOLISMS +SCIOLIST +SCIOLISTIC +SCIOLISTS +SCION +SCIONS +SCIROCCO +SCIROCCOS +SCIRRHI +SCIRRHOID +SCIRRHOUS +SCIRRHUS +SCIRRHUSES +SCISSILE +SCISSION +SCISSIONS +SCISSOR +SCISSORED +SCISSORING +SCISSORS +SCISSORTAIL +SCISSORTAILS +SCISSURE +SCISSURES +SCIURID +SCIURIDS +SCIURINE +SCIURINES +SCIUROID +SCLAFF +SCLAFFED +SCLAFFER +SCLAFFERS +SCLAFFING +SCLAFFS +SCLERA +SCLERAE +SCLERAL +SCLERAS +SCLEREID +SCLEREIDS +SCLERENCHYMA +SCLERENCHYMAS +SCLERITE +SCLERITES +SCLERITIC +SCLERITIS +SCLERITISES +SCLERODERMA +SCLERODERMAS +SCLERODERMATA +SCLEROID +SCLEROMA +SCLEROMAS +SCLEROMATA +SCLEROMETER +SCLEROMETERS +SCLEROPROTEIN +SCLEROPROTEINS +SCLEROSAL +SCLEROSE +SCLEROSED +SCLEROSES +SCLEROSING +SCLEROSIS +SCLEROTIA +SCLEROTIAL +SCLEROTIC +SCLEROTICS +SCLEROTIN +SCLEROTINS +SCLEROTIUM +SCLEROTIZATION +SCLEROTIZATIONS +SCLEROTIZED +SCLEROUS +SCOFF +SCOFFED +SCOFFER +SCOFFERS +SCOFFING +SCOFFLAW +SCOFFLAWS +SCOFFS +SCOLD +SCOLDED +SCOLDER +SCOLDERS +SCOLDING +SCOLDINGS +SCOLDS +SCOLECES +SCOLECITE +SCOLECITES +SCOLEX +SCOLICES +SCOLIOMA +SCOLIOMAS +SCOLIOSES +SCOLIOSIS +SCOLIOTIC +SCOLLOP +SCOLLOPED +SCOLLOPING +SCOLLOPS +SCOLOPENDRA +SCOLOPENDRAS +SCOMBRID +SCOMBRIDS +SCOMBROID +SCOMBROIDS +SCONCE +SCONCED +SCONCES +SCONCHEON +SCONCHEONS +SCONCING +SCONE +SCONES +SCOOCH +SCOOCHED +SCOOCHES +SCOOCHING +SCOOP +SCOOPABLE +SCOOPED +SCOOPER +SCOOPERS +SCOOPFUL +SCOOPFULS +SCOOPING +SCOOPS +SCOOPSFUL +SCOOT +SCOOTCH +SCOOTCHED +SCOOTCHES +SCOOTCHING +SCOOTED +SCOOTER +SCOOTERS +SCOOTING +SCOOTS +SCOP +SCOPE +SCOPED +SCOPES +SCOPING +SCOPOLAMINE +SCOPOLAMINES +SCOPS +SCOPULA +SCOPULAE +SCOPULAS +SCOPULATE +SCORBUTIC +SCORCH +SCORCHED +SCORCHER +SCORCHERS +SCORCHES +SCORCHING +SCORCHINGLY +SCORE +SCOREBOARD +SCOREBOARDS +SCORECARD +SCORECARDS +SCORED +SCOREKEEPER +SCOREKEEPERS +SCORELESS +SCOREPAD +SCOREPADS +SCORER +SCORERS +SCORES +SCORIA +SCORIACEOUS +SCORIAE +SCORIFIED +SCORIFIER +SCORIFIERS +SCORIFIES +SCORIFY +SCORIFYING +SCORING +SCORN +SCORNED +SCORNER +SCORNERS +SCORNFUL +SCORNFULLY +SCORNFULNESS +SCORNFULNESSES +SCORNING +SCORNS +SCORPAENID +SCORPAENIDS +SCORPIOID +SCORPION +SCORPIONS +SCOT +SCOTCH +SCOTCHED +SCOTCHES +SCOTCHING +SCOTER +SCOTERS +SCOTIA +SCOTIAS +SCOTOMA +SCOTOMAS +SCOTOMATA +SCOTOPHIL +SCOTOPIA +SCOTOPIAS +SCOTOPIC +SCOTS +SCOTTIE +SCOTTIES +SCOUNDREL +SCOUNDRELLY +SCOUNDRELS +SCOUR +SCOURED +SCOURER +SCOURERS +SCOURGE +SCOURGED +SCOURGER +SCOURGERS +SCOURGES +SCOURGING +SCOURING +SCOURINGS +SCOURS +SCOUSE +SCOUSES +SCOUT +SCOUTCRAFT +SCOUTCRAFTS +SCOUTED +SCOUTER +SCOUTERS +SCOUTH +SCOUTHER +SCOUTHERED +SCOUTHERING +SCOUTHERS +SCOUTHS +SCOUTING +SCOUTINGS +SCOUTMASTER +SCOUTMASTERS +SCOUTS +SCOW +SCOWDER +SCOWDERED +SCOWDERING +SCOWDERS +SCOWED +SCOWING +SCOWL +SCOWLED +SCOWLER +SCOWLERS +SCOWLING +SCOWLINGLY +SCOWLS +SCOWS +SCRABBLE +SCRABBLED +SCRABBLER +SCRABBLERS +SCRABBLES +SCRABBLIER +SCRABBLIEST +SCRABBLING +SCRABBLY +SCRAG +SCRAGGED +SCRAGGIER +SCRAGGIEST +SCRAGGILY +SCRAGGING +SCRAGGLIER +SCRAGGLIEST +SCRAGGLY +SCRAGGY +SCRAGS +SCRAICH +SCRAICHED +SCRAICHING +SCRAICHS +SCRAIGH +SCRAIGHED +SCRAIGHING +SCRAIGHS +SCRAM +SCRAMBLE +SCRAMBLED +SCRAMBLER +SCRAMBLERS +SCRAMBLES +SCRAMBLING +SCRAMJET +SCRAMJETS +SCRAMMED +SCRAMMING +SCRAMS +SCRANNEL +SCRANNELS +SCRAP +SCRAPBOOK +SCRAPBOOKS +SCRAPE +SCRAPED +SCRAPER +SCRAPERS +SCRAPES +SCRAPHEAP +SCRAPHEAPS +SCRAPIE +SCRAPIES +SCRAPING +SCRAPINGS +SCRAPPAGE +SCRAPPAGES +SCRAPPED +SCRAPPER +SCRAPPERS +SCRAPPIER +SCRAPPIEST +SCRAPPILY +SCRAPPINESS +SCRAPPINESSES +SCRAPPING +SCRAPPLE +SCRAPPLES +SCRAPPY +SCRAPS +SCRATCH +SCRATCHBOARD +SCRATCHBOARDS +SCRATCHED +SCRATCHER +SCRATCHERS +SCRATCHES +SCRATCHIER +SCRATCHIEST +SCRATCHILY +SCRATCHINESS +SCRATCHINESSES +SCRATCHING +SCRATCHY +SCRAWL +SCRAWLED +SCRAWLER +SCRAWLERS +SCRAWLIER +SCRAWLIEST +SCRAWLING +SCRAWLS +SCRAWLY +SCRAWNIER +SCRAWNIEST +SCRAWNINESS +SCRAWNINESSES +SCRAWNY +SCREAK +SCREAKED +SCREAKING +SCREAKS +SCREAKY +SCREAM +SCREAMED +SCREAMER +SCREAMERS +SCREAMING +SCREAMINGLY +SCREAMS +SCREE +SCREECH +SCREECHED +SCREECHER +SCREECHERS +SCREECHES +SCREECHIER +SCREECHIEST +SCREECHING +SCREECHY +SCREED +SCREEDED +SCREEDING +SCREEDS +SCREEN +SCREENABLE +SCREENED +SCREENER +SCREENERS +SCREENFUL +SCREENFULS +SCREENING +SCREENINGS +SCREENLAND +SCREENLANDS +SCREENPLAY +SCREENPLAYS +SCREENS +SCREENWRITER +SCREENWRITERS +SCREES +SCREW +SCREWABLE +SCREWBALL +SCREWBALLS +SCREWBEAN +SCREWBEANS +SCREWDRIVER +SCREWDRIVERS +SCREWED +SCREWER +SCREWERS +SCREWIER +SCREWIEST +SCREWINESS +SCREWINESSES +SCREWING +SCREWLIKE +SCREWS +SCREWUP +SCREWUPS +SCREWWORM +SCREWWORMS +SCREWY +SCRIBAL +SCRIBBLE +SCRIBBLED +SCRIBBLER +SCRIBBLERS +SCRIBBLES +SCRIBBLING +SCRIBBLY +SCRIBE +SCRIBED +SCRIBER +SCRIBERS +SCRIBES +SCRIBING +SCRIED +SCRIES +SCRIEVE +SCRIEVED +SCRIEVES +SCRIEVING +SCRIM +SCRIMMAGE +SCRIMMAGED +SCRIMMAGER +SCRIMMAGERS +SCRIMMAGES +SCRIMMAGING +SCRIMP +SCRIMPED +SCRIMPER +SCRIMPERS +SCRIMPIER +SCRIMPIEST +SCRIMPILY +SCRIMPING +SCRIMPIT +SCRIMPS +SCRIMPY +SCRIMS +SCRIMSHANDER +SCRIMSHANDERS +SCRIMSHAW +SCRIMSHAWED +SCRIMSHAWING +SCRIMSHAWS +SCRIP +SCRIPS +SCRIPT +SCRIPTED +SCRIPTER +SCRIPTERS +SCRIPTING +SCRIPTORIA +SCRIPTORIUM +SCRIPTS +SCRIPTURAL +SCRIPTURALLY +SCRIPTURE +SCRIPTURES +SCRIPTWRITER +SCRIPTWRITERS +SCRIVE +SCRIVED +SCRIVENER +SCRIVENERS +SCRIVES +SCRIVING +SCROD +SCRODS +SCROFULA +SCROFULAS +SCROFULOUS +SCROGGIER +SCROGGIEST +SCROGGY +SCROLL +SCROLLED +SCROLLING +SCROLLS +SCROLLWORK +SCROLLWORKS +SCROOCH +SCROOCHED +SCROOCHES +SCROOCHING +SCROOGE +SCROOGES +SCROOP +SCROOPED +SCROOPING +SCROOPS +SCROOTCH +SCROOTCHED +SCROOTCHES +SCROOTCHING +SCROTA +SCROTAL +SCROTUM +SCROTUMS +SCROUGE +SCROUGED +SCROUGES +SCROUGING +SCROUNGE +SCROUNGED +SCROUNGER +SCROUNGERS +SCROUNGES +SCROUNGIER +SCROUNGIEST +SCROUNGING +SCROUNGY +SCRUB +SCRUBBABLE +SCRUBBED +SCRUBBER +SCRUBBERS +SCRUBBIER +SCRUBBIEST +SCRUBBILY +SCRUBBING +SCRUBBY +SCRUBLAND +SCRUBLANDS +SCRUBS +SCRUBWOMAN +SCRUBWOMEN +SCRUFF +SCRUFFIER +SCRUFFIEST +SCRUFFILY +SCRUFFINESS +SCRUFFINESSES +SCRUFFS +SCRUFFY +SCRUM +SCRUMMAGE +SCRUMMAGED +SCRUMMAGES +SCRUMMAGING +SCRUMMED +SCRUMMING +SCRUMPTIOUS +SCRUMPTIOUSLY +SCRUMS +SCRUNCH +SCRUNCHED +SCRUNCHES +SCRUNCHIE +SCRUNCHIES +SCRUNCHING +SCRUNCHY +SCRUPLE +SCRUPLED +SCRUPLES +SCRUPLING +SCRUPULOSITIES +SCRUPULOSITY +SCRUPULOUS +SCRUPULOUSLY +SCRUPULOUSNESS +SCRUTABLE +SCRUTINEER +SCRUTINEERS +SCRUTINIES +SCRUTINISE +SCRUTINISED +SCRUTINISES +SCRUTINISING +SCRUTINIZE +SCRUTINIZED +SCRUTINIZER +SCRUTINIZERS +SCRUTINIZES +SCRUTINIZING +SCRUTINY +SCRY +SCRYING +SCUBA +SCUBAED +SCUBAING +SCUBAS +SCUD +SCUDDED +SCUDDING +SCUDI +SCUDO +SCUDS +SCUFF +SCUFFED +SCUFFER +SCUFFERS +SCUFFING +SCUFFLE +SCUFFLED +SCUFFLER +SCUFFLERS +SCUFFLES +SCUFFLING +SCUFFS +SCULCH +SCULCHES +SCULK +SCULKED +SCULKER +SCULKERS +SCULKING +SCULKS +SCULL +SCULLED +SCULLER +SCULLERIES +SCULLERS +SCULLERY +SCULLING +SCULLION +SCULLIONS +SCULLS +SCULP +SCULPED +SCULPIN +SCULPING +SCULPINS +SCULPS +SCULPT +SCULPTED +SCULPTING +SCULPTOR +SCULPTORS +SCULPTRESS +SCULPTRESSES +SCULPTS +SCULPTURAL +SCULPTURALLY +SCULPTURE +SCULPTURED +SCULPTURES +SCULPTURESQUE +SCULPTURESQUELY +SCULPTURING +SCULTCH +SCULTCHES +SCUM +SCUMBAG +SCUMBAGS +SCUMBLE +SCUMBLED +SCUMBLES +SCUMBLING +SCUMLESS +SCUMLIKE +SCUMMED +SCUMMER +SCUMMERS +SCUMMIER +SCUMMIEST +SCUMMILY +SCUMMING +SCUMMY +SCUMS +SCUNCHEON +SCUNCHEONS +SCUNGILLI +SCUNGILLIS +SCUNNER +SCUNNERED +SCUNNERING +SCUNNERS +SCUP +SCUPPAUG +SCUPPAUGS +SCUPPER +SCUPPERED +SCUPPERING +SCUPPERNONG +SCUPPERNONGS +SCUPPERS +SCUPS +SCURF +SCURFIER +SCURFIEST +SCURFS +SCURFY +SCURRIED +SCURRIES +SCURRIL +SCURRILE +SCURRILITIES +SCURRILITY +SCURRILOUS +SCURRILOUSLY +SCURRILOUSNESS +SCURRY +SCURRYING +SCURVIER +SCURVIES +SCURVIEST +SCURVILY +SCURVINESS +SCURVINESSES +SCURVY +SCUT +SCUTA +SCUTAGE +SCUTAGES +SCUTATE +SCUTCH +SCUTCHED +SCUTCHEON +SCUTCHEONS +SCUTCHER +SCUTCHERS +SCUTCHES +SCUTCHING +SCUTE +SCUTELLA +SCUTELLAR +SCUTELLATE +SCUTELLATED +SCUTELLUM +SCUTES +SCUTIFORM +SCUTS +SCUTTER +SCUTTERED +SCUTTERING +SCUTTERS +SCUTTLE +SCUTTLEBUTT +SCUTTLEBUTTS +SCUTTLED +SCUTTLES +SCUTTLING +SCUTUM +SCUTWORK +SCUTWORKS +SCUZZ +SCUZZBALL +SCUZZBALLS +SCUZZES +SCUZZIER +SCUZZIEST +SCUZZY +SCYPHATE +SCYPHI +SCYPHISTOMA +SCYPHISTOMAE +SCYPHISTOMAS +SCYPHOZOAN +SCYPHOZOANS +SCYPHUS +SCYTHE +SCYTHED +SCYTHES +SCYTHING +SEA +SEABAG +SEABAGS +SEABEACH +SEABEACHES +SEABED +SEABEDS +SEABIRD +SEABIRDS +SEABOARD +SEABOARDS +SEABOOT +SEABOOTS +SEABORGIUM +SEABORGIUMS +SEABORNE +SEACOAST +SEACOASTS +SEACOCK +SEACOCKS +SEACRAFT +SEACRAFTS +SEADOG +SEADOGS +SEADROME +SEADROMES +SEAFARER +SEAFARERS +SEAFARING +SEAFARINGS +SEAFLOOR +SEAFLOORS +SEAFOOD +SEAFOODS +SEAFOWL +SEAFOWLS +SEAFRONT +SEAFRONTS +SEAGIRT +SEAGOING +SEAGULL +SEAGULLS +SEAHORSE +SEAHORSES +SEAL +SEALABLE +SEALANT +SEALANTS +SEALED +SEALER +SEALERIES +SEALERS +SEALERY +SEALIFT +SEALIFTED +SEALIFTING +SEALIFTS +SEALING +SEALLIKE +SEALS +SEALSKIN +SEALSKINS +SEAM +SEAMAN +SEAMANLIKE +SEAMANLY +SEAMANSHIP +SEAMANSHIPS +SEAMARK +SEAMARKS +SEAMED +SEAMEN +SEAMER +SEAMERS +SEAMIER +SEAMIEST +SEAMINESS +SEAMINESSES +SEAMING +SEAMLESS +SEAMLESSLY +SEAMLESSNESS +SEAMLESSNESSES +SEAMLIKE +SEAMOUNT +SEAMOUNTS +SEAMS +SEAMSTER +SEAMSTERS +SEAMSTRESS +SEAMSTRESSES +SEAMY +SEANCE +SEANCES +SEAPIECE +SEAPIECES +SEAPLANE +SEAPLANES +SEAPORT +SEAPORTS +SEAQUAKE +SEAQUAKES +SEAR +SEARCH +SEARCHABLE +SEARCHED +SEARCHER +SEARCHERS +SEARCHES +SEARCHING +SEARCHINGLY +SEARCHLESS +SEARCHLIGHT +SEARCHLIGHTS +SEARED +SEARER +SEAREST +SEARING +SEARINGLY +SEAROBIN +SEAROBINS +SEARS +SEAS +SEASCAPE +SEASCAPES +SEASCOUT +SEASCOUTS +SEASHELL +SEASHELLS +SEASHORE +SEASHORES +SEASICK +SEASICKNESS +SEASICKNESSES +SEASIDE +SEASIDES +SEASON +SEASONABLE +SEASONABLENESS +SEASONABLY +SEASONAL +SEASONALITIES +SEASONALITY +SEASONALLY +SEASONALS +SEASONED +SEASONER +SEASONERS +SEASONING +SEASONINGS +SEASONLESS +SEASONS +SEASTRAND +SEASTRANDS +SEAT +SEATBACK +SEATBACKS +SEATBELT +SEATBELTS +SEATED +SEATER +SEATERS +SEATING +SEATINGS +SEATLESS +SEATMATE +SEATMATES +SEATRAIN +SEATRAINS +SEATROUT +SEATROUTS +SEATS +SEATWORK +SEATWORKS +SEAWALL +SEAWALLS +SEAWAN +SEAWANS +SEAWANT +SEAWANTS +SEAWARD +SEAWARDS +SEAWARE +SEAWARES +SEAWATER +SEAWATERS +SEAWAY +SEAWAYS +SEAWEED +SEAWEEDS +SEAWORTHIER +SEAWORTHIEST +SEAWORTHINESS +SEAWORTHINESSES +SEAWORTHY +SEBACEOUS +SEBACIC +SEBASIC +SEBORRHEA +SEBORRHEAS +SEBORRHEIC +SEBUM +SEBUMS +SEC +SECALOSE +SECALOSES +SECANT +SECANTLY +SECANTS +SECATEUR +SECATEURS +SECCO +SECCOS +SECEDE +SECEDED +SECEDER +SECEDERS +SECEDES +SECEDING +SECERN +SECERNED +SECERNING +SECERNS +SECESSION +SECESSIONISM +SECESSIONISMS +SECESSIONIST +SECESSIONISTS +SECESSIONS +SECLUDE +SECLUDED +SECLUDEDLY +SECLUDEDNESS +SECLUDEDNESSES +SECLUDES +SECLUDING +SECLUSION +SECLUSIONS +SECLUSIVE +SECLUSIVELY +SECLUSIVENESS +SECLUSIVENESSES +SECOBARBITAL +SECOBARBITALS +SECONAL +SECONALS +SECOND +SECONDARIES +SECONDARILY +SECONDARINESS +SECONDARINESSES +SECONDARY +SECONDE +SECONDED +SECONDER +SECONDERS +SECONDES +SECONDHAND +SECONDI +SECONDING +SECONDLY +SECONDO +SECONDS +SECPAR +SECPARS +SECRECIES +SECRECY +SECRET +SECRETAGOGUE +SECRETAGOGUES +SECRETARIAL +SECRETARIAT +SECRETARIATS +SECRETARIES +SECRETARY +SECRETARYSHIP +SECRETARYSHIPS +SECRETE +SECRETED +SECRETER +SECRETES +SECRETEST +SECRETIN +SECRETING +SECRETINS +SECRETION +SECRETIONARY +SECRETIONS +SECRETIVE +SECRETIVELY +SECRETIVENESS +SECRETIVENESSES +SECRETLY +SECRETOR +SECRETORIES +SECRETORS +SECRETORY +SECRETS +SECS +SECT +SECTARIAN +SECTARIANISM +SECTARIANISMS +SECTARIANIZE +SECTARIANIZED +SECTARIANIZES +SECTARIANIZING +SECTARIANS +SECTARIES +SECTARY +SECTILE +SECTILITIES +SECTILITY +SECTION +SECTIONAL +SECTIONALISM +SECTIONALISMS +SECTIONALLY +SECTIONALS +SECTIONED +SECTIONING +SECTIONS +SECTOR +SECTORAL +SECTORED +SECTORIAL +SECTORIALS +SECTORING +SECTORS +SECTS +SECULAR +SECULARISE +SECULARISED +SECULARISES +SECULARISING +SECULARISM +SECULARISMS +SECULARIST +SECULARISTIC +SECULARISTS +SECULARITIES +SECULARITY +SECULARIZATION +SECULARIZATIONS +SECULARIZE +SECULARIZED +SECULARIZER +SECULARIZERS +SECULARIZES +SECULARIZING +SECULARLY +SECULARS +SECUND +SECUNDLY +SECUNDUM +SECURABLE +SECURANCE +SECURANCES +SECURE +SECURED +SECURELY +SECUREMENT +SECUREMENTS +SECURENESS +SECURENESSES +SECURER +SECURERS +SECURES +SECUREST +SECURING +SECURITIES +SECURITIZATION +SECURITIZATIONS +SECURITIZE +SECURITIZED +SECURITIZES +SECURITIZING +SECURITY +SEDAN +SEDANS +SEDARIM +SEDATE +SEDATED +SEDATELY +SEDATENESS +SEDATENESSES +SEDATER +SEDATES +SEDATEST +SEDATING +SEDATION +SEDATIONS +SEDATIVE +SEDATIVES +SEDENTARY +SEDER +SEDERS +SEDERUNT +SEDERUNTS +SEDGE +SEDGES +SEDGIER +SEDGIEST +SEDGY +SEDILE +SEDILIA +SEDILIUM +SEDIMENT +SEDIMENTABLE +SEDIMENTARY +SEDIMENTATION +SEDIMENTATIONS +SEDIMENTED +SEDIMENTING +SEDIMENTOLOGIC +SEDIMENTOLOGIES +SEDIMENTOLOGIST +SEDIMENTOLOGY +SEDIMENTS +SEDITION +SEDITIONS +SEDITIOUS +SEDITIOUSLY +SEDITIOUSNESS +SEDITIOUSNESSES +SEDUCE +SEDUCED +SEDUCEMENT +SEDUCEMENTS +SEDUCER +SEDUCERS +SEDUCES +SEDUCIBLE +SEDUCING +SEDUCIVE +SEDUCTION +SEDUCTIONS +SEDUCTIVE +SEDUCTIVELY +SEDUCTIVENESS +SEDUCTIVENESSES +SEDUCTRESS +SEDUCTRESSES +SEDULITIES +SEDULITY +SEDULOUS +SEDULOUSLY +SEDULOUSNESS +SEDULOUSNESSES +SEDUM +SEDUMS +SEE +SEEABLE +SEECATCH +SEECATCHIE +SEED +SEEDBED +SEEDBEDS +SEEDCAKE +SEEDCAKES +SEEDCASE +SEEDCASES +SEEDEATER +SEEDEATERS +SEEDED +SEEDER +SEEDERS +SEEDIER +SEEDIEST +SEEDILY +SEEDINESS +SEEDINESSES +SEEDING +SEEDLESS +SEEDLIKE +SEEDLING +SEEDLINGS +SEEDMAN +SEEDMEN +SEEDPOD +SEEDPODS +SEEDS +SEEDSMAN +SEEDSMEN +SEEDSTOCK +SEEDSTOCKS +SEEDTIME +SEEDTIMES +SEEDY +SEEING +SEEINGS +SEEK +SEEKER +SEEKERS +SEEKING +SEEKS +SEEL +SEELED +SEELING +SEELS +SEELY +SEEM +SEEMED +SEEMER +SEEMERS +SEEMING +SEEMINGLY +SEEMINGS +SEEMLIER +SEEMLIEST +SEEMLINESS +SEEMLINESSES +SEEMLY +SEEMS +SEEN +SEEP +SEEPAGE +SEEPAGES +SEEPED +SEEPIER +SEEPIEST +SEEPING +SEEPS +SEEPY +SEER +SEERESS +SEERESSES +SEERS +SEERSUCKER +SEERSUCKERS +SEES +SEESAW +SEESAWED +SEESAWING +SEESAWS +SEETHE +SEETHED +SEETHES +SEETHING +SEG +SEGETAL +SEGGAR +SEGGARS +SEGMENT +SEGMENTAL +SEGMENTALLY +SEGMENTARY +SEGMENTATION +SEGMENTATIONS +SEGMENTED +SEGMENTING +SEGMENTS +SEGNI +SEGNO +SEGNOS +SEGO +SEGOS +SEGREGANT +SEGREGANTS +SEGREGATE +SEGREGATED +SEGREGATES +SEGREGATING +SEGREGATION +SEGREGATIONIST +SEGREGATIONISTS +SEGREGATIONS +SEGREGATIVE +SEGS +SEGUE +SEGUED +SEGUEING +SEGUES +SEGUIDILLA +SEGUIDILLAS +SEI +SEICENTO +SEICENTOS +SEICHE +SEICHES +SEIDEL +SEIDELS +SEIF +SEIFS +SEIGNEUR +SEIGNEURIAL +SEIGNEURIES +SEIGNEURS +SEIGNEURY +SEIGNIOR +SEIGNIORAGE +SEIGNIORAGES +SEIGNIORIES +SEIGNIORS +SEIGNIORY +SEIGNORAGE +SEIGNORAGES +SEIGNORIAL +SEIGNORIES +SEIGNORY +SEINE +SEINED +SEINER +SEINERS +SEINES +SEINING +SEIS +SEISABLE +SEISE +SEISED +SEISER +SEISERS +SEISES +SEISIN +SEISING +SEISINGS +SEISINS +SEISM +SEISMAL +SEISMIC +SEISMICAL +SEISMICALLY +SEISMICITIES +SEISMICITY +SEISMISM +SEISMISMS +SEISMOGRAM +SEISMOGRAMS +SEISMOGRAPH +SEISMOGRAPHER +SEISMOGRAPHERS +SEISMOGRAPHIC +SEISMOGRAPHIES +SEISMOGRAPHS +SEISMOGRAPHY +SEISMOLOGICAL +SEISMOLOGIES +SEISMOLOGIST +SEISMOLOGISTS +SEISMOLOGY +SEISMOMETER +SEISMOMETERS +SEISMOMETRIC +SEISMOMETRIES +SEISMOMETRY +SEISMS +SEISOR +SEISORS +SEISURE +SEISURES +SEITAN +SEITANS +SEIZABLE +SEIZE +SEIZED +SEIZER +SEIZERS +SEIZES +SEIZIN +SEIZING +SEIZINGS +SEIZINS +SEIZOR +SEIZORS +SEIZURE +SEIZURES +SEJANT +SEJEANT +SEL +SELACHIAN +SELACHIANS +SELADANG +SELADANGS +SELAGINELLA +SELAGINELLAS +SELAH +SELAHS +SELAMLIK +SELAMLIKS +SELCOUTH +SELDOM +SELDOMLY +SELECT +SELECTABLE +SELECTED +SELECTEE +SELECTEES +SELECTING +SELECTION +SELECTIONIST +SELECTIONISTS +SELECTIONS +SELECTIVE +SELECTIVELY +SELECTIVENESS +SELECTIVENESSES +SELECTIVITIES +SELECTIVITY +SELECTLY +SELECTMAN +SELECTMEN +SELECTNESS +SELECTNESSES +SELECTOR +SELECTORS +SELECTS +SELENATE +SELENATES +SELENIC +SELENIDE +SELENIDES +SELENIFEROUS +SELENIOUS +SELENITE +SELENITES +SELENITIC +SELENIUM +SELENIUMS +SELENOCENTRIC +SELENOLOGICAL +SELENOLOGIES +SELENOLOGIST +SELENOLOGISTS +SELENOLOGY +SELENOSES +SELENOSIS +SELENOUS +SELF +SELFDOM +SELFDOMS +SELFED +SELFHEAL +SELFHEALS +SELFHOOD +SELFHOODS +SELFING +SELFISH +SELFISHLY +SELFISHNESS +SELFISHNESSES +SELFLESS +SELFLESSLY +SELFLESSNESS +SELFLESSNESSES +SELFNESS +SELFNESSES +SELFS +SELFSAME +SELFSAMENESS +SELFSAMENESSES +SELFWARD +SELFWARDS +SELKIE +SELKIES +SELL +SELLABLE +SELLE +SELLER +SELLERS +SELLES +SELLING +SELLOFF +SELLOFFS +SELLOTAPE +SELLOTAPED +SELLOTAPES +SELLOTAPING +SELLOUT +SELLOUTS +SELLS +SELS +SELSYN +SELSYNS +SELTZER +SELTZERS +SELVA +SELVAGE +SELVAGED +SELVAGES +SELVAS +SELVEDGE +SELVEDGED +SELVEDGES +SELVES +SEMAINIER +SEMAINIERS +SEMANTEME +SEMANTEMES +SEMANTIC +SEMANTICAL +SEMANTICALLY +SEMANTICIST +SEMANTICISTS +SEMANTICS +SEMAPHORE +SEMAPHORED +SEMAPHORES +SEMAPHORING +SEMASIOLOGICAL +SEMASIOLOGIES +SEMASIOLOGY +SEMATIC +SEMBLABLE +SEMBLABLES +SEMBLABLY +SEMBLANCE +SEMBLANCES +SEME +SEMEIOLOGIES +SEMEIOLOGY +SEMEIOTIC +SEMEIOTICS +SEMEME +SEMEMES +SEMEMIC +SEMEN +SEMENS +SEMES +SEMESTER +SEMESTERS +SEMESTRAL +SEMESTRIAL +SEMI +SEMIABSTRACT +SEMIABSTRACTION +SEMIANGLE +SEMIANGLES +SEMIANNUAL +SEMIANNUALLY +SEMIAQUATIC +SEMIARBOREAL +SEMIARID +SEMIARIDITIES +SEMIARIDITY +SEMIAUTOMATIC +SEMIAUTOMATICS +SEMIAUTONOMOUS +SEMIBALD +SEMIBREVE +SEMIBREVES +SEMICENTENNIAL +SEMICENTENNIALS +SEMICIRCLE +SEMICIRCLES +SEMICIRCULAR +SEMICIVILIZED +SEMICLASSIC +SEMICLASSICAL +SEMICLASSICS +SEMICOLON +SEMICOLONIAL +SEMICOLONIALISM +SEMICOLONIES +SEMICOLONS +SEMICOLONY +SEMICOMA +SEMICOMAS +SEMICOMMERCIAL +SEMICONDUCTING +SEMICONDUCTOR +SEMICONDUCTORS +SEMICONSCIOUS +SEMICRYSTALLINE +SEMICURED +SEMICYLINDRICAL +SEMIDARKNESS +SEMIDARKNESSES +SEMIDEAF +SEMIDEIFIED +SEMIDEIFIES +SEMIDEIFY +SEMIDEIFYING +SEMIDESERT +SEMIDESERTS +SEMIDETACHED +SEMIDIAMETER +SEMIDIAMETERS +SEMIDIURNAL +SEMIDIVINE +SEMIDOCUMENTARY +SEMIDOME +SEMIDOMED +SEMIDOMES +SEMIDOMINANT +SEMIDRY +SEMIDRYING +SEMIDWARF +SEMIDWARFS +SEMIDWARVES +SEMIEMPIRICAL +SEMIERECT +SEMIEVERGREEN +SEMIFEUDAL +SEMIFINAL +SEMIFINALIST +SEMIFINALISTS +SEMIFINALS +SEMIFINISHED +SEMIFIT +SEMIFITTED +SEMIFLEXIBLE +SEMIFLUID +SEMIFLUIDS +SEMIFORMAL +SEMIGALA +SEMIGLOSS +SEMIGLOSSES +SEMIGROUP +SEMIGROUPS +SEMIHARD +SEMIHIGH +SEMIHOBO +SEMIHOBOES +SEMIHOBOS +SEMILEGENDARY +SEMILETHAL +SEMILETHALS +SEMILIQUID +SEMILIQUIDS +SEMILITERATE +SEMILITERATES +SEMILLON +SEMILLONS +SEMILOG +SEMILOGARITHMIC +SEMILUNAR +SEMILUSTROUS +SEMIMAT +SEMIMATT +SEMIMATTE +SEMIMETAL +SEMIMETALLIC +SEMIMETALS +SEMIMICRO +SEMIMILD +SEMIMOIST +SEMIMONASTIC +SEMIMONTHLIES +SEMIMONTHLY +SEMIMUTE +SEMIMYSTICAL +SEMINA +SEMINAL +SEMINALLY +SEMINAR +SEMINARIAN +SEMINARIANS +SEMINARIES +SEMINARIST +SEMINARISTS +SEMINARS +SEMINARY +SEMINATURAL +SEMINIFEROUS +SEMINOMA +SEMINOMAD +SEMINOMADIC +SEMINOMADS +SEMINOMAS +SEMINOMATA +SEMINUDE +SEMINUDITIES +SEMINUDITY +SEMIOFFICIAL +SEMIOFFICIALLY +SEMIOLOGICAL +SEMIOLOGICALLY +SEMIOLOGIES +SEMIOLOGIST +SEMIOLOGISTS +SEMIOLOGY +SEMIOPAQUE +SEMIOPEN +SEMIOSES +SEMIOSIS +SEMIOTIC +SEMIOTICIAN +SEMIOTICIANS +SEMIOTICIST +SEMIOTICISTS +SEMIOTICS +SEMIOVAL +SEMIPALMATED +SEMIPARASITE +SEMIPARASITES +SEMIPARASITIC +SEMIPERMANENT +SEMIPERMEABLE +SEMIPIOUS +SEMIPOLITICAL +SEMIPOPULAR +SEMIPORCELAIN +SEMIPORCELAINS +SEMIPORNOGRAPHY +SEMIPOSTAL +SEMIPOSTALS +SEMIPRECIOUS +SEMIPRIVATE +SEMIPRO +SEMIPROS +SEMIPUBLIC +SEMIQUAVER +SEMIQUAVERS +SEMIRAW +SEMIRELIGIOUS +SEMIRETIRED +SEMIRETIREMENT +SEMIRETIREMENTS +SEMIRIGID +SEMIROUND +SEMIROUNDS +SEMIRURAL +SEMIS +SEMISACRED +SEMISECRET +SEMISEDENTARY +SEMISES +SEMISHRUBBY +SEMISKILLED +SEMISOFT +SEMISOLID +SEMISOLIDS +SEMISTIFF +SEMISUBMERSIBLE +SEMISWEET +SEMISYNTHETIC +SEMITERRESTRIAL +SEMITIST +SEMITISTS +SEMITONAL +SEMITONALLY +SEMITONE +SEMITONES +SEMITONIC +SEMITONICALLY +SEMITRAILER +SEMITRAILERS +SEMITRANSLUCENT +SEMITRANSPARENT +SEMITROPIC +SEMITROPICAL +SEMITROPICS +SEMITRUCK +SEMITRUCKS +SEMIURBAN +SEMIVOWEL +SEMIVOWELS +SEMIWEEKLIES +SEMIWEEKLY +SEMIWILD +SEMIWORKS +SEMIYEARLY +SEMOLINA +SEMOLINAS +SEMPERVIVUM +SEMPERVIVUMS +SEMPITERNAL +SEMPITERNALLY +SEMPITERNITIES +SEMPITERNITY +SEMPLE +SEMPLICE +SEMPRE +SEMPSTRESS +SEMPSTRESSES +SEN +SENARII +SENARIUS +SENARY +SENATE +SENATES +SENATOR +SENATORIAL +SENATORIAN +SENATORS +SENATORSHIP +SENATORSHIPS +SEND +SENDABLE +SENDAL +SENDALS +SENDED +SENDER +SENDERS +SENDING +SENDOFF +SENDOFFS +SENDS +SENDUP +SENDUPS +SENE +SENECA +SENECAS +SENECIO +SENECIOS +SENECTITUDE +SENECTITUDES +SENEGA +SENEGAS +SENESCENCE +SENESCENCES +SENESCENT +SENESCHAL +SENESCHALS +SENGI +SENHOR +SENHORA +SENHORAS +SENHORES +SENHORITA +SENHORITAS +SENHORS +SENILE +SENILELY +SENILES +SENILITIES +SENILITY +SENIOR +SENIORITIES +SENIORITY +SENIORS +SENITI +SENNA +SENNACHIE +SENNACHIES +SENNAS +SENNET +SENNETS +SENNIGHT +SENNIGHTS +SENNIT +SENNITS +SENOPIA +SENOPIAS +SENOR +SENORA +SENORAS +SENORES +SENORITA +SENORITAS +SENORS +SENRYU +SENSA +SENSATE +SENSATED +SENSATELY +SENSATES +SENSATING +SENSATION +SENSATIONAL +SENSATIONALISE +SENSATIONALISED +SENSATIONALISES +SENSATIONALISM +SENSATIONALISMS +SENSATIONALIST +SENSATIONALISTS +SENSATIONALIZE +SENSATIONALIZED +SENSATIONALIZES +SENSATIONALLY +SENSATIONS +SENSE +SENSED +SENSEFUL +SENSEI +SENSEIS +SENSELESS +SENSELESSLY +SENSELESSNESS +SENSELESSNESSES +SENSES +SENSIBILIA +SENSIBILITIES +SENSIBILITY +SENSIBLE +SENSIBLENESS +SENSIBLENESSES +SENSIBLER +SENSIBLES +SENSIBLEST +SENSIBLY +SENSILLA +SENSILLAE +SENSILLUM +SENSING +SENSITISATION +SENSITISATIONS +SENSITISE +SENSITISED +SENSITISES +SENSITISING +SENSITIVE +SENSITIVELY +SENSITIVENESS +SENSITIVENESSES +SENSITIVES +SENSITIVITIES +SENSITIVITY +SENSITIZATION +SENSITIZATIONS +SENSITIZE +SENSITIZED +SENSITIZER +SENSITIZERS +SENSITIZES +SENSITIZING +SENSITOMETER +SENSITOMETERS +SENSITOMETRIC +SENSITOMETRIES +SENSITOMETRY +SENSOR +SENSORIA +SENSORIAL +SENSORIALLY +SENSORIMOTOR +SENSORINEURAL +SENSORIUM +SENSORIUMS +SENSORS +SENSORY +SENSUAL +SENSUALISM +SENSUALISMS +SENSUALIST +SENSUALISTIC +SENSUALISTS +SENSUALITIES +SENSUALITY +SENSUALIZATION +SENSUALIZATIONS +SENSUALIZE +SENSUALIZED +SENSUALIZES +SENSUALIZING +SENSUALLY +SENSUM +SENSUOSITIES +SENSUOSITY +SENSUOUS +SENSUOUSLY +SENSUOUSNESS +SENSUOUSNESSES +SENT +SENTE +SENTENCE +SENTENCED +SENTENCER +SENTENCERS +SENTENCES +SENTENCING +SENTENTIA +SENTENTIAE +SENTENTIAL +SENTENTIOUS +SENTENTIOUSLY +SENTENTIOUSNESS +SENTI +SENTIENCE +SENTIENCES +SENTIENCIES +SENTIENCY +SENTIENT +SENTIENTLY +SENTIENTS +SENTIMENT +SENTIMENTAL +SENTIMENTALISE +SENTIMENTALISED +SENTIMENTALISES +SENTIMENTALISM +SENTIMENTALISMS +SENTIMENTALIST +SENTIMENTALISTS +SENTIMENTALITY +SENTIMENTALIZE +SENTIMENTALIZED +SENTIMENTALIZES +SENTIMENTALLY +SENTIMENTS +SENTIMO +SENTIMOS +SENTINEL +SENTINELED +SENTINELING +SENTINELLED +SENTINELLING +SENTINELS +SENTRIES +SENTRY +SEPAL +SEPALED +SEPALINE +SEPALLED +SEPALOID +SEPALOUS +SEPALS +SEPARABILITIES +SEPARABILITY +SEPARABLE +SEPARABLENESS +SEPARABLENESSES +SEPARABLY +SEPARATE +SEPARATED +SEPARATELY +SEPARATENESS +SEPARATENESSES +SEPARATES +SEPARATING +SEPARATION +SEPARATIONIST +SEPARATIONISTS +SEPARATIONS +SEPARATISM +SEPARATISMS +SEPARATIST +SEPARATISTIC +SEPARATISTS +SEPARATIVE +SEPARATOR +SEPARATORS +SEPIA +SEPIAS +SEPIC +SEPIOLITE +SEPIOLITES +SEPOY +SEPOYS +SEPPUKU +SEPPUKUS +SEPSES +SEPSIS +SEPT +SEPTA +SEPTAGE +SEPTAGES +SEPTAL +SEPTARIA +SEPTARIAN +SEPTARIUM +SEPTATE +SEPTENARIES +SEPTENARII +SEPTENARIUS +SEPTENARY +SEPTENDECILLION +SEPTENNIAL +SEPTENNIALLY +SEPTENTRION +SEPTENTRIONAL +SEPTENTRIONS +SEPTET +SEPTETS +SEPTETTE +SEPTETTES +SEPTIC +SEPTICAL +SEPTICEMIA +SEPTICEMIAS +SEPTICEMIC +SEPTICIDAL +SEPTICITIES +SEPTICITY +SEPTICS +SEPTILLION +SEPTILLIONS +SEPTIME +SEPTIMES +SEPTS +SEPTUAGENARIAN +SEPTUAGENARIANS +SEPTUM +SEPTUMS +SEPTUPLE +SEPTUPLED +SEPTUPLES +SEPTUPLET +SEPTUPLETS +SEPTUPLING +SEPULCHER +SEPULCHERED +SEPULCHERING +SEPULCHERS +SEPULCHRAL +SEPULCHRALLY +SEPULCHRE +SEPULCHRED +SEPULCHRES +SEPULCHRING +SEPULTURE +SEPULTURES +SEQUACIOUS +SEQUACIOUSLY +SEQUACITIES +SEQUACITY +SEQUEL +SEQUELA +SEQUELAE +SEQUELIZE +SEQUELIZED +SEQUELIZES +SEQUELIZING +SEQUELS +SEQUENCE +SEQUENCED +SEQUENCER +SEQUENCERS +SEQUENCES +SEQUENCIES +SEQUENCING +SEQUENCY +SEQUENT +SEQUENTIAL +SEQUENTIALLY +SEQUENTS +SEQUESTER +SEQUESTERED +SEQUESTERING +SEQUESTERS +SEQUESTRA +SEQUESTRATE +SEQUESTRATED +SEQUESTRATES +SEQUESTRATING +SEQUESTRATION +SEQUESTRATIONS +SEQUESTRUM +SEQUESTRUMS +SEQUIN +SEQUINED +SEQUINING +SEQUINNED +SEQUINS +SEQUITUR +SEQUITURS +SEQUOIA +SEQUOIAS +SER +SERA +SERAC +SERACS +SERAGLIO +SERAGLIOS +SERAI +SERAIL +SERAILS +SERAIS +SERAL +SERAPE +SERAPES +SERAPH +SERAPHIC +SERAPHICALLY +SERAPHIM +SERAPHIMS +SERAPHIN +SERAPHS +SERDAB +SERDABS +SERE +SERED +SEREIN +SEREINS +SERENADE +SERENADED +SERENADER +SERENADERS +SERENADES +SERENADING +SERENATA +SERENATAS +SERENATE +SERENDIPITIES +SERENDIPITOUS +SERENDIPITOUSLY +SERENDIPITY +SERENE +SERENELY +SERENENESS +SERENENESSES +SERENER +SERENES +SERENEST +SERENITIES +SERENITY +SERER +SERES +SEREST +SERF +SERFAGE +SERFAGES +SERFDOM +SERFDOMS +SERFHOOD +SERFHOODS +SERFISH +SERFLIKE +SERFS +SERGE +SERGEANCIES +SERGEANCY +SERGEANT +SERGEANTIES +SERGEANTS +SERGEANTY +SERGED +SERGER +SERGERS +SERGES +SERGING +SERGINGS +SERIAL +SERIALISE +SERIALISED +SERIALISES +SERIALISING +SERIALISM +SERIALISMS +SERIALIST +SERIALISTS +SERIALIZATION +SERIALIZATIONS +SERIALIZE +SERIALIZED +SERIALIZES +SERIALIZING +SERIALLY +SERIALS +SERIATE +SERIATED +SERIATELY +SERIATES +SERIATIM +SERIATING +SERIATION +SERIATIONS +SERICEOUS +SERICIN +SERICINS +SERICULTURAL +SERICULTURE +SERICULTURES +SERICULTURIST +SERICULTURISTS +SERIEMA +SERIEMAS +SERIES +SERIF +SERIFED +SERIFFED +SERIFS +SERIGRAPH +SERIGRAPHER +SERIGRAPHERS +SERIGRAPHIES +SERIGRAPHS +SERIGRAPHY +SERIN +SERINE +SERINES +SERING +SERINGA +SERINGAS +SERINS +SERIOCOMIC +SERIOCOMICALLY +SERIOUS +SERIOUSLY +SERIOUSNESS +SERIOUSNESSES +SERJEANT +SERJEANTIES +SERJEANTS +SERJEANTY +SERMON +SERMONETTE +SERMONETTES +SERMONIC +SERMONIZE +SERMONIZED +SERMONIZER +SERMONIZERS +SERMONIZES +SERMONIZING +SERMONS +SEROCONVERSION +SEROCONVERSIONS +SERODIAGNOSES +SERODIAGNOSIS +SERODIAGNOSTIC +SEROLOGIC +SEROLOGICAL +SEROLOGICALLY +SEROLOGIES +SEROLOGIST +SEROLOGISTS +SEROLOGY +SERONEGATIVE +SERONEGATIVITY +SEROPOSITIVE +SEROPOSITIVITY +SEROPURULENT +SEROSA +SEROSAE +SEROSAL +SEROSAS +SEROSITIES +SEROSITY +SEROTINAL +SEROTINE +SEROTINES +SEROTINIES +SEROTINOUS +SEROTINY +SEROTONERGIC +SEROTONIN +SEROTONINERGIC +SEROTONINS +SEROTYPE +SEROTYPED +SEROTYPES +SEROTYPING +SEROUS +SEROVAR +SEROVARS +SEROW +SEROWS +SERPENT +SERPENTINE +SERPENTINELY +SERPENTINES +SERPENTS +SERPIGINES +SERPIGINOUS +SERPIGINOUSLY +SERPIGO +SERPIGOES +SERPIGOS +SERRANID +SERRANIDS +SERRANO +SERRANOID +SERRANOS +SERRATE +SERRATED +SERRATES +SERRATING +SERRATION +SERRATIONS +SERRATURE +SERRATURES +SERRIED +SERRIEDLY +SERRIEDNESS +SERRIEDNESSES +SERRIES +SERRULATE +SERRY +SERRYING +SERS +SERUM +SERUMAL +SERUMS +SERVABLE +SERVAL +SERVALS +SERVANT +SERVANTHOOD +SERVANTHOODS +SERVANTLESS +SERVANTS +SERVE +SERVED +SERVER +SERVERS +SERVES +SERVICE +SERVICEABILITY +SERVICEABLE +SERVICEABLENESS +SERVICEABLY +SERVICEBERRIES +SERVICEBERRY +SERVICED +SERVICEMAN +SERVICEMEN +SERVICER +SERVICERS +SERVICES +SERVICEWOMAN +SERVICEWOMEN +SERVICING +SERVIETTE +SERVIETTES +SERVILE +SERVILELY +SERVILENESS +SERVILENESSES +SERVILITIES +SERVILITY +SERVING +SERVINGS +SERVITOR +SERVITORS +SERVITUDE +SERVITUDES +SERVO +SERVOMECHANISM +SERVOMECHANISMS +SERVOMOTOR +SERVOMOTORS +SERVOS +SESAME +SESAMES +SESAMOID +SESAMOIDS +SESQUICARBONATE +SESQUICENTENARY +SESQUIPEDALIAN +SESQUITERPENE +SESQUITERPENES +SESSILE +SESSILITIES +SESSILITY +SESSION +SESSIONAL +SESSIONS +SESSPOOL +SESSPOOLS +SESTERCE +SESTERCES +SESTERTIA +SESTERTIUM +SESTET +SESTETS +SESTINA +SESTINAS +SESTINE +SESTINES +SET +SETA +SETACEOUS +SETAE +SETAL +SETBACK +SETBACKS +SETENANT +SETENANTS +SETIFORM +SETLINE +SETLINES +SETOFF +SETOFFS +SETON +SETONS +SETOSE +SETOUS +SETOUT +SETOUTS +SETS +SETSCREW +SETSCREWS +SETT +SETTEE +SETTEES +SETTER +SETTERS +SETTING +SETTINGS +SETTLE +SETTLEABLE +SETTLED +SETTLEMENT +SETTLEMENTS +SETTLER +SETTLERS +SETTLES +SETTLING +SETTLINGS +SETTLOR +SETTLORS +SETTS +SETULOSE +SETULOUS +SETUP +SETUPS +SEVEN +SEVENFOLD +SEVENS +SEVENTEEN +SEVENTEENS +SEVENTEENTH +SEVENTEENTHS +SEVENTH +SEVENTHLY +SEVENTHS +SEVENTIES +SEVENTIETH +SEVENTIETHS +SEVENTY +SEVER +SEVERABILITIES +SEVERABILITY +SEVERABLE +SEVERAL +SEVERALFOLD +SEVERALLY +SEVERALS +SEVERALTIES +SEVERALTY +SEVERANCE +SEVERANCES +SEVERE +SEVERED +SEVERELY +SEVERENESS +SEVERENESSES +SEVERER +SEVEREST +SEVERING +SEVERITIES +SEVERITY +SEVERS +SEVICHE +SEVICHES +SEVRUGA +SEVRUGAS +SEW +SEWABILITIES +SEWABILITY +SEWABLE +SEWAGE +SEWAGES +SEWAN +SEWANS +SEWAR +SEWARS +SEWED +SEWER +SEWERAGE +SEWERAGES +SEWERED +SEWERING +SEWERLESS +SEWERLIKE +SEWERS +SEWING +SEWINGS +SEWN +SEWS +SEX +SEXAGENARIAN +SEXAGENARIANS +SEXAGESIMAL +SEXAGESIMALS +SEXDECILLION +SEXDECILLIONS +SEXED +SEXENNIAL +SEXENNIALS +SEXES +SEXIER +SEXIEST +SEXILY +SEXINESS +SEXINESSES +SEXING +SEXISM +SEXISMS +SEXIST +SEXISTS +SEXLESS +SEXLESSLY +SEXLESSNESS +SEXLESSNESSES +SEXOLOGIC +SEXOLOGIES +SEXOLOGIST +SEXOLOGISTS +SEXOLOGY +SEXPLOITATION +SEXPLOITATIONS +SEXPOT +SEXPOTS +SEXT +SEXTAIN +SEXTAINS +SEXTAN +SEXTANS +SEXTANT +SEXTANTS +SEXTARII +SEXTARIUS +SEXTET +SEXTETS +SEXTETTE +SEXTETTES +SEXTILE +SEXTILES +SEXTILLION +SEXTILLIONS +SEXTO +SEXTODECIMO +SEXTODECIMOS +SEXTON +SEXTONS +SEXTOS +SEXTS +SEXTUPLE +SEXTUPLED +SEXTUPLES +SEXTUPLET +SEXTUPLETS +SEXTUPLICATE +SEXTUPLICATED +SEXTUPLICATES +SEXTUPLICATING +SEXTUPLING +SEXTUPLY +SEXUAL +SEXUALITIES +SEXUALITY +SEXUALIZE +SEXUALIZED +SEXUALIZES +SEXUALIZING +SEXUALLY +SEXY +SFERICS +SFORZANDI +SFORZANDO +SFORZANDOS +SFORZATO +SFORZATOS +SFUMATO +SFUMATOS +SGRAFFITI +SGRAFFITO +SH +SHA +SHABBATOT +SHABBIER +SHABBIEST +SHABBILY +SHABBINESS +SHABBINESSES +SHABBY +SHACK +SHACKED +SHACKING +SHACKLE +SHACKLEBONE +SHACKLEBONES +SHACKLED +SHACKLER +SHACKLERS +SHACKLES +SHACKLING +SHACKO +SHACKOES +SHACKOS +SHACKS +SHAD +SHADBERRIES +SHADBERRY +SHADBLOW +SHADBLOWS +SHADBUSH +SHADBUSHES +SHADCHAN +SHADCHANIM +SHADCHANS +SHADDOCK +SHADDOCKS +SHADE +SHADED +SHADELESS +SHADER +SHADERS +SHADES +SHADFLIES +SHADFLY +SHADIER +SHADIEST +SHADILY +SHADINESS +SHADINESSES +SHADING +SHADINGS +SHADKHAN +SHADKHANIM +SHADKHANS +SHADOOF +SHADOOFS +SHADOW +SHADOWBOX +SHADOWBOXED +SHADOWBOXES +SHADOWBOXING +SHADOWED +SHADOWER +SHADOWERS +SHADOWGRAPH +SHADOWGRAPHIES +SHADOWGRAPHS +SHADOWGRAPHY +SHADOWIER +SHADOWIEST +SHADOWILY +SHADOWINESS +SHADOWINESSES +SHADOWING +SHADOWLESS +SHADOWLIKE +SHADOWS +SHADOWY +SHADRACH +SHADRACHS +SHADS +SHADUF +SHADUFS +SHADY +SHAFT +SHAFTED +SHAFTING +SHAFTINGS +SHAFTS +SHAG +SHAGBARK +SHAGBARKS +SHAGGED +SHAGGIER +SHAGGIEST +SHAGGILY +SHAGGINESS +SHAGGINESSES +SHAGGING +SHAGGY +SHAGGYMANE +SHAGGYMANES +SHAGREEN +SHAGREENS +SHAGS +SHAH +SHAHDOM +SHAHDOMS +SHAHS +SHAIRD +SHAIRDS +SHAIRN +SHAIRNS +SHAITAN +SHAITANS +SHAKABLE +SHAKE +SHAKEABLE +SHAKEDOWN +SHAKEDOWNS +SHAKEN +SHAKEOUT +SHAKEOUTS +SHAKER +SHAKERS +SHAKES +SHAKEUP +SHAKEUPS +SHAKIER +SHAKIEST +SHAKILY +SHAKINESS +SHAKINESSES +SHAKING +SHAKO +SHAKOES +SHAKOS +SHAKY +SHALE +SHALED +SHALELIKE +SHALES +SHALEY +SHALIER +SHALIEST +SHALL +SHALLOON +SHALLOONS +SHALLOP +SHALLOPS +SHALLOT +SHALLOTS +SHALLOW +SHALLOWED +SHALLOWER +SHALLOWEST +SHALLOWING +SHALLOWLY +SHALLOWNESS +SHALLOWNESSES +SHALLOWS +SHALOM +SHALOMS +SHALT +SHALY +SHAM +SHAMABLE +SHAMABLY +SHAMAN +SHAMANIC +SHAMANISM +SHAMANISMS +SHAMANIST +SHAMANISTIC +SHAMANISTS +SHAMANS +SHAMAS +SHAMBLE +SHAMBLED +SHAMBLES +SHAMBLING +SHAMBOLIC +SHAME +SHAMEABLE +SHAMEABLY +SHAMED +SHAMEFACED +SHAMEFACEDLY +SHAMEFACEDNESS +SHAMEFAST +SHAMEFUL +SHAMEFULLY +SHAMEFULNESS +SHAMEFULNESSES +SHAMELESS +SHAMELESSLY +SHAMELESSNESS +SHAMELESSNESSES +SHAMES +SHAMING +SHAMISEN +SHAMISENS +SHAMMAS +SHAMMASH +SHAMMASHIM +SHAMMASIM +SHAMMED +SHAMMER +SHAMMERS +SHAMMES +SHAMMIED +SHAMMIES +SHAMMING +SHAMMOS +SHAMMOSIM +SHAMMY +SHAMMYING +SHAMOIS +SHAMOS +SHAMOSIM +SHAMOY +SHAMOYED +SHAMOYING +SHAMOYS +SHAMPOO +SHAMPOOED +SHAMPOOER +SHAMPOOERS +SHAMPOOING +SHAMPOOS +SHAMROCK +SHAMROCKS +SHAMS +SHAMUS +SHAMUSES +SHANACHIE +SHANACHIES +SHANDIES +SHANDY +SHANDYGAFF +SHANDYGAFFS +SHANGHAI +SHANGHAIED +SHANGHAIER +SHANGHAIERS +SHANGHAIING +SHANGHAIS +SHANK +SHANKED +SHANKING +SHANKPIECE +SHANKPIECES +SHANKS +SHANNIES +SHANNY +SHANTEY +SHANTEYS +SHANTI +SHANTIES +SHANTIH +SHANTIHS +SHANTIS +SHANTUNG +SHANTUNGS +SHANTY +SHANTYMAN +SHANTYMEN +SHANTYTOWN +SHANTYTOWNS +SHAPABLE +SHAPE +SHAPEABLE +SHAPED +SHAPELESS +SHAPELESSLY +SHAPELESSNESS +SHAPELESSNESSES +SHAPELIER +SHAPELIEST +SHAPELINESS +SHAPELINESSES +SHAPELY +SHAPEN +SHAPER +SHAPERS +SHAPES +SHAPEUP +SHAPEUPS +SHAPEWEAR +SHAPING +SHARABLE +SHARD +SHARDS +SHARE +SHAREABILITIES +SHAREABILITY +SHAREABLE +SHARECROP +SHARECROPPED +SHARECROPPER +SHARECROPPERS +SHARECROPPING +SHARECROPS +SHARED +SHAREHOLDER +SHAREHOLDERS +SHARER +SHARERS +SHARES +SHAREWARE +SHAREWARES +SHARIA +SHARIAH +SHARIAHS +SHARIAS +SHARIF +SHARIFIAN +SHARIFS +SHARING +SHARK +SHARKED +SHARKER +SHARKERS +SHARKING +SHARKLIKE +SHARKS +SHARKSKIN +SHARKSKINS +SHARN +SHARNS +SHARNY +SHARP +SHARPED +SHARPEN +SHARPENED +SHARPENER +SHARPENERS +SHARPENING +SHARPENS +SHARPER +SHARPERS +SHARPEST +SHARPIE +SHARPIES +SHARPING +SHARPLY +SHARPNESS +SHARPNESSES +SHARPS +SHARPSHOOTER +SHARPSHOOTERS +SHARPSHOOTING +SHARPSHOOTINGS +SHARPY +SHASHLICK +SHASHLICKS +SHASHLIK +SHASHLIKS +SHASLIK +SHASLIKS +SHAT +SHATTER +SHATTERED +SHATTERER +SHATTERERS +SHATTERING +SHATTERINGLY +SHATTERPROOF +SHATTERS +SHAUGH +SHAUGHS +SHAUL +SHAULED +SHAULING +SHAULS +SHAVABLE +SHAVE +SHAVED +SHAVELING +SHAVELINGS +SHAVEN +SHAVER +SHAVERS +SHAVES +SHAVETAIL +SHAVETAILS +SHAVIE +SHAVIES +SHAVING +SHAVINGS +SHAW +SHAWED +SHAWING +SHAWL +SHAWLED +SHAWLING +SHAWLS +SHAWM +SHAWMS +SHAWN +SHAWS +SHAY +SHAYS +SHAZAM +SHE +SHEA +SHEAF +SHEAFED +SHEAFING +SHEAFLIKE +SHEAFS +SHEAL +SHEALING +SHEALINGS +SHEALS +SHEAR +SHEARED +SHEARER +SHEARERS +SHEARING +SHEARINGS +SHEARLEGS +SHEARLING +SHEARLINGS +SHEARS +SHEARWATER +SHEARWATERS +SHEAS +SHEATFISH +SHEATFISHES +SHEATH +SHEATHBILL +SHEATHBILLS +SHEATHE +SHEATHED +SHEATHER +SHEATHERS +SHEATHES +SHEATHING +SHEATHINGS +SHEATHS +SHEAVE +SHEAVED +SHEAVES +SHEAVING +SHEBANG +SHEBANGS +SHEBEAN +SHEBEANS +SHEBEEN +SHEBEENS +SHED +SHEDABLE +SHEDDABLE +SHEDDED +SHEDDER +SHEDDERS +SHEDDING +SHEDLIKE +SHEDS +SHEEN +SHEENED +SHEENEY +SHEENEYS +SHEENFUL +SHEENIE +SHEENIER +SHEENIES +SHEENIEST +SHEENING +SHEENS +SHEENY +SHEEP +SHEEPBERRIES +SHEEPBERRY +SHEEPCOT +SHEEPCOTE +SHEEPCOTES +SHEEPCOTS +SHEEPDOG +SHEEPDOGS +SHEEPFOLD +SHEEPFOLDS +SHEEPHEAD +SHEEPHEADS +SHEEPHERDER +SHEEPHERDERS +SHEEPHERDING +SHEEPHERDINGS +SHEEPISH +SHEEPISHLY +SHEEPISHNESS +SHEEPISHNESSES +SHEEPMAN +SHEEPMEN +SHEEPSHANK +SHEEPSHANKS +SHEEPSHEAD +SHEEPSHEADS +SHEEPSHEARER +SHEEPSHEARERS +SHEEPSHEARING +SHEEPSHEARINGS +SHEEPSKIN +SHEEPSKINS +SHEEPWALK +SHEEPWALKS +SHEER +SHEERED +SHEERER +SHEEREST +SHEERING +SHEERLEGS +SHEERLY +SHEERNESS +SHEERNESSES +SHEERS +SHEESH +SHEET +SHEETED +SHEETER +SHEETERS +SHEETFED +SHEETING +SHEETINGS +SHEETLESS +SHEETLIKE +SHEETROCK +SHEETROCKED +SHEETROCKING +SHEETROCKS +SHEETS +SHEEVE +SHEEVES +SHEGETZ +SHEIK +SHEIKDOM +SHEIKDOMS +SHEIKH +SHEIKHDOM +SHEIKHDOMS +SHEIKHS +SHEIKS +SHEILA +SHEILAS +SHEITAN +SHEITANS +SHEKALIM +SHEKEL +SHEKELIM +SHEKELS +SHELDRAKE +SHELDRAKES +SHELDUCK +SHELDUCKS +SHELF +SHELFFUL +SHELFFULS +SHELFLIKE +SHELL +SHELLAC +SHELLACK +SHELLACKED +SHELLACKING +SHELLACKINGS +SHELLACKS +SHELLACS +SHELLBACK +SHELLBACKS +SHELLBARK +SHELLBARKS +SHELLCRACKER +SHELLCRACKERS +SHELLED +SHELLER +SHELLERS +SHELLFIRE +SHELLFIRES +SHELLFISH +SHELLFISHERIES +SHELLFISHERY +SHELLFISHES +SHELLIER +SHELLIEST +SHELLING +SHELLPROOF +SHELLS +SHELLWORK +SHELLWORKS +SHELLY +SHELTA +SHELTAS +SHELTER +SHELTERBELT +SHELTERBELTS +SHELTERED +SHELTERER +SHELTERERS +SHELTERING +SHELTERLESS +SHELTERS +SHELTIE +SHELTIES +SHELTY +SHELVE +SHELVED +SHELVER +SHELVERS +SHELVES +SHELVIER +SHELVIEST +SHELVING +SHELVINGS +SHELVY +SHENANIGAN +SHENANIGANS +SHEND +SHENDING +SHENDS +SHENT +SHEOL +SHEOLS +SHEPHERD +SHEPHERDED +SHEPHERDESS +SHEPHERDESSES +SHEPHERDING +SHEPHERDS +SHEQALIM +SHEQEL +SHEQELS +SHERBERT +SHERBERTS +SHERBET +SHERBETS +SHERD +SHERDS +SHEREEF +SHEREEFS +SHERGOTTITE +SHERGOTTITES +SHERIF +SHERIFF +SHERIFFDOM +SHERIFFDOMS +SHERIFFS +SHERIFS +SHERLOCK +SHERLOCKS +SHEROOT +SHEROOTS +SHERPA +SHERPAS +SHERRIES +SHERRIS +SHERRISES +SHERRY +SHES +SHETLAND +SHETLANDS +SHEUCH +SHEUCHS +SHEUGH +SHEUGHS +SHEW +SHEWBREAD +SHEWBREADS +SHEWED +SHEWER +SHEWERS +SHEWING +SHEWN +SHEWS +SHH +SHIATSU +SHIATSUS +SHIATZU +SHIATZUS +SHIBAH +SHIBAHS +SHIBBOLETH +SHIBBOLETHS +SHICKER +SHICKERED +SHICKERS +SHICKSA +SHICKSAS +SHIED +SHIEL +SHIELD +SHIELDED +SHIELDER +SHIELDERS +SHIELDING +SHIELDS +SHIELING +SHIELINGS +SHIELS +SHIER +SHIERS +SHIES +SHIEST +SHIFT +SHIFTABLE +SHIFTED +SHIFTER +SHIFTERS +SHIFTIER +SHIFTIEST +SHIFTILY +SHIFTINESS +SHIFTINESSES +SHIFTING +SHIFTLESS +SHIFTLESSLY +SHIFTLESSNESS +SHIFTLESSNESSES +SHIFTS +SHIFTY +SHIGELLA +SHIGELLAE +SHIGELLAS +SHIGELLOSES +SHIGELLOSIS +SHIITAKE +SHIITAKES +SHIKAR +SHIKAREE +SHIKAREES +SHIKARI +SHIKARIS +SHIKARRED +SHIKARRING +SHIKARS +SHIKKER +SHIKKERS +SHIKSA +SHIKSAS +SHIKSE +SHIKSEH +SHIKSEHS +SHIKSES +SHILINGI +SHILL +SHILLALA +SHILLALAH +SHILLALAHS +SHILLALAS +SHILLED +SHILLELAGH +SHILLELAGHS +SHILLELAH +SHILLELAHS +SHILLING +SHILLINGS +SHILLS +SHILPIT +SHILY +SHIM +SHIMMED +SHIMMER +SHIMMERED +SHIMMERING +SHIMMERS +SHIMMERY +SHIMMIED +SHIMMIES +SHIMMING +SHIMMY +SHIMMYING +SHIMS +SHIN +SHINBONE +SHINBONES +SHINDIES +SHINDIG +SHINDIGS +SHINDY +SHINDYS +SHINE +SHINED +SHINER +SHINERS +SHINES +SHINGLE +SHINGLED +SHINGLER +SHINGLERS +SHINGLES +SHINGLING +SHINGLY +SHINGUARD +SHINGUARDS +SHINIER +SHINIEST +SHINILY +SHININESS +SHININESSES +SHINING +SHININGLY +SHINLEAF +SHINLEAFS +SHINLEAVES +SHINNED +SHINNERIES +SHINNERY +SHINNEY +SHINNEYED +SHINNEYING +SHINNEYS +SHINNIED +SHINNIES +SHINNING +SHINNY +SHINNYING +SHINPLASTER +SHINPLASTERS +SHINS +SHINSPLINTS +SHINY +SHIP +SHIPBOARD +SHIPBOARDS +SHIPBORNE +SHIPBUILDER +SHIPBUILDERS +SHIPBUILDING +SHIPBUILDINGS +SHIPFITTER +SHIPFITTERS +SHIPLAP +SHIPLAPS +SHIPLESS +SHIPLOAD +SHIPLOADS +SHIPMAN +SHIPMASTER +SHIPMASTERS +SHIPMATE +SHIPMATES +SHIPMEN +SHIPMENT +SHIPMENTS +SHIPOWNER +SHIPOWNERS +SHIPPABLE +SHIPPED +SHIPPEN +SHIPPENS +SHIPPER +SHIPPERS +SHIPPING +SHIPPINGS +SHIPPON +SHIPPONS +SHIPS +SHIPSHAPE +SHIPSIDE +SHIPSIDES +SHIPWAY +SHIPWAYS +SHIPWORM +SHIPWORMS +SHIPWRECK +SHIPWRECKED +SHIPWRECKING +SHIPWRECKS +SHIPWRIGHT +SHIPWRIGHTS +SHIPYARD +SHIPYARDS +SHIRE +SHIRES +SHIRK +SHIRKED +SHIRKER +SHIRKERS +SHIRKING +SHIRKS +SHIRR +SHIRRED +SHIRRING +SHIRRINGS +SHIRRS +SHIRT +SHIRTDRESS +SHIRTDRESSES +SHIRTFRONT +SHIRTFRONTS +SHIRTIER +SHIRTIEST +SHIRTING +SHIRTINGS +SHIRTLESS +SHIRTMAKER +SHIRTMAKERS +SHIRTS +SHIRTSLEEVE +SHIRTSLEEVED +SHIRTSLEEVES +SHIRTTAIL +SHIRTTAILED +SHIRTTAILING +SHIRTTAILS +SHIRTWAIST +SHIRTWAISTS +SHIRTY +SHIST +SHISTS +SHIT +SHITAKE +SHITAKES +SHITFACED +SHITHEAD +SHITHEADS +SHITLESS +SHITLIST +SHITLISTS +SHITLOAD +SHITLOADS +SHITS +SHITTAH +SHITTAHS +SHITTED +SHITTIER +SHITTIEST +SHITTIM +SHITTIMS +SHITTIMWOOD +SHITTIMWOODS +SHITTING +SHITTY +SHIV +SHIVA +SHIVAH +SHIVAHS +SHIVAREE +SHIVAREED +SHIVAREEING +SHIVAREES +SHIVAS +SHIVE +SHIVER +SHIVERED +SHIVERER +SHIVERERS +SHIVERING +SHIVERS +SHIVERY +SHIVES +SHIVITI +SHIVITIS +SHIVS +SHKOTZIM +SHLEMIEHL +SHLEMIEHLS +SHLEMIEL +SHLEMIELS +SHLEP +SHLEPP +SHLEPPED +SHLEPPING +SHLEPPS +SHLEPS +SHLIMAZEL +SHLIMAZELS +SHLOCK +SHLOCKIER +SHLOCKIEST +SHLOCKS +SHLOCKY +SHLUB +SHLUBS +SHLUMP +SHLUMPED +SHLUMPING +SHLUMPS +SHLUMPY +SHMALTZ +SHMALTZES +SHMALTZIER +SHMALTZIEST +SHMALTZY +SHMEAR +SHMEARS +SHMO +SHMOES +SHMOOZE +SHMOOZED +SHMOOZES +SHMOOZING +SHMUCK +SHMUCKS +SHNAPPS +SHNAPS +SHNOOK +SHNOOKS +SHNORRER +SHNORRERS +SHOAL +SHOALED +SHOALER +SHOALEST +SHOALIER +SHOALIEST +SHOALING +SHOALS +SHOALY +SHOAT +SHOATS +SHOCK +SHOCKABLE +SHOCKED +SHOCKER +SHOCKERS +SHOCKING +SHOCKINGLY +SHOCKPROOF +SHOCKS +SHOD +SHODDEN +SHODDIER +SHODDIES +SHODDIEST +SHODDILY +SHODDINESS +SHODDINESSES +SHODDY +SHOE +SHOEBILL +SHOEBILLS +SHOEBLACK +SHOEBLACKS +SHOEBOX +SHOEBOXES +SHOED +SHOEHORN +SHOEHORNED +SHOEHORNING +SHOEHORNS +SHOEING +SHOELACE +SHOELACES +SHOELESS +SHOEMAKER +SHOEMAKERS +SHOEPAC +SHOEPACK +SHOEPACKS +SHOEPACS +SHOER +SHOERS +SHOES +SHOESHINE +SHOESHINES +SHOESTRING +SHOESTRINGS +SHOETREE +SHOETREES +SHOFAR +SHOFARS +SHOFROTH +SHOG +SHOGGED +SHOGGING +SHOGI +SHOGIS +SHOGS +SHOGUN +SHOGUNAL +SHOGUNATE +SHOGUNATES +SHOGUNS +SHOJI +SHOJIS +SHOLOM +SHOLOMS +SHONE +SHOO +SHOOED +SHOOFLIES +SHOOFLY +SHOOING +SHOOK +SHOOKS +SHOOL +SHOOLED +SHOOLING +SHOOLS +SHOON +SHOOS +SHOOT +SHOOTDOWN +SHOOTDOWNS +SHOOTER +SHOOTERS +SHOOTING +SHOOTINGS +SHOOTOUT +SHOOTOUTS +SHOOTS +SHOP +SHOPBOY +SHOPBOYS +SHOPGIRL +SHOPGIRLS +SHOPHAR +SHOPHARS +SHOPHROTH +SHOPKEEPER +SHOPKEEPERS +SHOPLIFT +SHOPLIFTED +SHOPLIFTER +SHOPLIFTERS +SHOPLIFTING +SHOPLIFTS +SHOPMAN +SHOPMEN +SHOPPE +SHOPPED +SHOPPER +SHOPPERS +SHOPPES +SHOPPING +SHOPPINGS +SHOPS +SHOPTALK +SHOPTALKS +SHOPWINDOW +SHOPWINDOWS +SHOPWORN +SHORAN +SHORANS +SHORE +SHOREBIRD +SHOREBIRDS +SHORED +SHOREFRONT +SHOREFRONTS +SHORELESS +SHORELINE +SHORELINES +SHORES +SHORESIDE +SHOREWARD +SHOREWARDS +SHORING +SHORINGS +SHORL +SHORLS +SHORN +SHORT +SHORTAGE +SHORTAGES +SHORTBREAD +SHORTBREADS +SHORTCAKE +SHORTCAKES +SHORTCHANGE +SHORTCHANGED +SHORTCHANGER +SHORTCHANGERS +SHORTCHANGES +SHORTCHANGING +SHORTCOMING +SHORTCOMINGS +SHORTCUT +SHORTCUTS +SHORTCUTTING +SHORTED +SHORTEN +SHORTENED +SHORTENER +SHORTENERS +SHORTENING +SHORTENINGS +SHORTENS +SHORTER +SHORTEST +SHORTFALL +SHORTFALLS +SHORTHAIR +SHORTHAIRED +SHORTHAIRS +SHORTHAND +SHORTHANDED +SHORTHANDS +SHORTHEAD +SHORTHEADS +SHORTHORN +SHORTHORNS +SHORTIA +SHORTIAS +SHORTIE +SHORTIES +SHORTING +SHORTISH +SHORTLIST +SHORTLISTED +SHORTLISTING +SHORTLISTS +SHORTLY +SHORTNESS +SHORTNESSES +SHORTS +SHORTSIGHTED +SHORTSIGHTEDLY +SHORTSTOP +SHORTSTOPS +SHORTWAVE +SHORTWAVED +SHORTWAVES +SHORTWAVING +SHORTY +SHOT +SHOTE +SHOTES +SHOTGUN +SHOTGUNNED +SHOTGUNNER +SHOTGUNNERS +SHOTGUNNING +SHOTGUNS +SHOTHOLE +SHOTHOLES +SHOTS +SHOTT +SHOTTED +SHOTTEN +SHOTTING +SHOTTS +SHOULD +SHOULDER +SHOULDERED +SHOULDERING +SHOULDERS +SHOULDEST +SHOULDST +SHOUT +SHOUTED +SHOUTER +SHOUTERS +SHOUTING +SHOUTS +SHOVE +SHOVED +SHOVEL +SHOVELED +SHOVELER +SHOVELERS +SHOVELFUL +SHOVELFULS +SHOVELING +SHOVELLED +SHOVELLER +SHOVELLERS +SHOVELLING +SHOVELNOSE +SHOVELNOSES +SHOVELS +SHOVELSFUL +SHOVER +SHOVERS +SHOVES +SHOVING +SHOW +SHOWABLE +SHOWBIZ +SHOWBIZZES +SHOWBIZZY +SHOWBOAT +SHOWBOATED +SHOWBOATING +SHOWBOATS +SHOWBREAD +SHOWBREADS +SHOWCASE +SHOWCASED +SHOWCASES +SHOWCASING +SHOWDOWN +SHOWDOWNS +SHOWED +SHOWER +SHOWERED +SHOWERER +SHOWERERS +SHOWERHEAD +SHOWERHEADS +SHOWERING +SHOWERLESS +SHOWERS +SHOWERY +SHOWGIRL +SHOWGIRLS +SHOWIER +SHOWIEST +SHOWILY +SHOWINESS +SHOWINESSES +SHOWING +SHOWINGS +SHOWMAN +SHOWMANLY +SHOWMANSHIP +SHOWMANSHIPS +SHOWMEN +SHOWN +SHOWOFF +SHOWOFFS +SHOWPIECE +SHOWPIECES +SHOWPLACE +SHOWPLACES +SHOWRING +SHOWRINGS +SHOWROOM +SHOWROOMS +SHOWS +SHOWSTOPPER +SHOWSTOPPERS +SHOWSTOPPING +SHOWTIME +SHOWTIMES +SHOWY +SHOYU +SHOYUS +SHRANK +SHRAPNEL +SHRED +SHREDDED +SHREDDER +SHREDDERS +SHREDDING +SHREDS +SHREW +SHREWD +SHREWDER +SHREWDEST +SHREWDIE +SHREWDIES +SHREWDLY +SHREWDNESS +SHREWDNESSES +SHREWED +SHREWING +SHREWISH +SHREWISHLY +SHREWISHNESS +SHREWISHNESSES +SHREWLIKE +SHREWMICE +SHREWMOUSE +SHREWS +SHRI +SHRIEK +SHRIEKED +SHRIEKER +SHRIEKERS +SHRIEKIER +SHRIEKIEST +SHRIEKING +SHRIEKS +SHRIEKY +SHRIEVAL +SHRIEVALTIES +SHRIEVALTY +SHRIEVE +SHRIEVED +SHRIEVES +SHRIEVING +SHRIFT +SHRIFTS +SHRIKE +SHRIKES +SHRILL +SHRILLED +SHRILLER +SHRILLEST +SHRILLING +SHRILLNESS +SHRILLNESSES +SHRILLS +SHRILLY +SHRIMP +SHRIMPED +SHRIMPER +SHRIMPERS +SHRIMPIER +SHRIMPIEST +SHRIMPING +SHRIMPLIKE +SHRIMPS +SHRIMPY +SHRINE +SHRINED +SHRINES +SHRINING +SHRINK +SHRINKABLE +SHRINKAGE +SHRINKAGES +SHRINKER +SHRINKERS +SHRINKING +SHRINKS +SHRIS +SHRIVE +SHRIVED +SHRIVEL +SHRIVELED +SHRIVELING +SHRIVELLED +SHRIVELLING +SHRIVELS +SHRIVEN +SHRIVER +SHRIVERS +SHRIVES +SHRIVING +SHROFF +SHROFFED +SHROFFING +SHROFFS +SHROUD +SHROUDED +SHROUDING +SHROUDS +SHROVE +SHRUB +SHRUBBERIES +SHRUBBERY +SHRUBBIER +SHRUBBIEST +SHRUBBY +SHRUBLAND +SHRUBLANDS +SHRUBLIKE +SHRUBS +SHRUG +SHRUGGED +SHRUGGING +SHRUGS +SHRUNK +SHRUNKEN +SHTETEL +SHTETELS +SHTETL +SHTETLACH +SHTETLS +SHTICK +SHTICKIER +SHTICKIEST +SHTICKS +SHTICKY +SHTIK +SHTIKS +SHUCK +SHUCKED +SHUCKER +SHUCKERS +SHUCKING +SHUCKINGS +SHUCKS +SHUDDER +SHUDDERED +SHUDDERING +SHUDDERS +SHUDDERY +SHUFFLE +SHUFFLEBOARD +SHUFFLEBOARDS +SHUFFLED +SHUFFLER +SHUFFLERS +SHUFFLES +SHUFFLING +SHUL +SHULN +SHULS +SHUN +SHUNNABLE +SHUNNED +SHUNNER +SHUNNERS +SHUNNING +SHUNPIKE +SHUNPIKED +SHUNPIKER +SHUNPIKERS +SHUNPIKES +SHUNPIKING +SHUNPIKINGS +SHUNS +SHUNT +SHUNTED +SHUNTER +SHUNTERS +SHUNTING +SHUNTS +SHUSH +SHUSHED +SHUSHER +SHUSHERS +SHUSHES +SHUSHING +SHUT +SHUTDOWN +SHUTDOWNS +SHUTE +SHUTED +SHUTES +SHUTEYE +SHUTEYES +SHUTING +SHUTOFF +SHUTOFFS +SHUTOUT +SHUTOUTS +SHUTS +SHUTTER +SHUTTERBUG +SHUTTERBUGS +SHUTTERED +SHUTTERING +SHUTTERLESS +SHUTTERS +SHUTTING +SHUTTLE +SHUTTLECOCK +SHUTTLECOCKED +SHUTTLECOCKING +SHUTTLECOCKS +SHUTTLED +SHUTTLELESS +SHUTTLER +SHUTTLERS +SHUTTLES +SHUTTLING +SHVARTZE +SHVARTZES +SHWA +SHWANPAN +SHWANPANS +SHWAS +SHY +SHYER +SHYERS +SHYEST +SHYING +SHYLOCK +SHYLOCKED +SHYLOCKING +SHYLOCKS +SHYLY +SHYNESS +SHYNESSES +SHYSTER +SHYSTERS +SI +SIAL +SIALAGOGUE +SIALAGOGUES +SIALIC +SIALID +SIALIDAN +SIALIDANS +SIALIDS +SIALOID +SIALS +SIAMANG +SIAMANGS +SIAMESE +SIAMESES +SIB +SIBB +SIBBS +SIBILANCE +SIBILANCES +SIBILANCIES +SIBILANCY +SIBILANT +SIBILANTLY +SIBILANTS +SIBILATE +SIBILATED +SIBILATES +SIBILATING +SIBILATION +SIBILATIONS +SIBILATOR +SIBILATORS +SIBLING +SIBLINGS +SIBS +SIBYL +SIBYLIC +SIBYLLIC +SIBYLLINE +SIBYLS +SIC +SICCAN +SICCATIVE +SICCATIVES +SICCED +SICCING +SICE +SICES +SICK +SICKBAY +SICKBAYS +SICKBED +SICKBEDS +SICKED +SICKEE +SICKEES +SICKEN +SICKENED +SICKENER +SICKENERS +SICKENING +SICKENINGLY +SICKENS +SICKER +SICKERLY +SICKEST +SICKIE +SICKIES +SICKING +SICKISH +SICKISHLY +SICKISHNESS +SICKISHNESSES +SICKLE +SICKLED +SICKLEMIA +SICKLEMIAS +SICKLEMIC +SICKLES +SICKLIED +SICKLIER +SICKLIES +SICKLIEST +SICKLILY +SICKLINESS +SICKLINESSES +SICKLING +SICKLY +SICKLYING +SICKNESS +SICKNESSES +SICKO +SICKOS +SICKOUT +SICKOUTS +SICKROOM +SICKROOMS +SICKS +SICS +SIDDUR +SIDDURIM +SIDDURS +SIDE +SIDEARM +SIDEARMS +SIDEBAND +SIDEBANDS +SIDEBAR +SIDEBARS +SIDEBOARD +SIDEBOARDS +SIDEBURNED +SIDEBURNS +SIDECAR +SIDECARS +SIDECHECK +SIDECHECKS +SIDED +SIDEDNESS +SIDEDNESSES +SIDEDRESS +SIDEDRESSES +SIDEHILL +SIDEHILLS +SIDEKICK +SIDEKICKS +SIDELIGHT +SIDELIGHTS +SIDELINE +SIDELINED +SIDELINER +SIDELINERS +SIDELINES +SIDELING +SIDELINING +SIDELONG +SIDEMAN +SIDEMEN +SIDEPIECE +SIDEPIECES +SIDEREAL +SIDERITE +SIDERITES +SIDERITIC +SIDEROLITE +SIDEROLITES +SIDEROSES +SIDEROSIS +SIDEROTIC +SIDES +SIDESADDLE +SIDESADDLES +SIDESHOW +SIDESHOWS +SIDESLIP +SIDESLIPPED +SIDESLIPPING +SIDESLIPS +SIDESPIN +SIDESPINS +SIDESPLITTING +SIDESPLITTINGLY +SIDESTEP +SIDESTEPPED +SIDESTEPPER +SIDESTEPPERS +SIDESTEPPING +SIDESTEPS +SIDESTREAM +SIDESTROKE +SIDESTROKES +SIDESWIPE +SIDESWIPED +SIDESWIPES +SIDESWIPING +SIDETRACK +SIDETRACKED +SIDETRACKING +SIDETRACKS +SIDEWALK +SIDEWALKS +SIDEWALL +SIDEWALLS +SIDEWARD +SIDEWARDS +SIDEWAY +SIDEWAYS +SIDEWINDER +SIDEWINDERS +SIDEWISE +SIDH +SIDHE +SIDING +SIDINGS +SIDLE +SIDLED +SIDLER +SIDLERS +SIDLES +SIDLING +SIDLINGLY +SIEGE +SIEGED +SIEGES +SIEGING +SIEMENS +SIENITE +SIENITES +SIENNA +SIENNAS +SIEROZEM +SIEROZEMS +SIERRA +SIERRAN +SIERRAS +SIESTA +SIESTAS +SIEUR +SIEURS +SIEVE +SIEVED +SIEVERT +SIEVERTS +SIEVES +SIEVING +SIFAKA +SIFAKAS +SIFFLEUR +SIFFLEURS +SIFT +SIFTED +SIFTER +SIFTERS +SIFTING +SIFTINGS +SIFTS +SIGANID +SIGANIDS +SIGH +SIGHED +SIGHER +SIGHERS +SIGHING +SIGHLESS +SIGHLIKE +SIGHS +SIGHT +SIGHTED +SIGHTER +SIGHTERS +SIGHTING +SIGHTINGS +SIGHTLESS +SIGHTLESSLY +SIGHTLESSNESS +SIGHTLESSNESSES +SIGHTLIER +SIGHTLIEST +SIGHTLINE +SIGHTLINES +SIGHTLINESS +SIGHTLINESSES +SIGHTLY +SIGHTS +SIGHTSAW +SIGHTSEE +SIGHTSEEING +SIGHTSEEN +SIGHTSEER +SIGHTSEERS +SIGHTSEES +SIGIL +SIGILS +SIGLA +SIGLOI +SIGLOS +SIGLUM +SIGMA +SIGMAS +SIGMATE +SIGMOID +SIGMOIDAL +SIGMOIDALLY +SIGMOIDOSCOPIES +SIGMOIDOSCOPY +SIGMOIDS +SIGN +SIGNA +SIGNAGE +SIGNAGES +SIGNAL +SIGNALED +SIGNALER +SIGNALERS +SIGNALING +SIGNALISE +SIGNALISED +SIGNALISES +SIGNALISING +SIGNALIZATION +SIGNALIZATIONS +SIGNALIZE +SIGNALIZED +SIGNALIZES +SIGNALIZING +SIGNALLED +SIGNALLER +SIGNALLERS +SIGNALLING +SIGNALLY +SIGNALMAN +SIGNALMEN +SIGNALMENT +SIGNALMENTS +SIGNALS +SIGNATORIES +SIGNATORY +SIGNATURE +SIGNATURES +SIGNBOARD +SIGNBOARDS +SIGNED +SIGNEE +SIGNEES +SIGNER +SIGNERS +SIGNET +SIGNETED +SIGNETING +SIGNETS +SIGNIFICANCE +SIGNIFICANCES +SIGNIFICANCIES +SIGNIFICANCY +SIGNIFICANT +SIGNIFICANTLY +SIGNIFICATION +SIGNIFICATIONS +SIGNIFICATIVE +SIGNIFICS +SIGNIFIED +SIGNIFIEDS +SIGNIFIER +SIGNIFIERS +SIGNIFIES +SIGNIFY +SIGNIFYING +SIGNIFYINGS +SIGNING +SIGNIOR +SIGNIORI +SIGNIORIES +SIGNIORS +SIGNIORY +SIGNOR +SIGNORA +SIGNORAS +SIGNORE +SIGNORI +SIGNORIES +SIGNORINA +SIGNORINAS +SIGNORINE +SIGNORS +SIGNORY +SIGNPOST +SIGNPOSTED +SIGNPOSTING +SIGNPOSTS +SIGNS +SIKA +SIKAS +SIKE +SIKER +SIKES +SILAGE +SILAGES +SILANE +SILANES +SILD +SILDS +SILENCE +SILENCED +SILENCER +SILENCERS +SILENCES +SILENCING +SILENI +SILENT +SILENTER +SILENTEST +SILENTLY +SILENTNESS +SILENTNESSES +SILENTS +SILENUS +SILESIA +SILESIAS +SILEX +SILEXES +SILHOUETTE +SILHOUETTED +SILHOUETTES +SILHOUETTING +SILHOUETTIST +SILHOUETTISTS +SILICA +SILICAS +SILICATE +SILICATES +SILICEOUS +SILICIC +SILICIDE +SILICIDES +SILICIFICATION +SILICIFICATIONS +SILICIFIED +SILICIFIES +SILICIFY +SILICIFYING +SILICIOUS +SILICIUM +SILICIUMS +SILICLE +SILICLES +SILICON +SILICONE +SILICONES +SILICONIZED +SILICONS +SILICOSES +SILICOSIS +SILICOTIC +SILICOTICS +SILICULA +SILICULAE +SILIQUA +SILIQUAE +SILIQUE +SILIQUES +SILIQUOSE +SILIQUOUS +SILK +SILKALINE +SILKALINES +SILKED +SILKEN +SILKIE +SILKIER +SILKIES +SILKIEST +SILKILY +SILKINESS +SILKINESSES +SILKING +SILKLIKE +SILKOLINE +SILKOLINES +SILKS +SILKWEED +SILKWEEDS +SILKWORM +SILKWORMS +SILKY +SILL +SILLABUB +SILLABUBS +SILLER +SILLERS +SILLIBUB +SILLIBUBS +SILLIER +SILLIES +SILLIEST +SILLILY +SILLIMANITE +SILLIMANITES +SILLINESS +SILLINESSES +SILLS +SILLY +SILO +SILOED +SILOING +SILOS +SILOXANE +SILOXANES +SILT +SILTATION +SILTATIONS +SILTED +SILTIER +SILTIEST +SILTING +SILTS +SILTSTONE +SILTSTONES +SILTY +SILURIAN +SILURID +SILURIDS +SILUROID +SILUROIDS +SILVA +SILVAE +SILVAN +SILVANS +SILVAS +SILVER +SILVERBACK +SILVERBACKS +SILVERBERRIES +SILVERBERRY +SILVERED +SILVERER +SILVERERS +SILVERFISH +SILVERFISHES +SILVERINESS +SILVERINESSES +SILVERING +SILVERINGS +SILVERLY +SILVERN +SILVERPOINT +SILVERPOINTS +SILVERS +SILVERSIDE +SILVERSIDES +SILVERSMITH +SILVERSMITHING +SILVERSMITHINGS +SILVERSMITHS +SILVERWARE +SILVERWARES +SILVERWEED +SILVERWEEDS +SILVERY +SILVEX +SILVEXES +SILVICAL +SILVICS +SILVICULTURAL +SILVICULTURALLY +SILVICULTURE +SILVICULTURES +SILVICULTURIST +SILVICULTURISTS +SIM +SIMA +SIMAR +SIMARS +SIMARUBA +SIMARUBAS +SIMAS +SIMAZINE +SIMAZINES +SIMIAN +SIMIANS +SIMILAR +SIMILARITIES +SIMILARITY +SIMILARLY +SIMILE +SIMILES +SIMILITUDE +SIMILITUDES +SIMIOID +SIMIOUS +SIMITAR +SIMITARS +SIMLIN +SIMLINS +SIMMER +SIMMERED +SIMMERING +SIMMERS +SIMNEL +SIMNELS +SIMOLEON +SIMOLEONS +SIMONIAC +SIMONIACAL +SIMONIACALLY +SIMONIACS +SIMONIES +SIMONIST +SIMONISTS +SIMONIZE +SIMONIZED +SIMONIZES +SIMONIZING +SIMONY +SIMOOM +SIMOOMS +SIMOON +SIMOONS +SIMP +SIMPATICO +SIMPER +SIMPERED +SIMPERER +SIMPERERS +SIMPERING +SIMPERS +SIMPLE +SIMPLEMINDED +SIMPLEMINDEDLY +SIMPLENESS +SIMPLENESSES +SIMPLER +SIMPLES +SIMPLEST +SIMPLETON +SIMPLETONS +SIMPLEX +SIMPLEXES +SIMPLICES +SIMPLICIA +SIMPLICIAL +SIMPLICIALLY +SIMPLICITIES +SIMPLICITY +SIMPLIFICATION +SIMPLIFICATIONS +SIMPLIFIED +SIMPLIFIER +SIMPLIFIERS +SIMPLIFIES +SIMPLIFY +SIMPLIFYING +SIMPLISM +SIMPLISMS +SIMPLIST +SIMPLISTIC +SIMPLISTICALLY +SIMPLISTS +SIMPLY +SIMPS +SIMS +SIMULACRA +SIMULACRE +SIMULACRES +SIMULACRUM +SIMULACRUMS +SIMULANT +SIMULANTS +SIMULAR +SIMULARS +SIMULATE +SIMULATED +SIMULATES +SIMULATING +SIMULATION +SIMULATIONS +SIMULATIVE +SIMULATOR +SIMULATORS +SIMULCAST +SIMULCASTED +SIMULCASTING +SIMULCASTS +SIMULTANEITIES +SIMULTANEITY +SIMULTANEOUS +SIMULTANEOUSLY +SIN +SINAPISM +SINAPISMS +SINCE +SINCERE +SINCERELY +SINCERENESS +SINCERENESSES +SINCERER +SINCEREST +SINCERITIES +SINCERITY +SINCIPITA +SINCIPITAL +SINCIPUT +SINCIPUTS +SINE +SINECURE +SINECURES +SINES +SINEW +SINEWED +SINEWING +SINEWLESS +SINEWS +SINEWY +SINFONIA +SINFONIAS +SINFONIE +SINFONIETTA +SINFONIETTAS +SINFUL +SINFULLY +SINFULNESS +SINFULNESSES +SING +SINGABLE +SINGALONG +SINGALONGS +SINGE +SINGED +SINGEING +SINGER +SINGERS +SINGES +SINGING +SINGLE +SINGLED +SINGLENESS +SINGLENESSES +SINGLES +SINGLESTICK +SINGLESTICKS +SINGLET +SINGLETON +SINGLETONS +SINGLETREE +SINGLETREES +SINGLETS +SINGLING +SINGLY +SINGS +SINGSONG +SINGSONGS +SINGSONGY +SINGSPIEL +SINGSPIELS +SINGULAR +SINGULARITIES +SINGULARITY +SINGULARIZE +SINGULARIZED +SINGULARIZES +SINGULARIZING +SINGULARLY +SINGULARS +SINH +SINHS +SINICIZE +SINICIZED +SINICIZES +SINICIZING +SINISTER +SINISTERLY +SINISTERNESS +SINISTERNESSES +SINISTRAL +SINISTROUS +SINK +SINKABLE +SINKAGE +SINKAGES +SINKER +SINKERS +SINKHOLE +SINKHOLES +SINKING +SINKS +SINLESS +SINLESSLY +SINLESSNESS +SINLESSNESSES +SINNED +SINNER +SINNERS +SINNING +SINOATRIAL +SINOLOGICAL +SINOLOGIES +SINOLOGIST +SINOLOGISTS +SINOLOGUE +SINOLOGUES +SINOLOGY +SINOPIA +SINOPIAS +SINOPIE +SINS +SINSEMILLA +SINSEMILLAS +SINSYNE +SINTER +SINTERABILITIES +SINTERABILITY +SINTERED +SINTERING +SINTERS +SINUATE +SINUATED +SINUATELY +SINUATES +SINUATING +SINUATION +SINUATIONS +SINUOSITIES +SINUOSITY +SINUOUS +SINUOUSLY +SINUOUSNESS +SINUOUSNESSES +SINUS +SINUSES +SINUSITIS +SINUSITISES +SINUSLIKE +SINUSOID +SINUSOIDAL +SINUSOIDALLY +SINUSOIDS +SIP +SIPE +SIPED +SIPES +SIPHON +SIPHONAGE +SIPHONAGES +SIPHONAL +SIPHONED +SIPHONIC +SIPHONING +SIPHONOPHORE +SIPHONOPHORES +SIPHONOSTELE +SIPHONOSTELES +SIPHONS +SIPING +SIPPED +SIPPER +SIPPERS +SIPPET +SIPPETS +SIPPING +SIPS +SIR +SIRDAR +SIRDARS +SIRE +SIRED +SIREE +SIREES +SIREN +SIRENIAN +SIRENIANS +SIRENS +SIRES +SIRING +SIRLOIN +SIRLOINS +SIROCCO +SIROCCOS +SIRRA +SIRRAH +SIRRAHS +SIRRAS +SIRREE +SIRREES +SIRS +SIRUP +SIRUPED +SIRUPIER +SIRUPIEST +SIRUPING +SIRUPS +SIRUPY +SIRVENTE +SIRVENTES +SIS +SISAL +SISALS +SISES +SISKIN +SISKINS +SISSES +SISSIER +SISSIES +SISSIEST +SISSIFIED +SISSINESS +SISSINESSES +SISSY +SISSYISH +SISSYNESS +SISSYNESSES +SISTER +SISTERED +SISTERHOOD +SISTERHOODS +SISTERING +SISTERLY +SISTERS +SISTRA +SISTROID +SISTRUM +SISTRUMS +SIT +SITAR +SITARIST +SITARISTS +SITARS +SITCOM +SITCOMS +SITE +SITED +SITES +SITH +SITHENCE +SITHENS +SITING +SITOLOGIES +SITOLOGY +SITOSTEROL +SITOSTEROLS +SITS +SITTEN +SITTER +SITTERS +SITTING +SITTINGS +SITUATE +SITUATED +SITUATES +SITUATING +SITUATION +SITUATIONAL +SITUATIONALLY +SITUATIONS +SITUP +SITUPS +SITUS +SITUSES +SITZMARK +SITZMARKS +SIVER +SIVERS +SIX +SIXES +SIXFOLD +SIXMO +SIXMOS +SIXPENCE +SIXPENCES +SIXPENNY +SIXTE +SIXTEEN +SIXTEENMO +SIXTEENMOS +SIXTEENS +SIXTEENTH +SIXTEENTHS +SIXTES +SIXTH +SIXTHLY +SIXTHS +SIXTIES +SIXTIETH +SIXTIETHS +SIXTY +SIXTYISH +SIZABLE +SIZABLENESS +SIZABLENESSES +SIZABLY +SIZAR +SIZARS +SIZARSHIP +SIZARSHIPS +SIZE +SIZEABLE +SIZEABLY +SIZED +SIZER +SIZERS +SIZES +SIZIER +SIZIEST +SIZINESS +SIZINESSES +SIZING +SIZINGS +SIZY +SIZZLE +SIZZLED +SIZZLER +SIZZLERS +SIZZLES +SIZZLING +SJAMBOK +SJAMBOKED +SJAMBOKING +SJAMBOKS +SKA +SKAG +SKAGS +SKALD +SKALDIC +SKALDS +SKALDSHIP +SKALDSHIPS +SKANK +SKANKED +SKANKER +SKANKERS +SKANKIER +SKANKIEST +SKANKING +SKANKS +SKANKY +SKAS +SKAT +SKATE +SKATEBOARD +SKATEBOARDER +SKATEBOARDERS +SKATEBOARDING +SKATEBOARDINGS +SKATEBOARDS +SKATED +SKATER +SKATERS +SKATES +SKATING +SKATINGS +SKATOL +SKATOLE +SKATOLES +SKATOLS +SKATS +SKEAN +SKEANE +SKEANES +SKEANS +SKEDADDLE +SKEDADDLED +SKEDADDLER +SKEDADDLERS +SKEDADDLES +SKEDADDLING +SKEE +SKEED +SKEEING +SKEEN +SKEENS +SKEES +SKEET +SKEETER +SKEETERS +SKEETS +SKEG +SKEGS +SKEIGH +SKEIN +SKEINED +SKEINING +SKEINS +SKELETAL +SKELETALLY +SKELETON +SKELETONIC +SKELETONISE +SKELETONISED +SKELETONISES +SKELETONISING +SKELETONIZE +SKELETONIZED +SKELETONIZER +SKELETONIZERS +SKELETONIZES +SKELETONIZING +SKELETONS +SKELL +SKELLS +SKELLUM +SKELLUMS +SKELM +SKELMS +SKELP +SKELPED +SKELPING +SKELPIT +SKELPS +SKELTER +SKELTERED +SKELTERING +SKELTERS +SKENE +SKENES +SKEP +SKEPS +SKEPSIS +SKEPSISES +SKEPTIC +SKEPTICAL +SKEPTICALLY +SKEPTICISM +SKEPTICISMS +SKEPTICS +SKERRIES +SKERRY +SKETCH +SKETCHBOOK +SKETCHBOOKS +SKETCHED +SKETCHER +SKETCHERS +SKETCHES +SKETCHIER +SKETCHIEST +SKETCHILY +SKETCHINESS +SKETCHINESSES +SKETCHING +SKETCHPAD +SKETCHPADS +SKETCHY +SKEW +SKEWBACK +SKEWBACKS +SKEWBALD +SKEWBALDS +SKEWED +SKEWER +SKEWERED +SKEWERING +SKEWERS +SKEWING +SKEWNESS +SKEWNESSES +SKEWS +SKI +SKIABLE +SKIAGRAM +SKIAGRAMS +SKIAGRAPH +SKIAGRAPHS +SKIASCOPE +SKIASCOPES +SKIASCOPIES +SKIASCOPY +SKIBOB +SKIBOBBER +SKIBOBBERS +SKIBOBBING +SKIBOBBINGS +SKIBOBS +SKID +SKIDDED +SKIDDER +SKIDDERS +SKIDDIER +SKIDDIEST +SKIDDING +SKIDDOO +SKIDDOOED +SKIDDOOING +SKIDDOOS +SKIDDY +SKIDOO +SKIDOOED +SKIDOOING +SKIDOOS +SKIDPROOF +SKIDS +SKIDWAY +SKIDWAYS +SKIED +SKIER +SKIERS +SKIES +SKIEY +SKIFF +SKIFFLE +SKIFFLED +SKIFFLES +SKIFFLESS +SKIFFLING +SKIFFS +SKIING +SKIINGS +SKIJORER +SKIJORERS +SKIJORING +SKIJORINGS +SKILFUL +SKILFULLY +SKILL +SKILLED +SKILLESS +SKILLESSNESS +SKILLESSNESSES +SKILLET +SKILLETS +SKILLFUL +SKILLFULLY +SKILLFULNESS +SKILLFULNESSES +SKILLING +SKILLINGS +SKILLS +SKIM +SKIMBOARD +SKIMBOARDS +SKIMMED +SKIMMER +SKIMMERS +SKIMMING +SKIMMINGS +SKIMO +SKIMOBILE +SKIMOBILED +SKIMOBILES +SKIMOBILING +SKIMOS +SKIMP +SKIMPED +SKIMPIER +SKIMPIEST +SKIMPILY +SKIMPINESS +SKIMPINESSES +SKIMPING +SKIMPS +SKIMPY +SKIMS +SKIN +SKINFLICK +SKINFLICKS +SKINFLINT +SKINFLINTS +SKINFUL +SKINFULS +SKINHEAD +SKINHEADS +SKINK +SKINKED +SKINKER +SKINKERS +SKINKING +SKINKS +SKINLESS +SKINLIKE +SKINNED +SKINNER +SKINNERS +SKINNIER +SKINNIEST +SKINNINESS +SKINNINESSES +SKINNING +SKINNY +SKINS +SKINT +SKINTIGHT +SKIORING +SKIORINGS +SKIP +SKIPJACK +SKIPJACKS +SKIPLANE +SKIPLANES +SKIPPABLE +SKIPPED +SKIPPER +SKIPPERED +SKIPPERING +SKIPPERS +SKIPPET +SKIPPETS +SKIPPING +SKIPS +SKIRL +SKIRLED +SKIRLING +SKIRLS +SKIRMISH +SKIRMISHED +SKIRMISHER +SKIRMISHERS +SKIRMISHES +SKIRMISHING +SKIRR +SKIRRED +SKIRRET +SKIRRETS +SKIRRING +SKIRRS +SKIRT +SKIRTED +SKIRTER +SKIRTERS +SKIRTING +SKIRTINGS +SKIRTLESS +SKIRTLIKE +SKIRTS +SKIS +SKIT +SKITE +SKITED +SKITES +SKITING +SKITS +SKITTER +SKITTERED +SKITTERIER +SKITTERIEST +SKITTERING +SKITTERS +SKITTERY +SKITTISH +SKITTISHLY +SKITTISHNESS +SKITTISHNESSES +SKITTLE +SKITTLES +SKIVE +SKIVED +SKIVER +SKIVERS +SKIVES +SKIVING +SKIVVIED +SKIVVIES +SKIVVY +SKIVVYING +SKIWEAR +SKLENT +SKLENTED +SKLENTING +SKLENTS +SKOAL +SKOALED +SKOALING +SKOALS +SKOOKUM +SKORT +SKORTS +SKOSH +SKOSHES +SKREEGH +SKREEGHED +SKREEGHING +SKREEGHS +SKREIGH +SKREIGHED +SKREIGHING +SKREIGHS +SKUA +SKUAS +SKULDUGGERIES +SKULDUGGERY +SKULK +SKULKED +SKULKER +SKULKERS +SKULKING +SKULKS +SKULL +SKULLCAP +SKULLCAPS +SKULLDUGGERIES +SKULLDUGGERY +SKULLED +SKULLING +SKULLS +SKUNK +SKUNKED +SKUNKIER +SKUNKIEST +SKUNKING +SKUNKS +SKUNKWEED +SKUNKWEEDS +SKUNKY +SKY +SKYBOARD +SKYBOARDS +SKYBORNE +SKYBOX +SKYBOXES +SKYBRIDGE +SKYBRIDGES +SKYCAP +SKYCAPS +SKYDIVE +SKYDIVED +SKYDIVER +SKYDIVERS +SKYDIVES +SKYDIVING +SKYDIVINGS +SKYDOVE +SKYED +SKYEY +SKYHOOK +SKYHOOKS +SKYING +SKYJACK +SKYJACKED +SKYJACKER +SKYJACKERS +SKYJACKING +SKYJACKINGS +SKYJACKS +SKYLARK +SKYLARKED +SKYLARKER +SKYLARKERS +SKYLARKING +SKYLARKS +SKYLIGHT +SKYLIGHTED +SKYLIGHTS +SKYLIKE +SKYLINE +SKYLINES +SKYLIT +SKYMAN +SKYMEN +SKYPHOI +SKYPHOS +SKYROCKET +SKYROCKETED +SKYROCKETING +SKYROCKETS +SKYSAIL +SKYSAILS +SKYSCRAPER +SKYSCRAPERS +SKYSURF +SKYSURFED +SKYSURFER +SKYSURFERS +SKYSURFING +SKYSURFS +SKYWALK +SKYWALKS +SKYWARD +SKYWARDS +SKYWAY +SKYWAYS +SKYWRITE +SKYWRITER +SKYWRITERS +SKYWRITES +SKYWRITING +SKYWRITINGS +SKYWRITTEN +SKYWROTE +SLAB +SLABBED +SLABBER +SLABBERED +SLABBERING +SLABBERS +SLABBERY +SLABBING +SLABLIKE +SLABS +SLACK +SLACKED +SLACKEN +SLACKENED +SLACKENER +SLACKENERS +SLACKENING +SLACKENS +SLACKER +SLACKERS +SLACKEST +SLACKING +SLACKLY +SLACKNESS +SLACKNESSES +SLACKS +SLAG +SLAGGED +SLAGGIER +SLAGGIEST +SLAGGING +SLAGGY +SLAGS +SLAIN +SLAINTE +SLAKABLE +SLAKE +SLAKED +SLAKER +SLAKERS +SLAKES +SLAKING +SLALOM +SLALOMED +SLALOMER +SLALOMERS +SLALOMING +SLALOMIST +SLALOMISTS +SLALOMS +SLAM +SLAMDANCE +SLAMDANCED +SLAMDANCES +SLAMDANCING +SLAMMED +SLAMMER +SLAMMERS +SLAMMING +SLAMMINGS +SLAMS +SLANDER +SLANDERED +SLANDERER +SLANDERERS +SLANDERING +SLANDEROUS +SLANDEROUSLY +SLANDEROUSNESS +SLANDERS +SLANG +SLANGED +SLANGIER +SLANGIEST +SLANGILY +SLANGINESS +SLANGINESSES +SLANGING +SLANGS +SLANGUAGE +SLANGUAGES +SLANGY +SLANK +SLANT +SLANTED +SLANTING +SLANTINGLY +SLANTLY +SLANTS +SLANTWAYS +SLANTWISE +SLANTY +SLAP +SLAPDASH +SLAPDASHES +SLAPHAPPIER +SLAPHAPPIEST +SLAPHAPPY +SLAPJACK +SLAPJACKS +SLAPPED +SLAPPER +SLAPPERS +SLAPPING +SLAPS +SLAPSTICK +SLAPSTICKS +SLASH +SLASHED +SLASHER +SLASHERS +SLASHES +SLASHING +SLASHINGLY +SLASHINGS +SLAT +SLATCH +SLATCHES +SLATE +SLATED +SLATELIKE +SLATER +SLATERS +SLATES +SLATEY +SLATHER +SLATHERED +SLATHERING +SLATHERS +SLATIER +SLATIEST +SLATINESS +SLATINESSES +SLATING +SLATINGS +SLATS +SLATTED +SLATTERN +SLATTERNLINESS +SLATTERNLY +SLATTERNS +SLATTING +SLATTINGS +SLATY +SLAUGHTER +SLAUGHTERED +SLAUGHTERER +SLAUGHTERERS +SLAUGHTERHOUSE +SLAUGHTERHOUSES +SLAUGHTERING +SLAUGHTEROUS +SLAUGHTEROUSLY +SLAUGHTERS +SLAVE +SLAVED +SLAVEHOLDER +SLAVEHOLDERS +SLAVEHOLDING +SLAVEHOLDINGS +SLAVER +SLAVERED +SLAVERER +SLAVERERS +SLAVERIES +SLAVERING +SLAVERS +SLAVERY +SLAVES +SLAVEY +SLAVEYS +SLAVING +SLAVISH +SLAVISHLY +SLAVISHNESS +SLAVISHNESSES +SLAVOCRACIES +SLAVOCRACY +SLAVOCRAT +SLAVOCRATS +SLAW +SLAWS +SLAY +SLAYABLE +SLAYED +SLAYER +SLAYERS +SLAYING +SLAYS +SLEAVE +SLEAVED +SLEAVES +SLEAVING +SLEAZE +SLEAZEBAG +SLEAZEBAGS +SLEAZEBALL +SLEAZEBALLS +SLEAZES +SLEAZIER +SLEAZIEST +SLEAZILY +SLEAZINESS +SLEAZINESSES +SLEAZO +SLEAZOID +SLEAZOIDS +SLEAZY +SLED +SLEDDED +SLEDDER +SLEDDERS +SLEDDING +SLEDDINGS +SLEDGE +SLEDGED +SLEDGEHAMMER +SLEDGEHAMMERED +SLEDGEHAMMERING +SLEDGEHAMMERS +SLEDGES +SLEDGING +SLEDS +SLEEK +SLEEKED +SLEEKEN +SLEEKENED +SLEEKENING +SLEEKENS +SLEEKER +SLEEKERS +SLEEKEST +SLEEKIER +SLEEKIEST +SLEEKING +SLEEKIT +SLEEKLY +SLEEKNESS +SLEEKNESSES +SLEEKS +SLEEKY +SLEEP +SLEEPAWAY +SLEEPER +SLEEPERS +SLEEPIER +SLEEPIEST +SLEEPILY +SLEEPINESS +SLEEPINESSES +SLEEPING +SLEEPINGS +SLEEPLESS +SLEEPLESSLY +SLEEPLESSNESS +SLEEPLESSNESSES +SLEEPLIKE +SLEEPOVER +SLEEPOVERS +SLEEPS +SLEEPWALK +SLEEPWALKED +SLEEPWALKER +SLEEPWALKERS +SLEEPWALKING +SLEEPWALKS +SLEEPWEAR +SLEEPY +SLEEPYHEAD +SLEEPYHEADS +SLEET +SLEETED +SLEETIER +SLEETIEST +SLEETING +SLEETS +SLEETY +SLEEVE +SLEEVED +SLEEVELESS +SLEEVELET +SLEEVELETS +SLEEVES +SLEEVING +SLEIGH +SLEIGHED +SLEIGHER +SLEIGHERS +SLEIGHING +SLEIGHS +SLEIGHT +SLEIGHTS +SLENDER +SLENDERER +SLENDEREST +SLENDERIZE +SLENDERIZED +SLENDERIZES +SLENDERIZING +SLENDERLY +SLENDERNESS +SLENDERNESSES +SLEPT +SLEUTH +SLEUTHED +SLEUTHHOUND +SLEUTHHOUNDS +SLEUTHING +SLEUTHS +SLEW +SLEWED +SLEWING +SLEWS +SLICE +SLICEABLE +SLICED +SLICER +SLICERS +SLICES +SLICING +SLICK +SLICKED +SLICKEN +SLICKENED +SLICKENER +SLICKENERS +SLICKENING +SLICKENS +SLICKENSIDE +SLICKENSIDES +SLICKER +SLICKERS +SLICKEST +SLICKING +SLICKLY +SLICKNESS +SLICKNESSES +SLICKROCK +SLICKROCKS +SLICKS +SLICKSTER +SLICKSTERS +SLID +SLIDABLE +SLIDDEN +SLIDE +SLIDER +SLIDERS +SLIDES +SLIDEWAY +SLIDEWAYS +SLIDING +SLIER +SLIEST +SLIEVE +SLIEVES +SLIGHT +SLIGHTED +SLIGHTER +SLIGHTERS +SLIGHTEST +SLIGHTING +SLIGHTINGLY +SLIGHTLY +SLIGHTNESS +SLIGHTNESSES +SLIGHTS +SLILY +SLIM +SLIME +SLIMEBALL +SLIMEBALLS +SLIMED +SLIMES +SLIMIER +SLIMIEST +SLIMILY +SLIMINESS +SLIMINESSES +SLIMING +SLIMLY +SLIMMED +SLIMMER +SLIMMERS +SLIMMEST +SLIMMING +SLIMNASTICS +SLIMNESS +SLIMNESSES +SLIMPSIER +SLIMPSIEST +SLIMPSY +SLIMS +SLIMSIER +SLIMSIEST +SLIMSY +SLIMY +SLING +SLINGBACK +SLINGBACKS +SLINGER +SLINGERS +SLINGING +SLINGS +SLINGSHOT +SLINGSHOTS +SLINK +SLINKED +SLINKIER +SLINKIEST +SLINKILY +SLINKINESS +SLINKINESSES +SLINKING +SLINKS +SLINKY +SLIP +SLIPCASE +SLIPCASED +SLIPCASES +SLIPCOVER +SLIPCOVERED +SLIPCOVERING +SLIPCOVERS +SLIPDRESS +SLIPDRESSES +SLIPE +SLIPED +SLIPES +SLIPFORM +SLIPFORMED +SLIPFORMING +SLIPFORMS +SLIPING +SLIPKNOT +SLIPKNOTS +SLIPLESS +SLIPOUT +SLIPOUTS +SLIPOVER +SLIPOVERS +SLIPPAGE +SLIPPAGES +SLIPPED +SLIPPER +SLIPPERED +SLIPPERIER +SLIPPERIEST +SLIPPERINESS +SLIPPERINESSES +SLIPPERS +SLIPPERY +SLIPPIER +SLIPPIEST +SLIPPILY +SLIPPING +SLIPPY +SLIPS +SLIPSHEET +SLIPSHEETED +SLIPSHEETING +SLIPSHEETS +SLIPSHOD +SLIPSLOP +SLIPSLOPS +SLIPSOLE +SLIPSOLES +SLIPSTREAM +SLIPSTREAMED +SLIPSTREAMING +SLIPSTREAMS +SLIPT +SLIPUP +SLIPUPS +SLIPWARE +SLIPWARES +SLIPWAY +SLIPWAYS +SLIT +SLITHER +SLITHERED +SLITHERING +SLITHERS +SLITHERY +SLITLESS +SLITLIKE +SLITS +SLITTED +SLITTER +SLITTERS +SLITTIER +SLITTIEST +SLITTING +SLITTY +SLIVER +SLIVERED +SLIVERER +SLIVERERS +SLIVERING +SLIVERS +SLIVOVIC +SLIVOVICES +SLIVOVITZ +SLIVOVITZES +SLOB +SLOBBER +SLOBBERED +SLOBBERER +SLOBBERERS +SLOBBERING +SLOBBERS +SLOBBERY +SLOBBIER +SLOBBIEST +SLOBBISH +SLOBBY +SLOBS +SLOE +SLOES +SLOG +SLOGAN +SLOGANEER +SLOGANEERED +SLOGANEERING +SLOGANEERS +SLOGANIZE +SLOGANIZED +SLOGANIZES +SLOGANIZING +SLOGANS +SLOGGED +SLOGGER +SLOGGERS +SLOGGING +SLOGS +SLOID +SLOIDS +SLOJD +SLOJDS +SLOOP +SLOOPS +SLOP +SLOPE +SLOPED +SLOPER +SLOPERS +SLOPES +SLOPING +SLOPINGLY +SLOPPED +SLOPPIER +SLOPPIEST +SLOPPILY +SLOPPINESS +SLOPPINESSES +SLOPPING +SLOPPY +SLOPS +SLOPWORK +SLOPWORKS +SLOSH +SLOSHED +SLOSHES +SLOSHIER +SLOSHIEST +SLOSHING +SLOSHY +SLOT +SLOTBACK +SLOTBACKS +SLOTH +SLOTHFUL +SLOTHFULLY +SLOTHFULNESS +SLOTHFULNESSES +SLOTHS +SLOTS +SLOTTED +SLOTTER +SLOTTERS +SLOTTING +SLOUCH +SLOUCHED +SLOUCHER +SLOUCHERS +SLOUCHES +SLOUCHIER +SLOUCHIEST +SLOUCHILY +SLOUCHINESS +SLOUCHINESSES +SLOUCHING +SLOUCHY +SLOUGH +SLOUGHED +SLOUGHIER +SLOUGHIEST +SLOUGHING +SLOUGHS +SLOUGHY +SLOVEN +SLOVENLIER +SLOVENLIEST +SLOVENLINESS +SLOVENLINESSES +SLOVENLY +SLOVENS +SLOW +SLOWDOWN +SLOWDOWNS +SLOWED +SLOWER +SLOWEST +SLOWING +SLOWISH +SLOWLY +SLOWNESS +SLOWNESSES +SLOWPOKE +SLOWPOKES +SLOWS +SLOWWORM +SLOWWORMS +SLOYD +SLOYDS +SLUB +SLUBBED +SLUBBER +SLUBBERED +SLUBBERING +SLUBBERS +SLUBBING +SLUBBINGS +SLUBS +SLUDGE +SLUDGED +SLUDGES +SLUDGIER +SLUDGIEST +SLUDGING +SLUDGY +SLUE +SLUED +SLUES +SLUFF +SLUFFED +SLUFFING +SLUFFS +SLUG +SLUGABED +SLUGABEDS +SLUGFEST +SLUGFESTS +SLUGGARD +SLUGGARDLY +SLUGGARDNESS +SLUGGARDNESSES +SLUGGARDS +SLUGGED +SLUGGER +SLUGGERS +SLUGGING +SLUGGISH +SLUGGISHLY +SLUGGISHNESS +SLUGGISHNESSES +SLUGS +SLUICE +SLUICED +SLUICES +SLUICEWAY +SLUICEWAYS +SLUICING +SLUICY +SLUING +SLUM +SLUMBER +SLUMBERED +SLUMBERER +SLUMBERERS +SLUMBERING +SLUMBEROUS +SLUMBERS +SLUMBERY +SLUMBROUS +SLUMGULLION +SLUMGULLIONS +SLUMGUM +SLUMGUMS +SLUMISM +SLUMISMS +SLUMLORD +SLUMLORDS +SLUMMED +SLUMMER +SLUMMERS +SLUMMIER +SLUMMIEST +SLUMMING +SLUMMY +SLUMP +SLUMPED +SLUMPFLATION +SLUMPFLATIONS +SLUMPING +SLUMPS +SLUMS +SLUNG +SLUNGSHOT +SLUNGSHOTS +SLUNK +SLUR +SLURB +SLURBAN +SLURBS +SLURP +SLURPED +SLURPING +SLURPS +SLURRED +SLURRIED +SLURRIES +SLURRING +SLURRY +SLURRYING +SLURS +SLUSH +SLUSHED +SLUSHES +SLUSHIER +SLUSHIEST +SLUSHILY +SLUSHINESS +SLUSHINESSES +SLUSHING +SLUSHY +SLUT +SLUTS +SLUTTIER +SLUTTIEST +SLUTTISH +SLUTTISHLY +SLUTTISHNESS +SLUTTISHNESSES +SLUTTY +SLY +SLYBOOTS +SLYER +SLYEST +SLYLY +SLYNESS +SLYNESSES +SLYPE +SLYPES +SMACK +SMACKED +SMACKER +SMACKERS +SMACKING +SMACKS +SMALL +SMALLAGE +SMALLAGES +SMALLCLOTHES +SMALLER +SMALLEST +SMALLHOLDER +SMALLHOLDERS +SMALLHOLDING +SMALLHOLDINGS +SMALLISH +SMALLMOUTH +SMALLMOUTHS +SMALLNESS +SMALLNESSES +SMALLPOX +SMALLPOXES +SMALLS +SMALLSWORD +SMALLSWORDS +SMALLTIME +SMALT +SMALTI +SMALTINE +SMALTINES +SMALTITE +SMALTITES +SMALTO +SMALTOS +SMALTS +SMARAGD +SMARAGDE +SMARAGDES +SMARAGDINE +SMARAGDITE +SMARAGDITES +SMARAGDS +SMARM +SMARMIER +SMARMIEST +SMARMILY +SMARMINESS +SMARMINESSES +SMARMS +SMARMY +SMART +SMARTASS +SMARTASSES +SMARTED +SMARTEN +SMARTENED +SMARTENING +SMARTENS +SMARTER +SMARTEST +SMARTIE +SMARTIES +SMARTING +SMARTLY +SMARTNESS +SMARTNESSES +SMARTS +SMARTWEED +SMARTWEEDS +SMARTY +SMASH +SMASHED +SMASHER +SMASHERS +SMASHES +SMASHING +SMASHINGLY +SMASHUP +SMASHUPS +SMATTER +SMATTERED +SMATTERER +SMATTERERS +SMATTERING +SMATTERINGS +SMATTERS +SMAZE +SMAZES +SMEAR +SMEARCASE +SMEARCASES +SMEARED +SMEARER +SMEARERS +SMEARIER +SMEARIEST +SMEARING +SMEARS +SMEARY +SMECTIC +SMECTITE +SMECTITES +SMECTITIC +SMEDDUM +SMEDDUMS +SMEEK +SMEEKED +SMEEKING +SMEEKS +SMEGMA +SMEGMAS +SMELL +SMELLED +SMELLER +SMELLERS +SMELLIER +SMELLIEST +SMELLING +SMELLS +SMELLY +SMELT +SMELTED +SMELTER +SMELTERIES +SMELTERS +SMELTERY +SMELTING +SMELTS +SMERK +SMERKED +SMERKING +SMERKS +SMEW +SMEWS +SMIDGE +SMIDGEN +SMIDGENS +SMIDGEON +SMIDGEONS +SMIDGES +SMIDGIN +SMIDGINS +SMIERCASE +SMIERCASES +SMILAX +SMILAXES +SMILE +SMILED +SMILELESS +SMILER +SMILERS +SMILES +SMILEY +SMILEYS +SMILING +SMILINGLY +SMIRCH +SMIRCHED +SMIRCHES +SMIRCHING +SMIRK +SMIRKED +SMIRKER +SMIRKERS +SMIRKIER +SMIRKIEST +SMIRKILY +SMIRKING +SMIRKS +SMIRKY +SMIT +SMITE +SMITER +SMITERS +SMITES +SMITH +SMITHEREENS +SMITHERIES +SMITHERS +SMITHERY +SMITHIES +SMITHS +SMITHSONITE +SMITHSONITES +SMITHY +SMITING +SMITTEN +SMOCK +SMOCKED +SMOCKING +SMOCKINGS +SMOCKS +SMOG +SMOGGIER +SMOGGIEST +SMOGGY +SMOGLESS +SMOGS +SMOKABLE +SMOKE +SMOKEABLE +SMOKED +SMOKEHOUSE +SMOKEHOUSES +SMOKEJACK +SMOKEJACKS +SMOKELESS +SMOKELIKE +SMOKEPOT +SMOKEPOTS +SMOKER +SMOKERS +SMOKES +SMOKESTACK +SMOKESTACKS +SMOKEY +SMOKIER +SMOKIEST +SMOKILY +SMOKINESS +SMOKINESSES +SMOKING +SMOKY +SMOLDER +SMOLDERED +SMOLDERING +SMOLDERS +SMOLT +SMOLTS +SMOOCH +SMOOCHED +SMOOCHER +SMOOCHERS +SMOOCHES +SMOOCHING +SMOOCHY +SMOOSH +SMOOSHED +SMOOSHES +SMOOSHING +SMOOTH +SMOOTHBORE +SMOOTHBORES +SMOOTHED +SMOOTHEN +SMOOTHENED +SMOOTHENING +SMOOTHENS +SMOOTHER +SMOOTHERS +SMOOTHES +SMOOTHEST +SMOOTHIE +SMOOTHIES +SMOOTHING +SMOOTHLY +SMOOTHNESS +SMOOTHNESSES +SMOOTHS +SMOOTHY +SMORGASBORD +SMORGASBORDS +SMOTE +SMOTHER +SMOTHERED +SMOTHERER +SMOTHERERS +SMOTHERING +SMOTHERS +SMOTHERY +SMOULDER +SMOULDERED +SMOULDERING +SMOULDERS +SMUDGE +SMUDGED +SMUDGES +SMUDGIER +SMUDGIEST +SMUDGILY +SMUDGINESS +SMUDGINESSES +SMUDGING +SMUDGY +SMUG +SMUGGER +SMUGGEST +SMUGGLE +SMUGGLED +SMUGGLER +SMUGGLERS +SMUGGLES +SMUGGLING +SMUGLY +SMUGNESS +SMUGNESSES +SMUSH +SMUSHED +SMUSHES +SMUSHING +SMUT +SMUTCH +SMUTCHED +SMUTCHES +SMUTCHIER +SMUTCHIEST +SMUTCHING +SMUTCHY +SMUTS +SMUTTED +SMUTTIER +SMUTTIEST +SMUTTILY +SMUTTINESS +SMUTTINESSES +SMUTTING +SMUTTY +SNACK +SNACKED +SNACKER +SNACKERS +SNACKING +SNACKS +SNAFFLE +SNAFFLED +SNAFFLES +SNAFFLING +SNAFU +SNAFUED +SNAFUING +SNAFUS +SNAG +SNAGGED +SNAGGIER +SNAGGIEST +SNAGGING +SNAGGLETEETH +SNAGGLETOOTH +SNAGGLETOOTHED +SNAGGY +SNAGLIKE +SNAGS +SNAIL +SNAILED +SNAILING +SNAILLIKE +SNAILS +SNAKE +SNAKEBIRD +SNAKEBIRDS +SNAKEBIT +SNAKEBITE +SNAKEBITES +SNAKEBITTEN +SNAKED +SNAKEFISH +SNAKEFISHES +SNAKEHEAD +SNAKEHEADS +SNAKELIKE +SNAKEPIT +SNAKEPITS +SNAKEROOT +SNAKEROOTS +SNAKES +SNAKESKIN +SNAKESKINS +SNAKEWEED +SNAKEWEEDS +SNAKEY +SNAKIER +SNAKIEST +SNAKILY +SNAKINESS +SNAKINESSES +SNAKING +SNAKY +SNAP +SNAPBACK +SNAPBACKS +SNAPDRAGON +SNAPDRAGONS +SNAPLESS +SNAPPED +SNAPPER +SNAPPERS +SNAPPIER +SNAPPIEST +SNAPPILY +SNAPPINESS +SNAPPINESSES +SNAPPING +SNAPPISH +SNAPPISHLY +SNAPPISHNESS +SNAPPISHNESSES +SNAPPY +SNAPS +SNAPSHOOTER +SNAPSHOOTERS +SNAPSHOT +SNAPSHOTS +SNAPSHOTTED +SNAPSHOTTING +SNAPWEED +SNAPWEEDS +SNARE +SNARED +SNARER +SNARERS +SNARES +SNARF +SNARFED +SNARFING +SNARFS +SNARING +SNARK +SNARKIER +SNARKIEST +SNARKILY +SNARKS +SNARKY +SNARL +SNARLED +SNARLER +SNARLERS +SNARLIER +SNARLIEST +SNARLING +SNARLS +SNARLY +SNASH +SNASHES +SNATCH +SNATCHED +SNATCHER +SNATCHERS +SNATCHES +SNATCHIER +SNATCHIEST +SNATCHING +SNATCHY +SNATH +SNATHE +SNATHES +SNATHS +SNAW +SNAWED +SNAWING +SNAWS +SNAZZIER +SNAZZIEST +SNAZZY +SNEAK +SNEAKED +SNEAKER +SNEAKERED +SNEAKERS +SNEAKIER +SNEAKIEST +SNEAKILY +SNEAKINESS +SNEAKINESSES +SNEAKING +SNEAKINGLY +SNEAKS +SNEAKY +SNEAP +SNEAPED +SNEAPING +SNEAPS +SNECK +SNECKS +SNED +SNEDDED +SNEDDING +SNEDS +SNEER +SNEERED +SNEERER +SNEERERS +SNEERFUL +SNEERIER +SNEERIEST +SNEERING +SNEERS +SNEERY +SNEESH +SNEESHES +SNEEZE +SNEEZED +SNEEZER +SNEEZERS +SNEEZES +SNEEZEWEED +SNEEZEWEEDS +SNEEZIER +SNEEZIEST +SNEEZING +SNEEZY +SNELL +SNELLED +SNELLER +SNELLEST +SNELLING +SNELLS +SNIB +SNIBBED +SNIBBING +SNIBS +SNICK +SNICKED +SNICKER +SNICKERED +SNICKERER +SNICKERERS +SNICKERING +SNICKERS +SNICKERSNEE +SNICKERSNEES +SNICKERY +SNICKING +SNICKS +SNIDE +SNIDELY +SNIDENESS +SNIDENESSES +SNIDER +SNIDEST +SNIFF +SNIFFABLE +SNIFFED +SNIFFER +SNIFFERS +SNIFFIER +SNIFFIEST +SNIFFILY +SNIFFINESS +SNIFFINESSES +SNIFFING +SNIFFISH +SNIFFISHLY +SNIFFISHNESS +SNIFFISHNESSES +SNIFFLE +SNIFFLED +SNIFFLER +SNIFFLERS +SNIFFLES +SNIFFLING +SNIFFLY +SNIFFS +SNIFFY +SNIFTER +SNIFTERS +SNIGGER +SNIGGERED +SNIGGERER +SNIGGERERS +SNIGGERING +SNIGGERS +SNIGGLE +SNIGGLED +SNIGGLER +SNIGGLERS +SNIGGLES +SNIGGLING +SNIGLET +SNIGLETS +SNIP +SNIPE +SNIPED +SNIPER +SNIPERS +SNIPERSCOPE +SNIPERSCOPES +SNIPES +SNIPING +SNIPPED +SNIPPER +SNIPPERS +SNIPPERSNAPPER +SNIPPERSNAPPERS +SNIPPET +SNIPPETIER +SNIPPETIEST +SNIPPETS +SNIPPETY +SNIPPIER +SNIPPIEST +SNIPPILY +SNIPPING +SNIPPY +SNIPS +SNIT +SNITCH +SNITCHED +SNITCHER +SNITCHERS +SNITCHES +SNITCHING +SNITS +SNIVEL +SNIVELED +SNIVELER +SNIVELERS +SNIVELING +SNIVELLED +SNIVELLER +SNIVELLERS +SNIVELLING +SNIVELS +SNOB +SNOBBERIES +SNOBBERY +SNOBBIER +SNOBBIEST +SNOBBILY +SNOBBISH +SNOBBISHLY +SNOBBISHNESS +SNOBBISHNESSES +SNOBBISM +SNOBBISMS +SNOBBY +SNOBS +SNOG +SNOGGED +SNOGGING +SNOGS +SNOLLYGOSTER +SNOLLYGOSTERS +SNOOD +SNOODED +SNOODING +SNOODS +SNOOK +SNOOKED +SNOOKER +SNOOKERED +SNOOKERING +SNOOKERS +SNOOKING +SNOOKS +SNOOL +SNOOLED +SNOOLING +SNOOLS +SNOOP +SNOOPED +SNOOPER +SNOOPERS +SNOOPIER +SNOOPIEST +SNOOPILY +SNOOPING +SNOOPS +SNOOPY +SNOOT +SNOOTED +SNOOTIER +SNOOTIEST +SNOOTILY +SNOOTINESS +SNOOTINESSES +SNOOTING +SNOOTS +SNOOTY +SNOOZE +SNOOZED +SNOOZER +SNOOZERS +SNOOZES +SNOOZIER +SNOOZIEST +SNOOZING +SNOOZLE +SNOOZLED +SNOOZLES +SNOOZLING +SNOOZY +SNORE +SNORED +SNORER +SNORERS +SNORES +SNORING +SNORKEL +SNORKELED +SNORKELER +SNORKELERS +SNORKELING +SNORKELS +SNORT +SNORTED +SNORTER +SNORTERS +SNORTING +SNORTS +SNOT +SNOTS +SNOTTIER +SNOTTIEST +SNOTTILY +SNOTTINESS +SNOTTINESSES +SNOTTY +SNOUT +SNOUTED +SNOUTIER +SNOUTIEST +SNOUTING +SNOUTISH +SNOUTS +SNOUTY +SNOW +SNOWBALL +SNOWBALLED +SNOWBALLING +SNOWBALLS +SNOWBANK +SNOWBANKS +SNOWBELL +SNOWBELLS +SNOWBELT +SNOWBELTS +SNOWBERRIES +SNOWBERRY +SNOWBIRD +SNOWBIRDS +SNOWBLINK +SNOWBLINKS +SNOWBLOWER +SNOWBLOWERS +SNOWBOARD +SNOWBOARDED +SNOWBOARDER +SNOWBOARDERS +SNOWBOARDING +SNOWBOARDINGS +SNOWBOARDS +SNOWBOUND +SNOWBRUSH +SNOWBRUSHES +SNOWBUSH +SNOWBUSHES +SNOWCAP +SNOWCAPPED +SNOWCAPS +SNOWCAT +SNOWCATS +SNOWDRIFT +SNOWDRIFTS +SNOWDROP +SNOWDROPS +SNOWED +SNOWFALL +SNOWFALLS +SNOWFIELD +SNOWFIELDS +SNOWFLAKE +SNOWFLAKES +SNOWIER +SNOWIEST +SNOWILY +SNOWINESS +SNOWINESSES +SNOWING +SNOWLAND +SNOWLANDS +SNOWLESS +SNOWLIKE +SNOWMAKER +SNOWMAKERS +SNOWMAKING +SNOWMAN +SNOWMELT +SNOWMELTS +SNOWMEN +SNOWMOBILE +SNOWMOBILER +SNOWMOBILERS +SNOWMOBILES +SNOWMOBILING +SNOWMOBILINGS +SNOWMOBILIST +SNOWMOBILISTS +SNOWMOLD +SNOWMOLDS +SNOWPACK +SNOWPACKS +SNOWPLOW +SNOWPLOWED +SNOWPLOWING +SNOWPLOWS +SNOWS +SNOWSCAPE +SNOWSCAPES +SNOWSHED +SNOWSHEDS +SNOWSHOE +SNOWSHOED +SNOWSHOEING +SNOWSHOER +SNOWSHOERS +SNOWSHOES +SNOWSLIDE +SNOWSLIDES +SNOWSTORM +SNOWSTORMS +SNOWSUIT +SNOWSUITS +SNOWY +SNUB +SNUBBED +SNUBBER +SNUBBERS +SNUBBIER +SNUBBIEST +SNUBBINESS +SNUBBINESSES +SNUBBING +SNUBBY +SNUBNESS +SNUBNESSES +SNUBS +SNUCK +SNUFF +SNUFFBOX +SNUFFBOXES +SNUFFED +SNUFFER +SNUFFERS +SNUFFIER +SNUFFIEST +SNUFFILY +SNUFFING +SNUFFLE +SNUFFLED +SNUFFLER +SNUFFLERS +SNUFFLES +SNUFFLIER +SNUFFLIEST +SNUFFLING +SNUFFLY +SNUFFS +SNUFFY +SNUG +SNUGGED +SNUGGER +SNUGGERIE +SNUGGERIES +SNUGGERY +SNUGGEST +SNUGGIES +SNUGGING +SNUGGLE +SNUGGLED +SNUGGLES +SNUGGLING +SNUGLY +SNUGNESS +SNUGNESSES +SNUGS +SNYE +SNYES +SO +SOAK +SOAKAGE +SOAKAGES +SOAKED +SOAKER +SOAKERS +SOAKING +SOAKS +SOAP +SOAPBARK +SOAPBARKS +SOAPBERRIES +SOAPBERRY +SOAPBOX +SOAPBOXED +SOAPBOXES +SOAPBOXING +SOAPED +SOAPER +SOAPERS +SOAPIER +SOAPIEST +SOAPILY +SOAPINESS +SOAPINESSES +SOAPING +SOAPLESS +SOAPLIKE +SOAPS +SOAPSTONE +SOAPSTONES +SOAPSUDS +SOAPSUDSY +SOAPWORT +SOAPWORTS +SOAPY +SOAR +SOARED +SOARER +SOARERS +SOARING +SOARINGLY +SOARINGS +SOARS +SOAVE +SOAVES +SOB +SOBA +SOBAS +SOBBED +SOBBER +SOBBERS +SOBBING +SOBBINGLY +SOBEIT +SOBER +SOBERED +SOBERER +SOBEREST +SOBERING +SOBERIZE +SOBERIZED +SOBERIZES +SOBERIZING +SOBERLY +SOBERNESS +SOBERNESSES +SOBERS +SOBERSIDED +SOBERSIDEDNESS +SOBERSIDES +SOBFUL +SOBRIETIES +SOBRIETY +SOBRIQUET +SOBRIQUETS +SOBS +SOCA +SOCAGE +SOCAGER +SOCAGERS +SOCAGES +SOCAS +SOCCAGE +SOCCAGES +SOCCER +SOCCERS +SOCIABILITIES +SOCIABILITY +SOCIABLE +SOCIABLENESS +SOCIABLENESSES +SOCIABLES +SOCIABLY +SOCIAL +SOCIALISE +SOCIALISED +SOCIALISES +SOCIALISING +SOCIALISM +SOCIALISMS +SOCIALIST +SOCIALISTIC +SOCIALISTICALLY +SOCIALISTS +SOCIALITE +SOCIALITES +SOCIALITIES +SOCIALITY +SOCIALIZATION +SOCIALIZATIONS +SOCIALIZE +SOCIALIZED +SOCIALIZER +SOCIALIZERS +SOCIALIZES +SOCIALIZING +SOCIALLY +SOCIALS +SOCIETAL +SOCIETALLY +SOCIETIES +SOCIETY +SOCIOBIOLOGICAL +SOCIOBIOLOGIES +SOCIOBIOLOGIST +SOCIOBIOLOGISTS +SOCIOBIOLOGY +SOCIOCULTURAL +SOCIOCULTURALLY +SOCIOECONOMIC +SOCIOGRAM +SOCIOGRAMS +SOCIOHISTORICAL +SOCIOLECT +SOCIOLECTS +SOCIOLINGUIST +SOCIOLINGUISTIC +SOCIOLINGUISTS +SOCIOLOGESE +SOCIOLOGESES +SOCIOLOGIC +SOCIOLOGICAL +SOCIOLOGICALLY +SOCIOLOGIES +SOCIOLOGIST +SOCIOLOGISTS +SOCIOLOGY +SOCIOMETRIC +SOCIOMETRIES +SOCIOMETRY +SOCIOPATH +SOCIOPATHIC +SOCIOPATHS +SOCIOPOLITICAL +SOCIORELIGIOUS +SOCIOSEXUAL +SOCK +SOCKDOLAGER +SOCKDOLAGERS +SOCKDOLOGER +SOCKDOLOGERS +SOCKED +SOCKET +SOCKETED +SOCKETING +SOCKETS +SOCKEYE +SOCKEYES +SOCKING +SOCKLESS +SOCKMAN +SOCKMEN +SOCKO +SOCKS +SOCLE +SOCLES +SOCMAN +SOCMEN +SOD +SODA +SODALESS +SODALIST +SODALISTS +SODALITE +SODALITES +SODALITIES +SODALITY +SODAMIDE +SODAMIDES +SODAS +SODBUSTER +SODBUSTERS +SODDED +SODDEN +SODDENED +SODDENING +SODDENLY +SODDENNESS +SODDENNESSES +SODDENS +SODDIES +SODDING +SODDY +SODIC +SODIUM +SODIUMS +SODOM +SODOMIES +SODOMIST +SODOMISTS +SODOMITE +SODOMITES +SODOMITIC +SODOMITICAL +SODOMIZE +SODOMIZED +SODOMIZES +SODOMIZING +SODOMS +SODOMY +SODS +SOEVER +SOFA +SOFABED +SOFABEDS +SOFAR +SOFARS +SOFAS +SOFFIT +SOFFITS +SOFT +SOFTA +SOFTAS +SOFTBACK +SOFTBACKS +SOFTBALL +SOFTBALLER +SOFTBALLERS +SOFTBALLS +SOFTBOUND +SOFTBOUNDS +SOFTCORE +SOFTCOVER +SOFTCOVERS +SOFTEN +SOFTENED +SOFTENER +SOFTENERS +SOFTENING +SOFTENS +SOFTER +SOFTEST +SOFTGOODS +SOFTHEAD +SOFTHEADED +SOFTHEADEDLY +SOFTHEADEDNESS +SOFTHEADS +SOFTHEARTED +SOFTHEARTEDLY +SOFTHEARTEDNESS +SOFTIE +SOFTIES +SOFTISH +SOFTLY +SOFTNESS +SOFTNESSES +SOFTS +SOFTSHELL +SOFTSHELLS +SOFTWARE +SOFTWARES +SOFTWOOD +SOFTWOODS +SOFTY +SOGGED +SOGGIER +SOGGIEST +SOGGILY +SOGGINESS +SOGGINESSES +SOGGY +SOIGNE +SOIGNEE +SOIL +SOILAGE +SOILAGES +SOILBORNE +SOILED +SOILING +SOILLESS +SOILS +SOILURE +SOILURES +SOIREE +SOIREES +SOJA +SOJAS +SOJOURN +SOJOURNED +SOJOURNER +SOJOURNERS +SOJOURNING +SOJOURNS +SOKE +SOKEMAN +SOKEMEN +SOKES +SOKOL +SOKOLS +SOL +SOLA +SOLACE +SOLACED +SOLACEMENT +SOLACEMENTS +SOLACER +SOLACERS +SOLACES +SOLACING +SOLAN +SOLANACEOUS +SOLAND +SOLANDER +SOLANDERS +SOLANDS +SOLANIN +SOLANINE +SOLANINES +SOLANINS +SOLANO +SOLANOS +SOLANS +SOLANUM +SOLANUMS +SOLAR +SOLARIA +SOLARISE +SOLARISED +SOLARISES +SOLARISING +SOLARISM +SOLARISMS +SOLARIUM +SOLARIUMS +SOLARIZATION +SOLARIZATIONS +SOLARIZE +SOLARIZED +SOLARIZES +SOLARIZING +SOLATE +SOLATED +SOLATES +SOLATIA +SOLATING +SOLATION +SOLATIONS +SOLATIUM +SOLD +SOLDAN +SOLDANS +SOLDER +SOLDERABILITIES +SOLDERABILITY +SOLDERED +SOLDERER +SOLDERERS +SOLDERING +SOLDERS +SOLDI +SOLDIER +SOLDIERED +SOLDIERIES +SOLDIERING +SOLDIERINGS +SOLDIERLY +SOLDIERS +SOLDIERSHIP +SOLDIERSHIPS +SOLDIERY +SOLDO +SOLE +SOLECISE +SOLECISED +SOLECISES +SOLECISING +SOLECISM +SOLECISMS +SOLECIST +SOLECISTIC +SOLECISTS +SOLECIZE +SOLECIZED +SOLECIZES +SOLECIZING +SOLED +SOLEI +SOLELESS +SOLELY +SOLEMN +SOLEMNER +SOLEMNEST +SOLEMNIFIED +SOLEMNIFIES +SOLEMNIFY +SOLEMNIFYING +SOLEMNITIES +SOLEMNITY +SOLEMNIZATION +SOLEMNIZATIONS +SOLEMNIZE +SOLEMNIZED +SOLEMNIZES +SOLEMNIZING +SOLEMNLY +SOLEMNNESS +SOLEMNNESSES +SOLENESS +SOLENESSES +SOLENODON +SOLENODONS +SOLENOID +SOLENOIDAL +SOLENOIDS +SOLEPLATE +SOLEPLATES +SOLEPRINT +SOLEPRINTS +SOLERET +SOLERETS +SOLES +SOLEUS +SOLEUSES +SOLFATARA +SOLFATARAS +SOLFEGE +SOLFEGES +SOLFEGGI +SOLFEGGIO +SOLFEGGIOS +SOLFERINO +SOLFERINOS +SOLGEL +SOLI +SOLICIT +SOLICITANT +SOLICITANTS +SOLICITATION +SOLICITATIONS +SOLICITED +SOLICITING +SOLICITOR +SOLICITORS +SOLICITORSHIP +SOLICITORSHIPS +SOLICITOUS +SOLICITOUSLY +SOLICITOUSNESS +SOLICITS +SOLICITUDE +SOLICITUDES +SOLID +SOLIDAGO +SOLIDAGOS +SOLIDARISM +SOLIDARISMS +SOLIDARIST +SOLIDARISTIC +SOLIDARISTS +SOLIDARITIES +SOLIDARITY +SOLIDARY +SOLIDER +SOLIDEST +SOLIDI +SOLIDIFICATION +SOLIDIFICATIONS +SOLIDIFIED +SOLIDIFIES +SOLIDIFY +SOLIDIFYING +SOLIDITIES +SOLIDITY +SOLIDLY +SOLIDNESS +SOLIDNESSES +SOLIDS +SOLIDUS +SOLIFLUCTION +SOLIFLUCTIONS +SOLILOQUIES +SOLILOQUISE +SOLILOQUISED +SOLILOQUISES +SOLILOQUISING +SOLILOQUIST +SOLILOQUISTS +SOLILOQUIZE +SOLILOQUIZED +SOLILOQUIZER +SOLILOQUIZERS +SOLILOQUIZES +SOLILOQUIZING +SOLILOQUY +SOLING +SOLION +SOLIONS +SOLIPSISM +SOLIPSISMS +SOLIPSIST +SOLIPSISTIC +SOLIPSISTICALLY +SOLIPSISTS +SOLIQUID +SOLIQUIDS +SOLITAIRE +SOLITAIRES +SOLITARIES +SOLITARILY +SOLITARINESS +SOLITARINESSES +SOLITARY +SOLITON +SOLITONS +SOLITUDE +SOLITUDES +SOLITUDINARIAN +SOLITUDINARIANS +SOLLERET +SOLLERETS +SOLMIZATION +SOLMIZATIONS +SOLO +SOLOED +SOLOING +SOLOIST +SOLOISTIC +SOLOISTS +SOLON +SOLONCHAK +SOLONCHAKS +SOLONETS +SOLONETSES +SOLONETZ +SOLONETZES +SOLONETZIC +SOLONS +SOLOS +SOLS +SOLSTICE +SOLSTICES +SOLSTITIAL +SOLUBILISE +SOLUBILISED +SOLUBILISES +SOLUBILISING +SOLUBILITIES +SOLUBILITY +SOLUBILIZATION +SOLUBILIZATIONS +SOLUBILIZE +SOLUBILIZED +SOLUBILIZES +SOLUBILIZING +SOLUBLE +SOLUBLES +SOLUBLY +SOLUM +SOLUMS +SOLUNAR +SOLUS +SOLUTE +SOLUTES +SOLUTION +SOLUTIONS +SOLVABILITIES +SOLVABILITY +SOLVABLE +SOLVATE +SOLVATED +SOLVATES +SOLVATING +SOLVATION +SOLVATIONS +SOLVE +SOLVED +SOLVENCIES +SOLVENCY +SOLVENT +SOLVENTLESS +SOLVENTLY +SOLVENTS +SOLVER +SOLVERS +SOLVES +SOLVING +SOLVOLYSES +SOLVOLYSIS +SOLVOLYTIC +SOM +SOMA +SOMAN +SOMANS +SOMAS +SOMATA +SOMATIC +SOMATICALLY +SOMATOLOGICAL +SOMATOLOGIES +SOMATOLOGY +SOMATOMEDIN +SOMATOMEDINS +SOMATOPLEURE +SOMATOPLEURES +SOMATOSENSORY +SOMATOSTATIN +SOMATOSTATINS +SOMATOTROPHIN +SOMATOTROPHINS +SOMATOTROPIN +SOMATOTROPINS +SOMATOTYPE +SOMATOTYPES +SOMBER +SOMBERLY +SOMBERNESS +SOMBERNESSES +SOMBRE +SOMBRELY +SOMBRERO +SOMBREROS +SOMBROUS +SOME +SOMEBODIES +SOMEBODY +SOMEDAY +SOMEDEAL +SOMEHOW +SOMEONE +SOMEONES +SOMEPLACE +SOMEPLACES +SOMERSAULT +SOMERSAULTED +SOMERSAULTING +SOMERSAULTS +SOMERSET +SOMERSETED +SOMERSETING +SOMERSETS +SOMERSETTED +SOMERSETTING +SOMETHING +SOMETHINGS +SOMETIME +SOMETIMES +SOMEWAY +SOMEWAYS +SOMEWHAT +SOMEWHATS +SOMEWHEN +SOMEWHERE +SOMEWHERES +SOMEWHITHER +SOMEWISE +SOMITAL +SOMITE +SOMITES +SOMITIC +SOMMELIER +SOMMELIERS +SOMNAMBULANT +SOMNAMBULATE +SOMNAMBULATED +SOMNAMBULATES +SOMNAMBULATING +SOMNAMBULATION +SOMNAMBULATIONS +SOMNAMBULISM +SOMNAMBULISMS +SOMNAMBULIST +SOMNAMBULISTIC +SOMNAMBULISTS +SOMNIFACIENT +SOMNIFACIENTS +SOMNIFEROUS +SOMNOLENCE +SOMNOLENCES +SOMNOLENT +SOMNOLENTLY +SOMONI +SOMS +SON +SONANCE +SONANCES +SONANT +SONANTAL +SONANTIC +SONANTS +SONAR +SONARMAN +SONARMEN +SONARS +SONATA +SONATAS +SONATINA +SONATINAS +SONATINE +SONDE +SONDER +SONDERS +SONDES +SONE +SONES +SONG +SONGBIRD +SONGBIRDS +SONGBOOK +SONGBOOKS +SONGFEST +SONGFESTS +SONGFUL +SONGFULLY +SONGFULNESS +SONGFULNESSES +SONGLESS +SONGLESSLY +SONGLIKE +SONGS +SONGSMITH +SONGSMITHS +SONGSTER +SONGSTERS +SONGSTRESS +SONGSTRESSES +SONGWRITER +SONGWRITERS +SONGWRITING +SONGWRITINGS +SONHOOD +SONHOODS +SONIC +SONICALLY +SONICATE +SONICATED +SONICATES +SONICATING +SONICATION +SONICATIONS +SONICATOR +SONICATORS +SONICS +SONLESS +SONLIKE +SONLY +SONNET +SONNETED +SONNETEER +SONNETEERING +SONNETEERINGS +SONNETEERS +SONNETING +SONNETIZE +SONNETIZED +SONNETIZES +SONNETIZING +SONNETS +SONNETTED +SONNETTING +SONNIES +SONNY +SONOBUOY +SONOBUOYS +SONOGRAM +SONOGRAMS +SONOGRAPHIES +SONOGRAPHY +SONORANT +SONORANTS +SONORITIES +SONORITY +SONOROUS +SONOROUSLY +SONOROUSNESS +SONOROUSNESSES +SONOVOX +SONOVOXES +SONS +SONSHIP +SONSHIPS +SONSIE +SONSIER +SONSIEST +SONSY +SOOCHONG +SOOCHONGS +SOOEY +SOOK +SOOKS +SOON +SOONER +SOONERS +SOONEST +SOOT +SOOTED +SOOTH +SOOTHE +SOOTHED +SOOTHER +SOOTHERS +SOOTHES +SOOTHEST +SOOTHFAST +SOOTHING +SOOTHINGLY +SOOTHINGNESS +SOOTHINGNESSES +SOOTHLY +SOOTHS +SOOTHSAID +SOOTHSAY +SOOTHSAYER +SOOTHSAYERS +SOOTHSAYING +SOOTHSAYINGS +SOOTHSAYS +SOOTIER +SOOTIEST +SOOTILY +SOOTINESS +SOOTINESSES +SOOTING +SOOTS +SOOTY +SOP +SOPAIPILLA +SOPAIPILLAS +SOPAPILLA +SOPAPILLAS +SOPH +SOPHIES +SOPHISM +SOPHISMS +SOPHIST +SOPHISTIC +SOPHISTICAL +SOPHISTICALLY +SOPHISTICATE +SOPHISTICATED +SOPHISTICATEDLY +SOPHISTICATES +SOPHISTICATING +SOPHISTICATION +SOPHISTICATIONS +SOPHISTRIES +SOPHISTRY +SOPHISTS +SOPHOMORE +SOPHOMORES +SOPHOMORIC +SOPHS +SOPHY +SOPITE +SOPITED +SOPITES +SOPITING +SOPOR +SOPORIFEROUS +SOPORIFIC +SOPORIFICS +SOPORS +SOPPED +SOPPIER +SOPPIEST +SOPPINESS +SOPPINESSES +SOPPING +SOPPY +SOPRANI +SOPRANINO +SOPRANINOS +SOPRANO +SOPRANOS +SOPS +SORA +SORAS +SORB +SORBABILITIES +SORBABILITY +SORBABLE +SORBATE +SORBATES +SORBED +SORBENT +SORBENTS +SORBET +SORBETS +SORBIC +SORBING +SORBITOL +SORBITOLS +SORBOSE +SORBOSES +SORBS +SORCERER +SORCERERS +SORCERESS +SORCERESSES +SORCERIES +SORCEROUS +SORCERY +SORD +SORDID +SORDIDLY +SORDIDNESS +SORDIDNESSES +SORDINE +SORDINES +SORDINI +SORDINO +SORDOR +SORDORS +SORDS +SORE +SORED +SOREHEAD +SOREHEADED +SOREHEADS +SOREL +SORELS +SORELY +SORENESS +SORENESSES +SORER +SORES +SOREST +SORGHO +SORGHOS +SORGHUM +SORGHUMS +SORGO +SORGOS +SORI +SORICINE +SORING +SORINGS +SORITES +SORITIC +SORN +SORNED +SORNER +SORNERS +SORNING +SORNS +SOROCHE +SOROCHES +SORORAL +SORORALLY +SORORATE +SORORATES +SORORITIES +SORORITY +SOROSES +SOROSIS +SOROSISES +SORPTION +SORPTIONS +SORPTIVE +SORREL +SORRELS +SORRIER +SORRIEST +SORRILY +SORRINESS +SORRINESSES +SORROW +SORROWED +SORROWER +SORROWERS +SORROWFUL +SORROWFULLY +SORROWFULNESS +SORROWFULNESSES +SORROWING +SORROWS +SORRY +SORT +SORTA +SORTABLE +SORTABLY +SORTED +SORTER +SORTERS +SORTIE +SORTIED +SORTIEING +SORTIES +SORTILEGE +SORTILEGES +SORTING +SORTITION +SORTITIONS +SORTS +SORUS +SOS +SOSTENUTI +SOSTENUTO +SOSTENUTOS +SOT +SOTERIOLOGICAL +SOTERIOLOGIES +SOTERIOLOGY +SOTH +SOTHS +SOTOL +SOTOLS +SOTS +SOTTED +SOTTEDLY +SOTTISH +SOTTISHLY +SOTTISHNESS +SOTTISHNESSES +SOU +SOUARI +SOUARIS +SOUBISE +SOUBISES +SOUBRETTE +SOUBRETTES +SOUBRIQUET +SOUBRIQUETS +SOUCAR +SOUCARS +SOUCHONG +SOUCHONGS +SOUDAN +SOUDANS +SOUFFLE +SOUFFLED +SOUFFLEED +SOUFFLES +SOUGH +SOUGHED +SOUGHING +SOUGHS +SOUGHT +SOUK +SOUKOUS +SOUKOUSES +SOUKS +SOUL +SOULED +SOULFUL +SOULFULLY +SOULFULNESS +SOULFULNESSES +SOULLESS +SOULLESSLY +SOULLESSNESS +SOULLESSNESSES +SOULLIKE +SOULMATE +SOULMATES +SOULS +SOUND +SOUNDABLE +SOUNDALIKE +SOUNDALIKES +SOUNDBOARD +SOUNDBOARDS +SOUNDBOX +SOUNDBOXES +SOUNDED +SOUNDER +SOUNDERS +SOUNDEST +SOUNDING +SOUNDINGLY +SOUNDINGS +SOUNDLESS +SOUNDLESSLY +SOUNDLY +SOUNDMAN +SOUNDMEN +SOUNDNESS +SOUNDNESSES +SOUNDPROOF +SOUNDPROOFED +SOUNDPROOFING +SOUNDPROOFS +SOUNDS +SOUNDSTAGE +SOUNDSTAGES +SOUP +SOUPCON +SOUPCONS +SOUPED +SOUPIER +SOUPIEST +SOUPING +SOUPLESS +SOUPLIKE +SOUPS +SOUPSPOON +SOUPSPOONS +SOUPY +SOUR +SOURBALL +SOURBALLS +SOURCE +SOURCEBOOK +SOURCEBOOKS +SOURCED +SOURCEFUL +SOURCELESS +SOURCES +SOURCING +SOURDINE +SOURDINES +SOURDOUGH +SOURDOUGHS +SOURED +SOURER +SOUREST +SOURING +SOURISH +SOURLY +SOURNESS +SOURNESSES +SOURPUSS +SOURPUSSES +SOURS +SOURSOP +SOURSOPS +SOURWOOD +SOURWOODS +SOUS +SOUSAPHONE +SOUSAPHONES +SOUSE +SOUSED +SOUSES +SOUSING +SOUSLIK +SOUSLIKS +SOUTACHE +SOUTACHES +SOUTANE +SOUTANES +SOUTER +SOUTERS +SOUTH +SOUTHBOUND +SOUTHEAST +SOUTHEASTER +SOUTHEASTERLY +SOUTHEASTERN +SOUTHEASTERS +SOUTHEASTS +SOUTHEASTWARD +SOUTHEASTWARDS +SOUTHED +SOUTHER +SOUTHERLIES +SOUTHERLY +SOUTHERN +SOUTHERNMOST +SOUTHERNNESS +SOUTHERNNESSES +SOUTHERNS +SOUTHERNWOOD +SOUTHERNWOODS +SOUTHERS +SOUTHING +SOUTHINGS +SOUTHLAND +SOUTHLANDS +SOUTHPAW +SOUTHPAWS +SOUTHRON +SOUTHRONS +SOUTHS +SOUTHWARD +SOUTHWARDS +SOUTHWEST +SOUTHWESTER +SOUTHWESTERLY +SOUTHWESTERN +SOUTHWESTERS +SOUTHWESTS +SOUTHWESTWARD +SOUTHWESTWARDS +SOUVENIR +SOUVENIRS +SOUVLAKI +SOUVLAKIA +SOUVLAKIAS +SOUVLAKIS +SOVEREIGN +SOVEREIGNLY +SOVEREIGNS +SOVEREIGNTIES +SOVEREIGNTY +SOVIET +SOVIETISM +SOVIETISMS +SOVIETIZATION +SOVIETIZATIONS +SOVIETIZE +SOVIETIZED +SOVIETIZES +SOVIETIZING +SOVIETS +SOVKHOZ +SOVKHOZES +SOVKHOZY +SOVRAN +SOVRANLY +SOVRANS +SOVRANTIES +SOVRANTY +SOW +SOWABLE +SOWANS +SOWAR +SOWARS +SOWBELLIES +SOWBELLY +SOWBREAD +SOWBREADS +SOWCAR +SOWCARS +SOWED +SOWENS +SOWER +SOWERS +SOWING +SOWN +SOWS +SOX +SOY +SOYA +SOYAS +SOYBEAN +SOYBEANS +SOYMILK +SOYMILKS +SOYS +SOYUZ +SOYUZES +SOZIN +SOZINE +SOZINES +SOZINS +SOZZLED +SPA +SPACE +SPACEBAND +SPACEBANDS +SPACECRAFT +SPACECRAFTS +SPACED +SPACEFLIGHT +SPACEFLIGHTS +SPACELESS +SPACEMAN +SPACEMEN +SPACEPORT +SPACEPORTS +SPACER +SPACERS +SPACES +SPACESHIP +SPACESHIPS +SPACESUIT +SPACESUITS +SPACEWALK +SPACEWALKED +SPACEWALKER +SPACEWALKERS +SPACEWALKING +SPACEWALKS +SPACEWARD +SPACEY +SPACIAL +SPACIALLY +SPACIER +SPACIEST +SPACINESS +SPACINESSES +SPACING +SPACINGS +SPACIOUS +SPACIOUSLY +SPACIOUSNESS +SPACIOUSNESSES +SPACKLE +SPACKLED +SPACKLES +SPACKLING +SPACY +SPADE +SPADED +SPADEFISH +SPADEFISHES +SPADEFUL +SPADEFULS +SPADER +SPADERS +SPADES +SPADEWORK +SPADEWORKS +SPADICES +SPADILLE +SPADILLES +SPADING +SPADIX +SPADIXES +SPADO +SPADONES +SPAE +SPAED +SPAEING +SPAEINGS +SPAES +SPAETZLE +SPAETZLES +SPAGHETTI +SPAGHETTILIKE +SPAGHETTINI +SPAGHETTINIS +SPAGHETTIS +SPAGYRIC +SPAGYRICS +SPAHEE +SPAHEES +SPAHI +SPAHIS +SPAIL +SPAILS +SPAIT +SPAITS +SPAKE +SPALDEEN +SPALDEENS +SPALE +SPALES +SPALL +SPALLABLE +SPALLATION +SPALLATIONS +SPALLED +SPALLER +SPALLERS +SPALLING +SPALLS +SPALPEEN +SPALPEENS +SPAM +SPAMBOT +SPAMBOTS +SPAMMED +SPAMMER +SPAMMERS +SPAMMING +SPAMS +SPAN +SPANAKOPITA +SPANAKOPITAS +SPANCEL +SPANCELED +SPANCELING +SPANCELLED +SPANCELLING +SPANCELS +SPANDEX +SPANDEXES +SPANDREL +SPANDRELS +SPANDRIL +SPANDRILS +SPANG +SPANGLE +SPANGLED +SPANGLES +SPANGLIER +SPANGLIEST +SPANGLING +SPANGLY +SPANIEL +SPANIELS +SPANK +SPANKED +SPANKER +SPANKERS +SPANKING +SPANKINGS +SPANKS +SPANLESS +SPANNED +SPANNER +SPANNERS +SPANNING +SPANOKOPITA +SPANOKOPITAS +SPANS +SPANSULE +SPANSULES +SPANWORM +SPANWORMS +SPAR +SPARABLE +SPARABLES +SPARE +SPAREABLE +SPARED +SPARELY +SPARENESS +SPARENESSES +SPARER +SPARERIB +SPARERIBS +SPARERS +SPARES +SPAREST +SPARGE +SPARGED +SPARGER +SPARGERS +SPARGES +SPARGING +SPARID +SPARIDS +SPARING +SPARINGLY +SPARK +SPARKED +SPARKER +SPARKERS +SPARKIER +SPARKIEST +SPARKILY +SPARKING +SPARKISH +SPARKLE +SPARKLED +SPARKLER +SPARKLERS +SPARKLES +SPARKLET +SPARKLETS +SPARKLIER +SPARKLIEST +SPARKLING +SPARKLY +SPARKPLUG +SPARKPLUGGED +SPARKPLUGGING +SPARKPLUGS +SPARKS +SPARKY +SPARLIKE +SPARLING +SPARLINGS +SPAROID +SPAROIDS +SPARRED +SPARRIER +SPARRIEST +SPARRING +SPARROW +SPARROWLIKE +SPARROWS +SPARRY +SPARS +SPARSE +SPARSELY +SPARSENESS +SPARSENESSES +SPARSER +SPARSEST +SPARSITIES +SPARSITY +SPARTAN +SPARTEINE +SPARTEINES +SPARTINA +SPARTINAS +SPAS +SPASM +SPASMED +SPASMING +SPASMODIC +SPASMODICALLY +SPASMOLYTIC +SPASMOLYTICS +SPASMS +SPASTIC +SPASTICALLY +SPASTICITIES +SPASTICITY +SPASTICS +SPAT +SPATE +SPATES +SPATHAL +SPATHE +SPATHED +SPATHES +SPATHIC +SPATHOSE +SPATHULATE +SPATIAL +SPATIALITIES +SPATIALITY +SPATIALLY +SPATIOTEMPORAL +SPATS +SPATTED +SPATTER +SPATTERDOCK +SPATTERDOCKS +SPATTERED +SPATTERING +SPATTERS +SPATTING +SPATULA +SPATULAR +SPATULAS +SPATULATE +SPATZLE +SPATZLES +SPAVIE +SPAVIES +SPAVIET +SPAVIN +SPAVINED +SPAVINS +SPAWN +SPAWNED +SPAWNER +SPAWNERS +SPAWNING +SPAWNS +SPAY +SPAYED +SPAYING +SPAYS +SPAZ +SPAZZ +SPAZZES +SPEAK +SPEAKABLE +SPEAKEASIES +SPEAKEASY +SPEAKER +SPEAKERPHONE +SPEAKERPHONES +SPEAKERS +SPEAKERSHIP +SPEAKERSHIPS +SPEAKING +SPEAKINGS +SPEAKS +SPEAN +SPEANED +SPEANING +SPEANS +SPEAR +SPEARED +SPEARER +SPEARERS +SPEARFISH +SPEARFISHED +SPEARFISHES +SPEARFISHING +SPEARGUN +SPEARGUNS +SPEARHEAD +SPEARHEADED +SPEARHEADING +SPEARHEADS +SPEARING +SPEARLIKE +SPEARMAN +SPEARMEN +SPEARMINT +SPEARMINTS +SPEARS +SPEARWORT +SPEARWORTS +SPEC +SPECCED +SPECCING +SPECIAL +SPECIALER +SPECIALEST +SPECIALISATION +SPECIALISATIONS +SPECIALISE +SPECIALISED +SPECIALISES +SPECIALISING +SPECIALISM +SPECIALISMS +SPECIALIST +SPECIALISTIC +SPECIALISTS +SPECIALITIES +SPECIALITY +SPECIALIZATION +SPECIALIZATIONS +SPECIALIZE +SPECIALIZED +SPECIALIZES +SPECIALIZING +SPECIALLY +SPECIALNESS +SPECIALNESSES +SPECIALS +SPECIALTIES +SPECIALTY +SPECIATE +SPECIATED +SPECIATES +SPECIATING +SPECIATION +SPECIATIONAL +SPECIATIONS +SPECIE +SPECIES +SPECIESISM +SPECIESISMS +SPECIFIABLE +SPECIFIC +SPECIFICALLY +SPECIFICATION +SPECIFICATIONS +SPECIFICITIES +SPECIFICITY +SPECIFICS +SPECIFIED +SPECIFIER +SPECIFIERS +SPECIFIES +SPECIFY +SPECIFYING +SPECIMEN +SPECIMENS +SPECIOSITIES +SPECIOSITY +SPECIOUS +SPECIOUSLY +SPECIOUSNESS +SPECIOUSNESSES +SPECK +SPECKED +SPECKING +SPECKLE +SPECKLED +SPECKLES +SPECKLING +SPECKS +SPECS +SPECTACLE +SPECTACLED +SPECTACLES +SPECTACULAR +SPECTACULARLY +SPECTACULARS +SPECTATE +SPECTATED +SPECTATES +SPECTATING +SPECTATOR +SPECTATORIAL +SPECTATORS +SPECTATORSHIP +SPECTATORSHIPS +SPECTER +SPECTERS +SPECTINOMYCIN +SPECTINOMYCINS +SPECTRA +SPECTRAL +SPECTRALLY +SPECTRE +SPECTRES +SPECTROGRAM +SPECTROGRAMS +SPECTROGRAPH +SPECTROGRAPHIC +SPECTROGRAPHIES +SPECTROGRAPHS +SPECTROGRAPHY +SPECTROMETER +SPECTROMETERS +SPECTROMETRIC +SPECTROMETRIES +SPECTROMETRY +SPECTROSCOPE +SPECTROSCOPES +SPECTROSCOPIC +SPECTROSCOPIES +SPECTROSCOPIST +SPECTROSCOPISTS +SPECTROSCOPY +SPECTRUM +SPECTRUMS +SPECULA +SPECULAR +SPECULARITIES +SPECULARITY +SPECULARLY +SPECULATE +SPECULATED +SPECULATES +SPECULATING +SPECULATION +SPECULATIONS +SPECULATIVE +SPECULATIVELY +SPECULATOR +SPECULATORS +SPECULUM +SPECULUMS +SPED +SPEECH +SPEECHES +SPEECHIFIED +SPEECHIFIES +SPEECHIFY +SPEECHIFYING +SPEECHLESS +SPEECHLESSLY +SPEECHLESSNESS +SPEECHWRITER +SPEECHWRITERS +SPEED +SPEEDBALL +SPEEDBALLED +SPEEDBALLING +SPEEDBALLS +SPEEDBOAT +SPEEDBOATING +SPEEDBOATINGS +SPEEDBOATS +SPEEDED +SPEEDER +SPEEDERS +SPEEDIER +SPEEDIEST +SPEEDILY +SPEEDINESS +SPEEDINESSES +SPEEDING +SPEEDINGS +SPEEDO +SPEEDOMETER +SPEEDOMETERS +SPEEDOS +SPEEDREAD +SPEEDREADING +SPEEDREADS +SPEEDS +SPEEDSTER +SPEEDSTERS +SPEEDUP +SPEEDUPS +SPEEDWAY +SPEEDWAYS +SPEEDWELL +SPEEDWELLS +SPEEDY +SPEEL +SPEELED +SPEELING +SPEELS +SPEER +SPEERED +SPEERING +SPEERINGS +SPEERS +SPEIL +SPEILED +SPEILING +SPEILS +SPEIR +SPEIRED +SPEIRING +SPEIRS +SPEISE +SPEISES +SPEISS +SPEISSES +SPELAEAN +SPELEAN +SPELEOLOGICAL +SPELEOLOGIES +SPELEOLOGIST +SPELEOLOGISTS +SPELEOLOGY +SPELL +SPELLBIND +SPELLBINDER +SPELLBINDERS +SPELLBINDING +SPELLBINDINGLY +SPELLBINDS +SPELLBOUND +SPELLDOWN +SPELLDOWNS +SPELLED +SPELLER +SPELLERS +SPELLING +SPELLINGS +SPELLS +SPELT +SPELTER +SPELTERS +SPELTS +SPELTZ +SPELTZES +SPELUNK +SPELUNKED +SPELUNKER +SPELUNKERS +SPELUNKING +SPELUNKINGS +SPELUNKS +SPENCE +SPENCER +SPENCERS +SPENCES +SPEND +SPENDABLE +SPENDER +SPENDERS +SPENDIER +SPENDIEST +SPENDING +SPENDS +SPENDTHRIFT +SPENDTHRIFTS +SPENDY +SPENSE +SPENSES +SPENT +SPERM +SPERMACETI +SPERMACETIS +SPERMAGONIA +SPERMAGONIUM +SPERMARIES +SPERMARY +SPERMATHECA +SPERMATHECAE +SPERMATIA +SPERMATIAL +SPERMATIC +SPERMATID +SPERMATIDS +SPERMATIUM +SPERMATOCYTE +SPERMATOCYTES +SPERMATOGENESES +SPERMATOGENESIS +SPERMATOGENIC +SPERMATOGONIA +SPERMATOGONIAL +SPERMATOGONIUM +SPERMATOPHORE +SPERMATOPHORES +SPERMATOPHYTE +SPERMATOPHYTES +SPERMATOPHYTIC +SPERMATOZOA +SPERMATOZOAL +SPERMATOZOAN +SPERMATOZOANS +SPERMATOZOID +SPERMATOZOIDS +SPERMATOZOON +SPERMIC +SPERMICIDAL +SPERMICIDE +SPERMICIDES +SPERMINE +SPERMINES +SPERMIOGENESES +SPERMIOGENESIS +SPERMOPHILE +SPERMOPHILES +SPERMOUS +SPERMS +SPERRYLITE +SPERRYLITES +SPESSARTINE +SPESSARTINES +SPESSARTITE +SPESSARTITES +SPEW +SPEWED +SPEWER +SPEWERS +SPEWING +SPEWS +SPHAGNOUS +SPHAGNUM +SPHAGNUMS +SPHALERITE +SPHALERITES +SPHENE +SPHENES +SPHENIC +SPHENODON +SPHENODONS +SPHENODONT +SPHENOID +SPHENOIDAL +SPHENOIDS +SPHENOPSID +SPHENOPSIDS +SPHERAL +SPHERE +SPHERED +SPHERES +SPHERIC +SPHERICAL +SPHERICALLY +SPHERICITIES +SPHERICITY +SPHERICS +SPHERIER +SPHERIEST +SPHERING +SPHEROID +SPHEROIDAL +SPHEROIDALLY +SPHEROIDS +SPHEROMETER +SPHEROMETERS +SPHEROPLAST +SPHEROPLASTS +SPHERULAR +SPHERULE +SPHERULES +SPHERULITE +SPHERULITES +SPHERULITIC +SPHERY +SPHINCTER +SPHINCTERIC +SPHINCTERS +SPHINGES +SPHINGID +SPHINGIDS +SPHINGOSINE +SPHINGOSINES +SPHINX +SPHINXES +SPHINXLIKE +SPHYGMIC +SPHYGMOGRAPH +SPHYGMOGRAPHS +SPHYGMUS +SPHYGMUSES +SPHYNX +SPHYNXES +SPIC +SPICA +SPICAE +SPICAS +SPICATE +SPICATED +SPICCATO +SPICCATOS +SPICE +SPICEBUSH +SPICEBUSHES +SPICED +SPICELESS +SPICER +SPICERIES +SPICERS +SPICERY +SPICES +SPICEY +SPICIER +SPICIEST +SPICILY +SPICINESS +SPICINESSES +SPICING +SPICK +SPICKS +SPICS +SPICULA +SPICULAE +SPICULAR +SPICULATE +SPICULATION +SPICULATIONS +SPICULE +SPICULES +SPICULUM +SPICY +SPIDER +SPIDERIER +SPIDERIEST +SPIDERISH +SPIDERLIKE +SPIDERS +SPIDERWEB +SPIDERWEBS +SPIDERWORT +SPIDERWORTS +SPIDERY +SPIED +SPIEGEL +SPIEGELEISEN +SPIEGELEISENS +SPIEGELS +SPIEL +SPIELED +SPIELER +SPIELERS +SPIELING +SPIELS +SPIER +SPIERED +SPIERING +SPIERS +SPIES +SPIFF +SPIFFED +SPIFFIED +SPIFFIER +SPIFFIES +SPIFFIEST +SPIFFILY +SPIFFINESS +SPIFFINESSES +SPIFFING +SPIFFS +SPIFFY +SPIFFYING +SPIGOT +SPIGOTS +SPIK +SPIKE +SPIKED +SPIKELET +SPIKELETS +SPIKELIKE +SPIKENARD +SPIKENARDS +SPIKER +SPIKERS +SPIKES +SPIKEY +SPIKIER +SPIKIEST +SPIKILY +SPIKINESS +SPIKINESSES +SPIKING +SPIKS +SPIKY +SPILE +SPILED +SPILES +SPILIKIN +SPILIKINS +SPILING +SPILINGS +SPILL +SPILLABLE +SPILLAGE +SPILLAGES +SPILLED +SPILLER +SPILLERS +SPILLIKIN +SPILLIKINS +SPILLING +SPILLOVER +SPILLOVERS +SPILLS +SPILLWAY +SPILLWAYS +SPILT +SPILTH +SPILTHS +SPIN +SPINACH +SPINACHES +SPINACHLIKE +SPINACHY +SPINAGE +SPINAGES +SPINAL +SPINALLY +SPINALS +SPINATE +SPINDLE +SPINDLED +SPINDLER +SPINDLERS +SPINDLES +SPINDLIER +SPINDLIEST +SPINDLING +SPINDLY +SPINDRIFT +SPINDRIFTS +SPINE +SPINED +SPINEL +SPINELESS +SPINELESSLY +SPINELESSNESS +SPINELESSNESSES +SPINELIKE +SPINELLE +SPINELLES +SPINELS +SPINES +SPINET +SPINETS +SPINIER +SPINIEST +SPINIFEX +SPINIFEXES +SPININESS +SPININESSES +SPINLESS +SPINNAKER +SPINNAKERS +SPINNER +SPINNERET +SPINNERETS +SPINNERETTE +SPINNERETTES +SPINNERIES +SPINNERS +SPINNERY +SPINNEY +SPINNEYS +SPINNIES +SPINNING +SPINNINGS +SPINNY +SPINOFF +SPINOFFS +SPINOR +SPINORS +SPINOSE +SPINOSELY +SPINOSITIES +SPINOSITY +SPINOUS +SPINOUT +SPINOUTS +SPINS +SPINSTER +SPINSTERHOOD +SPINSTERHOODS +SPINSTERISH +SPINSTERLY +SPINSTERS +SPINTHARISCOPE +SPINTHARISCOPES +SPINTO +SPINTOS +SPINULA +SPINULAE +SPINULE +SPINULES +SPINULOSE +SPINY +SPIRACLE +SPIRACLES +SPIRACULAR +SPIRAEA +SPIRAEAS +SPIRAL +SPIRALED +SPIRALING +SPIRALITIES +SPIRALITY +SPIRALLED +SPIRALLING +SPIRALLY +SPIRALS +SPIRANT +SPIRANTS +SPIRE +SPIREA +SPIREAS +SPIRED +SPIREM +SPIREME +SPIREMES +SPIREMS +SPIRES +SPIRIER +SPIRIEST +SPIRILLA +SPIRILLUM +SPIRING +SPIRIT +SPIRITED +SPIRITEDLY +SPIRITEDNESS +SPIRITEDNESSES +SPIRITING +SPIRITISM +SPIRITISMS +SPIRITIST +SPIRITISTIC +SPIRITISTS +SPIRITLESS +SPIRITLESSLY +SPIRITLESSNESS +SPIRITOSO +SPIRITOUS +SPIRITS +SPIRITUAL +SPIRITUALISM +SPIRITUALISMS +SPIRITUALIST +SPIRITUALISTIC +SPIRITUALISTS +SPIRITUALITIES +SPIRITUALITY +SPIRITUALIZE +SPIRITUALIZED +SPIRITUALIZES +SPIRITUALIZING +SPIRITUALLY +SPIRITUALNESS +SPIRITUALNESSES +SPIRITUALS +SPIRITUALTIES +SPIRITUALTY +SPIRITUEL +SPIRITUELLE +SPIRITUOUS +SPIROCHAETE +SPIROCHAETES +SPIROCHETAL +SPIROCHETE +SPIROCHETES +SPIROCHETOSES +SPIROCHETOSIS +SPIROGYRA +SPIROGYRAS +SPIROID +SPIROMETER +SPIROMETERS +SPIROMETRIC +SPIROMETRIES +SPIROMETRY +SPIRT +SPIRTED +SPIRTING +SPIRTS +SPIRULA +SPIRULAE +SPIRULAS +SPIRULINA +SPIRULINAS +SPIRY +SPIT +SPITAL +SPITALS +SPITBALL +SPITBALLS +SPITE +SPITED +SPITEFUL +SPITEFULLER +SPITEFULLEST +SPITEFULLY +SPITEFULNESS +SPITEFULNESSES +SPITES +SPITFIRE +SPITFIRES +SPITING +SPITS +SPITTED +SPITTER +SPITTERS +SPITTING +SPITTLE +SPITTLEBUG +SPITTLEBUGS +SPITTLES +SPITTOON +SPITTOONS +SPITZ +SPITZES +SPIV +SPIVS +SPIVVY +SPLAKE +SPLAKES +SPLANCHNIC +SPLASH +SPLASHBOARD +SPLASHBOARDS +SPLASHDOWN +SPLASHDOWNS +SPLASHED +SPLASHER +SPLASHERS +SPLASHES +SPLASHIER +SPLASHIEST +SPLASHILY +SPLASHINESS +SPLASHINESSES +SPLASHING +SPLASHY +SPLAT +SPLATS +SPLATTED +SPLATTER +SPLATTERED +SPLATTERING +SPLATTERS +SPLATTING +SPLAY +SPLAYED +SPLAYFEET +SPLAYFOOT +SPLAYFOOTED +SPLAYING +SPLAYS +SPLEEN +SPLEENFUL +SPLEENIER +SPLEENIEST +SPLEENISH +SPLEENS +SPLEENWORT +SPLEENWORTS +SPLEENY +SPLENDENT +SPLENDID +SPLENDIDER +SPLENDIDEST +SPLENDIDLY +SPLENDIDNESS +SPLENDIDNESSES +SPLENDIFEROUS +SPLENDIFEROUSLY +SPLENDOR +SPLENDOROUS +SPLENDORS +SPLENDOUR +SPLENDOURS +SPLENDROUS +SPLENECTOMIES +SPLENECTOMIZE +SPLENECTOMIZED +SPLENECTOMIZES +SPLENECTOMIZING +SPLENECTOMY +SPLENETIC +SPLENETICALLY +SPLENETICS +SPLENIA +SPLENIAL +SPLENIC +SPLENII +SPLENIUM +SPLENIUS +SPLENOMEGALIES +SPLENOMEGALY +SPLENT +SPLENTS +SPLEUCHAN +SPLEUCHANS +SPLICE +SPLICED +SPLICER +SPLICERS +SPLICES +SPLICING +SPLIFF +SPLIFFS +SPLINE +SPLINED +SPLINES +SPLINING +SPLINT +SPLINTED +SPLINTER +SPLINTERED +SPLINTERING +SPLINTERS +SPLINTERY +SPLINTING +SPLINTS +SPLIT +SPLITS +SPLITTER +SPLITTERS +SPLITTING +SPLODGE +SPLODGED +SPLODGES +SPLODGING +SPLORE +SPLORES +SPLOSH +SPLOSHED +SPLOSHES +SPLOSHING +SPLOTCH +SPLOTCHED +SPLOTCHES +SPLOTCHIER +SPLOTCHIEST +SPLOTCHING +SPLOTCHY +SPLURGE +SPLURGED +SPLURGER +SPLURGERS +SPLURGES +SPLURGIER +SPLURGIEST +SPLURGING +SPLURGY +SPLUTTER +SPLUTTERED +SPLUTTERER +SPLUTTERERS +SPLUTTERING +SPLUTTERS +SPLUTTERY +SPODE +SPODES +SPODOSOL +SPODOSOLS +SPODUMENE +SPODUMENES +SPOIL +SPOILABLE +SPOILAGE +SPOILAGES +SPOILED +SPOILER +SPOILERS +SPOILING +SPOILS +SPOILSMAN +SPOILSMEN +SPOILSPORT +SPOILSPORTS +SPOILT +SPOKE +SPOKED +SPOKEN +SPOKES +SPOKESHAVE +SPOKESHAVES +SPOKESMAN +SPOKESMANSHIP +SPOKESMANSHIPS +SPOKESMEN +SPOKESPEOPLE +SPOKESPERSON +SPOKESPERSONS +SPOKESWOMAN +SPOKESWOMEN +SPOKING +SPOLIATE +SPOLIATED +SPOLIATES +SPOLIATING +SPOLIATION +SPOLIATIONS +SPOLIATOR +SPOLIATORS +SPONDAIC +SPONDAICS +SPONDEE +SPONDEES +SPONDYLITIS +SPONDYLITISES +SPONGE +SPONGED +SPONGER +SPONGERS +SPONGES +SPONGEWARE +SPONGEWARES +SPONGIER +SPONGIEST +SPONGILY +SPONGIN +SPONGINESS +SPONGINESSES +SPONGING +SPONGINS +SPONGY +SPONSAL +SPONSION +SPONSIONS +SPONSON +SPONSONS +SPONSOR +SPONSORED +SPONSORIAL +SPONSORING +SPONSORS +SPONSORSHIP +SPONSORSHIPS +SPONTANEITIES +SPONTANEITY +SPONTANEOUS +SPONTANEOUSLY +SPONTANEOUSNESS +SPONTOON +SPONTOONS +SPOOF +SPOOFED +SPOOFER +SPOOFERIES +SPOOFERS +SPOOFERY +SPOOFING +SPOOFS +SPOOFY +SPOOK +SPOOKED +SPOOKERIES +SPOOKERY +SPOOKIER +SPOOKIEST +SPOOKILY +SPOOKINESS +SPOOKINESSES +SPOOKING +SPOOKISH +SPOOKS +SPOOKY +SPOOL +SPOOLED +SPOOLER +SPOOLERS +SPOOLING +SPOOLINGS +SPOOLS +SPOON +SPOONBILL +SPOONBILLS +SPOONED +SPOONERISM +SPOONERISMS +SPOONEY +SPOONEYS +SPOONFUL +SPOONFULS +SPOONIER +SPOONIES +SPOONIEST +SPOONILY +SPOONING +SPOONS +SPOONSFUL +SPOONY +SPOOR +SPOORED +SPOORING +SPOORS +SPORADIC +SPORADICALLY +SPORAL +SPORANGIA +SPORANGIAL +SPORANGIOPHORE +SPORANGIOPHORES +SPORANGIUM +SPORE +SPORED +SPORES +SPORICIDAL +SPORICIDE +SPORICIDES +SPORING +SPOROCARP +SPOROCARPS +SPOROCYST +SPOROCYSTS +SPOROGENESES +SPOROGENESIS +SPOROGENIC +SPOROGENOUS +SPOROGONIA +SPOROGONIC +SPOROGONIES +SPOROGONIUM +SPOROGONY +SPOROID +SPOROPHORE +SPOROPHORES +SPOROPHYL +SPOROPHYLL +SPOROPHYLLS +SPOROPHYLS +SPOROPHYTE +SPOROPHYTES +SPOROPHYTIC +SPOROPOLLENIN +SPOROPOLLENINS +SPOROTRICHOSES +SPOROTRICHOSIS +SPOROZOA +SPOROZOAL +SPOROZOAN +SPOROZOANS +SPOROZOIC +SPOROZOITE +SPOROZOITES +SPOROZOON +SPORRAN +SPORRANS +SPORT +SPORTED +SPORTER +SPORTERS +SPORTFISHERMAN +SPORTFISHERMEN +SPORTFISHING +SPORTFISHINGS +SPORTFUL +SPORTFULLY +SPORTFULNESS +SPORTFULNESSES +SPORTIER +SPORTIEST +SPORTIF +SPORTILY +SPORTINESS +SPORTINESSES +SPORTING +SPORTINGLY +SPORTIVE +SPORTIVELY +SPORTIVENESS +SPORTIVENESSES +SPORTS +SPORTSCAST +SPORTSCASTER +SPORTSCASTERS +SPORTSCASTS +SPORTSMAN +SPORTSMANLIKE +SPORTSMANLY +SPORTSMANSHIP +SPORTSMANSHIPS +SPORTSMEN +SPORTSWEAR +SPORTSWEARS +SPORTSWOMAN +SPORTSWOMEN +SPORTSWRITER +SPORTSWRITERS +SPORTSWRITING +SPORTSWRITINGS +SPORTY +SPORULAR +SPORULATE +SPORULATED +SPORULATES +SPORULATING +SPORULATION +SPORULATIONS +SPORULATIVE +SPORULE +SPORULES +SPOT +SPOTLESS +SPOTLESSLY +SPOTLESSNESS +SPOTLESSNESSES +SPOTLIGHT +SPOTLIGHTED +SPOTLIGHTING +SPOTLIGHTS +SPOTLIT +SPOTS +SPOTTABLE +SPOTTED +SPOTTER +SPOTTERS +SPOTTIER +SPOTTIEST +SPOTTILY +SPOTTINESS +SPOTTINESSES +SPOTTING +SPOTTY +SPOUSAL +SPOUSALLY +SPOUSALS +SPOUSE +SPOUSED +SPOUSES +SPOUSING +SPOUT +SPOUTED +SPOUTER +SPOUTERS +SPOUTING +SPOUTINGS +SPOUTLESS +SPOUTS +SPRACHGEFUHL +SPRACHGEFUHLS +SPRADDLE +SPRADDLED +SPRADDLES +SPRADDLING +SPRAG +SPRAGS +SPRAIN +SPRAINED +SPRAINING +SPRAINS +SPRANG +SPRANGS +SPRAT +SPRATS +SPRATTLE +SPRATTLED +SPRATTLES +SPRATTLING +SPRAWL +SPRAWLED +SPRAWLER +SPRAWLERS +SPRAWLIER +SPRAWLIEST +SPRAWLING +SPRAWLS +SPRAWLY +SPRAY +SPRAYED +SPRAYER +SPRAYERS +SPRAYING +SPRAYS +SPREAD +SPREADABILITIES +SPREADABILITY +SPREADABLE +SPREADER +SPREADERS +SPREADING +SPREADS +SPREADSHEET +SPREADSHEETS +SPREE +SPREES +SPRENT +SPRIER +SPRIEST +SPRIG +SPRIGGED +SPRIGGER +SPRIGGERS +SPRIGGIER +SPRIGGIEST +SPRIGGING +SPRIGGY +SPRIGHT +SPRIGHTFUL +SPRIGHTFULLY +SPRIGHTFULNESS +SPRIGHTLIER +SPRIGHTLIEST +SPRIGHTLINESS +SPRIGHTLINESSES +SPRIGHTLY +SPRIGHTS +SPRIGS +SPRIGTAIL +SPRIGTAILS +SPRING +SPRINGAL +SPRINGALD +SPRINGALDS +SPRINGALS +SPRINGBOARD +SPRINGBOARDS +SPRINGBOK +SPRINGBOKS +SPRINGE +SPRINGED +SPRINGEING +SPRINGER +SPRINGERS +SPRINGES +SPRINGHEAD +SPRINGHEADS +SPRINGHOUSE +SPRINGHOUSES +SPRINGIER +SPRINGIEST +SPRINGILY +SPRINGINESS +SPRINGINESSES +SPRINGING +SPRINGINGS +SPRINGLET +SPRINGLETS +SPRINGLIKE +SPRINGS +SPRINGTAIL +SPRINGTAILS +SPRINGTIDE +SPRINGTIDES +SPRINGTIME +SPRINGTIMES +SPRINGWATER +SPRINGWATERS +SPRINGWOOD +SPRINGWOODS +SPRINGY +SPRINKLE +SPRINKLED +SPRINKLER +SPRINKLERED +SPRINKLERING +SPRINKLERS +SPRINKLES +SPRINKLING +SPRINKLINGS +SPRINT +SPRINTED +SPRINTER +SPRINTERS +SPRINTING +SPRINTS +SPRIT +SPRITE +SPRITES +SPRITS +SPRITSAIL +SPRITSAILS +SPRITZ +SPRITZED +SPRITZER +SPRITZERS +SPRITZES +SPRITZING +SPROCKET +SPROCKETS +SPROUT +SPROUTED +SPROUTING +SPROUTS +SPRUCE +SPRUCED +SPRUCELY +SPRUCENESS +SPRUCENESSES +SPRUCER +SPRUCES +SPRUCEST +SPRUCIER +SPRUCIEST +SPRUCING +SPRUCY +SPRUE +SPRUES +SPRUG +SPRUGS +SPRUNG +SPRY +SPRYER +SPRYEST +SPRYLY +SPRYNESS +SPRYNESSES +SPUD +SPUDDED +SPUDDER +SPUDDERS +SPUDDING +SPUDS +SPUE +SPUED +SPUES +SPUING +SPUME +SPUMED +SPUMES +SPUMIER +SPUMIEST +SPUMING +SPUMONE +SPUMONES +SPUMONI +SPUMONIS +SPUMOUS +SPUMY +SPUN +SPUNBONDED +SPUNK +SPUNKED +SPUNKIE +SPUNKIER +SPUNKIES +SPUNKIEST +SPUNKILY +SPUNKINESS +SPUNKINESSES +SPUNKING +SPUNKS +SPUNKY +SPUR +SPURGALL +SPURGALLED +SPURGALLING +SPURGALLS +SPURGE +SPURGES +SPURIOUS +SPURIOUSLY +SPURIOUSNESS +SPURIOUSNESSES +SPURN +SPURNED +SPURNER +SPURNERS +SPURNING +SPURNS +SPURRED +SPURRER +SPURRERS +SPURREY +SPURREYS +SPURRIER +SPURRIERS +SPURRIES +SPURRING +SPURRY +SPURS +SPURT +SPURTED +SPURTER +SPURTERS +SPURTING +SPURTLE +SPURTLES +SPURTS +SPUTA +SPUTNIK +SPUTNIKS +SPUTTER +SPUTTERED +SPUTTERER +SPUTTERERS +SPUTTERING +SPUTTERS +SPUTTERY +SPUTUM +SPY +SPYGLASS +SPYGLASSES +SPYING +SPYMASTER +SPYMASTERS +SQUAB +SQUABBIER +SQUABBIEST +SQUABBLE +SQUABBLED +SQUABBLER +SQUABBLERS +SQUABBLES +SQUABBLING +SQUABBY +SQUABS +SQUAD +SQUADDED +SQUADDING +SQUADRON +SQUADRONED +SQUADRONING +SQUADRONS +SQUADS +SQUALENE +SQUALENES +SQUALID +SQUALIDER +SQUALIDEST +SQUALIDLY +SQUALIDNESS +SQUALIDNESSES +SQUALL +SQUALLED +SQUALLER +SQUALLERS +SQUALLIER +SQUALLIEST +SQUALLING +SQUALLISH +SQUALLS +SQUALLY +SQUALOR +SQUALORS +SQUAMA +SQUAMAE +SQUAMATE +SQUAMATES +SQUAMATION +SQUAMATIONS +SQUAMOSAL +SQUAMOSALS +SQUAMOSE +SQUAMOUS +SQUAMULOSE +SQUANDER +SQUANDERED +SQUANDERER +SQUANDERERS +SQUANDERING +SQUANDERS +SQUARE +SQUARED +SQUARELY +SQUARENESS +SQUARENESSES +SQUARER +SQUARERS +SQUARES +SQUAREST +SQUARING +SQUARISH +SQUARISHLY +SQUARISHNESS +SQUARISHNESSES +SQUARK +SQUARKS +SQUARROSE +SQUASH +SQUASHED +SQUASHER +SQUASHERS +SQUASHES +SQUASHIER +SQUASHIEST +SQUASHILY +SQUASHINESS +SQUASHINESSES +SQUASHING +SQUASHY +SQUAT +SQUATLY +SQUATNESS +SQUATNESSES +SQUATS +SQUATTED +SQUATTER +SQUATTERED +SQUATTERING +SQUATTERS +SQUATTEST +SQUATTIER +SQUATTIEST +SQUATTILY +SQUATTING +SQUATTY +SQUAW +SQUAWBUSH +SQUAWBUSHES +SQUAWFISH +SQUAWFISHES +SQUAWK +SQUAWKED +SQUAWKER +SQUAWKERS +SQUAWKING +SQUAWKS +SQUAWROOT +SQUAWROOTS +SQUAWS +SQUEAK +SQUEAKED +SQUEAKER +SQUEAKERS +SQUEAKIER +SQUEAKIEST +SQUEAKILY +SQUEAKING +SQUEAKS +SQUEAKY +SQUEAL +SQUEALED +SQUEALER +SQUEALERS +SQUEALING +SQUEALS +SQUEAMISH +SQUEAMISHLY +SQUEAMISHNESS +SQUEAMISHNESSES +SQUEEGEE +SQUEEGEED +SQUEEGEEING +SQUEEGEES +SQUEEZABILITIES +SQUEEZABILITY +SQUEEZABLE +SQUEEZE +SQUEEZED +SQUEEZER +SQUEEZERS +SQUEEZES +SQUEEZING +SQUEG +SQUEGGED +SQUEGGING +SQUEGS +SQUELCH +SQUELCHED +SQUELCHER +SQUELCHERS +SQUELCHES +SQUELCHIER +SQUELCHIEST +SQUELCHING +SQUELCHY +SQUETEAGUE +SQUIB +SQUIBBED +SQUIBBING +SQUIBS +SQUID +SQUIDDED +SQUIDDING +SQUIDS +SQUIFFED +SQUIFFIER +SQUIFFIEST +SQUIFFY +SQUIGGLE +SQUIGGLED +SQUIGGLES +SQUIGGLIER +SQUIGGLIEST +SQUIGGLING +SQUIGGLY +SQUILGEE +SQUILGEED +SQUILGEEING +SQUILGEES +SQUILL +SQUILLA +SQUILLAE +SQUILLAS +SQUILLS +SQUINCH +SQUINCHED +SQUINCHES +SQUINCHING +SQUINNIED +SQUINNIER +SQUINNIES +SQUINNIEST +SQUINNY +SQUINNYING +SQUINT +SQUINTED +SQUINTER +SQUINTERS +SQUINTEST +SQUINTIER +SQUINTIEST +SQUINTING +SQUINTINGLY +SQUINTS +SQUINTY +SQUIRARCHIES +SQUIRARCHY +SQUIRE +SQUIREARCHIES +SQUIREARCHY +SQUIRED +SQUIREEN +SQUIREENS +SQUIRES +SQUIRING +SQUIRISH +SQUIRM +SQUIRMED +SQUIRMER +SQUIRMERS +SQUIRMIER +SQUIRMIEST +SQUIRMING +SQUIRMS +SQUIRMY +SQUIRREL +SQUIRRELED +SQUIRRELING +SQUIRRELLED +SQUIRRELLING +SQUIRRELLY +SQUIRRELS +SQUIRRELY +SQUIRT +SQUIRTED +SQUIRTER +SQUIRTERS +SQUIRTING +SQUIRTS +SQUISH +SQUISHED +SQUISHES +SQUISHIER +SQUISHIEST +SQUISHINESS +SQUISHINESSES +SQUISHING +SQUISHY +SQUOOSH +SQUOOSHED +SQUOOSHES +SQUOOSHIER +SQUOOSHIEST +SQUOOSHING +SQUOOSHY +SQUUSH +SQUUSHED +SQUUSHES +SQUUSHING +SRADDHA +SRADDHAS +SRADHA +SRADHAS +SRI +SRIS +STAB +STABBED +STABBER +STABBERS +STABBING +STABILE +STABILES +STABILISE +STABILISED +STABILISES +STABILISING +STABILITIES +STABILITY +STABILIZATION +STABILIZATIONS +STABILIZE +STABILIZED +STABILIZER +STABILIZERS +STABILIZES +STABILIZING +STABLE +STABLEBOY +STABLEBOYS +STABLED +STABLEMAN +STABLEMATE +STABLEMATES +STABLEMEN +STABLENESS +STABLENESSES +STABLER +STABLERS +STABLES +STABLEST +STABLING +STABLINGS +STABLISH +STABLISHED +STABLISHES +STABLISHING +STABLISHMENT +STABLISHMENTS +STABLY +STABS +STACCATI +STACCATO +STACCATOS +STACK +STACKABLE +STACKED +STACKER +STACKERS +STACKING +STACKLESS +STACKS +STACKUP +STACKUPS +STACTE +STACTES +STADDLE +STADDLES +STADE +STADES +STADIA +STADIAS +STADIUM +STADIUMS +STADTHOLDER +STADTHOLDERATE +STADTHOLDERATES +STADTHOLDERS +STADTHOLDERSHIP +STAFF +STAFFED +STAFFER +STAFFERS +STAFFING +STAFFS +STAG +STAGE +STAGEABLE +STAGECOACH +STAGECOACHES +STAGECRAFT +STAGECRAFTS +STAGED +STAGEFUL +STAGEFULS +STAGEHAND +STAGEHANDS +STAGELIKE +STAGER +STAGERS +STAGES +STAGESTRUCK +STAGEY +STAGFLATION +STAGFLATIONARY +STAGFLATIONS +STAGGARD +STAGGARDS +STAGGART +STAGGARTS +STAGGED +STAGGER +STAGGERBUSH +STAGGERBUSHES +STAGGERED +STAGGERER +STAGGERERS +STAGGERING +STAGGERINGLY +STAGGERS +STAGGERY +STAGGIE +STAGGIER +STAGGIES +STAGGIEST +STAGGING +STAGGY +STAGHOUND +STAGHOUNDS +STAGIER +STAGIEST +STAGILY +STAGINESS +STAGINESSES +STAGING +STAGINGS +STAGNANCE +STAGNANCES +STAGNANCIES +STAGNANCY +STAGNANT +STAGNANTLY +STAGNATE +STAGNATED +STAGNATES +STAGNATING +STAGNATION +STAGNATIONS +STAGS +STAGY +STAID +STAIDER +STAIDEST +STAIDLY +STAIDNESS +STAIDNESSES +STAIG +STAIGS +STAIN +STAINABILITIES +STAINABILITY +STAINABLE +STAINED +STAINER +STAINERS +STAINING +STAINLESS +STAINLESSES +STAINLESSLY +STAINPROOF +STAINS +STAIR +STAIRCASE +STAIRCASES +STAIRHEAD +STAIRHEADS +STAIRLESS +STAIRLIKE +STAIRS +STAIRSTEP +STAIRSTEPPED +STAIRSTEPPING +STAIRSTEPS +STAIRWAY +STAIRWAYS +STAIRWELL +STAIRWELLS +STAITHE +STAITHES +STAKE +STAKED +STAKEHOLDER +STAKEHOLDERS +STAKEOUT +STAKEOUTS +STAKES +STAKING +STALACTITE +STALACTITES +STALACTITIC +STALAG +STALAGMITE +STALAGMITES +STALAGMITIC +STALAGS +STALE +STALED +STALELY +STALEMATE +STALEMATED +STALEMATES +STALEMATING +STALENESS +STALENESSES +STALER +STALES +STALEST +STALING +STALK +STALKED +STALKER +STALKERS +STALKIER +STALKIEST +STALKILY +STALKING +STALKINGS +STALKLESS +STALKLIKE +STALKS +STALKY +STALL +STALLED +STALLHOLDER +STALLHOLDERS +STALLING +STALLION +STALLIONS +STALLS +STALWART +STALWARTLY +STALWARTNESS +STALWARTNESSES +STALWARTS +STALWORTH +STALWORTHS +STAMEN +STAMENED +STAMENS +STAMINA +STAMINAL +STAMINAS +STAMINATE +STAMINEAL +STAMINODE +STAMINODES +STAMINODIA +STAMINODIES +STAMINODIUM +STAMINODY +STAMMEL +STAMMELS +STAMMER +STAMMERED +STAMMERER +STAMMERERS +STAMMERING +STAMMERS +STAMP +STAMPED +STAMPEDE +STAMPEDED +STAMPEDER +STAMPEDERS +STAMPEDES +STAMPEDING +STAMPER +STAMPERS +STAMPING +STAMPLESS +STAMPS +STANCE +STANCES +STANCH +STANCHED +STANCHER +STANCHERS +STANCHES +STANCHEST +STANCHING +STANCHION +STANCHIONED +STANCHIONING +STANCHIONS +STANCHLY +STAND +STANDARD +STANDARDBRED +STANDARDBREDS +STANDARDISE +STANDARDISED +STANDARDISES +STANDARDISING +STANDARDIZATION +STANDARDIZE +STANDARDIZED +STANDARDIZES +STANDARDIZING +STANDARDLESS +STANDARDLY +STANDARDS +STANDAWAY +STANDBY +STANDBYS +STANDDOWN +STANDDOWNS +STANDEE +STANDEES +STANDER +STANDERS +STANDFAST +STANDFASTS +STANDING +STANDINGS +STANDISH +STANDISHES +STANDOFF +STANDOFFISH +STANDOFFISHLY +STANDOFFISHNESS +STANDOFFS +STANDOUT +STANDOUTS +STANDPAT +STANDPATTER +STANDPATTERS +STANDPATTISM +STANDPATTISMS +STANDPIPE +STANDPIPES +STANDPOINT +STANDPOINTS +STANDS +STANDSTILL +STANDSTILLS +STANDUP +STANDUPS +STANE +STANED +STANES +STANG +STANGED +STANGING +STANGS +STANHOPE +STANHOPES +STANINE +STANINES +STANING +STANK +STANKS +STANNARIES +STANNARY +STANNIC +STANNITE +STANNITES +STANNOUS +STANNUM +STANNUMS +STANOL +STANOLS +STANZA +STANZAED +STANZAIC +STANZAS +STAPEDECTOMIES +STAPEDECTOMY +STAPEDES +STAPEDIAL +STAPELIA +STAPELIAS +STAPES +STAPH +STAPHS +STAPHYLINID +STAPHYLINIDS +STAPHYLOCOCCAL +STAPHYLOCOCCI +STAPHYLOCOCCIC +STAPHYLOCOCCUS +STAPLE +STAPLED +STAPLER +STAPLERS +STAPLES +STAPLING +STAR +STARBOARD +STARBOARDED +STARBOARDING +STARBOARDS +STARBURST +STARBURSTS +STARCH +STARCHED +STARCHES +STARCHIER +STARCHIEST +STARCHILY +STARCHINESS +STARCHINESSES +STARCHING +STARCHY +STARDOM +STARDOMS +STARDUST +STARDUSTS +STARE +STARED +STARER +STARERS +STARES +STARETS +STARFISH +STARFISHES +STARFLOWER +STARFLOWERS +STARFRUIT +STARFRUITS +STARGAZE +STARGAZED +STARGAZER +STARGAZERS +STARGAZES +STARGAZING +STARGAZINGS +STARING +STARINGLY +STARK +STARKER +STARKERS +STARKEST +STARKLY +STARKNESS +STARKNESSES +STARLESS +STARLET +STARLETS +STARLIGHT +STARLIGHTS +STARLIKE +STARLING +STARLINGS +STARLIT +STARNOSE +STARNOSES +STARRED +STARRIER +STARRIEST +STARRING +STARRY +STARS +STARSHIP +STARSHIPS +STARSTRUCK +START +STARTED +STARTER +STARTERS +STARTING +STARTLE +STARTLED +STARTLEMENT +STARTLEMENTS +STARTLER +STARTLERS +STARTLES +STARTLING +STARTLINGLY +STARTS +STARTSY +STARTUP +STARTUPS +STARVATION +STARVATIONS +STARVE +STARVED +STARVELING +STARVELINGS +STARVER +STARVERS +STARVES +STARVING +STARWORT +STARWORTS +STASES +STASH +STASHED +STASHES +STASHING +STASIMA +STASIMON +STASIS +STAT +STATABLE +STATAL +STATANT +STATE +STATEABLE +STATECRAFT +STATECRAFTS +STATED +STATEDLY +STATEHOOD +STATEHOODS +STATEHOUSE +STATEHOUSES +STATELESS +STATELESSNESS +STATELESSNESSES +STATELIER +STATELIEST +STATELINESS +STATELINESSES +STATELY +STATEMENT +STATEMENTS +STATER +STATEROOM +STATEROOMS +STATERS +STATES +STATESIDE +STATESMAN +STATESMANLIKE +STATESMANLY +STATESMANSHIP +STATESMANSHIPS +STATESMEN +STATEWIDE +STATIC +STATICAL +STATICALLY +STATICE +STATICES +STATICKY +STATICS +STATIN +STATING +STATINS +STATION +STATIONAL +STATIONARY +STATIONED +STATIONER +STATIONERIES +STATIONERS +STATIONERY +STATIONING +STATIONMASTER +STATIONMASTERS +STATIONS +STATISM +STATISMS +STATIST +STATISTIC +STATISTICAL +STATISTICALLY +STATISTICIAN +STATISTICIANS +STATISTICS +STATISTS +STATIVE +STATIVES +STATOBLAST +STATOBLASTS +STATOCYST +STATOCYSTS +STATOLITH +STATOLITHS +STATOR +STATORS +STATOSCOPE +STATOSCOPES +STATS +STATUARIES +STATUARY +STATUE +STATUED +STATUES +STATUESQUE +STATUESQUELY +STATUETTE +STATUETTES +STATURE +STATURES +STATUS +STATUSES +STATUSY +STATUTABLE +STATUTE +STATUTES +STATUTORILY +STATUTORY +STAUMREL +STAUMRELS +STAUNCH +STAUNCHED +STAUNCHER +STAUNCHES +STAUNCHEST +STAUNCHING +STAUNCHLY +STAUNCHNESS +STAUNCHNESSES +STAUROLITE +STAUROLITES +STAUROLITIC +STAVE +STAVED +STAVES +STAVESACRE +STAVESACRES +STAVING +STAVUDINE +STAVUDINES +STAW +STAY +STAYED +STAYER +STAYERS +STAYING +STAYS +STAYSAIL +STAYSAILS +STEAD +STEADED +STEADFAST +STEADFASTLY +STEADFASTNESS +STEADFASTNESSES +STEADIED +STEADIER +STEADIERS +STEADIES +STEADIEST +STEADILY +STEADINESS +STEADINESSES +STEADING +STEADINGS +STEADS +STEADY +STEADYING +STEAK +STEAKS +STEAL +STEALABLE +STEALAGE +STEALAGES +STEALER +STEALERS +STEALING +STEALINGS +STEALS +STEALTH +STEALTHIER +STEALTHIEST +STEALTHILY +STEALTHINESS +STEALTHINESSES +STEALTHS +STEALTHY +STEAM +STEAMBOAT +STEAMBOATS +STEAMED +STEAMER +STEAMERED +STEAMERING +STEAMERS +STEAMFITTER +STEAMFITTERS +STEAMIER +STEAMIEST +STEAMILY +STEAMINESS +STEAMINESSES +STEAMING +STEAMROLL +STEAMROLLED +STEAMROLLER +STEAMROLLERED +STEAMROLLERING +STEAMROLLERS +STEAMROLLING +STEAMROLLS +STEAMS +STEAMSHIP +STEAMSHIPS +STEAMY +STEAPSIN +STEAPSINS +STEARATE +STEARATES +STEARIC +STEARIN +STEARINE +STEARINES +STEARINS +STEATITE +STEATITES +STEATITIC +STEATOPYGIA +STEATOPYGIAS +STEATOPYGIC +STEATOPYGOUS +STEATORRHEA +STEATORRHEAS +STEDFAST +STEED +STEEDLIKE +STEEDS +STEEK +STEEKED +STEEKING +STEEKS +STEEL +STEELED +STEELHEAD +STEELHEADS +STEELIE +STEELIER +STEELIES +STEELIEST +STEELINESS +STEELINESSES +STEELING +STEELMAKER +STEELMAKERS +STEELMAKING +STEELMAKINGS +STEELS +STEELWORK +STEELWORKER +STEELWORKERS +STEELWORKS +STEELY +STEELYARD +STEELYARDS +STEENBOK +STEENBOKS +STEENBUCK +STEENBUCKS +STEEP +STEEPED +STEEPEN +STEEPENED +STEEPENING +STEEPENS +STEEPER +STEEPERS +STEEPEST +STEEPING +STEEPISH +STEEPLE +STEEPLEBUSH +STEEPLEBUSHES +STEEPLECHASE +STEEPLECHASER +STEEPLECHASERS +STEEPLECHASES +STEEPLECHASING +STEEPLECHASINGS +STEEPLED +STEEPLEJACK +STEEPLEJACKS +STEEPLES +STEEPLY +STEEPNESS +STEEPNESSES +STEEPS +STEER +STEERABLE +STEERAGE +STEERAGES +STEERAGEWAY +STEERAGEWAYS +STEERED +STEERER +STEERERS +STEERING +STEERS +STEERSMAN +STEERSMEN +STEEVE +STEEVED +STEEVES +STEEVING +STEEVINGS +STEGODON +STEGODONS +STEGOSAUR +STEGOSAURS +STEGOSAURUS +STEGOSAURUSES +STEIN +STEINBOK +STEINBOKS +STEINS +STELA +STELAE +STELAI +STELAR +STELE +STELENE +STELES +STELIC +STELLA +STELLAR +STELLAS +STELLATE +STELLATED +STELLIFIED +STELLIFIES +STELLIFY +STELLIFYING +STELLITE +STELLITES +STELLULAR +STEM +STEMLESS +STEMLIKE +STEMMA +STEMMAS +STEMMATA +STEMMATIC +STEMMED +STEMMER +STEMMERIES +STEMMERS +STEMMERY +STEMMIER +STEMMIEST +STEMMING +STEMMY +STEMS +STEMSON +STEMSONS +STEMWARE +STEMWARES +STENCH +STENCHES +STENCHFUL +STENCHIER +STENCHIEST +STENCHY +STENCIL +STENCILED +STENCILER +STENCILERS +STENCILING +STENCILLED +STENCILLER +STENCILLERS +STENCILLING +STENCILS +STENGAH +STENGAHS +STENO +STENOBATH +STENOBATHIC +STENOBATHS +STENOGRAPHER +STENOGRAPHERS +STENOGRAPHIC +STENOGRAPHIES +STENOGRAPHY +STENOHALINE +STENOKIES +STENOKOUS +STENOKY +STENOS +STENOSED +STENOSES +STENOSIS +STENOTHERM +STENOTHERMAL +STENOTHERMS +STENOTIC +STENOTOPIC +STENOTYPE +STENOTYPED +STENOTYPES +STENOTYPIES +STENOTYPING +STENOTYPIST +STENOTYPISTS +STENOTYPY +STENT +STENTOR +STENTORIAN +STENTORS +STENTS +STEP +STEPBROTHER +STEPBROTHERS +STEPCHILD +STEPCHILDREN +STEPDAME +STEPDAMES +STEPDAUGHTER +STEPDAUGHTERS +STEPFAMILIES +STEPFAMILY +STEPFATHER +STEPFATHERS +STEPHANOTIS +STEPHANOTISES +STEPLADDER +STEPLADDERS +STEPLIKE +STEPMOTHER +STEPMOTHERS +STEPPARENT +STEPPARENTING +STEPPARENTINGS +STEPPARENTS +STEPPE +STEPPED +STEPPER +STEPPERS +STEPPES +STEPPING +STEPS +STEPSISTER +STEPSISTERS +STEPSON +STEPSONS +STEPSTOOL +STEPSTOOLS +STEPWISE +STERADIAN +STERADIANS +STERCORACEOUS +STERCULIA +STERE +STEREO +STEREOCHEMICAL +STEREOCHEMISTRY +STEREOED +STEREOGRAM +STEREOGRAMS +STEREOGRAPH +STEREOGRAPHED +STEREOGRAPHIC +STEREOGRAPHIES +STEREOGRAPHING +STEREOGRAPHS +STEREOGRAPHY +STEREOING +STEREOISOMER +STEREOISOMERIC +STEREOISOMERISM +STEREOISOMERS +STEREOLOGICAL +STEREOLOGICALLY +STEREOLOGIES +STEREOLOGY +STEREOPHONIC +STEREOPHONIES +STEREOPHONY +STEREOPSES +STEREOPSIS +STEREOPTICON +STEREOPTICONS +STEREOREGULAR +STEREOS +STEREOSCOPE +STEREOSCOPES +STEREOSCOPIC +STEREOSCOPIES +STEREOSCOPY +STEREOSPECIFIC +STEREOTACTIC +STEREOTAXIC +STEREOTAXICALLY +STEREOTYPE +STEREOTYPED +STEREOTYPER +STEREOTYPERS +STEREOTYPES +STEREOTYPIC +STEREOTYPICAL +STEREOTYPICALLY +STEREOTYPIES +STEREOTYPING +STEREOTYPY +STERES +STERIC +STERICAL +STERICALLY +STERIGMA +STERIGMAS +STERIGMATA +STERILANT +STERILANTS +STERILE +STERILELY +STERILISE +STERILISED +STERILISES +STERILISING +STERILITIES +STERILITY +STERILIZATION +STERILIZATIONS +STERILIZE +STERILIZED +STERILIZER +STERILIZERS +STERILIZES +STERILIZING +STERLET +STERLETS +STERLING +STERLINGLY +STERLINGNESS +STERLINGNESSES +STERLINGS +STERN +STERNA +STERNAL +STERNER +STERNEST +STERNFOREMOST +STERNITE +STERNITES +STERNLY +STERNMOST +STERNNESS +STERNNESSES +STERNOCOSTAL +STERNPOST +STERNPOSTS +STERNS +STERNSON +STERNSONS +STERNUM +STERNUMS +STERNUTATION +STERNUTATIONS +STERNUTATOR +STERNUTATORS +STERNWARD +STERNWARDS +STERNWAY +STERNWAYS +STEROID +STEROIDAL +STEROIDOGENESES +STEROIDOGENESIS +STEROIDOGENIC +STEROIDS +STEROL +STEROLS +STERTOR +STERTOROUS +STERTOROUSLY +STERTORS +STET +STETHOSCOPE +STETHOSCOPES +STETHOSCOPIC +STETS +STETSON +STETSONS +STETTED +STETTING +STEVEDORE +STEVEDORED +STEVEDORES +STEVEDORING +STEW +STEWABLE +STEWARD +STEWARDED +STEWARDESS +STEWARDESSES +STEWARDING +STEWARDS +STEWARDSHIP +STEWARDSHIPS +STEWBUM +STEWBUMS +STEWED +STEWING +STEWPAN +STEWPANS +STEWS +STEWY +STEY +STHENIA +STHENIAS +STHENIC +STIBIAL +STIBINE +STIBINES +STIBIUM +STIBIUMS +STIBNITE +STIBNITES +STICH +STICHIC +STICHOMYTHIA +STICHOMYTHIAS +STICHOMYTHIC +STICHOMYTHIES +STICHOMYTHY +STICHS +STICK +STICKABLE +STICKBALL +STICKBALLS +STICKED +STICKER +STICKERS +STICKFUL +STICKFULS +STICKHANDLE +STICKHANDLED +STICKHANDLER +STICKHANDLERS +STICKHANDLES +STICKHANDLING +STICKIER +STICKIES +STICKIEST +STICKILY +STICKINESS +STICKINESSES +STICKING +STICKIT +STICKLE +STICKLEBACK +STICKLEBACKS +STICKLED +STICKLER +STICKLERS +STICKLES +STICKLIKE +STICKLING +STICKMAN +STICKMEN +STICKOUT +STICKOUTS +STICKPIN +STICKPINS +STICKS +STICKSEED +STICKSEEDS +STICKTIGHT +STICKTIGHTS +STICKUM +STICKUMS +STICKUP +STICKUPS +STICKWEED +STICKWEEDS +STICKWORK +STICKWORKS +STICKY +STICTION +STICTIONS +STIED +STIES +STIFF +STIFFED +STIFFEN +STIFFENED +STIFFENER +STIFFENERS +STIFFENING +STIFFENS +STIFFER +STIFFEST +STIFFIE +STIFFIES +STIFFING +STIFFISH +STIFFLY +STIFFNESS +STIFFNESSES +STIFFS +STIFLE +STIFLED +STIFLER +STIFLERS +STIFLES +STIFLING +STIFLINGLY +STIGMA +STIGMAL +STIGMAS +STIGMASTEROL +STIGMASTEROLS +STIGMATA +STIGMATIC +STIGMATICALLY +STIGMATICS +STIGMATIST +STIGMATISTS +STIGMATIZATION +STIGMATIZATIONS +STIGMATIZE +STIGMATIZED +STIGMATIZES +STIGMATIZING +STILBENE +STILBENES +STILBESTROL +STILBESTROLS +STILBITE +STILBITES +STILE +STILES +STILETTO +STILETTOED +STILETTOES +STILETTOING +STILETTOS +STILL +STILLBIRTH +STILLBIRTHS +STILLBORN +STILLBORNS +STILLED +STILLER +STILLEST +STILLIER +STILLIEST +STILLING +STILLMAN +STILLMEN +STILLNESS +STILLNESSES +STILLROOM +STILLROOMS +STILLS +STILLY +STILT +STILTED +STILTEDLY +STILTEDNESS +STILTEDNESSES +STILTING +STILTS +STIME +STIMES +STIMIED +STIMIES +STIMULANT +STIMULANTS +STIMULATE +STIMULATED +STIMULATES +STIMULATING +STIMULATION +STIMULATIONS +STIMULATIVE +STIMULATOR +STIMULATORS +STIMULATORY +STIMULI +STIMULUS +STIMY +STIMYING +STING +STINGAREE +STINGAREES +STINGER +STINGERS +STINGIER +STINGIEST +STINGILY +STINGINESS +STINGINESSES +STINGING +STINGINGLY +STINGLESS +STINGO +STINGOS +STINGRAY +STINGRAYS +STINGS +STINGY +STINK +STINKARD +STINKARDS +STINKBUG +STINKBUGS +STINKER +STINKEROO +STINKEROOS +STINKERS +STINKHORN +STINKHORNS +STINKIER +STINKIEST +STINKING +STINKINGLY +STINKO +STINKPOT +STINKPOTS +STINKS +STINKWEED +STINKWEEDS +STINKWOOD +STINKWOODS +STINKY +STINT +STINTED +STINTER +STINTERS +STINTING +STINTS +STIPE +STIPED +STIPEL +STIPELS +STIPEND +STIPENDIARIES +STIPENDIARY +STIPENDS +STIPES +STIPIFORM +STIPITATE +STIPITES +STIPPLE +STIPPLED +STIPPLER +STIPPLERS +STIPPLES +STIPPLING +STIPPLINGS +STIPULAR +STIPULATE +STIPULATED +STIPULATES +STIPULATING +STIPULATION +STIPULATIONS +STIPULATOR +STIPULATORS +STIPULATORY +STIPULE +STIPULED +STIPULES +STIR +STIRABOUT +STIRABOUTS +STIRK +STIRKS +STIRP +STIRPES +STIRPS +STIRRED +STIRRER +STIRRERS +STIRRING +STIRRINGS +STIRRUP +STIRRUPS +STIRS +STITCH +STITCHED +STITCHER +STITCHERIES +STITCHERS +STITCHERY +STITCHES +STITCHING +STITCHWORT +STITCHWORTS +STITHIED +STITHIES +STITHY +STITHYING +STIVER +STIVERS +STOA +STOAE +STOAI +STOAS +STOAT +STOATS +STOB +STOBBED +STOBBING +STOBS +STOCCADO +STOCCADOS +STOCCATA +STOCCATAS +STOCHASTIC +STOCHASTICALLY +STOCK +STOCKADE +STOCKADED +STOCKADES +STOCKADING +STOCKAGE +STOCKAGES +STOCKBREEDER +STOCKBREEDERS +STOCKBROKER +STOCKBROKERAGE +STOCKBROKERAGES +STOCKBROKERS +STOCKBROKING +STOCKBROKINGS +STOCKCAR +STOCKCARS +STOCKED +STOCKER +STOCKERS +STOCKFISH +STOCKFISHES +STOCKHOLDER +STOCKHOLDERS +STOCKIER +STOCKIEST +STOCKILY +STOCKINESS +STOCKINESSES +STOCKINET +STOCKINETS +STOCKINETTE +STOCKINETTES +STOCKING +STOCKINGED +STOCKINGS +STOCKISH +STOCKIST +STOCKISTS +STOCKJOBBER +STOCKJOBBERS +STOCKJOBBING +STOCKJOBBINGS +STOCKKEEPER +STOCKKEEPERS +STOCKMAN +STOCKMEN +STOCKPILE +STOCKPILED +STOCKPILER +STOCKPILERS +STOCKPILES +STOCKPILING +STOCKPOT +STOCKPOTS +STOCKROOM +STOCKROOMS +STOCKS +STOCKTAKING +STOCKTAKINGS +STOCKY +STOCKYARD +STOCKYARDS +STODGE +STODGED +STODGES +STODGIER +STODGIEST +STODGILY +STODGINESS +STODGINESSES +STODGING +STODGY +STOGEY +STOGEYS +STOGIE +STOGIES +STOGY +STOIC +STOICAL +STOICALLY +STOICHIOMETRIC +STOICHIOMETRIES +STOICHIOMETRY +STOICISM +STOICISMS +STOICS +STOKE +STOKED +STOKEHOLD +STOKEHOLDS +STOKEHOLE +STOKEHOLES +STOKER +STOKERS +STOKES +STOKESIA +STOKESIAS +STOKING +STOLE +STOLED +STOLEN +STOLES +STOLID +STOLIDER +STOLIDEST +STOLIDITIES +STOLIDITY +STOLIDLY +STOLLEN +STOLLENS +STOLON +STOLONATE +STOLONIC +STOLONIFEROUS +STOLONS +STOLPORT +STOLPORTS +STOMA +STOMACH +STOMACHACHE +STOMACHACHES +STOMACHED +STOMACHER +STOMACHERS +STOMACHIC +STOMACHICS +STOMACHING +STOMACHS +STOMACHY +STOMAL +STOMAS +STOMATA +STOMATAL +STOMATE +STOMATES +STOMATIC +STOMATITIDES +STOMATITIS +STOMATITISES +STOMATOPOD +STOMATOPODS +STOMATOUS +STOMODAEA +STOMODAEAL +STOMODAEUM +STOMODAEUMS +STOMODEA +STOMODEAL +STOMODEUM +STOMODEUMS +STOMP +STOMPED +STOMPER +STOMPERS +STOMPING +STOMPS +STONABLE +STONE +STONEBOAT +STONEBOATS +STONECHAT +STONECHATS +STONECROP +STONECROPS +STONECUTTER +STONECUTTERS +STONECUTTING +STONECUTTINGS +STONED +STONEFISH +STONEFISHES +STONEFLIES +STONEFLY +STONEMASON +STONEMASONRIES +STONEMASONRY +STONEMASONS +STONER +STONERS +STONES +STONEWALL +STONEWALLED +STONEWALLER +STONEWALLERS +STONEWALLING +STONEWALLS +STONEWARE +STONEWARES +STONEWASH +STONEWASHED +STONEWASHES +STONEWASHING +STONEWORK +STONEWORKS +STONEWORT +STONEWORTS +STONEY +STONIER +STONIEST +STONILY +STONINESS +STONINESSES +STONING +STONISH +STONISHED +STONISHES +STONISHING +STONY +STONYHEARTED +STOOD +STOOGE +STOOGED +STOOGES +STOOGING +STOOK +STOOKED +STOOKER +STOOKERS +STOOKING +STOOKS +STOOL +STOOLED +STOOLIE +STOOLIES +STOOLING +STOOLS +STOOP +STOOPBALL +STOOPBALLS +STOOPED +STOOPER +STOOPERS +STOOPING +STOOPS +STOP +STOPBANK +STOPBANKS +STOPCOCK +STOPCOCKS +STOPE +STOPED +STOPER +STOPERS +STOPES +STOPGAP +STOPGAPS +STOPING +STOPLIGHT +STOPLIGHTS +STOPOFF +STOPOFFS +STOPOVER +STOPOVERS +STOPPABLE +STOPPAGE +STOPPAGES +STOPPED +STOPPER +STOPPERED +STOPPERING +STOPPERS +STOPPING +STOPPLE +STOPPLED +STOPPLES +STOPPLING +STOPS +STOPT +STOPWATCH +STOPWATCHES +STOPWORD +STOPWORDS +STORABLE +STORABLES +STORAGE +STORAGES +STORAX +STORAXES +STORE +STORED +STOREFRONT +STOREFRONTS +STOREHOUSE +STOREHOUSES +STOREKEEPER +STOREKEEPERS +STORER +STOREROOM +STOREROOMS +STORERS +STORES +STORESHIP +STORESHIPS +STOREWIDE +STOREY +STOREYED +STOREYS +STORIED +STORIES +STORING +STORK +STORKS +STORKSBILL +STORKSBILLS +STORM +STORMBOUND +STORMED +STORMIER +STORMIEST +STORMILY +STORMINESS +STORMINESSES +STORMING +STORMS +STORMY +STORY +STORYBOARD +STORYBOARDED +STORYBOARDING +STORYBOARDS +STORYBOOK +STORYBOOKS +STORYING +STORYTELLER +STORYTELLERS +STORYTELLING +STORYTELLINGS +STOSS +STOT +STOTIN +STOTINKA +STOTINKI +STOTINOV +STOTINS +STOTS +STOTT +STOTTED +STOTTING +STOTTS +STOUND +STOUNDED +STOUNDING +STOUNDS +STOUP +STOUPS +STOUR +STOURE +STOURES +STOURIE +STOURS +STOURY +STOUT +STOUTEN +STOUTENED +STOUTENING +STOUTENS +STOUTER +STOUTEST +STOUTHEARTED +STOUTHEARTEDLY +STOUTISH +STOUTLY +STOUTNESS +STOUTNESSES +STOUTS +STOVE +STOVEPIPE +STOVEPIPES +STOVER +STOVERS +STOVES +STOW +STOWABLE +STOWAGE +STOWAGES +STOWAWAY +STOWAWAYS +STOWED +STOWING +STOWP +STOWPS +STOWS +STRABISMIC +STRABISMUS +STRABISMUSES +STRADDLE +STRADDLED +STRADDLER +STRADDLERS +STRADDLES +STRADDLING +STRAFE +STRAFED +STRAFER +STRAFERS +STRAFES +STRAFING +STRAGGLE +STRAGGLED +STRAGGLER +STRAGGLERS +STRAGGLES +STRAGGLIER +STRAGGLIEST +STRAGGLING +STRAGGLY +STRAIGHT +STRAIGHTAWAY +STRAIGHTAWAYS +STRAIGHTBRED +STRAIGHTBREDS +STRAIGHTED +STRAIGHTEDGE +STRAIGHTEDGES +STRAIGHTEN +STRAIGHTENED +STRAIGHTENER +STRAIGHTENERS +STRAIGHTENING +STRAIGHTENS +STRAIGHTER +STRAIGHTEST +STRAIGHTFORWARD +STRAIGHTING +STRAIGHTISH +STRAIGHTJACKET +STRAIGHTJACKETS +STRAIGHTLACED +STRAIGHTLY +STRAIGHTNESS +STRAIGHTNESSES +STRAIGHTS +STRAIGHTWAY +STRAIN +STRAINED +STRAINER +STRAINERS +STRAINING +STRAINS +STRAIT +STRAITEN +STRAITENED +STRAITENING +STRAITENS +STRAITER +STRAITEST +STRAITJACKET +STRAITJACKETED +STRAITJACKETING +STRAITJACKETS +STRAITLACED +STRAITLACEDLY +STRAITLACEDNESS +STRAITLY +STRAITNESS +STRAITNESSES +STRAITS +STRAKE +STRAKED +STRAKES +STRAMASH +STRAMASHES +STRAMONIES +STRAMONIUM +STRAMONIUMS +STRAMONY +STRAND +STRANDED +STRANDEDNESS +STRANDEDNESSES +STRANDER +STRANDERS +STRANDING +STRANDLINE +STRANDLINES +STRANDS +STRANG +STRANGE +STRANGELY +STRANGENESS +STRANGENESSES +STRANGER +STRANGERED +STRANGERING +STRANGERS +STRANGES +STRANGEST +STRANGLE +STRANGLED +STRANGLEHOLD +STRANGLEHOLDS +STRANGLER +STRANGLERS +STRANGLES +STRANGLING +STRANGULATE +STRANGULATED +STRANGULATES +STRANGULATING +STRANGULATION +STRANGULATIONS +STRANGURIES +STRANGURY +STRAP +STRAPHANG +STRAPHANGED +STRAPHANGER +STRAPHANGERS +STRAPHANGING +STRAPHANGS +STRAPHUNG +STRAPLESS +STRAPLESSES +STRAPPADO +STRAPPADOES +STRAPPADOS +STRAPPED +STRAPPER +STRAPPERS +STRAPPIER +STRAPPIEST +STRAPPING +STRAPPINGS +STRAPPY +STRAPS +STRASS +STRASSES +STRATA +STRATAGEM +STRATAGEMS +STRATAL +STRATAS +STRATEGIC +STRATEGICAL +STRATEGICALLY +STRATEGIES +STRATEGIST +STRATEGISTS +STRATEGIZE +STRATEGIZED +STRATEGIZES +STRATEGIZING +STRATEGY +STRATH +STRATHS +STRATHSPEY +STRATHSPEYS +STRATI +STRATIFICATION +STRATIFICATIONS +STRATIFIED +STRATIFIES +STRATIFORM +STRATIFY +STRATIFYING +STRATIGRAPHIC +STRATIGRAPHIES +STRATIGRAPHY +STRATOCRACIES +STRATOCRACY +STRATOCUMULI +STRATOCUMULUS +STRATOSPHERE +STRATOSPHERES +STRATOSPHERIC +STRATOUS +STRATOVOLCANO +STRATOVOLCANOES +STRATOVOLCANOS +STRATUM +STRATUMS +STRATUS +STRAVAGE +STRAVAGED +STRAVAGES +STRAVAGING +STRAVAIG +STRAVAIGED +STRAVAIGING +STRAVAIGS +STRAW +STRAWBERRIES +STRAWBERRY +STRAWED +STRAWFLOWER +STRAWFLOWERS +STRAWHAT +STRAWIER +STRAWIEST +STRAWING +STRAWS +STRAWWORM +STRAWWORMS +STRAWY +STRAY +STRAYED +STRAYER +STRAYERS +STRAYING +STRAYS +STREAK +STREAKED +STREAKER +STREAKERS +STREAKIER +STREAKIEST +STREAKILY +STREAKINESS +STREAKINESSES +STREAKING +STREAKINGS +STREAKS +STREAKY +STREAM +STREAMBED +STREAMBEDS +STREAMED +STREAMER +STREAMERS +STREAMIER +STREAMIEST +STREAMING +STREAMINGS +STREAMLET +STREAMLETS +STREAMLINE +STREAMLINED +STREAMLINER +STREAMLINERS +STREAMLINES +STREAMLINING +STREAMS +STREAMSIDE +STREAMSIDES +STREAMY +STREEK +STREEKED +STREEKER +STREEKERS +STREEKING +STREEKS +STREEL +STREELED +STREELING +STREELS +STREET +STREETCAR +STREETCARS +STREETLAMP +STREETLAMPS +STREETLIGHT +STREETLIGHTS +STREETS +STREETSCAPE +STREETSCAPES +STREETWALKER +STREETWALKERS +STREETWALKING +STREETWALKINGS +STREETWISE +STRENGTH +STRENGTHEN +STRENGTHENED +STRENGTHENER +STRENGTHENERS +STRENGTHENING +STRENGTHENS +STRENGTHS +STRENUOSITIES +STRENUOSITY +STRENUOUS +STRENUOUSLY +STRENUOUSNESS +STRENUOUSNESSES +STREP +STREPS +STREPTOBACILLI +STREPTOBACILLUS +STREPTOCOCCAL +STREPTOCOCCI +STREPTOCOCCIC +STREPTOCOCCUS +STREPTOKINASE +STREPTOKINASES +STREPTOLYSIN +STREPTOLYSINS +STREPTOMYCES +STREPTOMYCETE +STREPTOMYCETES +STREPTOMYCIN +STREPTOMYCINS +STREPTOTHRICIN +STREPTOTHRICINS +STRESS +STRESSED +STRESSES +STRESSFUL +STRESSFULLY +STRESSING +STRESSLESS +STRESSLESSNESS +STRESSOR +STRESSORS +STRETCH +STRETCHABILITY +STRETCHABLE +STRETCHED +STRETCHER +STRETCHERED +STRETCHERING +STRETCHERS +STRETCHES +STRETCHIER +STRETCHIEST +STRETCHING +STRETCHY +STRETTA +STRETTAS +STRETTE +STRETTI +STRETTO +STRETTOS +STREUSEL +STREUSELS +STREW +STREWED +STREWER +STREWERS +STREWING +STREWMENT +STREWMENTS +STREWN +STREWS +STRIA +STRIAE +STRIATA +STRIATE +STRIATED +STRIATES +STRIATING +STRIATION +STRIATIONS +STRIATUM +STRICK +STRICKEN +STRICKLE +STRICKLED +STRICKLES +STRICKLING +STRICKS +STRICT +STRICTER +STRICTEST +STRICTION +STRICTIONS +STRICTLY +STRICTNESS +STRICTNESSES +STRICTURE +STRICTURES +STRIDDEN +STRIDE +STRIDENCE +STRIDENCES +STRIDENCIES +STRIDENCY +STRIDENT +STRIDENTLY +STRIDER +STRIDERS +STRIDES +STRIDING +STRIDOR +STRIDORS +STRIDULATE +STRIDULATED +STRIDULATES +STRIDULATING +STRIDULATION +STRIDULATIONS +STRIDULATORY +STRIDULOUS +STRIDULOUSLY +STRIFE +STRIFEFUL +STRIFELESS +STRIFES +STRIGIL +STRIGILS +STRIGOSE +STRIKE +STRIKEBOUND +STRIKEBREAKER +STRIKEBREAKERS +STRIKEBREAKING +STRIKEBREAKINGS +STRIKEOUT +STRIKEOUTS +STRIKEOVER +STRIKEOVERS +STRIKER +STRIKERS +STRIKES +STRIKING +STRIKINGLY +STRING +STRINGCOURSE +STRINGCOURSES +STRINGED +STRINGENCIES +STRINGENCY +STRINGENDO +STRINGENT +STRINGENTLY +STRINGER +STRINGERS +STRINGHALT +STRINGHALTED +STRINGHALTS +STRINGIER +STRINGIEST +STRINGILY +STRINGINESS +STRINGINESSES +STRINGING +STRINGINGS +STRINGLESS +STRINGPIECE +STRINGPIECES +STRINGS +STRINGY +STRINGYBARK +STRINGYBARKS +STRIP +STRIPE +STRIPED +STRIPELESS +STRIPER +STRIPERS +STRIPES +STRIPIER +STRIPIEST +STRIPING +STRIPINGS +STRIPLING +STRIPLINGS +STRIPPABLE +STRIPPED +STRIPPER +STRIPPERS +STRIPPING +STRIPS +STRIPT +STRIPTEASE +STRIPTEASER +STRIPTEASERS +STRIPTEASES +STRIPY +STRIVE +STRIVED +STRIVEN +STRIVER +STRIVERS +STRIVES +STRIVING +STROBE +STROBES +STROBIC +STROBIL +STROBILA +STROBILAE +STROBILAR +STROBILATION +STROBILATIONS +STROBILE +STROBILES +STROBILI +STROBILS +STROBILUS +STROBOSCOPE +STROBOSCOPES +STROBOSCOPIC +STROBOTRON +STROBOTRONS +STRODE +STROKE +STROKED +STROKER +STROKERS +STROKES +STROKING +STROLL +STROLLED +STROLLER +STROLLERS +STROLLING +STROLLS +STROMA +STROMAL +STROMATA +STROMATIC +STROMATOLITE +STROMATOLITES +STROMATOLITIC +STRONG +STRONGBOX +STRONGBOXES +STRONGER +STRONGEST +STRONGHOLD +STRONGHOLDS +STRONGISH +STRONGLY +STRONGMAN +STRONGMEN +STRONGYL +STRONGYLE +STRONGYLES +STRONGYLOIDOSES +STRONGYLOIDOSIS +STRONGYLS +STRONTIA +STRONTIAN +STRONTIANITE +STRONTIANITES +STRONTIANS +STRONTIAS +STRONTIC +STRONTIUM +STRONTIUMS +STROOK +STROP +STROPHANTHIN +STROPHANTHINS +STROPHE +STROPHES +STROPHIC +STROPHOID +STROPHOIDS +STROPHULI +STROPHULUS +STROPPED +STROPPER +STROPPERS +STROPPIER +STROPPIEST +STROPPING +STROPPY +STROPS +STROUD +STROUDING +STROUDINGS +STROUDS +STROVE +STROW +STROWED +STROWING +STROWN +STROWS +STROY +STROYED +STROYER +STROYERS +STROYING +STROYS +STRUCK +STRUCKEN +STRUCTURAL +STRUCTURALISM +STRUCTURALISMS +STRUCTURALIST +STRUCTURALISTS +STRUCTURALIZE +STRUCTURALIZED +STRUCTURALIZES +STRUCTURALIZING +STRUCTURALLY +STRUCTURATION +STRUCTURATIONS +STRUCTURE +STRUCTURED +STRUCTURELESS +STRUCTURES +STRUCTURING +STRUDEL +STRUDELS +STRUGGLE +STRUGGLED +STRUGGLER +STRUGGLERS +STRUGGLES +STRUGGLING +STRUM +STRUMA +STRUMAE +STRUMAS +STRUMATIC +STRUMMED +STRUMMER +STRUMMERS +STRUMMING +STRUMOSE +STRUMOUS +STRUMPET +STRUMPETS +STRUMS +STRUNG +STRUNT +STRUNTED +STRUNTING +STRUNTS +STRUT +STRUTHIOUS +STRUTS +STRUTTED +STRUTTER +STRUTTERS +STRUTTING +STRYCHNIC +STRYCHNINE +STRYCHNINES +STUB +STUBBED +STUBBIER +STUBBIEST +STUBBILY +STUBBING +STUBBLE +STUBBLED +STUBBLES +STUBBLIER +STUBBLIEST +STUBBLY +STUBBORN +STUBBORNER +STUBBORNEST +STUBBORNLY +STUBBORNNESS +STUBBORNNESSES +STUBBY +STUBS +STUCCO +STUCCOED +STUCCOER +STUCCOERS +STUCCOES +STUCCOING +STUCCOS +STUCCOWORK +STUCCOWORKS +STUCK +STUD +STUDBOOK +STUDBOOKS +STUDDED +STUDDIE +STUDDIES +STUDDING +STUDDINGS +STUDENT +STUDENTS +STUDENTSHIP +STUDENTSHIPS +STUDFISH +STUDFISHES +STUDHORSE +STUDHORSES +STUDIED +STUDIEDLY +STUDIEDNESS +STUDIEDNESSES +STUDIER +STUDIERS +STUDIES +STUDIO +STUDIOS +STUDIOUS +STUDIOUSLY +STUDIOUSNESS +STUDIOUSNESSES +STUDLIER +STUDLIEST +STUDLY +STUDS +STUDWORK +STUDWORKS +STUDY +STUDYING +STUFF +STUFFED +STUFFER +STUFFERS +STUFFIER +STUFFIEST +STUFFILY +STUFFINESS +STUFFINESSES +STUFFING +STUFFINGS +STUFFLESS +STUFFS +STUFFY +STUIVER +STUIVERS +STULL +STULLS +STULTIFICATION +STULTIFICATIONS +STULTIFIED +STULTIFIES +STULTIFY +STULTIFYING +STUM +STUMBLE +STUMBLEBUM +STUMBLEBUMS +STUMBLED +STUMBLER +STUMBLERS +STUMBLES +STUMBLING +STUMBLINGLY +STUMMED +STUMMING +STUMP +STUMPAGE +STUMPAGES +STUMPED +STUMPER +STUMPERS +STUMPIER +STUMPIEST +STUMPING +STUMPS +STUMPY +STUMS +STUN +STUNG +STUNK +STUNNED +STUNNER +STUNNERS +STUNNING +STUNNINGLY +STUNS +STUNSAIL +STUNSAILS +STUNT +STUNTED +STUNTEDNESS +STUNTEDNESSES +STUNTING +STUNTMAN +STUNTMEN +STUNTS +STUNTWOMAN +STUNTWOMEN +STUPA +STUPAS +STUPE +STUPEFACTION +STUPEFACTIONS +STUPEFIED +STUPEFIER +STUPEFIERS +STUPEFIES +STUPEFY +STUPEFYING +STUPEFYINGLY +STUPENDOUS +STUPENDOUSLY +STUPENDOUSNESS +STUPES +STUPID +STUPIDER +STUPIDEST +STUPIDITIES +STUPIDITY +STUPIDLY +STUPIDNESS +STUPIDNESSES +STUPIDS +STUPOR +STUPOROUS +STUPORS +STURDIED +STURDIER +STURDIES +STURDIEST +STURDILY +STURDINESS +STURDINESSES +STURDY +STURGEON +STURGEONS +STURT +STURTS +STUTTER +STUTTERED +STUTTERER +STUTTERERS +STUTTERING +STUTTERS +STY +STYE +STYED +STYES +STYGIAN +STYING +STYLAR +STYLATE +STYLE +STYLEBOOK +STYLEBOOKS +STYLED +STYLELESS +STYLELESSNESS +STYLELESSNESSES +STYLER +STYLERS +STYLES +STYLET +STYLETS +STYLI +STYLIFORM +STYLING +STYLINGS +STYLISE +STYLISED +STYLISER +STYLISERS +STYLISES +STYLISH +STYLISHLY +STYLISHNESS +STYLISHNESSES +STYLISING +STYLIST +STYLISTIC +STYLISTICALLY +STYLISTICS +STYLISTS +STYLITE +STYLITES +STYLITIC +STYLITISM +STYLITISMS +STYLIZATION +STYLIZATIONS +STYLIZE +STYLIZED +STYLIZER +STYLIZERS +STYLIZES +STYLIZING +STYLOBATE +STYLOBATES +STYLOGRAPHIES +STYLOGRAPHY +STYLOID +STYLOLITE +STYLOLITES +STYLOPODIA +STYLOPODIUM +STYLUS +STYLUSES +STYMIE +STYMIED +STYMIEING +STYMIES +STYMY +STYMYING +STYPSIS +STYPSISES +STYPTIC +STYPTICAL +STYPTICS +STYRAX +STYRAXES +STYRENE +STYRENES +STYROFOAM +STYROFOAMS +SUABILITIES +SUABILITY +SUABLE +SUABLY +SUASION +SUASIONS +SUASIVE +SUASIVELY +SUASIVENESS +SUASIVENESSES +SUASORY +SUAVE +SUAVELY +SUAVENESS +SUAVENESSES +SUAVER +SUAVEST +SUAVITIES +SUAVITY +SUB +SUBA +SUBABBOT +SUBABBOTS +SUBACID +SUBACIDLY +SUBACIDNESS +SUBACIDNESSES +SUBACRID +SUBACUTE +SUBACUTELY +SUBADAR +SUBADARS +SUBADOLESCENT +SUBADOLESCENTS +SUBADULT +SUBADULTS +SUBAERIAL +SUBAERIALLY +SUBAGENCIES +SUBAGENCY +SUBAGENT +SUBAGENTS +SUBAH +SUBAHDAR +SUBAHDARS +SUBAHS +SUBALAR +SUBALLOCATION +SUBALLOCATIONS +SUBALPINE +SUBALTERN +SUBALTERNS +SUBANTARCTIC +SUBAPICAL +SUBAQUATIC +SUBAQUEOUS +SUBARACHNOID +SUBARACHNOIDAL +SUBARCTIC +SUBARCTICS +SUBAREA +SUBAREAS +SUBARID +SUBAS +SUBASSEMBLIES +SUBASSEMBLY +SUBASTRAL +SUBATMOSPHERIC +SUBATOM +SUBATOMIC +SUBATOMS +SUBAUDIBLE +SUBAUDITION +SUBAUDITIONS +SUBAURAL +SUBAVERAGE +SUBAXIAL +SUBBASE +SUBBASEMENT +SUBBASEMENTS +SUBBASES +SUBBASIN +SUBBASINS +SUBBASS +SUBBASSES +SUBBED +SUBBING +SUBBINGS +SUBBITUMINOUS +SUBBLOCK +SUBBLOCKS +SUBBRANCH +SUBBRANCHES +SUBBREED +SUBBREEDS +SUBBUREAU +SUBBUREAUS +SUBBUREAUX +SUBCABINET +SUBCAPSULAR +SUBCASTE +SUBCASTES +SUBCATEGORIES +SUBCATEGORIZE +SUBCATEGORIZED +SUBCATEGORIZES +SUBCATEGORIZING +SUBCATEGORY +SUBCAUSE +SUBCAUSES +SUBCAVITIES +SUBCAVITY +SUBCEILING +SUBCEILINGS +SUBCELL +SUBCELLAR +SUBCELLARS +SUBCELLS +SUBCELLULAR +SUBCENTER +SUBCENTERS +SUBCENTRAL +SUBCENTRALLY +SUBCHAPTER +SUBCHAPTERS +SUBCHASER +SUBCHASERS +SUBCHIEF +SUBCHIEFS +SUBCLAIM +SUBCLAIMS +SUBCLAN +SUBCLANS +SUBCLASS +SUBCLASSED +SUBCLASSES +SUBCLASSIFIED +SUBCLASSIFIES +SUBCLASSIFY +SUBCLASSIFYING +SUBCLASSING +SUBCLAUSE +SUBCLAUSES +SUBCLAVIAN +SUBCLAVIANS +SUBCLERK +SUBCLERKS +SUBCLIMAX +SUBCLIMAXES +SUBCLINICAL +SUBCLINICALLY +SUBCLUSTER +SUBCLUSTERED +SUBCLUSTERING +SUBCLUSTERS +SUBCODE +SUBCODES +SUBCOLLECTION +SUBCOLLECTIONS +SUBCOLLEGE +SUBCOLLEGIATE +SUBCOLONIES +SUBCOLONY +SUBCOMMISSION +SUBCOMMISSIONED +SUBCOMMISSIONS +SUBCOMMITTEE +SUBCOMMITTEES +SUBCOMMUNITIES +SUBCOMMUNITY +SUBCOMPACT +SUBCOMPACTS +SUBCOMPONENT +SUBCOMPONENTS +SUBCONSCIOUS +SUBCONSCIOUSES +SUBCONSCIOUSLY +SUBCONSUL +SUBCONSULS +SUBCONTINENT +SUBCONTINENTAL +SUBCONTINENTS +SUBCONTRACT +SUBCONTRACTED +SUBCONTRACTING +SUBCONTRACTOR +SUBCONTRACTORS +SUBCONTRACTS +SUBCONTRAOCTAVE +SUBCONTRARIES +SUBCONTRARY +SUBCOOL +SUBCOOLED +SUBCOOLING +SUBCOOLS +SUBCORDATE +SUBCORIACEOUS +SUBCORTEX +SUBCORTEXES +SUBCORTICAL +SUBCORTICES +SUBCOSTAL +SUBCOSTALS +SUBCOUNTIES +SUBCOUNTY +SUBCRITICAL +SUBCRUSTAL +SUBCULT +SUBCULTS +SUBCULTURAL +SUBCULTURALLY +SUBCULTURE +SUBCULTURED +SUBCULTURES +SUBCULTURING +SUBCURATIVE +SUBCUTANEOUS +SUBCUTANEOUSLY +SUBCUTES +SUBCUTIS +SUBCUTISES +SUBDEACON +SUBDEACONS +SUBDEALER +SUBDEALERS +SUBDEAN +SUBDEANS +SUBDEB +SUBDEBS +SUBDEBUTANTE +SUBDEBUTANTES +SUBDECISION +SUBDECISIONS +SUBDEPARTMENT +SUBDEPARTMENTS +SUBDEPOT +SUBDEPOTS +SUBDEPUTIES +SUBDEPUTY +SUBDERMAL +SUBDERMALLY +SUBDEVELOPMENT +SUBDEVELOPMENTS +SUBDIALECT +SUBDIALECTS +SUBDIRECTOR +SUBDIRECTORS +SUBDISCIPLINE +SUBDISCIPLINES +SUBDISTRICT +SUBDISTRICTS +SUBDIVIDABLE +SUBDIVIDE +SUBDIVIDED +SUBDIVIDER +SUBDIVIDERS +SUBDIVIDES +SUBDIVIDING +SUBDIVISION +SUBDIVISIONS +SUBDOMINANT +SUBDOMINANTS +SUBDUABLE +SUBDUABLY +SUBDUAL +SUBDUALS +SUBDUCE +SUBDUCED +SUBDUCES +SUBDUCING +SUBDUCT +SUBDUCTED +SUBDUCTING +SUBDUCTION +SUBDUCTIONS +SUBDUCTS +SUBDUE +SUBDUED +SUBDUEDLY +SUBDUER +SUBDUERS +SUBDUES +SUBDUING +SUBDURAL +SUBDWARF +SUBDWARFS +SUBECHO +SUBECHOES +SUBECONOMIES +SUBECONOMY +SUBEDIT +SUBEDITED +SUBEDITING +SUBEDITOR +SUBEDITORIAL +SUBEDITORS +SUBEDITS +SUBEMPLOYED +SUBEMPLOYMENT +SUBEMPLOYMENTS +SUBENTRIES +SUBENTRY +SUBEPIDERMAL +SUBEPOCH +SUBEPOCHS +SUBER +SUBERECT +SUBERIC +SUBERIN +SUBERINS +SUBERISE +SUBERISED +SUBERISES +SUBERISING +SUBERIZATION +SUBERIZATIONS +SUBERIZE +SUBERIZED +SUBERIZES +SUBERIZING +SUBEROSE +SUBEROUS +SUBERS +SUBFAMILIES +SUBFAMILY +SUBFIELD +SUBFIELDS +SUBFILE +SUBFILES +SUBFIX +SUBFIXES +SUBFLOOR +SUBFLOORS +SUBFLUID +SUBFOSSIL +SUBFOSSILS +SUBFRAME +SUBFRAMES +SUBFREEZING +SUBFUSC +SUBFUSCS +SUBGENERA +SUBGENERATION +SUBGENERATIONS +SUBGENRE +SUBGENRES +SUBGENUS +SUBGENUSES +SUBGLACIAL +SUBGLACIALLY +SUBGOAL +SUBGOALS +SUBGOVERNMENT +SUBGOVERNMENTS +SUBGRADE +SUBGRADES +SUBGRAPH +SUBGRAPHS +SUBGROUP +SUBGROUPED +SUBGROUPING +SUBGROUPS +SUBGUM +SUBGUMS +SUBHEAD +SUBHEADING +SUBHEADINGS +SUBHEADS +SUBHUMAN +SUBHUMANS +SUBHUMID +SUBIDEA +SUBIDEAS +SUBINDEX +SUBINDEXES +SUBINDICES +SUBINDUSTRIES +SUBINDUSTRY +SUBINFEUD +SUBINFEUDATE +SUBINFEUDATED +SUBINFEUDATES +SUBINFEUDATING +SUBINFEUDATION +SUBINFEUDATIONS +SUBINFEUDED +SUBINFEUDING +SUBINFEUDS +SUBINHIBITORY +SUBINTERVAL +SUBINTERVALS +SUBIRRIGATE +SUBIRRIGATED +SUBIRRIGATES +SUBIRRIGATING +SUBIRRIGATION +SUBIRRIGATIONS +SUBITEM +SUBITEMS +SUBITO +SUBJACENCIES +SUBJACENCY +SUBJACENT +SUBJACENTLY +SUBJECT +SUBJECTED +SUBJECTING +SUBJECTION +SUBJECTIONS +SUBJECTIVE +SUBJECTIVELY +SUBJECTIVENESS +SUBJECTIVES +SUBJECTIVISE +SUBJECTIVISED +SUBJECTIVISES +SUBJECTIVISING +SUBJECTIVISM +SUBJECTIVISMS +SUBJECTIVIST +SUBJECTIVISTIC +SUBJECTIVISTS +SUBJECTIVITIES +SUBJECTIVITY +SUBJECTIVIZE +SUBJECTIVIZED +SUBJECTIVIZES +SUBJECTIVIZING +SUBJECTLESS +SUBJECTS +SUBJOIN +SUBJOINED +SUBJOINING +SUBJOINS +SUBJUGATE +SUBJUGATED +SUBJUGATES +SUBJUGATING +SUBJUGATION +SUBJUGATIONS +SUBJUGATOR +SUBJUGATORS +SUBJUNCTION +SUBJUNCTIONS +SUBJUNCTIVE +SUBJUNCTIVES +SUBKINGDOM +SUBKINGDOMS +SUBLANGUAGE +SUBLANGUAGES +SUBLATE +SUBLATED +SUBLATES +SUBLATING +SUBLATION +SUBLATIONS +SUBLEASE +SUBLEASED +SUBLEASES +SUBLEASING +SUBLESSEE +SUBLESSEES +SUBLESSOR +SUBLESSORS +SUBLET +SUBLETHAL +SUBLETHALLY +SUBLETS +SUBLETTING +SUBLEVEL +SUBLEVELS +SUBLIBRARIAN +SUBLIBRARIANS +SUBLICENSE +SUBLICENSED +SUBLICENSES +SUBLICENSING +SUBLIEUTENANT +SUBLIEUTENANTS +SUBLIMABLE +SUBLIMATE +SUBLIMATED +SUBLIMATES +SUBLIMATING +SUBLIMATION +SUBLIMATIONS +SUBLIME +SUBLIMED +SUBLIMELY +SUBLIMENESS +SUBLIMENESSES +SUBLIMER +SUBLIMERS +SUBLIMES +SUBLIMEST +SUBLIMINAL +SUBLIMINALLY +SUBLIMING +SUBLIMIT +SUBLIMITIES +SUBLIMITS +SUBLIMITY +SUBLINE +SUBLINES +SUBLINGUAL +SUBLITERACIES +SUBLITERACY +SUBLITERARY +SUBLITERATE +SUBLITERATES +SUBLITERATURE +SUBLITERATURES +SUBLITTORAL +SUBLITTORALS +SUBLOT +SUBLOTS +SUBLUNAR +SUBLUNARY +SUBLUXATION +SUBLUXATIONS +SUBMANAGER +SUBMANAGERS +SUBMANDIBULAR +SUBMANDIBULARS +SUBMARGINAL +SUBMARINE +SUBMARINED +SUBMARINER +SUBMARINERS +SUBMARINES +SUBMARINING +SUBMARKET +SUBMARKETS +SUBMAXILLARIES +SUBMAXILLARY +SUBMAXIMAL +SUBMEDIANT +SUBMEDIANTS +SUBMENU +SUBMENUS +SUBMERGE +SUBMERGED +SUBMERGENCE +SUBMERGENCES +SUBMERGES +SUBMERGIBLE +SUBMERGING +SUBMERSE +SUBMERSED +SUBMERSES +SUBMERSIBLE +SUBMERSIBLES +SUBMERSING +SUBMERSION +SUBMERSIONS +SUBMETACENTRIC +SUBMETACENTRICS +SUBMICROGRAM +SUBMICRON +SUBMICROSCOPIC +SUBMILLIMETER +SUBMINIATURE +SUBMINIMAL +SUBMINISTER +SUBMINISTERS +SUBMISS +SUBMISSION +SUBMISSIONS +SUBMISSIVE +SUBMISSIVELY +SUBMISSIVENESS +SUBMIT +SUBMITS +SUBMITTAL +SUBMITTALS +SUBMITTED +SUBMITTER +SUBMITTERS +SUBMITTING +SUBMUCOSA +SUBMUCOSAE +SUBMUCOSAL +SUBMUCOSAS +SUBMULTIPLE +SUBMULTIPLES +SUBMUNITION +SUBMUNITIONS +SUBNASAL +SUBNATIONAL +SUBNET +SUBNETS +SUBNETWORK +SUBNETWORKED +SUBNETWORKING +SUBNETWORKS +SUBNICHE +SUBNICHES +SUBNODAL +SUBNORMAL +SUBNORMALITIES +SUBNORMALITY +SUBNORMALLY +SUBNORMALS +SUBNUCLEAR +SUBNUCLEI +SUBNUCLEUS +SUBNUCLEUSES +SUBOCEAN +SUBOCEANIC +SUBOPTIC +SUBOPTIMAL +SUBOPTIMIZATION +SUBOPTIMIZE +SUBOPTIMIZED +SUBOPTIMIZES +SUBOPTIMIZING +SUBOPTIMUM +SUBORAL +SUBORBICULAR +SUBORBITAL +SUBORDER +SUBORDERS +SUBORDINATE +SUBORDINATED +SUBORDINATELY +SUBORDINATENESS +SUBORDINATES +SUBORDINATING +SUBORDINATION +SUBORDINATIONS +SUBORDINATIVE +SUBORDINATOR +SUBORDINATORS +SUBORGANIZATION +SUBORN +SUBORNATION +SUBORNATIONS +SUBORNED +SUBORNER +SUBORNERS +SUBORNING +SUBORNS +SUBOSCINE +SUBOSCINES +SUBOVAL +SUBOVATE +SUBOXIDE +SUBOXIDES +SUBPANEL +SUBPANELS +SUBPAR +SUBPARAGRAPH +SUBPARAGRAPHS +SUBPARALLEL +SUBPART +SUBPARTS +SUBPENA +SUBPENAED +SUBPENAING +SUBPENAS +SUBPERIOD +SUBPERIODS +SUBPHASE +SUBPHASES +SUBPHYLA +SUBPHYLAR +SUBPHYLUM +SUBPLOT +SUBPLOTS +SUBPOENA +SUBPOENAED +SUBPOENAING +SUBPOENAS +SUBPOLAR +SUBPOPULATION +SUBPOPULATIONS +SUBPOTENCIES +SUBPOTENCY +SUBPOTENT +SUBPRIMATE +SUBPRIMATES +SUBPRINCIPAL +SUBPRINCIPALS +SUBPROBLEM +SUBPROBLEMS +SUBPROCESS +SUBPROCESSES +SUBPRODUCT +SUBPRODUCTS +SUBPROFESSIONAL +SUBPROGRAM +SUBPROGRAMS +SUBPROJECT +SUBPROJECTS +SUBPROLETARIAT +SUBPROLETARIATS +SUBPUBIC +SUBRACE +SUBRACES +SUBRATIONAL +SUBREGION +SUBREGIONAL +SUBREGIONS +SUBRENT +SUBRENTS +SUBREPTION +SUBREPTIONS +SUBREPTITIOUS +SUBREPTITIOUSLY +SUBRING +SUBRINGS +SUBROGATE +SUBROGATED +SUBROGATES +SUBROGATING +SUBROGATION +SUBROGATIONS +SUBROUTINE +SUBROUTINES +SUBRULE +SUBRULES +SUBS +SUBSALE +SUBSALES +SUBSAMPLE +SUBSAMPLED +SUBSAMPLES +SUBSAMPLING +SUBSATELLITE +SUBSATELLITES +SUBSATURATED +SUBSATURATION +SUBSATURATIONS +SUBSCALE +SUBSCALES +SUBSCIENCE +SUBSCIENCES +SUBSCRIBE +SUBSCRIBED +SUBSCRIBER +SUBSCRIBERS +SUBSCRIBES +SUBSCRIBING +SUBSCRIPT +SUBSCRIPTION +SUBSCRIPTIONS +SUBSCRIPTS +SUBSEA +SUBSECRETARIES +SUBSECRETARY +SUBSECT +SUBSECTION +SUBSECTIONS +SUBSECTOR +SUBSECTORS +SUBSECTS +SUBSEGMENT +SUBSEGMENTS +SUBSEIZURE +SUBSEIZURES +SUBSENSE +SUBSENSES +SUBSENTENCE +SUBSENTENCES +SUBSEQUENCE +SUBSEQUENCES +SUBSEQUENT +SUBSEQUENTLY +SUBSEQUENTS +SUBSERE +SUBSERES +SUBSERIES +SUBSERVE +SUBSERVED +SUBSERVES +SUBSERVIENCE +SUBSERVIENCES +SUBSERVIENCIES +SUBSERVIENCY +SUBSERVIENT +SUBSERVIENTLY +SUBSERVING +SUBSET +SUBSETS +SUBSHAFT +SUBSHAFTS +SUBSHELL +SUBSHELLS +SUBSHRUB +SUBSHRUBS +SUBSIDE +SUBSIDED +SUBSIDENCE +SUBSIDENCES +SUBSIDER +SUBSIDERS +SUBSIDES +SUBSIDIARIES +SUBSIDIARILY +SUBSIDIARITIES +SUBSIDIARITY +SUBSIDIARY +SUBSIDIES +SUBSIDING +SUBSIDISE +SUBSIDISED +SUBSIDISES +SUBSIDISING +SUBSIDIZATION +SUBSIDIZATIONS +SUBSIDIZE +SUBSIDIZED +SUBSIDIZER +SUBSIDIZERS +SUBSIDIZES +SUBSIDIZING +SUBSIDY +SUBSIST +SUBSISTED +SUBSISTENCE +SUBSISTENCES +SUBSISTENT +SUBSISTER +SUBSISTERS +SUBSISTING +SUBSISTS +SUBSITE +SUBSITES +SUBSKILL +SUBSKILLS +SUBSOCIAL +SUBSOCIETIES +SUBSOCIETY +SUBSOIL +SUBSOILED +SUBSOILER +SUBSOILERS +SUBSOILING +SUBSOILS +SUBSOLAR +SUBSONIC +SUBSONICALLY +SUBSPACE +SUBSPACES +SUBSPECIALIST +SUBSPECIALISTS +SUBSPECIALIZE +SUBSPECIALIZED +SUBSPECIALIZES +SUBSPECIALIZING +SUBSPECIALTIES +SUBSPECIALTY +SUBSPECIES +SUBSPECIFIC +SUBSTAGE +SUBSTAGES +SUBSTANCE +SUBSTANCELESS +SUBSTANCES +SUBSTANDARD +SUBSTANTIAL +SUBSTANTIALITY +SUBSTANTIALLY +SUBSTANTIALNESS +SUBSTANTIALS +SUBSTANTIATE +SUBSTANTIATED +SUBSTANTIATES +SUBSTANTIATING +SUBSTANTIATION +SUBSTANTIATIONS +SUBSTANTIATIVE +SUBSTANTIVAL +SUBSTANTIVALLY +SUBSTANTIVE +SUBSTANTIVELY +SUBSTANTIVENESS +SUBSTANTIVES +SUBSTANTIVIZE +SUBSTANTIVIZED +SUBSTANTIVIZES +SUBSTANTIVIZING +SUBSTATE +SUBSTATES +SUBSTATION +SUBSTATIONS +SUBSTITUENT +SUBSTITUENTS +SUBSTITUTABLE +SUBSTITUTE +SUBSTITUTED +SUBSTITUTES +SUBSTITUTING +SUBSTITUTION +SUBSTITUTIONAL +SUBSTITUTIONARY +SUBSTITUTIONS +SUBSTITUTIVE +SUBSTITUTIVELY +SUBSTRATA +SUBSTRATE +SUBSTRATES +SUBSTRATUM +SUBSTRATUMS +SUBSTRUCTURAL +SUBSTRUCTURE +SUBSTRUCTURES +SUBSUMABLE +SUBSUME +SUBSUMED +SUBSUMES +SUBSUMING +SUBSUMPTION +SUBSUMPTIONS +SUBSURFACE +SUBSURFACES +SUBSYSTEM +SUBSYSTEMS +SUBTASK +SUBTASKS +SUBTAXA +SUBTAXON +SUBTAXONS +SUBTEEN +SUBTEENS +SUBTEMPERATE +SUBTENANCIES +SUBTENANCY +SUBTENANT +SUBTENANTS +SUBTEND +SUBTENDED +SUBTENDING +SUBTENDS +SUBTERFUGE +SUBTERFUGES +SUBTERMINAL +SUBTERRANEAN +SUBTERRANEANLY +SUBTERRANEOUS +SUBTERRANEOUSLY +SUBTEST +SUBTESTS +SUBTEXT +SUBTEXTS +SUBTEXTUAL +SUBTHEME +SUBTHEMES +SUBTHERAPEUTIC +SUBTHRESHOLD +SUBTILE +SUBTILELY +SUBTILENESS +SUBTILENESSES +SUBTILER +SUBTILEST +SUBTILIN +SUBTILINS +SUBTILISIN +SUBTILISINS +SUBTILITIES +SUBTILITY +SUBTILIZATION +SUBTILIZATIONS +SUBTILIZE +SUBTILIZED +SUBTILIZES +SUBTILIZING +SUBTILTIES +SUBTILTY +SUBTITLE +SUBTITLED +SUBTITLES +SUBTITLING +SUBTLE +SUBTLENESS +SUBTLENESSES +SUBTLER +SUBTLEST +SUBTLETIES +SUBTLETY +SUBTLY +SUBTONE +SUBTONES +SUBTONIC +SUBTONICS +SUBTOPIA +SUBTOPIAS +SUBTOPIC +SUBTOPICS +SUBTORRID +SUBTOTAL +SUBTOTALED +SUBTOTALING +SUBTOTALLED +SUBTOTALLING +SUBTOTALLY +SUBTOTALS +SUBTRACT +SUBTRACTED +SUBTRACTER +SUBTRACTERS +SUBTRACTING +SUBTRACTION +SUBTRACTIONS +SUBTRACTIVE +SUBTRACTS +SUBTRAHEND +SUBTRAHENDS +SUBTREASURIES +SUBTREASURY +SUBTREND +SUBTRENDS +SUBTRIBE +SUBTRIBES +SUBTROPIC +SUBTROPICAL +SUBTROPICS +SUBTUNIC +SUBTUNICS +SUBTYPE +SUBTYPES +SUBULATE +SUBUMBRELLA +SUBUMBRELLAS +SUBUNIT +SUBUNITS +SUBURB +SUBURBAN +SUBURBANISE +SUBURBANISED +SUBURBANISES +SUBURBANISING +SUBURBANITE +SUBURBANITES +SUBURBANIZATION +SUBURBANIZE +SUBURBANIZED +SUBURBANIZES +SUBURBANIZING +SUBURBANS +SUBURBED +SUBURBIA +SUBURBIAS +SUBURBS +SUBVARIETIES +SUBVARIETY +SUBVASSAL +SUBVASSALS +SUBVENE +SUBVENED +SUBVENES +SUBVENING +SUBVENTION +SUBVENTIONARY +SUBVENTIONS +SUBVERSION +SUBVERSIONARY +SUBVERSIONS +SUBVERSIVE +SUBVERSIVELY +SUBVERSIVENESS +SUBVERSIVES +SUBVERT +SUBVERTED +SUBVERTER +SUBVERTERS +SUBVERTING +SUBVERTS +SUBVICAR +SUBVICARS +SUBVIRAL +SUBVIRUS +SUBVIRUSES +SUBVISIBLE +SUBVISUAL +SUBVOCAL +SUBVOCALIZATION +SUBVOCALIZE +SUBVOCALIZED +SUBVOCALIZES +SUBVOCALIZING +SUBVOCALLY +SUBWAY +SUBWAYED +SUBWAYING +SUBWAYS +SUBWOOFER +SUBWOOFERS +SUBWORLD +SUBWORLDS +SUBWRITER +SUBWRITERS +SUBZERO +SUBZONE +SUBZONES +SUCCAH +SUCCAHS +SUCCEDANEA +SUCCEDANEOUS +SUCCEDANEUM +SUCCEDANEUMS +SUCCEDENT +SUCCEED +SUCCEEDED +SUCCEEDER +SUCCEEDERS +SUCCEEDING +SUCCEEDS +SUCCESS +SUCCESSES +SUCCESSFUL +SUCCESSFULLY +SUCCESSFULNESS +SUCCESSION +SUCCESSIONAL +SUCCESSIONALLY +SUCCESSIONS +SUCCESSIVE +SUCCESSIVELY +SUCCESSIVENESS +SUCCESSOR +SUCCESSORS +SUCCINATE +SUCCINATES +SUCCINCT +SUCCINCTER +SUCCINCTEST +SUCCINCTLY +SUCCINCTNESS +SUCCINCTNESSES +SUCCINIC +SUCCINYL +SUCCINYLCHOLINE +SUCCINYLS +SUCCOR +SUCCORED +SUCCORER +SUCCORERS +SUCCORIES +SUCCORING +SUCCORS +SUCCORY +SUCCOTASH +SUCCOTASHES +SUCCOTH +SUCCOUR +SUCCOURED +SUCCOURING +SUCCOURS +SUCCUBA +SUCCUBAE +SUCCUBAS +SUCCUBI +SUCCUBUS +SUCCUBUSES +SUCCULENCE +SUCCULENCES +SUCCULENT +SUCCULENTLY +SUCCULENTS +SUCCUMB +SUCCUMBED +SUCCUMBING +SUCCUMBS +SUCCUSS +SUCCUSSED +SUCCUSSES +SUCCUSSING +SUCH +SUCHLIKE +SUCHNESS +SUCHNESSES +SUCK +SUCKED +SUCKER +SUCKERED +SUCKERING +SUCKERS +SUCKFISH +SUCKFISHES +SUCKIER +SUCKIEST +SUCKING +SUCKLE +SUCKLED +SUCKLER +SUCKLERS +SUCKLES +SUCKLESS +SUCKLING +SUCKLINGS +SUCKS +SUCKY +SUCRALOSE +SUCRALOSES +SUCRASE +SUCRASES +SUCRE +SUCRES +SUCROSE +SUCROSES +SUCTION +SUCTIONAL +SUCTIONED +SUCTIONING +SUCTIONS +SUCTORIAL +SUCTORIAN +SUCTORIANS +SUDARIA +SUDARIES +SUDARIUM +SUDARY +SUDATION +SUDATIONS +SUDATORIA +SUDATORIES +SUDATORIUM +SUDATORIUMS +SUDATORY +SUDD +SUDDEN +SUDDENLY +SUDDENNESS +SUDDENNESSES +SUDDENS +SUDDS +SUDOR +SUDORAL +SUDORIFEROUS +SUDORIFIC +SUDORIFICS +SUDORS +SUDS +SUDSED +SUDSER +SUDSERS +SUDSES +SUDSIER +SUDSIEST +SUDSING +SUDSLESS +SUDSY +SUE +SUED +SUEDE +SUEDED +SUEDES +SUEDING +SUER +SUERS +SUES +SUET +SUETS +SUETY +SUFFARI +SUFFARIS +SUFFER +SUFFERABLE +SUFFERABLENESS +SUFFERABLY +SUFFERANCE +SUFFERANCES +SUFFERED +SUFFERER +SUFFERERS +SUFFERING +SUFFERINGS +SUFFERS +SUFFICE +SUFFICED +SUFFICER +SUFFICERS +SUFFICES +SUFFICIENCIES +SUFFICIENCY +SUFFICIENT +SUFFICIENTLY +SUFFICING +SUFFIX +SUFFIXAL +SUFFIXATION +SUFFIXATIONS +SUFFIXED +SUFFIXES +SUFFIXING +SUFFIXION +SUFFIXIONS +SUFFLATE +SUFFLATED +SUFFLATES +SUFFLATING +SUFFOCATE +SUFFOCATED +SUFFOCATES +SUFFOCATING +SUFFOCATINGLY +SUFFOCATION +SUFFOCATIONS +SUFFOCATIVE +SUFFRAGAN +SUFFRAGANS +SUFFRAGE +SUFFRAGES +SUFFRAGETTE +SUFFRAGETTES +SUFFRAGIST +SUFFRAGISTS +SUFFUSE +SUFFUSED +SUFFUSES +SUFFUSING +SUFFUSION +SUFFUSIONS +SUFFUSIVE +SUGAR +SUGARBERRIES +SUGARBERRY +SUGARBUSH +SUGARBUSHES +SUGARCANE +SUGARCANES +SUGARCOAT +SUGARCOATED +SUGARCOATING +SUGARCOATS +SUGARED +SUGARER +SUGARERS +SUGARHOUSE +SUGARHOUSES +SUGARIER +SUGARIEST +SUGARING +SUGARLESS +SUGARLIKE +SUGARLOAF +SUGARLOAVES +SUGARPLUM +SUGARPLUMS +SUGARS +SUGARY +SUGGEST +SUGGESTED +SUGGESTER +SUGGESTERS +SUGGESTIBILITY +SUGGESTIBLE +SUGGESTING +SUGGESTION +SUGGESTIONS +SUGGESTIVE +SUGGESTIVELY +SUGGESTIVENESS +SUGGESTS +SUGH +SUGHED +SUGHING +SUGHS +SUICIDAL +SUICIDALLY +SUICIDE +SUICIDED +SUICIDES +SUICIDING +SUING +SUINT +SUINTS +SUIT +SUITABILITIES +SUITABILITY +SUITABLE +SUITABLENESS +SUITABLENESSES +SUITABLY +SUITCASE +SUITCASES +SUITE +SUITED +SUITER +SUITERS +SUITES +SUITING +SUITINGS +SUITLIKE +SUITOR +SUITORS +SUITS +SUK +SUKIYAKI +SUKIYAKIS +SUKKAH +SUKKAHS +SUKKOT +SUKKOTH +SUKS +SULCAL +SULCATE +SULCATED +SULCATION +SULCATIONS +SULCI +SULCUS +SULDAN +SULDANS +SULFA +SULFADIAZINE +SULFADIAZINES +SULFANILAMIDE +SULFANILAMIDES +SULFAS +SULFATASE +SULFATASES +SULFATE +SULFATED +SULFATES +SULFATING +SULFATION +SULFATIONS +SULFHYDRYL +SULFHYDRYLS +SULFID +SULFIDE +SULFIDES +SULFIDS +SULFINPYRAZONE +SULFINPYRAZONES +SULFINYL +SULFINYLS +SULFITE +SULFITES +SULFITIC +SULFO +SULFONAMIDE +SULFONAMIDES +SULFONATE +SULFONATED +SULFONATES +SULFONATING +SULFONATION +SULFONATIONS +SULFONE +SULFONES +SULFONIC +SULFONIUM +SULFONIUMS +SULFONYL +SULFONYLS +SULFONYLUREA +SULFONYLUREAS +SULFOXIDE +SULFOXIDES +SULFUR +SULFURATE +SULFURATED +SULFURATES +SULFURATING +SULFURED +SULFURET +SULFURETED +SULFURETING +SULFURETS +SULFURETTED +SULFURETTING +SULFURIC +SULFURING +SULFURIZE +SULFURIZED +SULFURIZES +SULFURIZING +SULFUROUS +SULFUROUSLY +SULFUROUSNESS +SULFUROUSNESSES +SULFURS +SULFURY +SULFURYL +SULFURYLS +SULK +SULKED +SULKER +SULKERS +SULKIER +SULKIES +SULKIEST +SULKILY +SULKINESS +SULKINESSES +SULKING +SULKS +SULKY +SULLAGE +SULLAGES +SULLEN +SULLENER +SULLENEST +SULLENLY +SULLENNESS +SULLENNESSES +SULLIABLE +SULLIED +SULLIES +SULLY +SULLYING +SULPHA +SULPHAS +SULPHATE +SULPHATED +SULPHATES +SULPHATING +SULPHID +SULPHIDE +SULPHIDES +SULPHIDS +SULPHITE +SULPHITES +SULPHONE +SULPHONES +SULPHUR +SULPHURED +SULPHUREOUS +SULPHURING +SULPHURISE +SULPHURISED +SULPHURISES +SULPHURISING +SULPHUROUS +SULPHURS +SULPHURY +SULTAN +SULTANA +SULTANAS +SULTANATE +SULTANATES +SULTANESS +SULTANESSES +SULTANIC +SULTANS +SULTRIER +SULTRIEST +SULTRILY +SULTRINESS +SULTRINESSES +SULTRY +SULU +SULUS +SUM +SUMAC +SUMACH +SUMACHS +SUMACS +SUMLESS +SUMMA +SUMMABILITIES +SUMMABILITY +SUMMABLE +SUMMAE +SUMMAND +SUMMANDS +SUMMARIES +SUMMARILY +SUMMARISE +SUMMARISED +SUMMARISES +SUMMARISING +SUMMARIST +SUMMARISTS +SUMMARIZABLE +SUMMARIZATION +SUMMARIZATIONS +SUMMARIZE +SUMMARIZED +SUMMARIZER +SUMMARIZERS +SUMMARIZES +SUMMARIZING +SUMMARY +SUMMAS +SUMMATE +SUMMATED +SUMMATES +SUMMATING +SUMMATION +SUMMATIONAL +SUMMATIONS +SUMMATIVE +SUMMED +SUMMER +SUMMERED +SUMMERHOUSE +SUMMERHOUSES +SUMMERIER +SUMMERIEST +SUMMERING +SUMMERLIKE +SUMMERLONG +SUMMERLY +SUMMERS +SUMMERSAULT +SUMMERSAULTED +SUMMERSAULTING +SUMMERSAULTS +SUMMERSET +SUMMERSETS +SUMMERSETTED +SUMMERSETTING +SUMMERTIME +SUMMERTIMES +SUMMERWOOD +SUMMERWOODS +SUMMERY +SUMMING +SUMMIT +SUMMITAL +SUMMITED +SUMMITEER +SUMMITEERS +SUMMITING +SUMMITRIES +SUMMITRY +SUMMITS +SUMMON +SUMMONABLE +SUMMONED +SUMMONER +SUMMONERS +SUMMONING +SUMMONS +SUMMONSED +SUMMONSES +SUMMONSING +SUMO +SUMOIST +SUMOISTS +SUMOS +SUMP +SUMPS +SUMPTER +SUMPTERS +SUMPTUARY +SUMPTUOUS +SUMPTUOUSLY +SUMPTUOUSNESS +SUMPTUOUSNESSES +SUMPWEED +SUMPWEEDS +SUMS +SUN +SUNBACK +SUNBAKED +SUNBATH +SUNBATHE +SUNBATHED +SUNBATHER +SUNBATHERS +SUNBATHES +SUNBATHING +SUNBATHS +SUNBEAM +SUNBEAMS +SUNBEAMY +SUNBELT +SUNBELTS +SUNBIRD +SUNBIRDS +SUNBLOCK +SUNBLOCKS +SUNBONNET +SUNBONNETS +SUNBOW +SUNBOWS +SUNBURN +SUNBURNED +SUNBURNING +SUNBURNS +SUNBURNT +SUNBURST +SUNBURSTS +SUNCHOKE +SUNCHOKES +SUNDAE +SUNDAES +SUNDECK +SUNDECKS +SUNDER +SUNDERED +SUNDERER +SUNDERERS +SUNDERING +SUNDERS +SUNDEW +SUNDEWS +SUNDIAL +SUNDIALS +SUNDOG +SUNDOGS +SUNDOWN +SUNDOWNED +SUNDOWNER +SUNDOWNERS +SUNDOWNING +SUNDOWNS +SUNDRESS +SUNDRESSES +SUNDRIES +SUNDRILY +SUNDROPS +SUNDRY +SUNFAST +SUNFISH +SUNFISHES +SUNFLOWER +SUNFLOWERS +SUNG +SUNGLASS +SUNGLASSES +SUNGLOW +SUNGLOWS +SUNK +SUNKEN +SUNKET +SUNKETS +SUNLAMP +SUNLAMPS +SUNLAND +SUNLANDS +SUNLESS +SUNLIGHT +SUNLIGHTS +SUNLIKE +SUNLIT +SUNN +SUNNA +SUNNAH +SUNNAHS +SUNNAS +SUNNED +SUNNIER +SUNNIEST +SUNNILY +SUNNINESS +SUNNINESSES +SUNNING +SUNNS +SUNNY +SUNPORCH +SUNPORCHES +SUNPROOF +SUNRAY +SUNRAYS +SUNRISE +SUNRISES +SUNROOF +SUNROOFS +SUNROOM +SUNROOMS +SUNS +SUNSCALD +SUNSCALDS +SUNSCREEN +SUNSCREENING +SUNSCREENS +SUNSEEKER +SUNSEEKERS +SUNSET +SUNSETS +SUNSHADE +SUNSHADES +SUNSHINE +SUNSHINES +SUNSHINY +SUNSPOT +SUNSPOTS +SUNSTONE +SUNSTONES +SUNSTROKE +SUNSTROKES +SUNSTRUCK +SUNSUIT +SUNSUITS +SUNTAN +SUNTANNED +SUNTANNING +SUNTANS +SUNUP +SUNUPS +SUNWARD +SUNWARDS +SUNWISE +SUP +SUPE +SUPER +SUPERABLE +SUPERABLENESS +SUPERABLENESSES +SUPERABLY +SUPERABOUND +SUPERABOUNDED +SUPERABOUNDING +SUPERABOUNDS +SUPERABSORBENT +SUPERABSORBENTS +SUPERABUNDANCE +SUPERABUNDANCES +SUPERABUNDANT +SUPERABUNDANTLY +SUPERACHIEVER +SUPERACHIEVERS +SUPERACTIVITIES +SUPERACTIVITY +SUPERADD +SUPERADDED +SUPERADDING +SUPERADDITION +SUPERADDITIONS +SUPERADDS +SUPERAGENCIES +SUPERAGENCY +SUPERAGENT +SUPERAGENTS +SUPERALLOY +SUPERALLOYS +SUPERALTERN +SUPERALTERNS +SUPERAMBITIOUS +SUPERANNUATE +SUPERANNUATED +SUPERANNUATES +SUPERANNUATING +SUPERANNUATION +SUPERANNUATIONS +SUPERATHLETE +SUPERATHLETES +SUPERATOM +SUPERATOMS +SUPERB +SUPERBAD +SUPERBANK +SUPERBANKS +SUPERBER +SUPERBEST +SUPERBITCH +SUPERBITCHES +SUPERBLOCK +SUPERBLOCKS +SUPERBLY +SUPERBNESS +SUPERBNESSES +SUPERBOARD +SUPERBOARDS +SUPERBOMB +SUPERBOMBER +SUPERBOMBERS +SUPERBOMBS +SUPERBRIGHT +SUPERBUG +SUPERBUGS +SUPERBUREAUCRAT +SUPERCABINET +SUPERCABINETS +SUPERCALENDER +SUPERCALENDERED +SUPERCALENDERS +SUPERCAR +SUPERCARGO +SUPERCARGOES +SUPERCARGOS +SUPERCARRIER +SUPERCARRIERS +SUPERCARS +SUPERCAUTIOUS +SUPERCEDE +SUPERCEDED +SUPERCEDES +SUPERCEDING +SUPERCENTER +SUPERCENTERS +SUPERCHARGE +SUPERCHARGED +SUPERCHARGER +SUPERCHARGERS +SUPERCHARGES +SUPERCHARGING +SUPERCHIC +SUPERCHURCH +SUPERCHURCHES +SUPERCILIARY +SUPERCILIOUS +SUPERCILIOUSLY +SUPERCITIES +SUPERCITY +SUPERCIVILIZED +SUPERCLASS +SUPERCLASSES +SUPERCLEAN +SUPERCLUB +SUPERCLUBS +SUPERCLUSTER +SUPERCLUSTERS +SUPERCOIL +SUPERCOILED +SUPERCOILING +SUPERCOILS +SUPERCOLLIDER +SUPERCOLLIDERS +SUPERCOLOSSAL +SUPERCOMPUTER +SUPERCOMPUTERS +SUPERCONDUCT +SUPERCONDUCTED +SUPERCONDUCTING +SUPERCONDUCTIVE +SUPERCONDUCTOR +SUPERCONDUCTORS +SUPERCONDUCTS +SUPERCONFIDENT +SUPERCONTINENT +SUPERCONTINENTS +SUPERCONVENIENT +SUPERCOOL +SUPERCOOLED +SUPERCOOLING +SUPERCOOLS +SUPERCOP +SUPERCOPS +SUPERCRIMINAL +SUPERCRIMINALS +SUPERCRITICAL +SUPERCURRENT +SUPERCURRENTS +SUPERCUTE +SUPERDELUXE +SUPERDIPLOMAT +SUPERDIPLOMATS +SUPERED +SUPEREFFECTIVE +SUPEREFFICIENCY +SUPEREFFICIENT +SUPEREGO +SUPEREGOIST +SUPEREGOISTS +SUPEREGOS +SUPERELEVATE +SUPERELEVATED +SUPERELEVATES +SUPERELEVATING +SUPERELEVATION +SUPERELEVATIONS +SUPERELITE +SUPEREMINENCE +SUPEREMINENCES +SUPEREMINENT +SUPEREMINENTLY +SUPEREROGATION +SUPEREROGATIONS +SUPEREROGATORY +SUPERETTE +SUPERETTES +SUPEREXPENSIVE +SUPEREXPRESS +SUPEREXPRESSES +SUPERFAMILIES +SUPERFAMILY +SUPERFAN +SUPERFANS +SUPERFARM +SUPERFARMS +SUPERFAST +SUPERFATTED +SUPERFETATION +SUPERFETATIONS +SUPERFICIAL +SUPERFICIALITY +SUPERFICIALLY +SUPERFICIES +SUPERFINE +SUPERFIRM +SUPERFIRMS +SUPERFIX +SUPERFIXES +SUPERFLACK +SUPERFLACKS +SUPERFLUID +SUPERFLUIDITIES +SUPERFLUIDITY +SUPERFLUIDS +SUPERFLUITIES +SUPERFLUITY +SUPERFLUOUS +SUPERFLUOUSLY +SUPERFLUOUSNESS +SUPERFUND +SUPERFUNDS +SUPERGENE +SUPERGENES +SUPERGIANT +SUPERGIANTS +SUPERGLUE +SUPERGLUED +SUPERGLUES +SUPERGLUING +SUPERGOOD +SUPERGOVERNMENT +SUPERGRAPHICS +SUPERGRAVITIES +SUPERGRAVITY +SUPERGROUP +SUPERGROUPS +SUPERGROWTH +SUPERGROWTHS +SUPERHARDEN +SUPERHARDENED +SUPERHARDENING +SUPERHARDENS +SUPERHEAT +SUPERHEATED +SUPERHEATER +SUPERHEATERS +SUPERHEATING +SUPERHEATS +SUPERHEAVIES +SUPERHEAVY +SUPERHELICAL +SUPERHELICES +SUPERHELIX +SUPERHELIXES +SUPERHERO +SUPERHEROES +SUPERHEROINE +SUPERHEROINES +SUPERHETERODYNE +SUPERHIGHWAY +SUPERHIGHWAYS +SUPERHIT +SUPERHITS +SUPERHOT +SUPERHUMAN +SUPERHUMANITIES +SUPERHUMANITY +SUPERHUMANLY +SUPERHUMANNESS +SUPERHYPE +SUPERHYPED +SUPERHYPES +SUPERHYPING +SUPERIMPOSABLE +SUPERIMPOSE +SUPERIMPOSED +SUPERIMPOSES +SUPERIMPOSING +SUPERIMPOSITION +SUPERINCUMBENT +SUPERINDIVIDUAL +SUPERINDUCE +SUPERINDUCED +SUPERINDUCES +SUPERINDUCING +SUPERINDUCTION +SUPERINDUCTIONS +SUPERINFECT +SUPERINFECTED +SUPERINFECTING +SUPERINFECTION +SUPERINFECTIONS +SUPERINFECTS +SUPERING +SUPERINSULATED +SUPERINTEND +SUPERINTENDED +SUPERINTENDENCE +SUPERINTENDENCY +SUPERINTENDENT +SUPERINTENDENTS +SUPERINTENDING +SUPERINTENDS +SUPERINTENSITY +SUPERIOR +SUPERIORITIES +SUPERIORITY +SUPERIORLY +SUPERIORS +SUPERJACENT +SUPERJET +SUPERJETS +SUPERJOCK +SUPERJOCKS +SUPERJUMBO +SUPERJUMBOS +SUPERLAIN +SUPERLARGE +SUPERLATIVE +SUPERLATIVELY +SUPERLATIVENESS +SUPERLATIVES +SUPERLAWYER +SUPERLAWYERS +SUPERLAY +SUPERLIE +SUPERLIES +SUPERLIGHT +SUPERLINER +SUPERLINERS +SUPERLOBBYIST +SUPERLOBBYISTS +SUPERLONG +SUPERLOYALIST +SUPERLOYALISTS +SUPERLUNAR +SUPERLUNARY +SUPERLUXURIOUS +SUPERLUXURY +SUPERLYING +SUPERMACHO +SUPERMAJORITIES +SUPERMAJORITY +SUPERMALE +SUPERMALES +SUPERMAN +SUPERMARKET +SUPERMARKETS +SUPERMASCULINE +SUPERMASSIVE +SUPERMEN +SUPERMICRO +SUPERMICROS +SUPERMILITANT +SUPERMILITANTS +SUPERMIND +SUPERMINDS +SUPERMINI +SUPERMINIS +SUPERMINISTER +SUPERMINISTERS +SUPERMODEL +SUPERMODELS +SUPERMODERN +SUPERMOM +SUPERMOMS +SUPERNAL +SUPERNALLY +SUPERNATANT +SUPERNATANTS +SUPERNATE +SUPERNATES +SUPERNATION +SUPERNATIONAL +SUPERNATIONS +SUPERNATURAL +SUPERNATURALISM +SUPERNATURALIST +SUPERNATURALLY +SUPERNATURALS +SUPERNATURE +SUPERNATURES +SUPERNORMAL +SUPERNORMALITY +SUPERNORMALLY +SUPERNOVA +SUPERNOVAE +SUPERNOVAS +SUPERNUMERARIES +SUPERNUMERARY +SUPERNUTRITION +SUPERNUTRITIONS +SUPERORDER +SUPERORDERS +SUPERORDINATE +SUPERORGANIC +SUPERORGANISM +SUPERORGANISMS +SUPERORGASM +SUPERORGASMS +SUPEROVULATE +SUPEROVULATED +SUPEROVULATES +SUPEROVULATING +SUPEROVULATION +SUPEROVULATIONS +SUPEROXIDE +SUPEROXIDES +SUPERPARASITISM +SUPERPATRIOT +SUPERPATRIOTIC +SUPERPATRIOTISM +SUPERPATRIOTS +SUPERPERSON +SUPERPERSONAL +SUPERPERSONS +SUPERPHENOMENA +SUPERPHENOMENON +SUPERPHOSPHATE +SUPERPHOSPHATES +SUPERPHYSICAL +SUPERPIMP +SUPERPIMPS +SUPERPLANE +SUPERPLANES +SUPERPLASTIC +SUPERPLASTICITY +SUPERPLAYER +SUPERPLAYERS +SUPERPOLITE +SUPERPORT +SUPERPORTS +SUPERPOSABLE +SUPERPOSE +SUPERPOSED +SUPERPOSES +SUPERPOSING +SUPERPOSITION +SUPERPOSITIONS +SUPERPOWER +SUPERPOWERED +SUPERPOWERFUL +SUPERPOWERS +SUPERPREMIUM +SUPERPREMIUMS +SUPERPRO +SUPERPROFIT +SUPERPROFITS +SUPERPROS +SUPERQUALITY +SUPERRACE +SUPERRACES +SUPERREAL +SUPERREALISM +SUPERREALISMS +SUPERREGIONAL +SUPERREGIONALS +SUPERRICH +SUPERROAD +SUPERROADS +SUPERROMANTIC +SUPERS +SUPERSAFE +SUPERSALE +SUPERSALES +SUPERSALESMAN +SUPERSALESMEN +SUPERSATURATE +SUPERSATURATED +SUPERSATURATES +SUPERSATURATING +SUPERSATURATION +SUPERSAUR +SUPERSAURS +SUPERSCALE +SUPERSCHOOL +SUPERSCHOOLS +SUPERSCOUT +SUPERSCOUTS +SUPERSCRIBE +SUPERSCRIBED +SUPERSCRIBES +SUPERSCRIBING +SUPERSCRIPT +SUPERSCRIPTION +SUPERSCRIPTIONS +SUPERSCRIPTS +SUPERSECRECIES +SUPERSECRECY +SUPERSECRET +SUPERSEDE +SUPERSEDEAS +SUPERSEDED +SUPERSEDER +SUPERSEDERS +SUPERSEDES +SUPERSEDING +SUPERSEDURE +SUPERSEDURES +SUPERSELL +SUPERSELLER +SUPERSELLERS +SUPERSELLING +SUPERSELLS +SUPERSENSIBLE +SUPERSENSITIVE +SUPERSENSORY +SUPERSESSION +SUPERSESSIONS +SUPERSEX +SUPERSEXES +SUPERSEXUALITY +SUPERSHARP +SUPERSHOW +SUPERSHOWS +SUPERSINGER +SUPERSINGERS +SUPERSIZE +SUPERSIZED +SUPERSIZES +SUPERSIZING +SUPERSLEUTH +SUPERSLEUTHS +SUPERSLICK +SUPERSMART +SUPERSMOOTH +SUPERSOFT +SUPERSOLD +SUPERSONIC +SUPERSONICALLY +SUPERSONICS +SUPERSPECIAL +SUPERSPECIALIST +SUPERSPECIALS +SUPERSPECTACLE +SUPERSPECTACLES +SUPERSPIES +SUPERSPY +SUPERSTAR +SUPERSTARDOM +SUPERSTARDOMS +SUPERSTARS +SUPERSTATE +SUPERSTATES +SUPERSTATION +SUPERSTATIONS +SUPERSTIMULATE +SUPERSTIMULATED +SUPERSTIMULATES +SUPERSTITION +SUPERSTITIONS +SUPERSTITIOUS +SUPERSTITIOUSLY +SUPERSTOCK +SUPERSTOCKS +SUPERSTORE +SUPERSTORES +SUPERSTRATA +SUPERSTRATUM +SUPERSTRENGTH +SUPERSTRENGTHS +SUPERSTRIKE +SUPERSTRIKES +SUPERSTRING +SUPERSTRINGS +SUPERSTRONG +SUPERSTRUCTURAL +SUPERSTRUCTURE +SUPERSTRUCTURES +SUPERSTUD +SUPERSTUDS +SUPERSUBTLE +SUPERSUBTLETIES +SUPERSUBTLETY +SUPERSURGEON +SUPERSURGEONS +SUPERSWEET +SUPERSYMMETRIC +SUPERSYMMETRIES +SUPERSYMMETRY +SUPERSYSTEM +SUPERSYSTEMS +SUPERTANKER +SUPERTANKERS +SUPERTAX +SUPERTAXES +SUPERTERRIFIC +SUPERTHICK +SUPERTHIN +SUPERTHRILLER +SUPERTHRILLERS +SUPERTIGHT +SUPERTONIC +SUPERTONICS +SUPERVENE +SUPERVENED +SUPERVENES +SUPERVENIENT +SUPERVENING +SUPERVENTION +SUPERVENTIONS +SUPERVIRILE +SUPERVIRTUOSI +SUPERVIRTUOSO +SUPERVIRTUOSOS +SUPERVISE +SUPERVISED +SUPERVISES +SUPERVISING +SUPERVISION +SUPERVISIONS +SUPERVISOR +SUPERVISORS +SUPERVISORY +SUPERWAVE +SUPERWAVES +SUPERWEAPON +SUPERWEAPONS +SUPERWIDE +SUPERWIDES +SUPERWIFE +SUPERWIVES +SUPERWOMAN +SUPERWOMEN +SUPES +SUPINATE +SUPINATED +SUPINATES +SUPINATING +SUPINATION +SUPINATIONS +SUPINATOR +SUPINATORS +SUPINE +SUPINELY +SUPINENESS +SUPINENESSES +SUPINES +SUPPED +SUPPER +SUPPERS +SUPPING +SUPPLANT +SUPPLANTATION +SUPPLANTATIONS +SUPPLANTED +SUPPLANTER +SUPPLANTERS +SUPPLANTING +SUPPLANTS +SUPPLE +SUPPLED +SUPPLEJACK +SUPPLEJACKS +SUPPLELY +SUPPLEMENT +SUPPLEMENTAL +SUPPLEMENTALS +SUPPLEMENTARY +SUPPLEMENTATION +SUPPLEMENTED +SUPPLEMENTER +SUPPLEMENTERS +SUPPLEMENTING +SUPPLEMENTS +SUPPLENESS +SUPPLENESSES +SUPPLER +SUPPLES +SUPPLEST +SUPPLETION +SUPPLETIONS +SUPPLETIVE +SUPPLETORY +SUPPLIANCE +SUPPLIANCES +SUPPLIANT +SUPPLIANTLY +SUPPLIANTS +SUPPLICANT +SUPPLICANTS +SUPPLICATE +SUPPLICATED +SUPPLICATES +SUPPLICATING +SUPPLICATION +SUPPLICATIONS +SUPPLICATORY +SUPPLIED +SUPPLIER +SUPPLIERS +SUPPLIES +SUPPLING +SUPPLY +SUPPLYING +SUPPORT +SUPPORTABILITY +SUPPORTABLE +SUPPORTED +SUPPORTER +SUPPORTERS +SUPPORTING +SUPPORTIVE +SUPPORTIVENESS +SUPPORTS +SUPPOSABLE +SUPPOSABLY +SUPPOSAL +SUPPOSALS +SUPPOSE +SUPPOSED +SUPPOSEDLY +SUPPOSER +SUPPOSERS +SUPPOSES +SUPPOSING +SUPPOSITION +SUPPOSITIONAL +SUPPOSITIONS +SUPPOSITIOUS +SUPPOSITITIOUS +SUPPOSITORIES +SUPPOSITORY +SUPPRESS +SUPPRESSANT +SUPPRESSANTS +SUPPRESSED +SUPPRESSES +SUPPRESSIBILITY +SUPPRESSIBLE +SUPPRESSING +SUPPRESSION +SUPPRESSIONS +SUPPRESSIVE +SUPPRESSIVENESS +SUPPRESSOR +SUPPRESSORS +SUPPURATE +SUPPURATED +SUPPURATES +SUPPURATING +SUPPURATION +SUPPURATIONS +SUPPURATIVE +SUPRA +SUPRALIMINAL +SUPRAMOLECULAR +SUPRANATIONAL +SUPRAOPTIC +SUPRAORBITAL +SUPRARATIONAL +SUPRARENAL +SUPRARENALS +SUPRASEGMENTAL +SUPRAVITAL +SUPRAVITALLY +SUPREMACIES +SUPREMACIST +SUPREMACISTS +SUPREMACY +SUPREMATISM +SUPREMATISMS +SUPREMATIST +SUPREMATISTS +SUPREME +SUPREMELY +SUPREMENESS +SUPREMENESSES +SUPREMER +SUPREMES +SUPREMEST +SUPREMO +SUPREMOS +SUPS +SUQ +SUQS +SURA +SURAH +SURAHS +SURAL +SURAS +SURBASE +SURBASED +SURBASES +SURCEASE +SURCEASED +SURCEASES +SURCEASING +SURCHARGE +SURCHARGED +SURCHARGES +SURCHARGING +SURCINGLE +SURCINGLED +SURCINGLES +SURCINGLING +SURCOAT +SURCOATS +SURCULOSE +SURD +SURDS +SURE +SUREFIRE +SUREFOOTED +SUREFOOTEDLY +SUREFOOTEDNESS +SURELY +SURENESS +SURENESSES +SURER +SUREST +SURETIES +SURETY +SURETYSHIP +SURETYSHIPS +SURF +SURFABLE +SURFACE +SURFACED +SURFACER +SURFACERS +SURFACES +SURFACING +SURFACINGS +SURFACTANT +SURFACTANTS +SURFBIRD +SURFBIRDS +SURFBOARD +SURFBOARDED +SURFBOARDER +SURFBOARDERS +SURFBOARDING +SURFBOARDS +SURFBOAT +SURFBOATS +SURFED +SURFEIT +SURFEITED +SURFEITER +SURFEITERS +SURFEITING +SURFEITS +SURFER +SURFERS +SURFFISH +SURFFISHES +SURFICIAL +SURFIER +SURFIEST +SURFING +SURFINGS +SURFLIKE +SURFMAN +SURFMEN +SURFPERCH +SURFPERCHES +SURFS +SURFSIDE +SURFY +SURGE +SURGED +SURGEON +SURGEONFISH +SURGEONFISHES +SURGEONS +SURGER +SURGERIES +SURGERS +SURGERY +SURGES +SURGICAL +SURGICALLY +SURGING +SURGY +SURICATE +SURICATES +SURIMI +SURIMIS +SURJECTION +SURJECTIONS +SURJECTIVE +SURLIER +SURLIEST +SURLILY +SURLINESS +SURLINESSES +SURLY +SURMISE +SURMISED +SURMISER +SURMISERS +SURMISES +SURMISING +SURMOUNT +SURMOUNTABLE +SURMOUNTED +SURMOUNTING +SURMOUNTS +SURMULLET +SURMULLETS +SURNAME +SURNAMED +SURNAMER +SURNAMERS +SURNAMES +SURNAMING +SURPASS +SURPASSABLE +SURPASSED +SURPASSER +SURPASSERS +SURPASSES +SURPASSING +SURPASSINGLY +SURPLICE +SURPLICED +SURPLICES +SURPLUS +SURPLUSAGE +SURPLUSAGES +SURPLUSED +SURPLUSES +SURPLUSING +SURPLUSSED +SURPLUSSES +SURPLUSSING +SURPRINT +SURPRINTED +SURPRINTING +SURPRINTS +SURPRISAL +SURPRISALS +SURPRISE +SURPRISED +SURPRISER +SURPRISERS +SURPRISES +SURPRISING +SURPRISINGLY +SURPRIZE +SURPRIZED +SURPRIZES +SURPRIZING +SURRA +SURRAS +SURREAL +SURREALISM +SURREALISMS +SURREALIST +SURREALISTIC +SURREALISTS +SURREALLY +SURREBUTTER +SURREBUTTERS +SURREJOINDER +SURREJOINDERS +SURRENDER +SURRENDERED +SURRENDERING +SURRENDERS +SURREPTITIOUS +SURREPTITIOUSLY +SURREY +SURREYS +SURROGACIES +SURROGACY +SURROGATE +SURROGATED +SURROGATES +SURROGATING +SURROUND +SURROUNDED +SURROUNDING +SURROUNDINGS +SURROUNDS +SURROYAL +SURROYALS +SURTAX +SURTAXED +SURTAXES +SURTAXING +SURTITLE +SURTITLES +SURTOUT +SURTOUTS +SURVEIL +SURVEILLANCE +SURVEILLANCES +SURVEILLANT +SURVEILLANTS +SURVEILLED +SURVEILLING +SURVEILS +SURVEY +SURVEYED +SURVEYING +SURVEYINGS +SURVEYOR +SURVEYORS +SURVEYS +SURVIVABILITIES +SURVIVABILITY +SURVIVABLE +SURVIVAL +SURVIVALIST +SURVIVALISTS +SURVIVALS +SURVIVANCE +SURVIVANCES +SURVIVE +SURVIVED +SURVIVER +SURVIVERS +SURVIVES +SURVIVING +SURVIVOR +SURVIVORS +SURVIVORSHIP +SURVIVORSHIPS +SUSCEPTIBILITY +SUSCEPTIBLE +SUSCEPTIBLENESS +SUSCEPTIBLY +SUSCEPTIVE +SUSCEPTIVENESS +SUSCEPTIVITIES +SUSCEPTIVITY +SUSHI +SUSHIS +SUSLIK +SUSLIKS +SUSPECT +SUSPECTED +SUSPECTING +SUSPECTS +SUSPEND +SUSPENDED +SUSPENDER +SUSPENDERED +SUSPENDERS +SUSPENDING +SUSPENDS +SUSPENSE +SUSPENSEFUL +SUSPENSEFULLY +SUSPENSEFULNESS +SUSPENSELESS +SUSPENSER +SUSPENSERS +SUSPENSES +SUSPENSION +SUSPENSIONS +SUSPENSIVE +SUSPENSIVELY +SUSPENSOR +SUSPENSORIES +SUSPENSORS +SUSPENSORY +SUSPICION +SUSPICIONED +SUSPICIONING +SUSPICIONS +SUSPICIOUS +SUSPICIOUSLY +SUSPICIOUSNESS +SUSPIRATION +SUSPIRATIONS +SUSPIRE +SUSPIRED +SUSPIRES +SUSPIRING +SUSS +SUSSED +SUSSES +SUSSING +SUSTAIN +SUSTAINABILITY +SUSTAINABLE +SUSTAINED +SUSTAINEDLY +SUSTAINER +SUSTAINERS +SUSTAINING +SUSTAINS +SUSTENANCE +SUSTENANCES +SUSTENTATION +SUSTENTATIONS +SUSTENTATIVE +SUSURRANT +SUSURRATE +SUSURRATED +SUSURRATES +SUSURRATING +SUSURRATION +SUSURRATIONS +SUSURROUS +SUSURRUS +SUSURRUSES +SUTLER +SUTLERS +SUTRA +SUTRAS +SUTTA +SUTTAS +SUTTEE +SUTTEES +SUTURAL +SUTURALLY +SUTURE +SUTURED +SUTURES +SUTURING +SUZERAIN +SUZERAINS +SUZERAINTIES +SUZERAINTY +SVARAJ +SVARAJES +SVEDBERG +SVEDBERGS +SVELTE +SVELTELY +SVELTENESS +SVELTENESSES +SVELTER +SVELTEST +SWAB +SWABBED +SWABBER +SWABBERS +SWABBIE +SWABBIES +SWABBING +SWABBY +SWABS +SWACKED +SWADDLE +SWADDLED +SWADDLES +SWADDLING +SWAG +SWAGE +SWAGED +SWAGER +SWAGERS +SWAGES +SWAGGED +SWAGGER +SWAGGERED +SWAGGERER +SWAGGERERS +SWAGGERING +SWAGGERINGLY +SWAGGERS +SWAGGIE +SWAGGIES +SWAGGING +SWAGING +SWAGMAN +SWAGMEN +SWAGS +SWAIL +SWAILS +SWAIN +SWAINISH +SWAINISHNESS +SWAINISHNESSES +SWAINS +SWALE +SWALES +SWALLOW +SWALLOWABLE +SWALLOWED +SWALLOWER +SWALLOWERS +SWALLOWING +SWALLOWS +SWALLOWTAIL +SWALLOWTAILS +SWAM +SWAMI +SWAMIES +SWAMIS +SWAMP +SWAMPED +SWAMPER +SWAMPERS +SWAMPIER +SWAMPIEST +SWAMPINESS +SWAMPINESSES +SWAMPING +SWAMPISH +SWAMPLAND +SWAMPLANDS +SWAMPS +SWAMPY +SWAMY +SWAN +SWANG +SWANHERD +SWANHERDS +SWANK +SWANKED +SWANKER +SWANKEST +SWANKIER +SWANKIEST +SWANKILY +SWANKINESS +SWANKINESSES +SWANKING +SWANKS +SWANKY +SWANLIKE +SWANNED +SWANNERIES +SWANNERY +SWANNING +SWANNY +SWANPAN +SWANPANS +SWANS +SWANSDOWN +SWANSDOWNS +SWANSKIN +SWANSKINS +SWAP +SWAPPED +SWAPPER +SWAPPERS +SWAPPING +SWAPS +SWARAJ +SWARAJES +SWARAJISM +SWARAJISMS +SWARAJIST +SWARAJISTS +SWARD +SWARDED +SWARDING +SWARDS +SWARE +SWARF +SWARFS +SWARM +SWARMED +SWARMER +SWARMERS +SWARMING +SWARMS +SWART +SWARTH +SWARTHIER +SWARTHIEST +SWARTHILY +SWARTHINESS +SWARTHINESSES +SWARTHS +SWARTHY +SWARTNESS +SWARTNESSES +SWARTY +SWASH +SWASHBUCKLE +SWASHBUCKLED +SWASHBUCKLER +SWASHBUCKLERS +SWASHBUCKLES +SWASHBUCKLING +SWASHED +SWASHER +SWASHERS +SWASHES +SWASHING +SWASTICA +SWASTICAS +SWASTIKA +SWASTIKAS +SWAT +SWATCH +SWATCHES +SWATH +SWATHE +SWATHED +SWATHER +SWATHERS +SWATHES +SWATHING +SWATHS +SWATS +SWATTED +SWATTER +SWATTERS +SWATTING +SWAY +SWAYABLE +SWAYBACK +SWAYBACKED +SWAYBACKS +SWAYED +SWAYER +SWAYERS +SWAYFUL +SWAYING +SWAYS +SWEAR +SWEARER +SWEARERS +SWEARING +SWEARS +SWEARWORD +SWEARWORDS +SWEAT +SWEATBAND +SWEATBANDS +SWEATBOX +SWEATBOXES +SWEATED +SWEATER +SWEATERDRESS +SWEATERDRESSES +SWEATERS +SWEATIER +SWEATIEST +SWEATILY +SWEATINESS +SWEATINESSES +SWEATING +SWEATPANTS +SWEATS +SWEATSHIRT +SWEATSHIRTS +SWEATSHOP +SWEATSHOPS +SWEATSUIT +SWEATSUITS +SWEATY +SWEDE +SWEDES +SWEENEY +SWEENEYS +SWEENIES +SWEENY +SWEEP +SWEEPBACK +SWEEPBACKS +SWEEPER +SWEEPERS +SWEEPIER +SWEEPIEST +SWEEPING +SWEEPINGLY +SWEEPINGNESS +SWEEPINGNESSES +SWEEPINGS +SWEEPS +SWEEPSTAKES +SWEEPY +SWEER +SWEET +SWEETBREAD +SWEETBREADS +SWEETBRIAR +SWEETBRIARS +SWEETBRIER +SWEETBRIERS +SWEETEN +SWEETENED +SWEETENER +SWEETENERS +SWEETENING +SWEETENINGS +SWEETENS +SWEETER +SWEETEST +SWEETHEART +SWEETHEARTS +SWEETIE +SWEETIES +SWEETING +SWEETINGS +SWEETISH +SWEETISHLY +SWEETLY +SWEETMEAT +SWEETMEATS +SWEETNESS +SWEETNESSES +SWEETS +SWEETSHOP +SWEETSHOPS +SWEETSOP +SWEETSOPS +SWELL +SWELLED +SWELLER +SWELLEST +SWELLFISH +SWELLFISHES +SWELLHEAD +SWELLHEADED +SWELLHEADEDNESS +SWELLHEADS +SWELLING +SWELLINGS +SWELLS +SWELTER +SWELTERED +SWELTERING +SWELTERINGLY +SWELTERS +SWELTRIER +SWELTRIEST +SWELTRY +SWEPT +SWEPTBACK +SWEPTWING +SWEPTWINGS +SWERVE +SWERVED +SWERVER +SWERVERS +SWERVES +SWERVING +SWEVEN +SWEVENS +SWIDDEN +SWIDDENS +SWIFT +SWIFTER +SWIFTERS +SWIFTEST +SWIFTLET +SWIFTLETS +SWIFTLY +SWIFTNESS +SWIFTNESSES +SWIFTS +SWIG +SWIGGED +SWIGGER +SWIGGERS +SWIGGING +SWIGS +SWILL +SWILLED +SWILLER +SWILLERS +SWILLING +SWILLS +SWIM +SWIMMABLE +SWIMMER +SWIMMERET +SWIMMERETS +SWIMMERS +SWIMMIER +SWIMMIEST +SWIMMILY +SWIMMING +SWIMMINGLY +SWIMMINGS +SWIMMY +SWIMS +SWIMSUIT +SWIMSUITS +SWIMWEAR +SWINDLE +SWINDLED +SWINDLER +SWINDLERS +SWINDLES +SWINDLING +SWINE +SWINEHERD +SWINEHERDS +SWINEPOX +SWINEPOXES +SWING +SWINGBY +SWINGBYS +SWINGE +SWINGED +SWINGEING +SWINGER +SWINGERS +SWINGES +SWINGIER +SWINGIEST +SWINGING +SWINGINGEST +SWINGINGLY +SWINGINGS +SWINGLE +SWINGLED +SWINGLES +SWINGLETREE +SWINGLETREES +SWINGLING +SWINGMAN +SWINGMEN +SWINGS +SWINGY +SWINISH +SWINISHLY +SWINISHNESS +SWINISHNESSES +SWINK +SWINKED +SWINKING +SWINKS +SWINNEY +SWINNEYS +SWIPE +SWIPED +SWIPES +SWIPING +SWIPLE +SWIPLES +SWIPPLE +SWIPPLES +SWIRL +SWIRLED +SWIRLIER +SWIRLIEST +SWIRLING +SWIRLINGLY +SWIRLS +SWIRLY +SWISH +SWISHED +SWISHER +SWISHERS +SWISHES +SWISHIER +SWISHIEST +SWISHING +SWISHINGLY +SWISHY +SWISS +SWISSES +SWITCH +SWITCHABLE +SWITCHBACK +SWITCHBACKED +SWITCHBACKING +SWITCHBACKS +SWITCHBLADE +SWITCHBLADES +SWITCHBOARD +SWITCHBOARDS +SWITCHED +SWITCHER +SWITCHEROO +SWITCHEROOS +SWITCHERS +SWITCHES +SWITCHGRASS +SWITCHGRASSES +SWITCHING +SWITCHMAN +SWITCHMEN +SWITCHYARD +SWITCHYARDS +SWITH +SWITHE +SWITHER +SWITHERED +SWITHERING +SWITHERS +SWITHLY +SWIVE +SWIVED +SWIVEL +SWIVELED +SWIVELING +SWIVELLED +SWIVELLING +SWIVELS +SWIVES +SWIVET +SWIVETS +SWIVING +SWIZZLE +SWIZZLED +SWIZZLER +SWIZZLERS +SWIZZLES +SWIZZLING +SWOB +SWOBBED +SWOBBER +SWOBBERS +SWOBBING +SWOBS +SWOLLEN +SWOON +SWOONED +SWOONER +SWOONERS +SWOONIER +SWOONIEST +SWOONING +SWOONINGLY +SWOONS +SWOONY +SWOOP +SWOOPED +SWOOPER +SWOOPERS +SWOOPIER +SWOOPIEST +SWOOPING +SWOOPS +SWOOPSTAKE +SWOOPY +SWOOSH +SWOOSHED +SWOOSHES +SWOOSHING +SWOP +SWOPPED +SWOPPING +SWOPS +SWORD +SWORDFISH +SWORDFISHES +SWORDLIKE +SWORDMAN +SWORDMEN +SWORDPLAY +SWORDPLAYER +SWORDPLAYERS +SWORDPLAYS +SWORDS +SWORDSMAN +SWORDSMANSHIP +SWORDSMANSHIPS +SWORDSMEN +SWORDTAIL +SWORDTAILS +SWORE +SWORN +SWOT +SWOTS +SWOTTED +SWOTTER +SWOTTERS +SWOTTING +SWOUN +SWOUND +SWOUNDED +SWOUNDING +SWOUNDS +SWOUNED +SWOUNING +SWOUNS +SWUM +SWUNG +SYBARITE +SYBARITES +SYBARITIC +SYBARITICALLY +SYBARITISM +SYBARITISMS +SYBO +SYBOES +SYCAMINE +SYCAMINES +SYCAMORE +SYCAMORES +SYCE +SYCEE +SYCEES +SYCES +SYCOMORE +SYCOMORES +SYCONIA +SYCONIUM +SYCOPHANCIES +SYCOPHANCY +SYCOPHANT +SYCOPHANTIC +SYCOPHANTICALLY +SYCOPHANTISH +SYCOPHANTISHLY +SYCOPHANTISM +SYCOPHANTISMS +SYCOPHANTLY +SYCOPHANTS +SYCOSES +SYCOSIS +SYENITE +SYENITES +SYENITIC +SYKE +SYKES +SYLI +SYLIS +SYLLABARIES +SYLLABARY +SYLLABI +SYLLABIC +SYLLABICALLY +SYLLABICATE +SYLLABICATED +SYLLABICATES +SYLLABICATING +SYLLABICATION +SYLLABICATIONS +SYLLABICITIES +SYLLABICITY +SYLLABICS +SYLLABIFICATION +SYLLABIFIED +SYLLABIFIES +SYLLABIFY +SYLLABIFYING +SYLLABISM +SYLLABISMS +SYLLABIZE +SYLLABIZED +SYLLABIZES +SYLLABIZING +SYLLABLE +SYLLABLED +SYLLABLES +SYLLABLING +SYLLABUB +SYLLABUBS +SYLLABUS +SYLLABUSES +SYLLEPSES +SYLLEPSIS +SYLLEPTIC +SYLLOGISM +SYLLOGISMS +SYLLOGIST +SYLLOGISTIC +SYLLOGISTICALLY +SYLLOGISTS +SYLLOGIZE +SYLLOGIZED +SYLLOGIZES +SYLLOGIZING +SYLPH +SYLPHIC +SYLPHID +SYLPHIDS +SYLPHISH +SYLPHLIKE +SYLPHS +SYLPHY +SYLVA +SYLVAE +SYLVAN +SYLVANITE +SYLVANITES +SYLVANS +SYLVAS +SYLVATIC +SYLVICULTURE +SYLVICULTURES +SYLVIN +SYLVINE +SYLVINES +SYLVINITE +SYLVINITES +SYLVINS +SYLVITE +SYLVITES +SYMBION +SYMBIONS +SYMBIONT +SYMBIONTS +SYMBIOSES +SYMBIOSIS +SYMBIOT +SYMBIOTE +SYMBIOTES +SYMBIOTIC +SYMBIOTICALLY +SYMBIOTS +SYMBOL +SYMBOLED +SYMBOLIC +SYMBOLICAL +SYMBOLICALLY +SYMBOLING +SYMBOLISE +SYMBOLISED +SYMBOLISES +SYMBOLISING +SYMBOLISM +SYMBOLISMS +SYMBOLIST +SYMBOLISTIC +SYMBOLISTS +SYMBOLIZATION +SYMBOLIZATIONS +SYMBOLIZE +SYMBOLIZED +SYMBOLIZER +SYMBOLIZERS +SYMBOLIZES +SYMBOLIZING +SYMBOLLED +SYMBOLLING +SYMBOLOGIES +SYMBOLOGY +SYMBOLS +SYMMETALLISM +SYMMETALLISMS +SYMMETRIC +SYMMETRICAL +SYMMETRICALLY +SYMMETRICALNESS +SYMMETRIES +SYMMETRIZATION +SYMMETRIZATIONS +SYMMETRIZE +SYMMETRIZED +SYMMETRIZES +SYMMETRIZING +SYMMETRY +SYMPATHECTOMIES +SYMPATHECTOMY +SYMPATHETIC +SYMPATHETICALLY +SYMPATHETICS +SYMPATHIES +SYMPATHIN +SYMPATHINS +SYMPATHISE +SYMPATHISED +SYMPATHISES +SYMPATHISING +SYMPATHIZE +SYMPATHIZED +SYMPATHIZER +SYMPATHIZERS +SYMPATHIZES +SYMPATHIZING +SYMPATHOLYTIC +SYMPATHOLYTICS +SYMPATHOMIMETIC +SYMPATHY +SYMPATICO +SYMPATRIC +SYMPATRICALLY +SYMPATRIES +SYMPATRY +SYMPETALIES +SYMPETALOUS +SYMPETALY +SYMPHONIC +SYMPHONICALLY +SYMPHONIES +SYMPHONIOUS +SYMPHONIOUSLY +SYMPHONIST +SYMPHONISTS +SYMPHONY +SYMPHYSEAL +SYMPHYSES +SYMPHYSIAL +SYMPHYSIS +SYMPODIA +SYMPODIAL +SYMPODIUM +SYMPOSIA +SYMPOSIAC +SYMPOSIACS +SYMPOSIARCH +SYMPOSIARCHS +SYMPOSIAST +SYMPOSIASTS +SYMPOSIUM +SYMPOSIUMS +SYMPTOM +SYMPTOMATIC +SYMPTOMATICALLY +SYMPTOMATOLOGIC +SYMPTOMATOLOGY +SYMPTOMLESS +SYMPTOMS +SYN +SYNAERESES +SYNAERESIS +SYNAESTHESES +SYNAESTHESIA +SYNAESTHESIAS +SYNAESTHESIS +SYNAGOG +SYNAGOGAL +SYNAGOGS +SYNAGOGUE +SYNAGOGUES +SYNALEPHA +SYNALEPHAS +SYNALOEPHA +SYNALOEPHAS +SYNANON +SYNANONS +SYNAPSE +SYNAPSED +SYNAPSES +SYNAPSID +SYNAPSIDS +SYNAPSING +SYNAPSIS +SYNAPTIC +SYNAPTICALLY +SYNAPTOSOMAL +SYNAPTOSOME +SYNAPTOSOMES +SYNARTHRODIAL +SYNARTHROSES +SYNARTHROSIS +SYNC +SYNCARP +SYNCARPIES +SYNCARPOUS +SYNCARPS +SYNCARPY +SYNCED +SYNCH +SYNCHED +SYNCHING +SYNCHRO +SYNCHROMESH +SYNCHROMESHES +SYNCHRONAL +SYNCHRONEITIES +SYNCHRONEITY +SYNCHRONIC +SYNCHRONICAL +SYNCHRONICALLY +SYNCHRONICITIES +SYNCHRONICITY +SYNCHRONIES +SYNCHRONISATION +SYNCHRONISE +SYNCHRONISED +SYNCHRONISES +SYNCHRONISING +SYNCHRONISM +SYNCHRONISMS +SYNCHRONISTIC +SYNCHRONIZATION +SYNCHRONIZE +SYNCHRONIZED +SYNCHRONIZER +SYNCHRONIZERS +SYNCHRONIZES +SYNCHRONIZING +SYNCHRONOUS +SYNCHRONOUSLY +SYNCHRONOUSNESS +SYNCHRONY +SYNCHROS +SYNCHROSCOPE +SYNCHROSCOPES +SYNCHROTRON +SYNCHROTRONS +SYNCHS +SYNCING +SYNCLINAL +SYNCLINE +SYNCLINES +SYNCOM +SYNCOMS +SYNCOPAL +SYNCOPATE +SYNCOPATED +SYNCOPATES +SYNCOPATING +SYNCOPATION +SYNCOPATIONS +SYNCOPATIVE +SYNCOPATOR +SYNCOPATORS +SYNCOPE +SYNCOPES +SYNCOPIC +SYNCRETIC +SYNCRETISE +SYNCRETISED +SYNCRETISES +SYNCRETISING +SYNCRETISM +SYNCRETISMS +SYNCRETIST +SYNCRETISTIC +SYNCRETISTS +SYNCRETIZE +SYNCRETIZED +SYNCRETIZES +SYNCRETIZING +SYNCS +SYNCYTIA +SYNCYTIAL +SYNCYTIUM +SYNDACTYL +SYNDACTYLIES +SYNDACTYLISM +SYNDACTYLISMS +SYNDACTYLS +SYNDACTYLY +SYNDESES +SYNDESIS +SYNDESISES +SYNDESMOSES +SYNDESMOSIS +SYNDET +SYNDETIC +SYNDETICALLY +SYNDETS +SYNDIC +SYNDICAL +SYNDICALISM +SYNDICALISMS +SYNDICALIST +SYNDICALISTS +SYNDICATE +SYNDICATED +SYNDICATES +SYNDICATING +SYNDICATION +SYNDICATIONS +SYNDICATOR +SYNDICATORS +SYNDICS +SYNDROME +SYNDROMES +SYNDROMIC +SYNE +SYNECDOCHE +SYNECDOCHES +SYNECDOCHIC +SYNECDOCHICAL +SYNECDOCHICALLY +SYNECOLOGICAL +SYNECOLOGIES +SYNECOLOGY +SYNECTIC +SYNERESES +SYNERESIS +SYNERGETIC +SYNERGIA +SYNERGIAS +SYNERGIC +SYNERGICALLY +SYNERGID +SYNERGIDS +SYNERGIES +SYNERGISM +SYNERGISMS +SYNERGIST +SYNERGISTIC +SYNERGISTICALLY +SYNERGISTS +SYNERGY +SYNESIS +SYNESISES +SYNESTHESIA +SYNESTHESIAS +SYNESTHETIC +SYNFUEL +SYNFUELS +SYNGAMIC +SYNGAMIES +SYNGAMOUS +SYNGAMY +SYNGAS +SYNGASES +SYNGASSES +SYNGENEIC +SYNGENIC +SYNIZESES +SYNIZESIS +SYNKARYA +SYNKARYON +SYNKARYONS +SYNOD +SYNODAL +SYNODIC +SYNODICAL +SYNODS +SYNOICOUS +SYNONYM +SYNONYME +SYNONYMES +SYNONYMIC +SYNONYMICAL +SYNONYMIES +SYNONYMIST +SYNONYMISTS +SYNONYMITIES +SYNONYMITY +SYNONYMIZE +SYNONYMIZED +SYNONYMIZES +SYNONYMIZING +SYNONYMOUS +SYNONYMOUSLY +SYNONYMS +SYNONYMY +SYNOPSES +SYNOPSIS +SYNOPSIZE +SYNOPSIZED +SYNOPSIZES +SYNOPSIZING +SYNOPTIC +SYNOPTICAL +SYNOPTICALLY +SYNOSTOSES +SYNOSTOSIS +SYNOVIA +SYNOVIAL +SYNOVIAS +SYNOVITIS +SYNOVITISES +SYNTACTIC +SYNTACTICAL +SYNTACTICALLY +SYNTACTICS +SYNTAGM +SYNTAGMA +SYNTAGMAS +SYNTAGMATA +SYNTAGMATIC +SYNTAGMS +SYNTAX +SYNTAXES +SYNTH +SYNTHESES +SYNTHESIS +SYNTHESIST +SYNTHESISTS +SYNTHESIZE +SYNTHESIZED +SYNTHESIZER +SYNTHESIZERS +SYNTHESIZES +SYNTHESIZING +SYNTHETASE +SYNTHETASES +SYNTHETIC +SYNTHETICALLY +SYNTHETICS +SYNTHPOP +SYNTHPOPS +SYNTHS +SYNTONIC +SYNTONIES +SYNTONY +SYNURA +SYNURAE +SYPH +SYPHER +SYPHERED +SYPHERING +SYPHERS +SYPHILIS +SYPHILISES +SYPHILITIC +SYPHILITICS +SYPHILOID +SYPHON +SYPHONED +SYPHONING +SYPHONS +SYPHS +SYREN +SYRENS +SYRETTE +SYRETTES +SYRINGA +SYRINGAS +SYRINGE +SYRINGEAL +SYRINGED +SYRINGES +SYRINGING +SYRINGOMYELIA +SYRINGOMYELIAS +SYRINGOMYELIC +SYRINX +SYRINXES +SYRPHIAN +SYRPHIANS +SYRPHID +SYRPHIDS +SYRUP +SYRUPED +SYRUPIER +SYRUPIEST +SYRUPING +SYRUPLIKE +SYRUPS +SYRUPY +SYSADMIN +SYSADMINS +SYSOP +SYSOPS +SYSTALTIC +SYSTEM +SYSTEMATIC +SYSTEMATICALLY +SYSTEMATICNESS +SYSTEMATICS +SYSTEMATISE +SYSTEMATISED +SYSTEMATISES +SYSTEMATISING +SYSTEMATISM +SYSTEMATISMS +SYSTEMATIST +SYSTEMATISTS +SYSTEMATIZATION +SYSTEMATIZE +SYSTEMATIZED +SYSTEMATIZER +SYSTEMATIZERS +SYSTEMATIZES +SYSTEMATIZING +SYSTEMIC +SYSTEMICALLY +SYSTEMICS +SYSTEMIZATION +SYSTEMIZATIONS +SYSTEMIZE +SYSTEMIZED +SYSTEMIZES +SYSTEMIZING +SYSTEMLESS +SYSTEMS +SYSTOLE +SYSTOLES +SYSTOLIC +SYZYGAL +SYZYGETIC +SYZYGIAL +SYZYGIES +SYZYGY +TA +TAB +TABANID +TABANIDS +TABARD +TABARDED +TABARDS +TABARET +TABARETS +TABBED +TABBIED +TABBIES +TABBING +TABBIS +TABBISES +TABBOULEH +TABBOULEHS +TABBY +TABBYING +TABER +TABERED +TABERING +TABERNACLE +TABERNACLED +TABERNACLES +TABERNACLING +TABERNACULAR +TABERS +TABES +TABETIC +TABETICS +TABID +TABLA +TABLAS +TABLATURE +TABLATURES +TABLE +TABLEAU +TABLEAUS +TABLEAUX +TABLECLOTH +TABLECLOTHS +TABLED +TABLEFUL +TABLEFULS +TABLELAND +TABLELANDS +TABLELESS +TABLEMATE +TABLEMATES +TABLES +TABLESFUL +TABLESPOON +TABLESPOONFUL +TABLESPOONFULS +TABLESPOONS +TABLESPOONSFUL +TABLET +TABLETED +TABLETING +TABLETOP +TABLETOPS +TABLETS +TABLETTED +TABLETTING +TABLEWARE +TABLEWARES +TABLING +TABLOID +TABLOIDS +TABOO +TABOOED +TABOOING +TABOOLEY +TABOOLEYS +TABOOS +TABOR +TABORED +TABORER +TABORERS +TABORET +TABORETS +TABORIN +TABORINE +TABORINES +TABORING +TABORINS +TABORS +TABOULEH +TABOULEHS +TABOULI +TABOULIS +TABOUR +TABOURED +TABOURER +TABOURERS +TABOURET +TABOURETS +TABOURING +TABOURS +TABS +TABU +TABUED +TABUING +TABULABLE +TABULAR +TABULARLY +TABULATE +TABULATED +TABULATES +TABULATING +TABULATION +TABULATIONS +TABULATOR +TABULATORS +TABULI +TABULIS +TABUN +TABUNS +TABUS +TACAMAHAC +TACAMAHACS +TACE +TACES +TACET +TACH +TACHE +TACHES +TACHINID +TACHINIDS +TACHISM +TACHISME +TACHISMES +TACHISMS +TACHIST +TACHISTE +TACHISTES +TACHISTOSCOPE +TACHISTOSCOPES +TACHISTOSCOPIC +TACHISTS +TACHOMETER +TACHOMETERS +TACHS +TACHYARRHYTHMIA +TACHYCARDIA +TACHYCARDIAS +TACHYLITE +TACHYLITES +TACHYLYTE +TACHYLYTES +TACHYON +TACHYONIC +TACHYONS +TACIT +TACITLY +TACITNESS +TACITNESSES +TACITURN +TACITURNITIES +TACITURNITY +TACK +TACKBOARD +TACKBOARDS +TACKED +TACKER +TACKERS +TACKET +TACKETS +TACKEY +TACKIER +TACKIEST +TACKIFIED +TACKIFIER +TACKIFIERS +TACKIFIES +TACKIFY +TACKIFYING +TACKILY +TACKINESS +TACKINESSES +TACKING +TACKLE +TACKLED +TACKLER +TACKLERS +TACKLES +TACKLESS +TACKLING +TACKLINGS +TACKS +TACKY +TACNODE +TACNODES +TACO +TACONITE +TACONITES +TACOS +TACRINE +TACRINES +TACT +TACTFUL +TACTFULLY +TACTFULNESS +TACTFULNESSES +TACTIC +TACTICAL +TACTICALLY +TACTICIAN +TACTICIANS +TACTICS +TACTILE +TACTILELY +TACTILITIES +TACTILITY +TACTION +TACTIONS +TACTLESS +TACTLESSLY +TACTLESSNESS +TACTLESSNESSES +TACTS +TACTUAL +TACTUALLY +TAD +TADPOLE +TADPOLES +TADS +TAE +TAEKWONDO +TAEKWONDOS +TAEL +TAELS +TAENIA +TAENIAE +TAENIAS +TAENIASES +TAENIASIS +TAFFAREL +TAFFARELS +TAFFEREL +TAFFERELS +TAFFETA +TAFFETAS +TAFFETIZED +TAFFIA +TAFFIAS +TAFFIES +TAFFRAIL +TAFFRAILS +TAFFY +TAFIA +TAFIAS +TAG +TAGALONG +TAGALONGS +TAGBOARD +TAGBOARDS +TAGGANT +TAGGANTS +TAGGED +TAGGER +TAGGERS +TAGGING +TAGLIATELLE +TAGLIATELLES +TAGLIKE +TAGLINE +TAGLINES +TAGMEME +TAGMEMES +TAGMEMIC +TAGMEMICS +TAGRAG +TAGRAGS +TAGS +TAHINI +TAHINIS +TAHR +TAHRS +TAHSIL +TAHSILDAR +TAHSILDARS +TAHSILS +TAIGA +TAIGAS +TAIGLACH +TAIL +TAILBACK +TAILBACKS +TAILBOARD +TAILBOARDS +TAILBONE +TAILBONES +TAILCOAT +TAILCOATED +TAILCOATS +TAILED +TAILENDER +TAILENDERS +TAILER +TAILERS +TAILFAN +TAILFANS +TAILFIN +TAILFINS +TAILGATE +TAILGATED +TAILGATER +TAILGATERS +TAILGATES +TAILGATING +TAILING +TAILINGS +TAILLAMP +TAILLAMPS +TAILLE +TAILLES +TAILLESS +TAILLEUR +TAILLEURS +TAILLIGHT +TAILLIGHTS +TAILLIKE +TAILOR +TAILORBIRD +TAILORBIRDS +TAILORED +TAILORING +TAILORINGS +TAILORS +TAILPIECE +TAILPIECES +TAILPIPE +TAILPIPES +TAILPLANE +TAILPLANES +TAILRACE +TAILRACES +TAILS +TAILSKID +TAILSKIDS +TAILSLIDE +TAILSLIDES +TAILSPIN +TAILSPINNED +TAILSPINNING +TAILSPINS +TAILSTOCK +TAILSTOCKS +TAILWATER +TAILWATERS +TAILWIND +TAILWINDS +TAIN +TAINS +TAINT +TAINTED +TAINTING +TAINTLESS +TAINTS +TAIPAN +TAIPANS +TAJ +TAJES +TAKA +TAKABLE +TAKAHE +TAKAHES +TAKAS +TAKE +TAKEABLE +TAKEAWAY +TAKEAWAYS +TAKEDOWN +TAKEDOWNS +TAKEN +TAKEOFF +TAKEOFFS +TAKEOUT +TAKEOUTS +TAKEOVER +TAKEOVERS +TAKER +TAKERS +TAKES +TAKEUP +TAKEUPS +TAKIN +TAKING +TAKINGLY +TAKINGS +TAKINS +TALA +TALAPOIN +TALAPOINS +TALAR +TALARIA +TALARS +TALAS +TALC +TALCED +TALCING +TALCKED +TALCKING +TALCKY +TALCOSE +TALCOUS +TALCS +TALCUM +TALCUMS +TALE +TALEBEARER +TALEBEARERS +TALEBEARING +TALEBEARINGS +TALEGGIO +TALEGGIOS +TALENT +TALENTED +TALENTLESS +TALENTS +TALER +TALERS +TALES +TALESMAN +TALESMEN +TALEYSIM +TALI +TALION +TALIONS +TALIPED +TALIPEDS +TALIPES +TALIPOT +TALIPOTS +TALISMAN +TALISMANIC +TALISMANICALLY +TALISMANS +TALK +TALKABLE +TALKATHON +TALKATHONS +TALKATIVE +TALKATIVELY +TALKATIVENESS +TALKATIVENESSES +TALKBACK +TALKBACKS +TALKED +TALKER +TALKERS +TALKIE +TALKIER +TALKIES +TALKIEST +TALKINESS +TALKINESSES +TALKING +TALKINGS +TALKS +TALKY +TALL +TALLAGE +TALLAGED +TALLAGES +TALLAGING +TALLAISIM +TALLBOY +TALLBOYS +TALLER +TALLEST +TALLGRASS +TALLGRASSES +TALLIED +TALLIER +TALLIERS +TALLIES +TALLIS +TALLISES +TALLISH +TALLISIM +TALLIT +TALLITH +TALLITHES +TALLITHIM +TALLITHS +TALLITIM +TALLITOTH +TALLITS +TALLNESS +TALLNESSES +TALLOL +TALLOLS +TALLOW +TALLOWED +TALLOWING +TALLOWS +TALLOWY +TALLS +TALLY +TALLYHO +TALLYHOED +TALLYHOING +TALLYHOS +TALLYING +TALLYMAN +TALLYMEN +TALMUDIC +TALMUDISM +TALMUDISMS +TALON +TALONED +TALONS +TALOOKA +TALOOKAS +TALUK +TALUKA +TALUKAS +TALUKS +TALUS +TALUSES +TAM +TAMABLE +TAMAL +TAMALE +TAMALES +TAMALS +TAMANDU +TAMANDUA +TAMANDUAS +TAMANDUS +TAMARACK +TAMARACKS +TAMARAO +TAMARAOS +TAMARAU +TAMARAUS +TAMARI +TAMARILLO +TAMARILLOS +TAMARIN +TAMARIND +TAMARINDS +TAMARINS +TAMARIS +TAMARISK +TAMARISKS +TAMASHA +TAMASHAS +TAMBAC +TAMBACS +TAMBAK +TAMBAKS +TAMBALA +TAMBALAS +TAMBOUR +TAMBOURA +TAMBOURAS +TAMBOURED +TAMBOURER +TAMBOURERS +TAMBOURIN +TAMBOURINE +TAMBOURINES +TAMBOURING +TAMBOURINS +TAMBOURS +TAMBUR +TAMBURA +TAMBURAS +TAMBURS +TAME +TAMEABLE +TAMED +TAMEIN +TAMEINS +TAMELESS +TAMELY +TAMENESS +TAMENESSES +TAMER +TAMERS +TAMES +TAMEST +TAMING +TAMIS +TAMISES +TAMMIE +TAMMIES +TAMMY +TAMOXIFEN +TAMOXIFENS +TAMP +TAMPALA +TAMPALAS +TAMPAN +TAMPANS +TAMPED +TAMPER +TAMPERED +TAMPERER +TAMPERERS +TAMPERING +TAMPERPROOF +TAMPERS +TAMPING +TAMPION +TAMPIONS +TAMPON +TAMPONED +TAMPONING +TAMPONS +TAMPS +TAMS +TAN +TANAGER +TANAGERS +TANBARK +TANBARKS +TANDEM +TANDEMS +TANDOOR +TANDOORI +TANDOORIS +TANDOORS +TANG +TANGA +TANGED +TANGELO +TANGELOS +TANGENCE +TANGENCES +TANGENCIES +TANGENCY +TANGENT +TANGENTAL +TANGENTIAL +TANGENTIALLY +TANGENTS +TANGERINE +TANGERINES +TANGIBILITIES +TANGIBILITY +TANGIBLE +TANGIBLENESS +TANGIBLENESSES +TANGIBLES +TANGIBLY +TANGIER +TANGIEST +TANGINESS +TANGINESSES +TANGING +TANGLE +TANGLED +TANGLEMENT +TANGLEMENTS +TANGLER +TANGLERS +TANGLES +TANGLIER +TANGLIEST +TANGLING +TANGLY +TANGO +TANGOED +TANGOING +TANGOLIKE +TANGOS +TANGRAM +TANGRAMS +TANGS +TANGY +TANIST +TANISTRIES +TANISTRY +TANISTS +TANK +TANKA +TANKAGE +TANKAGES +TANKARD +TANKARDS +TANKAS +TANKED +TANKER +TANKERS +TANKFUL +TANKFULS +TANKING +TANKINI +TANKINIS +TANKLESS +TANKLIKE +TANKS +TANKSHIP +TANKSHIPS +TANNABLE +TANNAGE +TANNAGES +TANNATE +TANNATES +TANNED +TANNER +TANNERIES +TANNERS +TANNERY +TANNEST +TANNIC +TANNIN +TANNING +TANNINGS +TANNINS +TANNISH +TANNOY +TANNOYS +TANREC +TANRECS +TANS +TANSIES +TANSY +TANTALATE +TANTALATES +TANTALIC +TANTALISE +TANTALISED +TANTALISES +TANTALISING +TANTALITE +TANTALITES +TANTALIZE +TANTALIZED +TANTALIZER +TANTALIZERS +TANTALIZES +TANTALIZING +TANTALIZINGLY +TANTALOUS +TANTALUM +TANTALUMS +TANTALUS +TANTALUSES +TANTAMOUNT +TANTARA +TANTARAS +TANTIVIES +TANTIVY +TANTO +TANTRA +TANTRAS +TANTRIC +TANTRISM +TANTRISMS +TANTRUM +TANTRUMS +TANUKI +TANUKIS +TANYARD +TANYARDS +TANZANITE +TANZANITES +TAO +TAOS +TAP +TAPA +TAPADERA +TAPADERAS +TAPADERO +TAPADEROS +TAPALO +TAPALOS +TAPAS +TAPE +TAPEABLE +TAPED +TAPELESS +TAPELIKE +TAPELINE +TAPELINES +TAPENADE +TAPENADES +TAPER +TAPERED +TAPERER +TAPERERS +TAPERING +TAPERS +TAPERSTICK +TAPERSTICKS +TAPES +TAPESTRIED +TAPESTRIES +TAPESTRY +TAPESTRYING +TAPETA +TAPETAL +TAPETUM +TAPEWORM +TAPEWORMS +TAPHOLE +TAPHOLES +TAPHONOMIC +TAPHONOMIES +TAPHONOMIST +TAPHONOMISTS +TAPHONOMY +TAPHOUSE +TAPHOUSES +TAPING +TAPIOCA +TAPIOCAS +TAPIR +TAPIRS +TAPIS +TAPISES +TAPPABLE +TAPPED +TAPPER +TAPPERS +TAPPET +TAPPETS +TAPPING +TAPPINGS +TAPROOM +TAPROOMS +TAPROOT +TAPROOTS +TAPS +TAPSTER +TAPSTERS +TAQUERIA +TAQUERIAS +TAR +TARADIDDLE +TARADIDDLES +TARAMA +TARAMAS +TARANTAS +TARANTASES +TARANTELLA +TARANTELLAS +TARANTISM +TARANTISMS +TARANTIST +TARANTISTS +TARANTULA +TARANTULAE +TARANTULAS +TARBOOSH +TARBOOSHES +TARBUSH +TARBUSHES +TARDIER +TARDIES +TARDIEST +TARDIGRADE +TARDIGRADES +TARDILY +TARDINESS +TARDINESSES +TARDIVE +TARDO +TARDY +TARDYON +TARDYONS +TARE +TARED +TARES +TARGE +TARGES +TARGET +TARGETABLE +TARGETED +TARGETING +TARGETS +TARIFF +TARIFFED +TARIFFING +TARIFFS +TARING +TARLATAN +TARLATANS +TARLETAN +TARLETANS +TARMAC +TARMACADAM +TARMACADAMS +TARMACKED +TARMACKING +TARMACS +TARN +TARNAL +TARNALLY +TARNATION +TARNATIONS +TARNISH +TARNISHABLE +TARNISHED +TARNISHES +TARNISHING +TARNS +TARO +TAROC +TAROCS +TAROK +TAROKS +TAROS +TAROT +TAROTS +TARP +TARPAN +TARPANS +TARPAPER +TARPAPERS +TARPAULIN +TARPAULINS +TARPON +TARPONS +TARPS +TARRADIDDLE +TARRADIDDLES +TARRAGON +TARRAGONS +TARRE +TARRED +TARRES +TARRIANCE +TARRIANCES +TARRIED +TARRIER +TARRIERS +TARRIES +TARRIEST +TARRINESS +TARRINESSES +TARRING +TARRY +TARRYING +TARS +TARSAL +TARSALS +TARSI +TARSIA +TARSIAS +TARSIER +TARSIERS +TARSOMETATARSI +TARSOMETATARSUS +TARSUS +TART +TARTAN +TARTANA +TARTANAS +TARTANS +TARTAR +TARTARE +TARTARIC +TARTAROUS +TARTARS +TARTED +TARTER +TARTEST +TARTIER +TARTIEST +TARTILY +TARTINESS +TARTINESSES +TARTING +TARTISH +TARTLET +TARTLETS +TARTLY +TARTNESS +TARTNESSES +TARTRATE +TARTRATED +TARTRATES +TARTS +TARTUFE +TARTUFES +TARTUFFE +TARTUFFES +TARTY +TARWEED +TARWEEDS +TARZAN +TARZANS +TAS +TASK +TASKBAR +TASKBARS +TASKED +TASKING +TASKMASTER +TASKMASTERS +TASKMISTRESS +TASKMISTRESSES +TASKS +TASKWORK +TASKWORKS +TASS +TASSE +TASSEL +TASSELED +TASSELING +TASSELLED +TASSELLING +TASSELS +TASSES +TASSET +TASSETS +TASSIE +TASSIES +TASTABLE +TASTE +TASTEABLE +TASTED +TASTEFUL +TASTEFULLY +TASTEFULNESS +TASTEFULNESSES +TASTELESS +TASTELESSLY +TASTELESSNESS +TASTELESSNESSES +TASTEMAKER +TASTEMAKERS +TASTER +TASTERS +TASTES +TASTIER +TASTIEST +TASTILY +TASTINESS +TASTINESSES +TASTING +TASTY +TAT +TATAMI +TATAMIS +TATAR +TATARS +TATE +TATER +TATERS +TATES +TATOUAY +TATOUAYS +TATS +TATSOI +TATSOIS +TATTED +TATTER +TATTERDEMALION +TATTERDEMALIONS +TATTERED +TATTERING +TATTERS +TATTERSALL +TATTERSALLS +TATTIE +TATTIER +TATTIES +TATTIEST +TATTILY +TATTINESS +TATTINESSES +TATTING +TATTINGS +TATTLE +TATTLED +TATTLER +TATTLERS +TATTLES +TATTLETALE +TATTLETALES +TATTLING +TATTOO +TATTOOED +TATTOOER +TATTOOERS +TATTOOING +TATTOOIST +TATTOOISTS +TATTOOS +TATTY +TAU +TAUGHT +TAUNT +TAUNTED +TAUNTER +TAUNTERS +TAUNTING +TAUNTINGLY +TAUNTS +TAUON +TAUONS +TAUPE +TAUPES +TAURINE +TAURINES +TAUS +TAUT +TAUTAUG +TAUTAUGS +TAUTED +TAUTEN +TAUTENED +TAUTENING +TAUTENS +TAUTER +TAUTEST +TAUTING +TAUTLY +TAUTNESS +TAUTNESSES +TAUTOG +TAUTOGS +TAUTOLOGICAL +TAUTOLOGICALLY +TAUTOLOGIES +TAUTOLOGOUS +TAUTOLOGOUSLY +TAUTOLOGY +TAUTOMER +TAUTOMERIC +TAUTOMERISM +TAUTOMERISMS +TAUTOMERS +TAUTONYM +TAUTONYMIES +TAUTONYMS +TAUTONYMY +TAUTS +TAV +TAVERN +TAVERNA +TAVERNAS +TAVERNER +TAVERNERS +TAVERNS +TAVS +TAW +TAWDRIER +TAWDRIES +TAWDRIEST +TAWDRILY +TAWDRINESS +TAWDRINESSES +TAWDRY +TAWED +TAWER +TAWERS +TAWIE +TAWING +TAWNEY +TAWNEYS +TAWNIER +TAWNIES +TAWNIEST +TAWNILY +TAWNINESS +TAWNINESSES +TAWNY +TAWPIE +TAWPIES +TAWS +TAWSE +TAWSED +TAWSES +TAWSING +TAX +TAXA +TAXABLE +TAXABLES +TAXABLY +TAXATION +TAXATIONS +TAXED +TAXEME +TAXEMES +TAXEMIC +TAXER +TAXERS +TAXES +TAXI +TAXICAB +TAXICABS +TAXIDERMIC +TAXIDERMIES +TAXIDERMIST +TAXIDERMISTS +TAXIDERMY +TAXIED +TAXIES +TAXIING +TAXIMAN +TAXIMEN +TAXIMETER +TAXIMETERS +TAXING +TAXINGLY +TAXIS +TAXITE +TAXITES +TAXITIC +TAXIWAY +TAXIWAYS +TAXLESS +TAXMAN +TAXMEN +TAXOL +TAXOLS +TAXON +TAXONOMIC +TAXONOMICALLY +TAXONOMIES +TAXONOMIST +TAXONOMISTS +TAXONOMY +TAXONS +TAXPAID +TAXPAYER +TAXPAYERS +TAXPAYING +TAXPAYINGS +TAXUS +TAXWISE +TAXYING +TAZZA +TAZZAS +TAZZE +TCHOTCHKE +TCHOTCHKES +TEA +TEABERRIES +TEABERRY +TEABOARD +TEABOARDS +TEABOWL +TEABOWLS +TEABOX +TEABOXES +TEACAKE +TEACAKES +TEACART +TEACARTS +TEACH +TEACHABLE +TEACHABLENESS +TEACHABLENESSES +TEACHABLY +TEACHER +TEACHERLY +TEACHERS +TEACHES +TEACHING +TEACHINGS +TEACUP +TEACUPFUL +TEACUPFULS +TEACUPS +TEACUPSFUL +TEAHOUSE +TEAHOUSES +TEAK +TEAKETTLE +TEAKETTLES +TEAKS +TEAKWOOD +TEAKWOODS +TEAL +TEALIKE +TEALS +TEAM +TEAMAKER +TEAMAKERS +TEAMED +TEAMING +TEAMMATE +TEAMMATES +TEAMS +TEAMSTER +TEAMSTERS +TEAMWORK +TEAMWORKS +TEAPOT +TEAPOTS +TEAPOY +TEAPOYS +TEAR +TEARABLE +TEARAWAY +TEARAWAYS +TEARDOWN +TEARDOWNS +TEARDROP +TEARDROPS +TEARED +TEARER +TEARERS +TEARFUL +TEARFULLY +TEARFULNESS +TEARFULNESSES +TEARGAS +TEARGASES +TEARGASSED +TEARGASSES +TEARGASSING +TEARIER +TEARIEST +TEARILY +TEARINESS +TEARINESSES +TEARING +TEARJERKER +TEARJERKERS +TEARLESS +TEAROOM +TEAROOMS +TEARS +TEARSTAIN +TEARSTAINED +TEARSTAINS +TEARSTRIP +TEARSTRIPS +TEARY +TEAS +TEASABLE +TEASE +TEASED +TEASEL +TEASELED +TEASELER +TEASELERS +TEASELING +TEASELLED +TEASELLER +TEASELLERS +TEASELLING +TEASELS +TEASER +TEASERS +TEASES +TEASHOP +TEASHOPS +TEASING +TEASINGLY +TEASPOON +TEASPOONFUL +TEASPOONFULS +TEASPOONS +TEASPOONSFUL +TEAT +TEATASTER +TEATASTERS +TEATED +TEATIME +TEATIMES +TEATS +TEAWARE +TEAWARES +TEAZEL +TEAZELED +TEAZELING +TEAZELLED +TEAZELLING +TEAZELS +TEAZLE +TEAZLED +TEAZLES +TEAZLING +TECH +TECHED +TECHIE +TECHIER +TECHIES +TECHIEST +TECHILY +TECHNETIUM +TECHNETIUMS +TECHNETRONIC +TECHNIC +TECHNICAL +TECHNICALITIES +TECHNICALITY +TECHNICALIZE +TECHNICALIZED +TECHNICALIZES +TECHNICALIZING +TECHNICALLY +TECHNICALS +TECHNICIAN +TECHNICIANS +TECHNICS +TECHNIQUE +TECHNIQUES +TECHNO +TECHNOBABBLE +TECHNOBABBLES +TECHNOCRACIES +TECHNOCRACY +TECHNOCRAT +TECHNOCRATIC +TECHNOCRATS +TECHNOLOGIC +TECHNOLOGICAL +TECHNOLOGICALLY +TECHNOLOGIES +TECHNOLOGIST +TECHNOLOGISTS +TECHNOLOGIZE +TECHNOLOGIZED +TECHNOLOGIZES +TECHNOLOGIZING +TECHNOLOGY +TECHNOPHILE +TECHNOPHILES +TECHNOPHOBE +TECHNOPHOBES +TECHNOPHOBIA +TECHNOPHOBIAS +TECHNOPHOBIC +TECHNOPOP +TECHNOPOPS +TECHNOS +TECHNOSTRUCTURE +TECHS +TECHY +TECTA +TECTAL +TECTITE +TECTITES +TECTONIC +TECTONICALLY +TECTONICS +TECTONISM +TECTONISMS +TECTORIAL +TECTRICES +TECTRIX +TECTUM +TECTUMS +TED +TEDDED +TEDDER +TEDDERED +TEDDERING +TEDDERS +TEDDIES +TEDDING +TEDDY +TEDIOUS +TEDIOUSLY +TEDIOUSNESS +TEDIOUSNESSES +TEDIUM +TEDIUMS +TEDS +TEE +TEED +TEEING +TEEL +TEELS +TEEM +TEEMED +TEEMER +TEEMERS +TEEMING +TEEMINGLY +TEEMINGNESS +TEEMINGNESSES +TEEMS +TEEN +TEENAGE +TEENAGED +TEENAGER +TEENAGERS +TEENER +TEENERS +TEENFUL +TEENIER +TEENIEST +TEENS +TEENSIER +TEENSIEST +TEENSY +TEENTSIER +TEENTSIEST +TEENTSY +TEENY +TEENYBOP +TEENYBOPPER +TEENYBOPPERS +TEEPEE +TEEPEES +TEES +TEETER +TEETERBOARD +TEETERBOARDS +TEETERED +TEETERING +TEETERS +TEETH +TEETHE +TEETHED +TEETHER +TEETHERS +TEETHES +TEETHING +TEETHINGS +TEETHLESS +TEETHRIDGE +TEETHRIDGES +TEETOTAL +TEETOTALED +TEETOTALER +TEETOTALERS +TEETOTALING +TEETOTALISM +TEETOTALISMS +TEETOTALIST +TEETOTALISTS +TEETOTALLED +TEETOTALLER +TEETOTALLERS +TEETOTALLING +TEETOTALLY +TEETOTALS +TEETOTUM +TEETOTUMS +TEFF +TEFFS +TEFILLIN +TEFLON +TEFLONS +TEG +TEGG +TEGGS +TEGMEN +TEGMENTA +TEGMENTAL +TEGMENTUM +TEGMINA +TEGMINAL +TEGS +TEGUA +TEGUAS +TEGULAR +TEGULARLY +TEGULATED +TEGUMEN +TEGUMENT +TEGUMENTS +TEGUMINA +TEIGLACH +TEIID +TEIIDS +TEIND +TEINDS +TEKKIE +TEKKIES +TEKTITE +TEKTITES +TEKTITIC +TEL +TELA +TELAE +TELAMON +TELAMONES +TELANGIECTASES +TELANGIECTASIA +TELANGIECTASIAS +TELANGIECTASIS +TELANGIECTATIC +TELCO +TELCOS +TELE +TELECAST +TELECASTED +TELECASTER +TELECASTERS +TELECASTING +TELECASTS +TELECOM +TELECOMMUTE +TELECOMMUTED +TELECOMMUTER +TELECOMMUTERS +TELECOMMUTES +TELECOMMUTING +TELECOMS +TELECONFERENCE +TELECONFERENCES +TELECOURSE +TELECOURSES +TELEDU +TELEDUS +TELEFACSIMILE +TELEFACSIMILES +TELEFAX +TELEFAXES +TELEFILM +TELEFILMS +TELEGA +TELEGAS +TELEGENIC +TELEGONIC +TELEGONIES +TELEGONY +TELEGRAM +TELEGRAMMED +TELEGRAMMING +TELEGRAMS +TELEGRAPH +TELEGRAPHED +TELEGRAPHER +TELEGRAPHERS +TELEGRAPHESE +TELEGRAPHESES +TELEGRAPHIC +TELEGRAPHICALLY +TELEGRAPHIES +TELEGRAPHING +TELEGRAPHIST +TELEGRAPHISTS +TELEGRAPHS +TELEGRAPHY +TELEKINESES +TELEKINESIS +TELEKINETIC +TELEKINETICALLY +TELEMAN +TELEMARK +TELEMARKETER +TELEMARKETERS +TELEMARKETING +TELEMARKETINGS +TELEMARKS +TELEMEN +TELEMETER +TELEMETERED +TELEMETERING +TELEMETERS +TELEMETRIC +TELEMETRICALLY +TELEMETRIES +TELEMETRY +TELENCEPHALA +TELENCEPHALIC +TELENCEPHALON +TELEOLOGIC +TELEOLOGICAL +TELEOLOGICALLY +TELEOLOGIES +TELEOLOGIST +TELEOLOGISTS +TELEOLOGY +TELEONOMIC +TELEONOMIES +TELEONOMY +TELEOST +TELEOSTEAN +TELEOSTS +TELEPATH +TELEPATHIC +TELEPATHICALLY +TELEPATHIES +TELEPATHS +TELEPATHY +TELEPHONE +TELEPHONED +TELEPHONER +TELEPHONERS +TELEPHONES +TELEPHONIC +TELEPHONICALLY +TELEPHONIES +TELEPHONING +TELEPHONIST +TELEPHONISTS +TELEPHONY +TELEPHOTO +TELEPHOTOGRAPHY +TELEPHOTOS +TELEPLAY +TELEPLAYS +TELEPORT +TELEPORTATION +TELEPORTATIONS +TELEPORTED +TELEPORTING +TELEPORTS +TELEPRINTER +TELEPRINTERS +TELEPROCESSING +TELEPROCESSINGS +TELERAN +TELERANS +TELES +TELESCOPE +TELESCOPED +TELESCOPES +TELESCOPIC +TELESCOPICALLY +TELESCOPIES +TELESCOPING +TELESCOPY +TELESES +TELESHOP +TELESHOPPED +TELESHOPPING +TELESHOPS +TELESIS +TELESTIC +TELESTICH +TELESTICHS +TELESTICS +TELETEXT +TELETEXTS +TELETHON +TELETHONS +TELETYPE +TELETYPED +TELETYPES +TELETYPEWRITER +TELETYPEWRITERS +TELETYPING +TELEUTOSPORE +TELEUTOSPORES +TELEVANGELISM +TELEVANGELISMS +TELEVANGELIST +TELEVANGELISTS +TELEVIEW +TELEVIEWED +TELEVIEWER +TELEVIEWERS +TELEVIEWING +TELEVIEWS +TELEVISE +TELEVISED +TELEVISES +TELEVISING +TELEVISION +TELEVISIONS +TELEVISOR +TELEVISORS +TELEVISUAL +TELEX +TELEXED +TELEXES +TELEXING +TELFER +TELFERED +TELFERING +TELFERS +TELFORD +TELFORDS +TELIA +TELIAL +TELIC +TELICALLY +TELIOSPORE +TELIOSPORES +TELIUM +TELL +TELLABLE +TELLER +TELLERS +TELLIES +TELLING +TELLINGLY +TELLS +TELLTALE +TELLTALES +TELLURIAN +TELLURIANS +TELLURIC +TELLURIDE +TELLURIDES +TELLURION +TELLURIONS +TELLURITE +TELLURITES +TELLURIUM +TELLURIUMS +TELLURIZE +TELLURIZED +TELLURIZES +TELLURIZING +TELLUROMETER +TELLUROMETERS +TELLUROUS +TELLY +TELLYS +TELNET +TELNETED +TELNETING +TELNETS +TELNETTED +TELNETTING +TELOCENTRIC +TELOCENTRICS +TELOI +TELOME +TELOMERE +TELOMERES +TELOMES +TELOMIC +TELOPHASE +TELOPHASES +TELOS +TELOTAXES +TELOTAXIS +TELPHER +TELPHERED +TELPHERING +TELPHERS +TELS +TELSON +TELSONIC +TELSONS +TEMBLOR +TEMBLORES +TEMBLORS +TEMERARIOUS +TEMERARIOUSLY +TEMERARIOUSNESS +TEMERITIES +TEMERITY +TEMP +TEMPED +TEMPEH +TEMPEHS +TEMPER +TEMPERA +TEMPERABLE +TEMPERAMENT +TEMPERAMENTAL +TEMPERAMENTALLY +TEMPERAMENTS +TEMPERANCE +TEMPERANCES +TEMPERAS +TEMPERATE +TEMPERATELY +TEMPERATENESS +TEMPERATENESSES +TEMPERATURE +TEMPERATURES +TEMPERED +TEMPERER +TEMPERERS +TEMPERING +TEMPERS +TEMPEST +TEMPESTED +TEMPESTING +TEMPESTS +TEMPESTUOUS +TEMPESTUOUSLY +TEMPESTUOUSNESS +TEMPI +TEMPING +TEMPLAR +TEMPLARS +TEMPLATE +TEMPLATES +TEMPLE +TEMPLED +TEMPLES +TEMPLET +TEMPLETS +TEMPO +TEMPORAL +TEMPORALITIES +TEMPORALITY +TEMPORALIZE +TEMPORALIZED +TEMPORALIZES +TEMPORALIZING +TEMPORALLY +TEMPORALS +TEMPORARIES +TEMPORARILY +TEMPORARINESS +TEMPORARINESSES +TEMPORARY +TEMPORISE +TEMPORISED +TEMPORISES +TEMPORISING +TEMPORIZATION +TEMPORIZATIONS +TEMPORIZE +TEMPORIZED +TEMPORIZER +TEMPORIZERS +TEMPORIZES +TEMPORIZING +TEMPOS +TEMPS +TEMPT +TEMPTABLE +TEMPTATION +TEMPTATIONS +TEMPTED +TEMPTER +TEMPTERS +TEMPTING +TEMPTINGLY +TEMPTRESS +TEMPTRESSES +TEMPTS +TEMPURA +TEMPURAS +TEN +TENABILITIES +TENABILITY +TENABLE +TENABLENESS +TENABLENESSES +TENABLY +TENACE +TENACES +TENACIOUS +TENACIOUSLY +TENACIOUSNESS +TENACIOUSNESSES +TENACITIES +TENACITY +TENACULA +TENACULUM +TENACULUMS +TENAIL +TENAILLE +TENAILLES +TENAILS +TENANCIES +TENANCY +TENANT +TENANTABLE +TENANTED +TENANTING +TENANTLESS +TENANTRIES +TENANTRY +TENANTS +TENCH +TENCHES +TEND +TENDANCE +TENDANCES +TENDED +TENDENCE +TENDENCES +TENDENCIES +TENDENCIOUS +TENDENCY +TENDENTIOUS +TENDENTIOUSLY +TENDENTIOUSNESS +TENDER +TENDERED +TENDERER +TENDERERS +TENDEREST +TENDERFEET +TENDERFOOT +TENDERFOOTS +TENDERHEARTED +TENDERHEARTEDLY +TENDERING +TENDERIZATION +TENDERIZATIONS +TENDERIZE +TENDERIZED +TENDERIZER +TENDERIZERS +TENDERIZES +TENDERIZING +TENDERLOIN +TENDERLOINS +TENDERLY +TENDERNESS +TENDERNESSES +TENDEROMETER +TENDEROMETERS +TENDERS +TENDING +TENDINITIS +TENDINITISES +TENDINOUS +TENDON +TENDONITIS +TENDONITISES +TENDONS +TENDRESSE +TENDRESSES +TENDRIL +TENDRILED +TENDRILLED +TENDRILOUS +TENDRILS +TENDS +TENDU +TENDUS +TENEBRAE +TENEBRIFIC +TENEBRIONID +TENEBRIONIDS +TENEBRIOUS +TENEBRISM +TENEBRISMS +TENEBRIST +TENEBRISTS +TENEBROUS +TENEMENT +TENEMENTS +TENESMIC +TENESMUS +TENESMUSES +TENET +TENETS +TENFOLD +TENFOLDS +TENGE +TENIA +TENIAE +TENIAS +TENIASES +TENIASIS +TENNER +TENNERS +TENNIES +TENNIS +TENNISES +TENNIST +TENNISTS +TENON +TENONED +TENONER +TENONERS +TENONING +TENONS +TENOR +TENORIST +TENORISTS +TENORITE +TENORITES +TENORS +TENOSYNOVITIS +TENOSYNOVITISES +TENOTOMIES +TENOTOMY +TENOUR +TENOURS +TENPENCE +TENPENCES +TENPENNY +TENPIN +TENPINS +TENPOUNDER +TENPOUNDERS +TENREC +TENRECS +TENS +TENSE +TENSED +TENSELY +TENSENESS +TENSENESSES +TENSER +TENSES +TENSEST +TENSIBLE +TENSIBLY +TENSILE +TENSILELY +TENSILITIES +TENSILITY +TENSING +TENSIOMETER +TENSIOMETERS +TENSIOMETRIC +TENSIOMETRIES +TENSIOMETRY +TENSION +TENSIONAL +TENSIONED +TENSIONER +TENSIONERS +TENSIONING +TENSIONLESS +TENSIONS +TENSITIES +TENSITY +TENSIVE +TENSOR +TENSORIAL +TENSORS +TENT +TENTACLE +TENTACLED +TENTACLES +TENTACULAR +TENTAGE +TENTAGES +TENTATIVE +TENTATIVELY +TENTATIVENESS +TENTATIVENESSES +TENTATIVES +TENTED +TENTER +TENTERED +TENTERHOOK +TENTERHOOKS +TENTERING +TENTERS +TENTH +TENTHLY +TENTHS +TENTIE +TENTIER +TENTIEST +TENTING +TENTLESS +TENTLIKE +TENTMAKER +TENTMAKERS +TENTORIA +TENTORIAL +TENTORIUM +TENTS +TENTY +TENUES +TENUIS +TENUITIES +TENUITY +TENUOUS +TENUOUSLY +TENUOUSNESS +TENUOUSNESSES +TENURABLE +TENURE +TENURED +TENURES +TENURIAL +TENURIALLY +TENURING +TENUTI +TENUTO +TENUTOS +TEOCALLI +TEOCALLIS +TEOPAN +TEOPANS +TEOSINTE +TEOSINTES +TEPA +TEPAL +TEPALS +TEPAS +TEPEE +TEPEES +TEPEFIED +TEPEFIES +TEPEFY +TEPEFYING +TEPHRA +TEPHRAS +TEPHRITE +TEPHRITES +TEPHRITIC +TEPID +TEPIDITIES +TEPIDITY +TEPIDLY +TEPIDNESS +TEPIDNESSES +TEPOY +TEPOYS +TEQUILA +TEQUILAS +TERABYTE +TERABYTES +TERAFLOP +TERAFLOPS +TERAHERTZ +TERAHERTZES +TERAI +TERAIS +TERAOHM +TERAOHMS +TERAPH +TERAPHIM +TERATISM +TERATISMS +TERATOCARCINOMA +TERATOGEN +TERATOGENESES +TERATOGENESIS +TERATOGENIC +TERATOGENICITY +TERATOGENS +TERATOID +TERATOLOGIC +TERATOLOGICAL +TERATOLOGIES +TERATOLOGIST +TERATOLOGISTS +TERATOLOGY +TERATOMA +TERATOMAS +TERATOMATA +TERAWATT +TERAWATTS +TERBIA +TERBIAS +TERBIC +TERBIUM +TERBIUMS +TERCE +TERCEL +TERCELET +TERCELETS +TERCELS +TERCENTENARIES +TERCENTENARY +TERCENTENNIAL +TERCENTENNIALS +TERCES +TERCET +TERCETS +TEREBENE +TEREBENES +TEREBIC +TEREBINTH +TEREBINTHS +TEREDINES +TEREDO +TEREDOS +TEREFAH +TEREPHTHALATE +TEREPHTHALATES +TERETE +TERGA +TERGAL +TERGITE +TERGITES +TERGIVERSATE +TERGIVERSATED +TERGIVERSATES +TERGIVERSATING +TERGIVERSATION +TERGIVERSATIONS +TERGIVERSATOR +TERGIVERSATORS +TERGUM +TERIYAKI +TERIYAKIS +TERM +TERMAGANT +TERMAGANTS +TERMED +TERMER +TERMERS +TERMINABLE +TERMINABLENESS +TERMINABLY +TERMINAL +TERMINALLY +TERMINALS +TERMINATE +TERMINATED +TERMINATES +TERMINATING +TERMINATION +TERMINATIONAL +TERMINATIONS +TERMINATIVE +TERMINATIVELY +TERMINATOR +TERMINATORS +TERMING +TERMINI +TERMINOLOGICAL +TERMINOLOGIES +TERMINOLOGY +TERMINUS +TERMINUSES +TERMITARIA +TERMITARIES +TERMITARIUM +TERMITARY +TERMITE +TERMITES +TERMITIC +TERMLESS +TERMLY +TERMOR +TERMORS +TERMS +TERMTIME +TERMTIMES +TERN +TERNARIES +TERNARY +TERNATE +TERNATELY +TERNE +TERNEPLATE +TERNEPLATES +TERNES +TERNION +TERNIONS +TERNS +TERPENE +TERPENELESS +TERPENES +TERPENIC +TERPENOID +TERPENOIDS +TERPINEOL +TERPINEOLS +TERPINOL +TERPINOLS +TERPOLYMER +TERPOLYMERS +TERPSICHOREAN +TERRA +TERRACE +TERRACED +TERRACES +TERRACING +TERRAE +TERRAFORM +TERRAFORMED +TERRAFORMING +TERRAFORMS +TERRAIN +TERRAINS +TERRANE +TERRANES +TERRAPIN +TERRAPINS +TERRAQUEOUS +TERRARIA +TERRARIUM +TERRARIUMS +TERRAS +TERRASES +TERRAZZO +TERRAZZOS +TERREEN +TERREENS +TERRELLA +TERRELLAS +TERRENE +TERRENELY +TERRENES +TERREPLEIN +TERREPLEINS +TERRESTRIAL +TERRESTRIALLY +TERRESTRIALS +TERRET +TERRETS +TERRIBLE +TERRIBLENESS +TERRIBLENESSES +TERRIBLY +TERRICOLOUS +TERRIER +TERRIERS +TERRIES +TERRIFIC +TERRIFICALLY +TERRIFIED +TERRIFIER +TERRIFIERS +TERRIFIES +TERRIFY +TERRIFYING +TERRIFYINGLY +TERRIGENOUS +TERRINE +TERRINES +TERRIT +TERRITORIAL +TERRITORIALISM +TERRITORIALISMS +TERRITORIALIST +TERRITORIALISTS +TERRITORIALITY +TERRITORIALIZE +TERRITORIALIZED +TERRITORIALIZES +TERRITORIALLY +TERRITORIALS +TERRITORIES +TERRITORY +TERRITS +TERROR +TERRORISE +TERRORISED +TERRORISES +TERRORISING +TERRORISM +TERRORISMS +TERRORIST +TERRORISTIC +TERRORISTS +TERRORIZATION +TERRORIZATIONS +TERRORIZE +TERRORIZED +TERRORIZES +TERRORIZING +TERRORLESS +TERRORS +TERRY +TERSE +TERSELY +TERSENESS +TERSENESSES +TERSER +TERSEST +TERTIAL +TERTIALS +TERTIAN +TERTIANS +TERTIARIES +TERTIARY +TERVALENT +TERYLENE +TERYLENES +TESLA +TESLAS +TESSELATE +TESSELATED +TESSELATES +TESSELATING +TESSELLATE +TESSELLATED +TESSELLATES +TESSELLATING +TESSELLATION +TESSELLATIONS +TESSERA +TESSERACT +TESSERACTS +TESSERAE +TESSITURA +TESSITURAS +TESSITURE +TEST +TESTA +TESTABILITIES +TESTABILITY +TESTABLE +TESTACEAN +TESTACEANS +TESTACEOUS +TESTACIES +TESTACY +TESTAE +TESTAMENT +TESTAMENTARY +TESTAMENTS +TESTATE +TESTATES +TESTATOR +TESTATORS +TESTATRICES +TESTATRIX +TESTATRIXES +TESTCROSS +TESTCROSSED +TESTCROSSES +TESTCROSSING +TESTED +TESTEE +TESTEES +TESTER +TESTERS +TESTES +TESTICLE +TESTICLES +TESTICULAR +TESTIER +TESTIEST +TESTIFIED +TESTIFIER +TESTIFIERS +TESTIFIES +TESTIFY +TESTIFYING +TESTILY +TESTIMONIAL +TESTIMONIALS +TESTIMONIES +TESTIMONY +TESTINESS +TESTINESSES +TESTING +TESTIS +TESTON +TESTONS +TESTOON +TESTOONS +TESTOSTERONE +TESTOSTERONES +TESTS +TESTUDINES +TESTUDO +TESTUDOS +TESTY +TET +TETANAL +TETANIC +TETANICAL +TETANICALLY +TETANICS +TETANIES +TETANISE +TETANISED +TETANISES +TETANISING +TETANIZATION +TETANIZATIONS +TETANIZE +TETANIZED +TETANIZES +TETANIZING +TETANOID +TETANUS +TETANUSES +TETANY +TETARTOHEDRAL +TETCHED +TETCHIER +TETCHIEST +TETCHILY +TETCHINESS +TETCHINESSES +TETCHY +TETH +TETHER +TETHERBALL +TETHERBALLS +TETHERED +TETHERING +TETHERS +TETHS +TETOTUM +TETOTUMS +TETRA +TETRACAINE +TETRACAINES +TETRACHLORIDE +TETRACHLORIDES +TETRACHORD +TETRACHORDS +TETRACID +TETRACIDS +TETRACYCLINE +TETRACYCLINES +TETRAD +TETRADIC +TETRADRACHM +TETRADRACHMS +TETRADS +TETRADYNAMOUS +TETRAFLUORIDE +TETRAFLUORIDES +TETRAGON +TETRAGONAL +TETRAGONALLY +TETRAGONS +TETRAGRAM +TETRAGRAMMATON +TETRAGRAMMATONS +TETRAGRAMS +TETRAHEDRA +TETRAHEDRAL +TETRAHEDRALLY +TETRAHEDRITE +TETRAHEDRITES +TETRAHEDRON +TETRAHEDRONS +TETRAHYDROFURAN +TETRAHYMENA +TETRAHYMENAS +TETRALOGIES +TETRALOGY +TETRAMER +TETRAMERIC +TETRAMEROUS +TETRAMERS +TETRAMETER +TETRAMETERS +TETRAMETHYLLEAD +TETRAPLOID +TETRAPLOIDIES +TETRAPLOIDS +TETRAPLOIDY +TETRAPOD +TETRAPODS +TETRAPYRROLE +TETRAPYRROLES +TETRARCH +TETRARCHIC +TETRARCHIES +TETRARCHS +TETRARCHY +TETRAS +TETRASPORE +TETRASPORES +TETRASPORIC +TETRAVALENT +TETRAZOLIUM +TETRAZOLIUMS +TETRAZZINI +TETRI +TETRIS +TETRODE +TETRODES +TETRODOTOXIN +TETRODOTOXINS +TETROXID +TETROXIDE +TETROXIDES +TETROXIDS +TETRYL +TETRYLS +TETS +TETTER +TETTERS +TEUCH +TEUGH +TEUGHLY +TEUTONIZE +TEUTONIZED +TEUTONIZES +TEUTONIZING +TEVATRON +TEVATRONS +TEW +TEWED +TEWING +TEWS +TEXAS +TEXASES +TEXT +TEXTBOOK +TEXTBOOKISH +TEXTBOOKS +TEXTILE +TEXTILES +TEXTLESS +TEXTS +TEXTUAL +TEXTUALLY +TEXTUARIES +TEXTUARY +TEXTURAL +TEXTURALLY +TEXTURE +TEXTURED +TEXTURELESS +TEXTURES +TEXTURING +TEXTURIZE +TEXTURIZED +TEXTURIZES +TEXTURIZING +THACK +THACKED +THACKING +THACKS +THAE +THAIRM +THAIRMS +THALAMI +THALAMIC +THALAMUS +THALASSAEMIA +THALASSAEMIAS +THALASSEMIA +THALASSEMIAS +THALASSEMIC +THALASSEMICS +THALASSIC +THALASSOCRACIES +THALASSOCRACY +THALASSOCRAT +THALASSOCRATS +THALER +THALERS +THALIDOMIDE +THALIDOMIDES +THALLI +THALLIC +THALLIOUS +THALLIUM +THALLIUMS +THALLOID +THALLOPHYTE +THALLOPHYTES +THALLOPHYTIC +THALLOUS +THALLUS +THALLUSES +THALWEG +THALWEGS +THAN +THANAGE +THANAGES +THANATOLOGICAL +THANATOLOGIES +THANATOLOGIST +THANATOLOGISTS +THANATOLOGY +THANATOS +THANATOSES +THANE +THANES +THANESHIP +THANESHIPS +THANK +THANKED +THANKER +THANKERS +THANKFUL +THANKFULLER +THANKFULLEST +THANKFULLY +THANKFULNESS +THANKFULNESSES +THANKING +THANKLESS +THANKLESSLY +THANKLESSNESS +THANKLESSNESSES +THANKS +THANKSGIVING +THANKSGIVINGS +THANKWORTHY +THARM +THARMS +THAT +THATAWAY +THATCH +THATCHED +THATCHER +THATCHERS +THATCHES +THATCHIER +THATCHIEST +THATCHING +THATCHINGS +THATCHY +THAUMATURGE +THAUMATURGES +THAUMATURGIC +THAUMATURGIES +THAUMATURGIST +THAUMATURGISTS +THAUMATURGY +THAW +THAWED +THAWER +THAWERS +THAWING +THAWLESS +THAWS +THE +THEARCHIES +THEARCHY +THEATER +THEATERGOER +THEATERGOERS +THEATERGOING +THEATERGOINGS +THEATERS +THEATRE +THEATRES +THEATRIC +THEATRICAL +THEATRICALISM +THEATRICALISMS +THEATRICALITIES +THEATRICALITY +THEATRICALIZE +THEATRICALIZED +THEATRICALIZES +THEATRICALIZING +THEATRICALLY +THEATRICALS +THEATRICS +THEBAINE +THEBAINES +THEBE +THEBES +THECA +THECAE +THECAL +THECATE +THECODONT +THECODONTS +THEE +THEELIN +THEELINS +THEELOL +THEELOLS +THEFT +THEFTS +THEGN +THEGNLY +THEGNS +THEIN +THEINE +THEINES +THEINS +THEIR +THEIRS +THEIRSELF +THEIRSELVES +THEISM +THEISMS +THEIST +THEISTIC +THEISTICAL +THEISTICALLY +THEISTS +THELITIS +THELITISES +THEM +THEMATIC +THEMATICALLY +THEMATICS +THEME +THEMED +THEMES +THEMING +THEMSELVES +THEN +THENAGE +THENAGES +THENAL +THENAR +THENARS +THENCE +THENCEFORTH +THENCEFORWARD +THENCEFORWARDS +THENS +THEOBROMINE +THEOBROMINES +THEOCENTRIC +THEOCENTRICITY +THEOCENTRISM +THEOCENTRISMS +THEOCRACIES +THEOCRACY +THEOCRAT +THEOCRATIC +THEOCRATICAL +THEOCRATICALLY +THEOCRATS +THEODICIES +THEODICY +THEODOLITE +THEODOLITES +THEOGONIC +THEOGONIES +THEOGONY +THEOLOG +THEOLOGIAN +THEOLOGIANS +THEOLOGIC +THEOLOGICAL +THEOLOGICALLY +THEOLOGIES +THEOLOGISE +THEOLOGISED +THEOLOGISES +THEOLOGISING +THEOLOGIZE +THEOLOGIZED +THEOLOGIZER +THEOLOGIZERS +THEOLOGIZES +THEOLOGIZING +THEOLOGS +THEOLOGUE +THEOLOGUES +THEOLOGY +THEOMACHIES +THEOMACHY +THEONOMIES +THEONOMOUS +THEONOMY +THEOPHANIC +THEOPHANIES +THEOPHANY +THEOPHYLLINE +THEOPHYLLINES +THEORBO +THEORBOS +THEOREM +THEOREMATIC +THEOREMS +THEORETIC +THEORETICAL +THEORETICALLY +THEORETICIAN +THEORETICIANS +THEORIES +THEORISE +THEORISED +THEORISES +THEORISING +THEORIST +THEORISTS +THEORIZATION +THEORIZATIONS +THEORIZE +THEORIZED +THEORIZER +THEORIZERS +THEORIZES +THEORIZING +THEORY +THEOSOPHICAL +THEOSOPHICALLY +THEOSOPHIES +THEOSOPHIST +THEOSOPHISTS +THEOSOPHY +THERAPEUSES +THERAPEUSIS +THERAPEUTIC +THERAPEUTICALLY +THERAPEUTICS +THERAPIES +THERAPIST +THERAPISTS +THERAPSID +THERAPSIDS +THERAPY +THERE +THEREABOUT +THEREABOUTS +THEREAFTER +THEREAT +THEREBY +THEREFOR +THEREFORE +THEREFROM +THEREIN +THEREINAFTER +THEREINTO +THEREMIN +THEREMINS +THEREOF +THEREON +THERES +THERETO +THERETOFORE +THEREUNDER +THEREUNTO +THEREUPON +THEREWITH +THEREWITHAL +THERIAC +THERIACA +THERIACAL +THERIACAS +THERIACS +THERIAN +THERIANS +THERIOMORPHIC +THERM +THERMAE +THERMAL +THERMALIZATION +THERMALIZATIONS +THERMALIZE +THERMALIZED +THERMALIZES +THERMALIZING +THERMALLY +THERMALS +THERME +THERMEL +THERMELS +THERMES +THERMIC +THERMICALLY +THERMIDOR +THERMIDORS +THERMION +THERMIONIC +THERMIONICS +THERMIONS +THERMISTOR +THERMISTORS +THERMIT +THERMITE +THERMITES +THERMITS +THERMOCHEMICAL +THERMOCHEMIST +THERMOCHEMISTRY +THERMOCHEMISTS +THERMOCLINE +THERMOCLINES +THERMOCOUPLE +THERMOCOUPLES +THERMODURIC +THERMODYNAMIC +THERMODYNAMICAL +THERMODYNAMICS +THERMOELECTRIC +THERMOELEMENT +THERMOELEMENTS +THERMOFORM +THERMOFORMABLE +THERMOFORMED +THERMOFORMING +THERMOFORMS +THERMOGRAM +THERMOGRAMS +THERMOGRAPH +THERMOGRAPHER +THERMOGRAPHERS +THERMOGRAPHIC +THERMOGRAPHIES +THERMOGRAPHS +THERMOGRAPHY +THERMOHALINE +THERMOJUNCTION +THERMOJUNCTIONS +THERMOLABILE +THERMOLABILITY +THERMOMAGNETIC +THERMOMETER +THERMOMETERS +THERMOMETRIC +THERMOMETRIES +THERMOMETRY +THERMONUCLEAR +THERMOPERIODISM +THERMOPHILE +THERMOPHILES +THERMOPHILIC +THERMOPHILOUS +THERMOPILE +THERMOPILES +THERMOPLASTIC +THERMOPLASTICS +THERMORECEPTOR +THERMORECEPTORS +THERMOREGULATE +THERMOREGULATED +THERMOREGULATES +THERMOREGULATOR +THERMOREMANENCE +THERMOREMANENT +THERMOS +THERMOSCOPE +THERMOSCOPES +THERMOSES +THERMOSET +THERMOSETS +THERMOSETTING +THERMOSPHERE +THERMOSPHERES +THERMOSPHERIC +THERMOSTABILITY +THERMOSTABLE +THERMOSTAT +THERMOSTATED +THERMOSTATIC +THERMOSTATING +THERMOSTATS +THERMOSTATTED +THERMOSTATTING +THERMOTACTIC +THERMOTAXES +THERMOTAXIS +THERMOTROPIC +THERMOTROPISM +THERMOTROPISMS +THERMS +THEROID +THEROPOD +THEROPODS +THESAURAL +THESAURI +THESAURUS +THESAURUSES +THESE +THESES +THESIS +THESP +THESPIAN +THESPIANS +THESPS +THETA +THETAS +THETIC +THETICAL +THETICALLY +THEURGIC +THEURGICAL +THEURGIES +THEURGIST +THEURGISTS +THEURGY +THEW +THEWIER +THEWIEST +THEWLESS +THEWS +THEWY +THEY +THIABENDAZOLE +THIABENDAZOLES +THIAMIN +THIAMINASE +THIAMINASES +THIAMINE +THIAMINES +THIAMINS +THIAZIDE +THIAZIDES +THIAZIN +THIAZINE +THIAZINES +THIAZINS +THIAZOL +THIAZOLE +THIAZOLES +THIAZOLS +THICK +THICKEN +THICKENED +THICKENER +THICKENERS +THICKENING +THICKENINGS +THICKENS +THICKER +THICKEST +THICKET +THICKETED +THICKETS +THICKETY +THICKHEAD +THICKHEADED +THICKHEADS +THICKISH +THICKLY +THICKNESS +THICKNESSES +THICKS +THICKSET +THICKSETS +THIEF +THIEVE +THIEVED +THIEVERIES +THIEVERY +THIEVES +THIEVING +THIEVISH +THIEVISHLY +THIEVISHNESS +THIEVISHNESSES +THIGH +THIGHBONE +THIGHBONES +THIGHED +THIGHS +THIGMOTAXES +THIGMOTAXIS +THIGMOTROPISM +THIGMOTROPISMS +THILL +THILLS +THIMBLE +THIMBLEBERRIES +THIMBLEBERRY +THIMBLEFUL +THIMBLEFULS +THIMBLERIG +THIMBLERIGGED +THIMBLERIGGER +THIMBLERIGGERS +THIMBLERIGGING +THIMBLERIGS +THIMBLES +THIMBLESFUL +THIMBLEWEED +THIMBLEWEEDS +THIMEROSAL +THIMEROSALS +THIN +THINCLAD +THINCLADS +THINDOWN +THINDOWNS +THINE +THING +THINGAMABOB +THINGAMABOBS +THINGAMAJIG +THINGAMAJIGS +THINGNESS +THINGNESSES +THINGS +THINGUMAJIG +THINGUMAJIGS +THINGUMMIES +THINGUMMY +THINK +THINKABLE +THINKABLENESS +THINKABLENESSES +THINKABLY +THINKER +THINKERS +THINKING +THINKINGLY +THINKINGNESS +THINKINGNESSES +THINKINGS +THINKS +THINLY +THINNED +THINNER +THINNERS +THINNESS +THINNESSES +THINNEST +THINNING +THINNISH +THINS +THIO +THIOCYANATE +THIOCYANATES +THIOL +THIOLIC +THIOLS +THIONATE +THIONATES +THIONIC +THIONIN +THIONINE +THIONINES +THIONINS +THIONYL +THIONYLS +THIOPENTAL +THIOPENTALS +THIOPHEN +THIOPHENE +THIOPHENES +THIOPHENS +THIORIDAZINE +THIORIDAZINES +THIOSULFATE +THIOSULFATES +THIOTEPA +THIOTEPAS +THIOURACIL +THIOURACILS +THIOUREA +THIOUREAS +THIR +THIRAM +THIRAMS +THIRD +THIRDHAND +THIRDLY +THIRDS +THIRL +THIRLAGE +THIRLAGES +THIRLED +THIRLING +THIRLS +THIRST +THIRSTED +THIRSTER +THIRSTERS +THIRSTIER +THIRSTIEST +THIRSTILY +THIRSTINESS +THIRSTINESSES +THIRSTING +THIRSTS +THIRSTY +THIRTEEN +THIRTEENS +THIRTEENTH +THIRTEENTHS +THIRTIES +THIRTIETH +THIRTIETHS +THIRTY +THIRTYISH +THIS +THISAWAY +THISTLE +THISTLEDOWN +THISTLEDOWNS +THISTLES +THISTLIER +THISTLIEST +THISTLY +THITHER +THITHERTO +THITHERWARD +THITHERWARDS +THIXOTROPIC +THIXOTROPIES +THIXOTROPY +THO +THOLE +THOLED +THOLEIITE +THOLEIITES +THOLEIITIC +THOLEPIN +THOLEPINS +THOLES +THOLING +THOLOI +THOLOS +THONG +THONGED +THONGS +THORACAL +THORACES +THORACIC +THORACICALLY +THORACOTOMIES +THORACOTOMY +THORAX +THORAXES +THORIA +THORIANITE +THORIANITES +THORIAS +THORIC +THORITE +THORITES +THORIUM +THORIUMS +THORN +THORNBACK +THORNBACKS +THORNBUSH +THORNBUSHES +THORNED +THORNIER +THORNIEST +THORNILY +THORNINESS +THORNINESSES +THORNING +THORNLESS +THORNLIKE +THORNS +THORNY +THORO +THORON +THORONS +THOROUGH +THOROUGHBASS +THOROUGHBASSES +THOROUGHBRACE +THOROUGHBRACES +THOROUGHBRED +THOROUGHBREDS +THOROUGHER +THOROUGHEST +THOROUGHFARE +THOROUGHFARES +THOROUGHGOING +THOROUGHLY +THOROUGHNESS +THOROUGHNESSES +THOROUGHPIN +THOROUGHPINS +THOROUGHWORT +THOROUGHWORTS +THORP +THORPE +THORPES +THORPS +THOSE +THOU +THOUED +THOUGH +THOUGHT +THOUGHTFUL +THOUGHTFULLY +THOUGHTFULNESS +THOUGHTLESS +THOUGHTLESSLY +THOUGHTLESSNESS +THOUGHTS +THOUGHTWAY +THOUGHTWAYS +THOUING +THOUS +THOUSAND +THOUSANDFOLD +THOUSANDS +THOUSANDTH +THOUSANDTHS +THOWLESS +THRALDOM +THRALDOMS +THRALL +THRALLDOM +THRALLDOMS +THRALLED +THRALLING +THRALLS +THRASH +THRASHED +THRASHER +THRASHERS +THRASHES +THRASHING +THRASHINGS +THRASONICAL +THRASONICALLY +THRAVE +THRAVES +THRAW +THRAWART +THRAWED +THRAWING +THRAWN +THRAWNLY +THRAWS +THREAD +THREADBARE +THREADBARENESS +THREADED +THREADER +THREADERS +THREADFIN +THREADFINS +THREADIER +THREADIEST +THREADINESS +THREADINESSES +THREADING +THREADLESS +THREADLIKE +THREADS +THREADWORM +THREADWORMS +THREADY +THREAP +THREAPED +THREAPER +THREAPERS +THREAPING +THREAPS +THREAT +THREATED +THREATEN +THREATENED +THREATENER +THREATENERS +THREATENING +THREATENINGLY +THREATENS +THREATING +THREATS +THREE +THREEFOLD +THREEP +THREEPED +THREEPENCE +THREEPENCES +THREEPENNY +THREEPING +THREEPS +THREES +THREESCORE +THREESOME +THREESOMES +THRENODE +THRENODES +THRENODIC +THRENODIES +THRENODIST +THRENODISTS +THRENODY +THREONINE +THREONINES +THRESH +THRESHED +THRESHER +THRESHERS +THRESHES +THRESHING +THRESHOLD +THRESHOLDS +THREW +THRICE +THRIFT +THRIFTIER +THRIFTIEST +THRIFTILY +THRIFTINESS +THRIFTINESSES +THRIFTLESS +THRIFTLESSLY +THRIFTLESSNESS +THRIFTS +THRIFTY +THRILL +THRILLED +THRILLER +THRILLERS +THRILLING +THRILLINGLY +THRILLS +THRIP +THRIPS +THRIVE +THRIVED +THRIVEN +THRIVER +THRIVERS +THRIVES +THRIVING +THRIVINGLY +THRO +THROAT +THROATED +THROATIER +THROATIEST +THROATILY +THROATINESS +THROATINESSES +THROATING +THROATLATCH +THROATLATCHES +THROATS +THROATY +THROB +THROBBED +THROBBER +THROBBERS +THROBBING +THROBS +THROE +THROES +THROMBI +THROMBIN +THROMBINS +THROMBOCYTE +THROMBOCYTES +THROMBOCYTIC +THROMBOEMBOLIC +THROMBOEMBOLISM +THROMBOKINASE +THROMBOKINASES +THROMBOLYTIC +THROMBOPLASTIC +THROMBOPLASTIN +THROMBOPLASTINS +THROMBOSE +THROMBOSED +THROMBOSES +THROMBOSING +THROMBOSIS +THROMBOTIC +THROMBOXANE +THROMBOXANES +THROMBUS +THRONE +THRONED +THRONES +THRONG +THRONGED +THRONGING +THRONGS +THRONING +THROSTLE +THROSTLES +THROTTLE +THROTTLEABLE +THROTTLED +THROTTLEHOLD +THROTTLEHOLDS +THROTTLER +THROTTLERS +THROTTLES +THROTTLING +THROUGH +THROUGHITHER +THROUGHLY +THROUGHOTHER +THROUGHOUT +THROUGHPUT +THROUGHPUTS +THROVE +THROW +THROWAWAY +THROWAWAYS +THROWBACK +THROWBACKS +THROWER +THROWERS +THROWING +THROWN +THROWS +THROWSTER +THROWSTERS +THRU +THRUM +THRUMMED +THRUMMER +THRUMMERS +THRUMMIER +THRUMMIEST +THRUMMING +THRUMMY +THRUMS +THRUPUT +THRUPUTS +THRUSH +THRUSHES +THRUST +THRUSTED +THRUSTER +THRUSTERS +THRUSTFUL +THRUSTING +THRUSTOR +THRUSTORS +THRUSTS +THRUWAY +THRUWAYS +THUD +THUDDED +THUDDING +THUDS +THUG +THUGGEE +THUGGEES +THUGGERIES +THUGGERY +THUGGISH +THUGS +THUJA +THUJAS +THULIA +THULIAS +THULIUM +THULIUMS +THUMB +THUMBED +THUMBHOLE +THUMBHOLES +THUMBING +THUMBKIN +THUMBKINS +THUMBLESS +THUMBNAIL +THUMBNAILS +THUMBNUT +THUMBNUTS +THUMBPRINT +THUMBPRINTS +THUMBS +THUMBSCREW +THUMBSCREWS +THUMBTACK +THUMBTACKED +THUMBTACKING +THUMBTACKS +THUMBWHEEL +THUMBWHEELS +THUMP +THUMPED +THUMPER +THUMPERS +THUMPING +THUMPS +THUNDER +THUNDERBIRD +THUNDERBIRDS +THUNDERBOLT +THUNDERBOLTS +THUNDERCLAP +THUNDERCLAPS +THUNDERCLOUD +THUNDERCLOUDS +THUNDERED +THUNDERER +THUNDERERS +THUNDERHEAD +THUNDERHEADS +THUNDERING +THUNDERINGLY +THUNDEROUS +THUNDEROUSLY +THUNDERS +THUNDERSHOWER +THUNDERSHOWERS +THUNDERSTONE +THUNDERSTONES +THUNDERSTORM +THUNDERSTORMS +THUNDERSTRICKEN +THUNDERSTRIKE +THUNDERSTRIKES +THUNDERSTRIKING +THUNDERSTROKE +THUNDERSTROKES +THUNDERSTRUCK +THUNDERY +THUNK +THUNKED +THUNKING +THUNKS +THURIBLE +THURIBLES +THURIFER +THURIFERS +THURL +THURLS +THUS +THUSLY +THUYA +THUYAS +THWACK +THWACKED +THWACKER +THWACKERS +THWACKING +THWACKS +THWART +THWARTED +THWARTER +THWARTERS +THWARTING +THWARTLY +THWARTS +THWARTWISE +THY +THYLACINE +THYLACINES +THYLAKOID +THYLAKOIDS +THYME +THYMECTOMIES +THYMECTOMIZE +THYMECTOMIZED +THYMECTOMIZES +THYMECTOMIZING +THYMECTOMY +THYMES +THYMEY +THYMI +THYMIC +THYMIDINE +THYMIDINES +THYMIER +THYMIEST +THYMINE +THYMINES +THYMOCYTE +THYMOCYTES +THYMOL +THYMOLS +THYMOSIN +THYMOSINS +THYMUS +THYMUSES +THYMY +THYRATRON +THYRATRONS +THYREOID +THYRISTOR +THYRISTORS +THYROCALCITONIN +THYROGLOBULIN +THYROGLOBULINS +THYROID +THYROIDAL +THYROIDECTOMIES +THYROIDECTOMY +THYROIDITIS +THYROIDITISES +THYROIDS +THYROTOXICOSES +THYROTOXICOSIS +THYROTROPHIC +THYROTROPHIN +THYROTROPHINS +THYROTROPIC +THYROTROPIN +THYROTROPINS +THYROXIN +THYROXINE +THYROXINES +THYROXINS +THYRSE +THYRSES +THYRSI +THYRSOID +THYRSUS +THYSANURAN +THYSANURANS +THYSELF +TI +TIARA +TIARAED +TIARAS +TIBIA +TIBIAE +TIBIAL +TIBIAS +TIBIOFIBULA +TIBIOFIBULAE +TIBIOFIBULAS +TIC +TICAL +TICALS +TICCED +TICCING +TICK +TICKED +TICKER +TICKERS +TICKET +TICKETED +TICKETING +TICKETLESS +TICKETS +TICKING +TICKINGS +TICKLE +TICKLED +TICKLER +TICKLERS +TICKLES +TICKLING +TICKLISH +TICKLISHLY +TICKLISHNESS +TICKLISHNESSES +TICKS +TICKSEED +TICKSEEDS +TICKTACK +TICKTACKED +TICKTACKING +TICKTACKS +TICKTACKTOE +TICKTACKTOES +TICKTOCK +TICKTOCKED +TICKTOCKING +TICKTOCKS +TICS +TICTAC +TICTACKED +TICTACKING +TICTACS +TICTOC +TICTOCKED +TICTOCKING +TICTOCS +TIDAL +TIDALLY +TIDBIT +TIDBITS +TIDDLEDYWINKS +TIDDLER +TIDDLERS +TIDDLY +TIDDLYWINKS +TIDE +TIDED +TIDELAND +TIDELANDS +TIDELESS +TIDELIKE +TIDEMARK +TIDEMARKS +TIDERIP +TIDERIPS +TIDES +TIDEWATER +TIDEWATERS +TIDEWAY +TIDEWAYS +TIDIED +TIDIER +TIDIERS +TIDIES +TIDIEST +TIDILY +TIDINESS +TIDINESSES +TIDING +TIDINGS +TIDY +TIDYING +TIDYTIPS +TIE +TIEBACK +TIEBACKS +TIEBREAK +TIEBREAKER +TIEBREAKERS +TIEBREAKS +TIECLASP +TIECLASPS +TIED +TIEING +TIELESS +TIEMANNITE +TIEMANNITES +TIEPIN +TIEPINS +TIER +TIERCE +TIERCED +TIERCEL +TIERCELS +TIERCERON +TIERCERONS +TIERCES +TIERED +TIERING +TIERS +TIES +TIFF +TIFFANIES +TIFFANY +TIFFED +TIFFIN +TIFFINED +TIFFING +TIFFINING +TIFFINS +TIFFS +TIGER +TIGEREYE +TIGEREYES +TIGERISH +TIGERISHLY +TIGERISHNESS +TIGERISHNESSES +TIGERLIKE +TIGERS +TIGHT +TIGHTEN +TIGHTENED +TIGHTENER +TIGHTENERS +TIGHTENING +TIGHTENS +TIGHTER +TIGHTEST +TIGHTFISTED +TIGHTFISTEDNESS +TIGHTKNIT +TIGHTLY +TIGHTNESS +TIGHTNESSES +TIGHTROPE +TIGHTROPES +TIGHTS +TIGHTWAD +TIGHTWADS +TIGHTWIRE +TIGHTWIRES +TIGLON +TIGLONS +TIGON +TIGONS +TIGRESS +TIGRESSES +TIGRISH +TIKE +TIKES +TIKI +TIKIS +TIKKA +TIKKAS +TIL +TILAK +TILAKS +TILAPIA +TILAPIAS +TILBURIES +TILBURY +TILDE +TILDES +TILE +TILED +TILEFISH +TILEFISHES +TILELIKE +TILER +TILERS +TILES +TILING +TILINGS +TILL +TILLABLE +TILLAGE +TILLAGES +TILLANDSIA +TILLANDSIAS +TILLED +TILLER +TILLERED +TILLERING +TILLERMAN +TILLERMEN +TILLERS +TILLING +TILLITE +TILLITES +TILLS +TILS +TILT +TILTABLE +TILTED +TILTER +TILTERS +TILTH +TILTHS +TILTING +TILTMETER +TILTMETERS +TILTROTOR +TILTROTORS +TILTS +TILTYARD +TILTYARDS +TIMARAU +TIMARAUS +TIMBAL +TIMBALE +TIMBALES +TIMBALS +TIMBER +TIMBERDOODLE +TIMBERDOODLES +TIMBERED +TIMBERHEAD +TIMBERHEADS +TIMBERING +TIMBERINGS +TIMBERLAND +TIMBERLANDS +TIMBERLINE +TIMBERLINES +TIMBERMAN +TIMBERMEN +TIMBERS +TIMBERWORK +TIMBERWORKS +TIMBERY +TIMBRAL +TIMBRE +TIMBREL +TIMBRELLED +TIMBRELS +TIMBRES +TIME +TIMECARD +TIMECARDS +TIMED +TIMEKEEPER +TIMEKEEPERS +TIMEKEEPING +TIMEKEEPINGS +TIMELESS +TIMELESSLY +TIMELESSNESS +TIMELESSNESSES +TIMELIER +TIMELIEST +TIMELINE +TIMELINES +TIMELINESS +TIMELINESSES +TIMELY +TIMEOUS +TIMEOUSLY +TIMEOUT +TIMEOUTS +TIMEPIECE +TIMEPIECES +TIMEPLEASER +TIMEPLEASERS +TIMER +TIMERS +TIMES +TIMESAVER +TIMESAVERS +TIMESAVING +TIMESCALE +TIMESCALES +TIMESERVER +TIMESERVERS +TIMESERVING +TIMESERVINGS +TIMETABLE +TIMETABLES +TIMEWORK +TIMEWORKER +TIMEWORKERS +TIMEWORKS +TIMEWORN +TIMID +TIMIDER +TIMIDEST +TIMIDITIES +TIMIDITY +TIMIDLY +TIMIDNESS +TIMIDNESSES +TIMING +TIMINGS +TIMOCRACIES +TIMOCRACY +TIMOCRATIC +TIMOCRATICAL +TIMOLOL +TIMOLOLS +TIMOROUS +TIMOROUSLY +TIMOROUSNESS +TIMOROUSNESSES +TIMOTHIES +TIMOTHY +TIMPANA +TIMPANI +TIMPANIST +TIMPANISTS +TIMPANO +TIMPANUM +TIMPANUMS +TIN +TINAMOU +TINAMOUS +TINCAL +TINCALS +TINCT +TINCTED +TINCTING +TINCTORIAL +TINCTORIALLY +TINCTS +TINCTURE +TINCTURED +TINCTURES +TINCTURING +TINDER +TINDERBOX +TINDERBOXES +TINDERS +TINDERY +TINE +TINEA +TINEAL +TINEAS +TINED +TINEID +TINEIDS +TINES +TINFOIL +TINFOILS +TINFUL +TINFULS +TING +TINGE +TINGED +TINGEING +TINGES +TINGING +TINGLE +TINGLED +TINGLER +TINGLERS +TINGLES +TINGLIER +TINGLIEST +TINGLING +TINGLINGLY +TINGLY +TINGS +TINHORN +TINHORNS +TINIER +TINIEST +TINILY +TININESS +TININESSES +TINING +TINKER +TINKERED +TINKERER +TINKERERS +TINKERING +TINKERS +TINKERTOY +TINKERTOYS +TINKLE +TINKLED +TINKLER +TINKLERS +TINKLES +TINKLIER +TINKLIEST +TINKLING +TINKLINGS +TINKLY +TINLIKE +TINMAN +TINMEN +TINNED +TINNER +TINNERS +TINNIER +TINNIEST +TINNILY +TINNINESS +TINNINESSES +TINNING +TINNITUS +TINNITUSES +TINNY +TINPLATE +TINPLATES +TINPOT +TINS +TINSEL +TINSELED +TINSELING +TINSELLED +TINSELLING +TINSELLY +TINSELS +TINSMITH +TINSMITHING +TINSMITHINGS +TINSMITHS +TINSNIPS +TINSTONE +TINSTONES +TINT +TINTED +TINTER +TINTERS +TINTING +TINTINGS +TINTINNABULARY +TINTLESS +TINTS +TINTYPE +TINTYPES +TINWARE +TINWARES +TINWORK +TINWORKS +TINY +TIP +TIPCART +TIPCARTS +TIPCAT +TIPCATS +TIPI +TIPIS +TIPLESS +TIPOFF +TIPOFFS +TIPPABLE +TIPPED +TIPPER +TIPPERS +TIPPET +TIPPETS +TIPPIER +TIPPIEST +TIPPING +TIPPLE +TIPPLED +TIPPLER +TIPPLERS +TIPPLES +TIPPLING +TIPPY +TIPPYTOE +TIPPYTOED +TIPPYTOEING +TIPPYTOES +TIPS +TIPSHEET +TIPSHEETS +TIPSIER +TIPSIEST +TIPSILY +TIPSINESS +TIPSINESSES +TIPSTAFF +TIPSTAFFS +TIPSTAVES +TIPSTER +TIPSTERS +TIPSTOCK +TIPSTOCKS +TIPSY +TIPTOE +TIPTOED +TIPTOEING +TIPTOES +TIPTOP +TIPTOPS +TIRADE +TIRADES +TIRAMISU +TIRAMISUS +TIRE +TIRED +TIREDER +TIREDEST +TIREDLY +TIREDNESS +TIREDNESSES +TIRELESS +TIRELESSLY +TIRELESSNESS +TIRELESSNESSES +TIRES +TIRESOME +TIRESOMELY +TIRESOMENESS +TIRESOMENESSES +TIREWOMAN +TIREWOMEN +TIRING +TIRL +TIRLED +TIRLING +TIRLS +TIRO +TIROS +TIRRIVEE +TIRRIVEES +TIS +TISANE +TISANES +TISSUAL +TISSUE +TISSUED +TISSUES +TISSUEY +TISSUING +TISSULAR +TIT +TITAN +TITANATE +TITANATES +TITANESS +TITANESSES +TITANIA +TITANIAS +TITANIC +TITANICALLY +TITANIFEROUS +TITANISM +TITANISMS +TITANITE +TITANITES +TITANIUM +TITANIUMS +TITANOUS +TITANS +TITBIT +TITBITS +TITER +TITERS +TITFER +TITFERS +TITHABLE +TITHE +TITHED +TITHER +TITHERS +TITHES +TITHING +TITHINGS +TITHONIA +TITHONIAS +TITI +TITIAN +TITIANS +TITILLATE +TITILLATED +TITILLATES +TITILLATING +TITILLATINGLY +TITILLATION +TITILLATIONS +TITILLATIVE +TITIS +TITIVATE +TITIVATED +TITIVATES +TITIVATING +TITIVATION +TITIVATIONS +TITLARK +TITLARKS +TITLE +TITLED +TITLEHOLDER +TITLEHOLDERS +TITLES +TITLING +TITLIST +TITLISTS +TITMAN +TITMEN +TITMICE +TITMOUSE +TITRABLE +TITRANT +TITRANTS +TITRATABLE +TITRATE +TITRATED +TITRATES +TITRATING +TITRATION +TITRATIONS +TITRATOR +TITRATORS +TITRE +TITRES +TITRIMETRIC +TITS +TITTER +TITTERED +TITTERER +TITTERERS +TITTERING +TITTERS +TITTIE +TITTIES +TITTIVATE +TITTIVATED +TITTIVATES +TITTIVATING +TITTLE +TITTLES +TITTUP +TITTUPED +TITTUPING +TITTUPPED +TITTUPPING +TITTUPPY +TITTUPS +TITTY +TITUBANT +TITULAR +TITULARIES +TITULARLY +TITULARS +TITULARY +TIVY +TIZZIES +TIZZY +TMESES +TMESIS +TO +TOAD +TOADEATER +TOADEATERS +TOADFISH +TOADFISHES +TOADFLAX +TOADFLAXES +TOADIED +TOADIES +TOADISH +TOADLESS +TOADLIKE +TOADS +TOADSTONE +TOADSTONES +TOADSTOOL +TOADSTOOLS +TOADY +TOADYING +TOADYISH +TOADYISM +TOADYISMS +TOAST +TOASTED +TOASTER +TOASTERS +TOASTIER +TOASTIEST +TOASTING +TOASTMASTER +TOASTMASTERS +TOASTMISTRESS +TOASTMISTRESSES +TOASTS +TOASTY +TOBACCO +TOBACCOES +TOBACCONIST +TOBACCONISTS +TOBACCOS +TOBIES +TOBOGGAN +TOBOGGANED +TOBOGGANER +TOBOGGANERS +TOBOGGANING +TOBOGGANINGS +TOBOGGANIST +TOBOGGANISTS +TOBOGGANS +TOBY +TOCCATA +TOCCATAS +TOCCATE +TOCHER +TOCHERED +TOCHERING +TOCHERS +TOCOLOGIES +TOCOLOGY +TOCOPHEROL +TOCOPHEROLS +TOCSIN +TOCSINS +TOD +TODAY +TODAYS +TODDIES +TODDLE +TODDLED +TODDLER +TODDLERHOOD +TODDLERHOODS +TODDLERS +TODDLES +TODDLING +TODDY +TODIES +TODS +TODY +TOE +TOEA +TOEAS +TOECAP +TOECAPS +TOED +TOEHOLD +TOEHOLDS +TOEING +TOELESS +TOELIKE +TOENAIL +TOENAILED +TOENAILING +TOENAILS +TOEPIECE +TOEPIECES +TOEPLATE +TOEPLATES +TOES +TOESHOE +TOESHOES +TOFF +TOFFEE +TOFFEES +TOFFIES +TOFFS +TOFFY +TOFT +TOFTS +TOFU +TOFUS +TOFUTTI +TOFUTTIS +TOG +TOGA +TOGAE +TOGAED +TOGAS +TOGATE +TOGATED +TOGAVIRUS +TOGAVIRUSES +TOGETHER +TOGETHERNESS +TOGETHERNESSES +TOGGED +TOGGERIES +TOGGERY +TOGGING +TOGGLE +TOGGLED +TOGGLER +TOGGLERS +TOGGLES +TOGGLING +TOGS +TOGUE +TOGUES +TOIL +TOILE +TOILED +TOILER +TOILERS +TOILES +TOILET +TOILETED +TOILETING +TOILETRIES +TOILETRY +TOILETS +TOILETTE +TOILETTES +TOILFUL +TOILFULLY +TOILING +TOILS +TOILSOME +TOILSOMELY +TOILSOMENESS +TOILSOMENESSES +TOILWORN +TOIT +TOITED +TOITING +TOITS +TOKAMAK +TOKAMAKS +TOKAY +TOKAYS +TOKE +TOKED +TOKEN +TOKENED +TOKENING +TOKENISM +TOKENISMS +TOKENS +TOKER +TOKERS +TOKES +TOKING +TOKOLOGIES +TOKOLOGY +TOKOMAK +TOKOMAKS +TOKONOMA +TOKONOMAS +TOLA +TOLAN +TOLANE +TOLANES +TOLANS +TOLAR +TOLARJEV +TOLARS +TOLAS +TOLBOOTH +TOLBOOTHS +TOLBUTAMIDE +TOLBUTAMIDES +TOLD +TOLE +TOLED +TOLEDO +TOLEDOS +TOLERABILITIES +TOLERABILITY +TOLERABLE +TOLERABLY +TOLERANCE +TOLERANCES +TOLERANT +TOLERANTLY +TOLERATE +TOLERATED +TOLERATES +TOLERATING +TOLERATION +TOLERATIONS +TOLERATIVE +TOLERATOR +TOLERATORS +TOLES +TOLIDIN +TOLIDINE +TOLIDINES +TOLIDINS +TOLING +TOLL +TOLLAGE +TOLLAGES +TOLLBAR +TOLLBARS +TOLLBOOTH +TOLLBOOTHS +TOLLED +TOLLER +TOLLERS +TOLLGATE +TOLLGATES +TOLLHOUSE +TOLLHOUSES +TOLLING +TOLLMAN +TOLLMEN +TOLLS +TOLLWAY +TOLLWAYS +TOLU +TOLUATE +TOLUATES +TOLUENE +TOLUENES +TOLUIC +TOLUID +TOLUIDE +TOLUIDES +TOLUIDIDE +TOLUIDIDES +TOLUIDIN +TOLUIDINE +TOLUIDINES +TOLUIDINS +TOLUIDS +TOLUOL +TOLUOLE +TOLUOLES +TOLUOLS +TOLUS +TOLUYL +TOLUYLS +TOLYL +TOLYLS +TOM +TOMAHAWK +TOMAHAWKED +TOMAHAWKING +TOMAHAWKS +TOMALLEY +TOMALLEYS +TOMAN +TOMANS +TOMATILLO +TOMATILLOES +TOMATILLOS +TOMATO +TOMATOES +TOMATOEY +TOMB +TOMBAC +TOMBACK +TOMBACKS +TOMBACS +TOMBAK +TOMBAKS +TOMBAL +TOMBED +TOMBING +TOMBLESS +TOMBLIKE +TOMBOLA +TOMBOLAS +TOMBOLO +TOMBOLOS +TOMBOY +TOMBOYISH +TOMBOYISHNESS +TOMBOYISHNESSES +TOMBOYS +TOMBS +TOMBSTONE +TOMBSTONES +TOMCAT +TOMCATS +TOMCATTED +TOMCATTING +TOMCOD +TOMCODS +TOME +TOMENTA +TOMENTOSE +TOMENTUM +TOMES +TOMFOOL +TOMFOOLERIES +TOMFOOLERY +TOMFOOLS +TOMMED +TOMMIES +TOMMING +TOMMY +TOMMYROT +TOMMYROTS +TOMOGRAM +TOMOGRAMS +TOMOGRAPH +TOMOGRAPHIC +TOMOGRAPHIES +TOMOGRAPHS +TOMOGRAPHY +TOMORROW +TOMORROWS +TOMPION +TOMPIONS +TOMS +TOMTIT +TOMTITS +TON +TONAL +TONALITIES +TONALITY +TONALLY +TONDI +TONDO +TONDOS +TONE +TONEARM +TONEARMS +TONED +TONELESS +TONELESSLY +TONELESSNESS +TONELESSNESSES +TONEME +TONEMES +TONEMIC +TONER +TONERS +TONES +TONETIC +TONETICALLY +TONETICS +TONETTE +TONETTES +TONEY +TONG +TONGA +TONGAS +TONGED +TONGER +TONGERS +TONGING +TONGMAN +TONGMEN +TONGS +TONGUE +TONGUED +TONGUELESS +TONGUELIKE +TONGUES +TONGUING +TONGUINGS +TONIC +TONICALLY +TONICITIES +TONICITY +TONICS +TONIER +TONIEST +TONIGHT +TONIGHTS +TONING +TONISH +TONISHLY +TONLET +TONLETS +TONNAGE +TONNAGES +TONNE +TONNEAU +TONNEAUS +TONNEAUX +TONNER +TONNERS +TONNES +TONNISH +TONOMETER +TONOMETERS +TONOMETRIES +TONOMETRY +TONOPLAST +TONOPLASTS +TONS +TONSIL +TONSILAR +TONSILLAR +TONSILLECTOMIES +TONSILLECTOMY +TONSILLITIS +TONSILLITISES +TONSILS +TONSORIAL +TONSURE +TONSURED +TONSURES +TONSURING +TONTINE +TONTINES +TONUS +TONUSES +TONY +TOO +TOOK +TOOL +TOOLBAR +TOOLBARS +TOOLBOX +TOOLBOXES +TOOLED +TOOLER +TOOLERS +TOOLHEAD +TOOLHEADS +TOOLHOLDER +TOOLHOLDERS +TOOLHOUSE +TOOLHOUSES +TOOLING +TOOLINGS +TOOLLESS +TOOLMAKER +TOOLMAKERS +TOOLMAKING +TOOLMAKINGS +TOOLROOM +TOOLROOMS +TOOLS +TOOLSHED +TOOLSHEDS +TOOM +TOON +TOONIE +TOONIES +TOONS +TOOT +TOOTED +TOOTER +TOOTERS +TOOTH +TOOTHACHE +TOOTHACHES +TOOTHBRUSH +TOOTHBRUSHES +TOOTHBRUSHING +TOOTHBRUSHINGS +TOOTHED +TOOTHIER +TOOTHIEST +TOOTHILY +TOOTHING +TOOTHLESS +TOOTHLIKE +TOOTHPASTE +TOOTHPASTES +TOOTHPICK +TOOTHPICKS +TOOTHS +TOOTHSOME +TOOTHSOMELY +TOOTHSOMENESS +TOOTHSOMENESSES +TOOTHWORT +TOOTHWORTS +TOOTHY +TOOTING +TOOTLE +TOOTLED +TOOTLER +TOOTLERS +TOOTLES +TOOTLING +TOOTS +TOOTSES +TOOTSIE +TOOTSIES +TOOTSY +TOP +TOPAZ +TOPAZES +TOPAZINE +TOPCOAT +TOPCOATS +TOPCROSS +TOPCROSSES +TOPDRESSING +TOPDRESSINGS +TOPE +TOPED +TOPEE +TOPEES +TOPER +TOPERS +TOPES +TOPFLIGHT +TOPFUL +TOPFULL +TOPGALLANT +TOPGALLANTS +TOPH +TOPHE +TOPHES +TOPHI +TOPHS +TOPHUS +TOPI +TOPIARIES +TOPIARY +TOPIC +TOPICAL +TOPICALITIES +TOPICALITY +TOPICALLY +TOPICS +TOPING +TOPIS +TOPKICK +TOPKICKS +TOPKNOT +TOPKNOTS +TOPLESS +TOPLESSNESS +TOPLESSNESSES +TOPLINE +TOPLINES +TOPLOFTICAL +TOPLOFTIER +TOPLOFTIEST +TOPLOFTILY +TOPLOFTINESS +TOPLOFTINESSES +TOPLOFTY +TOPMAST +TOPMASTS +TOPMINNOW +TOPMINNOWS +TOPMOST +TOPNOTCH +TOPNOTCHER +TOPNOTCHERS +TOPO +TOPOCENTRIC +TOPOGRAPH +TOPOGRAPHER +TOPOGRAPHERS +TOPOGRAPHIC +TOPOGRAPHICAL +TOPOGRAPHICALLY +TOPOGRAPHIES +TOPOGRAPHS +TOPOGRAPHY +TOPOI +TOPOLOGIC +TOPOLOGICAL +TOPOLOGICALLY +TOPOLOGIES +TOPOLOGIST +TOPOLOGISTS +TOPOLOGY +TOPONYM +TOPONYMIC +TOPONYMICAL +TOPONYMIES +TOPONYMIST +TOPONYMISTS +TOPONYMS +TOPONYMY +TOPOS +TOPOTYPE +TOPOTYPES +TOPPED +TOPPER +TOPPERS +TOPPING +TOPPINGS +TOPPLE +TOPPLED +TOPPLES +TOPPLING +TOPS +TOPSAIL +TOPSAILS +TOPSIDE +TOPSIDER +TOPSIDERS +TOPSIDES +TOPSOIL +TOPSOILED +TOPSOILING +TOPSOILS +TOPSPIN +TOPSPINS +TOPSTITCH +TOPSTITCHED +TOPSTITCHES +TOPSTITCHING +TOPSTONE +TOPSTONES +TOPWORK +TOPWORKED +TOPWORKING +TOPWORKS +TOQUE +TOQUES +TOQUET +TOQUETS +TOR +TORA +TORAH +TORAHS +TORAS +TORC +TORCH +TORCHABLE +TORCHBEARER +TORCHBEARERS +TORCHED +TORCHERE +TORCHERES +TORCHES +TORCHIER +TORCHIERE +TORCHIERES +TORCHIERS +TORCHIEST +TORCHING +TORCHLIGHT +TORCHLIGHTS +TORCHLIKE +TORCHON +TORCHONS +TORCHWOOD +TORCHWOODS +TORCHY +TORCS +TORE +TOREADOR +TOREADORS +TORERO +TOREROS +TORES +TOREUTIC +TOREUTICS +TORI +TORIC +TORICS +TORIES +TORII +TORMENT +TORMENTED +TORMENTER +TORMENTERS +TORMENTIL +TORMENTILS +TORMENTING +TORMENTOR +TORMENTORS +TORMENTS +TORN +TORNADIC +TORNADO +TORNADOES +TORNADOS +TORNILLO +TORNILLOS +TORO +TOROID +TOROIDAL +TOROIDALLY +TOROIDS +TOROS +TOROSE +TOROSITIES +TOROSITY +TOROT +TOROTH +TOROUS +TORPEDO +TORPEDOED +TORPEDOES +TORPEDOING +TORPEDOS +TORPID +TORPIDITIES +TORPIDITY +TORPIDLY +TORPIDS +TORPOR +TORPORS +TORQUATE +TORQUE +TORQUED +TORQUER +TORQUERS +TORQUES +TORQUESES +TORQUING +TORR +TORREFIED +TORREFIES +TORREFY +TORREFYING +TORRENT +TORRENTIAL +TORRENTIALLY +TORRENTS +TORRID +TORRIDER +TORRIDEST +TORRIDITIES +TORRIDITY +TORRIDLY +TORRIDNESS +TORRIDNESSES +TORRIFIED +TORRIFIES +TORRIFY +TORRIFYING +TORRS +TORS +TORSADE +TORSADES +TORSE +TORSES +TORSI +TORSION +TORSIONAL +TORSIONALLY +TORSIONS +TORSK +TORSKS +TORSO +TORSOS +TORT +TORTA +TORTAS +TORTE +TORTELLINI +TORTELLINIS +TORTEN +TORTES +TORTICOLLIS +TORTICOLLISES +TORTILE +TORTILLA +TORTILLAS +TORTIOUS +TORTIOUSLY +TORTOISE +TORTOISES +TORTOISESHELL +TORTOISESHELLS +TORTONI +TORTONIS +TORTRICID +TORTRICIDS +TORTRIX +TORTRIXES +TORTS +TORTUOSITIES +TORTUOSITY +TORTUOUS +TORTUOUSLY +TORTUOUSNESS +TORTUOUSNESSES +TORTURE +TORTURED +TORTURER +TORTURERS +TORTURES +TORTURING +TORTUROUS +TORTUROUSLY +TORULA +TORULAE +TORULAS +TORUS +TORY +TOSH +TOSHES +TOSS +TOSSED +TOSSER +TOSSERS +TOSSES +TOSSING +TOSSPOT +TOSSPOTS +TOSSUP +TOSSUPS +TOST +TOSTADA +TOSTADAS +TOSTADO +TOSTADOS +TOT +TOTABLE +TOTAL +TOTALED +TOTALING +TOTALISATOR +TOTALISATORS +TOTALISE +TOTALISED +TOTALISES +TOTALISING +TOTALISM +TOTALISMS +TOTALIST +TOTALISTIC +TOTALISTS +TOTALITARIAN +TOTALITARIANISM +TOTALITARIANIZE +TOTALITARIANS +TOTALITIES +TOTALITY +TOTALIZATOR +TOTALIZATORS +TOTALIZE +TOTALIZED +TOTALIZER +TOTALIZERS +TOTALIZES +TOTALIZING +TOTALLED +TOTALLING +TOTALLY +TOTALS +TOTAQUINE +TOTAQUINES +TOTE +TOTEABLE +TOTED +TOTEM +TOTEMIC +TOTEMISM +TOTEMISMS +TOTEMIST +TOTEMISTIC +TOTEMISTS +TOTEMITE +TOTEMITES +TOTEMS +TOTER +TOTERS +TOTES +TOTHER +TOTING +TOTIPOTENCIES +TOTIPOTENCY +TOTIPOTENT +TOTS +TOTTED +TOTTER +TOTTERED +TOTTERER +TOTTERERS +TOTTERING +TOTTERINGLY +TOTTERS +TOTTERY +TOTTING +TOUCAN +TOUCANS +TOUCH +TOUCHABLE +TOUCHBACK +TOUCHBACKS +TOUCHDOWN +TOUCHDOWNS +TOUCHE +TOUCHED +TOUCHER +TOUCHERS +TOUCHES +TOUCHHOLE +TOUCHHOLES +TOUCHIER +TOUCHIEST +TOUCHILY +TOUCHINESS +TOUCHINESSES +TOUCHING +TOUCHINGLY +TOUCHLINE +TOUCHLINES +TOUCHMARK +TOUCHMARKS +TOUCHPAD +TOUCHPADS +TOUCHSTONE +TOUCHSTONES +TOUCHTONE +TOUCHTONES +TOUCHUP +TOUCHUPS +TOUCHWOOD +TOUCHWOODS +TOUCHY +TOUGH +TOUGHED +TOUGHEN +TOUGHENED +TOUGHENER +TOUGHENERS +TOUGHENING +TOUGHENS +TOUGHER +TOUGHEST +TOUGHIE +TOUGHIES +TOUGHING +TOUGHISH +TOUGHLY +TOUGHNESS +TOUGHNESSES +TOUGHS +TOUGHY +TOUPEE +TOUPEES +TOUR +TOURACO +TOURACOS +TOURBILLION +TOURBILLIONS +TOURBILLON +TOURBILLONS +TOURED +TOURER +TOURERS +TOURING +TOURINGS +TOURISM +TOURISMS +TOURIST +TOURISTA +TOURISTAS +TOURISTED +TOURISTIC +TOURISTICALLY +TOURISTS +TOURISTY +TOURMALINE +TOURMALINES +TOURNAMENT +TOURNAMENTS +TOURNEDOS +TOURNEY +TOURNEYED +TOURNEYING +TOURNEYS +TOURNIQUET +TOURNIQUETS +TOURS +TOUSE +TOUSED +TOUSES +TOUSING +TOUSLE +TOUSLED +TOUSLES +TOUSLING +TOUT +TOUTED +TOUTER +TOUTERS +TOUTING +TOUTS +TOUZLE +TOUZLED +TOUZLES +TOUZLING +TOVARICH +TOVARICHES +TOVARISH +TOVARISHES +TOW +TOWABLE +TOWAGE +TOWAGES +TOWARD +TOWARDLINESS +TOWARDLINESSES +TOWARDLY +TOWARDS +TOWAWAY +TOWAWAYS +TOWBOAT +TOWBOATS +TOWED +TOWEL +TOWELED +TOWELETTE +TOWELETTES +TOWELING +TOWELINGS +TOWELLED +TOWELLING +TOWELLINGS +TOWELS +TOWER +TOWERED +TOWERIER +TOWERIEST +TOWERING +TOWERINGLY +TOWERLIKE +TOWERS +TOWERY +TOWHEAD +TOWHEADED +TOWHEADS +TOWHEE +TOWHEES +TOWIE +TOWIES +TOWING +TOWLINE +TOWLINES +TOWMOND +TOWMONDS +TOWMONT +TOWMONTS +TOWN +TOWNEE +TOWNEES +TOWNFOLK +TOWNHOME +TOWNHOMES +TOWNHOUSE +TOWNHOUSES +TOWNIE +TOWNIES +TOWNISH +TOWNLESS +TOWNLET +TOWNLETS +TOWNS +TOWNSCAPE +TOWNSCAPES +TOWNSFOLK +TOWNSHIP +TOWNSHIPS +TOWNSMAN +TOWNSMEN +TOWNSPEOPLE +TOWNSWOMAN +TOWNSWOMEN +TOWNWEAR +TOWNY +TOWPATH +TOWPATHS +TOWPLANE +TOWPLANES +TOWROPE +TOWROPES +TOWS +TOWSACK +TOWSACKS +TOWY +TOXAEMIA +TOXAEMIAS +TOXAEMIC +TOXAPHENE +TOXAPHENES +TOXEMIA +TOXEMIAS +TOXEMIC +TOXIC +TOXICAL +TOXICALLY +TOXICANT +TOXICANTS +TOXICITIES +TOXICITY +TOXICOLOGIC +TOXICOLOGICAL +TOXICOLOGICALLY +TOXICOLOGIES +TOXICOLOGIST +TOXICOLOGISTS +TOXICOLOGY +TOXICOSES +TOXICOSIS +TOXICS +TOXIGENIC +TOXIGENICITIES +TOXIGENICITY +TOXIN +TOXINE +TOXINES +TOXINS +TOXOID +TOXOIDS +TOXOPHILIES +TOXOPHILITE +TOXOPHILITES +TOXOPHILY +TOXOPLASMA +TOXOPLASMAS +TOXOPLASMIC +TOXOPLASMOSES +TOXOPLASMOSIS +TOY +TOYED +TOYER +TOYERS +TOYING +TOYISH +TOYLESS +TOYLIKE +TOYO +TOYON +TOYONS +TOYOS +TOYS +TOYSHOP +TOYSHOPS +TRABEATE +TRABEATED +TRABEATION +TRABEATIONS +TRABECULA +TRABECULAE +TRABECULAR +TRABECULAS +TRABECULATE +TRACE +TRACEABILITIES +TRACEABILITY +TRACEABLE +TRACEABLY +TRACED +TRACELESS +TRACER +TRACERIED +TRACERIES +TRACERS +TRACERY +TRACES +TRACHEA +TRACHEAE +TRACHEAL +TRACHEARY +TRACHEAS +TRACHEATE +TRACHEATED +TRACHEATES +TRACHEID +TRACHEIDS +TRACHEITIS +TRACHEITISES +TRACHEOLAR +TRACHEOLE +TRACHEOLES +TRACHEOPHYTE +TRACHEOPHYTES +TRACHEOSTOMIES +TRACHEOSTOMY +TRACHEOTOMIES +TRACHEOTOMY +TRACHLE +TRACHLED +TRACHLES +TRACHLING +TRACHOMA +TRACHOMAS +TRACHYTE +TRACHYTES +TRACHYTIC +TRACING +TRACINGS +TRACK +TRACKABLE +TRACKAGE +TRACKAGES +TRACKBALL +TRACKBALLS +TRACKED +TRACKER +TRACKERS +TRACKING +TRACKINGS +TRACKLAYER +TRACKLAYERS +TRACKLAYING +TRACKLAYINGS +TRACKLESS +TRACKMAN +TRACKMEN +TRACKPAD +TRACKPADS +TRACKS +TRACKSIDE +TRACKSIDES +TRACKSUIT +TRACKSUITS +TRACKWALKER +TRACKWALKERS +TRACKWAY +TRACKWAYS +TRACT +TRACTABILITIES +TRACTABILITY +TRACTABLE +TRACTABLENESS +TRACTABLENESSES +TRACTABLY +TRACTATE +TRACTATES +TRACTILE +TRACTION +TRACTIONAL +TRACTIONS +TRACTIVE +TRACTOR +TRACTORS +TRACTS +TRAD +TRADABLE +TRADE +TRADEABLE +TRADECRAFT +TRADECRAFTS +TRADED +TRADEMARK +TRADEMARKED +TRADEMARKING +TRADEMARKS +TRADEOFF +TRADEOFFS +TRADER +TRADERS +TRADES +TRADESCANTIA +TRADESCANTIAS +TRADESMAN +TRADESMEN +TRADESPEOPLE +TRADING +TRADITION +TRADITIONAL +TRADITIONALISM +TRADITIONALISMS +TRADITIONALIST +TRADITIONALISTS +TRADITIONALIZE +TRADITIONALIZED +TRADITIONALIZES +TRADITIONALLY +TRADITIONARY +TRADITIONLESS +TRADITIONS +TRADITIVE +TRADITOR +TRADITORES +TRADUCE +TRADUCED +TRADUCEMENT +TRADUCEMENTS +TRADUCER +TRADUCERS +TRADUCES +TRADUCING +TRAFFIC +TRAFFICABILITY +TRAFFICABLE +TRAFFICKED +TRAFFICKER +TRAFFICKERS +TRAFFICKING +TRAFFICS +TRAGACANTH +TRAGACANTHS +TRAGEDIAN +TRAGEDIANS +TRAGEDIENNE +TRAGEDIENNES +TRAGEDIES +TRAGEDY +TRAGI +TRAGIC +TRAGICAL +TRAGICALLY +TRAGICOMEDIES +TRAGICOMEDY +TRAGICOMIC +TRAGICOMICAL +TRAGICS +TRAGOPAN +TRAGOPANS +TRAGUS +TRAIK +TRAIKED +TRAIKING +TRAIKS +TRAIL +TRAILBLAZER +TRAILBLAZERS +TRAILBLAZING +TRAILBREAKER +TRAILBREAKERS +TRAILED +TRAILER +TRAILERABLE +TRAILERED +TRAILERING +TRAILERINGS +TRAILERIST +TRAILERISTS +TRAILERITE +TRAILERITES +TRAILERS +TRAILHEAD +TRAILHEADS +TRAILING +TRAILLESS +TRAILS +TRAILSIDE +TRAIN +TRAINABILITIES +TRAINABILITY +TRAINABLE +TRAINBAND +TRAINBANDS +TRAINBEARER +TRAINBEARERS +TRAINED +TRAINEE +TRAINEES +TRAINEESHIP +TRAINEESHIPS +TRAINER +TRAINERS +TRAINFUL +TRAINFULS +TRAINING +TRAININGS +TRAINLOAD +TRAINLOADS +TRAINMAN +TRAINMEN +TRAINS +TRAINWAY +TRAINWAYS +TRAIPSE +TRAIPSED +TRAIPSES +TRAIPSING +TRAIT +TRAITOR +TRAITORESS +TRAITORESSES +TRAITOROUS +TRAITOROUSLY +TRAITORS +TRAITRESS +TRAITRESSES +TRAITS +TRAJECT +TRAJECTED +TRAJECTING +TRAJECTION +TRAJECTIONS +TRAJECTORIES +TRAJECTORY +TRAJECTS +TRAM +TRAMCAR +TRAMCARS +TRAMEL +TRAMELED +TRAMELING +TRAMELL +TRAMELLED +TRAMELLING +TRAMELLS +TRAMELS +TRAMLESS +TRAMLINE +TRAMLINES +TRAMMED +TRAMMEL +TRAMMELED +TRAMMELER +TRAMMELERS +TRAMMELING +TRAMMELLED +TRAMMELLING +TRAMMELS +TRAMMING +TRAMONTANE +TRAMONTANES +TRAMP +TRAMPED +TRAMPER +TRAMPERS +TRAMPIER +TRAMPIEST +TRAMPING +TRAMPISH +TRAMPLE +TRAMPLED +TRAMPLER +TRAMPLERS +TRAMPLES +TRAMPLING +TRAMPOLINE +TRAMPOLINER +TRAMPOLINERS +TRAMPOLINES +TRAMPOLINING +TRAMPOLININGS +TRAMPOLINIST +TRAMPOLINISTS +TRAMPS +TRAMPY +TRAMROAD +TRAMROADS +TRAMS +TRAMWAY +TRAMWAYS +TRANCE +TRANCED +TRANCELIKE +TRANCES +TRANCHE +TRANCHES +TRANCING +TRANGAM +TRANGAMS +TRANK +TRANKS +TRANNIES +TRANNY +TRANQ +TRANQS +TRANQUIL +TRANQUILER +TRANQUILEST +TRANQUILITIES +TRANQUILITY +TRANQUILIZE +TRANQUILIZED +TRANQUILIZER +TRANQUILIZERS +TRANQUILIZES +TRANQUILIZING +TRANQUILLER +TRANQUILLEST +TRANQUILLITIES +TRANQUILLITY +TRANQUILLIZE +TRANQUILLIZED +TRANQUILLIZER +TRANQUILLIZERS +TRANQUILLIZES +TRANQUILLIZING +TRANQUILLY +TRANQUILNESS +TRANQUILNESSES +TRANS +TRANSACT +TRANSACTED +TRANSACTING +TRANSACTINIDE +TRANSACTION +TRANSACTIONAL +TRANSACTIONS +TRANSACTOR +TRANSACTORS +TRANSACTS +TRANSALPINE +TRANSAMINASE +TRANSAMINASES +TRANSAMINATION +TRANSAMINATIONS +TRANSATLANTIC +TRANSAXLE +TRANSAXLES +TRANSCEIVER +TRANSCEIVERS +TRANSCEND +TRANSCENDED +TRANSCENDENCE +TRANSCENDENCES +TRANSCENDENCIES +TRANSCENDENCY +TRANSCENDENT +TRANSCENDENTAL +TRANSCENDENTLY +TRANSCENDING +TRANSCENDS +TRANSCRIBE +TRANSCRIBED +TRANSCRIBER +TRANSCRIBERS +TRANSCRIBES +TRANSCRIBING +TRANSCRIPT +TRANSCRIPTASE +TRANSCRIPTASES +TRANSCRIPTION +TRANSCRIPTIONAL +TRANSCRIPTIONS +TRANSCRIPTS +TRANSCULTURAL +TRANSCUTANEOUS +TRANSDERMAL +TRANSDUCE +TRANSDUCED +TRANSDUCER +TRANSDUCERS +TRANSDUCES +TRANSDUCING +TRANSDUCTANT +TRANSDUCTANTS +TRANSDUCTION +TRANSDUCTIONAL +TRANSDUCTIONS +TRANSECT +TRANSECTED +TRANSECTING +TRANSECTION +TRANSECTIONS +TRANSECTS +TRANSEPT +TRANSEPTAL +TRANSEPTS +TRANSEUNT +TRANSFECT +TRANSFECTED +TRANSFECTING +TRANSFECTION +TRANSFECTIONS +TRANSFECTS +TRANSFER +TRANSFERABILITY +TRANSFERABLE +TRANSFERAL +TRANSFERALS +TRANSFERASE +TRANSFERASES +TRANSFEREE +TRANSFEREES +TRANSFERENCE +TRANSFERENCES +TRANSFERENTIAL +TRANSFEROR +TRANSFERORS +TRANSFERRABLE +TRANSFERRED +TRANSFERRER +TRANSFERRERS +TRANSFERRIN +TRANSFERRING +TRANSFERRINS +TRANSFERS +TRANSFIGURATION +TRANSFIGURE +TRANSFIGURED +TRANSFIGURES +TRANSFIGURING +TRANSFINITE +TRANSFIX +TRANSFIXED +TRANSFIXES +TRANSFIXING +TRANSFIXION +TRANSFIXIONS +TRANSFIXT +TRANSFORM +TRANSFORMABLE +TRANSFORMATION +TRANSFORMATIONS +TRANSFORMATIVE +TRANSFORMED +TRANSFORMER +TRANSFORMERS +TRANSFORMING +TRANSFORMS +TRANSFUSABLE +TRANSFUSE +TRANSFUSED +TRANSFUSES +TRANSFUSIBLE +TRANSFUSING +TRANSFUSION +TRANSFUSIONAL +TRANSFUSIONS +TRANSGENDER +TRANSGENDERED +TRANSGENE +TRANSGENES +TRANSGENIC +TRANSGRESS +TRANSGRESSED +TRANSGRESSES +TRANSGRESSING +TRANSGRESSION +TRANSGRESSIONS +TRANSGRESSIVE +TRANSGRESSOR +TRANSGRESSORS +TRANSHIP +TRANSHIPPED +TRANSHIPPING +TRANSHIPS +TRANSHISTORICAL +TRANSHUMANCE +TRANSHUMANCES +TRANSHUMANT +TRANSHUMANTS +TRANSIENCE +TRANSIENCES +TRANSIENCIES +TRANSIENCY +TRANSIENT +TRANSIENTLY +TRANSIENTS +TRANSILLUMINATE +TRANSISTOR +TRANSISTORISE +TRANSISTORISED +TRANSISTORISES +TRANSISTORISING +TRANSISTORIZE +TRANSISTORIZED +TRANSISTORIZES +TRANSISTORIZING +TRANSISTORS +TRANSIT +TRANSITED +TRANSITING +TRANSITION +TRANSITIONAL +TRANSITIONALLY +TRANSITIONS +TRANSITIVE +TRANSITIVELY +TRANSITIVENESS +TRANSITIVITIES +TRANSITIVITY +TRANSITORILY +TRANSITORINESS +TRANSITORY +TRANSITS +TRANSLATABILITY +TRANSLATABLE +TRANSLATE +TRANSLATED +TRANSLATES +TRANSLATING +TRANSLATION +TRANSLATIONAL +TRANSLATIONS +TRANSLATIVE +TRANSLATOR +TRANSLATORS +TRANSLATORY +TRANSLITERATE +TRANSLITERATED +TRANSLITERATES +TRANSLITERATING +TRANSLITERATION +TRANSLOCATE +TRANSLOCATED +TRANSLOCATES +TRANSLOCATING +TRANSLOCATION +TRANSLOCATIONS +TRANSLUCENCE +TRANSLUCENCES +TRANSLUCENCIES +TRANSLUCENCY +TRANSLUCENT +TRANSLUCENTLY +TRANSMARINE +TRANSMEMBRANE +TRANSMIGRATE +TRANSMIGRATED +TRANSMIGRATES +TRANSMIGRATING +TRANSMIGRATION +TRANSMIGRATIONS +TRANSMIGRATOR +TRANSMIGRATORS +TRANSMIGRATORY +TRANSMISSIBLE +TRANSMISSION +TRANSMISSIONS +TRANSMISSIVE +TRANSMISSIVITY +TRANSMISSOMETER +TRANSMIT +TRANSMITS +TRANSMITTABLE +TRANSMITTAL +TRANSMITTALS +TRANSMITTANCE +TRANSMITTANCES +TRANSMITTED +TRANSMITTER +TRANSMITTERS +TRANSMITTING +TRANSMOGRIFIED +TRANSMOGRIFIES +TRANSMOGRIFY +TRANSMOGRIFYING +TRANSMONTANE +TRANSMOUNTAIN +TRANSMUTABLE +TRANSMUTATION +TRANSMUTATIONS +TRANSMUTATIVE +TRANSMUTE +TRANSMUTED +TRANSMUTES +TRANSMUTING +TRANSNATIONAL +TRANSNATURAL +TRANSOCEANIC +TRANSOM +TRANSOMS +TRANSONIC +TRANSPACIFIC +TRANSPARENCE +TRANSPARENCES +TRANSPARENCIES +TRANSPARENCY +TRANSPARENT +TRANSPARENTIZE +TRANSPARENTIZED +TRANSPARENTIZES +TRANSPARENTLY +TRANSPARENTNESS +TRANSPERSONAL +TRANSPICUOUS +TRANSPIERCE +TRANSPIERCED +TRANSPIERCES +TRANSPIERCING +TRANSPIRATION +TRANSPIRATIONAL +TRANSPIRATIONS +TRANSPIRE +TRANSPIRED +TRANSPIRES +TRANSPIRING +TRANSPLACENTAL +TRANSPLANT +TRANSPLANTABLE +TRANSPLANTATION +TRANSPLANTED +TRANSPLANTER +TRANSPLANTERS +TRANSPLANTING +TRANSPLANTS +TRANSPOLAR +TRANSPONDER +TRANSPONDERS +TRANSPONTINE +TRANSPORT +TRANSPORTABLE +TRANSPORTATION +TRANSPORTATIONS +TRANSPORTED +TRANSPORTER +TRANSPORTERS +TRANSPORTING +TRANSPORTS +TRANSPOSABLE +TRANSPOSE +TRANSPOSED +TRANSPOSES +TRANSPOSING +TRANSPOSITION +TRANSPOSITIONAL +TRANSPOSITIONS +TRANSPOSON +TRANSPOSONS +TRANSSEXUAL +TRANSSEXUALISM +TRANSSEXUALISMS +TRANSSEXUALITY +TRANSSEXUALS +TRANSSHAPE +TRANSSHAPED +TRANSSHAPES +TRANSSHAPING +TRANSSHIP +TRANSSHIPMENT +TRANSSHIPMENTS +TRANSSHIPPED +TRANSSHIPPING +TRANSSHIPS +TRANSSONIC +TRANSTHORACIC +TRANSUBSTANTIAL +TRANSUDATE +TRANSUDATES +TRANSUDATION +TRANSUDATIONS +TRANSUDE +TRANSUDED +TRANSUDES +TRANSUDING +TRANSURANIC +TRANSURANICS +TRANSURANIUM +TRANSVALUATE +TRANSVALUATED +TRANSVALUATES +TRANSVALUATING +TRANSVALUATION +TRANSVALUATIONS +TRANSVALUE +TRANSVALUED +TRANSVALUES +TRANSVALUING +TRANSVERSAL +TRANSVERSALS +TRANSVERSE +TRANSVERSELY +TRANSVERSES +TRANSVESTISM +TRANSVESTISMS +TRANSVESTITE +TRANSVESTITES +TRAP +TRAPAN +TRAPANNED +TRAPANNING +TRAPANS +TRAPBALL +TRAPBALLS +TRAPDOOR +TRAPDOORS +TRAPES +TRAPESED +TRAPESES +TRAPESING +TRAPEZE +TRAPEZES +TRAPEZIA +TRAPEZIAL +TRAPEZII +TRAPEZIST +TRAPEZISTS +TRAPEZIUM +TRAPEZIUMS +TRAPEZIUS +TRAPEZIUSES +TRAPEZOHEDRA +TRAPEZOHEDRON +TRAPEZOHEDRONS +TRAPEZOID +TRAPEZOIDAL +TRAPEZOIDS +TRAPLIKE +TRAPLINE +TRAPLINES +TRAPNEST +TRAPNESTED +TRAPNESTING +TRAPNESTS +TRAPPEAN +TRAPPED +TRAPPER +TRAPPERS +TRAPPING +TRAPPINGS +TRAPPOSE +TRAPPOUS +TRAPROCK +TRAPROCKS +TRAPS +TRAPSHOOTER +TRAPSHOOTERS +TRAPSHOOTING +TRAPSHOOTINGS +TRAPT +TRAPUNTO +TRAPUNTOS +TRASH +TRASHED +TRASHER +TRASHERS +TRASHES +TRASHIER +TRASHIEST +TRASHILY +TRASHINESS +TRASHINESSES +TRASHING +TRASHMAN +TRASHMEN +TRASHY +TRASS +TRASSES +TRATTORIA +TRATTORIAS +TRATTORIE +TRAUCHLE +TRAUCHLED +TRAUCHLES +TRAUCHLING +TRAUMA +TRAUMAS +TRAUMATA +TRAUMATIC +TRAUMATICALLY +TRAUMATISE +TRAUMATISED +TRAUMATISES +TRAUMATISING +TRAUMATISM +TRAUMATISMS +TRAUMATIZATION +TRAUMATIZATIONS +TRAUMATIZE +TRAUMATIZED +TRAUMATIZES +TRAUMATIZING +TRAVAIL +TRAVAILED +TRAVAILING +TRAVAILS +TRAVE +TRAVEL +TRAVELED +TRAVELER +TRAVELERS +TRAVELING +TRAVELLED +TRAVELLER +TRAVELLERS +TRAVELLING +TRAVELOG +TRAVELOGS +TRAVELOGUE +TRAVELOGUES +TRAVELS +TRAVERSABLE +TRAVERSAL +TRAVERSALS +TRAVERSE +TRAVERSED +TRAVERSER +TRAVERSERS +TRAVERSES +TRAVERSING +TRAVERTINE +TRAVERTINES +TRAVES +TRAVESTIED +TRAVESTIES +TRAVESTY +TRAVESTYING +TRAVOIS +TRAVOISE +TRAVOISES +TRAWL +TRAWLED +TRAWLER +TRAWLERMAN +TRAWLERMEN +TRAWLERS +TRAWLEY +TRAWLEYS +TRAWLING +TRAWLNET +TRAWLNETS +TRAWLS +TRAY +TRAYFUL +TRAYFULS +TRAYS +TRAZODONE +TRAZODONES +TREACHERIES +TREACHEROUS +TREACHEROUSLY +TREACHEROUSNESS +TREACHERY +TREACLE +TREACLES +TREACLIER +TREACLIEST +TREACLY +TREAD +TREADED +TREADER +TREADERS +TREADING +TREADLE +TREADLED +TREADLER +TREADLERS +TREADLES +TREADLESS +TREADLING +TREADMILL +TREADMILLS +TREADS +TREASON +TREASONABLE +TREASONABLY +TREASONOUS +TREASONS +TREASURABLE +TREASURE +TREASURED +TREASURER +TREASURERS +TREASURERSHIP +TREASURERSHIPS +TREASURES +TREASURIES +TREASURING +TREASURY +TREAT +TREATABILITIES +TREATABILITY +TREATABLE +TREATED +TREATER +TREATERS +TREATIES +TREATING +TREATISE +TREATISES +TREATMENT +TREATMENTS +TREATS +TREATY +TREBBIANO +TREBBIANOS +TREBLE +TREBLED +TREBLES +TREBLING +TREBLY +TREBUCHET +TREBUCHETS +TREBUCKET +TREBUCKETS +TRECENTO +TRECENTOS +TREDDLE +TREDDLED +TREDDLES +TREDDLING +TREDECILLION +TREDECILLIONS +TREE +TREED +TREEHOPPER +TREEHOPPERS +TREEHOUSE +TREEHOUSES +TREEING +TREELAWN +TREELAWNS +TREELESS +TREELIKE +TREEN +TREENAIL +TREENAILS +TREENS +TREENWARE +TREENWARES +TREES +TREETOP +TREETOPS +TREF +TREFAH +TREFOIL +TREFOILS +TREHALA +TREHALAS +TREHALOSE +TREHALOSES +TREILLAGE +TREILLAGES +TREK +TREKKED +TREKKER +TREKKERS +TREKKING +TREKS +TRELLIS +TRELLISED +TRELLISES +TRELLISING +TRELLISWORK +TRELLISWORKS +TREMATODE +TREMATODES +TREMBLE +TREMBLED +TREMBLER +TREMBLERS +TREMBLES +TREMBLIER +TREMBLIEST +TREMBLING +TREMBLY +TREMENDOUS +TREMENDOUSLY +TREMENDOUSNESS +TREMOLITE +TREMOLITES +TREMOLITIC +TREMOLO +TREMOLOS +TREMOR +TREMOROUS +TREMORS +TREMULANT +TREMULOUS +TREMULOUSLY +TREMULOUSNESS +TREMULOUSNESSES +TRENAIL +TRENAILS +TRENCH +TRENCHANCIES +TRENCHANCY +TRENCHANT +TRENCHANTLY +TRENCHED +TRENCHER +TRENCHERMAN +TRENCHERMEN +TRENCHERS +TRENCHES +TRENCHING +TREND +TRENDED +TRENDIER +TRENDIES +TRENDIEST +TRENDILY +TRENDINESS +TRENDINESSES +TRENDING +TRENDOID +TRENDOIDS +TRENDS +TRENDSETTER +TRENDSETTERS +TRENDSETTING +TRENDY +TREPAN +TREPANATION +TREPANATIONS +TREPANG +TREPANGS +TREPANNED +TREPANNER +TREPANNERS +TREPANNING +TREPANS +TREPHINATION +TREPHINATIONS +TREPHINE +TREPHINED +TREPHINES +TREPHINING +TREPID +TREPIDANT +TREPIDATION +TREPIDATIONS +TREPONEMA +TREPONEMAL +TREPONEMAS +TREPONEMATA +TREPONEMATOSES +TREPONEMATOSIS +TREPONEME +TREPONEMES +TRES +TRESPASS +TRESPASSED +TRESPASSER +TRESPASSERS +TRESPASSES +TRESPASSING +TRESS +TRESSED +TRESSEL +TRESSELS +TRESSES +TRESSIER +TRESSIEST +TRESSOUR +TRESSOURS +TRESSURE +TRESSURES +TRESSY +TRESTLE +TRESTLES +TRESTLEWORK +TRESTLEWORKS +TRET +TRETINOIN +TRETINOINS +TRETS +TREVALLIES +TREVALLY +TREVALLYS +TREVET +TREVETS +TREWS +TREY +TREYS +TRIABLE +TRIAC +TRIACETATE +TRIACETATES +TRIACID +TRIACIDS +TRIACS +TRIAD +TRIADIC +TRIADICALLY +TRIADICS +TRIADISM +TRIADISMS +TRIADS +TRIAGE +TRIAGED +TRIAGES +TRIAGING +TRIAL +TRIALOGUE +TRIALOGUES +TRIALS +TRIAMCINOLONE +TRIAMCINOLONES +TRIANGLE +TRIANGLED +TRIANGLES +TRIANGULAR +TRIANGULARITIES +TRIANGULARITY +TRIANGULARLY +TRIANGULATE +TRIANGULATED +TRIANGULATES +TRIANGULATING +TRIANGULATION +TRIANGULATIONS +TRIARCHIES +TRIARCHY +TRIASSIC +TRIATHLETE +TRIATHLETES +TRIATHLON +TRIATHLONS +TRIATOMIC +TRIAXIAL +TRIAXIALITIES +TRIAXIALITY +TRIAZIN +TRIAZINE +TRIAZINES +TRIAZINS +TRIAZOLE +TRIAZOLES +TRIBADE +TRIBADES +TRIBADIC +TRIBADISM +TRIBADISMS +TRIBAL +TRIBALISM +TRIBALISMS +TRIBALIST +TRIBALISTS +TRIBALLY +TRIBALS +TRIBASIC +TRIBE +TRIBES +TRIBESMAN +TRIBESMEN +TRIBESPEOPLE +TRIBOELECTRIC +TRIBOLOGICAL +TRIBOLOGIES +TRIBOLOGIST +TRIBOLOGISTS +TRIBOLOGY +TRIBRACH +TRIBRACHIC +TRIBRACHS +TRIBULATE +TRIBULATED +TRIBULATES +TRIBULATING +TRIBULATION +TRIBULATIONS +TRIBUNAL +TRIBUNALS +TRIBUNARY +TRIBUNATE +TRIBUNATES +TRIBUNE +TRIBUNES +TRIBUNESHIP +TRIBUNESHIPS +TRIBUTARIES +TRIBUTARY +TRIBUTE +TRIBUTES +TRICARBOXYLIC +TRICE +TRICED +TRICEP +TRICEPS +TRICEPSES +TRICERATOPS +TRICERATOPSES +TRICES +TRICHIASES +TRICHIASIS +TRICHINA +TRICHINAE +TRICHINAL +TRICHINAS +TRICHINIZE +TRICHINIZED +TRICHINIZES +TRICHINIZING +TRICHINOSES +TRICHINOSIS +TRICHINOUS +TRICHITE +TRICHITES +TRICHLORFON +TRICHLORFONS +TRICHLORPHON +TRICHLORPHONS +TRICHOCYST +TRICHOCYSTS +TRICHOGYNE +TRICHOGYNES +TRICHOID +TRICHOLOGIES +TRICHOLOGIST +TRICHOLOGISTS +TRICHOLOGY +TRICHOME +TRICHOMES +TRICHOMIC +TRICHOMONACIDAL +TRICHOMONACIDE +TRICHOMONACIDES +TRICHOMONAD +TRICHOMONADS +TRICHOMONAL +TRICHOMONIASES +TRICHOMONIASIS +TRICHOPTERAN +TRICHOPTERANS +TRICHOSES +TRICHOSIS +TRICHOTHECENE +TRICHOTHECENES +TRICHOTOMIES +TRICHOTOMOUS +TRICHOTOMOUSLY +TRICHOTOMY +TRICHROIC +TRICHROMAT +TRICHROMATIC +TRICHROMATISM +TRICHROMATISMS +TRICHROMATS +TRICHROME +TRICING +TRICK +TRICKED +TRICKER +TRICKERIES +TRICKERS +TRICKERY +TRICKIE +TRICKIER +TRICKIEST +TRICKILY +TRICKINESS +TRICKINESSES +TRICKING +TRICKISH +TRICKISHLY +TRICKISHNESS +TRICKISHNESSES +TRICKLE +TRICKLED +TRICKLES +TRICKLIER +TRICKLIEST +TRICKLING +TRICKLY +TRICKS +TRICKSIER +TRICKSIEST +TRICKSINESS +TRICKSINESSES +TRICKSTER +TRICKSTERS +TRICKSY +TRICKY +TRICLAD +TRICLADS +TRICLINIA +TRICLINIC +TRICLINIUM +TRICLOSAN +TRICLOSANS +TRICOLETTE +TRICOLETTES +TRICOLOR +TRICOLORED +TRICOLORS +TRICOLOUR +TRICOLOURS +TRICORN +TRICORNE +TRICORNERED +TRICORNES +TRICORNS +TRICOT +TRICOTINE +TRICOTINES +TRICOTS +TRICROTIC +TRICTRAC +TRICTRACS +TRICUSPID +TRICUSPIDS +TRICYCLE +TRICYCLES +TRICYCLIC +TRICYCLICS +TRIDACTYL +TRIDENT +TRIDENTAL +TRIDENTS +TRIDIMENSIONAL +TRIDUUM +TRIDUUMS +TRIED +TRIENE +TRIENES +TRIENNIA +TRIENNIAL +TRIENNIALLY +TRIENNIALS +TRIENNIUM +TRIENNIUMS +TRIENS +TRIENTES +TRIER +TRIERARCH +TRIERARCHIES +TRIERARCHS +TRIERARCHY +TRIERS +TRIES +TRIETHYL +TRIFACIAL +TRIFACIALS +TRIFECTA +TRIFECTAS +TRIFID +TRIFLE +TRIFLED +TRIFLER +TRIFLERS +TRIFLES +TRIFLING +TRIFLINGS +TRIFLUOPERAZINE +TRIFLURALIN +TRIFLURALINS +TRIFOCAL +TRIFOCALS +TRIFOLD +TRIFOLIATE +TRIFOLIOLATE +TRIFOLIUM +TRIFOLIUMS +TRIFORIA +TRIFORIUM +TRIFORM +TRIFORMED +TRIFURCATE +TRIFURCATED +TRIFURCATES +TRIFURCATING +TRIFURCATION +TRIFURCATIONS +TRIG +TRIGEMINAL +TRIGEMINALS +TRIGGED +TRIGGER +TRIGGERED +TRIGGERFISH +TRIGGERFISHES +TRIGGERING +TRIGGERMAN +TRIGGERMEN +TRIGGERS +TRIGGEST +TRIGGING +TRIGLY +TRIGLYCERIDE +TRIGLYCERIDES +TRIGLYPH +TRIGLYPHIC +TRIGLYPHICAL +TRIGLYPHS +TRIGNESS +TRIGNESSES +TRIGO +TRIGON +TRIGONAL +TRIGONALLY +TRIGONOMETRIC +TRIGONOMETRICAL +TRIGONOMETRIES +TRIGONOMETRY +TRIGONOUS +TRIGONS +TRIGOS +TRIGRAM +TRIGRAMS +TRIGRAPH +TRIGRAPHIC +TRIGRAPHS +TRIGS +TRIHALOMETHANE +TRIHALOMETHANES +TRIHEDRA +TRIHEDRAL +TRIHEDRALS +TRIHEDRON +TRIHEDRONS +TRIHYBRID +TRIHYBRIDS +TRIHYDROXY +TRIJET +TRIJETS +TRIJUGATE +TRIJUGOUS +TRIKE +TRIKES +TRILATERAL +TRILBIES +TRILBY +TRILINEAR +TRILINGUAL +TRILINGUALLY +TRILITERAL +TRILITERALISM +TRILITERALISMS +TRILITERALS +TRILITH +TRILITHON +TRILITHONS +TRILITHS +TRILL +TRILLED +TRILLER +TRILLERS +TRILLING +TRILLION +TRILLIONS +TRILLIONTH +TRILLIONTHS +TRILLIUM +TRILLIUMS +TRILLS +TRILOBAL +TRILOBATE +TRILOBED +TRILOBITE +TRILOBITES +TRILOGIES +TRILOGY +TRIM +TRIMARAN +TRIMARANS +TRIMER +TRIMERIC +TRIMERISM +TRIMERISMS +TRIMEROUS +TRIMERS +TRIMESTER +TRIMESTERS +TRIMETER +TRIMETERS +TRIMETHOPRIM +TRIMETHOPRIMS +TRIMETRIC +TRIMETROGON +TRIMETROGONS +TRIMLY +TRIMMED +TRIMMER +TRIMMERS +TRIMMEST +TRIMMING +TRIMMINGS +TRIMNESS +TRIMNESSES +TRIMONTHLY +TRIMORPH +TRIMORPHIC +TRIMORPHS +TRIMOTOR +TRIMOTORS +TRIMS +TRINAL +TRINARY +TRINDLE +TRINDLED +TRINDLES +TRINDLING +TRINE +TRINED +TRINES +TRINING +TRINITARIAN +TRINITIES +TRINITROTOLUENE +TRINITY +TRINKET +TRINKETED +TRINKETER +TRINKETERS +TRINKETING +TRINKETRIES +TRINKETRY +TRINKETS +TRINKUMS +TRINOCULAR +TRINODAL +TRINOMIAL +TRINOMIALS +TRINUCLEOTIDE +TRINUCLEOTIDES +TRIO +TRIODE +TRIODES +TRIOL +TRIOLET +TRIOLETS +TRIOLS +TRIOS +TRIOSE +TRIOSES +TRIOXID +TRIOXIDE +TRIOXIDES +TRIOXIDS +TRIP +TRIPACK +TRIPACKS +TRIPART +TRIPARTITE +TRIPE +TRIPEDAL +TRIPES +TRIPHASE +TRIPHOSPHATE +TRIPHOSPHATES +TRIPHTHONG +TRIPHTHONGAL +TRIPHTHONGS +TRIPINNATE +TRIPINNATELY +TRIPLANE +TRIPLANES +TRIPLE +TRIPLED +TRIPLES +TRIPLET +TRIPLETAIL +TRIPLETAILS +TRIPLETS +TRIPLEX +TRIPLEXES +TRIPLICATE +TRIPLICATED +TRIPLICATES +TRIPLICATING +TRIPLICATION +TRIPLICATIONS +TRIPLICITIES +TRIPLICITY +TRIPLING +TRIPLITE +TRIPLITES +TRIPLOBLASTIC +TRIPLOID +TRIPLOIDIES +TRIPLOIDS +TRIPLOIDY +TRIPLY +TRIPOD +TRIPODAL +TRIPODIC +TRIPODIES +TRIPODS +TRIPODY +TRIPOLI +TRIPOLIS +TRIPOS +TRIPOSES +TRIPPED +TRIPPER +TRIPPERS +TRIPPET +TRIPPETS +TRIPPIER +TRIPPIEST +TRIPPING +TRIPPINGLY +TRIPPINGS +TRIPPY +TRIPS +TRIPTAN +TRIPTANE +TRIPTANES +TRIPTANS +TRIPTYCA +TRIPTYCAS +TRIPTYCH +TRIPTYCHS +TRIPWIRE +TRIPWIRES +TRIQUETROUS +TRIRADIATE +TRIREME +TRIREMES +TRISACCHARIDE +TRISACCHARIDES +TRISCELE +TRISCELES +TRISECT +TRISECTED +TRISECTING +TRISECTION +TRISECTIONS +TRISECTOR +TRISECTORS +TRISECTS +TRISEME +TRISEMES +TRISEMIC +TRISHAW +TRISHAWS +TRISKELE +TRISKELES +TRISKELIA +TRISKELION +TRISKELIONS +TRISMIC +TRISMUS +TRISMUSES +TRISOCTAHEDRA +TRISOCTAHEDRON +TRISOCTAHEDRONS +TRISODIUM +TRISOME +TRISOMES +TRISOMIC +TRISOMICS +TRISOMIES +TRISOMY +TRISTATE +TRISTE +TRISTEARIN +TRISTEARINS +TRISTEZA +TRISTEZAS +TRISTFUL +TRISTFULLY +TRISTFULNESS +TRISTFULNESSES +TRISTICH +TRISTICHS +TRISTIMULUS +TRISUBSTITUTED +TRISULFIDE +TRISULFIDES +TRISYLLABIC +TRISYLLABLE +TRISYLLABLES +TRITE +TRITELY +TRITENESS +TRITENESSES +TRITER +TRITEST +TRITHEISM +TRITHEISMS +TRITHEIST +TRITHEISTIC +TRITHEISTICAL +TRITHEISTS +TRITHING +TRITHINGS +TRITIATED +TRITICALE +TRITICALES +TRITICUM +TRITICUMS +TRITIUM +TRITIUMS +TRITOMA +TRITOMAS +TRITON +TRITONE +TRITONES +TRITONS +TRITURABLE +TRITURATE +TRITURATED +TRITURATES +TRITURATING +TRITURATION +TRITURATIONS +TRITURATOR +TRITURATORS +TRIUMPH +TRIUMPHAL +TRIUMPHALISM +TRIUMPHALISMS +TRIUMPHALIST +TRIUMPHALISTS +TRIUMPHANT +TRIUMPHANTLY +TRIUMPHED +TRIUMPHING +TRIUMPHS +TRIUMVIR +TRIUMVIRATE +TRIUMVIRATES +TRIUMVIRI +TRIUMVIRS +TRIUNE +TRIUNES +TRIUNITIES +TRIUNITY +TRIVALENT +TRIVALVE +TRIVALVES +TRIVET +TRIVETS +TRIVIA +TRIVIAL +TRIVIALISE +TRIVIALISED +TRIVIALISES +TRIVIALISING +TRIVIALIST +TRIVIALISTS +TRIVIALITIES +TRIVIALITY +TRIVIALIZATION +TRIVIALIZATIONS +TRIVIALIZE +TRIVIALIZED +TRIVIALIZES +TRIVIALIZING +TRIVIALLY +TRIVIUM +TRIWEEKLIES +TRIWEEKLY +TROAK +TROAKED +TROAKING +TROAKS +TROCAR +TROCARS +TROCHAIC +TROCHAICS +TROCHAL +TROCHANTER +TROCHANTERAL +TROCHANTERIC +TROCHANTERS +TROCHAR +TROCHARS +TROCHE +TROCHEE +TROCHEES +TROCHES +TROCHIL +TROCHILI +TROCHILS +TROCHILUS +TROCHLEA +TROCHLEAE +TROCHLEAR +TROCHLEARS +TROCHLEAS +TROCHOID +TROCHOIDAL +TROCHOIDS +TROCHOPHORE +TROCHOPHORES +TROCK +TROCKED +TROCKING +TROCKS +TROD +TRODDEN +TRODE +TROFFER +TROFFERS +TROG +TROGLODYTE +TROGLODYTES +TROGLODYTIC +TROGON +TROGONS +TROGS +TROIKA +TROIKAS +TROILISM +TROILISMS +TROILITE +TROILITES +TROILUS +TROILUSES +TROIS +TROKE +TROKED +TROKES +TROKING +TROLAND +TROLANDS +TROLL +TROLLED +TROLLER +TROLLERS +TROLLEY +TROLLEYBUS +TROLLEYBUSES +TROLLEYBUSSES +TROLLEYED +TROLLEYING +TROLLEYS +TROLLIED +TROLLIES +TROLLING +TROLLINGS +TROLLOP +TROLLOPS +TROLLOPY +TROLLS +TROLLY +TROLLYING +TROMBONE +TROMBONES +TROMBONIST +TROMBONISTS +TROMMEL +TROMMELS +TROMP +TROMPE +TROMPED +TROMPES +TROMPING +TROMPS +TRONA +TRONAS +TRONE +TRONES +TROOP +TROOPED +TROOPER +TROOPERS +TROOPIAL +TROOPIALS +TROOPING +TROOPS +TROOPSHIP +TROOPSHIPS +TROOSTITE +TROOSTITES +TROOZ +TROP +TROPAEOLA +TROPAEOLUM +TROPAEOLUMS +TROPE +TROPEOLIN +TROPEOLINS +TROPES +TROPHALLAXES +TROPHALLAXIS +TROPHIC +TROPHICALLY +TROPHIED +TROPHIES +TROPHOBLAST +TROPHOBLASTIC +TROPHOBLASTS +TROPHOZOITE +TROPHOZOITES +TROPHY +TROPHYING +TROPIC +TROPICAL +TROPICALIZE +TROPICALIZED +TROPICALIZES +TROPICALIZING +TROPICALLY +TROPICALS +TROPICS +TROPIN +TROPINE +TROPINES +TROPINS +TROPISM +TROPISMS +TROPISTIC +TROPOCOLLAGEN +TROPOCOLLAGENS +TROPOLOGIC +TROPOLOGICAL +TROPOLOGICALLY +TROPOLOGIES +TROPOLOGY +TROPOMYOSIN +TROPOMYOSINS +TROPONIN +TROPONINS +TROPOPAUSE +TROPOPAUSES +TROPOSPHERE +TROPOSPHERES +TROPOSPHERIC +TROPOTAXES +TROPOTAXIS +TROT +TROTH +TROTHED +TROTHING +TROTHPLIGHT +TROTHPLIGHTED +TROTHPLIGHTING +TROTHPLIGHTS +TROTHS +TROTLINE +TROTLINES +TROTS +TROTTED +TROTTER +TROTTERS +TROTTING +TROTYL +TROTYLS +TROUBADOUR +TROUBADOURS +TROUBLE +TROUBLED +TROUBLEMAKER +TROUBLEMAKERS +TROUBLEMAKING +TROUBLEMAKINGS +TROUBLER +TROUBLERS +TROUBLES +TROUBLESHOOT +TROUBLESHOOTER +TROUBLESHOOTERS +TROUBLESHOOTING +TROUBLESHOOTS +TROUBLESHOT +TROUBLESOME +TROUBLESOMELY +TROUBLESOMENESS +TROUBLING +TROUBLOUS +TROUBLOUSLY +TROUBLOUSNESS +TROUBLOUSNESSES +TROUGH +TROUGHS +TROUNCE +TROUNCED +TROUNCER +TROUNCERS +TROUNCES +TROUNCING +TROUPE +TROUPED +TROUPER +TROUPERS +TROUPES +TROUPIAL +TROUPIALS +TROUPING +TROUSER +TROUSERS +TROUSSEAU +TROUSSEAUS +TROUSSEAUX +TROUT +TROUTIER +TROUTIEST +TROUTS +TROUTY +TROUVERE +TROUVERES +TROUVEUR +TROUVEURS +TROVE +TROVER +TROVERS +TROVES +TROW +TROWED +TROWEL +TROWELED +TROWELER +TROWELERS +TROWELING +TROWELLED +TROWELLER +TROWELLERS +TROWELLING +TROWELS +TROWING +TROWS +TROWSERS +TROWTH +TROWTHS +TROY +TROYS +TRUANCIES +TRUANCY +TRUANT +TRUANTED +TRUANTING +TRUANTLY +TRUANTRIES +TRUANTRY +TRUANTS +TRUCE +TRUCED +TRUCELESS +TRUCES +TRUCING +TRUCK +TRUCKABLE +TRUCKAGE +TRUCKAGES +TRUCKED +TRUCKER +TRUCKERS +TRUCKFUL +TRUCKFULS +TRUCKING +TRUCKINGS +TRUCKLE +TRUCKLED +TRUCKLER +TRUCKLERS +TRUCKLES +TRUCKLINE +TRUCKLINES +TRUCKLING +TRUCKLOAD +TRUCKLOADS +TRUCKMAN +TRUCKMASTER +TRUCKMASTERS +TRUCKMEN +TRUCKS +TRUCULENCE +TRUCULENCES +TRUCULENCIES +TRUCULENCY +TRUCULENT +TRUCULENTLY +TRUDGE +TRUDGED +TRUDGEN +TRUDGENS +TRUDGEON +TRUDGEONS +TRUDGER +TRUDGERS +TRUDGES +TRUDGING +TRUE +TRUEBLUE +TRUEBLUES +TRUEBORN +TRUEBRED +TRUED +TRUEHEARTED +TRUEHEARTEDNESS +TRUEING +TRUELOVE +TRUELOVES +TRUENESS +TRUENESSES +TRUEPENNIES +TRUEPENNY +TRUER +TRUES +TRUEST +TRUFFE +TRUFFES +TRUFFLE +TRUFFLED +TRUFFLES +TRUG +TRUGS +TRUING +TRUISM +TRUISMS +TRUISTIC +TRULL +TRULLS +TRULY +TRUMEAU +TRUMEAUX +TRUMP +TRUMPED +TRUMPERIES +TRUMPERY +TRUMPET +TRUMPETED +TRUMPETER +TRUMPETERS +TRUMPETING +TRUMPETLIKE +TRUMPETS +TRUMPING +TRUMPS +TRUNCATE +TRUNCATED +TRUNCATES +TRUNCATING +TRUNCATION +TRUNCATIONS +TRUNCHEON +TRUNCHEONED +TRUNCHEONING +TRUNCHEONS +TRUNDLE +TRUNDLED +TRUNDLER +TRUNDLERS +TRUNDLES +TRUNDLING +TRUNK +TRUNKED +TRUNKFISH +TRUNKFISHES +TRUNKFUL +TRUNKFULS +TRUNKS +TRUNNEL +TRUNNELS +TRUNNION +TRUNNIONS +TRUSS +TRUSSED +TRUSSER +TRUSSERS +TRUSSES +TRUSSING +TRUSSINGS +TRUST +TRUSTABILITIES +TRUSTABILITY +TRUSTABLE +TRUSTBUSTER +TRUSTBUSTERS +TRUSTED +TRUSTEE +TRUSTEED +TRUSTEEING +TRUSTEES +TRUSTEESHIP +TRUSTEESHIPS +TRUSTER +TRUSTERS +TRUSTFUL +TRUSTFULLY +TRUSTFULNESS +TRUSTFULNESSES +TRUSTIER +TRUSTIES +TRUSTIEST +TRUSTILY +TRUSTINESS +TRUSTINESSES +TRUSTING +TRUSTINGLY +TRUSTINGNESS +TRUSTINGNESSES +TRUSTLESS +TRUSTOR +TRUSTORS +TRUSTS +TRUSTWORTHILY +TRUSTWORTHINESS +TRUSTWORTHY +TRUSTY +TRUTH +TRUTHFUL +TRUTHFULLY +TRUTHFULNESS +TRUTHFULNESSES +TRUTHLESS +TRUTHS +TRY +TRYING +TRYINGLY +TRYMA +TRYMATA +TRYOUT +TRYOUTS +TRYPANOSOME +TRYPANOSOMES +TRYPANOSOMIASES +TRYPANOSOMIASIS +TRYPSIN +TRYPSINOGEN +TRYPSINOGENS +TRYPSINS +TRYPTAMINE +TRYPTAMINES +TRYPTIC +TRYPTOPHAN +TRYPTOPHANE +TRYPTOPHANES +TRYPTOPHANS +TRYSAIL +TRYSAILS +TRYST +TRYSTE +TRYSTED +TRYSTER +TRYSTERS +TRYSTES +TRYSTING +TRYSTS +TRYWORKS +TSADDIK +TSADDIKIM +TSADE +TSADES +TSADI +TSADIS +TSAR +TSARDOM +TSARDOMS +TSAREVNA +TSAREVNAS +TSARINA +TSARINAS +TSARISM +TSARISMS +TSARIST +TSARISTS +TSARITZA +TSARITZAS +TSARS +TSATSKE +TSATSKES +TSETSE +TSETSES +TSIMMES +TSK +TSKED +TSKING +TSKS +TSKTSK +TSKTSKED +TSKTSKING +TSKTSKS +TSOORIS +TSORES +TSORIS +TSORRISS +TSOURIS +TSUBA +TSUNAMI +TSUNAMIC +TSUNAMIS +TSURIS +TSUTSUGAMUSHI +TSUTSUGAMUSHIS +TUATARA +TUATARAS +TUATERA +TUATERAS +TUB +TUBA +TUBAE +TUBAIST +TUBAISTS +TUBAL +TUBAS +TUBATE +TUBBABLE +TUBBED +TUBBER +TUBBERS +TUBBIER +TUBBIEST +TUBBINESS +TUBBINESSES +TUBBING +TUBBY +TUBE +TUBED +TUBELESS +TUBELIKE +TUBENOSE +TUBENOSES +TUBER +TUBERCLE +TUBERCLES +TUBERCULAR +TUBERCULARS +TUBERCULATE +TUBERCULATED +TUBERCULIN +TUBERCULINS +TUBERCULOID +TUBERCULOSES +TUBERCULOSIS +TUBERCULOUS +TUBEROID +TUBEROSE +TUBEROSES +TUBEROSITIES +TUBEROSITY +TUBEROUS +TUBERS +TUBES +TUBEWORK +TUBEWORKS +TUBEWORM +TUBEWORMS +TUBFUL +TUBFULS +TUBIFEX +TUBIFEXES +TUBIFICID +TUBIFICIDS +TUBIFORM +TUBING +TUBINGS +TUBIST +TUBISTS +TUBLIKE +TUBOCURARINE +TUBOCURARINES +TUBS +TUBULAR +TUBULARLY +TUBULATE +TUBULATED +TUBULATES +TUBULATING +TUBULATOR +TUBULATORS +TUBULE +TUBULES +TUBULIN +TUBULINS +TUBULOSE +TUBULOUS +TUBULURE +TUBULURES +TUCHUN +TUCHUNS +TUCK +TUCKAHOE +TUCKAHOES +TUCKED +TUCKER +TUCKERED +TUCKERING +TUCKERS +TUCKET +TUCKETS +TUCKING +TUCKS +TUCKSHOP +TUCKSHOPS +TUFA +TUFACEOUS +TUFAS +TUFF +TUFFACEOUS +TUFFET +TUFFETS +TUFFS +TUFOLI +TUFT +TUFTED +TUFTER +TUFTERS +TUFTIER +TUFTIEST +TUFTILY +TUFTING +TUFTINGS +TUFTS +TUFTY +TUG +TUGBOAT +TUGBOATS +TUGGED +TUGGER +TUGGERS +TUGGING +TUGHRIK +TUGHRIKS +TUGLESS +TUGRIK +TUGRIKS +TUGS +TUI +TUILLE +TUILLES +TUIS +TUITION +TUITIONAL +TUITIONS +TULADI +TULADIS +TULAREMIA +TULAREMIAS +TULAREMIC +TULE +TULES +TULIP +TULIPLIKE +TULIPS +TULIPWOOD +TULIPWOODS +TULLE +TULLES +TULLIBEE +TULLIBEES +TUMBLE +TUMBLEBUG +TUMBLEBUGS +TUMBLED +TUMBLEDOWN +TUMBLER +TUMBLERFUL +TUMBLERFULS +TUMBLERS +TUMBLERSFUL +TUMBLES +TUMBLESET +TUMBLESETS +TUMBLEWEED +TUMBLEWEEDS +TUMBLING +TUMBLINGS +TUMBREL +TUMBRELS +TUMBRIL +TUMBRILS +TUMEFACTION +TUMEFACTIONS +TUMEFIED +TUMEFIES +TUMEFY +TUMEFYING +TUMESCE +TUMESCED +TUMESCENCE +TUMESCENCES +TUMESCENT +TUMESCES +TUMESCING +TUMID +TUMIDITIES +TUMIDITY +TUMIDLY +TUMIDNESS +TUMIDNESSES +TUMMIES +TUMMLER +TUMMLERS +TUMMY +TUMOR +TUMORAL +TUMORIGENESES +TUMORIGENESIS +TUMORIGENIC +TUMORIGENICITY +TUMORLIKE +TUMOROUS +TUMORS +TUMOUR +TUMOURS +TUMP +TUMPED +TUMPING +TUMPLINE +TUMPLINES +TUMPS +TUMULAR +TUMULI +TUMULOSE +TUMULOUS +TUMULT +TUMULTS +TUMULTUARY +TUMULTUOUS +TUMULTUOUSLY +TUMULTUOUSNESS +TUMULUS +TUMULUSES +TUN +TUNA +TUNABILITIES +TUNABILITY +TUNABLE +TUNABLENESS +TUNABLENESSES +TUNABLY +TUNAS +TUNDISH +TUNDISHES +TUNDRA +TUNDRAS +TUNE +TUNEABLE +TUNEABLY +TUNED +TUNEFUL +TUNEFULLY +TUNEFULNESS +TUNEFULNESSES +TUNELESS +TUNELESSLY +TUNER +TUNERS +TUNES +TUNESMITH +TUNESMITHS +TUNEUP +TUNEUPS +TUNG +TUNGS +TUNGSTATE +TUNGSTATES +TUNGSTEN +TUNGSTENS +TUNGSTIC +TUNGSTITE +TUNGSTITES +TUNIC +TUNICA +TUNICAE +TUNICATE +TUNICATED +TUNICATES +TUNICLE +TUNICLES +TUNICS +TUNING +TUNNAGE +TUNNAGES +TUNNED +TUNNEL +TUNNELED +TUNNELER +TUNNELERS +TUNNELING +TUNNELINGS +TUNNELLED +TUNNELLER +TUNNELLERS +TUNNELLIKE +TUNNELLING +TUNNELS +TUNNIES +TUNNING +TUNNY +TUNS +TUP +TUPELO +TUPELOS +TUPIK +TUPIKS +TUPPED +TUPPENCE +TUPPENCES +TUPPENNY +TUPPING +TUPS +TUQUE +TUQUES +TURACO +TURACOS +TURACOU +TURACOUS +TURBAN +TURBANED +TURBANNED +TURBANS +TURBARIES +TURBARY +TURBELLARIAN +TURBELLARIANS +TURBETH +TURBETHS +TURBID +TURBIDIMETER +TURBIDIMETERS +TURBIDIMETRIC +TURBIDIMETRIES +TURBIDIMETRY +TURBIDITE +TURBIDITES +TURBIDITIES +TURBIDITY +TURBIDLY +TURBIDNESS +TURBIDNESSES +TURBINAL +TURBINALS +TURBINATE +TURBINATED +TURBINATES +TURBINE +TURBINES +TURBIT +TURBITH +TURBITHS +TURBITS +TURBO +TURBOCAR +TURBOCARS +TURBOCHARGED +TURBOCHARGER +TURBOCHARGERS +TURBOELECTRIC +TURBOFAN +TURBOFANS +TURBOGENERATOR +TURBOGENERATORS +TURBOJET +TURBOJETS +TURBOMACHINERY +TURBOPROP +TURBOPROPS +TURBOS +TURBOSHAFT +TURBOSHAFTS +TURBOT +TURBOTS +TURBULENCE +TURBULENCES +TURBULENCIES +TURBULENCY +TURBULENT +TURBULENTLY +TURD +TURDINE +TURDS +TUREEN +TUREENS +TURF +TURFED +TURFGRASS +TURFGRASSES +TURFIER +TURFIEST +TURFING +TURFLESS +TURFLIKE +TURFMAN +TURFMEN +TURFS +TURFSKI +TURFSKIING +TURFSKIINGS +TURFSKIS +TURFY +TURGENCIES +TURGENCY +TURGENT +TURGESCENCE +TURGESCENCES +TURGESCENT +TURGID +TURGIDITIES +TURGIDITY +TURGIDLY +TURGIDNESS +TURGIDNESSES +TURGITE +TURGITES +TURGOR +TURGORS +TURION +TURIONS +TURISTA +TURISTAS +TURK +TURKEY +TURKEYS +TURKOIS +TURKOISES +TURKS +TURMERIC +TURMERICS +TURMOIL +TURMOILED +TURMOILING +TURMOILS +TURN +TURNABLE +TURNABOUT +TURNABOUTS +TURNAROUND +TURNAROUNDS +TURNBUCKLE +TURNBUCKLES +TURNCOAT +TURNCOATS +TURNDOWN +TURNDOWNS +TURNED +TURNER +TURNERIES +TURNERS +TURNERY +TURNHALL +TURNHALLS +TURNING +TURNINGS +TURNIP +TURNIPS +TURNKEY +TURNKEYS +TURNOFF +TURNOFFS +TURNON +TURNONS +TURNOUT +TURNOUTS +TURNOVER +TURNOVERS +TURNPIKE +TURNPIKES +TURNS +TURNSOLE +TURNSOLES +TURNSPIT +TURNSPITS +TURNSTILE +TURNSTILES +TURNSTONE +TURNSTONES +TURNTABLE +TURNTABLES +TURNUP +TURNUPS +TURNVEREIN +TURNVEREINS +TUROPHILE +TUROPHILES +TURPENTINE +TURPENTINED +TURPENTINES +TURPENTINING +TURPETH +TURPETHS +TURPITUDE +TURPITUDES +TURPS +TURQUOIS +TURQUOISE +TURQUOISES +TURRET +TURRETED +TURRETS +TURRICAL +TURTLE +TURTLEBACK +TURTLEBACKS +TURTLED +TURTLEDOVE +TURTLEDOVES +TURTLEHEAD +TURTLEHEADS +TURTLENECK +TURTLENECKED +TURTLENECKS +TURTLER +TURTLERS +TURTLES +TURTLING +TURTLINGS +TURVES +TUSCHE +TUSCHES +TUSH +TUSHED +TUSHERIES +TUSHERY +TUSHES +TUSHIE +TUSHIES +TUSHING +TUSHY +TUSK +TUSKED +TUSKER +TUSKERS +TUSKING +TUSKLESS +TUSKLIKE +TUSKS +TUSSAH +TUSSAHS +TUSSAL +TUSSAR +TUSSARS +TUSSEH +TUSSEHS +TUSSER +TUSSERS +TUSSES +TUSSIS +TUSSISES +TUSSIVE +TUSSLE +TUSSLED +TUSSLES +TUSSLING +TUSSOCK +TUSSOCKED +TUSSOCKS +TUSSOCKY +TUSSOR +TUSSORE +TUSSORES +TUSSORS +TUSSUCK +TUSSUCKS +TUSSUR +TUSSURS +TUT +TUTEE +TUTEES +TUTELAGE +TUTELAGES +TUTELAR +TUTELARIES +TUTELARS +TUTELARY +TUTOR +TUTORAGE +TUTORAGES +TUTORED +TUTORESS +TUTORESSES +TUTORIAL +TUTORIALS +TUTORING +TUTORS +TUTORSHIP +TUTORSHIPS +TUTOYED +TUTOYER +TUTOYERED +TUTOYERING +TUTOYERS +TUTS +TUTTED +TUTTI +TUTTIES +TUTTING +TUTTIS +TUTTY +TUTU +TUTUED +TUTUS +TUX +TUXEDO +TUXEDOED +TUXEDOES +TUXEDOS +TUXES +TUYER +TUYERE +TUYERES +TUYERS +TWA +TWADDLE +TWADDLED +TWADDLER +TWADDLERS +TWADDLES +TWADDLING +TWAE +TWAES +TWAIN +TWAINS +TWANG +TWANGED +TWANGER +TWANGERS +TWANGIER +TWANGIEST +TWANGING +TWANGLE +TWANGLED +TWANGLER +TWANGLERS +TWANGLES +TWANGLING +TWANGS +TWANGY +TWANKIES +TWANKY +TWAS +TWASOME +TWASOMES +TWAT +TWATS +TWATTLE +TWATTLED +TWATTLES +TWATTLING +TWAYBLADE +TWAYBLADES +TWEAK +TWEAKED +TWEAKIER +TWEAKIEST +TWEAKING +TWEAKS +TWEAKY +TWEE +TWEED +TWEEDIER +TWEEDIEST +TWEEDINESS +TWEEDINESSES +TWEEDLE +TWEEDLED +TWEEDLES +TWEEDLING +TWEEDS +TWEEDY +TWEEN +TWEENER +TWEENERS +TWEENESS +TWEENESSES +TWEENIES +TWEENS +TWEENY +TWEET +TWEETED +TWEETER +TWEETERS +TWEETING +TWEETS +TWEEZE +TWEEZED +TWEEZER +TWEEZERS +TWEEZES +TWEEZING +TWELFTH +TWELFTHS +TWELVE +TWELVEMO +TWELVEMONTH +TWELVEMONTHS +TWELVEMOS +TWELVES +TWENTIES +TWENTIETH +TWENTIETHS +TWENTY +TWERP +TWERPS +TWIBIL +TWIBILL +TWIBILLS +TWIBILS +TWICE +TWIDDLE +TWIDDLED +TWIDDLER +TWIDDLERS +TWIDDLES +TWIDDLIER +TWIDDLIEST +TWIDDLING +TWIDDLY +TWIER +TWIERS +TWIG +TWIGGED +TWIGGEN +TWIGGIER +TWIGGIEST +TWIGGING +TWIGGY +TWIGLESS +TWIGLIKE +TWIGS +TWILIGHT +TWILIGHTS +TWILIT +TWILL +TWILLED +TWILLING +TWILLINGS +TWILLS +TWIN +TWINBERRIES +TWINBERRY +TWINBORN +TWINE +TWINED +TWINER +TWINERS +TWINES +TWINFLOWER +TWINFLOWERS +TWINGE +TWINGED +TWINGEING +TWINGES +TWINGING +TWINIER +TWINIEST +TWINIGHT +TWINING +TWINJET +TWINJETS +TWINKIE +TWINKIES +TWINKLE +TWINKLED +TWINKLER +TWINKLERS +TWINKLES +TWINKLING +TWINKLINGS +TWINKLY +TWINNED +TWINNING +TWINNINGS +TWINS +TWINSET +TWINSETS +TWINSHIP +TWINSHIPS +TWINY +TWIRL +TWIRLED +TWIRLER +TWIRLERS +TWIRLIER +TWIRLIEST +TWIRLING +TWIRLS +TWIRLY +TWIRP +TWIRPS +TWIST +TWISTABLE +TWISTED +TWISTER +TWISTERS +TWISTIER +TWISTIEST +TWISTING +TWISTINGS +TWISTS +TWISTY +TWIT +TWITCH +TWITCHED +TWITCHER +TWITCHERS +TWITCHES +TWITCHIER +TWITCHIEST +TWITCHILY +TWITCHING +TWITCHY +TWITS +TWITTED +TWITTER +TWITTERED +TWITTERER +TWITTERERS +TWITTERING +TWITTERS +TWITTERY +TWITTING +TWIXT +TWO +TWOFER +TWOFERS +TWOFOLD +TWOFOLDS +TWOONIE +TWOONIES +TWOPENCE +TWOPENCES +TWOPENNY +TWOS +TWOSOME +TWOSOMES +TWYER +TWYERS +TYCOON +TYCOONS +TYE +TYEE +TYEES +TYER +TYERS +TYES +TYIN +TYING +TYIYN +TYKE +TYKES +TYLOSIN +TYLOSINS +TYMBAL +TYMBALS +TYMPAN +TYMPANA +TYMPANAL +TYMPANI +TYMPANIC +TYMPANIES +TYMPANIST +TYMPANISTS +TYMPANITES +TYMPANITESES +TYMPANITIC +TYMPANO +TYMPANS +TYMPANUM +TYMPANUMS +TYMPANY +TYNE +TYNED +TYNES +TYNING +TYPABLE +TYPAL +TYPE +TYPEABLE +TYPEBAR +TYPEBARS +TYPECASE +TYPECASES +TYPECAST +TYPECASTING +TYPECASTS +TYPED +TYPEFACE +TYPEFACES +TYPEFOUNDER +TYPEFOUNDERS +TYPEFOUNDING +TYPEFOUNDINGS +TYPES +TYPESCRIPT +TYPESCRIPTS +TYPESET +TYPESETS +TYPESETTER +TYPESETTERS +TYPESETTING +TYPESETTINGS +TYPESTYLE +TYPESTYLES +TYPEWRITE +TYPEWRITER +TYPEWRITERS +TYPEWRITES +TYPEWRITING +TYPEWRITINGS +TYPEWRITTEN +TYPEWROTE +TYPEY +TYPHLITIC +TYPHLITIS +TYPHLITISES +TYPHLOSOLE +TYPHLOSOLES +TYPHOID +TYPHOIDAL +TYPHOIDS +TYPHON +TYPHONIC +TYPHONS +TYPHOON +TYPHOONS +TYPHOSE +TYPHOUS +TYPHUS +TYPHUSES +TYPIC +TYPICAL +TYPICALITIES +TYPICALITY +TYPICALLY +TYPICALNESS +TYPICALNESSES +TYPIER +TYPIEST +TYPIFICATION +TYPIFICATIONS +TYPIFIED +TYPIFIER +TYPIFIERS +TYPIFIES +TYPIFY +TYPIFYING +TYPING +TYPIST +TYPISTS +TYPO +TYPOGRAPH +TYPOGRAPHED +TYPOGRAPHER +TYPOGRAPHERS +TYPOGRAPHIC +TYPOGRAPHICAL +TYPOGRAPHICALLY +TYPOGRAPHIES +TYPOGRAPHING +TYPOGRAPHS +TYPOGRAPHY +TYPOLOGIC +TYPOLOGICAL +TYPOLOGICALLY +TYPOLOGIES +TYPOLOGIST +TYPOLOGISTS +TYPOLOGY +TYPOS +TYPP +TYPPS +TYPY +TYRAMINE +TYRAMINES +TYRANNIC +TYRANNICAL +TYRANNICALLY +TYRANNICALNESS +TYRANNICIDE +TYRANNICIDES +TYRANNIES +TYRANNISE +TYRANNISED +TYRANNISES +TYRANNISING +TYRANNIZE +TYRANNIZED +TYRANNIZER +TYRANNIZERS +TYRANNIZES +TYRANNIZING +TYRANNOSAUR +TYRANNOSAURS +TYRANNOSAURUS +TYRANNOSAURUSES +TYRANNOUS +TYRANNOUSLY +TYRANNY +TYRANT +TYRANTS +TYRE +TYRED +TYRES +TYRING +TYRO +TYROCIDIN +TYROCIDINE +TYROCIDINES +TYROCIDINS +TYRONIC +TYROS +TYROSINASE +TYROSINASES +TYROSINE +TYROSINES +TYROTHRICIN +TYROTHRICINS +TYTHE +TYTHED +TYTHES +TYTHING +TZADDIK +TZADDIKIM +TZAR +TZARDOM +TZARDOMS +TZAREVNA +TZAREVNAS +TZARINA +TZARINAS +TZARISM +TZARISMS +TZARIST +TZARISTS +TZARITZA +TZARITZAS +TZARS +TZETZE +TZETZES +TZIGANE +TZIGANES +TZIMMES +TZITZIS +TZITZIT +TZITZITH +TZURIS +UAKARI +UAKARIS +UBIETIES +UBIETY +UBIQUE +UBIQUINONE +UBIQUINONES +UBIQUITIES +UBIQUITOUS +UBIQUITOUSLY +UBIQUITOUSNESS +UBIQUITY +UDDER +UDDERS +UDO +UDOMETER +UDOMETERS +UDOMETRIES +UDOMETRY +UDON +UDONS +UDOS +UFOLOGICAL +UFOLOGIES +UFOLOGIST +UFOLOGISTS +UFOLOGY +UGH +UGHS +UGLIER +UGLIES +UGLIEST +UGLIFICATION +UGLIFICATIONS +UGLIFIED +UGLIFIER +UGLIFIERS +UGLIFIES +UGLIFY +UGLIFYING +UGLILY +UGLINESS +UGLINESSES +UGLY +UGSOME +UH +UHLAN +UHLANS +UINTAHITE +UINTAHITES +UINTAITE +UINTAITES +UITLANDER +UITLANDERS +UKASE +UKASES +UKE +UKELELE +UKELELES +UKES +UKULELE +UKULELES +ULAMA +ULAMAS +ULAN +ULANS +ULCER +ULCERATE +ULCERATED +ULCERATES +ULCERATING +ULCERATION +ULCERATIONS +ULCERATIVE +ULCERED +ULCERING +ULCEROGENIC +ULCEROUS +ULCERS +ULEMA +ULEMAS +ULEXITE +ULEXITES +ULLAGE +ULLAGED +ULLAGES +ULNA +ULNAD +ULNAE +ULNAR +ULNAS +ULPAN +ULPANIM +ULSTER +ULSTERS +ULTERIOR +ULTERIORLY +ULTIMA +ULTIMACIES +ULTIMACY +ULTIMAS +ULTIMATA +ULTIMATE +ULTIMATED +ULTIMATELY +ULTIMATENESS +ULTIMATENESSES +ULTIMATES +ULTIMATING +ULTIMATUM +ULTIMATUMS +ULTIMO +ULTIMOGENITURE +ULTIMOGENITURES +ULTRA +ULTRABASIC +ULTRABASICS +ULTRACAREFUL +ULTRACASUAL +ULTRACAUTIOUS +ULTRACENTRIFUGE +ULTRACHIC +ULTRACIVILIZED +ULTRACLEAN +ULTRACOLD +ULTRACOMMERCIAL +ULTRACOMPACT +ULTRACOMPETENT +ULTRACONVENIENT +ULTRACOOL +ULTRACRITICAL +ULTRADEMOCRATIC +ULTRADENSE +ULTRADISTANCE +ULTRADISTANT +ULTRADRY +ULTRAEFFICIENT +ULTRAENERGETIC +ULTRAEXCLUSIVE +ULTRAFAMILIAR +ULTRAFAST +ULTRAFASTIDIOUS +ULTRAFEMININE +ULTRAFICHE +ULTRAFICHES +ULTRAFILTRATE +ULTRAFILTRATES +ULTRAFILTRATION +ULTRAFINE +ULTRAGLAMOROUS +ULTRAHAZARDOUS +ULTRAHEAT +ULTRAHEATED +ULTRAHEATING +ULTRAHEATS +ULTRAHEAVY +ULTRAHIGH +ULTRAHIP +ULTRAHOT +ULTRAHUMAN +ULTRAISM +ULTRAISMS +ULTRAIST +ULTRAISTIC +ULTRAISTS +ULTRALEFT +ULTRALEFTISM +ULTRALEFTISMS +ULTRALEFTIST +ULTRALEFTISTS +ULTRALIBERAL +ULTRALIBERALISM +ULTRALIBERALS +ULTRALIGHT +ULTRALIGHTS +ULTRALOW +ULTRAMAFIC +ULTRAMARATHON +ULTRAMARATHONER +ULTRAMARATHONS +ULTRAMARINE +ULTRAMARINES +ULTRAMASCULINE +ULTRAMICRO +ULTRAMICROSCOPE +ULTRAMICROTOME +ULTRAMICROTOMES +ULTRAMICROTOMY +ULTRAMILITANT +ULTRAMILITANTS +ULTRAMINIATURE +ULTRAMODERN +ULTRAMODERNIST +ULTRAMODERNISTS +ULTRAMONTANE +ULTRAMONTANES +ULTRAMONTANISM +ULTRAMONTANISMS +ULTRAORTHODOX +ULTRAPATRIOTIC +ULTRAPHYSICAL +ULTRAPOSH +ULTRAPOWERFUL +ULTRAPRACTICAL +ULTRAPRECISE +ULTRAPRECISION +ULTRAPURE +ULTRAQUIET +ULTRARADICAL +ULTRARADICALS +ULTRARAPID +ULTRARARE +ULTRARAREFIED +ULTRARATIONAL +ULTRAREALISM +ULTRAREALISMS +ULTRAREALIST +ULTRAREALISTIC +ULTRAREALISTS +ULTRARED +ULTRAREDS +ULTRAREFINED +ULTRARELIABLE +ULTRARICH +ULTRARIGHT +ULTRARIGHTIST +ULTRARIGHTISTS +ULTRAROMANTIC +ULTRAROYALIST +ULTRAROYALISTS +ULTRAS +ULTRASAFE +ULTRASECRET +ULTRASENSITIVE +ULTRASERIOUS +ULTRASHARP +ULTRASHORT +ULTRASIMPLE +ULTRASLICK +ULTRASLOW +ULTRASMALL +ULTRASMART +ULTRASMOOTH +ULTRASOFT +ULTRASONIC +ULTRASONICALLY +ULTRASONICS +ULTRASONOGRAPHY +ULTRASOUND +ULTRASOUNDS +ULTRASTRUCTURAL +ULTRASTRUCTURE +ULTRASTRUCTURES +ULTRATHIN +ULTRATINY +ULTRAVACUA +ULTRAVACUUM +ULTRAVACUUMS +ULTRAVIOLENCE +ULTRAVIOLENCES +ULTRAVIOLENT +ULTRAVIOLET +ULTRAVIOLETS +ULTRAVIRILE +ULTRAVIRILITIES +ULTRAVIRILITY +ULTRAWIDE +ULU +ULULANT +ULULATE +ULULATED +ULULATES +ULULATING +ULULATION +ULULATIONS +ULUS +ULVA +ULVAS +UM +UMAMI +UMAMIS +UMANGITE +UMANGITES +UMBEL +UMBELED +UMBELLAR +UMBELLATE +UMBELLED +UMBELLET +UMBELLETS +UMBELLIFER +UMBELLIFEROUS +UMBELLIFERS +UMBELLULE +UMBELLULES +UMBELS +UMBER +UMBERED +UMBERING +UMBERS +UMBILICAL +UMBILICALS +UMBILICATE +UMBILICATED +UMBILICATION +UMBILICATIONS +UMBILICI +UMBILICUS +UMBILICUSES +UMBLES +UMBO +UMBONAL +UMBONATE +UMBONES +UMBONIC +UMBOS +UMBRA +UMBRAE +UMBRAGE +UMBRAGEOUS +UMBRAGEOUSLY +UMBRAGEOUSNESS +UMBRAGES +UMBRAL +UMBRAS +UMBRELLA +UMBRELLAED +UMBRELLAING +UMBRELLAS +UMBRETTE +UMBRETTES +UMIAC +UMIACK +UMIACKS +UMIACS +UMIAK +UMIAKS +UMIAQ +UMIAQS +UMLAUT +UMLAUTED +UMLAUTING +UMLAUTS +UMM +UMP +UMPED +UMPING +UMPIRAGE +UMPIRAGES +UMPIRE +UMPIRED +UMPIRES +UMPIRING +UMPS +UMPTEEN +UMPTEENTH +UMTEENTH +UN +UNABASHED +UNABASHEDLY +UNABATED +UNABATEDLY +UNABATING +UNABETTED +UNABIDING +UNABJURED +UNABLE +UNABORTED +UNABRADED +UNABRIDGED +UNABSORBED +UNABSORBENT +UNABUSED +UNABUSIVE +UNACADEMIC +UNACADEMICALLY +UNACCENTED +UNACCEPTABILITY +UNACCEPTABLE +UNACCEPTABLY +UNACCEPTED +UNACCLIMATED +UNACCLIMATIZED +UNACCOMMODATED +UNACCOMMODATING +UNACCOMPANIED +UNACCOUNTABLE +UNACCOUNTABLY +UNACCOUNTED +UNACCREDITED +UNACCRUED +UNACCULTURATED +UNACCUSTOMED +UNACCUSTOMEDLY +UNACERBIC +UNACHIEVED +UNACIDIC +UNACKNOWLEDGED +UNACQUAINTED +UNACTABLE +UNACTED +UNACTORISH +UNADAPTABLE +UNADAPTED +UNADDED +UNADDRESSED +UNADEPT +UNADEPTLY +UNADJUDICATED +UNADJUSTED +UNADMIRED +UNADMITTED +UNADOPTABLE +UNADOPTED +UNADORNED +UNADULT +UNADULTERATED +UNADULTERATEDLY +UNADVENTUROUS +UNADVERTISED +UNADVISED +UNADVISEDLY +UNAESTHETIC +UNAFFECTED +UNAFFECTEDLY +UNAFFECTEDNESS +UNAFFECTING +UNAFFECTIONATE +UNAFFILIATED +UNAFFLUENT +UNAFFORDABLE +UNAFRAID +UNAGED +UNAGEING +UNAGGRESSIVE +UNAGILE +UNAGING +UNAGREED +UNAI +UNAIDED +UNAIDEDLY +UNAIMED +UNAIRED +UNAIS +UNAKIN +UNAKITE +UNAKITES +UNALARMED +UNALERTED +UNALIENABLE +UNALIENATED +UNALIGNED +UNALIKE +UNALLAYED +UNALLEGED +UNALLEVIATED +UNALLIED +UNALLOCATED +UNALLOWED +UNALLOYED +UNALLURING +UNALTERABILITY +UNALTERABLE +UNALTERABLENESS +UNALTERABLY +UNALTERED +UNAMASSED +UNAMAZED +UNAMBIGUOUS +UNAMBIGUOUSLY +UNAMBITIOUS +UNAMBIVALENT +UNAMBIVALENTLY +UNAMENABLE +UNAMENDED +UNAMIABLE +UNAMORTIZED +UNAMPLIFIED +UNAMUSED +UNAMUSING +UNANALYZABLE +UNANALYZED +UNANCHOR +UNANCHORED +UNANCHORING +UNANCHORS +UNANELED +UNANESTHETIZED +UNANIMITIES +UNANIMITY +UNANIMOUS +UNANIMOUSLY +UNANNEXED +UNANNOTATED +UNANNOUNCED +UNANNOYED +UNANSWERABILITY +UNANSWERABLE +UNANSWERABLY +UNANSWERED +UNANTICIPATED +UNANTICIPATEDLY +UNAPOLOGETIC +UNAPOLOGIZING +UNAPPARENT +UNAPPEALABLE +UNAPPEALING +UNAPPEALINGLY +UNAPPEASABLE +UNAPPEASABLY +UNAPPEASED +UNAPPETIZING +UNAPPETIZINGLY +UNAPPLIED +UNAPPRECIATED +UNAPPRECIATION +UNAPPRECIATIONS +UNAPPRECIATIVE +UNAPPROACHABLE +UNAPPROACHABLY +UNAPPROPRIATED +UNAPPROVED +UNAPT +UNAPTLY +UNAPTNESS +UNAPTNESSES +UNARCHED +UNARGUABLE +UNARGUABLY +UNARGUED +UNARM +UNARMED +UNARMING +UNARMORED +UNARMS +UNAROUSED +UNARRAYED +UNARROGANT +UNARTFUL +UNARTICULATED +UNARTISTIC +UNARY +UNASHAMED +UNASHAMEDLY +UNASKED +UNASPIRATED +UNASSAILABILITY +UNASSAILABLE +UNASSAILABLY +UNASSAILED +UNASSAYED +UNASSEMBLED +UNASSERTIVE +UNASSERTIVELY +UNASSIGNED +UNASSIMILABLE +UNASSIMILATED +UNASSISTED +UNASSOCIATED +UNASSUAGEABLE +UNASSUAGED +UNASSUMING +UNASSUMINGNESS +UNASSURED +UNATHLETIC +UNATONED +UNATTACHED +UNATTAINABLE +UNATTENDED +UNATTENUATED +UNATTESTED +UNATTIRED +UNATTRACTIVE +UNATTRACTIVELY +UNATTRIBUTABLE +UNATTRIBUTED +UNATTUNED +UNAU +UNAUDITED +UNAUS +UNAUTHENTIC +UNAUTHORIZED +UNAUTOMATED +UNAVAILABILITY +UNAVAILABLE +UNAVAILING +UNAVAILINGLY +UNAVAILINGNESS +UNAVENGED +UNAVERAGE +UNAVERTED +UNAVOIDABLE +UNAVOIDABLY +UNAVOWED +UNAWAKE +UNAWAKED +UNAWAKENED +UNAWARDED +UNAWARE +UNAWARELY +UNAWARENESS +UNAWARENESSES +UNAWARES +UNAWED +UNAWESOME +UNAXED +UNBACKED +UNBAKED +UNBALANCE +UNBALANCED +UNBALANCES +UNBALANCING +UNBALE +UNBALED +UNBALES +UNBALING +UNBALLASTED +UNBAN +UNBANDAGE +UNBANDAGED +UNBANDAGES +UNBANDAGING +UNBANDED +UNBANNED +UNBANNING +UNBANS +UNBAPTIZED +UNBAR +UNBARBED +UNBARBERED +UNBARRED +UNBARRICADED +UNBARRING +UNBARS +UNBASED +UNBASTED +UNBATED +UNBATHED +UNBE +UNBEAR +UNBEARABLE +UNBEARABLY +UNBEARDED +UNBEARED +UNBEARING +UNBEARS +UNBEATABLE +UNBEATABLY +UNBEATEN +UNBEAUTIFUL +UNBEAUTIFULLY +UNBECOMING +UNBECOMINGLY +UNBECOMINGNESS +UNBEHOLDEN +UNBEING +UNBEKNOWN +UNBEKNOWNST +UNBELIEF +UNBELIEFS +UNBELIEVABLE +UNBELIEVABLY +UNBELIEVER +UNBELIEVERS +UNBELIEVING +UNBELIEVINGLY +UNBELLIGERENT +UNBELOVED +UNBELT +UNBELTED +UNBELTING +UNBELTS +UNBEMUSED +UNBEND +UNBENDABLE +UNBENDED +UNBENDING +UNBENDINGS +UNBENDS +UNBENIGN +UNBENT +UNBESEEMING +UNBIASED +UNBIASEDNESS +UNBIASEDNESSES +UNBIASSED +UNBIBLICAL +UNBID +UNBIDDEN +UNBIGOTED +UNBILLED +UNBIND +UNBINDING +UNBINDS +UNBITTED +UNBITTEN +UNBITTER +UNBLAMED +UNBLEACHED +UNBLEMISHED +UNBLENCHED +UNBLENDED +UNBLESSED +UNBLEST +UNBLINDED +UNBLINKING +UNBLINKINGLY +UNBLOCK +UNBLOCKED +UNBLOCKING +UNBLOCKS +UNBLOODED +UNBLOODY +UNBLURRED +UNBLUSHING +UNBLUSHINGLY +UNBOARDED +UNBOBBED +UNBODIED +UNBOILED +UNBOLT +UNBOLTED +UNBOLTING +UNBOLTS +UNBONDED +UNBONED +UNBONNET +UNBONNETED +UNBONNETING +UNBONNETS +UNBOOKISH +UNBOOTED +UNBORN +UNBOSOM +UNBOSOMED +UNBOSOMER +UNBOSOMERS +UNBOSOMING +UNBOSOMS +UNBOTTLE +UNBOTTLED +UNBOTTLES +UNBOTTLING +UNBOUGHT +UNBOUNCY +UNBOUND +UNBOUNDED +UNBOUNDEDNESS +UNBOUNDEDNESSES +UNBOWDLERIZED +UNBOWED +UNBOWING +UNBOX +UNBOXED +UNBOXES +UNBOXING +UNBRACE +UNBRACED +UNBRACES +UNBRACING +UNBRACKETED +UNBRAID +UNBRAIDED +UNBRAIDING +UNBRAIDS +UNBRAKE +UNBRAKED +UNBRAKES +UNBRAKING +UNBRANCHED +UNBRANDED +UNBREACHABLE +UNBREAKABLE +UNBREATHABLE +UNBRED +UNBREECH +UNBREECHED +UNBREECHES +UNBREECHING +UNBRIDGEABLE +UNBRIDGED +UNBRIDLE +UNBRIDLED +UNBRIDLES +UNBRIDLING +UNBRIEFED +UNBRIGHT +UNBRILLIANT +UNBROILED +UNBROKE +UNBROKEN +UNBROWNED +UNBRUISED +UNBRUSHED +UNBUCKLE +UNBUCKLED +UNBUCKLES +UNBUCKLING +UNBUDGEABLE +UNBUDGEABLY +UNBUDGETED +UNBUDGING +UNBUDGINGLY +UNBUFFERED +UNBUILD +UNBUILDABLE +UNBUILDING +UNBUILDS +UNBUILT +UNBULKY +UNBUNDLE +UNBUNDLED +UNBUNDLES +UNBUNDLING +UNBURDEN +UNBURDENED +UNBURDENING +UNBURDENS +UNBUREAUCRATIC +UNBURIED +UNBURNABLE +UNBURNED +UNBURNT +UNBUSINESSLIKE +UNBUSTED +UNBUSY +UNBUTTERED +UNBUTTON +UNBUTTONED +UNBUTTONING +UNBUTTONS +UNCAGE +UNCAGED +UNCAGES +UNCAGING +UNCAKE +UNCAKED +UNCAKES +UNCAKING +UNCALCIFIED +UNCALCINED +UNCALCULATED +UNCALCULATING +UNCALIBRATED +UNCALLED +UNCALLOUSED +UNCANCELED +UNCANDID +UNCANDIDLY +UNCANDLED +UNCANNED +UNCANNIER +UNCANNIEST +UNCANNILY +UNCANNINESS +UNCANNINESSES +UNCANNY +UNCANONICAL +UNCAP +UNCAPABLE +UNCAPITALIZED +UNCAPPED +UNCAPPING +UNCAPS +UNCAPTIONED +UNCAPTURABLE +UNCARDED +UNCARING +UNCARPETED +UNCARTED +UNCARVED +UNCASE +UNCASED +UNCASES +UNCASHED +UNCASING +UNCASKED +UNCAST +UNCASTRATED +UNCATALOGED +UNCATCHABLE +UNCATCHY +UNCATEGORIZABLE +UNCATERED +UNCAUGHT +UNCAUSED +UNCEASING +UNCEASINGLY +UNCEDED +UNCELEBRATED +UNCENSORED +UNCENSORIOUS +UNCENSURED +UNCEREMONIOUS +UNCEREMONIOUSLY +UNCERTAIN +UNCERTAINLY +UNCERTAINNESS +UNCERTAINNESSES +UNCERTAINTIES +UNCERTAINTY +UNCERTIFIED +UNCHAIN +UNCHAINED +UNCHAINING +UNCHAINS +UNCHAIR +UNCHAIRED +UNCHAIRING +UNCHAIRS +UNCHALLENGEABLE +UNCHALLENGED +UNCHALLENGING +UNCHANCY +UNCHANGEABILITY +UNCHANGEABLE +UNCHANGEABLY +UNCHANGED +UNCHANGING +UNCHANGINGLY +UNCHANGINGNESS +UNCHANNELED +UNCHAPERONED +UNCHARGE +UNCHARGED +UNCHARGES +UNCHARGING +UNCHARISMATIC +UNCHARITABLE +UNCHARITABLY +UNCHARMING +UNCHARRED +UNCHARTED +UNCHARTERED +UNCHARY +UNCHASTE +UNCHASTELY +UNCHASTENESS +UNCHASTENESSES +UNCHASTER +UNCHASTEST +UNCHASTITIES +UNCHASTITY +UNCHAUVINISTIC +UNCHECKABLE +UNCHECKED +UNCHEWABLE +UNCHEWED +UNCHIC +UNCHICLY +UNCHILDLIKE +UNCHILLED +UNCHIVALROUS +UNCHIVALROUSLY +UNCHLORINATED +UNCHOKE +UNCHOKED +UNCHOKES +UNCHOKING +UNCHOREOGRAPHED +UNCHOSEN +UNCHRISTENED +UNCHRISTIAN +UNCHRONICLED +UNCHRONOLOGICAL +UNCHURCH +UNCHURCHED +UNCHURCHES +UNCHURCHING +UNCHURCHLY +UNCI +UNCIA +UNCIAE +UNCIAL +UNCIALLY +UNCIALS +UNCIFORM +UNCIFORMS +UNCILIATED +UNCINAL +UNCINARIA +UNCINARIAS +UNCINARIASES +UNCINARIASIS +UNCINATE +UNCINEMATIC +UNCINI +UNCINUS +UNCIRCULATED +UNCIRCUMCISED +UNCIRCUMCISION +UNCIRCUMCISIONS +UNCIVIL +UNCIVILIZED +UNCIVILLY +UNCLAD +UNCLAIMED +UNCLAMP +UNCLAMPED +UNCLAMPING +UNCLAMPS +UNCLARIFIED +UNCLARITIES +UNCLARITY +UNCLASP +UNCLASPED +UNCLASPING +UNCLASPS +UNCLASSICAL +UNCLASSIFIABLE +UNCLASSIFIED +UNCLASSY +UNCLAWED +UNCLE +UNCLEAN +UNCLEANED +UNCLEANER +UNCLEANEST +UNCLEANLIER +UNCLEANLIEST +UNCLEANLINESS +UNCLEANLINESSES +UNCLEANLY +UNCLEANNESS +UNCLEANNESSES +UNCLEAR +UNCLEARED +UNCLEARER +UNCLEAREST +UNCLEARLY +UNCLEFT +UNCLENCH +UNCLENCHED +UNCLENCHES +UNCLENCHING +UNCLES +UNCLICHED +UNCLIMBABLE +UNCLIMBABLENESS +UNCLINCH +UNCLINCHED +UNCLINCHES +UNCLINCHING +UNCLIP +UNCLIPPED +UNCLIPPING +UNCLIPS +UNCLOAK +UNCLOAKED +UNCLOAKING +UNCLOAKS +UNCLOG +UNCLOGGED +UNCLOGGING +UNCLOGS +UNCLOSE +UNCLOSED +UNCLOSES +UNCLOSING +UNCLOTHE +UNCLOTHED +UNCLOTHES +UNCLOTHING +UNCLOUD +UNCLOUDED +UNCLOUDEDLY +UNCLOUDING +UNCLOUDS +UNCLOUDY +UNCLOYED +UNCLOYING +UNCLUBBABLE +UNCLUTTER +UNCLUTTERED +UNCLUTTERING +UNCLUTTERS +UNCO +UNCOALESCE +UNCOALESCED +UNCOALESCES +UNCOALESCING +UNCOATED +UNCOATING +UNCOATINGS +UNCOBBLED +UNCOCK +UNCOCKED +UNCOCKING +UNCOCKS +UNCODED +UNCODIFIED +UNCOERCED +UNCOERCIVE +UNCOERCIVELY +UNCOFFIN +UNCOFFINED +UNCOFFINING +UNCOFFINS +UNCOIL +UNCOILED +UNCOILING +UNCOILS +UNCOINED +UNCOLLECTED +UNCOLLECTIBLE +UNCOLLECTIBLES +UNCOLORED +UNCOMBATIVE +UNCOMBED +UNCOMBINED +UNCOMELY +UNCOMFORTABLE +UNCOMFORTABLY +UNCOMIC +UNCOMMERCIAL +UNCOMMITTED +UNCOMMON +UNCOMMONER +UNCOMMONEST +UNCOMMONLY +UNCOMMONNESS +UNCOMMONNESSES +UNCOMMUNICABLE +UNCOMMUNICATIVE +UNCOMPASSIONATE +UNCOMPELLING +UNCOMPENSATED +UNCOMPETITIVE +UNCOMPLACENT +UNCOMPLAINING +UNCOMPLAININGLY +UNCOMPLETED +UNCOMPLICATED +UNCOMPLIMENTARY +UNCOMPOUNDED +UNCOMPREHENDED +UNCOMPREHENDING +UNCOMPROMISABLE +UNCOMPROMISING +UNCOMPUTERIZED +UNCONCEALED +UNCONCEIVABLE +UNCONCERN +UNCONCERNED +UNCONCERNEDLY +UNCONCERNEDNESS +UNCONCERNS +UNCONDITIONAL +UNCONDITIONALLY +UNCONDITIONED +UNCONFESSED +UNCONFINED +UNCONFIRMED +UNCONFORMABLE +UNCONFORMABLY +UNCONFORMITIES +UNCONFORMITY +UNCONFOUNDED +UNCONFUSE +UNCONFUSED +UNCONFUSES +UNCONFUSING +UNCONGENIAL +UNCONGENIALITY +UNCONJUGATED +UNCONNECTED +UNCONQUERABLE +UNCONQUERABLY +UNCONQUERED +UNCONSCIONABLE +UNCONSCIONABLY +UNCONSCIOUS +UNCONSCIOUSES +UNCONSCIOUSLY +UNCONSCIOUSNESS +UNCONSECRATED +UNCONSIDERED +UNCONSOLIDATED +UNCONSTRAINED +UNCONSTRAINT +UNCONSTRAINTS +UNCONSTRICTED +UNCONSTRUCTED +UNCONSTRUCTIVE +UNCONSUMED +UNCONSUMMATED +UNCONTAINABLE +UNCONTAMINATED +UNCONTEMPLATED +UNCONTEMPORARY +UNCONTENTIOUS +UNCONTESTED +UNCONTRACTED +UNCONTRADICTED +UNCONTRIVED +UNCONTROLLABLE +UNCONTROLLABLY +UNCONTROLLED +UNCONTROVERSIAL +UNCONVENTIONAL +UNCONVERTED +UNCONVINCED +UNCONVINCING +UNCONVINCINGLY +UNCONVOYED +UNCOOKED +UNCOOL +UNCOOLED +UNCOOPERATIVE +UNCOORDINATED +UNCOPYRIGHTABLE +UNCORK +UNCORKED +UNCORKING +UNCORKS +UNCORRECTABLE +UNCORRECTED +UNCORRELATED +UNCORROBORATED +UNCORRUPT +UNCORSETED +UNCOS +UNCOUNTABLE +UNCOUNTED +UNCOUPLE +UNCOUPLED +UNCOUPLER +UNCOUPLERS +UNCOUPLES +UNCOUPLING +UNCOURAGEOUS +UNCOUTH +UNCOUTHLY +UNCOUTHNESS +UNCOUTHNESSES +UNCOVENANTED +UNCOVER +UNCOVERED +UNCOVERING +UNCOVERS +UNCOY +UNCRACKED +UNCRATE +UNCRATED +UNCRATES +UNCRATING +UNCRAZY +UNCREATE +UNCREATED +UNCREATES +UNCREATING +UNCREATIVE +UNCREDENTIALED +UNCREDITED +UNCREWED +UNCRIPPLED +UNCRITICAL +UNCRITICALLY +UNCROPPED +UNCROSS +UNCROSSABLE +UNCROSSED +UNCROSSES +UNCROSSING +UNCROWDED +UNCROWN +UNCROWNED +UNCROWNING +UNCROWNS +UNCRUMPLE +UNCRUMPLED +UNCRUMPLES +UNCRUMPLING +UNCRUSHABLE +UNCRUSHED +UNCRYSTALLIZED +UNCTION +UNCTIONS +UNCTUOUS +UNCTUOUSLY +UNCTUOUSNESS +UNCTUOUSNESSES +UNCUFF +UNCUFFED +UNCUFFING +UNCUFFS +UNCULTIVABLE +UNCULTIVATED +UNCULTURED +UNCURABLE +UNCURABLY +UNCURB +UNCURBED +UNCURBING +UNCURBS +UNCURED +UNCURIOUS +UNCURL +UNCURLED +UNCURLING +UNCURLS +UNCURRENT +UNCURSED +UNCURTAINED +UNCUS +UNCUSTOMARILY +UNCUSTOMARY +UNCUT +UNCUTE +UNCYNICAL +UNCYNICALLY +UNDAMAGED +UNDAMPED +UNDANCEABLE +UNDARING +UNDATABLE +UNDATED +UNDAUNTABLE +UNDAUNTED +UNDAUNTEDLY +UNDE +UNDEAD +UNDEBATABLE +UNDEBATABLY +UNDEBATED +UNDECADENT +UNDECAYED +UNDECEIVE +UNDECEIVED +UNDECEIVES +UNDECEIVING +UNDECIDABILITY +UNDECIDABLE +UNDECIDED +UNDECIDEDS +UNDECILLION +UNDECILLIONS +UNDECIPHERABLE +UNDECIPHERED +UNDECKED +UNDECLARED +UNDECOMPOSED +UNDECORATED +UNDEDICATED +UNDEE +UNDEFACED +UNDEFEATED +UNDEFENDED +UNDEFILED +UNDEFINABLE +UNDEFINED +UNDEFOLIATED +UNDEFORMED +UNDELEGATED +UNDELETED +UNDELIVERABLE +UNDELIVERED +UNDELUDED +UNDEMANDING +UNDEMOCRATIC +UNDEMONSTRATIVE +UNDENIABLE +UNDENIABLENESS +UNDENIABLY +UNDENIED +UNDENTED +UNDEPENDABLE +UNDER +UNDERACHIEVE +UNDERACHIEVED +UNDERACHIEVER +UNDERACHIEVERS +UNDERACHIEVES +UNDERACHIEVING +UNDERACT +UNDERACTED +UNDERACTING +UNDERACTIVE +UNDERACTIVITIES +UNDERACTIVITY +UNDERACTS +UNDERAGE +UNDERAGED +UNDERAGES +UNDERARM +UNDERARMS +UNDERATE +UNDERBAKE +UNDERBAKED +UNDERBAKES +UNDERBAKING +UNDERBELLIES +UNDERBELLY +UNDERBID +UNDERBIDDER +UNDERBIDDERS +UNDERBIDDING +UNDERBIDS +UNDERBITE +UNDERBITES +UNDERBODIES +UNDERBODY +UNDERBOSS +UNDERBOSSES +UNDERBOUGHT +UNDERBRED +UNDERBRIM +UNDERBRIMS +UNDERBRUSH +UNDERBRUSHES +UNDERBUD +UNDERBUDDED +UNDERBUDDING +UNDERBUDGETED +UNDERBUDS +UNDERBUY +UNDERBUYING +UNDERBUYS +UNDERCARD +UNDERCARDS +UNDERCARRIAGE +UNDERCARRIAGES +UNDERCHARGE +UNDERCHARGED +UNDERCHARGES +UNDERCHARGING +UNDERCLAD +UNDERCLASS +UNDERCLASSES +UNDERCLASSMAN +UNDERCLASSMEN +UNDERCLAY +UNDERCLAYS +UNDERCLOTHES +UNDERCLOTHING +UNDERCLOTHINGS +UNDERCOAT +UNDERCOATED +UNDERCOATING +UNDERCOATINGS +UNDERCOATS +UNDERCOOK +UNDERCOOKED +UNDERCOOKING +UNDERCOOKS +UNDERCOOL +UNDERCOOLED +UNDERCOOLING +UNDERCOOLS +UNDERCOUNT +UNDERCOUNTED +UNDERCOUNTING +UNDERCOUNTS +UNDERCOVER +UNDERCROFT +UNDERCROFTS +UNDERCURRENT +UNDERCURRENTS +UNDERCUT +UNDERCUTS +UNDERCUTTING +UNDERDEVELOPED +UNDERDID +UNDERDO +UNDERDOES +UNDERDOG +UNDERDOGS +UNDERDOING +UNDERDONE +UNDERDOSE +UNDERDOSED +UNDERDOSES +UNDERDOSING +UNDERDRAWERS +UNDEREAT +UNDEREATEN +UNDEREATING +UNDEREATS +UNDEREDUCATED +UNDEREMPHASES +UNDEREMPHASIS +UNDEREMPHASIZE +UNDEREMPHASIZED +UNDEREMPHASIZES +UNDEREMPLOYED +UNDEREMPLOYMENT +UNDERESTIMATE +UNDERESTIMATED +UNDERESTIMATES +UNDERESTIMATING +UNDERESTIMATION +UNDEREXPOSE +UNDEREXPOSED +UNDEREXPOSES +UNDEREXPOSING +UNDEREXPOSURE +UNDEREXPOSURES +UNDERFED +UNDERFEED +UNDERFEEDING +UNDERFEEDS +UNDERFINANCED +UNDERFLOW +UNDERFLOWS +UNDERFOOT +UNDERFUND +UNDERFUNDED +UNDERFUNDING +UNDERFUNDS +UNDERFUR +UNDERFURS +UNDERGARMENT +UNDERGARMENTS +UNDERGIRD +UNDERGIRDED +UNDERGIRDING +UNDERGIRDS +UNDERGIRT +UNDERGLAZE +UNDERGLAZES +UNDERGO +UNDERGOD +UNDERGODS +UNDERGOER +UNDERGOERS +UNDERGOES +UNDERGOING +UNDERGONE +UNDERGRAD +UNDERGRADS +UNDERGRADUATE +UNDERGRADUATES +UNDERGROUND +UNDERGROUNDER +UNDERGROUNDERS +UNDERGROUNDS +UNDERGROWTH +UNDERGROWTHS +UNDERHAIR +UNDERHAIRS +UNDERHAND +UNDERHANDED +UNDERHANDEDLY +UNDERHANDEDNESS +UNDERHANDS +UNDERHEAT +UNDERHEATED +UNDERHEATING +UNDERHEATS +UNDERHUNG +UNDERINFLATED +UNDERINFLATION +UNDERINFLATIONS +UNDERINSURED +UNDERINVESTMENT +UNDERIVED +UNDERJAW +UNDERJAWS +UNDERKILL +UNDERKILLS +UNDERLAID +UNDERLAIN +UNDERLAP +UNDERLAPPED +UNDERLAPPING +UNDERLAPS +UNDERLAY +UNDERLAYING +UNDERLAYMENT +UNDERLAYMENTS +UNDERLAYS +UNDERLET +UNDERLETS +UNDERLETTING +UNDERLIE +UNDERLIES +UNDERLINE +UNDERLINED +UNDERLINES +UNDERLING +UNDERLINGS +UNDERLINING +UNDERLIP +UNDERLIPS +UNDERLIT +UNDERLOAD +UNDERLOADED +UNDERLOADING +UNDERLOADS +UNDERLYING +UNDERLYINGLY +UNDERMANNED +UNDERMINE +UNDERMINED +UNDERMINES +UNDERMINING +UNDERMOST +UNDERNEATH +UNDERNOURISHED +UNDERNUTRITION +UNDERNUTRITIONS +UNDERPAID +UNDERPAINTING +UNDERPAINTINGS +UNDERPANTS +UNDERPART +UNDERPARTS +UNDERPASS +UNDERPASSES +UNDERPAY +UNDERPAYING +UNDERPAYMENT +UNDERPAYMENTS +UNDERPAYS +UNDERPIN +UNDERPINNED +UNDERPINNING +UNDERPINNINGS +UNDERPINS +UNDERPLAY +UNDERPLAYED +UNDERPLAYING +UNDERPLAYS +UNDERPLOT +UNDERPLOTS +UNDERPOPULATED +UNDERPOWERED +UNDERPREPARED +UNDERPRICE +UNDERPRICED +UNDERPRICES +UNDERPRICING +UNDERPRIVILEGED +UNDERPRODUCTION +UNDERPROOF +UNDERPROP +UNDERPROPPED +UNDERPROPPING +UNDERPROPS +UNDERPUBLICIZED +UNDERRAN +UNDERRATE +UNDERRATED +UNDERRATES +UNDERRATING +UNDERREACT +UNDERREACTED +UNDERREACTING +UNDERREACTS +UNDERREPORT +UNDERREPORTED +UNDERREPORTING +UNDERREPORTS +UNDERRIPE +UNDERRUN +UNDERRUNNING +UNDERRUNS +UNDERSATURATED +UNDERSCORE +UNDERSCORED +UNDERSCORES +UNDERSCORING +UNDERSEA +UNDERSEAS +UNDERSECRETARY +UNDERSELL +UNDERSELLING +UNDERSELLS +UNDERSERVED +UNDERSET +UNDERSETS +UNDERSEXED +UNDERSHIRT +UNDERSHIRTED +UNDERSHIRTS +UNDERSHOOT +UNDERSHOOTING +UNDERSHOOTS +UNDERSHORTS +UNDERSHOT +UNDERSHRUB +UNDERSHRUBS +UNDERSIDE +UNDERSIDES +UNDERSIGN +UNDERSIGNED +UNDERSIGNING +UNDERSIGNS +UNDERSIZE +UNDERSIZED +UNDERSKIRT +UNDERSKIRTS +UNDERSLUNG +UNDERSOIL +UNDERSOILS +UNDERSOLD +UNDERSONG +UNDERSONGS +UNDERSPIN +UNDERSPINS +UNDERSTAFFED +UNDERSTAFFING +UNDERSTAFFINGS +UNDERSTAND +UNDERSTANDABLE +UNDERSTANDABLY +UNDERSTANDING +UNDERSTANDINGLY +UNDERSTANDINGS +UNDERSTANDS +UNDERSTATE +UNDERSTATED +UNDERSTATEDLY +UNDERSTATEMENT +UNDERSTATEMENTS +UNDERSTATES +UNDERSTATING +UNDERSTEER +UNDERSTEERED +UNDERSTEERING +UNDERSTEERS +UNDERSTOOD +UNDERSTORIES +UNDERSTORY +UNDERSTRAPPER +UNDERSTRAPPERS +UNDERSTRENGTH +UNDERSTUDIED +UNDERSTUDIES +UNDERSTUDY +UNDERSTUDYING +UNDERSUPPLIES +UNDERSUPPLY +UNDERSURFACE +UNDERSURFACES +UNDERTAKE +UNDERTAKEN +UNDERTAKER +UNDERTAKERS +UNDERTAKES +UNDERTAKING +UNDERTAKINGS +UNDERTAX +UNDERTAXED +UNDERTAXES +UNDERTAXING +UNDERTENANT +UNDERTENANTS +UNDERTHRUST +UNDERTHRUSTING +UNDERTHRUSTS +UNDERTINT +UNDERTINTS +UNDERTONE +UNDERTONES +UNDERTOOK +UNDERTOW +UNDERTOWS +UNDERTRICK +UNDERTRICKS +UNDERUSE +UNDERUSED +UNDERUSES +UNDERUSING +UNDERUTILIZE +UNDERUTILIZED +UNDERUTILIZES +UNDERUTILIZING +UNDERVALUATION +UNDERVALUATIONS +UNDERVALUE +UNDERVALUED +UNDERVALUES +UNDERVALUING +UNDERVEST +UNDERVESTS +UNDERVOTE +UNDERVOTES +UNDERWATER +UNDERWAY +UNDERWEAR +UNDERWEIGHT +UNDERWEIGHTS +UNDERWENT +UNDERWHELM +UNDERWHELMED +UNDERWHELMING +UNDERWHELMS +UNDERWING +UNDERWINGS +UNDERWIRE +UNDERWIRES +UNDERWOOD +UNDERWOODS +UNDERWOOL +UNDERWOOLS +UNDERWORK +UNDERWORKED +UNDERWORKING +UNDERWORKS +UNDERWORLD +UNDERWORLDS +UNDERWRITE +UNDERWRITER +UNDERWRITERS +UNDERWRITES +UNDERWRITING +UNDERWRITTEN +UNDERWROTE +UNDESCENDED +UNDESCRIBABLE +UNDESERVED +UNDESERVING +UNDESIGNATED +UNDESIGNING +UNDESIRABILITY +UNDESIRABLE +UNDESIRABLENESS +UNDESIRABLES +UNDESIRABLY +UNDESIRED +UNDETECTABLE +UNDETECTED +UNDETERMINABLE +UNDETERMINED +UNDETERRED +UNDEVELOPED +UNDEVIATING +UNDEVIATINGLY +UNDEVOUT +UNDIAGNOSABLE +UNDIAGNOSED +UNDIALECTICAL +UNDID +UNDIDACTIC +UNDIES +UNDIGESTED +UNDIGESTIBLE +UNDIGNIFIED +UNDILUTED +UNDIMINISHED +UNDIMMED +UNDINE +UNDINES +UNDIPLOMATIC +UNDIRECTED +UNDISCHARGED +UNDISCIPLINED +UNDISCLOSED +UNDISCOURAGED +UNDISCOVERABLE +UNDISCOVERED +UNDISCUSSED +UNDISGUISED +UNDISGUISEDLY +UNDISMAYED +UNDISPUTABLE +UNDISPUTED +UNDISSOCIATED +UNDISSOLVED +UNDISTINGUISHED +UNDISTORTED +UNDISTRACTED +UNDISTRIBUTED +UNDISTURBED +UNDIVIDED +UNDO +UNDOABLE +UNDOCILE +UNDOCK +UNDOCKED +UNDOCKING +UNDOCKS +UNDOCTORED +UNDOCTRINAIRE +UNDOCUMENTED +UNDOER +UNDOERS +UNDOES +UNDOGMATIC +UNDOGMATICALLY +UNDOING +UNDOINGS +UNDOMESTIC +UNDOMESTICATED +UNDONE +UNDOTTED +UNDOUBLE +UNDOUBLED +UNDOUBLES +UNDOUBLING +UNDOUBTABLE +UNDOUBTED +UNDOUBTEDLY +UNDOUBTING +UNDRAINED +UNDRAMATIC +UNDRAMATICALLY +UNDRAMATIZED +UNDRAPE +UNDRAPED +UNDRAPES +UNDRAPING +UNDRAW +UNDRAWING +UNDRAWN +UNDRAWS +UNDREAMED +UNDREAMT +UNDRESS +UNDRESSED +UNDRESSES +UNDRESSING +UNDREST +UNDREW +UNDRIED +UNDRILLED +UNDRINKABLE +UNDRUNK +UNDUBBED +UNDUE +UNDULANCE +UNDULANCES +UNDULANT +UNDULAR +UNDULATE +UNDULATED +UNDULATES +UNDULATING +UNDULATION +UNDULATIONS +UNDULATOR +UNDULATORS +UNDULATORY +UNDULLED +UNDULY +UNDUPLICATED +UNDUTIFUL +UNDUTIFULLY +UNDUTIFULNESS +UNDUTIFULNESSES +UNDY +UNDYED +UNDYING +UNDYINGLY +UNDYNAMIC +UNEAGER +UNEAGERLY +UNEARMARKED +UNEARNED +UNEARTH +UNEARTHED +UNEARTHING +UNEARTHLIER +UNEARTHLIEST +UNEARTHLINESS +UNEARTHLINESSES +UNEARTHLY +UNEARTHS +UNEASE +UNEASES +UNEASIER +UNEASIEST +UNEASILY +UNEASINESS +UNEASINESSES +UNEASY +UNEATABLE +UNEATEN +UNECCENTRIC +UNECOLOGICAL +UNECONOMIC +UNECONOMICAL +UNEDIBLE +UNEDIFYING +UNEDITED +UNEDUCABLE +UNEDUCATED +UNEFFACED +UNELABORATE +UNELECTABLE +UNELECTED +UNELECTRIFIED +UNEMBARRASSED +UNEMBELLISHED +UNEMBITTERED +UNEMOTIONAL +UNEMOTIONALLY +UNEMPHATIC +UNEMPHATICALLY +UNEMPIRICAL +UNEMPLOYABILITY +UNEMPLOYABLE +UNEMPLOYABLES +UNEMPLOYED +UNEMPLOYEDS +UNEMPLOYMENT +UNEMPLOYMENTS +UNENCHANTED +UNENCLOSED +UNENCOURAGING +UNENCUMBERED +UNENDEARING +UNENDED +UNENDING +UNENDINGLY +UNENDOWED +UNENDURABLE +UNENDURABLENESS +UNENDURABLY +UNENFORCEABLE +UNENFORCED +UNENGAGED +UNENJOYED +UNENLARGED +UNENLIGHTENED +UNENLIGHTENING +UNENRICHED +UNENSURED +UNENTERED +UNENTERPRISING +UNENTHUSIASTIC +UNENVIABLE +UNENVIED +UNENVIOUS +UNEQUAL +UNEQUALED +UNEQUALLED +UNEQUALLY +UNEQUALS +UNEQUIVOCABLY +UNEQUIVOCAL +UNEQUIVOCALLY +UNERASED +UNEROTIC +UNERRING +UNERRINGLY +UNESCAPABLE +UNESSAYED +UNESSENTIAL +UNESTABLISHED +UNETHICAL +UNEVADED +UNEVALUATED +UNEVEN +UNEVENER +UNEVENEST +UNEVENLY +UNEVENNESS +UNEVENNESSES +UNEVENTFUL +UNEVENTFULLY +UNEVENTFULNESS +UNEVOLVED +UNEXALTED +UNEXAMINED +UNEXAMPLED +UNEXCELLED +UNEXCEPTIONABLE +UNEXCEPTIONABLY +UNEXCEPTIONAL +UNEXCITABLE +UNEXCITED +UNEXCITING +UNEXCUSED +UNEXERCISED +UNEXOTIC +UNEXPECTED +UNEXPECTEDLY +UNEXPECTEDNESS +UNEXPENDED +UNEXPERT +UNEXPIRED +UNEXPLAINABLE +UNEXPLAINED +UNEXPLODED +UNEXPLOITED +UNEXPLORED +UNEXPOSED +UNEXPRESSED +UNEXPRESSIVE +UNEXPURGATED +UNEXTRAORDINARY +UNFADED +UNFADING +UNFADINGLY +UNFAILING +UNFAILINGLY +UNFAIR +UNFAIRER +UNFAIREST +UNFAIRLY +UNFAIRNESS +UNFAIRNESSES +UNFAITH +UNFAITHFUL +UNFAITHFULLY +UNFAITHFULNESS +UNFAITHS +UNFAKED +UNFALLEN +UNFALSIFIABLE +UNFALTERING +UNFALTERINGLY +UNFAMILIAR +UNFAMILIARITIES +UNFAMILIARITY +UNFAMILIARLY +UNFAMOUS +UNFANCY +UNFASHIONABLE +UNFASHIONABLY +UNFASTEN +UNFASTENED +UNFASTENING +UNFASTENS +UNFASTIDIOUS +UNFATHERED +UNFATHOMABLE +UNFAVORABLE +UNFAVORABLENESS +UNFAVORABLY +UNFAVORED +UNFAVORITE +UNFAZED +UNFEARED +UNFEARFUL +UNFEARING +UNFEASIBLE +UNFED +UNFEELING +UNFEELINGLY +UNFEELINGNESS +UNFEELINGNESSES +UNFEIGNED +UNFEIGNEDLY +UNFELT +UNFELTED +UNFEMININE +UNFENCE +UNFENCED +UNFENCES +UNFENCING +UNFERMENTED +UNFERTILE +UNFERTILIZED +UNFETTER +UNFETTERED +UNFETTERING +UNFETTERS +UNFILIAL +UNFILIALLY +UNFILLED +UNFILMED +UNFILTERED +UNFINDABLE +UNFINISHED +UNFIRED +UNFISHED +UNFIT +UNFITLY +UNFITNESS +UNFITNESSES +UNFITS +UNFITTED +UNFITTING +UNFIX +UNFIXED +UNFIXES +UNFIXING +UNFIXT +UNFLAGGING +UNFLAGGINGLY +UNFLAMBOYANT +UNFLAPPABILITY +UNFLAPPABLE +UNFLAPPABLY +UNFLAPPED +UNFLASHY +UNFLATTERING +UNFLATTERINGLY +UNFLAWED +UNFLEDGED +UNFLEXED +UNFLINCHING +UNFLINCHINGLY +UNFLUTED +UNFLYABLE +UNFOCUSED +UNFOCUSSED +UNFOILED +UNFOLD +UNFOLDED +UNFOLDER +UNFOLDERS +UNFOLDING +UNFOLDMENT +UNFOLDMENTS +UNFOLDS +UNFOND +UNFORCED +UNFORESEEABLE +UNFORESEEN +UNFORESTED +UNFORGED +UNFORGETTABLE +UNFORGETTABLY +UNFORGIVABLE +UNFORGIVING +UNFORGIVINGNESS +UNFORGOT +UNFORKED +UNFORMED +UNFORMULATED +UNFORTHCOMING +UNFORTIFIED +UNFORTUNATE +UNFORTUNATELY +UNFORTUNATES +UNFOSSILIFEROUS +UNFOUGHT +UNFOUND +UNFOUNDED +UNFRAMED +UNFREE +UNFREED +UNFREEDOM +UNFREEDOMS +UNFREEING +UNFREES +UNFREEZE +UNFREEZES +UNFREEZING +UNFREQUENTED +UNFRIENDED +UNFRIENDLINESS +UNFRIENDLY +UNFRIVOLOUS +UNFROCK +UNFROCKED +UNFROCKING +UNFROCKS +UNFROZE +UNFROZEN +UNFRUITFUL +UNFRUITFULLY +UNFRUITFULNESS +UNFULFILLABLE +UNFULFILLED +UNFUNDED +UNFUNNY +UNFURL +UNFURLED +UNFURLING +UNFURLS +UNFURNISHED +UNFUSED +UNFUSSILY +UNFUSSY +UNGAINLIER +UNGAINLIEST +UNGAINLINESS +UNGAINLINESSES +UNGAINLY +UNGALLANT +UNGALLANTLY +UNGALLED +UNGARBED +UNGARNISHED +UNGATED +UNGAZING +UNGELDED +UNGENEROSITIES +UNGENEROSITY +UNGENEROUS +UNGENEROUSLY +UNGENIAL +UNGENTEEL +UNGENTLE +UNGENTLEMANLY +UNGENTLY +UNGENTRIFIED +UNGENUINE +UNGERMINATED +UNGIFTED +UNGIMMICKY +UNGIRD +UNGIRDED +UNGIRDING +UNGIRDS +UNGIRT +UNGIVING +UNGLAMORIZED +UNGLAMOROUS +UNGLAZED +UNGLOSSED +UNGLOVE +UNGLOVED +UNGLOVES +UNGLOVING +UNGLUE +UNGLUED +UNGLUES +UNGLUING +UNGODLIER +UNGODLIEST +UNGODLINESS +UNGODLINESSES +UNGODLY +UNGOT +UNGOTTEN +UNGOVERNABLE +UNGOWNED +UNGRACED +UNGRACEFUL +UNGRACEFULLY +UNGRACIOUS +UNGRACIOUSLY +UNGRACIOUSNESS +UNGRADED +UNGRAMMATICAL +UNGRASPABLE +UNGRATEFUL +UNGRATEFULLY +UNGRATEFULNESS +UNGREASED +UNGREEDY +UNGROOMED +UNGROUND +UNGROUPED +UNGRUDGING +UNGUAL +UNGUARD +UNGUARDED +UNGUARDEDLY +UNGUARDEDNESS +UNGUARDEDNESSES +UNGUARDING +UNGUARDS +UNGUENT +UNGUENTA +UNGUENTS +UNGUENTUM +UNGUES +UNGUESSABLE +UNGUIDED +UNGUINOUS +UNGUIS +UNGULA +UNGULAE +UNGULAR +UNGULATE +UNGULATES +UNHACKNEYED +UNHAILED +UNHAIR +UNHAIRED +UNHAIRER +UNHAIRERS +UNHAIRING +UNHAIRS +UNHALLOW +UNHALLOWED +UNHALLOWING +UNHALLOWS +UNHALVED +UNHAMPERED +UNHAND +UNHANDED +UNHANDIER +UNHANDIEST +UNHANDILY +UNHANDINESS +UNHANDINESSES +UNHANDING +UNHANDLED +UNHANDS +UNHANDSOME +UNHANDSOMELY +UNHANDY +UNHANG +UNHANGED +UNHANGING +UNHANGS +UNHAPPIER +UNHAPPIEST +UNHAPPILY +UNHAPPINESS +UNHAPPINESSES +UNHAPPY +UNHARMED +UNHARMFUL +UNHARNESS +UNHARNESSED +UNHARNESSES +UNHARNESSING +UNHARRIED +UNHARVESTED +UNHASTY +UNHAT +UNHATCHED +UNHATS +UNHATTED +UNHATTING +UNHEALED +UNHEALTHFUL +UNHEALTHIER +UNHEALTHIEST +UNHEALTHILY +UNHEALTHINESS +UNHEALTHINESSES +UNHEALTHY +UNHEARD +UNHEATED +UNHEDGED +UNHEEDED +UNHEEDFUL +UNHEEDING +UNHELM +UNHELMED +UNHELMING +UNHELMS +UNHELPED +UNHELPFUL +UNHELPFULLY +UNHERALDED +UNHEROIC +UNHESITATING +UNHESITATINGLY +UNHEWN +UNHINDERED +UNHINGE +UNHINGED +UNHINGES +UNHINGING +UNHIP +UNHIRABLE +UNHIRED +UNHISTORICAL +UNHITCH +UNHITCHED +UNHITCHES +UNHITCHING +UNHOLIER +UNHOLIEST +UNHOLILY +UNHOLINESS +UNHOLINESSES +UNHOLY +UNHOMOGENIZED +UNHONORED +UNHOOD +UNHOODED +UNHOODING +UNHOODS +UNHOOK +UNHOOKED +UNHOOKING +UNHOOKS +UNHOPED +UNHOPEFUL +UNHORSE +UNHORSED +UNHORSES +UNHORSING +UNHOSTILE +UNHOUSE +UNHOUSED +UNHOUSELED +UNHOUSES +UNHOUSING +UNHUMAN +UNHUMANLY +UNHUMBLED +UNHUMOROUS +UNHUNG +UNHURRIED +UNHURRIEDLY +UNHURT +UNHUSK +UNHUSKED +UNHUSKING +UNHUSKS +UNHYDROLYZED +UNHYGIENIC +UNHYPHENATED +UNHYSTERICAL +UNHYSTERICALLY +UNIALGAL +UNIAXIAL +UNIBODY +UNICAMERAL +UNICAMERALLY +UNICELLULAR +UNICOLOR +UNICORN +UNICORNS +UNICYCLE +UNICYCLED +UNICYCLES +UNICYCLING +UNICYCLIST +UNICYCLISTS +UNIDEAED +UNIDEAL +UNIDENTIFIABLE +UNIDENTIFIED +UNIDEOLOGICAL +UNIDIMENSIONAL +UNIDIOMATIC +UNIDIRECTIONAL +UNIFACE +UNIFACES +UNIFIABLE +UNIFIC +UNIFICATION +UNIFICATIONS +UNIFIED +UNIFIER +UNIFIERS +UNIFIES +UNIFILAR +UNIFOLIATE +UNIFOLIOLATE +UNIFORM +UNIFORMED +UNIFORMER +UNIFORMEST +UNIFORMING +UNIFORMITARIAN +UNIFORMITARIANS +UNIFORMITIES +UNIFORMITY +UNIFORMLY +UNIFORMNESS +UNIFORMNESSES +UNIFORMS +UNIFY +UNIFYING +UNIGNORABLE +UNIJUGATE +UNILATERAL +UNILATERALLY +UNILINEAL +UNILINEAR +UNILINGUAL +UNILLUMINATING +UNILLUSIONED +UNILOBED +UNILOCULAR +UNIMAGINABLE +UNIMAGINABLY +UNIMAGINATIVE +UNIMAGINATIVELY +UNIMBUED +UNIMMUNIZED +UNIMPAIRED +UNIMPASSIONED +UNIMPEACHABLE +UNIMPEACHABLY +UNIMPEDED +UNIMPORTANT +UNIMPOSING +UNIMPRESSED +UNIMPRESSIVE +UNIMPROVED +UNINCORPORATED +UNINDEXED +UNINDICTED +UNINFECTED +UNINFLATED +UNINFLECTED +UNINFLUENCED +UNINFORMATIVE +UNINFORMATIVELY +UNINFORMED +UNINGRATIATING +UNINHABITABLE +UNINHABITED +UNINHIBITED +UNINHIBITEDLY +UNINHIBITEDNESS +UNINITIATE +UNINITIATED +UNINITIATES +UNINJURED +UNINOCULATED +UNINSPECTED +UNINSPIRED +UNINSPIRING +UNINSTALL +UNINSTALLED +UNINSTALLING +UNINSTALLS +UNINSTRUCTED +UNINSTRUCTIVE +UNINSULATED +UNINSURABLE +UNINSURED +UNINSUREDS +UNINTEGRATED +UNINTELLECTUAL +UNINTELLIGENT +UNINTELLIGENTLY +UNINTELLIGIBLE +UNINTELLIGIBLY +UNINTENDED +UNINTENTIONAL +UNINTENTIONALLY +UNINTEREST +UNINTERESTED +UNINTERESTING +UNINTERESTS +UNINTERRUPTED +UNINTERRUPTEDLY +UNINTIMIDATED +UNINUCLEATE +UNINVENTIVE +UNINVITED +UNINVITING +UNINVOKED +UNINVOLVED +UNION +UNIONISATION +UNIONISATIONS +UNIONISE +UNIONISED +UNIONISES +UNIONISING +UNIONISM +UNIONISMS +UNIONIST +UNIONISTS +UNIONIZATION +UNIONIZATIONS +UNIONIZE +UNIONIZED +UNIONIZER +UNIONIZERS +UNIONIZES +UNIONIZING +UNIONS +UNIPARENTAL +UNIPARENTALLY +UNIPAROUS +UNIPLANAR +UNIPOD +UNIPODS +UNIPOLAR +UNIPOTENT +UNIQUE +UNIQUELY +UNIQUENESS +UNIQUENESSES +UNIQUER +UNIQUES +UNIQUEST +UNIRAMOUS +UNIRONED +UNIRONIC +UNIRONICALLY +UNIRRADIATED +UNIRRIGATED +UNISEX +UNISEXES +UNISEXUAL +UNISEXUALITIES +UNISEXUALITY +UNISIZE +UNISON +UNISONAL +UNISONANT +UNISONOUS +UNISONS +UNISSUED +UNIT +UNITAGE +UNITAGES +UNITARD +UNITARDS +UNITARIAN +UNITARIANISM +UNITARIANISMS +UNITARIANS +UNITARILY +UNITARY +UNITE +UNITED +UNITEDLY +UNITER +UNITERS +UNITES +UNITIES +UNITING +UNITIVE +UNITIVELY +UNITIZATION +UNITIZATIONS +UNITIZE +UNITIZED +UNITIZER +UNITIZERS +UNITIZES +UNITIZING +UNITRUST +UNITRUSTS +UNITS +UNITY +UNIVALENT +UNIVALENTS +UNIVALVE +UNIVALVED +UNIVALVES +UNIVARIATE +UNIVERSAL +UNIVERSALISM +UNIVERSALISMS +UNIVERSALIST +UNIVERSALISTIC +UNIVERSALISTS +UNIVERSALITIES +UNIVERSALITY +UNIVERSALIZE +UNIVERSALIZED +UNIVERSALIZES +UNIVERSALIZING +UNIVERSALLY +UNIVERSALNESS +UNIVERSALNESSES +UNIVERSALS +UNIVERSE +UNIVERSES +UNIVERSITIES +UNIVERSITY +UNIVOCAL +UNIVOCALLY +UNIVOCALS +UNJADED +UNJAM +UNJAMMED +UNJAMMING +UNJAMS +UNJOINED +UNJOINT +UNJOINTED +UNJOINTING +UNJOINTS +UNJOYFUL +UNJUDGED +UNJUST +UNJUSTIFIABLE +UNJUSTIFIABLY +UNJUSTIFIED +UNJUSTLY +UNJUSTNESS +UNJUSTNESSES +UNKEELED +UNKEMPT +UNKEND +UNKENNED +UNKENNEL +UNKENNELED +UNKENNELING +UNKENNELLED +UNKENNELLING +UNKENNELS +UNKENT +UNKEPT +UNKIND +UNKINDER +UNKINDEST +UNKINDLED +UNKINDLIER +UNKINDLIEST +UNKINDLINESS +UNKINDLINESSES +UNKINDLY +UNKINDNESS +UNKINDNESSES +UNKINGLY +UNKINK +UNKINKED +UNKINKING +UNKINKS +UNKISSED +UNKNIT +UNKNITS +UNKNITTED +UNKNITTING +UNKNOT +UNKNOTS +UNKNOTTED +UNKNOTTING +UNKNOWABILITIES +UNKNOWABILITY +UNKNOWABLE +UNKNOWING +UNKNOWINGLY +UNKNOWINGS +UNKNOWLEDGEABLE +UNKNOWN +UNKNOWNS +UNKOSHER +UNLABELED +UNLABORED +UNLACE +UNLACED +UNLACES +UNLACING +UNLADE +UNLADED +UNLADEN +UNLADES +UNLADING +UNLADYLIKE +UNLAID +UNLAMENTED +UNLASH +UNLASHED +UNLASHES +UNLASHING +UNLATCH +UNLATCHED +UNLATCHES +UNLATCHING +UNLAUNDERED +UNLAWFUL +UNLAWFULLY +UNLAWFULNESS +UNLAWFULNESSES +UNLAY +UNLAYING +UNLAYS +UNLEAD +UNLEADED +UNLEADEDS +UNLEADING +UNLEADS +UNLEARN +UNLEARNABLE +UNLEARNED +UNLEARNING +UNLEARNS +UNLEARNT +UNLEASED +UNLEASH +UNLEASHED +UNLEASHES +UNLEASHING +UNLEAVENED +UNLED +UNLESS +UNLET +UNLETHAL +UNLETTED +UNLETTERED +UNLEVEL +UNLEVELED +UNLEVELING +UNLEVELLED +UNLEVELLING +UNLEVELS +UNLEVIED +UNLIBERATED +UNLICENSED +UNLICKED +UNLIGHTED +UNLIKABLE +UNLIKE +UNLIKED +UNLIKELIER +UNLIKELIEST +UNLIKELIHOOD +UNLIKELIHOODS +UNLIKELINESS +UNLIKELINESSES +UNLIKELY +UNLIKENESS +UNLIKENESSES +UNLIMBER +UNLIMBERED +UNLIMBERING +UNLIMBERS +UNLIMITED +UNLIMITEDLY +UNLINED +UNLINK +UNLINKED +UNLINKING +UNLINKS +UNLISTED +UNLISTENABLE +UNLIT +UNLITERARY +UNLIVABLE +UNLIVE +UNLIVED +UNLIVELY +UNLIVES +UNLIVING +UNLOAD +UNLOADED +UNLOADER +UNLOADERS +UNLOADING +UNLOADS +UNLOBED +UNLOCALIZED +UNLOCATED +UNLOCK +UNLOCKED +UNLOCKING +UNLOCKS +UNLOOSE +UNLOOSED +UNLOOSEN +UNLOOSENED +UNLOOSENING +UNLOOSENS +UNLOOSES +UNLOOSING +UNLOVABLE +UNLOVED +UNLOVELIER +UNLOVELIEST +UNLOVELINESS +UNLOVELINESSES +UNLOVELY +UNLOVING +UNLUCKIER +UNLUCKIEST +UNLUCKILY +UNLUCKINESS +UNLUCKINESSES +UNLUCKY +UNLYRICAL +UNMACHO +UNMADE +UNMAGNIFIED +UNMAILED +UNMAKE +UNMAKER +UNMAKERS +UNMAKES +UNMAKING +UNMALICIOUS +UNMALICIOUSLY +UNMAN +UNMANAGEABLE +UNMANAGEABLY +UNMANAGED +UNMANFUL +UNMANIPULATED +UNMANLIER +UNMANLIEST +UNMANLINESS +UNMANLINESSES +UNMANLY +UNMANNED +UNMANNERED +UNMANNEREDLY +UNMANNERLINESS +UNMANNERLY +UNMANNING +UNMANNISH +UNMANS +UNMAPPED +UNMARKED +UNMARKETABLE +UNMARRED +UNMARRIED +UNMARRIEDS +UNMASCULINE +UNMASK +UNMASKED +UNMASKER +UNMASKERS +UNMASKING +UNMASKS +UNMATCHABLE +UNMATCHED +UNMATED +UNMATTED +UNMATURED +UNMEANING +UNMEANT +UNMEASURABLE +UNMEASURED +UNMECHANIZED +UNMEDIATED +UNMEDICATED +UNMEET +UNMEETLY +UNMELLOW +UNMELODIOUS +UNMELODIOUSNESS +UNMELTED +UNMEMORABLE +UNMEMORABLY +UNMENDED +UNMENTIONABLE +UNMENTIONABLES +UNMERCIFUL +UNMERCIFULLY +UNMERITED +UNMERRY +UNMESH +UNMESHED +UNMESHES +UNMESHING +UNMET +UNMETABOLIZED +UNMEW +UNMEWED +UNMEWING +UNMEWS +UNMILITARY +UNMILLED +UNMINDFUL +UNMINED +UNMINGLE +UNMINGLED +UNMINGLES +UNMINGLING +UNMISTAKABLE +UNMISTAKABLY +UNMITER +UNMITERED +UNMITERING +UNMITERS +UNMITIGATED +UNMITIGATEDLY +UNMITIGATEDNESS +UNMITRE +UNMITRED +UNMITRES +UNMITRING +UNMIX +UNMIXABLE +UNMIXED +UNMIXEDLY +UNMIXES +UNMIXING +UNMIXT +UNMODERNIZED +UNMODIFIED +UNMODISH +UNMOLD +UNMOLDED +UNMOLDING +UNMOLDS +UNMOLESTED +UNMOLTEN +UNMONITORED +UNMOOR +UNMOORED +UNMOORING +UNMOORS +UNMORAL +UNMORALITIES +UNMORALITY +UNMORALLY +UNMORTISE +UNMORTISED +UNMORTISES +UNMORTISING +UNMOTIVATED +UNMOUNTED +UNMOURNED +UNMOVABLE +UNMOVED +UNMOVING +UNMOWN +UNMUFFLE +UNMUFFLED +UNMUFFLES +UNMUFFLING +UNMUSICAL +UNMUZZLE +UNMUZZLED +UNMUZZLES +UNMUZZLING +UNMYELINATED +UNNAIL +UNNAILED +UNNAILING +UNNAILS +UNNAMABLE +UNNAMEABLE +UNNAMED +UNNATURAL +UNNATURALLY +UNNATURALNESS +UNNATURALNESSES +UNNECESSARILY +UNNECESSARY +UNNEEDED +UNNEEDFUL +UNNEGOTIABLE +UNNERVE +UNNERVED +UNNERVES +UNNERVING +UNNERVINGLY +UNNEUROTIC +UNNEWSWORTHY +UNNILHEXIUM +UNNILHEXIUMS +UNNILPENTIUM +UNNILPENTIUMS +UNNILQUADIUM +UNNILQUADIUMS +UNNOISY +UNNOTED +UNNOTICEABLE +UNNOTICED +UNNOURISHING +UNNUANCED +UNNUMBERED +UNOBJECTIONABLE +UNOBSERVABLE +UNOBSERVED +UNOBSTRUCTED +UNOBTAINABLE +UNOBTRUSIVE +UNOBTRUSIVELY +UNOBTRUSIVENESS +UNOCCUPIED +UNOFFERED +UNOFFICIAL +UNOFFICIALLY +UNOILED +UNOPEN +UNOPENABLE +UNOPENED +UNOPPOSED +UNORDERED +UNORDERLY +UNORGANIZED +UNORIGINAL +UNORNAMENTED +UNORNATE +UNORTHODOX +UNORTHODOXIES +UNORTHODOXLY +UNORTHODOXY +UNOSTENTATIOUS +UNOWNED +UNOXYGENATED +UNPACK +UNPACKED +UNPACKER +UNPACKERS +UNPACKING +UNPACKS +UNPADDED +UNPAGED +UNPAID +UNPAINFUL +UNPAINTED +UNPAIRED +UNPALATABILITY +UNPALATABLE +UNPARALLELED +UNPARASITIZED +UNPARDONABLE +UNPARLIAMENTARY +UNPARTED +UNPASSABLE +UNPASTEURIZED +UNPASTORAL +UNPATCHED +UNPATENTABLE +UNPATRIOTIC +UNPAVED +UNPAYING +UNPEDANTIC +UNPEELED +UNPEG +UNPEGGED +UNPEGGING +UNPEGS +UNPEN +UNPENNED +UNPENNING +UNPENS +UNPENT +UNPEOPLE +UNPEOPLED +UNPEOPLES +UNPEOPLING +UNPERCEIVED +UNPERCEPTIVE +UNPERFECT +UNPERFORMABLE +UNPERFORMED +UNPERSON +UNPERSONS +UNPERSUADED +UNPERSUASIVE +UNPERTURBED +UNPICK +UNPICKED +UNPICKING +UNPICKS +UNPICTURESQUE +UNPIERCED +UNPILE +UNPILED +UNPILES +UNPILING +UNPIN +UNPINNED +UNPINNING +UNPINS +UNPITIED +UNPITTED +UNPITYING +UNPLACED +UNPLAIT +UNPLAITED +UNPLAITING +UNPLAITS +UNPLANNED +UNPLANTED +UNPLAUSIBLE +UNPLAYABLE +UNPLAYED +UNPLEASANT +UNPLEASANTLY +UNPLEASANTNESS +UNPLEASED +UNPLEASING +UNPLEDGED +UNPLIABLE +UNPLIANT +UNPLOWED +UNPLUCKED +UNPLUG +UNPLUGGED +UNPLUGGING +UNPLUGS +UNPLUMBED +UNPOETIC +UNPOINTED +UNPOISED +UNPOLARIZED +UNPOLICED +UNPOLISHED +UNPOLITE +UNPOLITIC +UNPOLITICAL +UNPOLLED +UNPOLLUTED +UNPOPULAR +UNPOPULARITIES +UNPOPULARITY +UNPOSED +UNPOSTED +UNPOTTED +UNPRACTICAL +UNPRECEDENTED +UNPRECEDENTEDLY +UNPREDICTABLE +UNPREDICTABLES +UNPREDICTABLY +UNPREGNANT +UNPREJUDICED +UNPREMEDITATED +UNPREPARED +UNPREPAREDNESS +UNPREPOSSESSING +UNPRESSED +UNPRESSURED +UNPRESSURIZED +UNPRETENDING +UNPRETENTIOUS +UNPRETENTIOUSLY +UNPRETTY +UNPRICED +UNPRIMED +UNPRINCIPLED +UNPRINTABLE +UNPRINTED +UNPRIVILEGED +UNPRIZED +UNPROBED +UNPROBLEMATIC +UNPROCESSED +UNPRODUCED +UNPRODUCTIVE +UNPROFESSED +UNPROFESSIONAL +UNPROFESSIONALS +UNPROFITABLE +UNPROFITABLY +UNPROGRAMMABLE +UNPROGRAMMED +UNPROGRESSIVE +UNPROMISING +UNPROMISINGLY +UNPROMPTED +UNPRONOUNCEABLE +UNPRONOUNCED +UNPROPITIOUS +UNPROSPEROUS +UNPROTECTED +UNPROVABLE +UNPROVED +UNPROVEN +UNPROVOKED +UNPRUNED +UNPUBLICIZED +UNPUBLISHABLE +UNPUBLISHED +UNPUCKER +UNPUCKERED +UNPUCKERING +UNPUCKERS +UNPUNCTUAL +UNPUNCTUALITIES +UNPUNCTUALITY +UNPUNCTUATED +UNPUNISHED +UNPURE +UNPURELY +UNPURGED +UNPUZZLE +UNPUZZLED +UNPUZZLES +UNPUZZLING +UNQUAKING +UNQUALIFIED +UNQUALIFIEDLY +UNQUANTIFIABLE +UNQUELLED +UNQUENCHABLE +UNQUESTIONABLE +UNQUESTIONABLY +UNQUESTIONED +UNQUESTIONING +UNQUESTIONINGLY +UNQUIET +UNQUIETER +UNQUIETEST +UNQUIETLY +UNQUIETNESS +UNQUIETNESSES +UNQUIETS +UNQUOTE +UNQUOTED +UNQUOTES +UNQUOTING +UNRAISED +UNRAKED +UNRANKED +UNRATED +UNRAVAGED +UNRAVEL +UNRAVELED +UNRAVELING +UNRAVELLED +UNRAVELLING +UNRAVELS +UNRAVISHED +UNRAZED +UNREACHABLE +UNREACHED +UNREAD +UNREADABLE +UNREADIER +UNREADIEST +UNREADILY +UNREADINESS +UNREADINESSES +UNREADY +UNREAL +UNREALISTIC +UNREALISTICALLY +UNREALITIES +UNREALITY +UNREALIZABLE +UNREALIZED +UNREALLY +UNREASON +UNREASONABLE +UNREASONABLY +UNREASONED +UNREASONING +UNREASONINGLY +UNREASONS +UNREBUKED +UNRECEPTIVE +UNRECLAIMABLE +UNRECLAIMED +UNRECOGNIZABLE +UNRECOGNIZABLY +UNRECOGNIZED +UNRECONCILABLE +UNRECONCILED +UNRECONSTRUCTED +UNRECORDED +UNRECOVERABLE +UNRECOVERED +UNRECYCLABLE +UNREDEEMABLE +UNREDEEMED +UNREDRESSED +UNREEL +UNREELED +UNREELER +UNREELERS +UNREELING +UNREELS +UNREEVE +UNREEVED +UNREEVES +UNREEVING +UNREFINED +UNREFLECTIVE +UNREFORMED +UNREFRIGERATED +UNREGENERATE +UNREGENERATELY +UNREGISTERED +UNREGULATED +UNREHEARSED +UNREINFORCED +UNRELATED +UNRELAXED +UNRELENTING +UNRELENTINGLY +UNRELIABILITIES +UNRELIABILITY +UNRELIABLE +UNRELIEVED +UNRELIEVEDLY +UNRELUCTANT +UNREMARKABLE +UNREMARKABLY +UNREMARKED +UNREMEMBERED +UNREMINISCENT +UNREMITTING +UNREMITTINGLY +UNREMOVABLE +UNRENEWED +UNRENT +UNRENTED +UNREPAID +UNREPAIR +UNREPAIRS +UNREPEATABLE +UNREPENTANT +UNREPENTANTLY +UNREPORTED +UNREPRESENTED +UNREPRESSED +UNREQUITED +UNRESERVE +UNRESERVED +UNRESERVEDLY +UNRESERVEDNESS +UNRESERVES +UNRESISTANT +UNRESOLVABLE +UNRESOLVED +UNRESPECTABLE +UNRESPONSIVE +UNRESPONSIVELY +UNREST +UNRESTED +UNRESTFUL +UNRESTING +UNRESTORED +UNRESTRAINED +UNRESTRAINEDLY +UNRESTRAINT +UNRESTRAINTS +UNRESTRICTED +UNRESTS +UNRETIRE +UNRETIRED +UNRETIRES +UNRETIRING +UNRETOUCHED +UNRETURNABLE +UNREVEALED +UNREVIEWABLE +UNREVIEWED +UNREVISED +UNREVOKED +UNREVOLUTIONARY +UNREWARDED +UNREWARDING +UNRHETORICAL +UNRHYMED +UNRHYTHMIC +UNRIBBED +UNRIDABLE +UNRIDDLE +UNRIDDLED +UNRIDDLER +UNRIDDLERS +UNRIDDLES +UNRIDDLING +UNRIFLED +UNRIG +UNRIGGED +UNRIGGING +UNRIGHTEOUS +UNRIGHTEOUSLY +UNRIGHTEOUSNESS +UNRIGS +UNRIMED +UNRINSED +UNRIP +UNRIPE +UNRIPELY +UNRIPENED +UNRIPENESS +UNRIPENESSES +UNRIPER +UNRIPEST +UNRIPPED +UNRIPPING +UNRIPS +UNRISEN +UNRIVALED +UNRIVALLED +UNROASTED +UNROBE +UNROBED +UNROBES +UNROBING +UNROLL +UNROLLED +UNROLLING +UNROLLS +UNROMANTIC +UNROMANTICALLY +UNROMANTICIZED +UNROOF +UNROOFED +UNROOFING +UNROOFS +UNROOT +UNROOTED +UNROOTING +UNROOTS +UNROPED +UNROUGH +UNROUND +UNROUNDED +UNROUNDING +UNROUNDS +UNROVE +UNROVEN +UNRUFFLED +UNRULED +UNRULIER +UNRULIEST +UNRULINESS +UNRULINESSES +UNRULY +UNRUMPLED +UNRUSHED +UNRUSTED +UNS +UNSADDLE +UNSADDLED +UNSADDLES +UNSADDLING +UNSAFE +UNSAFELY +UNSAFETIES +UNSAFETY +UNSAID +UNSAINTLY +UNSALABLE +UNSALABLY +UNSALARIED +UNSALTED +UNSALVAGEABLE +UNSAMPLED +UNSANCTIONED +UNSANITARY +UNSATED +UNSATISFACTORY +UNSATISFIED +UNSATURATE +UNSATURATED +UNSATURATES +UNSAVED +UNSAVORY +UNSAVOURY +UNSAWED +UNSAWN +UNSAY +UNSAYABLE +UNSAYABLES +UNSAYING +UNSAYS +UNSCALABLE +UNSCALED +UNSCANNED +UNSCARRED +UNSCATHED +UNSCENTED +UNSCHEDULED +UNSCHOLARLY +UNSCHOOLED +UNSCIENTIFIC +UNSCRAMBLE +UNSCRAMBLED +UNSCRAMBLER +UNSCRAMBLERS +UNSCRAMBLES +UNSCRAMBLING +UNSCREENED +UNSCREW +UNSCREWED +UNSCREWING +UNSCREWS +UNSCRIPTED +UNSCRIPTURAL +UNSCRUPULOUS +UNSCRUPULOUSLY +UNSEAL +UNSEALED +UNSEALING +UNSEALS +UNSEAM +UNSEAMED +UNSEAMING +UNSEAMS +UNSEARCHABLE +UNSEARCHABLY +UNSEARED +UNSEASONABLE +UNSEASONABLY +UNSEASONED +UNSEAT +UNSEATED +UNSEATING +UNSEATS +UNSEAWORTHY +UNSECURED +UNSEEABLE +UNSEEDED +UNSEEING +UNSEEMLIER +UNSEEMLIEST +UNSEEMLINESS +UNSEEMLINESSES +UNSEEMLY +UNSEEN +UNSEGMENTED +UNSEGREGATED +UNSEIZED +UNSELECTED +UNSELECTIVE +UNSELECTIVELY +UNSELFISH +UNSELFISHLY +UNSELFISHNESS +UNSELFISHNESSES +UNSELL +UNSELLABLE +UNSELLING +UNSELLS +UNSENSATIONAL +UNSENSITIZED +UNSENT +UNSENTIMENTAL +UNSEPARATED +UNSERIOUS +UNSERIOUSNESS +UNSERIOUSNESSES +UNSERVED +UNSERVICEABLE +UNSET +UNSETS +UNSETTING +UNSETTLE +UNSETTLED +UNSETTLEDNESS +UNSETTLEDNESSES +UNSETTLEMENT +UNSETTLEMENTS +UNSETTLES +UNSETTLING +UNSETTLINGLY +UNSEW +UNSEWED +UNSEWING +UNSEWN +UNSEWS +UNSEX +UNSEXED +UNSEXES +UNSEXING +UNSEXUAL +UNSEXY +UNSHACKLE +UNSHACKLED +UNSHACKLES +UNSHACKLING +UNSHADED +UNSHAKABLE +UNSHAKABLY +UNSHAKEN +UNSHAMED +UNSHAPED +UNSHAPELY +UNSHAPEN +UNSHARED +UNSHARP +UNSHAVED +UNSHAVEN +UNSHEATHE +UNSHEATHED +UNSHEATHES +UNSHEATHING +UNSHED +UNSHELL +UNSHELLED +UNSHELLING +UNSHELLS +UNSHIFT +UNSHIFTED +UNSHIFTING +UNSHIFTS +UNSHIP +UNSHIPPED +UNSHIPPING +UNSHIPS +UNSHIRTED +UNSHOCKABLE +UNSHOD +UNSHORN +UNSHOWY +UNSHRUNK +UNSHUT +UNSICKER +UNSIFTED +UNSIGHT +UNSIGHTED +UNSIGHTING +UNSIGHTLIER +UNSIGHTLIEST +UNSIGHTLINESS +UNSIGHTLINESSES +UNSIGHTLY +UNSIGHTS +UNSIGNED +UNSILENT +UNSIMILAR +UNSINFUL +UNSINKABLE +UNSIZED +UNSKILFUL +UNSKILLED +UNSKILLFUL +UNSKILLFULLY +UNSKILLFULNESS +UNSLAKABLE +UNSLAKED +UNSLICED +UNSLICK +UNSLING +UNSLINGING +UNSLINGS +UNSLUNG +UNSMART +UNSMILING +UNSMOKED +UNSMOOTHED +UNSNAG +UNSNAGGED +UNSNAGGING +UNSNAGS +UNSNAP +UNSNAPPED +UNSNAPPING +UNSNAPS +UNSNARL +UNSNARLED +UNSNARLING +UNSNARLS +UNSOAKED +UNSOBER +UNSOBERLY +UNSOCIABILITIES +UNSOCIABILITY +UNSOCIABLE +UNSOCIABLENESS +UNSOCIABLY +UNSOCIAL +UNSOCIALLY +UNSOILED +UNSOLD +UNSOLDER +UNSOLDERED +UNSOLDERING +UNSOLDERS +UNSOLDIERLY +UNSOLICITED +UNSOLID +UNSOLVABLE +UNSOLVED +UNSONCY +UNSONSIE +UNSONSY +UNSOOTHED +UNSOPHISTICATED +UNSORTED +UNSOUGHT +UNSOUND +UNSOUNDED +UNSOUNDER +UNSOUNDEST +UNSOUNDLY +UNSOUNDNESS +UNSOUNDNESSES +UNSOURCED +UNSOURED +UNSOWED +UNSOWN +UNSPARING +UNSPARINGLY +UNSPEAK +UNSPEAKABLE +UNSPEAKABLY +UNSPEAKING +UNSPEAKS +UNSPECIALIZED +UNSPECIFIABLE +UNSPECIFIC +UNSPECIFIED +UNSPECTACULAR +UNSPENT +UNSPHERE +UNSPHERED +UNSPHERES +UNSPHERING +UNSPILLED +UNSPILT +UNSPIRITUAL +UNSPLIT +UNSPOILED +UNSPOILT +UNSPOKE +UNSPOKEN +UNSPOOL +UNSPOOLED +UNSPOOLING +UNSPOOLS +UNSPORTSMANLIKE +UNSPOTTED +UNSPRAYED +UNSPRUNG +UNSPUN +UNSQUARED +UNSTABLE +UNSTABLENESS +UNSTABLENESSES +UNSTABLER +UNSTABLEST +UNSTABLY +UNSTACK +UNSTACKED +UNSTACKING +UNSTACKS +UNSTAINED +UNSTALKED +UNSTAMPED +UNSTANDARDIZED +UNSTARRED +UNSTARTLING +UNSTATE +UNSTATED +UNSTATES +UNSTATING +UNSTAYED +UNSTEADIED +UNSTEADIER +UNSTEADIES +UNSTEADIEST +UNSTEADILY +UNSTEADINESS +UNSTEADINESSES +UNSTEADY +UNSTEADYING +UNSTEEL +UNSTEELED +UNSTEELING +UNSTEELS +UNSTEMMED +UNSTEP +UNSTEPPED +UNSTEPPING +UNSTEPS +UNSTERILE +UNSTERILIZED +UNSTICK +UNSTICKING +UNSTICKS +UNSTINTED +UNSTINTING +UNSTINTINGLY +UNSTITCH +UNSTITCHED +UNSTITCHES +UNSTITCHING +UNSTOCKED +UNSTONED +UNSTOP +UNSTOPPABLE +UNSTOPPABLY +UNSTOPPED +UNSTOPPER +UNSTOPPERED +UNSTOPPERING +UNSTOPPERS +UNSTOPPING +UNSTOPS +UNSTRAINED +UNSTRAP +UNSTRAPPED +UNSTRAPPING +UNSTRAPS +UNSTRATIFIED +UNSTRESS +UNSTRESSED +UNSTRESSES +UNSTRING +UNSTRINGING +UNSTRINGS +UNSTRIPED +UNSTRUCTURED +UNSTRUNG +UNSTUCK +UNSTUDIED +UNSTUFFED +UNSTUFFY +UNSTUNG +UNSTYLISH +UNSUBDUED +UNSUBSIDIZED +UNSUBSTANTIAL +UNSUBSTANTIALLY +UNSUBSTANTIATED +UNSUBTLE +UNSUBTLY +UNSUCCESS +UNSUCCESSES +UNSUCCESSFUL +UNSUCCESSFULLY +UNSUITABILITIES +UNSUITABILITY +UNSUITABLE +UNSUITABLY +UNSUITED +UNSULLIED +UNSUNG +UNSUNK +UNSUPERVISED +UNSUPPORTABLE +UNSUPPORTED +UNSURE +UNSURELY +UNSURPASSABLE +UNSURPASSED +UNSURPRISED +UNSURPRISING +UNSURPRISINGLY +UNSUSCEPTIBLE +UNSUSPECTED +UNSUSPECTING +UNSUSPICIOUS +UNSUSTAINABLE +UNSWATHE +UNSWATHED +UNSWATHES +UNSWATHING +UNSWAYED +UNSWEAR +UNSWEARING +UNSWEARS +UNSWEETENED +UNSWEPT +UNSWERVING +UNSWOLLEN +UNSWORE +UNSWORN +UNSYMMETRICAL +UNSYMMETRICALLY +UNSYMPATHETIC +UNSYNCHRONIZED +UNSYSTEMATIC +UNSYSTEMATIZED +UNTACK +UNTACKED +UNTACKING +UNTACKS +UNTACTFUL +UNTAGGED +UNTAINTED +UNTAKEN +UNTALENTED +UNTAMABLE +UNTAME +UNTAMED +UNTANGLE +UNTANGLED +UNTANGLES +UNTANGLING +UNTANNED +UNTAPPED +UNTARNISHED +UNTASTED +UNTAUGHT +UNTAXED +UNTEACH +UNTEACHABLE +UNTEACHES +UNTEACHING +UNTECHNICAL +UNTEMPERED +UNTENABILITIES +UNTENABILITY +UNTENABLE +UNTENABLY +UNTENANTED +UNTENDED +UNTENTED +UNTENURED +UNTESTABLE +UNTESTED +UNTETHER +UNTETHERED +UNTETHERING +UNTETHERS +UNTHANKED +UNTHAWED +UNTHEORETICAL +UNTHINK +UNTHINKABILITY +UNTHINKABLE +UNTHINKABLY +UNTHINKING +UNTHINKINGLY +UNTHINKS +UNTHOUGHT +UNTHREAD +UNTHREADED +UNTHREADING +UNTHREADS +UNTHREATENING +UNTHRIFTY +UNTHRONE +UNTHRONED +UNTHRONES +UNTHRONING +UNTIDIED +UNTIDIER +UNTIDIES +UNTIDIEST +UNTIDILY +UNTIDINESS +UNTIDINESSES +UNTIDY +UNTIDYING +UNTIE +UNTIED +UNTIEING +UNTIES +UNTIL +UNTILLABLE +UNTILLED +UNTILTED +UNTIMED +UNTIMELIER +UNTIMELIEST +UNTIMELINESS +UNTIMELINESSES +UNTIMELY +UNTIMEOUS +UNTINGED +UNTIPPED +UNTIRED +UNTIRING +UNTIRINGLY +UNTITLED +UNTO +UNTOGETHER +UNTOLD +UNTORN +UNTOUCHABILITY +UNTOUCHABLE +UNTOUCHABLES +UNTOUCHED +UNTOWARD +UNTOWARDLY +UNTOWARDNESS +UNTOWARDNESSES +UNTRACEABLE +UNTRACED +UNTRACK +UNTRACKED +UNTRACKING +UNTRACKS +UNTRADITIONAL +UNTRADITIONALLY +UNTRAINED +UNTRAMMELED +UNTRANSFORMED +UNTRANSLATABLE +UNTRANSLATED +UNTRAPPED +UNTRAVELED +UNTRAVERSED +UNTREAD +UNTREADED +UNTREADING +UNTREADS +UNTREATED +UNTRENDY +UNTRIED +UNTRIM +UNTRIMMED +UNTRIMMING +UNTRIMS +UNTROD +UNTRODDEN +UNTROUBLED +UNTRUE +UNTRUER +UNTRUEST +UNTRULY +UNTRUSS +UNTRUSSED +UNTRUSSES +UNTRUSSING +UNTRUSTING +UNTRUSTWORTHY +UNTRUSTY +UNTRUTH +UNTRUTHFUL +UNTRUTHFULLY +UNTRUTHFULNESS +UNTRUTHS +UNTUCK +UNTUCKED +UNTUCKING +UNTUCKS +UNTUFTED +UNTUNABLE +UNTUNE +UNTUNED +UNTUNEFUL +UNTUNES +UNTUNING +UNTURNED +UNTUTORED +UNTWILLED +UNTWINE +UNTWINED +UNTWINES +UNTWINING +UNTWIST +UNTWISTED +UNTWISTING +UNTWISTS +UNTYING +UNTYPICAL +UNTYPICALLY +UNUNBIUM +UNUNBIUMS +UNUNITED +UNUNUNIUM +UNUNUNIUMS +UNURGED +UNUSABLE +UNUSED +UNUSUAL +UNUSUALLY +UNUSUALNESS +UNUSUALNESSES +UNUTILIZED +UNUTTERABLE +UNUTTERABLY +UNUTTERED +UNVACCINATED +UNVALUED +UNVARIED +UNVARNISHED +UNVARYING +UNVEIL +UNVEILED +UNVEILING +UNVEILINGS +UNVEILS +UNVEINED +UNVENTILATED +UNVERBALIZED +UNVERIFIABLE +UNVERSED +UNVESTED +UNVEXED +UNVEXT +UNVIABLE +UNVISITED +UNVOCAL +UNVOICE +UNVOICED +UNVOICES +UNVOICING +UNWAKENED +UNWALLED +UNWANING +UNWANTED +UNWARIER +UNWARIEST +UNWARILY +UNWARINESS +UNWARINESSES +UNWARLIKE +UNWARMED +UNWARNED +UNWARPED +UNWARRANTABLE +UNWARRANTABLY +UNWARRANTED +UNWARY +UNWASHED +UNWASHEDNESS +UNWASHEDNESSES +UNWASHEDS +UNWASTED +UNWATCHABLE +UNWATCHED +UNWATERED +UNWAVERING +UNWAVERINGLY +UNWAXED +UNWEANED +UNWEARABLE +UNWEARIED +UNWEARIEDLY +UNWEARY +UNWEATHERED +UNWEAVE +UNWEAVES +UNWEAVING +UNWED +UNWEDDED +UNWEEDED +UNWEETING +UNWEETINGLY +UNWEIGHED +UNWEIGHT +UNWEIGHTED +UNWEIGHTING +UNWEIGHTS +UNWELCOME +UNWELDED +UNWELL +UNWEPT +UNWET +UNWETTED +UNWHIPPED +UNWHITE +UNWHOLESOME +UNWHOLESOMELY +UNWIELDIER +UNWIELDIEST +UNWIELDILY +UNWIELDINESS +UNWIELDINESSES +UNWIELDY +UNWIFELY +UNWILLED +UNWILLING +UNWILLINGLY +UNWILLINGNESS +UNWILLINGNESSES +UNWIND +UNWINDER +UNWINDERS +UNWINDING +UNWINDS +UNWINKING +UNWINNABLE +UNWISDOM +UNWISDOMS +UNWISE +UNWISELY +UNWISER +UNWISEST +UNWISH +UNWISHED +UNWISHES +UNWISHING +UNWIT +UNWITS +UNWITTED +UNWITTING +UNWITTINGLY +UNWOMANLY +UNWON +UNWONTED +UNWONTEDLY +UNWONTEDNESS +UNWONTEDNESSES +UNWOODED +UNWOOED +UNWORKABILITIES +UNWORKABILITY +UNWORKABLE +UNWORKED +UNWORLDLIER +UNWORLDLIEST +UNWORLDLINESS +UNWORLDLINESSES +UNWORLDLY +UNWORN +UNWORRIED +UNWORTHIER +UNWORTHIES +UNWORTHIEST +UNWORTHILY +UNWORTHINESS +UNWORTHINESSES +UNWORTHY +UNWOUND +UNWOUNDED +UNWOVE +UNWOVEN +UNWRAP +UNWRAPPED +UNWRAPPING +UNWRAPS +UNWREATHE +UNWREATHED +UNWREATHES +UNWREATHING +UNWRINKLE +UNWRINKLED +UNWRINKLES +UNWRINKLING +UNWRITTEN +UNWROUGHT +UNWRUNG +UNYEANED +UNYIELDING +UNYIELDINGLY +UNYOKE +UNYOKED +UNYOKES +UNYOKING +UNYOUNG +UNZEALOUS +UNZIP +UNZIPPED +UNZIPPING +UNZIPS +UNZONED +UP +UPAS +UPASES +UPBEAR +UPBEARER +UPBEARERS +UPBEARING +UPBEARS +UPBEAT +UPBEATS +UPBIND +UPBINDING +UPBINDS +UPBOIL +UPBOILED +UPBOILING +UPBOILS +UPBORE +UPBORNE +UPBOUND +UPBOW +UPBOWS +UPBRAID +UPBRAIDED +UPBRAIDER +UPBRAIDERS +UPBRAIDING +UPBRAIDS +UPBRINGING +UPBRINGINGS +UPBUILD +UPBUILDER +UPBUILDERS +UPBUILDING +UPBUILDS +UPBUILT +UPBY +UPBYE +UPCAST +UPCASTING +UPCASTS +UPCHUCK +UPCHUCKED +UPCHUCKING +UPCHUCKS +UPCLIMB +UPCLIMBED +UPCLIMBING +UPCLIMBS +UPCOAST +UPCOIL +UPCOILED +UPCOILING +UPCOILS +UPCOMING +UPCOUNTRIES +UPCOUNTRY +UPCOURT +UPCURL +UPCURLED +UPCURLING +UPCURLS +UPCURVE +UPCURVED +UPCURVES +UPCURVING +UPDART +UPDARTED +UPDARTING +UPDARTS +UPDATE +UPDATED +UPDATER +UPDATERS +UPDATES +UPDATING +UPDIVE +UPDIVED +UPDIVES +UPDIVING +UPDO +UPDOS +UPDOVE +UPDRAFT +UPDRAFTS +UPDRIED +UPDRIES +UPDRY +UPDRYING +UPEND +UPENDED +UPENDING +UPENDS +UPFIELD +UPFLING +UPFLINGING +UPFLINGS +UPFLOW +UPFLOWED +UPFLOWING +UPFLOWS +UPFLUNG +UPFOLD +UPFOLDED +UPFOLDING +UPFOLDS +UPFRONT +UPGATHER +UPGATHERED +UPGATHERING +UPGATHERS +UPGAZE +UPGAZED +UPGAZES +UPGAZING +UPGIRD +UPGIRDED +UPGIRDING +UPGIRDS +UPGIRT +UPGOING +UPGRADABILITIES +UPGRADABILITY +UPGRADABLE +UPGRADE +UPGRADEABILITY +UPGRADEABLE +UPGRADED +UPGRADES +UPGRADING +UPGREW +UPGROW +UPGROWING +UPGROWN +UPGROWS +UPGROWTH +UPGROWTHS +UPHEAP +UPHEAPED +UPHEAPING +UPHEAPS +UPHEAVAL +UPHEAVALS +UPHEAVE +UPHEAVED +UPHEAVER +UPHEAVERS +UPHEAVES +UPHEAVING +UPHELD +UPHILL +UPHILLS +UPHOARD +UPHOARDED +UPHOARDING +UPHOARDS +UPHOLD +UPHOLDER +UPHOLDERS +UPHOLDING +UPHOLDS +UPHOLSTER +UPHOLSTERED +UPHOLSTERER +UPHOLSTERERS +UPHOLSTERIES +UPHOLSTERING +UPHOLSTERS +UPHOLSTERY +UPHOVE +UPHROE +UPHROES +UPKEEP +UPKEEPS +UPLAND +UPLANDER +UPLANDERS +UPLANDS +UPLEAP +UPLEAPED +UPLEAPING +UPLEAPS +UPLEAPT +UPLIFT +UPLIFTED +UPLIFTER +UPLIFTERS +UPLIFTING +UPLIFTS +UPLIGHT +UPLIGHTED +UPLIGHTING +UPLIGHTS +UPLINK +UPLINKED +UPLINKING +UPLINKS +UPLIT +UPLOAD +UPLOADED +UPLOADING +UPLOADS +UPMANSHIP +UPMANSHIPS +UPMARKET +UPMOST +UPO +UPON +UPPED +UPPER +UPPERCASE +UPPERCASED +UPPERCASES +UPPERCASING +UPPERCLASSMAN +UPPERCLASSMEN +UPPERCUT +UPPERCUTS +UPPERCUTTING +UPPERMOST +UPPERPART +UPPERPARTS +UPPERS +UPPILE +UPPILED +UPPILES +UPPILING +UPPING +UPPINGS +UPPISH +UPPISHLY +UPPISHNESS +UPPISHNESSES +UPPITINESS +UPPITINESSES +UPPITY +UPPITYNESS +UPPITYNESSES +UPPROP +UPPROPPED +UPPROPPING +UPPROPS +UPRAISE +UPRAISED +UPRAISER +UPRAISERS +UPRAISES +UPRAISING +UPRATE +UPRATED +UPRATES +UPRATING +UPREACH +UPREACHED +UPREACHES +UPREACHING +UPREAR +UPREARED +UPREARING +UPREARS +UPRIGHT +UPRIGHTED +UPRIGHTING +UPRIGHTLY +UPRIGHTNESS +UPRIGHTNESSES +UPRIGHTS +UPRISE +UPRISEN +UPRISER +UPRISERS +UPRISES +UPRISING +UPRISINGS +UPRIVER +UPRIVERS +UPROAR +UPROARIOUS +UPROARIOUSLY +UPROARIOUSNESS +UPROARS +UPROOT +UPROOTAL +UPROOTALS +UPROOTED +UPROOTEDNESS +UPROOTEDNESSES +UPROOTER +UPROOTERS +UPROOTING +UPROOTS +UPROSE +UPROUSE +UPROUSED +UPROUSES +UPROUSING +UPRUSH +UPRUSHED +UPRUSHES +UPRUSHING +UPS +UPSADAISY +UPSCALE +UPSCALED +UPSCALES +UPSCALING +UPSEND +UPSENDING +UPSENDS +UPSENT +UPSET +UPSETS +UPSETTER +UPSETTERS +UPSETTING +UPSHIFT +UPSHIFTED +UPSHIFTING +UPSHIFTS +UPSHOOT +UPSHOOTING +UPSHOOTS +UPSHOT +UPSHOTS +UPSIDE +UPSIDES +UPSILON +UPSILONS +UPSIZE +UPSIZED +UPSIZES +UPSIZING +UPSLOPE +UPSOAR +UPSOARED +UPSOARING +UPSOARS +UPSPRANG +UPSPRING +UPSPRINGING +UPSPRINGS +UPSPRUNG +UPSTAGE +UPSTAGED +UPSTAGER +UPSTAGERS +UPSTAGES +UPSTAGING +UPSTAIR +UPSTAIRS +UPSTAND +UPSTANDING +UPSTANDINGNESS +UPSTANDS +UPSTARE +UPSTARED +UPSTARES +UPSTARING +UPSTART +UPSTARTED +UPSTARTING +UPSTARTS +UPSTATE +UPSTATER +UPSTATERS +UPSTATES +UPSTEP +UPSTEPPED +UPSTEPPING +UPSTEPS +UPSTIR +UPSTIRRED +UPSTIRRING +UPSTIRS +UPSTOOD +UPSTREAM +UPSTROKE +UPSTROKES +UPSURGE +UPSURGED +UPSURGES +UPSURGING +UPSWEEP +UPSWEEPING +UPSWEEPS +UPSWELL +UPSWELLED +UPSWELLING +UPSWELLS +UPSWEPT +UPSWING +UPSWINGING +UPSWINGS +UPSWOLLEN +UPSWUNG +UPTAKE +UPTAKES +UPTALK +UPTALKED +UPTALKING +UPTALKS +UPTEAR +UPTEARING +UPTEARS +UPTEMPO +UPTEMPOS +UPTHREW +UPTHROW +UPTHROWING +UPTHROWN +UPTHROWS +UPTHRUST +UPTHRUSTED +UPTHRUSTING +UPTHRUSTS +UPTICK +UPTICKS +UPTIGHT +UPTIGHTNESS +UPTIGHTNESSES +UPTILT +UPTILTED +UPTILTING +UPTILTS +UPTIME +UPTIMES +UPTORE +UPTORN +UPTOSS +UPTOSSED +UPTOSSES +UPTOSSING +UPTOWN +UPTOWNER +UPTOWNERS +UPTOWNS +UPTREND +UPTRENDS +UPTURN +UPTURNED +UPTURNING +UPTURNS +UPWAFT +UPWAFTED +UPWAFTING +UPWAFTS +UPWARD +UPWARDLY +UPWARDNESS +UPWARDNESSES +UPWARDS +UPWELL +UPWELLED +UPWELLING +UPWELLINGS +UPWELLS +UPWIND +UPWINDS +URACIL +URACILS +URAEI +URAEMIA +URAEMIAS +URAEMIC +URAEUS +URAEUSES +URALITE +URALITES +URALITIC +URANIA +URANIAS +URANIC +URANIDE +URANIDES +URANINITE +URANINITES +URANISM +URANISMS +URANITE +URANITES +URANITIC +URANIUM +URANIUMS +URANOGRAPHIES +URANOGRAPHY +URANOLOGIES +URANOLOGY +URANOUS +URANYL +URANYLIC +URANYLS +URARE +URARES +URARI +URARIS +URASE +URASES +URATE +URATES +URATIC +URB +URBAN +URBANE +URBANELY +URBANER +URBANEST +URBANISATION +URBANISATIONS +URBANISE +URBANISED +URBANISES +URBANISING +URBANISM +URBANISMS +URBANIST +URBANISTIC +URBANISTICALLY +URBANISTS +URBANITE +URBANITES +URBANITIES +URBANITY +URBANIZATION +URBANIZATIONS +URBANIZE +URBANIZED +URBANIZES +URBANIZING +URBANOLOGIES +URBANOLOGIST +URBANOLOGISTS +URBANOLOGY +URBIA +URBIAS +URBS +URCEOLATE +URCHIN +URCHINS +URD +URDS +UREA +UREAL +UREAS +UREASE +UREASES +UREDIA +UREDIAL +UREDINIA +UREDINIAL +UREDINIOSPORE +UREDINIOSPORES +UREDINIUM +UREDIOSPORE +UREDIOSPORES +UREDIUM +UREDO +UREDOS +UREDOSPORE +UREDOSPORES +UREIC +UREIDE +UREIDES +UREMIA +UREMIAS +UREMIC +UREOTELIC +UREOTELISM +UREOTELISMS +URETER +URETERAL +URETERIC +URETERS +URETHAN +URETHANE +URETHANES +URETHANS +URETHRA +URETHRAE +URETHRAL +URETHRAS +URETHRITIS +URETHRITISES +URETHROSCOPE +URETHROSCOPES +URETIC +URGE +URGED +URGENCIES +URGENCY +URGENT +URGENTLY +URGER +URGERS +URGES +URGING +URGINGLY +URIAL +URIALS +URIC +URICOSURIC +URICOTELIC +URICOTELISM +URICOTELISMS +URIDINE +URIDINES +URINAL +URINALS +URINALYSES +URINALYSIS +URINARIES +URINARY +URINATE +URINATED +URINATES +URINATING +URINATION +URINATIONS +URINATIVE +URINATOR +URINATORS +URINE +URINEMIA +URINEMIAS +URINEMIC +URINES +URINOGENITAL +URINOMETER +URINOMETERS +URINOSE +URINOUS +URN +URNLIKE +URNS +UROCHORD +UROCHORDATE +UROCHORDATES +UROCHORDS +UROCHROME +UROCHROMES +URODELE +URODELES +UROGENITAL +UROGENOUS +UROKINASE +UROKINASES +UROLITH +UROLITHIASES +UROLITHIASIS +UROLITHIC +UROLITHS +UROLOGIC +UROLOGICAL +UROLOGIES +UROLOGIST +UROLOGISTS +UROLOGY +UROPOD +UROPODAL +UROPODOUS +UROPODS +UROPYGIA +UROPYGIAL +UROPYGIUM +UROPYGIUMS +UROSCOPIC +UROSCOPIES +UROSCOPY +UROSTYLE +UROSTYLES +URP +URPED +URPING +URPS +URSA +URSAE +URSID +URSIDS +URSIFORM +URSINE +URTEXT +URTEXTS +URTICANT +URTICANTS +URTICARIA +URTICARIAL +URTICARIAS +URTICATE +URTICATED +URTICATES +URTICATING +URTICATION +URTICATIONS +URUS +URUSES +URUSHIOL +URUSHIOLS +US +USABILITIES +USABILITY +USABLE +USABLENESS +USABLENESSES +USABLY +USAGE +USAGES +USANCE +USANCES +USAUNCE +USAUNCES +USE +USEABLE +USEABLY +USED +USEFUL +USEFULLY +USEFULNESS +USEFULNESSES +USELESS +USELESSLY +USELESSNESS +USELESSNESSES +USER +USERNAME +USERNAMES +USERS +USES +USHER +USHERED +USHERETTE +USHERETTES +USHERING +USHERS +USING +USNEA +USNEAS +USQUABAE +USQUABAES +USQUE +USQUEBAE +USQUEBAES +USQUEBAUGH +USQUEBAUGHS +USQUES +USTULATE +USUAL +USUALLY +USUALNESS +USUALNESSES +USUALS +USUFRUCT +USUFRUCTS +USUFRUCTUARIES +USUFRUCTUARY +USURER +USURERS +USURIES +USURIOUS +USURIOUSLY +USURIOUSNESS +USURIOUSNESSES +USURP +USURPATION +USURPATIONS +USURPED +USURPER +USURPERS +USURPING +USURPS +USURY +UT +UTA +UTAS +UTE +UTENSIL +UTENSILS +UTERI +UTERINE +UTERUS +UTERUSES +UTES +UTILE +UTILIDOR +UTILIDORS +UTILISE +UTILISED +UTILISER +UTILISERS +UTILISES +UTILISING +UTILITARIAN +UTILITARIANISM +UTILITARIANISMS +UTILITARIANS +UTILITIES +UTILITY +UTILIZABLE +UTILIZATION +UTILIZATIONS +UTILIZE +UTILIZED +UTILIZER +UTILIZERS +UTILIZES +UTILIZING +UTMOST +UTMOSTS +UTOPIA +UTOPIAN +UTOPIANISM +UTOPIANISMS +UTOPIANS +UTOPIAS +UTOPISM +UTOPISMS +UTOPIST +UTOPISTIC +UTOPISTS +UTRICLE +UTRICLES +UTRICULAR +UTRICULI +UTRICULUS +UTS +UTTER +UTTERABLE +UTTERANCE +UTTERANCES +UTTERED +UTTERER +UTTERERS +UTTERING +UTTERLY +UTTERMOST +UTTERMOSTS +UTTERNESS +UTTERNESSES +UTTERS +UVAROVITE +UVAROVITES +UVEA +UVEAL +UVEAS +UVEITIC +UVEITIS +UVEITISES +UVEOUS +UVULA +UVULAE +UVULAR +UVULARLY +UVULARS +UVULAS +UVULITIS +UVULITISES +UXORIAL +UXORIALLY +UXORICIDE +UXORICIDES +UXORIOUS +UXORIOUSLY +UXORIOUSNESS +UXORIOUSNESSES +VAC +VACANCIES +VACANCY +VACANT +VACANTLY +VACANTNESS +VACANTNESSES +VACATABLE +VACATE +VACATED +VACATES +VACATING +VACATION +VACATIONED +VACATIONER +VACATIONERS +VACATIONING +VACATIONIST +VACATIONISTS +VACATIONLAND +VACATIONLANDS +VACATIONS +VACCINA +VACCINAL +VACCINAS +VACCINATE +VACCINATED +VACCINATES +VACCINATING +VACCINATION +VACCINATIONS +VACCINATOR +VACCINATORS +VACCINE +VACCINEE +VACCINEES +VACCINES +VACCINIA +VACCINIAL +VACCINIAS +VACILLANT +VACILLATE +VACILLATED +VACILLATES +VACILLATING +VACILLATINGLY +VACILLATION +VACILLATIONS +VACILLATOR +VACILLATORS +VACS +VACUA +VACUITIES +VACUITY +VACUOLAR +VACUOLATE +VACUOLATED +VACUOLATION +VACUOLATIONS +VACUOLE +VACUOLES +VACUOUS +VACUOUSLY +VACUOUSNESS +VACUOUSNESSES +VACUUM +VACUUMED +VACUUMING +VACUUMS +VADOSE +VAGABOND +VAGABONDAGE +VAGABONDAGES +VAGABONDED +VAGABONDING +VAGABONDISH +VAGABONDISM +VAGABONDISMS +VAGABONDS +VAGAL +VAGALLY +VAGARIES +VAGARIOUS +VAGARIOUSLY +VAGARY +VAGI +VAGILE +VAGILITIES +VAGILITY +VAGINA +VAGINAE +VAGINAL +VAGINALLY +VAGINAS +VAGINATE +VAGINATED +VAGINISMUS +VAGINISMUSES +VAGINITIS +VAGINITISES +VAGINOSES +VAGINOSIS +VAGOTOMIES +VAGOTOMY +VAGOTONIA +VAGOTONIAS +VAGOTONIC +VAGRANCIES +VAGRANCY +VAGRANT +VAGRANTLY +VAGRANTS +VAGROM +VAGUE +VAGUELY +VAGUENESS +VAGUENESSES +VAGUER +VAGUEST +VAGUS +VAHINE +VAHINES +VAIL +VAILED +VAILING +VAILS +VAIN +VAINER +VAINEST +VAINGLORIES +VAINGLORIOUS +VAINGLORIOUSLY +VAINGLORY +VAINLY +VAINNESS +VAINNESSES +VAIR +VAIRS +VAKEEL +VAKEELS +VAKIL +VAKILS +VALANCE +VALANCED +VALANCES +VALANCING +VALE +VALEDICTION +VALEDICTIONS +VALEDICTORIAN +VALEDICTORIANS +VALEDICTORIES +VALEDICTORY +VALENCE +VALENCES +VALENCIA +VALENCIAS +VALENCIES +VALENCY +VALENTINE +VALENTINES +VALERATE +VALERATES +VALERIAN +VALERIANS +VALERIC +VALES +VALET +VALETED +VALETING +VALETS +VALETUDINARIAN +VALETUDINARIANS +VALETUDINARIES +VALETUDINARY +VALGOID +VALGUS +VALGUSES +VALIANCE +VALIANCES +VALIANCIES +VALIANCY +VALIANT +VALIANTLY +VALIANTNESS +VALIANTNESSES +VALIANTS +VALID +VALIDATE +VALIDATED +VALIDATES +VALIDATING +VALIDATION +VALIDATIONS +VALIDITIES +VALIDITY +VALIDLY +VALIDNESS +VALIDNESSES +VALINE +VALINES +VALISE +VALISES +VALKYR +VALKYRIE +VALKYRIES +VALKYRS +VALLATE +VALLATION +VALLATIONS +VALLECULA +VALLECULAE +VALLECULAR +VALLEY +VALLEYED +VALLEYS +VALONIA +VALONIAS +VALOR +VALORISE +VALORISED +VALORISES +VALORISING +VALORIZATION +VALORIZATIONS +VALORIZE +VALORIZED +VALORIZES +VALORIZING +VALOROUS +VALOROUSLY +VALORS +VALOUR +VALOURS +VALPOLICELLA +VALPOLICELLAS +VALSE +VALSES +VALUABLE +VALUABLENESS +VALUABLENESSES +VALUABLES +VALUABLY +VALUATE +VALUATED +VALUATES +VALUATING +VALUATION +VALUATIONAL +VALUATIONALLY +VALUATIONS +VALUATOR +VALUATORS +VALUE +VALUED +VALUELESS +VALUELESSNESS +VALUELESSNESSES +VALUER +VALUERS +VALUES +VALUING +VALUTA +VALUTAS +VALVAL +VALVAR +VALVATE +VALVE +VALVED +VALVELESS +VALVELET +VALVELETS +VALVELIKE +VALVES +VALVING +VALVULA +VALVULAE +VALVULAR +VALVULE +VALVULES +VALVULITIS +VALVULITISES +VAMBRACE +VAMBRACED +VAMBRACES +VAMOOSE +VAMOOSED +VAMOOSES +VAMOOSING +VAMOSE +VAMOSED +VAMOSES +VAMOSING +VAMP +VAMPED +VAMPER +VAMPERS +VAMPIER +VAMPIEST +VAMPING +VAMPIRE +VAMPIRES +VAMPIRIC +VAMPIRISH +VAMPIRISM +VAMPIRISMS +VAMPISH +VAMPISHLY +VAMPS +VAMPY +VAN +VANADATE +VANADATES +VANADIATE +VANADIATES +VANADIC +VANADIUM +VANADIUMS +VANADOUS +VANASPATI +VANASPATIS +VANDA +VANDAL +VANDALIC +VANDALISE +VANDALISED +VANDALISES +VANDALISH +VANDALISING +VANDALISM +VANDALISMS +VANDALISTIC +VANDALIZATION +VANDALIZATIONS +VANDALIZE +VANDALIZED +VANDALIZES +VANDALIZING +VANDALS +VANDAS +VANDYKE +VANDYKED +VANDYKES +VANE +VANED +VANES +VANG +VANGS +VANGUARD +VANGUARDISM +VANGUARDISMS +VANGUARDIST +VANGUARDISTS +VANGUARDS +VANILLA +VANILLAS +VANILLIC +VANILLIN +VANILLINS +VANISH +VANISHED +VANISHER +VANISHERS +VANISHES +VANISHING +VANISHINGLY +VANITIED +VANITIES +VANITORIES +VANITORY +VANITY +VANLOAD +VANLOADS +VANMAN +VANMEN +VANNED +VANNER +VANNERS +VANNING +VANPOOL +VANPOOLING +VANPOOLINGS +VANPOOLS +VANQUISH +VANQUISHABLE +VANQUISHED +VANQUISHER +VANQUISHERS +VANQUISHES +VANQUISHING +VANS +VANTAGE +VANTAGES +VANWARD +VAPID +VAPIDITIES +VAPIDITY +VAPIDLY +VAPIDNESS +VAPIDNESSES +VAPOR +VAPORABLE +VAPORED +VAPORER +VAPORERS +VAPORETTI +VAPORETTO +VAPORETTOS +VAPORIFIC +VAPORING +VAPORINGS +VAPORISE +VAPORISED +VAPORISES +VAPORISH +VAPORISHNESS +VAPORISHNESSES +VAPORISING +VAPORIZABLE +VAPORIZATION +VAPORIZATIONS +VAPORIZE +VAPORIZED +VAPORIZER +VAPORIZERS +VAPORIZES +VAPORIZING +VAPORLESS +VAPORLIKE +VAPOROUS +VAPOROUSLY +VAPOROUSNESS +VAPOROUSNESSES +VAPORS +VAPORWARE +VAPORWARES +VAPORY +VAPOUR +VAPOURED +VAPOURER +VAPOURERS +VAPOURING +VAPOURS +VAPOURY +VAQUERO +VAQUEROS +VAR +VARA +VARACTOR +VARACTORS +VARAS +VARIA +VARIABILITIES +VARIABILITY +VARIABLE +VARIABLENESS +VARIABLENESSES +VARIABLES +VARIABLY +VARIANCE +VARIANCES +VARIANT +VARIANTS +VARIAS +VARIATE +VARIATED +VARIATES +VARIATING +VARIATION +VARIATIONAL +VARIATIONALLY +VARIATIONS +VARICELLA +VARICELLAS +VARICES +VARICOCELE +VARICOCELES +VARICOLORED +VARICOSE +VARICOSED +VARICOSES +VARICOSIS +VARICOSITIES +VARICOSITY +VARIED +VARIEDLY +VARIEGATE +VARIEGATED +VARIEGATES +VARIEGATING +VARIEGATION +VARIEGATIONS +VARIEGATOR +VARIEGATORS +VARIER +VARIERS +VARIES +VARIETAL +VARIETALS +VARIETIES +VARIETY +VARIFORM +VARIOLA +VARIOLAR +VARIOLAS +VARIOLATE +VARIOLATED +VARIOLATES +VARIOLATING +VARIOLE +VARIOLES +VARIOLITE +VARIOLITES +VARIOLOID +VARIOLOIDS +VARIOLOUS +VARIOMETER +VARIOMETERS +VARIORUM +VARIORUMS +VARIOUS +VARIOUSLY +VARIOUSNESS +VARIOUSNESSES +VARISIZED +VARISTOR +VARISTORS +VARIX +VARLET +VARLETRIES +VARLETRY +VARLETS +VARMENT +VARMENTS +VARMINT +VARMINTS +VARNA +VARNAS +VARNISH +VARNISHED +VARNISHER +VARNISHERS +VARNISHES +VARNISHING +VARNISHY +VAROOM +VAROOMED +VAROOMING +VAROOMS +VARS +VARSITIES +VARSITY +VARUS +VARUSES +VARVE +VARVED +VARVES +VARY +VARYING +VARYINGLY +VAS +VASA +VASAL +VASCULA +VASCULAR +VASCULARITIES +VASCULARITY +VASCULARIZATION +VASCULATURE +VASCULATURES +VASCULITIDES +VASCULITIS +VASCULUM +VASCULUMS +VASE +VASECTOMIES +VASECTOMIZE +VASECTOMIZED +VASECTOMIZES +VASECTOMIZING +VASECTOMY +VASELIKE +VASELINE +VASELINES +VASES +VASIFORM +VASOACTIVE +VASOACTIVITIES +VASOACTIVITY +VASOCONSTRICTOR +VASODILATATION +VASODILATATIONS +VASODILATION +VASODILATIONS +VASODILATOR +VASODILATORS +VASOMOTOR +VASOPRESSIN +VASOPRESSINS +VASOPRESSOR +VASOPRESSORS +VASOSPASM +VASOSPASMS +VASOSPASTIC +VASOTOCIN +VASOTOCINS +VASOTOMIES +VASOTOMY +VASOVAGAL +VASSAL +VASSALAGE +VASSALAGES +VASSALS +VAST +VASTER +VASTEST +VASTIER +VASTIEST +VASTITIES +VASTITUDE +VASTITUDES +VASTITY +VASTLY +VASTNESS +VASTNESSES +VASTS +VASTY +VAT +VATFUL +VATFULS +VATIC +VATICAL +VATICIDE +VATICIDES +VATICINAL +VATICINATE +VATICINATED +VATICINATES +VATICINATING +VATICINATION +VATICINATIONS +VATICINATOR +VATICINATORS +VATS +VATTED +VATTING +VATU +VATUS +VAU +VAUDEVILLE +VAUDEVILLES +VAUDEVILLIAN +VAUDEVILLIANS +VAULT +VAULTED +VAULTER +VAULTERS +VAULTIER +VAULTIEST +VAULTING +VAULTINGLY +VAULTINGS +VAULTS +VAULTY +VAUNT +VAUNTED +VAUNTER +VAUNTERS +VAUNTFUL +VAUNTIE +VAUNTING +VAUNTINGLY +VAUNTS +VAUNTY +VAUS +VAV +VAVASOR +VAVASORS +VAVASOUR +VAVASOURS +VAVASSOR +VAVASSORS +VAVS +VAW +VAWARD +VAWARDS +VAWNTIE +VAWS +VEAL +VEALED +VEALER +VEALERS +VEALIER +VEALIEST +VEALING +VEALS +VEALY +VECTOR +VECTORED +VECTORIAL +VECTORIALLY +VECTORING +VECTORS +VEDALIA +VEDALIAS +VEDETTE +VEDETTES +VEE +VEEJAY +VEEJAYS +VEENA +VEENAS +VEEP +VEEPEE +VEEPEES +VEEPS +VEER +VEERED +VEERIES +VEERING +VEERINGLY +VEERS +VEERY +VEES +VEG +VEGAN +VEGANISM +VEGANISMS +VEGANS +VEGES +VEGETABLE +VEGETABLES +VEGETABLY +VEGETAL +VEGETALLY +VEGETANT +VEGETARIAN +VEGETARIANISM +VEGETARIANISMS +VEGETARIANS +VEGETATE +VEGETATED +VEGETATES +VEGETATING +VEGETATION +VEGETATIONAL +VEGETATIONS +VEGETATIVE +VEGETATIVELY +VEGETATIVENESS +VEGETE +VEGETIST +VEGETISTS +VEGETIVE +VEGGED +VEGGIE +VEGGIES +VEGGING +VEGIE +VEGIES +VEHEMENCE +VEHEMENCES +VEHEMENCIES +VEHEMENCY +VEHEMENT +VEHEMENTLY +VEHICLE +VEHICLES +VEHICULAR +VEIL +VEILED +VEILEDLY +VEILER +VEILERS +VEILING +VEILINGS +VEILLIKE +VEILS +VEIN +VEINAL +VEINED +VEINER +VEINERS +VEINIER +VEINIEST +VEINING +VEININGS +VEINLESS +VEINLET +VEINLETS +VEINLIKE +VEINS +VEINSTONE +VEINSTONES +VEINULE +VEINULES +VEINULET +VEINULETS +VEINY +VELA +VELAMEN +VELAMINA +VELAR +VELARIA +VELARIUM +VELARIZATION +VELARIZATIONS +VELARIZE +VELARIZED +VELARIZES +VELARIZING +VELARS +VELATE +VELCRO +VELCROS +VELD +VELDS +VELDT +VELDTS +VELIGER +VELIGERS +VELITES +VELLEITIES +VELLEITY +VELLICATE +VELLICATED +VELLICATES +VELLICATING +VELLUM +VELLUMS +VELOCE +VELOCIMETER +VELOCIMETERS +VELOCIPEDE +VELOCIPEDES +VELOCIRAPTOR +VELOCIRAPTORS +VELOCITIES +VELOCITY +VELODROME +VELODROMES +VELOUR +VELOURS +VELOUTE +VELOUTES +VELUM +VELURE +VELURED +VELURES +VELURING +VELVERET +VELVERETS +VELVET +VELVETED +VELVETEEN +VELVETEENS +VELVETIER +VELVETIEST +VELVETLIKE +VELVETS +VELVETY +VENA +VENAE +VENAL +VENALITIES +VENALITY +VENALLY +VENATIC +VENATICAL +VENATION +VENATIONS +VEND +VENDABLE +VENDABLES +VENDACE +VENDACES +VENDED +VENDEE +VENDEES +VENDER +VENDERS +VENDETTA +VENDETTAS +VENDEUSE +VENDEUSES +VENDIBILITIES +VENDIBILITY +VENDIBLE +VENDIBLES +VENDIBLY +VENDING +VENDITION +VENDITIONS +VENDOR +VENDORS +VENDS +VENDUE +VENDUES +VENEER +VENEERED +VENEERER +VENEERERS +VENEERING +VENEERINGS +VENEERS +VENENATE +VENENATED +VENENATES +VENENATING +VENENE +VENENES +VENENOSE +VENERABILITIES +VENERABILITY +VENERABLE +VENERABLENESS +VENERABLENESSES +VENERABLES +VENERABLY +VENERATE +VENERATED +VENERATES +VENERATING +VENERATION +VENERATIONS +VENERATOR +VENERATORS +VENEREAL +VENERIES +VENERY +VENESECTION +VENESECTIONS +VENETIAN +VENETIANS +VENGE +VENGEANCE +VENGEANCES +VENGED +VENGEFUL +VENGEFULLY +VENGEFULNESS +VENGEFULNESSES +VENGES +VENGING +VENIAL +VENIALITIES +VENIALITY +VENIALLY +VENIALNESS +VENIALNESSES +VENIN +VENINE +VENINES +VENINS +VENIPUNCTURE +VENIPUNCTURES +VENIRE +VENIREMAN +VENIREMEN +VENIRES +VENISON +VENISONS +VENOGRAM +VENOGRAMS +VENOGRAPHIES +VENOGRAPHY +VENOLOGIES +VENOLOGY +VENOM +VENOMED +VENOMER +VENOMERS +VENOMING +VENOMOUS +VENOMOUSLY +VENOMOUSNESS +VENOMOUSNESSES +VENOMS +VENOSE +VENOSITIES +VENOSITY +VENOUS +VENOUSLY +VENT +VENTAGE +VENTAGES +VENTAIL +VENTAILS +VENTED +VENTER +VENTERS +VENTIFACT +VENTIFACTS +VENTILATE +VENTILATED +VENTILATES +VENTILATING +VENTILATION +VENTILATIONS +VENTILATOR +VENTILATORS +VENTILATORY +VENTING +VENTLESS +VENTRAL +VENTRALLY +VENTRALS +VENTRICLE +VENTRICLES +VENTRICOSE +VENTRICULAR +VENTRICULI +VENTRICULUS +VENTRILOQUIAL +VENTRILOQUIALLY +VENTRILOQUIES +VENTRILOQUISM +VENTRILOQUISMS +VENTRILOQUIST +VENTRILOQUISTIC +VENTRILOQUISTS +VENTRILOQUIZE +VENTRILOQUIZED +VENTRILOQUIZES +VENTRILOQUIZING +VENTRILOQUY +VENTROLATERAL +VENTROMEDIAL +VENTS +VENTURE +VENTURED +VENTURER +VENTURERS +VENTURES +VENTURESOME +VENTURESOMELY +VENTURESOMENESS +VENTURI +VENTURING +VENTURIS +VENTUROUS +VENTUROUSLY +VENTUROUSNESS +VENTUROUSNESSES +VENUE +VENUES +VENULAR +VENULE +VENULES +VENULOSE +VENULOUS +VENUS +VENUSES +VERA +VERACIOUS +VERACIOUSLY +VERACIOUSNESS +VERACIOUSNESSES +VERACITIES +VERACITY +VERANDA +VERANDAED +VERANDAH +VERANDAHED +VERANDAHS +VERANDAS +VERAPAMIL +VERAPAMILS +VERATRIA +VERATRIAS +VERATRIDINE +VERATRIDINES +VERATRIN +VERATRINE +VERATRINES +VERATRINS +VERATRUM +VERATRUMS +VERB +VERBAL +VERBALISM +VERBALISMS +VERBALIST +VERBALISTIC +VERBALISTS +VERBALIZATION +VERBALIZATIONS +VERBALIZE +VERBALIZED +VERBALIZER +VERBALIZERS +VERBALIZES +VERBALIZING +VERBALLY +VERBALS +VERBATIM +VERBENA +VERBENAS +VERBIAGE +VERBIAGES +VERBICIDE +VERBICIDES +VERBID +VERBIDS +VERBIFIED +VERBIFIES +VERBIFY +VERBIFYING +VERBIGERATION +VERBIGERATIONS +VERBILE +VERBILES +VERBLESS +VERBOSE +VERBOSELY +VERBOSENESS +VERBOSENESSES +VERBOSITIES +VERBOSITY +VERBOTEN +VERBS +VERDANCIES +VERDANCY +VERDANT +VERDANTLY +VERDERER +VERDERERS +VERDEROR +VERDERORS +VERDICT +VERDICTS +VERDIGRIS +VERDIGRISES +VERDIN +VERDINS +VERDITER +VERDITERS +VERDURE +VERDURED +VERDURES +VERDUROUS +VERECUND +VERGE +VERGED +VERGENCE +VERGENCES +VERGER +VERGERS +VERGES +VERGING +VERGLAS +VERGLASES +VERIDIC +VERIDICAL +VERIDICALITIES +VERIDICALITY +VERIDICALLY +VERIER +VERIEST +VERIFIABILITIES +VERIFIABILITY +VERIFIABLE +VERIFIABLENESS +VERIFICATION +VERIFICATIONS +VERIFIED +VERIFIER +VERIFIERS +VERIFIES +VERIFY +VERIFYING +VERILY +VERISIMILAR +VERISIMILARLY +VERISIMILITUDE +VERISIMILITUDES +VERISM +VERISMO +VERISMOS +VERISMS +VERIST +VERISTIC +VERISTS +VERITABLE +VERITABLENESS +VERITABLENESSES +VERITABLY +VERITAS +VERITATES +VERITE +VERITES +VERITIES +VERITY +VERJUICE +VERJUICES +VERMEIL +VERMEILS +VERMES +VERMIAN +VERMICELLI +VERMICELLIS +VERMICIDE +VERMICIDES +VERMICULAR +VERMICULATE +VERMICULATED +VERMICULATION +VERMICULATIONS +VERMICULITE +VERMICULITES +VERMIFORM +VERMIFUGE +VERMIFUGES +VERMILION +VERMILIONED +VERMILIONING +VERMILIONS +VERMILLION +VERMILLIONS +VERMIN +VERMINOUS +VERMIS +VERMOULU +VERMOUTH +VERMOUTHS +VERMUTH +VERMUTHS +VERNACLE +VERNACLES +VERNACULAR +VERNACULARISM +VERNACULARISMS +VERNACULARLY +VERNACULARS +VERNAL +VERNALIZATION +VERNALIZATIONS +VERNALIZE +VERNALIZED +VERNALIZES +VERNALIZING +VERNALLY +VERNATION +VERNATIONS +VERNICLE +VERNICLES +VERNIER +VERNIERS +VERNISSAGE +VERNISSAGES +VERNIX +VERNIXES +VERONICA +VERONICAS +VERRUCA +VERRUCAE +VERRUCAS +VERRUCOSE +VERRUCOUS +VERSAL +VERSANT +VERSANTS +VERSATILE +VERSATILELY +VERSATILENESS +VERSATILENESSES +VERSATILITIES +VERSATILITY +VERSE +VERSED +VERSEMAN +VERSEMEN +VERSER +VERSERS +VERSES +VERSET +VERSETS +VERSICLE +VERSICLES +VERSICULAR +VERSIFICATION +VERSIFICATIONS +VERSIFIED +VERSIFIER +VERSIFIERS +VERSIFIES +VERSIFY +VERSIFYING +VERSINE +VERSINES +VERSING +VERSION +VERSIONAL +VERSIONS +VERSO +VERSOS +VERST +VERSTE +VERSTES +VERSTS +VERSUS +VERT +VERTEBRA +VERTEBRAE +VERTEBRAL +VERTEBRAS +VERTEBRATE +VERTEBRATES +VERTEX +VERTEXES +VERTICAL +VERTICALITIES +VERTICALITY +VERTICALLY +VERTICALNESS +VERTICALNESSES +VERTICALS +VERTICES +VERTICIL +VERTICILLATE +VERTICILS +VERTIGINES +VERTIGINOUS +VERTIGINOUSLY +VERTIGO +VERTIGOES +VERTIGOS +VERTS +VERTU +VERTUS +VERVAIN +VERVAINS +VERVE +VERVES +VERVET +VERVETS +VERY +VESICA +VESICAE +VESICAL +VESICANT +VESICANTS +VESICATE +VESICATED +VESICATES +VESICATING +VESICLE +VESICLES +VESICULA +VESICULAE +VESICULAR +VESICULARITIES +VESICULARITY +VESICULATE +VESICULATED +VESICULATES +VESICULATING +VESICULATION +VESICULATIONS +VESPER +VESPERAL +VESPERALS +VESPERS +VESPERTILIAN +VESPERTINE +VESPIARIES +VESPIARY +VESPID +VESPIDS +VESPINE +VESSEL +VESSELED +VESSELS +VEST +VESTA +VESTAL +VESTALLY +VESTALS +VESTAS +VESTED +VESTEE +VESTEES +VESTIARIES +VESTIARY +VESTIBULAR +VESTIBULE +VESTIBULED +VESTIBULES +VESTIBULING +VESTIGE +VESTIGES +VESTIGIA +VESTIGIAL +VESTIGIALLY +VESTIGIUM +VESTING +VESTINGS +VESTLESS +VESTLIKE +VESTMENT +VESTMENTAL +VESTMENTS +VESTRAL +VESTRIES +VESTRY +VESTRYMAN +VESTRYMEN +VESTS +VESTURAL +VESTURE +VESTURED +VESTURES +VESTURING +VESUVIAN +VESUVIANITE +VESUVIANITES +VESUVIANS +VET +VETCH +VETCHES +VETCHLING +VETCHLINGS +VETERAN +VETERANS +VETERINARIAN +VETERINARIANS +VETERINARIES +VETERINARY +VETIVER +VETIVERS +VETIVERT +VETIVERTS +VETO +VETOED +VETOER +VETOERS +VETOES +VETOING +VETS +VETTED +VETTER +VETTERS +VETTING +VEX +VEXATION +VEXATIONS +VEXATIOUS +VEXATIOUSLY +VEXATIOUSNESS +VEXATIOUSNESSES +VEXED +VEXEDLY +VEXEDNESS +VEXEDNESSES +VEXER +VEXERS +VEXES +VEXIL +VEXILLA +VEXILLAR +VEXILLARIES +VEXILLARY +VEXILLATE +VEXILLOLOGIC +VEXILLOLOGICAL +VEXILLOLOGIES +VEXILLOLOGIST +VEXILLOLOGISTS +VEXILLOLOGY +VEXILLUM +VEXILS +VEXING +VEXINGLY +VEXT +VIA +VIABILITIES +VIABILITY +VIABLE +VIABLY +VIADUCT +VIADUCTS +VIAL +VIALED +VIALING +VIALLED +VIALLING +VIALS +VIAND +VIANDS +VIATIC +VIATICA +VIATICAL +VIATICALS +VIATICUM +VIATICUMS +VIATOR +VIATORES +VIATORS +VIBE +VIBES +VIBIST +VIBISTS +VIBRACULA +VIBRACULUM +VIBRAHARP +VIBRAHARPIST +VIBRAHARPISTS +VIBRAHARPS +VIBRANCE +VIBRANCES +VIBRANCIES +VIBRANCY +VIBRANT +VIBRANTLY +VIBRANTS +VIBRAPHONE +VIBRAPHONES +VIBRAPHONIST +VIBRAPHONISTS +VIBRATE +VIBRATED +VIBRATES +VIBRATILE +VIBRATING +VIBRATION +VIBRATIONAL +VIBRATIONLESS +VIBRATIONS +VIBRATIVE +VIBRATO +VIBRATOLESS +VIBRATOR +VIBRATORS +VIBRATORY +VIBRATOS +VIBRIO +VIBRIOID +VIBRION +VIBRIONIC +VIBRIONS +VIBRIOS +VIBRIOSES +VIBRIOSIS +VIBRISSA +VIBRISSAE +VIBRISSAL +VIBRONIC +VIBURNUM +VIBURNUMS +VICAR +VICARAGE +VICARAGES +VICARATE +VICARATES +VICARIAL +VICARIANCE +VICARIANCES +VICARIANT +VICARIANTS +VICARIATE +VICARIATES +VICARIOUS +VICARIOUSLY +VICARIOUSNESS +VICARIOUSNESSES +VICARLY +VICARS +VICARSHIP +VICARSHIPS +VICE +VICED +VICEGERAL +VICEGERENCIES +VICEGERENCY +VICEGERENT +VICEGERENTS +VICELESS +VICENARY +VICENNIAL +VICEREGAL +VICEREGALLY +VICEREINE +VICEREINES +VICEROY +VICEROYALTIES +VICEROYALTY +VICEROYS +VICEROYSHIP +VICEROYSHIPS +VICES +VICHIES +VICHY +VICHYSSOISE +VICHYSSOISES +VICINAGE +VICINAGES +VICINAL +VICING +VICINITIES +VICINITY +VICIOUS +VICIOUSLY +VICIOUSNESS +VICIOUSNESSES +VICISSITUDE +VICISSITUDES +VICISSITUDINOUS +VICOMTE +VICOMTES +VICTIM +VICTIMHOOD +VICTIMHOODS +VICTIMISE +VICTIMISED +VICTIMISES +VICTIMISING +VICTIMIZATION +VICTIMIZATIONS +VICTIMIZE +VICTIMIZED +VICTIMIZER +VICTIMIZERS +VICTIMIZES +VICTIMIZING +VICTIMLESS +VICTIMOLOGIES +VICTIMOLOGIST +VICTIMOLOGISTS +VICTIMOLOGY +VICTIMS +VICTOR +VICTORIA +VICTORIAS +VICTORIES +VICTORIOUS +VICTORIOUSLY +VICTORIOUSNESS +VICTORS +VICTORY +VICTRESS +VICTRESSES +VICTUAL +VICTUALED +VICTUALER +VICTUALERS +VICTUALING +VICTUALLED +VICTUALLER +VICTUALLERS +VICTUALLING +VICTUALS +VICUGNA +VICUGNAS +VICUNA +VICUNAS +VID +VIDE +VIDELICET +VIDEO +VIDEOCASSETTE +VIDEOCASSETTES +VIDEOCONFERENCE +VIDEODISC +VIDEODISCS +VIDEODISK +VIDEODISKS +VIDEOGRAPHER +VIDEOGRAPHERS +VIDEOGRAPHIES +VIDEOGRAPHY +VIDEOLAND +VIDEOLANDS +VIDEOPHILE +VIDEOPHILES +VIDEOPHONE +VIDEOPHONES +VIDEOS +VIDEOTAPE +VIDEOTAPED +VIDEOTAPES +VIDEOTAPING +VIDEOTEX +VIDEOTEXES +VIDEOTEXT +VIDEOTEXTS +VIDETTE +VIDETTES +VIDICON +VIDICONS +VIDS +VIDUITIES +VIDUITY +VIE +VIED +VIER +VIERS +VIES +VIEW +VIEWABLE +VIEWDATA +VIEWED +VIEWER +VIEWERS +VIEWERSHIP +VIEWERSHIPS +VIEWFINDER +VIEWFINDERS +VIEWIER +VIEWIEST +VIEWING +VIEWINGS +VIEWLESS +VIEWLESSLY +VIEWPOINT +VIEWPOINTS +VIEWS +VIEWY +VIG +VIGA +VIGAS +VIGESIMAL +VIGIA +VIGIAS +VIGIL +VIGILANCE +VIGILANCES +VIGILANT +VIGILANTE +VIGILANTES +VIGILANTISM +VIGILANTISMS +VIGILANTLY +VIGILS +VIGINTILLION +VIGINTILLIONS +VIGNERON +VIGNERONS +VIGNETTE +VIGNETTED +VIGNETTER +VIGNETTERS +VIGNETTES +VIGNETTING +VIGNETTIST +VIGNETTISTS +VIGOR +VIGORISH +VIGORISHES +VIGOROSO +VIGOROUS +VIGOROUSLY +VIGOROUSNESS +VIGOROUSNESSES +VIGORS +VIGOUR +VIGOURS +VIGS +VIKING +VIKINGS +VILAYET +VILAYETS +VILE +VILELY +VILENESS +VILENESSES +VILER +VILEST +VILIFICATION +VILIFICATIONS +VILIFIED +VILIFIER +VILIFIERS +VILIFIES +VILIFY +VILIFYING +VILIPEND +VILIPENDED +VILIPENDING +VILIPENDS +VILL +VILLA +VILLADOM +VILLADOMS +VILLAE +VILLAGE +VILLAGER +VILLAGERIES +VILLAGERS +VILLAGERY +VILLAGES +VILLAIN +VILLAINESS +VILLAINESSES +VILLAINIES +VILLAINOUS +VILLAINOUSLY +VILLAINOUSNESS +VILLAINS +VILLAINY +VILLANELLA +VILLANELLE +VILLANELLES +VILLAS +VILLATIC +VILLEIN +VILLEINS +VILLENAGE +VILLENAGES +VILLI +VILLIFORM +VILLOSE +VILLOSITIES +VILLOSITY +VILLOUS +VILLOUSLY +VILLS +VILLUS +VIM +VIMEN +VIMINA +VIMINAL +VIMINEOUS +VIMS +VINA +VINACEOUS +VINAIGRETTE +VINAIGRETTES +VINAL +VINALS +VINAS +VINASSE +VINASSES +VINBLASTINE +VINBLASTINES +VINCA +VINCAS +VINCIBLE +VINCIBLY +VINCRISTINE +VINCRISTINES +VINCULA +VINCULUM +VINCULUMS +VINDALOO +VINDALOOS +VINDICABLE +VINDICATE +VINDICATED +VINDICATES +VINDICATING +VINDICATION +VINDICATIONS +VINDICATIVE +VINDICATOR +VINDICATORS +VINDICATORY +VINDICTIVE +VINDICTIVELY +VINDICTIVENESS +VINE +VINEAL +VINED +VINEDRESSER +VINEDRESSERS +VINEGAR +VINEGARED +VINEGARISH +VINEGARS +VINEGARY +VINERIES +VINERY +VINES +VINEYARD +VINEYARDIST +VINEYARDISTS +VINEYARDS +VINIC +VINICULTURE +VINICULTURES +VINIER +VINIEST +VINIFERA +VINIFERAS +VINIFICATION +VINIFICATIONS +VINIFIED +VINIFIES +VINIFY +VINIFYING +VINING +VINO +VINOS +VINOSITIES +VINOSITY +VINOUS +VINOUSLY +VINTAGE +VINTAGER +VINTAGERS +VINTAGES +VINTNER +VINTNERS +VINY +VINYL +VINYLIC +VINYLIDENE +VINYLIDENES +VINYLS +VIOL +VIOLA +VIOLABILITIES +VIOLABILITY +VIOLABLE +VIOLABLENESS +VIOLABLENESSES +VIOLABLY +VIOLACEOUS +VIOLAS +VIOLATE +VIOLATED +VIOLATER +VIOLATERS +VIOLATES +VIOLATING +VIOLATION +VIOLATIONS +VIOLATIVE +VIOLATOR +VIOLATORS +VIOLENCE +VIOLENCES +VIOLENT +VIOLENTLY +VIOLET +VIOLETS +VIOLIN +VIOLINIST +VIOLINISTIC +VIOLINISTS +VIOLINS +VIOLIST +VIOLISTS +VIOLONCELLI +VIOLONCELLIST +VIOLONCELLISTS +VIOLONCELLO +VIOLONCELLOS +VIOLONE +VIOLONES +VIOLS +VIOMYCIN +VIOMYCINS +VIOSTEROL +VIOSTEROLS +VIPER +VIPERFISH +VIPERFISHES +VIPERINE +VIPERISH +VIPEROUS +VIPEROUSLY +VIPERS +VIRAGINOUS +VIRAGO +VIRAGOES +VIRAGOS +VIRAL +VIRALLY +VIRELAI +VIRELAIS +VIRELAY +VIRELAYS +VIREMIA +VIREMIAS +VIREMIC +VIREO +VIREONINE +VIREONINES +VIREOS +VIRES +VIRESCENCE +VIRESCENCES +VIRESCENT +VIRGA +VIRGAS +VIRGATE +VIRGATES +VIRGIN +VIRGINAL +VIRGINALIST +VIRGINALISTS +VIRGINALLY +VIRGINALS +VIRGINITIES +VIRGINITY +VIRGINS +VIRGULATE +VIRGULE +VIRGULES +VIRICIDAL +VIRICIDE +VIRICIDES +VIRID +VIRIDESCENT +VIRIDIAN +VIRIDIANS +VIRIDITIES +VIRIDITY +VIRILE +VIRILELY +VIRILISM +VIRILISMS +VIRILITIES +VIRILITY +VIRILIZE +VIRILIZED +VIRILIZES +VIRILIZING +VIRILOCAL +VIRION +VIRIONS +VIRL +VIRLS +VIROID +VIROIDS +VIROLOGIC +VIROLOGICAL +VIROLOGICALLY +VIROLOGIES +VIROLOGIST +VIROLOGISTS +VIROLOGY +VIROSES +VIROSIS +VIRTU +VIRTUAL +VIRTUALITIES +VIRTUALITY +VIRTUALLY +VIRTUE +VIRTUELESS +VIRTUES +VIRTUOSA +VIRTUOSAS +VIRTUOSE +VIRTUOSI +VIRTUOSIC +VIRTUOSITIES +VIRTUOSITY +VIRTUOSO +VIRTUOSOS +VIRTUOUS +VIRTUOUSLY +VIRTUOUSNESS +VIRTUOUSNESSES +VIRTUS +VIRUCIDAL +VIRUCIDE +VIRUCIDES +VIRULENCE +VIRULENCES +VIRULENCIES +VIRULENCY +VIRULENT +VIRULENTLY +VIRULIFEROUS +VIRUS +VIRUSES +VIRUSLIKE +VIRUSOID +VIRUSOIDS +VIS +VISA +VISAED +VISAGE +VISAGED +VISAGES +VISAING +VISARD +VISARDS +VISAS +VISCACHA +VISCACHAS +VISCERA +VISCERAL +VISCERALLY +VISCID +VISCIDITIES +VISCIDITY +VISCIDLY +VISCOELASTIC +VISCOELASTICITY +VISCOID +VISCOIDAL +VISCOMETER +VISCOMETERS +VISCOMETRIC +VISCOMETRIES +VISCOMETRY +VISCOSE +VISCOSES +VISCOSIMETER +VISCOSIMETERS +VISCOSIMETRIC +VISCOSITIES +VISCOSITY +VISCOUNT +VISCOUNTCIES +VISCOUNTCY +VISCOUNTESS +VISCOUNTESSES +VISCOUNTIES +VISCOUNTS +VISCOUNTY +VISCOUS +VISCOUSLY +VISCOUSNESS +VISCOUSNESSES +VISCUS +VISE +VISED +VISEED +VISEING +VISELIKE +VISES +VISIBILITIES +VISIBILITY +VISIBLE +VISIBLENESS +VISIBLENESSES +VISIBLY +VISING +VISION +VISIONAL +VISIONALLY +VISIONARIES +VISIONARINESS +VISIONARINESSES +VISIONARY +VISIONED +VISIONING +VISIONLESS +VISIONS +VISIT +VISITABLE +VISITANT +VISITANTS +VISITATION +VISITATIONS +VISITATORIAL +VISITED +VISITER +VISITERS +VISITING +VISITOR +VISITORS +VISITS +VISIVE +VISOR +VISORED +VISORING +VISORLESS +VISORS +VISTA +VISTAED +VISTALESS +VISTAS +VISUAL +VISUALISE +VISUALISED +VISUALISES +VISUALISING +VISUALIST +VISUALISTS +VISUALITIES +VISUALITY +VISUALIZATION +VISUALIZATIONS +VISUALIZE +VISUALIZED +VISUALIZER +VISUALIZERS +VISUALIZES +VISUALIZING +VISUALLY +VISUALS +VITA +VITAE +VITAL +VITALISE +VITALISED +VITALISES +VITALISING +VITALISM +VITALISMS +VITALIST +VITALISTIC +VITALISTS +VITALITIES +VITALITY +VITALIZATION +VITALIZATIONS +VITALIZE +VITALIZED +VITALIZER +VITALIZERS +VITALIZES +VITALIZING +VITALLY +VITALNESS +VITALNESSES +VITALS +VITAMER +VITAMERS +VITAMIN +VITAMINE +VITAMINES +VITAMINIC +VITAMINS +VITELLIN +VITELLINE +VITELLINES +VITELLINS +VITELLOGENESES +VITELLOGENESIS +VITELLUS +VITELLUSES +VITESSE +VITESSES +VITIABLE +VITIATE +VITIATED +VITIATES +VITIATING +VITIATION +VITIATIONS +VITIATOR +VITIATORS +VITICULTURAL +VITICULTURALLY +VITICULTURE +VITICULTURES +VITICULTURIST +VITICULTURISTS +VITILIGO +VITILIGOS +VITRAIN +VITRAINS +VITRECTOMIES +VITRECTOMY +VITREOUS +VITREOUSES +VITRIC +VITRICS +VITRIFIABLE +VITRIFICATION +VITRIFICATIONS +VITRIFIED +VITRIFIES +VITRIFORM +VITRIFY +VITRIFYING +VITRINE +VITRINES +VITRIOL +VITRIOLED +VITRIOLIC +VITRIOLING +VITRIOLLED +VITRIOLLING +VITRIOLS +VITTA +VITTAE +VITTATE +VITTLE +VITTLED +VITTLES +VITTLING +VITULINE +VITUPERATE +VITUPERATED +VITUPERATES +VITUPERATING +VITUPERATION +VITUPERATIONS +VITUPERATIVE +VITUPERATIVELY +VITUPERATOR +VITUPERATORS +VITUPERATORY +VIVA +VIVACE +VIVACES +VIVACIOUS +VIVACIOUSLY +VIVACIOUSNESS +VIVACIOUSNESSES +VIVACITIES +VIVACITY +VIVANDIERE +VIVANDIERES +VIVARIA +VIVARIES +VIVARIUM +VIVARIUMS +VIVARY +VIVAS +VIVE +VIVERRID +VIVERRIDS +VIVERRINE +VIVERRINES +VIVERS +VIVID +VIVIDER +VIVIDEST +VIVIDLY +VIVIDNESS +VIVIDNESSES +VIVIFIC +VIVIFICATION +VIVIFICATIONS +VIVIFIED +VIVIFIER +VIVIFIERS +VIVIFIES +VIVIFY +VIVIFYING +VIVIPARA +VIVIPARITIES +VIVIPARITY +VIVIPAROUS +VIVIPAROUSLY +VIVISECT +VIVISECTED +VIVISECTING +VIVISECTION +VIVISECTIONAL +VIVISECTIONIST +VIVISECTIONISTS +VIVISECTIONS +VIVISECTOR +VIVISECTORS +VIVISECTS +VIXEN +VIXENISH +VIXENLY +VIXENS +VIZARD +VIZARDED +VIZARDS +VIZCACHA +VIZCACHAS +VIZIER +VIZIERATE +VIZIERATES +VIZIERIAL +VIZIERS +VIZIERSHIP +VIZIERSHIPS +VIZIR +VIZIRATE +VIZIRATES +VIZIRIAL +VIZIRS +VIZOR +VIZORED +VIZORING +VIZORS +VIZSLA +VIZSLAS +VOCAB +VOCABLE +VOCABLES +VOCABLY +VOCABS +VOCABULAR +VOCABULARIES +VOCABULARY +VOCAL +VOCALESE +VOCALESES +VOCALIC +VOCALICALLY +VOCALICS +VOCALISE +VOCALISED +VOCALISES +VOCALISING +VOCALISM +VOCALISMS +VOCALIST +VOCALISTS +VOCALITIES +VOCALITY +VOCALIZATION +VOCALIZATIONS +VOCALIZE +VOCALIZED +VOCALIZER +VOCALIZERS +VOCALIZES +VOCALIZING +VOCALLY +VOCALNESS +VOCALNESSES +VOCALS +VOCATION +VOCATIONAL +VOCATIONALISM +VOCATIONALISMS +VOCATIONALIST +VOCATIONALISTS +VOCATIONALLY +VOCATIONS +VOCATIVE +VOCATIVELY +VOCATIVES +VOCES +VOCIFERANT +VOCIFERATE +VOCIFERATED +VOCIFERATES +VOCIFERATING +VOCIFERATION +VOCIFERATIONS +VOCIFERATOR +VOCIFERATORS +VOCIFEROUS +VOCIFEROUSLY +VOCIFEROUSNESS +VOCODER +VOCODERS +VODKA +VODKAS +VODOU +VODOUN +VODOUNS +VODOUS +VODUN +VODUNS +VOE +VOES +VOGIE +VOGUE +VOGUED +VOGUEING +VOGUEINGS +VOGUER +VOGUERS +VOGUES +VOGUING +VOGUINGS +VOGUISH +VOGUISHLY +VOGUISHNESS +VOGUISHNESSES +VOICE +VOICED +VOICEFUL +VOICEFULNESS +VOICEFULNESSES +VOICELESS +VOICELESSLY +VOICELESSNESS +VOICELESSNESSES +VOICEMAIL +VOICEMAILS +VOICEOVER +VOICEOVERS +VOICEPRINT +VOICEPRINTS +VOICER +VOICERS +VOICES +VOICING +VOICINGS +VOID +VOIDABLE +VOIDABLENESS +VOIDABLENESSES +VOIDANCE +VOIDANCES +VOIDED +VOIDER +VOIDERS +VOIDING +VOIDNESS +VOIDNESSES +VOIDS +VOILA +VOILE +VOILES +VOLANT +VOLANTE +VOLAR +VOLATILE +VOLATILENESS +VOLATILENESSES +VOLATILES +VOLATILISE +VOLATILISED +VOLATILISES +VOLATILISING +VOLATILITIES +VOLATILITY +VOLATILIZABLE +VOLATILIZATION +VOLATILIZATIONS +VOLATILIZE +VOLATILIZED +VOLATILIZES +VOLATILIZING +VOLCANIC +VOLCANICALLY +VOLCANICITIES +VOLCANICITY +VOLCANICS +VOLCANISM +VOLCANISMS +VOLCANIZE +VOLCANIZED +VOLCANIZES +VOLCANIZING +VOLCANO +VOLCANOES +VOLCANOLOGIC +VOLCANOLOGICAL +VOLCANOLOGIES +VOLCANOLOGIST +VOLCANOLOGISTS +VOLCANOLOGY +VOLCANOS +VOLE +VOLED +VOLERIES +VOLERY +VOLES +VOLING +VOLITANT +VOLITION +VOLITIONAL +VOLITIONS +VOLITIVE +VOLKSLIED +VOLKSLIEDER +VOLLEY +VOLLEYBALL +VOLLEYBALLS +VOLLEYED +VOLLEYER +VOLLEYERS +VOLLEYING +VOLLEYS +VOLOST +VOLOSTS +VOLPLANE +VOLPLANED +VOLPLANES +VOLPLANING +VOLT +VOLTA +VOLTAGE +VOLTAGES +VOLTAIC +VOLTAISM +VOLTAISMS +VOLTE +VOLTES +VOLTI +VOLTMETER +VOLTMETERS +VOLTS +VOLUBILITIES +VOLUBILITY +VOLUBLE +VOLUBLENESS +VOLUBLENESSES +VOLUBLY +VOLUME +VOLUMED +VOLUMES +VOLUMETER +VOLUMETERS +VOLUMETRIC +VOLUMETRICALLY +VOLUMING +VOLUMINOSITIES +VOLUMINOSITY +VOLUMINOUS +VOLUMINOUSLY +VOLUMINOUSNESS +VOLUNTARIES +VOLUNTARILY +VOLUNTARINESS +VOLUNTARINESSES +VOLUNTARISM +VOLUNTARISMS +VOLUNTARIST +VOLUNTARISTIC +VOLUNTARISTS +VOLUNTARY +VOLUNTARYISM +VOLUNTARYISMS +VOLUNTARYIST +VOLUNTARYISTS +VOLUNTEER +VOLUNTEERED +VOLUNTEERING +VOLUNTEERISM +VOLUNTEERISMS +VOLUNTEERS +VOLUPTUARIES +VOLUPTUARY +VOLUPTUOUS +VOLUPTUOUSLY +VOLUPTUOUSNESS +VOLUTE +VOLUTED +VOLUTES +VOLUTIN +VOLUTINS +VOLUTION +VOLUTIONS +VOLVA +VOLVAS +VOLVATE +VOLVOX +VOLVOXES +VOLVULI +VOLVULUS +VOLVULUSES +VOMER +VOMERINE +VOMERS +VOMICA +VOMICAE +VOMIT +VOMITED +VOMITER +VOMITERS +VOMITING +VOMITIVE +VOMITIVES +VOMITO +VOMITORIES +VOMITORY +VOMITOS +VOMITOUS +VOMITS +VOMITUS +VOMITUSES +VOODOO +VOODOOED +VOODOOING +VOODOOISM +VOODOOISMS +VOODOOIST +VOODOOISTIC +VOODOOISTS +VOODOOS +VORACIOUS +VORACIOUSLY +VORACIOUSNESS +VORACIOUSNESSES +VORACITIES +VORACITY +VORLAGE +VORLAGES +VORTEX +VORTEXES +VORTICAL +VORTICALLY +VORTICELLA +VORTICELLAE +VORTICELLAS +VORTICES +VORTICISM +VORTICISMS +VORTICIST +VORTICISTS +VORTICITIES +VORTICITY +VORTICOSE +VOTABLE +VOTARESS +VOTARESSES +VOTARIES +VOTARIST +VOTARISTS +VOTARY +VOTE +VOTEABLE +VOTED +VOTELESS +VOTER +VOTERS +VOTES +VOTING +VOTIVE +VOTIVELY +VOTIVENESS +VOTIVENESSES +VOTIVES +VOTRESS +VOTRESSES +VOUCH +VOUCHED +VOUCHEE +VOUCHEES +VOUCHER +VOUCHERED +VOUCHERING +VOUCHERS +VOUCHES +VOUCHING +VOUCHSAFE +VOUCHSAFED +VOUCHSAFEMENT +VOUCHSAFEMENTS +VOUCHSAFES +VOUCHSAFING +VOUDON +VOUDONS +VOUDOUN +VOUDOUNS +VOUSSOIR +VOUSSOIRS +VOUVRAY +VOUVRAYS +VOW +VOWED +VOWEL +VOWELIZE +VOWELIZED +VOWELIZES +VOWELIZING +VOWELS +VOWER +VOWERS +VOWING +VOWLESS +VOWS +VOX +VOYAGE +VOYAGED +VOYAGER +VOYAGERS +VOYAGES +VOYAGEUR +VOYAGEURS +VOYAGING +VOYEUR +VOYEURISM +VOYEURISMS +VOYEURISTIC +VOYEURISTICALLY +VOYEURS +VROOM +VROOMED +VROOMING +VROOMS +VROUW +VROUWS +VROW +VROWS +VUG +VUGG +VUGGIER +VUGGIEST +VUGGS +VUGGY +VUGH +VUGHS +VUGS +VULCANIAN +VULCANIC +VULCANICITIES +VULCANICITY +VULCANISATE +VULCANISATES +VULCANISATION +VULCANISATIONS +VULCANISE +VULCANISED +VULCANISES +VULCANISING +VULCANISM +VULCANISMS +VULCANITE +VULCANITES +VULCANIZATE +VULCANIZATES +VULCANIZATION +VULCANIZATIONS +VULCANIZE +VULCANIZED +VULCANIZER +VULCANIZERS +VULCANIZES +VULCANIZING +VULCANOLOGIES +VULCANOLOGIST +VULCANOLOGISTS +VULCANOLOGY +VULGAR +VULGARER +VULGAREST +VULGARIAN +VULGARIANS +VULGARISE +VULGARISED +VULGARISES +VULGARISING +VULGARISM +VULGARISMS +VULGARITIES +VULGARITY +VULGARIZATION +VULGARIZATIONS +VULGARIZE +VULGARIZED +VULGARIZER +VULGARIZERS +VULGARIZES +VULGARIZING +VULGARLY +VULGARS +VULGATE +VULGATES +VULGO +VULGUS +VULGUSES +VULNERABILITIES +VULNERABILITY +VULNERABLE +VULNERABLENESS +VULNERABLY +VULNERARIES +VULNERARY +VULPINE +VULTURE +VULTURES +VULTURINE +VULTURISH +VULTUROUS +VULVA +VULVAE +VULVAL +VULVAR +VULVAS +VULVATE +VULVIFORM +VULVITIS +VULVITISES +VULVOVAGINITIS +VUM +VYING +VYINGLY +WAB +WABBLE +WABBLED +WABBLER +WABBLERS +WABBLES +WABBLIER +WABBLIEST +WABBLING +WABBLY +WABS +WACK +WACKE +WACKER +WACKES +WACKEST +WACKIER +WACKIEST +WACKILY +WACKINESS +WACKINESSES +WACKO +WACKOS +WACKS +WACKY +WAD +WADABLE +WADDED +WADDER +WADDERS +WADDIE +WADDIED +WADDIES +WADDING +WADDINGS +WADDLE +WADDLED +WADDLER +WADDLERS +WADDLES +WADDLING +WADDLY +WADDY +WADDYING +WADE +WADEABLE +WADED +WADER +WADERS +WADES +WADI +WADIES +WADING +WADIS +WADMAAL +WADMAALS +WADMAL +WADMALS +WADMEL +WADMELS +WADMOL +WADMOLL +WADMOLLS +WADMOLS +WADS +WADSET +WADSETS +WADSETTED +WADSETTING +WADY +WAE +WAEFUL +WAENESS +WAENESSES +WAES +WAESUCK +WAESUCKS +WAFER +WAFERED +WAFERING +WAFERS +WAFERY +WAFF +WAFFED +WAFFIE +WAFFIES +WAFFING +WAFFLE +WAFFLED +WAFFLER +WAFFLERS +WAFFLES +WAFFLESTOMPER +WAFFLESTOMPERS +WAFFLIER +WAFFLIEST +WAFFLING +WAFFLINGS +WAFFLY +WAFFS +WAFT +WAFTAGE +WAFTAGES +WAFTED +WAFTER +WAFTERS +WAFTING +WAFTS +WAFTURE +WAFTURES +WAG +WAGE +WAGED +WAGELESS +WAGER +WAGERED +WAGERER +WAGERERS +WAGERING +WAGERS +WAGES +WAGEWORKER +WAGEWORKERS +WAGGED +WAGGER +WAGGERIES +WAGGERS +WAGGERY +WAGGING +WAGGISH +WAGGISHLY +WAGGISHNESS +WAGGISHNESSES +WAGGLE +WAGGLED +WAGGLES +WAGGLIER +WAGGLIEST +WAGGLING +WAGGLY +WAGGON +WAGGONED +WAGGONER +WAGGONERS +WAGGONING +WAGGONS +WAGING +WAGON +WAGONAGE +WAGONAGES +WAGONED +WAGONER +WAGONERS +WAGONETTE +WAGONETTES +WAGONING +WAGONLOAD +WAGONLOADS +WAGONS +WAGS +WAGSOME +WAGTAIL +WAGTAILS +WAHCONDA +WAHCONDAS +WAHINE +WAHINES +WAHOO +WAHOOS +WAIF +WAIFED +WAIFING +WAIFISH +WAIFLIKE +WAIFS +WAIL +WAILED +WAILER +WAILERS +WAILFUL +WAILFULLY +WAILING +WAILINGLY +WAILS +WAILSOME +WAIN +WAINS +WAINSCOT +WAINSCOTED +WAINSCOTING +WAINSCOTINGS +WAINSCOTS +WAINSCOTTED +WAINSCOTTING +WAINSCOTTINGS +WAINWRIGHT +WAINWRIGHTS +WAIR +WAIRED +WAIRING +WAIRS +WAIST +WAISTBAND +WAISTBANDS +WAISTCOAT +WAISTCOATED +WAISTCOATS +WAISTED +WAISTER +WAISTERS +WAISTING +WAISTINGS +WAISTLESS +WAISTLINE +WAISTLINES +WAISTS +WAIT +WAITED +WAITER +WAITERED +WAITERING +WAITERS +WAITING +WAITINGS +WAITLIST +WAITLISTED +WAITLISTING +WAITLISTS +WAITPERSON +WAITPERSONS +WAITRESS +WAITRESSED +WAITRESSES +WAITRESSING +WAITRON +WAITRONS +WAITS +WAITSTAFF +WAITSTAFFS +WAIVE +WAIVED +WAIVER +WAIVERS +WAIVES +WAIVING +WAKAME +WAKAMES +WAKANDA +WAKANDAS +WAKE +WAKEBOARD +WAKEBOARDER +WAKEBOARDERS +WAKEBOARDING +WAKEBOARDINGS +WAKEBOARDS +WAKED +WAKEFUL +WAKEFULLY +WAKEFULNESS +WAKEFULNESSES +WAKELESS +WAKEN +WAKENED +WAKENER +WAKENERS +WAKENING +WAKENINGS +WAKENS +WAKER +WAKERIFE +WAKERS +WAKES +WAKIKI +WAKIKIS +WAKING +WALE +WALED +WALER +WALERS +WALES +WALIES +WALING +WALK +WALKABLE +WALKABOUT +WALKABOUTS +WALKATHON +WALKATHONS +WALKAWAY +WALKAWAYS +WALKED +WALKER +WALKERS +WALKING +WALKINGS +WALKINGSTICK +WALKINGSTICKS +WALKOUT +WALKOUTS +WALKOVER +WALKOVERS +WALKS +WALKUP +WALKUPS +WALKWAY +WALKWAYS +WALKYRIE +WALKYRIES +WALL +WALLA +WALLABIES +WALLABY +WALLAH +WALLAHS +WALLAROO +WALLAROOS +WALLAS +WALLBOARD +WALLBOARDS +WALLED +WALLET +WALLETS +WALLEYE +WALLEYED +WALLEYES +WALLFLOWER +WALLFLOWERS +WALLIE +WALLIES +WALLING +WALLOP +WALLOPED +WALLOPER +WALLOPERS +WALLOPING +WALLOPINGS +WALLOPS +WALLOW +WALLOWED +WALLOWER +WALLOWERS +WALLOWING +WALLOWS +WALLPAPER +WALLPAPERED +WALLPAPERING +WALLPAPERS +WALLS +WALLY +WALLYBALL +WALLYBALLS +WALLYDRAG +WALLYDRAGS +WALLYDRAIGLE +WALLYDRAIGLES +WALNUT +WALNUTS +WALRUS +WALRUSES +WALTZ +WALTZED +WALTZER +WALTZERS +WALTZES +WALTZING +WALY +WAMBLE +WAMBLED +WAMBLES +WAMBLIER +WAMBLIEST +WAMBLING +WAMBLY +WAME +WAMEFOU +WAMEFOUS +WAMEFUL +WAMEFULS +WAMES +WAMMUS +WAMMUSES +WAMPISH +WAMPISHED +WAMPISHES +WAMPISHING +WAMPUM +WAMPUMPEAG +WAMPUMPEAGS +WAMPUMS +WAMPUS +WAMPUSES +WAMUS +WAMUSES +WAN +WAND +WANDER +WANDERED +WANDERER +WANDERERS +WANDERING +WANDERINGS +WANDERLUST +WANDERLUSTS +WANDEROO +WANDEROOS +WANDERS +WANDLE +WANDS +WANE +WANED +WANES +WANEY +WANGAN +WANGANS +WANGLE +WANGLED +WANGLER +WANGLERS +WANGLES +WANGLING +WANGUN +WANGUNS +WANIER +WANIEST +WANIGAN +WANIGANS +WANING +WANION +WANIONS +WANK +WANKED +WANKER +WANKERS +WANKING +WANKS +WANLY +WANNABE +WANNABEE +WANNABEES +WANNABES +WANNED +WANNER +WANNESS +WANNESSES +WANNEST +WANNIGAN +WANNIGANS +WANNING +WANS +WANT +WANTAGE +WANTAGES +WANTED +WANTER +WANTERS +WANTING +WANTON +WANTONED +WANTONER +WANTONERS +WANTONING +WANTONLY +WANTONNESS +WANTONNESSES +WANTONS +WANTS +WANY +WAP +WAPENTAKE +WAPENTAKES +WAPITI +WAPITIS +WAPPED +WAPPENSCHAWING +WAPPENSCHAWINGS +WAPPING +WAPS +WAR +WARBLE +WARBLED +WARBLER +WARBLERS +WARBLES +WARBLING +WARBONNET +WARBONNETS +WARCRAFT +WARCRAFTS +WARD +WARDED +WARDEN +WARDENRIES +WARDENRY +WARDENS +WARDENSHIP +WARDENSHIPS +WARDER +WARDERS +WARDING +WARDLESS +WARDRESS +WARDRESSES +WARDROBE +WARDROBED +WARDROBES +WARDROBING +WARDROOM +WARDROOMS +WARDS +WARDSHIP +WARDSHIPS +WARE +WARED +WAREHOUSE +WAREHOUSED +WAREHOUSEMAN +WAREHOUSEMEN +WAREHOUSER +WAREHOUSERS +WAREHOUSES +WAREHOUSING +WAREROOM +WAREROOMS +WARES +WARFARE +WARFARES +WARFARIN +WARFARINS +WARHEAD +WARHEADS +WARHORSE +WARHORSES +WARIER +WARIEST +WARILY +WARINESS +WARINESSES +WARING +WARISON +WARISONS +WARK +WARKED +WARKING +WARKS +WARLESS +WARLIKE +WARLOCK +WARLOCKS +WARLORD +WARLORDISM +WARLORDISMS +WARLORDS +WARM +WARMAKER +WARMAKERS +WARMED +WARMER +WARMERS +WARMEST +WARMHEARTED +WARMHEARTEDNESS +WARMING +WARMISH +WARMLY +WARMNESS +WARMNESSES +WARMONGER +WARMONGERING +WARMONGERINGS +WARMONGERS +WARMOUTH +WARMOUTHS +WARMS +WARMTH +WARMTHS +WARMUP +WARMUPS +WARN +WARNED +WARNER +WARNERS +WARNING +WARNINGLY +WARNINGS +WARNS +WARP +WARPAGE +WARPAGES +WARPATH +WARPATHS +WARPED +WARPER +WARPERS +WARPING +WARPLANE +WARPLANES +WARPOWER +WARPOWERS +WARPS +WARPWISE +WARRAGAL +WARRAGALS +WARRANT +WARRANTABLE +WARRANTABLENESS +WARRANTABLY +WARRANTED +WARRANTEE +WARRANTEES +WARRANTER +WARRANTERS +WARRANTIED +WARRANTIES +WARRANTING +WARRANTLESS +WARRANTOR +WARRANTORS +WARRANTS +WARRANTY +WARRANTYING +WARRED +WARREN +WARRENER +WARRENERS +WARRENS +WARRIGAL +WARRIGALS +WARRING +WARRIOR +WARRIORS +WARS +WARSAW +WARSAWS +WARSHIP +WARSHIPS +WARSLE +WARSLED +WARSLER +WARSLERS +WARSLES +WARSLING +WARSTLE +WARSTLED +WARSTLER +WARSTLERS +WARSTLES +WARSTLING +WART +WARTED +WARTHOG +WARTHOGS +WARTIER +WARTIEST +WARTIME +WARTIMES +WARTLESS +WARTLIKE +WARTS +WARTY +WARWORK +WARWORKS +WARWORN +WARY +WAS +WASABI +WASABIS +WASH +WASHABILITIES +WASHABILITY +WASHABLE +WASHABLES +WASHATERIA +WASHATERIAS +WASHBASIN +WASHBASINS +WASHBOARD +WASHBOARDS +WASHBOWL +WASHBOWLS +WASHCLOTH +WASHCLOTHS +WASHDAY +WASHDAYS +WASHED +WASHER +WASHERMAN +WASHERMEN +WASHERS +WASHERWOMAN +WASHERWOMEN +WASHES +WASHETERIA +WASHETERIAS +WASHHOUSE +WASHHOUSES +WASHIER +WASHIEST +WASHINESS +WASHINESSES +WASHING +WASHINGS +WASHOUT +WASHOUTS +WASHRAG +WASHRAGS +WASHROOM +WASHROOMS +WASHSTAND +WASHSTANDS +WASHTUB +WASHTUBS +WASHUP +WASHUPS +WASHWOMAN +WASHWOMEN +WASHY +WASP +WASPIER +WASPIEST +WASPILY +WASPINESS +WASPINESSES +WASPISH +WASPISHLY +WASPISHNESS +WASPISHNESSES +WASPLIKE +WASPS +WASPY +WASSAIL +WASSAILED +WASSAILER +WASSAILERS +WASSAILING +WASSAILS +WAST +WASTABLE +WASTAGE +WASTAGES +WASTE +WASTEBASKET +WASTEBASKETS +WASTED +WASTEFUL +WASTEFULLY +WASTEFULNESS +WASTEFULNESSES +WASTELAND +WASTELANDS +WASTELOT +WASTELOTS +WASTEPAPER +WASTEPAPERS +WASTER +WASTERIE +WASTERIES +WASTERS +WASTERY +WASTES +WASTEWATER +WASTEWATERS +WASTEWAY +WASTEWAYS +WASTING +WASTINGLY +WASTREL +WASTRELS +WASTRIE +WASTRIES +WASTRY +WASTS +WAT +WATAP +WATAPE +WATAPES +WATAPS +WATCH +WATCHABLE +WATCHABLES +WATCHBAND +WATCHBANDS +WATCHCASE +WATCHCASES +WATCHCRIES +WATCHCRY +WATCHDOG +WATCHDOGGED +WATCHDOGGING +WATCHDOGS +WATCHED +WATCHER +WATCHERS +WATCHES +WATCHEYE +WATCHEYES +WATCHFUL +WATCHFULLY +WATCHFULNESS +WATCHFULNESSES +WATCHING +WATCHMAKER +WATCHMAKERS +WATCHMAKING +WATCHMAKINGS +WATCHMAN +WATCHMEN +WATCHOUT +WATCHOUTS +WATCHTOWER +WATCHTOWERS +WATCHWORD +WATCHWORDS +WATER +WATERAGE +WATERAGES +WATERBED +WATERBEDS +WATERBIRD +WATERBIRDS +WATERBORNE +WATERBUCK +WATERBUCKS +WATERBUS +WATERBUSES +WATERBUSSES +WATERCOLOR +WATERCOLORIST +WATERCOLORISTS +WATERCOLORS +WATERCOOLER +WATERCOOLERS +WATERCOURSE +WATERCOURSES +WATERCRAFT +WATERCRAFTS +WATERCRESS +WATERCRESSES +WATERDOG +WATERDOGS +WATERED +WATERER +WATERERS +WATERFALL +WATERFALLS +WATERFLOOD +WATERFLOODED +WATERFLOODING +WATERFLOODS +WATERFOWL +WATERFOWLER +WATERFOWLERS +WATERFOWLING +WATERFOWLINGS +WATERFOWLS +WATERFRONT +WATERFRONTS +WATERHEAD +WATERHEADS +WATERHEN +WATERHENS +WATERIER +WATERIEST +WATERILY +WATERINESS +WATERINESSES +WATERING +WATERINGS +WATERISH +WATERISHNESS +WATERISHNESSES +WATERJET +WATERJETS +WATERLEAF +WATERLEAFS +WATERLESS +WATERLESSNESS +WATERLESSNESSES +WATERLILIES +WATERLILY +WATERLINE +WATERLINES +WATERLOG +WATERLOGGED +WATERLOGGING +WATERLOGS +WATERLOO +WATERLOOS +WATERMAN +WATERMANSHIP +WATERMANSHIPS +WATERMARK +WATERMARKED +WATERMARKING +WATERMARKS +WATERMELON +WATERMELONS +WATERMEN +WATERPOWER +WATERPOWERS +WATERPROOF +WATERPROOFED +WATERPROOFER +WATERPROOFERS +WATERPROOFING +WATERPROOFINGS +WATERPROOFNESS +WATERPROOFS +WATERS +WATERSCAPE +WATERSCAPES +WATERSHED +WATERSHEDS +WATERSIDE +WATERSIDES +WATERSKI +WATERSKIING +WATERSKIINGS +WATERSKIS +WATERSPOUT +WATERSPOUTS +WATERTHRUSH +WATERTHRUSHES +WATERTIGHT +WATERTIGHTNESS +WATERWAY +WATERWAYS +WATERWEED +WATERWEEDS +WATERWHEEL +WATERWHEELS +WATERWORK +WATERWORKS +WATERWORN +WATERY +WATERZOOI +WATERZOOIS +WATS +WATT +WATTAGE +WATTAGES +WATTAPE +WATTAPES +WATTER +WATTEST +WATTHOUR +WATTHOURS +WATTLE +WATTLEBIRD +WATTLEBIRDS +WATTLED +WATTLES +WATTLESS +WATTLING +WATTMETER +WATTMETERS +WATTS +WAUCHT +WAUCHTED +WAUCHTING +WAUCHTS +WAUGH +WAUGHT +WAUGHTED +WAUGHTING +WAUGHTS +WAUK +WAUKED +WAUKING +WAUKS +WAUL +WAULED +WAULING +WAULS +WAUR +WAVE +WAVEBAND +WAVEBANDS +WAVED +WAVEFORM +WAVEFORMS +WAVEGUIDE +WAVEGUIDES +WAVELENGTH +WAVELENGTHS +WAVELESS +WAVELESSLY +WAVELET +WAVELETS +WAVELIKE +WAVELLITE +WAVELLITES +WAVEOFF +WAVEOFFS +WAVER +WAVERED +WAVERER +WAVERERS +WAVERING +WAVERINGLY +WAVERS +WAVERY +WAVES +WAVESHAPE +WAVESHAPES +WAVEY +WAVEYS +WAVICLE +WAVICLES +WAVIER +WAVIES +WAVIEST +WAVILY +WAVINESS +WAVINESSES +WAVING +WAVY +WAW +WAWL +WAWLED +WAWLING +WAWLS +WAWS +WAX +WAXABLE +WAXBERRIES +WAXBERRY +WAXBILL +WAXBILLS +WAXED +WAXEN +WAXER +WAXERS +WAXES +WAXIER +WAXIEST +WAXILY +WAXINESS +WAXINESSES +WAXING +WAXINGS +WAXLIKE +WAXPLANT +WAXPLANTS +WAXWEED +WAXWEEDS +WAXWING +WAXWINGS +WAXWORK +WAXWORKER +WAXWORKERS +WAXWORKS +WAXWORM +WAXWORMS +WAXY +WAY +WAYBILL +WAYBILLS +WAYFARER +WAYFARERS +WAYFARING +WAYFARINGS +WAYGOING +WAYGOINGS +WAYLAID +WAYLAY +WAYLAYER +WAYLAYERS +WAYLAYING +WAYLAYS +WAYLESS +WAYPOINT +WAYPOINTS +WAYS +WAYSIDE +WAYSIDES +WAYWARD +WAYWARDLY +WAYWARDNESS +WAYWARDNESSES +WAYWORN +WAZOO +WAZOOS +WE +WEAK +WEAKEN +WEAKENED +WEAKENER +WEAKENERS +WEAKENING +WEAKENS +WEAKER +WEAKEST +WEAKFISH +WEAKFISHES +WEAKHEARTED +WEAKISH +WEAKISHLY +WEAKLIER +WEAKLIEST +WEAKLINESS +WEAKLINESSES +WEAKLING +WEAKLINGS +WEAKLY +WEAKNESS +WEAKNESSES +WEAKON +WEAKONS +WEAKSIDE +WEAKSIDES +WEAL +WEALD +WEALDS +WEALS +WEALTH +WEALTHIER +WEALTHIEST +WEALTHILY +WEALTHINESS +WEALTHINESSES +WEALTHS +WEALTHY +WEAN +WEANED +WEANER +WEANERS +WEANING +WEANLING +WEANLINGS +WEANS +WEAPON +WEAPONED +WEAPONEER +WEAPONEERING +WEAPONEERS +WEAPONING +WEAPONIZE +WEAPONIZED +WEAPONIZES +WEAPONIZING +WEAPONLESS +WEAPONRIES +WEAPONRY +WEAPONS +WEAR +WEARABILITIES +WEARABILITY +WEARABLE +WEARABLES +WEARER +WEARERS +WEARIED +WEARIER +WEARIES +WEARIEST +WEARIFUL +WEARIFULLY +WEARIFULNESS +WEARIFULNESSES +WEARILESS +WEARILESSLY +WEARILY +WEARINESS +WEARINESSES +WEARING +WEARINGLY +WEARISH +WEARISOME +WEARISOMELY +WEARISOMENESS +WEARISOMENESSES +WEARPROOF +WEARS +WEARY +WEARYING +WEASAND +WEASANDS +WEASEL +WEASELED +WEASELING +WEASELLED +WEASELLING +WEASELLY +WEASELS +WEASELY +WEASON +WEASONS +WEATHER +WEATHERABILITY +WEATHERBOARD +WEATHERBOARDED +WEATHERBOARDING +WEATHERBOARDS +WEATHERCAST +WEATHERCASTER +WEATHERCASTERS +WEATHERCASTS +WEATHERCOCK +WEATHERCOCKS +WEATHERED +WEATHERGLASS +WEATHERGLASSES +WEATHERING +WEATHERINGS +WEATHERIZATION +WEATHERIZATIONS +WEATHERIZE +WEATHERIZED +WEATHERIZES +WEATHERIZING +WEATHERLY +WEATHERMAN +WEATHERMEN +WEATHERPERSON +WEATHERPERSONS +WEATHERPROOF +WEATHERPROOFED +WEATHERPROOFING +WEATHERPROOFS +WEATHERS +WEATHERWORN +WEAVE +WEAVED +WEAVER +WEAVERBIRD +WEAVERBIRDS +WEAVERS +WEAVES +WEAVING +WEAZAND +WEAZANDS +WEB +WEBBED +WEBBIER +WEBBIEST +WEBBING +WEBBINGS +WEBBY +WEBCAM +WEBCAMS +WEBCAST +WEBCASTED +WEBCASTER +WEBCASTERS +WEBCASTING +WEBCASTS +WEBER +WEBERS +WEBFED +WEBFEET +WEBFOOT +WEBLESS +WEBLIKE +WEBLOG +WEBLOGS +WEBMASTER +WEBMASTERS +WEBPAGE +WEBPAGES +WEBS +WEBSITE +WEBSITES +WEBSTER +WEBSTERS +WEBWORK +WEBWORKS +WEBWORM +WEBWORMS +WECHT +WECHTS +WED +WEDDED +WEDDER +WEDDERS +WEDDING +WEDDINGS +WEDEL +WEDELED +WEDELING +WEDELN +WEDELNS +WEDELS +WEDGE +WEDGED +WEDGELIKE +WEDGES +WEDGIE +WEDGIER +WEDGIES +WEDGIEST +WEDGING +WEDGY +WEDLOCK +WEDLOCKS +WEDS +WEE +WEED +WEEDED +WEEDER +WEEDERS +WEEDIER +WEEDIEST +WEEDILY +WEEDINESS +WEEDINESSES +WEEDING +WEEDLESS +WEEDLIKE +WEEDS +WEEDY +WEEK +WEEKDAY +WEEKDAYS +WEEKEND +WEEKENDED +WEEKENDER +WEEKENDERS +WEEKENDING +WEEKENDS +WEEKLIES +WEEKLONG +WEEKLY +WEEKNIGHT +WEEKNIGHTS +WEEKS +WEEL +WEEN +WEENED +WEENIE +WEENIER +WEENIES +WEENIEST +WEENING +WEENS +WEENSIER +WEENSIEST +WEENSY +WEENY +WEEP +WEEPER +WEEPERS +WEEPIE +WEEPIER +WEEPIES +WEEPIEST +WEEPINESS +WEEPINESSES +WEEPING +WEEPINGLY +WEEPINGS +WEEPS +WEEPY +WEER +WEES +WEEST +WEET +WEETED +WEETING +WEETS +WEEVER +WEEVERS +WEEVIL +WEEVILED +WEEVILLY +WEEVILS +WEEVILY +WEEWEE +WEEWEED +WEEWEEING +WEEWEES +WEFT +WEFTS +WEFTWISE +WEIGELA +WEIGELAS +WEIGELIA +WEIGELIAS +WEIGH +WEIGHABLE +WEIGHED +WEIGHER +WEIGHERS +WEIGHING +WEIGHMAN +WEIGHMEN +WEIGHS +WEIGHT +WEIGHTED +WEIGHTER +WEIGHTERS +WEIGHTIER +WEIGHTIEST +WEIGHTILY +WEIGHTINESS +WEIGHTINESSES +WEIGHTING +WEIGHTLESS +WEIGHTLESSLY +WEIGHTLESSNESS +WEIGHTS +WEIGHTY +WEIMARANER +WEIMARANERS +WEINER +WEINERS +WEIR +WEIRD +WEIRDED +WEIRDER +WEIRDEST +WEIRDIE +WEIRDIES +WEIRDING +WEIRDLY +WEIRDNESS +WEIRDNESSES +WEIRDO +WEIRDOES +WEIRDOS +WEIRDS +WEIRDY +WEIRS +WEISENHEIMER +WEISENHEIMERS +WEKA +WEKAS +WELCH +WELCHED +WELCHER +WELCHERS +WELCHES +WELCHING +WELCOME +WELCOMED +WELCOMELY +WELCOMENESS +WELCOMENESSES +WELCOMER +WELCOMERS +WELCOMES +WELCOMING +WELD +WELDABLE +WELDED +WELDER +WELDERS +WELDING +WELDLESS +WELDMENT +WELDMENTS +WELDOR +WELDORS +WELDS +WELFARE +WELFARES +WELFARISM +WELFARISMS +WELFARIST +WELFARISTS +WELKIN +WELKINS +WELL +WELLADAY +WELLADAYS +WELLAWAY +WELLAWAYS +WELLBORN +WELLCURB +WELLCURBS +WELLDOER +WELLDOERS +WELLED +WELLHEAD +WELLHEADS +WELLHOLE +WELLHOLES +WELLHOUSE +WELLHOUSES +WELLIE +WELLIES +WELLING +WELLNESS +WELLNESSES +WELLS +WELLSITE +WELLSITES +WELLSPRING +WELLSPRINGS +WELLY +WELSH +WELSHED +WELSHER +WELSHERS +WELSHES +WELSHING +WELT +WELTANSCHAUUNG +WELTANSCHAUUNGS +WELTED +WELTER +WELTERED +WELTERING +WELTERS +WELTERWEIGHT +WELTERWEIGHTS +WELTING +WELTINGS +WELTS +WELTSCHMERZ +WELTSCHMERZES +WEN +WENCH +WENCHED +WENCHER +WENCHERS +WENCHES +WENCHING +WEND +WENDED +WENDIGO +WENDIGOS +WENDING +WENDS +WENNIER +WENNIEST +WENNISH +WENNY +WENS +WENT +WENTLETRAP +WENTLETRAPS +WEPT +WERE +WEREGILD +WEREGILDS +WEREWOLF +WEREWOLVES +WERGELD +WERGELDS +WERGELT +WERGELTS +WERGILD +WERGILDS +WERNERITE +WERNERITES +WERT +WERWOLF +WERWOLVES +WESKIT +WESKITS +WESSAND +WESSANDS +WEST +WESTBOUND +WESTER +WESTERED +WESTERING +WESTERLIES +WESTERLY +WESTERN +WESTERNER +WESTERNERS +WESTERNISATION +WESTERNISATIONS +WESTERNISE +WESTERNISED +WESTERNISES +WESTERNISING +WESTERNIZATION +WESTERNIZATIONS +WESTERNIZE +WESTERNIZED +WESTERNIZES +WESTERNIZING +WESTERNMOST +WESTERNS +WESTERS +WESTING +WESTINGS +WESTMOST +WESTS +WESTWARD +WESTWARDS +WET +WETBACK +WETBACKS +WETHER +WETHERS +WETLAND +WETLANDS +WETLY +WETNESS +WETNESSES +WETPROOF +WETS +WETSUIT +WETSUITS +WETTABILITIES +WETTABILITY +WETTABLE +WETTED +WETTER +WETTERS +WETTEST +WETTING +WETTINGS +WETTISH +WETWARE +WETWARES +WHA +WHACK +WHACKED +WHACKER +WHACKERS +WHACKIER +WHACKIEST +WHACKING +WHACKO +WHACKOS +WHACKS +WHACKY +WHALE +WHALEBACK +WHALEBACKS +WHALEBOAT +WHALEBOATS +WHALEBONE +WHALEBONES +WHALED +WHALELIKE +WHALEMAN +WHALEMEN +WHALER +WHALERS +WHALES +WHALING +WHALINGS +WHAM +WHAMMED +WHAMMIES +WHAMMING +WHAMMO +WHAMMY +WHAMO +WHAMS +WHANG +WHANGED +WHANGEE +WHANGEES +WHANGING +WHANGS +WHAP +WHAPPED +WHAPPER +WHAPPERS +WHAPPING +WHAPS +WHARF +WHARFAGE +WHARFAGES +WHARFED +WHARFING +WHARFINGER +WHARFINGERS +WHARFMASTER +WHARFMASTERS +WHARFS +WHARVE +WHARVES +WHAT +WHATCHAMACALLIT +WHATEVER +WHATNESS +WHATNESSES +WHATNOT +WHATNOTS +WHATS +WHATSIS +WHATSISES +WHATSIT +WHATSITS +WHATSOEVER +WHAUP +WHAUPS +WHEAL +WHEALS +WHEAT +WHEATEAR +WHEATEARS +WHEATEN +WHEATENS +WHEATLAND +WHEATLANDS +WHEATLESS +WHEATS +WHEATWORM +WHEATWORMS +WHEE +WHEEDLE +WHEEDLED +WHEEDLER +WHEEDLERS +WHEEDLES +WHEEDLING +WHEEL +WHEELBARROW +WHEELBARROWED +WHEELBARROWING +WHEELBARROWS +WHEELBASE +WHEELBASES +WHEELCHAIR +WHEELCHAIRS +WHEELED +WHEELER +WHEELERS +WHEELHORSE +WHEELHORSES +WHEELHOUSE +WHEELHOUSES +WHEELIE +WHEELIES +WHEELING +WHEELINGS +WHEELLESS +WHEELMAN +WHEELMEN +WHEELS +WHEELSMAN +WHEELSMEN +WHEELWORK +WHEELWORKS +WHEELWRIGHT +WHEELWRIGHTS +WHEEN +WHEENS +WHEEP +WHEEPED +WHEEPING +WHEEPLE +WHEEPLED +WHEEPLES +WHEEPLING +WHEEPS +WHEEZE +WHEEZED +WHEEZER +WHEEZERS +WHEEZES +WHEEZIER +WHEEZIEST +WHEEZILY +WHEEZINESS +WHEEZINESSES +WHEEZING +WHEEZY +WHELK +WHELKIER +WHELKIEST +WHELKS +WHELKY +WHELM +WHELMED +WHELMING +WHELMS +WHELP +WHELPED +WHELPING +WHELPLESS +WHELPS +WHEN +WHENAS +WHENCE +WHENCESOEVER +WHENEVER +WHENS +WHENSOEVER +WHERE +WHEREABOUT +WHEREABOUTS +WHEREAS +WHEREASES +WHEREAT +WHEREBY +WHEREFORE +WHEREFORES +WHEREFROM +WHEREIN +WHEREINTO +WHEREOF +WHEREON +WHERES +WHERESOEVER +WHERETHROUGH +WHERETO +WHEREUNTO +WHEREUPON +WHEREVER +WHEREWITH +WHEREWITHAL +WHEREWITHALS +WHEREWITHS +WHERRIED +WHERRIES +WHERRY +WHERRYING +WHERVE +WHERVES +WHET +WHETHER +WHETS +WHETSTONE +WHETSTONES +WHETTED +WHETTER +WHETTERS +WHETTING +WHEW +WHEWS +WHEY +WHEYEY +WHEYFACE +WHEYFACED +WHEYFACES +WHEYISH +WHEYLIKE +WHEYS +WHICH +WHICHEVER +WHICHSOEVER +WHICKER +WHICKERED +WHICKERING +WHICKERS +WHID +WHIDAH +WHIDAHS +WHIDDED +WHIDDING +WHIDS +WHIFF +WHIFFED +WHIFFER +WHIFFERS +WHIFFET +WHIFFETS +WHIFFING +WHIFFLE +WHIFFLED +WHIFFLER +WHIFFLERS +WHIFFLES +WHIFFLETREE +WHIFFLETREES +WHIFFLING +WHIFFS +WHIG +WHIGMALEERIE +WHIGMALEERIES +WHIGS +WHILE +WHILED +WHILES +WHILING +WHILOM +WHILST +WHIM +WHIMBREL +WHIMBRELS +WHIMPER +WHIMPERED +WHIMPERER +WHIMPERERS +WHIMPERING +WHIMPERS +WHIMS +WHIMSEY +WHIMSEYS +WHIMSICAL +WHIMSICALITIES +WHIMSICALITY +WHIMSICALLY +WHIMSICALNESS +WHIMSICALNESSES +WHIMSIED +WHIMSIES +WHIMSY +WHIN +WHINCHAT +WHINCHATS +WHINE +WHINED +WHINER +WHINERS +WHINES +WHINEY +WHINGDING +WHINGDINGS +WHINGE +WHINGED +WHINGEING +WHINGER +WHINGERS +WHINGES +WHINGING +WHINIER +WHINIEST +WHININESS +WHININESSES +WHINING +WHININGLY +WHINNIED +WHINNIER +WHINNIES +WHINNIEST +WHINNY +WHINNYING +WHINS +WHINSTONE +WHINSTONES +WHINY +WHIP +WHIPCORD +WHIPCORDS +WHIPLASH +WHIPLASHES +WHIPLIKE +WHIPPED +WHIPPER +WHIPPERS +WHIPPERSNAPPER +WHIPPERSNAPPERS +WHIPPET +WHIPPETS +WHIPPIER +WHIPPIEST +WHIPPING +WHIPPINGS +WHIPPLETREE +WHIPPLETREES +WHIPPOORWILL +WHIPPOORWILLS +WHIPPY +WHIPRAY +WHIPRAYS +WHIPS +WHIPSAW +WHIPSAWED +WHIPSAWING +WHIPSAWN +WHIPSAWS +WHIPSNAKE +WHIPSNAKES +WHIPSTALL +WHIPSTALLS +WHIPSTITCH +WHIPSTITCHED +WHIPSTITCHES +WHIPSTITCHING +WHIPSTOCK +WHIPSTOCKS +WHIPT +WHIPTAIL +WHIPTAILS +WHIPWORM +WHIPWORMS +WHIR +WHIRL +WHIRLED +WHIRLER +WHIRLERS +WHIRLIER +WHIRLIES +WHIRLIEST +WHIRLIGIG +WHIRLIGIGS +WHIRLING +WHIRLPOOL +WHIRLPOOLS +WHIRLS +WHIRLWIND +WHIRLWINDS +WHIRLY +WHIRLYBIRD +WHIRLYBIRDS +WHIRR +WHIRRED +WHIRRIED +WHIRRIES +WHIRRING +WHIRRS +WHIRRY +WHIRRYING +WHIRS +WHISH +WHISHED +WHISHES +WHISHING +WHISHT +WHISHTED +WHISHTING +WHISHTS +WHISK +WHISKED +WHISKER +WHISKERED +WHISKERS +WHISKERY +WHISKEY +WHISKEYS +WHISKIES +WHISKING +WHISKS +WHISKY +WHISPER +WHISPERED +WHISPERER +WHISPERERS +WHISPERING +WHISPERINGLY +WHISPERINGS +WHISPERS +WHISPERY +WHIST +WHISTED +WHISTING +WHISTLE +WHISTLEABLE +WHISTLED +WHISTLER +WHISTLERS +WHISTLES +WHISTLING +WHISTLINGS +WHISTS +WHIT +WHITE +WHITEBAIT +WHITEBAITS +WHITEBEARD +WHITEBEARDS +WHITECAP +WHITECAPS +WHITECOMB +WHITECOMBS +WHITED +WHITEFACE +WHITEFACES +WHITEFISH +WHITEFISHES +WHITEFLIES +WHITEFLY +WHITEHEAD +WHITEHEADS +WHITELY +WHITEN +WHITENED +WHITENER +WHITENERS +WHITENESS +WHITENESSES +WHITENING +WHITENINGS +WHITENS +WHITEOUT +WHITEOUTS +WHITER +WHITES +WHITESMITH +WHITESMITHS +WHITEST +WHITETAIL +WHITETAILS +WHITETHROAT +WHITETHROATS +WHITEWALL +WHITEWALLS +WHITEWASH +WHITEWASHED +WHITEWASHER +WHITEWASHERS +WHITEWASHES +WHITEWASHING +WHITEWASHINGS +WHITEWING +WHITEWINGS +WHITEWOOD +WHITEWOODS +WHITEY +WHITEYS +WHITHER +WHITHERSOEVER +WHITHERWARD +WHITIER +WHITIES +WHITIEST +WHITING +WHITINGS +WHITISH +WHITLOW +WHITLOWS +WHITRACK +WHITRACKS +WHITS +WHITTER +WHITTERS +WHITTLE +WHITTLED +WHITTLER +WHITTLERS +WHITTLES +WHITTLING +WHITTLINGS +WHITTRET +WHITTRETS +WHITY +WHIZ +WHIZBANG +WHIZBANGS +WHIZZ +WHIZZBANG +WHIZZBANGS +WHIZZED +WHIZZER +WHIZZERS +WHIZZES +WHIZZIER +WHIZZIEST +WHIZZING +WHIZZY +WHO +WHOA +WHODUNIT +WHODUNITS +WHODUNNIT +WHODUNNITS +WHOEVER +WHOLE +WHOLEHEARTED +WHOLEHEARTEDLY +WHOLEMEAL +WHOLENESS +WHOLENESSES +WHOLES +WHOLESALE +WHOLESALED +WHOLESALER +WHOLESALERS +WHOLESALES +WHOLESALING +WHOLESOME +WHOLESOMELY +WHOLESOMENESS +WHOLESOMENESSES +WHOLESOMER +WHOLESOMEST +WHOLISM +WHOLISMS +WHOLISTIC +WHOLLY +WHOM +WHOMEVER +WHOMP +WHOMPED +WHOMPING +WHOMPS +WHOMSO +WHOMSOEVER +WHOOF +WHOOFED +WHOOFING +WHOOFS +WHOOP +WHOOPED +WHOOPEE +WHOOPEES +WHOOPER +WHOOPERS +WHOOPIE +WHOOPIES +WHOOPING +WHOOPLA +WHOOPLAS +WHOOPS +WHOOSH +WHOOSHED +WHOOSHES +WHOOSHING +WHOOSIS +WHOOSISES +WHOP +WHOPPED +WHOPPER +WHOPPERS +WHOPPING +WHOPS +WHORE +WHORED +WHOREDOM +WHOREDOMS +WHOREHOUSE +WHOREHOUSES +WHOREMASTER +WHOREMASTERS +WHOREMONGER +WHOREMONGERS +WHORES +WHORESON +WHORESONS +WHORING +WHORISH +WHORISHLY +WHORL +WHORLED +WHORLS +WHORT +WHORTLE +WHORTLEBERRIES +WHORTLEBERRY +WHORTLES +WHORTS +WHOSE +WHOSESOEVER +WHOSEVER +WHOSIS +WHOSISES +WHOSO +WHOSOEVER +WHUMP +WHUMPED +WHUMPING +WHUMPS +WHUP +WHUPPED +WHUPPING +WHUPS +WHY +WHYDAH +WHYDAHS +WHYS +WICCA +WICCAN +WICCANS +WICCAS +WICH +WICHES +WICK +WICKAPE +WICKAPES +WICKED +WICKEDER +WICKEDEST +WICKEDLY +WICKEDNESS +WICKEDNESSES +WICKER +WICKERS +WICKERWORK +WICKERWORKS +WICKET +WICKETS +WICKING +WICKINGS +WICKIUP +WICKIUPS +WICKLESS +WICKS +WICKYUP +WICKYUPS +WICOPIES +WICOPY +WIDDER +WIDDERS +WIDDERSHINS +WIDDIE +WIDDIES +WIDDLE +WIDDLED +WIDDLES +WIDDLING +WIDDY +WIDE +WIDEAWAKE +WIDEAWAKES +WIDEBAND +WIDEBODIES +WIDEBODY +WIDELY +WIDEMOUTHED +WIDEN +WIDENED +WIDENER +WIDENERS +WIDENESS +WIDENESSES +WIDENING +WIDENS +WIDEOUT +WIDEOUTS +WIDER +WIDES +WIDESPREAD +WIDEST +WIDGEON +WIDGEONS +WIDGET +WIDGETS +WIDISH +WIDOW +WIDOWBIRD +WIDOWBIRDS +WIDOWED +WIDOWER +WIDOWERED +WIDOWERHOOD +WIDOWERHOODS +WIDOWERS +WIDOWHOOD +WIDOWHOODS +WIDOWING +WIDOWS +WIDTH +WIDTHS +WIDTHWAY +WIDTHWAYS +WIDTHWISE +WIELD +WIELDABLE +WIELDED +WIELDER +WIELDERS +WIELDIER +WIELDIEST +WIELDING +WIELDS +WIELDY +WIENER +WIENERS +WIENERWURST +WIENERWURSTS +WIENIE +WIENIES +WIFE +WIFED +WIFEDOM +WIFEDOMS +WIFEHOOD +WIFEHOODS +WIFELESS +WIFELIER +WIFELIEST +WIFELIKE +WIFELINESS +WIFELINESSES +WIFELY +WIFES +WIFEY +WIFEYS +WIFING +WIFTIER +WIFTIEST +WIFTY +WIG +WIGAN +WIGANS +WIGEON +WIGEONS +WIGGED +WIGGERIES +WIGGERY +WIGGIER +WIGGIEST +WIGGING +WIGGINGS +WIGGLE +WIGGLED +WIGGLER +WIGGLERS +WIGGLES +WIGGLIER +WIGGLIEST +WIGGLING +WIGGLY +WIGGY +WIGHT +WIGHTS +WIGLESS +WIGLET +WIGLETS +WIGLIKE +WIGMAKER +WIGMAKERS +WIGS +WIGWAG +WIGWAGGED +WIGWAGGER +WIGWAGGERS +WIGWAGGING +WIGWAGS +WIGWAM +WIGWAMS +WIKIUP +WIKIUPS +WILCO +WILD +WILDCARD +WILDCARDS +WILDCAT +WILDCATS +WILDCATTED +WILDCATTER +WILDCATTERS +WILDCATTING +WILDEBEEST +WILDEBEESTS +WILDED +WILDER +WILDERED +WILDERING +WILDERMENT +WILDERMENTS +WILDERNESS +WILDERNESSES +WILDERS +WILDEST +WILDFIRE +WILDFIRES +WILDFLOWER +WILDFLOWERS +WILDFOWL +WILDFOWLER +WILDFOWLERS +WILDFOWLING +WILDFOWLINGS +WILDFOWLS +WILDING +WILDINGS +WILDISH +WILDLAND +WILDLANDS +WILDLIFE +WILDLING +WILDLINGS +WILDLY +WILDNESS +WILDNESSES +WILDS +WILDWOOD +WILDWOODS +WILE +WILED +WILES +WILFUL +WILFULLY +WILIER +WILIEST +WILILY +WILINESS +WILINESSES +WILING +WILL +WILLABLE +WILLED +WILLEMITE +WILLEMITES +WILLER +WILLERS +WILLET +WILLETS +WILLFUL +WILLFULLY +WILLFULNESS +WILLFULNESSES +WILLIE +WILLIED +WILLIES +WILLING +WILLINGER +WILLINGEST +WILLINGLY +WILLINGNESS +WILLINGNESSES +WILLIWAU +WILLIWAUS +WILLIWAW +WILLIWAWS +WILLOW +WILLOWED +WILLOWER +WILLOWERS +WILLOWIER +WILLOWIEST +WILLOWING +WILLOWLIKE +WILLOWS +WILLOWWARE +WILLOWWARES +WILLOWY +WILLPOWER +WILLPOWERS +WILLS +WILLY +WILLYARD +WILLYART +WILLYING +WILLYWAW +WILLYWAWS +WILT +WILTED +WILTING +WILTS +WILY +WIMBLE +WIMBLED +WIMBLES +WIMBLING +WIMMIN +WIMP +WIMPED +WIMPIER +WIMPIEST +WIMPINESS +WIMPINESSES +WIMPING +WIMPISH +WIMPISHNESS +WIMPISHNESSES +WIMPLE +WIMPLED +WIMPLES +WIMPLING +WIMPS +WIMPY +WIN +WINCE +WINCED +WINCER +WINCERS +WINCES +WINCEY +WINCEYS +WINCH +WINCHED +WINCHER +WINCHERS +WINCHES +WINCHING +WINCING +WIND +WINDABLE +WINDAGE +WINDAGES +WINDBAG +WINDBAGS +WINDBELL +WINDBELLS +WINDBLAST +WINDBLASTS +WINDBLOWN +WINDBREAK +WINDBREAKER +WINDBREAKERS +WINDBREAKS +WINDBURN +WINDBURNED +WINDBURNING +WINDBURNS +WINDBURNT +WINDCHILL +WINDCHILLS +WINDED +WINDER +WINDERS +WINDFALL +WINDFALLS +WINDFLAW +WINDFLAWS +WINDFLOWER +WINDFLOWERS +WINDGALL +WINDGALLS +WINDHOVER +WINDHOVERS +WINDIER +WINDIEST +WINDIGO +WINDIGOS +WINDILY +WINDINESS +WINDINESSES +WINDING +WINDINGLY +WINDINGS +WINDJAMMER +WINDJAMMERS +WINDJAMMING +WINDJAMMINGS +WINDLASS +WINDLASSED +WINDLASSES +WINDLASSING +WINDLE +WINDLED +WINDLES +WINDLESS +WINDLESSLY +WINDLESTRAW +WINDLESTRAWS +WINDLING +WINDLINGS +WINDMILL +WINDMILLED +WINDMILLING +WINDMILLS +WINDOW +WINDOWED +WINDOWING +WINDOWLESS +WINDOWPANE +WINDOWPANES +WINDOWS +WINDOWSILL +WINDOWSILLS +WINDOWY +WINDPIPE +WINDPIPES +WINDPROOF +WINDROW +WINDROWED +WINDROWER +WINDROWERS +WINDROWING +WINDROWS +WINDS +WINDSCREEN +WINDSCREENS +WINDSHIELD +WINDSHIELDS +WINDSOCK +WINDSOCKS +WINDSTORM +WINDSTORMS +WINDSURF +WINDSURFED +WINDSURFING +WINDSURFINGS +WINDSURFS +WINDSWEPT +WINDTHROW +WINDTHROWS +WINDUP +WINDUPS +WINDWARD +WINDWARDS +WINDWAY +WINDWAYS +WINDY +WINE +WINED +WINEGLASS +WINEGLASSES +WINEGROWER +WINEGROWERS +WINELESS +WINEMAKER +WINEMAKERS +WINEPRESS +WINEPRESSES +WINERIES +WINERY +WINES +WINESAP +WINESAPS +WINESHOP +WINESHOPS +WINESKIN +WINESKINS +WINESOP +WINESOPS +WINEY +WING +WINGBACK +WINGBACKS +WINGBOW +WINGBOWS +WINGCHAIR +WINGCHAIRS +WINGDING +WINGDINGS +WINGED +WINGEDLY +WINGER +WINGERS +WINGIER +WINGIEST +WINGING +WINGLESS +WINGLESSNESS +WINGLESSNESSES +WINGLET +WINGLETS +WINGLIKE +WINGMAN +WINGMEN +WINGOVER +WINGOVERS +WINGS +WINGSPAN +WINGSPANS +WINGSPREAD +WINGSPREADS +WINGTIP +WINGTIPS +WINGY +WINIER +WINIEST +WINING +WINISH +WINK +WINKED +WINKER +WINKERS +WINKING +WINKINGLY +WINKLE +WINKLED +WINKLES +WINKLING +WINKS +WINLESS +WINNABLE +WINNED +WINNER +WINNERS +WINNING +WINNINGLY +WINNINGS +WINNOCK +WINNOCKS +WINNOW +WINNOWED +WINNOWER +WINNOWERS +WINNOWING +WINNOWS +WINO +WINOES +WINOS +WINS +WINSOME +WINSOMELY +WINSOMENESS +WINSOMENESSES +WINSOMER +WINSOMEST +WINTER +WINTERBERRIES +WINTERBERRY +WINTERED +WINTERER +WINTERERS +WINTERFED +WINTERFEED +WINTERFEEDING +WINTERFEEDS +WINTERGREEN +WINTERGREENS +WINTERIER +WINTERIEST +WINTERING +WINTERISH +WINTERIZATION +WINTERIZATIONS +WINTERIZE +WINTERIZED +WINTERIZES +WINTERIZING +WINTERKILL +WINTERKILLS +WINTERLY +WINTERS +WINTERTIDE +WINTERTIDES +WINTERTIME +WINTERTIMES +WINTERY +WINTLE +WINTLED +WINTLES +WINTLING +WINTRIER +WINTRIEST +WINTRILY +WINTRINESS +WINTRINESSES +WINTRY +WINY +WINZE +WINZES +WIPE +WIPED +WIPEOUT +WIPEOUTS +WIPER +WIPERS +WIPES +WIPING +WIRABLE +WIRE +WIRED +WIREDRAW +WIREDRAWER +WIREDRAWERS +WIREDRAWING +WIREDRAWN +WIREDRAWS +WIREDREW +WIREGRASS +WIREGRASSES +WIREHAIR +WIREHAIRED +WIREHAIRS +WIRELESS +WIRELESSED +WIRELESSES +WIRELESSING +WIRELIKE +WIREMAN +WIREMEN +WIREPHOTO +WIREPHOTOS +WIRER +WIRERS +WIRES +WIRETAP +WIRETAPPED +WIRETAPPER +WIRETAPPERS +WIRETAPPING +WIRETAPS +WIREWAY +WIREWAYS +WIREWORK +WIREWORKS +WIREWORM +WIREWORMS +WIRIER +WIRIEST +WIRILY +WIRINESS +WIRINESSES +WIRING +WIRINGS +WIRRA +WIRY +WIS +WISDOM +WISDOMS +WISE +WISEACRE +WISEACRES +WISEASS +WISEASSES +WISECRACK +WISECRACKED +WISECRACKER +WISECRACKERS +WISECRACKING +WISECRACKS +WISED +WISEGUY +WISEGUYS +WISELIER +WISELIEST +WISELY +WISENESS +WISENESSES +WISENHEIMER +WISENHEIMERS +WISENT +WISENTS +WISER +WISES +WISEST +WISEWOMAN +WISEWOMEN +WISH +WISHA +WISHBONE +WISHBONES +WISHED +WISHER +WISHERS +WISHES +WISHFUL +WISHFULLY +WISHFULNESS +WISHFULNESSES +WISHING +WISHLESS +WISING +WISP +WISPED +WISPIER +WISPIEST +WISPILY +WISPINESS +WISPINESSES +WISPING +WISPISH +WISPLIKE +WISPS +WISPY +WISS +WISSED +WISSES +WISSING +WIST +WISTARIA +WISTARIAS +WISTED +WISTERIA +WISTERIAS +WISTFUL +WISTFULLY +WISTFULNESS +WISTFULNESSES +WISTING +WISTS +WIT +WITAN +WITANS +WITCH +WITCHCRAFT +WITCHCRAFTS +WITCHED +WITCHERIES +WITCHERY +WITCHES +WITCHGRASS +WITCHGRASSES +WITCHHOOD +WITCHHOODS +WITCHIER +WITCHIEST +WITCHING +WITCHINGS +WITCHLIKE +WITCHWEED +WITCHWEEDS +WITCHY +WITE +WITED +WITENAGEMOT +WITENAGEMOTE +WITENAGEMOTES +WITENAGEMOTS +WITES +WITH +WITHAL +WITHDRAW +WITHDRAWABLE +WITHDRAWAL +WITHDRAWALS +WITHDRAWING +WITHDRAWN +WITHDRAWNNESS +WITHDRAWNNESSES +WITHDRAWS +WITHDREW +WITHE +WITHED +WITHER +WITHERED +WITHERER +WITHERERS +WITHERING +WITHERINGLY +WITHERITE +WITHERITES +WITHEROD +WITHERODS +WITHERS +WITHERSHINS +WITHES +WITHHELD +WITHHOLD +WITHHOLDER +WITHHOLDERS +WITHHOLDING +WITHHOLDS +WITHIER +WITHIES +WITHIEST +WITHIN +WITHINDOORS +WITHING +WITHINS +WITHOUT +WITHOUTDOORS +WITHOUTS +WITHSTAND +WITHSTANDING +WITHSTANDS +WITHSTOOD +WITHY +WITING +WITLESS +WITLESSLY +WITLESSNESS +WITLESSNESSES +WITLING +WITLINGS +WITLOOF +WITLOOFS +WITNESS +WITNESSED +WITNESSER +WITNESSERS +WITNESSES +WITNESSING +WITNEY +WITNEYS +WITS +WITTED +WITTICISM +WITTICISMS +WITTIER +WITTIEST +WITTILY +WITTINESS +WITTINESSES +WITTING +WITTINGLY +WITTINGS +WITTOL +WITTOLS +WITTY +WIVE +WIVED +WIVER +WIVERN +WIVERNS +WIVERS +WIVES +WIVING +WIZ +WIZARD +WIZARDLY +WIZARDRIES +WIZARDRY +WIZARDS +WIZEN +WIZENED +WIZENING +WIZENS +WIZES +WIZZEN +WIZZENS +WIZZES +WO +WOAD +WOADED +WOADS +WOADWAX +WOADWAXEN +WOADWAXENS +WOADWAXES +WOALD +WOALDS +WOBBLE +WOBBLED +WOBBLER +WOBBLERS +WOBBLES +WOBBLIER +WOBBLIES +WOBBLIEST +WOBBLINESS +WOBBLINESSES +WOBBLING +WOBBLY +WOBEGONE +WODGE +WODGES +WOE +WOEBEGONE +WOEBEGONENESS +WOEBEGONENESSES +WOEFUL +WOEFULLER +WOEFULLEST +WOEFULLY +WOEFULNESS +WOEFULNESSES +WOENESS +WOENESSES +WOES +WOESOME +WOFUL +WOFULLER +WOFULLEST +WOFULLY +WOG +WOGGISH +WOGS +WOK +WOKE +WOKEN +WOKS +WOLD +WOLDS +WOLF +WOLFBERRIES +WOLFBERRY +WOLFED +WOLFER +WOLFERS +WOLFFISH +WOLFFISHES +WOLFHOUND +WOLFHOUNDS +WOLFING +WOLFISH +WOLFISHLY +WOLFISHNESS +WOLFISHNESSES +WOLFLIKE +WOLFRAM +WOLFRAMITE +WOLFRAMITES +WOLFRAMS +WOLFS +WOLFSBANE +WOLFSBANES +WOLLASTONITE +WOLLASTONITES +WOLVER +WOLVERINE +WOLVERINES +WOLVERS +WOLVES +WOMAN +WOMANED +WOMANHOOD +WOMANHOODS +WOMANING +WOMANISE +WOMANISED +WOMANISES +WOMANISH +WOMANISHLY +WOMANISHNESS +WOMANISHNESSES +WOMANISING +WOMANISM +WOMANISMS +WOMANIST +WOMANISTS +WOMANIZE +WOMANIZED +WOMANIZER +WOMANIZERS +WOMANIZES +WOMANIZING +WOMANKIND +WOMANLESS +WOMANLIER +WOMANLIEST +WOMANLIKE +WOMANLINESS +WOMANLINESSES +WOMANLY +WOMANNESS +WOMANNESSES +WOMANPOWER +WOMANPOWERS +WOMANS +WOMB +WOMBAT +WOMBATS +WOMBED +WOMBIER +WOMBIEST +WOMBS +WOMBY +WOMEN +WOMENFOLK +WOMENFOLKS +WOMENKIND +WOMERA +WOMERAS +WOMMERA +WOMMERAS +WOMYN +WON +WONDER +WONDERED +WONDERER +WONDERERS +WONDERFUL +WONDERFULLY +WONDERFULNESS +WONDERFULNESSES +WONDERING +WONDERLAND +WONDERLANDS +WONDERMENT +WONDERMENTS +WONDERS +WONDERWORK +WONDERWORKS +WONDROUS +WONDROUSLY +WONDROUSNESS +WONDROUSNESSES +WONK +WONKIER +WONKIEST +WONKS +WONKY +WONNED +WONNER +WONNERS +WONNING +WONS +WONT +WONTED +WONTEDLY +WONTEDNESS +WONTEDNESSES +WONTING +WONTON +WONTONS +WONTS +WOO +WOOD +WOODBIN +WOODBIND +WOODBINDS +WOODBINE +WOODBINES +WOODBINS +WOODBLOCK +WOODBLOCKS +WOODBORER +WOODBORERS +WOODBOX +WOODBOXES +WOODCHAT +WOODCHATS +WOODCHOPPER +WOODCHOPPERS +WOODCHUCK +WOODCHUCKS +WOODCOCK +WOODCOCKS +WOODCRAFT +WOODCRAFTS +WOODCUT +WOODCUTS +WOODCUTTER +WOODCUTTERS +WOODCUTTING +WOODCUTTINGS +WOODED +WOODEN +WOODENER +WOODENEST +WOODENHEAD +WOODENHEADED +WOODENHEADS +WOODENLY +WOODENNESS +WOODENNESSES +WOODENWARE +WOODENWARES +WOODGRAIN +WOODGRAINS +WOODHEN +WOODHENS +WOODIE +WOODIER +WOODIES +WOODIEST +WOODINESS +WOODINESSES +WOODING +WOODLAND +WOODLANDER +WOODLANDERS +WOODLANDS +WOODLARK +WOODLARKS +WOODLESS +WOODLORE +WOODLORES +WOODLOT +WOODLOTS +WOODMAN +WOODMEN +WOODNOTE +WOODNOTES +WOODPECKER +WOODPECKERS +WOODPILE +WOODPILES +WOODRUFF +WOODRUFFS +WOODS +WOODSHED +WOODSHEDDED +WOODSHEDDING +WOODSHEDS +WOODSIA +WOODSIAS +WOODSIER +WOODSIEST +WOODSMAN +WOODSMEN +WOODSTOVE +WOODSTOVES +WOODSY +WOODTONE +WOODTONES +WOODWAX +WOODWAXEN +WOODWAXENS +WOODWAXES +WOODWIND +WOODWINDS +WOODWORK +WOODWORKER +WOODWORKERS +WOODWORKING +WOODWORKINGS +WOODWORKS +WOODWORM +WOODWORMS +WOODY +WOOED +WOOER +WOOERS +WOOF +WOOFED +WOOFER +WOOFERS +WOOFING +WOOFS +WOOING +WOOINGLY +WOOL +WOOLED +WOOLEN +WOOLENS +WOOLER +WOOLERS +WOOLFELL +WOOLFELLS +WOOLGATHERER +WOOLGATHERERS +WOOLGATHERING +WOOLGATHERINGS +WOOLHAT +WOOLHATS +WOOLIE +WOOLIER +WOOLIES +WOOLIEST +WOOLINESS +WOOLINESSES +WOOLLED +WOOLLEN +WOOLLENS +WOOLLIER +WOOLLIES +WOOLLIEST +WOOLLIKE +WOOLLILY +WOOLLINESS +WOOLLINESSES +WOOLLY +WOOLMAN +WOOLMEN +WOOLPACK +WOOLPACKS +WOOLS +WOOLSACK +WOOLSACKS +WOOLSHED +WOOLSHEDS +WOOLSKIN +WOOLSKINS +WOOLWORK +WOOLWORKS +WOOLY +WOOMERA +WOOMERAS +WOOPS +WOOPSED +WOOPSES +WOOPSING +WOORALI +WOORALIS +WOORARI +WOORARIS +WOOS +WOOSH +WOOSHED +WOOSHES +WOOSHING +WOOZIER +WOOZIEST +WOOZILY +WOOZINESS +WOOZINESSES +WOOZY +WOP +WOPS +WORD +WORDAGE +WORDAGES +WORDBOOK +WORDBOOKS +WORDED +WORDIER +WORDIEST +WORDILY +WORDINESS +WORDINESSES +WORDING +WORDINGS +WORDLESS +WORDLESSLY +WORDLESSNESS +WORDLESSNESSES +WORDMONGER +WORDMONGERS +WORDPLAY +WORDPLAYS +WORDS +WORDSMITH +WORDSMITHERIES +WORDSMITHERY +WORDSMITHS +WORDY +WORE +WORK +WORKABILITIES +WORKABILITY +WORKABLE +WORKABLENESS +WORKABLENESSES +WORKABLY +WORKADAY +WORKAHOLIC +WORKAHOLICS +WORKAHOLISM +WORKAHOLISMS +WORKBAG +WORKBAGS +WORKBASKET +WORKBASKETS +WORKBENCH +WORKBENCHES +WORKBOAT +WORKBOATS +WORKBOOK +WORKBOOKS +WORKBOX +WORKBOXES +WORKDAY +WORKDAYS +WORKED +WORKER +WORKERS +WORKFARE +WORKFARES +WORKFLOW +WORKFLOWS +WORKFOLK +WORKFOLKS +WORKFORCE +WORKFORCES +WORKHORSE +WORKHORSES +WORKHOUR +WORKHOURS +WORKHOUSE +WORKHOUSES +WORKING +WORKINGMAN +WORKINGMEN +WORKINGS +WORKINGWOMAN +WORKINGWOMEN +WORKLESS +WORKLESSNESS +WORKLESSNESSES +WORKLOAD +WORKLOADS +WORKMAN +WORKMANLIKE +WORKMANLY +WORKMANSHIP +WORKMANSHIPS +WORKMATE +WORKMATES +WORKMEN +WORKOUT +WORKOUTS +WORKPEOPLE +WORKPIECE +WORKPIECES +WORKPLACE +WORKPLACES +WORKPRINT +WORKPRINTS +WORKROOM +WORKROOMS +WORKS +WORKSHEET +WORKSHEETS +WORKSHOP +WORKSHOPS +WORKSPACE +WORKSPACES +WORKSTATION +WORKSTATIONS +WORKTABLE +WORKTABLES +WORKUP +WORKUPS +WORKWEEK +WORKWEEKS +WORKWOMAN +WORKWOMEN +WORLD +WORLDBEAT +WORLDBEATS +WORLDLIER +WORLDLIEST +WORLDLINESS +WORLDLINESSES +WORLDLING +WORLDLINGS +WORLDLY +WORLDS +WORLDVIEW +WORLDVIEWS +WORLDWIDE +WORM +WORMED +WORMER +WORMERS +WORMGEAR +WORMGEARS +WORMHOLE +WORMHOLES +WORMIER +WORMIEST +WORMIL +WORMILS +WORMINESS +WORMINESSES +WORMING +WORMISH +WORMLIKE +WORMROOT +WORMROOTS +WORMS +WORMSEED +WORMSEEDS +WORMWOOD +WORMWOODS +WORMY +WORN +WORNNESS +WORNNESSES +WORRIED +WORRIEDLY +WORRIER +WORRIERS +WORRIES +WORRIMENT +WORRIMENTS +WORRISOME +WORRISOMELY +WORRISOMENESS +WORRISOMENESSES +WORRIT +WORRITED +WORRITING +WORRITS +WORRY +WORRYING +WORRYWART +WORRYWARTS +WORSE +WORSEN +WORSENED +WORSENING +WORSENS +WORSER +WORSES +WORSET +WORSETS +WORSHIP +WORSHIPED +WORSHIPER +WORSHIPERS +WORSHIPFUL +WORSHIPFULLY +WORSHIPFULNESS +WORSHIPING +WORSHIPLESS +WORSHIPPED +WORSHIPPER +WORSHIPPERS +WORSHIPPING +WORSHIPS +WORST +WORSTED +WORSTEDS +WORSTING +WORSTS +WORT +WORTH +WORTHED +WORTHFUL +WORTHIER +WORTHIES +WORTHIEST +WORTHILY +WORTHINESS +WORTHINESSES +WORTHING +WORTHLESS +WORTHLESSLY +WORTHLESSNESS +WORTHLESSNESSES +WORTHS +WORTHWHILE +WORTHWHILENESS +WORTHY +WORTS +WOS +WOST +WOT +WOTS +WOTTED +WOTTING +WOULD +WOULDEST +WOULDST +WOUND +WOUNDED +WOUNDEDLY +WOUNDING +WOUNDLESS +WOUNDS +WOUNDWORT +WOUNDWORTS +WOVE +WOVEN +WOVENS +WOW +WOWED +WOWING +WOWS +WOWSER +WOWSERS +WRACK +WRACKED +WRACKFUL +WRACKING +WRACKS +WRAITH +WRAITHLIKE +WRAITHS +WRANG +WRANGLE +WRANGLED +WRANGLER +WRANGLERS +WRANGLES +WRANGLING +WRANGS +WRAP +WRAPAROUND +WRAPAROUNDS +WRAPPED +WRAPPER +WRAPPERS +WRAPPING +WRAPPINGS +WRAPS +WRAPT +WRASSE +WRASSES +WRASSLE +WRASSLED +WRASSLES +WRASSLING +WRASTLE +WRASTLED +WRASTLES +WRASTLING +WRATH +WRATHED +WRATHFUL +WRATHFULLY +WRATHFULNESS +WRATHFULNESSES +WRATHIER +WRATHIEST +WRATHILY +WRATHING +WRATHS +WRATHY +WREAK +WREAKED +WREAKER +WREAKERS +WREAKING +WREAKS +WREATH +WREATHE +WREATHED +WREATHEN +WREATHER +WREATHERS +WREATHES +WREATHING +WREATHS +WREATHY +WRECK +WRECKAGE +WRECKAGES +WRECKED +WRECKER +WRECKERS +WRECKFUL +WRECKING +WRECKINGS +WRECKS +WREN +WRENCH +WRENCHED +WRENCHER +WRENCHERS +WRENCHES +WRENCHING +WRENCHINGLY +WRENS +WREST +WRESTED +WRESTER +WRESTERS +WRESTING +WRESTLE +WRESTLED +WRESTLER +WRESTLERS +WRESTLES +WRESTLING +WRESTLINGS +WRESTS +WRETCH +WRETCHED +WRETCHEDER +WRETCHEDEST +WRETCHEDLY +WRETCHEDNESS +WRETCHEDNESSES +WRETCHES +WRICK +WRICKED +WRICKING +WRICKS +WRIED +WRIER +WRIES +WRIEST +WRIGGLE +WRIGGLED +WRIGGLER +WRIGGLERS +WRIGGLES +WRIGGLIER +WRIGGLIEST +WRIGGLING +WRIGGLY +WRIGHT +WRIGHTS +WRING +WRINGED +WRINGER +WRINGERS +WRINGING +WRINGS +WRINKLE +WRINKLED +WRINKLES +WRINKLIER +WRINKLIEST +WRINKLING +WRINKLY +WRIST +WRISTBAND +WRISTBANDS +WRISTIER +WRISTIEST +WRISTLET +WRISTLETS +WRISTLOCK +WRISTLOCKS +WRISTS +WRISTWATCH +WRISTWATCHES +WRISTY +WRIT +WRITABLE +WRITE +WRITEABLE +WRITER +WRITERLY +WRITERS +WRITES +WRITHE +WRITHED +WRITHEN +WRITHER +WRITHERS +WRITHES +WRITHING +WRITING +WRITINGS +WRITS +WRITTEN +WRONG +WRONGDOER +WRONGDOERS +WRONGDOING +WRONGDOINGS +WRONGED +WRONGER +WRONGERS +WRONGEST +WRONGFUL +WRONGFULLY +WRONGFULNESS +WRONGFULNESSES +WRONGHEADED +WRONGHEADEDLY +WRONGHEADEDNESS +WRONGING +WRONGLY +WRONGNESS +WRONGNESSES +WRONGS +WROTE +WROTH +WROTHFUL +WROUGHT +WRUNG +WRY +WRYER +WRYEST +WRYING +WRYLY +WRYNECK +WRYNECKS +WRYNESS +WRYNESSES +WUD +WULFENITE +WULFENITES +WUNDERKIND +WUNDERKINDER +WURST +WURSTS +WURTZITE +WURTZITES +WURZEL +WURZELS +WUSHU +WUSS +WUSSES +WUSSIER +WUSSIES +WUSSIEST +WUSSY +WUTHER +WUTHERED +WUTHERING +WUTHERS +WYANDOTTE +WYANDOTTES +WYCH +WYCHES +WYE +WYES +WYLE +WYLED +WYLES +WYLIECOAT +WYLIECOATS +WYLING +WYN +WYND +WYNDS +WYNN +WYNNS +WYNS +WYTE +WYTED +WYTES +WYTING +WYVERN +WYVERNS +XANTHAN +XANTHANS +XANTHATE +XANTHATES +XANTHEIN +XANTHEINS +XANTHENE +XANTHENES +XANTHIC +XANTHIN +XANTHINE +XANTHINES +XANTHINS +XANTHOMA +XANTHOMAS +XANTHOMATA +XANTHONE +XANTHONES +XANTHOPHYLL +XANTHOPHYLLS +XANTHOUS +XEBEC +XEBECS +XENIA +XENIAL +XENIAS +XENIC +XENOBIOTIC +XENOBIOTICS +XENOBLAST +XENOBLASTS +XENOCRYST +XENOCRYSTS +XENODIAGNOSES +XENODIAGNOSIS +XENODIAGNOSTIC +XENOGAMIES +XENOGAMY +XENOGENEIC +XENOGENIC +XENOGENIES +XENOGENY +XENOGRAFT +XENOGRAFTS +XENOLITH +XENOLITHIC +XENOLITHS +XENON +XENONS +XENOPHILE +XENOPHILES +XENOPHOBE +XENOPHOBES +XENOPHOBIA +XENOPHOBIAS +XENOPHOBIC +XENOPHOBICALLY +XENOPUS +XENOPUSES +XENOTROPIC +XERARCH +XERIC +XERICALLY +XERISCAPE +XERISCAPES +XERODERMA +XERODERMAE +XERODERMAS +XEROGRAPHIC +XEROGRAPHICALLY +XEROGRAPHIES +XEROGRAPHY +XEROPHILE +XEROPHILIES +XEROPHILOUS +XEROPHILY +XEROPHTHALMIA +XEROPHTHALMIAS +XEROPHTHALMIC +XEROPHYTE +XEROPHYTES +XEROPHYTIC +XEROPHYTISM +XEROPHYTISMS +XERORADIOGRAPHY +XEROSERE +XEROSERES +XEROSES +XEROSIS +XEROTHERMIC +XEROTIC +XEROX +XEROXED +XEROXES +XEROXING +XERUS +XERUSES +XI +XIPHISTERNA +XIPHISTERNUM +XIPHOID +XIPHOIDS +XIS +XU +XYLAN +XYLANS +XYLEM +XYLEMS +XYLENE +XYLENES +XYLIDIN +XYLIDINE +XYLIDINES +XYLIDINS +XYLITOL +XYLITOLS +XYLOCARP +XYLOCARPS +XYLOGRAPH +XYLOGRAPHED +XYLOGRAPHER +XYLOGRAPHERS +XYLOGRAPHIC +XYLOGRAPHICAL +XYLOGRAPHIES +XYLOGRAPHING +XYLOGRAPHS +XYLOGRAPHY +XYLOID +XYLOL +XYLOLS +XYLOPHAGE +XYLOPHAGES +XYLOPHAGOUS +XYLOPHONE +XYLOPHONES +XYLOPHONIST +XYLOPHONISTS +XYLOSE +XYLOSES +XYLOTOMIES +XYLOTOMY +XYLYL +XYLYLS +XYST +XYSTER +XYSTERS +XYSTI +XYSTOI +XYSTOS +XYSTS +XYSTUS +YA +YABBER +YABBERED +YABBERING +YABBERS +YABBIE +YABBIES +YABBY +YACHT +YACHTED +YACHTER +YACHTERS +YACHTING +YACHTINGS +YACHTMAN +YACHTMEN +YACHTS +YACHTSMAN +YACHTSMEN +YACK +YACKED +YACKING +YACKS +YAFF +YAFFED +YAFFING +YAFFS +YAG +YAGER +YAGERS +YAGI +YAGIS +YAGS +YAH +YAHOO +YAHOOISM +YAHOOISMS +YAHOOS +YAHRZEIT +YAHRZEITS +YAIRD +YAIRDS +YAK +YAKITORI +YAKITORIS +YAKKED +YAKKER +YAKKERS +YAKKING +YAKS +YAKUZA +YALD +YAM +YAMALKA +YAMALKAS +YAMEN +YAMENS +YAMMER +YAMMERED +YAMMERER +YAMMERERS +YAMMERING +YAMMERS +YAMS +YAMULKA +YAMULKAS +YAMUN +YAMUNS +YANG +YANGS +YANK +YANKED +YANKING +YANKS +YANQUI +YANQUIS +YANTRA +YANTRAS +YAP +YAPOCK +YAPOCKS +YAPOK +YAPOKS +YAPON +YAPONS +YAPPED +YAPPER +YAPPERS +YAPPING +YAPPINGLY +YAPS +YAR +YARD +YARDAGE +YARDAGES +YARDARM +YARDARMS +YARDBIRD +YARDBIRDS +YARDED +YARDER +YARDERS +YARDING +YARDLAND +YARDLANDS +YARDMAN +YARDMASTER +YARDMASTERS +YARDMEN +YARDS +YARDSTICK +YARDSTICKS +YARDWAND +YARDWANDS +YARDWORK +YARDWORKS +YARE +YARELY +YARER +YAREST +YARMELKE +YARMELKES +YARMULKE +YARMULKES +YARN +YARNED +YARNER +YARNERS +YARNING +YARNS +YARROW +YARROWS +YASHMAC +YASHMACS +YASHMAK +YASHMAKS +YASMAK +YASMAKS +YATAGAN +YATAGANS +YATAGHAN +YATAGHANS +YATTER +YATTERED +YATTERING +YATTERS +YAUD +YAUDS +YAULD +YAUP +YAUPED +YAUPER +YAUPERS +YAUPING +YAUPON +YAUPONS +YAUPS +YAUTIA +YAUTIAS +YAW +YAWED +YAWEY +YAWING +YAWL +YAWLED +YAWLING +YAWLS +YAWMETER +YAWMETERS +YAWN +YAWNED +YAWNER +YAWNERS +YAWNING +YAWNINGLY +YAWNS +YAWP +YAWPED +YAWPER +YAWPERS +YAWPING +YAWPINGS +YAWPS +YAWS +YAY +YAYS +YCLAD +YCLEPED +YCLEPT +YE +YEA +YEAH +YEAHS +YEALING +YEALINGS +YEAN +YEANED +YEANING +YEANLING +YEANLINGS +YEANS +YEAR +YEARBOOK +YEARBOOKS +YEAREND +YEARENDS +YEARLIES +YEARLING +YEARLINGS +YEARLONG +YEARLY +YEARN +YEARNED +YEARNER +YEARNERS +YEARNING +YEARNINGLY +YEARNINGS +YEARNS +YEARS +YEAS +YEASAYER +YEASAYERS +YEAST +YEASTED +YEASTIER +YEASTIEST +YEASTILY +YEASTINESS +YEASTINESSES +YEASTING +YEASTLESS +YEASTLIKE +YEASTS +YEASTY +YECCH +YECCHS +YECH +YECHS +YECHY +YEELIN +YEELINS +YEGG +YEGGMAN +YEGGMEN +YEGGS +YEH +YELD +YELK +YELKS +YELL +YELLED +YELLER +YELLERS +YELLING +YELLOW +YELLOWED +YELLOWER +YELLOWEST +YELLOWFIN +YELLOWFINS +YELLOWHAMMER +YELLOWHAMMERS +YELLOWING +YELLOWISH +YELLOWLEGS +YELLOWLY +YELLOWS +YELLOWTAIL +YELLOWTAILS +YELLOWTHROAT +YELLOWTHROATS +YELLOWWARE +YELLOWWARES +YELLOWWOOD +YELLOWWOODS +YELLOWY +YELLS +YELP +YELPED +YELPER +YELPERS +YELPING +YELPS +YEN +YENNED +YENNING +YENS +YENTA +YENTAS +YENTE +YENTES +YEOMAN +YEOMANLY +YEOMANRIES +YEOMANRY +YEOMEN +YEP +YEPS +YERBA +YERBAS +YERK +YERKED +YERKING +YERKS +YES +YESES +YESHIVA +YESHIVAH +YESHIVAHS +YESHIVAS +YESHIVOT +YESHIVOTH +YESSED +YESSES +YESSING +YESTER +YESTERDAY +YESTERDAYS +YESTEREVE +YESTEREVES +YESTERN +YESTERNIGHT +YESTERNIGHTS +YESTERYEAR +YESTERYEARS +YESTREEN +YESTREENS +YET +YETI +YETIS +YETT +YETTS +YEUK +YEUKED +YEUKING +YEUKS +YEUKY +YEW +YEWS +YID +YIDS +YIELD +YIELDABLE +YIELDED +YIELDER +YIELDERS +YIELDING +YIELDS +YIKES +YILL +YILLS +YIN +YINCE +YINS +YIP +YIPE +YIPES +YIPPED +YIPPEE +YIPPIE +YIPPIES +YIPPING +YIPS +YIRD +YIRDS +YIRR +YIRRED +YIRRING +YIRRS +YIRTH +YIRTHS +YLEM +YLEMS +YO +YOB +YOBBO +YOBBOES +YOBBOS +YOBS +YOCK +YOCKED +YOCKING +YOCKS +YOCTOSECOND +YOCTOSECONDS +YOD +YODEL +YODELED +YODELER +YODELERS +YODELING +YODELLED +YODELLER +YODELLERS +YODELLING +YODELS +YODH +YODHS +YODLE +YODLED +YODLER +YODLERS +YODLES +YODLING +YODS +YOGA +YOGAS +YOGEE +YOGEES +YOGH +YOGHOURT +YOGHOURTS +YOGHS +YOGHURT +YOGHURTS +YOGI +YOGIC +YOGIN +YOGINI +YOGINIS +YOGINS +YOGIS +YOGURT +YOGURTS +YOHIMBE +YOHIMBES +YOHIMBINE +YOHIMBINES +YOICKS +YOK +YOKE +YOKED +YOKEFELLOW +YOKEFELLOWS +YOKEL +YOKELESS +YOKELISH +YOKELS +YOKEMATE +YOKEMATES +YOKES +YOKING +YOKOZUNA +YOKOZUNAS +YOKS +YOLK +YOLKED +YOLKIER +YOLKIEST +YOLKS +YOLKY +YOM +YOMIM +YON +YOND +YONDER +YONI +YONIC +YONIS +YONKER +YONKERS +YORE +YORES +YOTTABYTE +YOTTABYTES +YOU +YOUNG +YOUNGBERRIES +YOUNGBERRY +YOUNGER +YOUNGERS +YOUNGEST +YOUNGISH +YOUNGLING +YOUNGLINGS +YOUNGNESS +YOUNGNESSES +YOUNGS +YOUNGSTER +YOUNGSTERS +YOUNKER +YOUNKERS +YOUPON +YOUPONS +YOUR +YOURN +YOURS +YOURSELF +YOURSELVES +YOUS +YOUSE +YOUTH +YOUTHEN +YOUTHENED +YOUTHENING +YOUTHENS +YOUTHFUL +YOUTHFULLY +YOUTHFULNESS +YOUTHFULNESSES +YOUTHQUAKE +YOUTHQUAKES +YOUTHS +YOW +YOWE +YOWED +YOWES +YOWIE +YOWIES +YOWING +YOWL +YOWLED +YOWLER +YOWLERS +YOWLING +YOWLS +YOWS +YPERITE +YPERITES +YTTERBIA +YTTERBIAS +YTTERBIC +YTTERBIUM +YTTERBIUMS +YTTERBOUS +YTTRIA +YTTRIAS +YTTRIC +YTTRIUM +YTTRIUMS +YUAN +YUANS +YUCA +YUCAS +YUCCA +YUCCAS +YUCCH +YUCH +YUCK +YUCKED +YUCKIER +YUCKIEST +YUCKINESS +YUCKINESSES +YUCKING +YUCKS +YUCKY +YUGA +YUGAS +YUK +YUKKED +YUKKIER +YUKKIEST +YUKKING +YUKKY +YUKS +YULAN +YULANS +YULE +YULES +YULETIDE +YULETIDES +YUM +YUMMIER +YUMMIES +YUMMIEST +YUMMINESS +YUMMINESSES +YUMMY +YUP +YUPON +YUPONS +YUPPIE +YUPPIEDOM +YUPPIEDOMS +YUPPIEISH +YUPPIES +YUPPIFIED +YUPPIFIES +YUPPIFY +YUPPIFYING +YUPPY +YUPS +YURT +YURTA +YURTS +YUTZ +YUTZES +YWIS +ZA +ZABAGLIONE +ZABAGLIONES +ZABAIONE +ZABAIONES +ZABAJONE +ZABAJONES +ZACATON +ZACATONS +ZADDICK +ZADDIK +ZADDIKIM +ZAFFAR +ZAFFARS +ZAFFER +ZAFFERS +ZAFFIR +ZAFFIRS +ZAFFRE +ZAFFRES +ZAFTIG +ZAG +ZAGGED +ZAGGING +ZAGS +ZAIBATSU +ZAIKAI +ZAIKAIS +ZAIRE +ZAIRES +ZAMARRA +ZAMARRAS +ZAMARRO +ZAMARROS +ZAMIA +ZAMIAS +ZAMINDAR +ZAMINDARI +ZAMINDARIS +ZAMINDARS +ZANANA +ZANANAS +ZANDER +ZANDERS +ZANIER +ZANIES +ZANIEST +ZANILY +ZANINESS +ZANINESSES +ZANY +ZANYISH +ZANZA +ZANZAS +ZAP +ZAPATEADO +ZAPATEADOS +ZAPATEO +ZAPATEOS +ZAPPED +ZAPPER +ZAPPERS +ZAPPIER +ZAPPIEST +ZAPPING +ZAPPY +ZAPS +ZAPTIAH +ZAPTIAHS +ZAPTIEH +ZAPTIEHS +ZARATITE +ZARATITES +ZAREBA +ZAREBAS +ZAREEBA +ZAREEBAS +ZARF +ZARFS +ZARIBA +ZARIBAS +ZARZUELA +ZARZUELAS +ZAS +ZASTRUGA +ZASTRUGI +ZAX +ZAXES +ZAYIN +ZAYINS +ZAZEN +ZAZENS +ZEAL +ZEALOT +ZEALOTRIES +ZEALOTRY +ZEALOTS +ZEALOUS +ZEALOUSLY +ZEALOUSNESS +ZEALOUSNESSES +ZEALS +ZEATIN +ZEATINS +ZEBEC +ZEBECK +ZEBECKS +ZEBECS +ZEBRA +ZEBRAFISH +ZEBRAFISHES +ZEBRAIC +ZEBRANO +ZEBRANOS +ZEBRAS +ZEBRASS +ZEBRASSES +ZEBRAWOOD +ZEBRAWOODS +ZEBRINE +ZEBRINES +ZEBROID +ZEBU +ZEBUS +ZECCHIN +ZECCHINI +ZECCHINO +ZECCHINOS +ZECCHINS +ZECHIN +ZECHINS +ZED +ZEDOARIES +ZEDOARY +ZEDS +ZEE +ZEES +ZEIN +ZEINS +ZEITGEBER +ZEITGEBERS +ZEITGEIST +ZEITGEISTS +ZEK +ZEKS +ZELKOVA +ZELKOVAS +ZEMINDAR +ZEMINDARIES +ZEMINDARS +ZEMINDARY +ZEMSTVA +ZEMSTVO +ZEMSTVOS +ZENAIDA +ZENAIDAS +ZENANA +ZENANAS +ZENITH +ZENITHAL +ZENITHS +ZEOLITE +ZEOLITES +ZEOLITIC +ZEP +ZEPHYR +ZEPHYRS +ZEPPELIN +ZEPPELINS +ZEPPOLE +ZEPPOLES +ZEPPOLI +ZEPS +ZEPTOSECOND +ZEPTOSECONDS +ZERK +ZERKS +ZERO +ZEROED +ZEROES +ZEROING +ZEROS +ZEROTH +ZEST +ZESTED +ZESTER +ZESTERS +ZESTFUL +ZESTFULLY +ZESTFULNESS +ZESTFULNESSES +ZESTIER +ZESTIEST +ZESTILY +ZESTING +ZESTLESS +ZESTS +ZESTY +ZETA +ZETAS +ZETTABYTE +ZETTABYTES +ZEUGMA +ZEUGMAS +ZEUGMATIC +ZIBELINE +ZIBELINES +ZIBELLINE +ZIBELLINES +ZIBET +ZIBETH +ZIBETHS +ZIBETS +ZIDOVUDINE +ZIDOVUDINES +ZIG +ZIGGED +ZIGGING +ZIGGURAT +ZIGGURATS +ZIGS +ZIGZAG +ZIGZAGGED +ZIGZAGGER +ZIGZAGGERS +ZIGZAGGING +ZIGZAGGY +ZIGZAGS +ZIKKURAT +ZIKKURATS +ZIKURAT +ZIKURATS +ZILCH +ZILCHES +ZILL +ZILLAH +ZILLAHS +ZILLION +ZILLIONAIRE +ZILLIONAIRES +ZILLIONS +ZILLIONTH +ZILLS +ZIN +ZINC +ZINCATE +ZINCATES +ZINCED +ZINCIC +ZINCIFIED +ZINCIFIES +ZINCIFY +ZINCIFYING +ZINCING +ZINCITE +ZINCITES +ZINCKED +ZINCKING +ZINCKY +ZINCOID +ZINCOUS +ZINCS +ZINCY +ZINE +ZINEB +ZINEBS +ZINES +ZINFANDEL +ZINFANDELS +ZING +ZINGANI +ZINGANO +ZINGARA +ZINGARE +ZINGARI +ZINGARO +ZINGED +ZINGER +ZINGERS +ZINGIER +ZINGIEST +ZINGING +ZINGS +ZINGY +ZINKENITE +ZINKENITES +ZINKIFIED +ZINKIFIES +ZINKIFY +ZINKIFYING +ZINKY +ZINNIA +ZINNIAS +ZINS +ZIP +ZIPLESS +ZIPLOCK +ZIPPED +ZIPPER +ZIPPERED +ZIPPERING +ZIPPERS +ZIPPIER +ZIPPIEST +ZIPPING +ZIPPY +ZIPS +ZIRAM +ZIRAMS +ZIRCALOY +ZIRCALOYS +ZIRCON +ZIRCONIA +ZIRCONIAS +ZIRCONIC +ZIRCONIUM +ZIRCONIUMS +ZIRCONS +ZIT +ZITHER +ZITHERIST +ZITHERISTS +ZITHERN +ZITHERNS +ZITHERS +ZITI +ZITIS +ZITS +ZIZIT +ZIZITH +ZIZZLE +ZIZZLED +ZIZZLES +ZIZZLING +ZLOTE +ZLOTIES +ZLOTY +ZLOTYCH +ZLOTYS +ZOA +ZOANTHARIAN +ZOANTHARIANS +ZOARIA +ZOARIAL +ZOARIUM +ZOCALO +ZOCALOS +ZODIAC +ZODIACAL +ZODIACS +ZOEA +ZOEAE +ZOEAL +ZOEAS +ZOECIA +ZOECIUM +ZOFTIG +ZOIC +ZOISITE +ZOISITES +ZOMBI +ZOMBIE +ZOMBIELIKE +ZOMBIES +ZOMBIFICATION +ZOMBIFICATIONS +ZOMBIFIED +ZOMBIFIES +ZOMBIFY +ZOMBIFYING +ZOMBIISM +ZOMBIISMS +ZOMBIS +ZONA +ZONAE +ZONAL +ZONALLY +ZONARY +ZONATE +ZONATED +ZONATION +ZONATIONS +ZONE +ZONED +ZONELESS +ZONER +ZONERS +ZONES +ZONETIME +ZONETIMES +ZONING +ZONK +ZONKED +ZONKING +ZONKS +ZONULA +ZONULAE +ZONULAR +ZONULAS +ZONULE +ZONULES +ZOO +ZOOCHORE +ZOOCHORES +ZOOECIA +ZOOECIUM +ZOOEY +ZOOGAMETE +ZOOGAMETES +ZOOGENIC +ZOOGENIES +ZOOGENOUS +ZOOGENY +ZOOGEOGRAPHER +ZOOGEOGRAPHERS +ZOOGEOGRAPHIC +ZOOGEOGRAPHICAL +ZOOGEOGRAPHIES +ZOOGEOGRAPHY +ZOOGLEA +ZOOGLEAE +ZOOGLEAL +ZOOGLEAS +ZOOGLOEA +ZOOGLOEAE +ZOOGLOEAL +ZOOGLOEAS +ZOOGLOEIC +ZOOGRAPHIES +ZOOGRAPHY +ZOOID +ZOOIDAL +ZOOIDS +ZOOIER +ZOOIEST +ZOOKEEPER +ZOOKEEPERS +ZOOKS +ZOOLATER +ZOOLATERS +ZOOLATRIES +ZOOLATRY +ZOOLOGIC +ZOOLOGICAL +ZOOLOGICALLY +ZOOLOGIES +ZOOLOGIST +ZOOLOGISTS +ZOOLOGY +ZOOM +ZOOMANIA +ZOOMANIAS +ZOOMED +ZOOMETRIC +ZOOMETRIES +ZOOMETRY +ZOOMING +ZOOMORPH +ZOOMORPHIC +ZOOMORPHS +ZOOMS +ZOON +ZOONAL +ZOONED +ZOONING +ZOONOSES +ZOONOSIS +ZOONOTIC +ZOONS +ZOOPHILE +ZOOPHILES +ZOOPHILIA +ZOOPHILIAS +ZOOPHILIC +ZOOPHILIES +ZOOPHILOUS +ZOOPHILY +ZOOPHOBE +ZOOPHOBES +ZOOPHOBIA +ZOOPHOBIAS +ZOOPHYTE +ZOOPHYTES +ZOOPHYTIC +ZOOPLANKTER +ZOOPLANKTERS +ZOOPLANKTON +ZOOPLANKTONIC +ZOOPLANKTONS +ZOOS +ZOOSPERM +ZOOSPERMS +ZOOSPORANGIA +ZOOSPORANGIUM +ZOOSPORE +ZOOSPORES +ZOOSPORIC +ZOOSTEROL +ZOOSTEROLS +ZOOTECHNICAL +ZOOTECHNICS +ZOOTIER +ZOOTIEST +ZOOTOMIC +ZOOTOMIES +ZOOTOMIST +ZOOTOMISTS +ZOOTOMY +ZOOTY +ZOOXANTHELLA +ZOOXANTHELLAE +ZORI +ZORIL +ZORILLA +ZORILLAS +ZORILLE +ZORILLES +ZORILLO +ZORILLOS +ZORILS +ZORIS +ZOSTER +ZOSTERS +ZOUAVE +ZOUAVES +ZOUK +ZOUKS +ZOUNDS +ZOWIE +ZOYSIA +ZOYSIAS +ZUCCHETTI +ZUCCHETTO +ZUCCHETTOS +ZUCCHINI +ZUCCHINIS +ZUGZWANG +ZUGZWANGS +ZUZ +ZUZIM +ZWIEBACK +ZWIEBACKS +ZWITTERION +ZWITTERIONIC +ZWITTERIONS +ZYDECO +ZYDECOS +ZYGAPOPHYSES +ZYGAPOPHYSIS +ZYGODACTYL +ZYGODACTYLOUS +ZYGOID +ZYGOMA +ZYGOMAS +ZYGOMATA +ZYGOMATIC +ZYGOMATICS +ZYGOMORPHIC +ZYGOMORPHIES +ZYGOMORPHY +ZYGOSE +ZYGOSES +ZYGOSIS +ZYGOSITIES +ZYGOSITY +ZYGOSPORE +ZYGOSPORES +ZYGOTE +ZYGOTENE +ZYGOTENES +ZYGOTES +ZYGOTIC +ZYMASE +ZYMASES +ZYME +ZYMES +ZYMOGEN +ZYMOGENE +ZYMOGENES +ZYMOGENIC +ZYMOGENS +ZYMOGRAM +ZYMOGRAMS +ZYMOLOGIC +ZYMOLOGIES +ZYMOLOGY +ZYMOLYSES +ZYMOLYSIS +ZYMOLYTIC +ZYMOMETER +ZYMOMETERS +ZYMOSAN +ZYMOSANS +ZYMOSES +ZYMOSIS +ZYMOTIC +ZYMURGIES +ZYMURGY +ZYZZYVA +ZYZZYVAS +ZZZ \ No newline at end of file From d66d9fb2c0eb3d6e96c3f106c7721f0ce233af28 Mon Sep 17 00:00:00 2001 From: eugenp Date: Sat, 17 Dec 2016 15:24:36 +0200 Subject: [PATCH 348/399] maven fix and small formatting work --- core-java/pom.xml | 604 +++++++++--------- .../java/com/baeldung/algorithms/City.java | 22 +- .../algorithms/SimulatedAnnealing.java | 65 +- .../java/com/baeldung/algorithms/Travel.java | 82 +-- .../algorithms/SimulatedAnnealingTest.java | 8 +- .../EncoderDecoderUnitTest.java | 10 +- .../java8/Java8CollectionCleanupUnitTest.java | 12 +- .../baeldung/java8/JavaFileSizeUnitTest.java | 14 +- .../baeldung/java8/optional/OptionalTest.java | 8 +- .../java8/unix/grep/GrepWithUnix4JTest.java | 63 +- .../JoinSplitCollectionsUnitTest.java | 42 +- 11 files changed, 449 insertions(+), 481 deletions(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index 2f3bf4bb39..0cafeae16a 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -1,307 +1,313 @@ - 4.0.0 - com.baeldung - core-java - 0.1.0-SNAPSHOT - jar + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + core-java + 0.1.0-SNAPSHOT + jar - core-java + core-java - + - - - net.sourceforge.collections - collections-generic - ${collections-generic.version} - - - com.google.guava - guava - ${guava.version} - - - - org.apache.commons - commons-collections4 - ${commons-collections4.version} - - - - commons-io - commons-io - ${commons-io.version} - - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - - org.apache.commons - commons-math3 - ${commons-math3.version} - - - - org.bouncycastle - bcprov-jdk15on - ${bouncycastle.version} - - - - org.unix4j - unix4j-command - 0.4 - - - - com.googlecode.grep4j - grep4j - 1.8.7 + + + net.sourceforge.collections + collections-generic + ${collections-generic.version} + + + com.google.guava + guava + ${guava.version} - - + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - + + commons-io + commons-io + ${commons-io.version} + - + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - - - org.projectlombok - lombok - 1.16.12 - provided - + + org.apache.commons + commons-math3 + ${commons-math3.version} + - + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.version} + - - junit - junit - ${junit.version} - test - + + org.unix4j + unix4j-command + 0.4 + - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - + + com.googlecode.grep4j + grep4j + 1.8.7 + + - - org.assertj - assertj-core - ${assertj.version} - test - + - - org.testng - testng - ${testng.version} - test - + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + - - org.mockito - mockito-core - ${mockito.version} - test - + - - commons-codec - commons-codec - ${commons-codec.version} - + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + + + org.projectlombok + lombok + 1.16.12 + provided + - + - - core-java - - - src/main/resources - true - - + + org.hamcrest + hamcrest-all + 1.3 + test + - + + junit + junit + ${junit.version} + test + - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - **/*IntegrationTest.java + + org.assertj + assertj-core + ${assertj.version} + test + + + + org.testng + testng + ${testng.version} + test + + + + org.mockito + mockito-core + ${mockito.version} + test + + + + commons-codec + commons-codec + ${commons-codec.version} + + + + + + core-java + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java **/*LongRunningUnitTest.java **/*ManualTest.java - - - +
+
+
- - org.apache.maven.plugins - maven-dependency-plugin - - - copy-dependencies - prepare-package - - copy-dependencies - - - ${project.build.directory}/libs - - - - + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + prepare-package + + copy-dependencies + + + ${project.build.directory}/libs + + + + - - org.apache.maven.plugins - maven-jar-plugin - - - - true - libs/ - org.baeldung.executable.ExecutableMavenJar - - - - + + org.apache.maven.plugins + maven-jar-plugin + + + + true + libs/ + org.baeldung.executable.ExecutableMavenJar + + + + - - org.apache.maven.plugins - maven-assembly-plugin - - - package - - single - - - - - org.baeldung.executable.ExecutableMavenJar - - - - jar-with-dependencies - - - - - + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + + + org.baeldung.executable.ExecutableMavenJar + + + + jar-with-dependencies + + + + + - - org.apache.maven.plugins - maven-shade-plugin - - - - shade - - - true - - - org.baeldung.executable.ExecutableMavenJar - - - - - - + + org.apache.maven.plugins + maven-shade-plugin + + + + shade + + + true + + + org.baeldung.executable.ExecutableMavenJar + + + + + + - - com.jolira - onejar-maven-plugin - - - - org.baeldung.executable.ExecutableMavenJar - true - ${project.build.finalName}-onejar.${project.packaging} - - - one-jar - - - - + + com.jolira + onejar-maven-plugin + + + + org.baeldung.executable.ExecutableMavenJar + true + ${project.build.finalName}-onejar.${project.packaging} + + + one-jar + + + + - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - spring-boot - org.baeldung.executable.ExecutableMavenJar - - - - - - + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + spring-boot + org.baeldung.executable.ExecutableMavenJar + + + + - - - + + + + + integration @@ -336,35 +342,35 @@ - - - 2.8.5 + + + 2.8.5 - - 1.7.21 - 1.1.7 + + 1.7.21 + 1.1.7 - - 19.0 - 3.5 - 1.55 - 1.10 - 3.6.1 - 2.5 - 4.1 - 4.01 + + 19.0 + 3.5 + 1.55 + 1.10 + 3.6.1 + 2.5 + 4.1 + 4.01 - - 1.3 - 4.12 - 1.10.19 - 6.10 - 3.6.1 + + 1.3 + 4.12 + 1.10.19 + 6.10 + 3.6.1 - - 3.6.0 - 2.19.1 + + 3.6.0 + 2.19.1 - + \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/algorithms/City.java b/core-java/src/main/java/com/baeldung/algorithms/City.java index 1a96dc759d..32335cda80 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/City.java +++ b/core-java/src/main/java/com/baeldung/algorithms/City.java @@ -5,18 +5,18 @@ import lombok.Data; @Data public class City { - private int x; - private int y; + private int x; + private int y; - public City() { - this.x = (int) (Math.random() * 500); - this.y = (int) (Math.random() * 500); - } + public City() { + this.x = (int) (Math.random() * 500); + this.y = (int) (Math.random() * 500); + } - public double distanceToCity(City city) { - int x = Math.abs(getX() - city.getX()); - int y = Math.abs(getY() - city.getY()); - return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); - } + public double distanceToCity(City city) { + int x = Math.abs(getX() - city.getX()); + int y = Math.abs(getY() - city.getY()); + return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + } } diff --git a/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java b/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java index b62e861399..3ccba9b3e9 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java +++ b/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java @@ -2,40 +2,39 @@ package com.baeldung.algorithms; public class SimulatedAnnealing { - private static Travel travel = new Travel(10); - - public static double simulateAnnealing(double startingTemperature, int numberOfIterations, double coolingRate) { - System.out.println("Starting SA with temperature: " + startingTemperature + ", # of iterations: " - + numberOfIterations + " and colling rate: " + coolingRate); - double t = startingTemperature; - travel.generateInitialTravel(); - double bestDistance = travel.getDistance(); - System.out.println("Initial distance of travel: " + bestDistance); - Travel bestSolution = travel; - Travel currentSolution = bestSolution; + private static Travel travel = new Travel(10); - for (int i = 0; i < numberOfIterations; i++) { - if (t > 0.1) { - currentSolution.swapCities(); - double currentDistance = currentSolution.getDistance(); - if (currentDistance == 0) - continue; - if (currentDistance < bestDistance) { - bestDistance = currentDistance; - } else if (Math.exp((currentDistance - bestDistance) / t) < Math.random()) { - currentSolution.revertSwap(); - } - t *= coolingRate; - } - if (i % 100 == 0) { - System.out.println("Iteration #" + i); - } - } - return bestDistance; - } + public static double simulateAnnealing(double startingTemperature, int numberOfIterations, double coolingRate) { + System.out.println("Starting SA with temperature: " + startingTemperature + ", # of iterations: " + numberOfIterations + " and colling rate: " + coolingRate); + double t = startingTemperature; + travel.generateInitialTravel(); + double bestDistance = travel.getDistance(); + System.out.println("Initial distance of travel: " + bestDistance); + Travel bestSolution = travel; + Travel currentSolution = bestSolution; - public static void main(String[] args) { - System.out.println("Optimized distance for travel: " + simulateAnnealing(10, 10000, 0.9)); - } + for (int i = 0; i < numberOfIterations; i++) { + if (t > 0.1) { + currentSolution.swapCities(); + double currentDistance = currentSolution.getDistance(); + if (currentDistance == 0) + continue; + if (currentDistance < bestDistance) { + bestDistance = currentDistance; + } else if (Math.exp((currentDistance - bestDistance) / t) < Math.random()) { + currentSolution.revertSwap(); + } + t *= coolingRate; + } + if (i % 100 == 0) { + System.out.println("Iteration #" + i); + } + } + return bestDistance; + } + + public static void main(String[] args) { + System.out.println("Optimized distance for travel: " + simulateAnnealing(10, 10000, 0.9)); + } } diff --git a/core-java/src/main/java/com/baeldung/algorithms/Travel.java b/core-java/src/main/java/com/baeldung/algorithms/Travel.java index 9921b2516e..6e6059b3eb 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/Travel.java +++ b/core-java/src/main/java/com/baeldung/algorithms/Travel.java @@ -8,53 +8,53 @@ import lombok.Data; @Data public class Travel { - private ArrayList travel = new ArrayList<>(); - private ArrayList previousTravel = new ArrayList<>(); + private ArrayList travel = new ArrayList<>(); + private ArrayList previousTravel = new ArrayList<>(); - public Travel(int numberOfCities) { - for (int i = 0; i < numberOfCities; i++) { - travel.add(new City()); - } - } + public Travel(int numberOfCities) { + for (int i = 0; i < numberOfCities; i++) { + travel.add(new City()); + } + } - public void generateInitialTravel() { - if (travel.isEmpty()) - new Travel(10); - Collections.shuffle(travel); - } + public void generateInitialTravel() { + if (travel.isEmpty()) + new Travel(10); + Collections.shuffle(travel); + } - public void swapCities() { - int a = generateRandomIndex(); - int b = generateRandomIndex(); - previousTravel = travel; - travel.set(a, travel.get(b)); - } + public void swapCities() { + int a = generateRandomIndex(); + int b = generateRandomIndex(); + previousTravel = travel; + travel.set(a, travel.get(b)); + } - public void revertSwap() { - travel = previousTravel; - } + public void revertSwap() { + travel = previousTravel; + } - private int generateRandomIndex() { - return (int) (Math.random() * travel.size()); - } + private int generateRandomIndex() { + return (int) (Math.random() * travel.size()); + } - public City getCity(int index) { - return travel.get(index); - } + public City getCity(int index) { + return travel.get(index); + } - public int getDistance() { - int distance = 0; - for (int index = 0; index < travel.size(); index++) { - City starting = getCity(index); - City destination; - if (index + 1 < travel.size()) { - destination = getCity(index + 1); - } else { - destination = getCity(0); - } - distance += starting.distanceToCity(destination); - } - return distance; - } + public int getDistance() { + int distance = 0; + for (int index = 0; index < travel.size(); index++) { + City starting = getCity(index); + City destination; + if (index + 1 < travel.size()) { + destination = getCity(index + 1); + } else { + destination = getCity(0); + } + distance += starting.distanceToCity(destination); + } + return distance; + } } diff --git a/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java b/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java index 06b599dede..3fe3650041 100644 --- a/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java +++ b/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java @@ -5,9 +5,9 @@ import org.junit.Test; public class SimulatedAnnealingTest { - @Test - public void testSimulateAnnealing() { - Assert.assertTrue(SimulatedAnnealing.simulateAnnealing(10, 1000, 0.9) > 0); - } + @Test + public void testSimulateAnnealing() { + Assert.assertTrue(SimulatedAnnealing.simulateAnnealing(10, 1000, 0.9) > 0); + } } diff --git a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java index 08f4e0b4bd..da615eef6f 100644 --- a/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java +++ b/core-java/src/test/java/com/baeldung/encoderdecoder/EncoderDecoderUnitTest.java @@ -22,7 +22,6 @@ public class EncoderDecoderUnitTest { private static final String testUrl = "http://www.baeldung.com?key1=value+1&key2=value%40%21%242&key3=value%253"; private static final String testUrlWithPath = "http://www.baeldung.com/path+1?key1=value+1&key2=value%40%21%242&key3=value%253"; - private String encodeValue(String value) { String encoded = null; try { @@ -59,9 +58,7 @@ public class EncoderDecoderUnitTest { requestParams.put("key2", "value@!$2"); requestParams.put("key3", "value%3"); - String encodedURL = requestParams.keySet().stream() - .map(key -> key + "=" + encodeValue(requestParams.get(key))) - .collect(joining("&", "http://www.baeldung.com?", "")); + String encodedURL = requestParams.keySet().stream().map(key -> key + "=" + encodeValue(requestParams.get(key))).collect(joining("&", "http://www.baeldung.com?", "")); Assert.assertThat(testUrl, is(encodedURL)); } @@ -103,12 +100,9 @@ public class EncoderDecoderUnitTest { String path = "path+1"; - String encodedURL = requestParams.keySet().stream() - .map(key -> key + "=" + encodeValue(requestParams.get(key))) - .collect(joining("&", "http://www.baeldung.com/" + encodePath(path) + "?", "")); + String encodedURL = requestParams.keySet().stream().map(key -> key + "=" + encodeValue(requestParams.get(key))).collect(joining("&", "http://www.baeldung.com/" + encodePath(path) + "?", "")); Assert.assertThat(testUrlWithPath, is(encodedURL)); } - } diff --git a/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java b/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java index 4b900c31a7..ef7b642f89 100644 --- a/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java @@ -17,9 +17,7 @@ public class Java8CollectionCleanupUnitTest { @Test public void givenListContainsNulls_whenFilteringParallel_thenCorrect() { final List list = Lists.newArrayList(null, 1, 2, null, 3, null); - final List listWithoutNulls = list.parallelStream() - .filter(Objects::nonNull) - .collect(Collectors.toList()); + final List listWithoutNulls = list.parallelStream().filter(Objects::nonNull).collect(Collectors.toList()); assertThat(listWithoutNulls, hasSize(3)); } @@ -27,9 +25,7 @@ public class Java8CollectionCleanupUnitTest { @Test public void givenListContainsNulls_whenFilteringSerial_thenCorrect() { final List list = Lists.newArrayList(null, 1, 2, null, 3, null); - final List listWithoutNulls = list.stream() - .filter(Objects::nonNull) - .collect(Collectors.toList()); + final List listWithoutNulls = list.stream().filter(Objects::nonNull).collect(Collectors.toList()); assertThat(listWithoutNulls, hasSize(3)); } @@ -45,9 +41,7 @@ public class Java8CollectionCleanupUnitTest { @Test public void givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() { final List listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3); - final List listWithoutDuplicates = listWithDuplicates.parallelStream() - .distinct() - .collect(Collectors.toList()); + final List listWithoutDuplicates = listWithDuplicates.parallelStream().distinct().collect(Collectors.toList()); assertThat(listWithoutDuplicates, hasSize(3)); } diff --git a/core-java/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java b/core-java/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java index c4920c51f6..c640932d6f 100644 --- a/core-java/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java @@ -18,13 +18,13 @@ public class JavaFileSizeUnitTest { @Before public void init() { final String separator = File.separator; - filePath = String.join(separator, new String[] {"src", "test", "resources", "testFolder", "sample_file_1.in"}); + filePath = String.join(separator, new String[] { "src", "test", "resources", "testFolder", "sample_file_1.in" }); } @Test public void whenGetFileSize_thenCorrect() { final File file = new File(filePath); - + final long size = getFileSize(file); assertEquals(EXPECTED_FILE_SIZE_IN_BYTES, size); @@ -34,16 +34,16 @@ public class JavaFileSizeUnitTest { public void whenGetFileSizeUsingNioApi_thenCorrect() throws IOException { final Path path = Paths.get(this.filePath); final FileChannel fileChannel = FileChannel.open(path); - + final long fileSize = fileChannel.size(); - + assertEquals(EXPECTED_FILE_SIZE_IN_BYTES, fileSize); } @Test public void whenGetFileSizeUsingApacheCommonsIO_thenCorrect() { final File file = new File(filePath); - + final long size = FileUtils.sizeOf(file); assertEquals(EXPECTED_FILE_SIZE_IN_BYTES, size); @@ -52,9 +52,9 @@ public class JavaFileSizeUnitTest { @Test public void whenGetReadableFileSize_thenCorrect() { final File file = new File(filePath); - + final long size = getFileSize(file); - + assertEquals(EXPECTED_FILE_SIZE_IN_BYTES + " bytes", FileUtils.byteCountToDisplaySize(size)); } diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index c0538931b0..bf2078186c 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -93,6 +93,7 @@ public class OptionalTest { boolean is2017 = yearOptional.filter(y -> y == 2017).isPresent(); assertFalse(is2017); } + @Test public void whenFiltersWithoutOptional_thenCorrect() { assertTrue(priceIsInRange1(new Modem(10.0))); @@ -121,12 +122,9 @@ public class OptionalTest { } public boolean priceIsInRange2(Modem modem2) { - return Optional.ofNullable(modem2) - .map(Modem::getPrice) - .filter(p -> p >= 10) - .filter(p -> p <= 15) - .isPresent(); + return Optional.ofNullable(modem2).map(Modem::getPrice).filter(p -> p >= 10).filter(p -> p <= 15).isPresent(); } + // Transforming Value With map() @Test public void givenOptional_whenMapWorks_thenCorrect() { diff --git a/core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java b/core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java index d6efdfdf5c..79ba2e0b17 100644 --- a/core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java +++ b/core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java @@ -13,46 +13,43 @@ import static org.unix4j.unix.Grep.*; import static org.unix4j.unix.cut.CutOption.*; public class GrepWithUnix4JTest { - - private File fileToGrep; + + private File fileToGrep; @Before public void init() { final String separator = File.separator; - final String filePath = String.join(separator, new String[] {"src", "test", "resources", "dictionary.in"}); + final String filePath = String.join(separator, new String[] { "src", "test", "resources", "dictionary.in" }); fileToGrep = new File(filePath); } - - @Test - public void whenGrepWithSimpleString_thenCorrect() { - int expectedLineCount = 4; - - //grep "NINETEEN" dictionary.txt - List lines = Unix4j.grep("NINETEEN", fileToGrep).toLineList(); - - assertEquals(expectedLineCount, lines.size()); - } - @Test - public void whenInverseGrepWithSimpleString_thenCorrect() { - int expectedLineCount = 178687; - - //grep -v "NINETEEN" dictionary.txt - List lines = grep(Options.v, "NINETEEN", fileToGrep). - toLineList(); - - assertEquals(expectedLineCount, lines.size()); - } + @Test + public void whenGrepWithSimpleString_thenCorrect() { + int expectedLineCount = 4; + // grep "NINETEEN" dictionary.txt + List lines = Unix4j.grep("NINETEEN", fileToGrep).toLineList(); - @Test - public void whenGrepWithRegex_thenCorrect() { - int expectedLineCount = 151; - - //grep -c ".*?NINE.*?" dictionary.txt - String patternCount = grep(Options.c, ".*?NINE.*?", fileToGrep). - cut(fields, ":", 1).toStringResult(); - - assertEquals(expectedLineCount, Integer.parseInt(patternCount)); - } + assertEquals(expectedLineCount, lines.size()); + } + + @Test + public void whenInverseGrepWithSimpleString_thenCorrect() { + int expectedLineCount = 178687; + + // grep -v "NINETEEN" dictionary.txt + List lines = grep(Options.v, "NINETEEN", fileToGrep).toLineList(); + + assertEquals(expectedLineCount, lines.size()); + } + + @Test + public void whenGrepWithRegex_thenCorrect() { + int expectedLineCount = 151; + + // grep -c ".*?NINE.*?" dictionary.txt + String patternCount = grep(Options.c, ".*?NINE.*?", fileToGrep).cut(fields, ":", 1).toStringResult(); + + assertEquals(expectedLineCount, Integer.parseInt(patternCount)); + } } diff --git a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java index 16b3509925..c594529f41 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/JoinSplitCollectionsUnitTest.java @@ -15,8 +15,7 @@ public class JoinSplitCollectionsUnitTest { public void whenJoiningTwoArrays_thenJoined() { String[] animals1 = new String[] { "Dog", "Cat" }; String[] animals2 = new String[] { "Bird", "Cow" }; - String[] result = Stream.concat( - Arrays.stream(animals1), Arrays.stream(animals2)).toArray(String[]::new); + String[] result = Stream.concat(Arrays.stream(animals1), Arrays.stream(animals2)).toArray(String[]::new); assertArrayEquals(result, new String[] { "Dog", "Cat", "Bird", "Cow" }); } @@ -25,9 +24,7 @@ public class JoinSplitCollectionsUnitTest { public void whenJoiningTwoCollections_thenJoined() { Collection collection1 = Arrays.asList("Dog", "Cat"); Collection collection2 = Arrays.asList("Bird", "Cow", "Moose"); - Collection result = Stream.concat( - collection1.stream(), collection2.stream()) - .collect(Collectors.toList()); + Collection result = Stream.concat(collection1.stream(), collection2.stream()).collect(Collectors.toList()); assertTrue(result.equals(Arrays.asList("Dog", "Cat", "Bird", "Cow", "Moose"))); } @@ -36,10 +33,7 @@ public class JoinSplitCollectionsUnitTest { public void whenJoiningTwoCollectionsWithFilter_thenJoined() { Collection collection1 = Arrays.asList("Dog", "Cat"); Collection collection2 = Arrays.asList("Bird", "Cow", "Moose"); - Collection result = Stream.concat( - collection1.stream(), collection2.stream()) - .filter(e -> e.length() == 3) - .collect(Collectors.toList()); + Collection result = Stream.concat(collection1.stream(), collection2.stream()).filter(e -> e.length() == 3).collect(Collectors.toList()); assertTrue(result.equals(Arrays.asList("Dog", "Cat", "Cow"))); } @@ -67,9 +61,7 @@ public class JoinSplitCollectionsUnitTest { animals.put(2, "Cat"); animals.put(3, "Cow"); - String result = animals.entrySet().stream() - .map(entry -> entry.getKey() + " = " + entry.getValue()) - .collect(Collectors.joining(", ")); + String result = animals.entrySet().stream().map(entry -> entry.getKey() + " = " + entry.getValue()).collect(Collectors.joining(", ")); assertEquals(result, "1 = Dog, 2 = Cat, 3 = Cow"); } @@ -80,10 +72,7 @@ public class JoinSplitCollectionsUnitTest { nested.add(Arrays.asList("Dog", "Cat")); nested.add(Arrays.asList("Cow", "Pig")); - String result = nested.stream().map( - nextList -> nextList.stream() - .collect(Collectors.joining("-"))) - .collect(Collectors.joining("; ")); + String result = nested.stream().map(nextList -> nextList.stream().collect(Collectors.joining("-"))).collect(Collectors.joining("; ")); assertEquals(result, "Dog-Cat; Cow-Pig"); } @@ -91,17 +80,14 @@ public class JoinSplitCollectionsUnitTest { @Test public void whenConvertCollectionToStringAndSkipNull_thenConverted() { Collection animals = Arrays.asList("Dog", "Cat", null, "Moose"); - String result = animals.stream() - .filter(Objects::nonNull) - .collect(Collectors.joining(", ")); + String result = animals.stream().filter(Objects::nonNull).collect(Collectors.joining(", ")); assertEquals(result, "Dog, Cat, Moose"); } @Test public void whenSplitCollectionHalf_thenConverted() { - Collection animals = Arrays.asList( - "Dog", "Cat", "Cow", "Bird", "Moose", "Pig"); + Collection animals = Arrays.asList("Dog", "Cat", "Cow", "Bird", "Moose", "Pig"); Collection result1 = new ArrayList<>(); Collection result2 = new ArrayList<>(); AtomicInteger count = new AtomicInteger(); @@ -122,9 +108,8 @@ public class JoinSplitCollectionsUnitTest { @Test public void whenSplitArrayByWordLength_thenConverted() { - String[] animals = new String[] { "Dog", "Cat", "Bird", "Cow", "Pig", "Moose"}; - Map> result = Arrays.stream(animals) - .collect(Collectors.groupingBy(String::length)); + String[] animals = new String[] { "Dog", "Cat", "Bird", "Cow", "Pig", "Moose" }; + Map> result = Arrays.stream(animals).collect(Collectors.groupingBy(String::length)); assertTrue(result.get(3).equals(Arrays.asList("Dog", "Cat", "Cow", "Pig"))); assertTrue(result.get(4).equals(Arrays.asList("Bird"))); @@ -151,9 +136,7 @@ public class JoinSplitCollectionsUnitTest { public void whenConvertStringToMap_thenConverted() { String animals = "1 = Dog, 2 = Cat, 3 = Bird"; - Map result = Arrays.stream( - animals.split(", ")).map(next -> next.split(" = ")) - .collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); + Map result = Arrays.stream(animals.split(", ")).map(next -> next.split(" = ")).collect(Collectors.toMap(entry -> Integer.parseInt(entry[0]), entry -> entry[1])); assertEquals(result.get(1), "Dog"); assertEquals(result.get(2), "Cat"); @@ -164,10 +147,7 @@ public class JoinSplitCollectionsUnitTest { public void whenConvertCollectionToStringMultipleSeparators_thenConverted() { String animals = "Dog. , Cat, Bird. Cow"; - Collection result = Arrays.stream(animals.split("[,|.]")) - .map(String::trim) - .filter(next -> !next.isEmpty()) - .collect(Collectors.toList()); + Collection result = Arrays.stream(animals.split("[,|.]")).map(String::trim).filter(next -> !next.isEmpty()).collect(Collectors.toList()); assertTrue(result.equals(Arrays.asList("Dog", "Cat", "Bird", "Cow"))); } From a1fe0749c05693bfd582905cfa55189bb234583d Mon Sep 17 00:00:00 2001 From: Kevin Gilmore Date: Sat, 17 Dec 2016 08:12:32 -0600 Subject: [PATCH 349/399] BAEL-35: Added test methods using Apache Commons Collections4 --- .../CollectionsConcatenateUnitTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java index 0d913db1bd..d43075c925 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/CollectionsConcatenateUnitTest.java @@ -2,6 +2,9 @@ package org.baeldung.java.collections; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.IterableUtils; import org.junit.Assert; import org.junit.Test; @@ -107,4 +110,26 @@ public class CollectionsConcatenateUnitTest { } return list; } + + @Test + public void givenUsingApacheCommons_whenConcatenatingUsingUnion_thenCorrect() { + Collection collectionA = asList("S", "T"); + Collection collectionB = asList("U", "V"); + + Iterable combinedIterables = CollectionUtils.union(collectionA, collectionB); + Collection collectionCombined = Lists.newArrayList(combinedIterables); + + Assert.assertEquals(asList("S", "T", "U", "V"), collectionCombined); + } + + @Test + public void givenUsingApacheCommons_whenConcatenatingUsingChainedIterable_thenCorrect() { + Collection collectionA = asList("S", "T"); + Collection collectionB = asList("U", "V"); + + Iterable combinedIterables = IterableUtils.chainedIterable(collectionA, collectionB); + Collection collectionCombined = Lists.newArrayList(combinedIterables); + + Assert.assertEquals(asList("S", "T", "U", "V"), collectionCombined); + } } From 1b59823654adc781204ad0d62898cc8d60ea4441 Mon Sep 17 00:00:00 2001 From: Naoshadul Islam Date: Sun, 18 Dec 2016 14:15:07 +0600 Subject: [PATCH 350/399] Created README.md and added relevant articles (#901) * Added relevant articles * Added relevant articles * Added relevant articles * Created README.md and added relevant articles * Created README.md and added relevant articles * Added relevant articles * Added relevant articles * Created README.md and added relevant articles * Created README.md and added relevant articles * Created README.md and added relevant articles * Added relevant articles * Created README.md and added relevant articles * Added relevant articles * Added relevant articles * Update README.md * Added relevant articles * Added relevant articles * Added relevant articles * Update README.md * Added relevant articles * Update README.md * Created README.md and added relevant articles * Added relevant articles * Added relevant articles * Added relevant articles * Added relevant articles * Created README.md and added relevant articles * Update README.md --- apache-cxf/README.md | 2 ++ core-java-9/README.md | 3 +++ core-java/README.md | 2 ++ core-java/src/main/java/com/baeldung/README.md | 2 ++ core-java/src/main/java/com/baeldung/java/networking/README.md | 3 +++ core-java/src/test/java/com/baeldung/hexToAscii/README.md | 2 ++ core-java/src/test/java/com/baeldung/java/conversion/README.md | 2 ++ core-java/src/test/java/com/baeldung/java/nio2/README.md | 3 +++ junit5/README.md | 1 + log-mdc/README.md | 1 + patterns/README.md | 1 + pdf/README.md | 2 ++ spring-apache-camel/README.md | 1 + spring-cloud/README.md | 3 ++- spring-core/README.md | 2 +- spring-core/src/test/java/com/baeldung/beanfactory/README.md | 2 ++ spring-data-solr/README.md | 2 ++ spring-rest/README.md | 2 ++ spring-social-login/README.md | 2 ++ 19 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 apache-cxf/README.md create mode 100644 core-java/src/main/java/com/baeldung/README.md create mode 100644 core-java/src/test/java/com/baeldung/hexToAscii/README.md create mode 100644 core-java/src/test/java/com/baeldung/java/conversion/README.md create mode 100644 core-java/src/test/java/com/baeldung/java/nio2/README.md create mode 100644 pdf/README.md create mode 100644 spring-core/src/test/java/com/baeldung/beanfactory/README.md create mode 100644 spring-data-solr/README.md create mode 100644 spring-social-login/README.md diff --git a/apache-cxf/README.md b/apache-cxf/README.md new file mode 100644 index 0000000000..d8f1912070 --- /dev/null +++ b/apache-cxf/README.md @@ -0,0 +1,2 @@ +## Relevant Articles: +- [Introduction to Apache CXF Aegis Data Binding](http://www.baeldung.com/aegis-data-binding-in-apache-cxf) diff --git a/core-java-9/README.md b/core-java-9/README.md index fbe5f908aa..1b44239e40 100644 --- a/core-java-9/README.md +++ b/core-java-9/README.md @@ -3,3 +3,6 @@ ## Core Java 9 Examples [Java 9 New Features](http://www.baeldung.com/new-java-9) + +### Relevant Articles: +- [Java 9 Stream API Improvements](http://www.baeldung.com/java-9-stream-api) diff --git a/core-java/README.md b/core-java/README.md index 36dabbef41..9f9f6e596e 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -41,3 +41,5 @@ - [Introduction to Java Generics](http://www.baeldung.com/java-generics) - [Generate equals() and hashCode() with Eclipse](http://www.baeldung.com/java-eclipse-equals-and-hashcode) - [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java) +- [Sorting in Java](http://www.baeldung.com/java-sorting) +- [Getting Started with Java Properties](http://www.baeldung.com/java-properties) diff --git a/core-java/src/main/java/com/baeldung/README.md b/core-java/src/main/java/com/baeldung/README.md new file mode 100644 index 0000000000..51809b2882 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [SHA-256 Hashing in Java](http://www.baeldung.com/sha-256-hashing-java) diff --git a/core-java/src/main/java/com/baeldung/java/networking/README.md b/core-java/src/main/java/com/baeldung/java/networking/README.md index e92122f3bb..b9e827f085 100644 --- a/core-java/src/main/java/com/baeldung/java/networking/README.md +++ b/core-java/src/main/java/com/baeldung/java/networking/README.md @@ -1,2 +1,5 @@ ### Relevant Articles: - [A Guide To UDP In Java](http://www.baeldung.com/udp-in-java) +- [A Guide To HTTP Cookies In Java](http://www.baeldung.com/cookies-java) +- [A Guide to the Java URL](http://www.baeldung.com/java-url) +- [Working with Network Interfaces in Java](http://www.baeldung.com/java-network-interfaces) diff --git a/core-java/src/test/java/com/baeldung/hexToAscii/README.md b/core-java/src/test/java/com/baeldung/hexToAscii/README.md new file mode 100644 index 0000000000..c6d5826333 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/hexToAscii/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Convert Hex to ASCII in Java](http://www.baeldung.com/java-convert-hex-to-ascii) diff --git a/core-java/src/test/java/com/baeldung/java/conversion/README.md b/core-java/src/test/java/com/baeldung/java/conversion/README.md new file mode 100644 index 0000000000..7c81180249 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/conversion/README.md @@ -0,0 +1,2 @@ +Relevant Articles: +- [Java String Conversions](http://www.baeldung.com/java-string-conversions) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/README.md b/core-java/src/test/java/com/baeldung/java/nio2/README.md new file mode 100644 index 0000000000..65584f93b8 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/nio2/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: +- [Introduction to the Java NIO2 File API](http://www.baeldung.com/java-nio-2-file-api) +- [Java NIO2 Path API](http://www.baeldung.com/java-nio-2-path) diff --git a/junit5/README.md b/junit5/README.md index d4e30cd257..2ca5b08766 100644 --- a/junit5/README.md +++ b/junit5/README.md @@ -1,2 +1,3 @@ ### Relevant Articles: - [The Basics of JUnit 5 – A Preview](http://www.baeldung.com/junit-5-preview) +- [A Guide to JUnit 5](http://www.baeldung.com/junit-5) diff --git a/log-mdc/README.md b/log-mdc/README.md index c271cbc63a..e69507ae4d 100644 --- a/log-mdc/README.md +++ b/log-mdc/README.md @@ -1,5 +1,6 @@ ### Relevant Articles: - TBD +- [Improved Java Logging with Mapped Diagnostic Context (MDC)](http://www.baeldung.com/mdc-in-log4j-2-logback) ### References diff --git a/patterns/README.md b/patterns/README.md index e5d8334a3e..bcd54a64b1 100644 --- a/patterns/README.md +++ b/patterns/README.md @@ -1,2 +1,3 @@ ###Relevant Articles: - [A Guide to the Front Controller Pattern in Java](http://www.baeldung.com/java-front-controller-pattern) +- [Introduction to Intercepting Filter Pattern in Java](http://www.baeldung.com/intercepting-filter-pattern-in-java) diff --git a/pdf/README.md b/pdf/README.md new file mode 100644 index 0000000000..7160df4081 --- /dev/null +++ b/pdf/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [PDF Conversions in Java](http://www.baeldung.com/pdf-conversions-java) diff --git a/spring-apache-camel/README.md b/spring-apache-camel/README.md index 4015760f7d..ab7cf5c575 100644 --- a/spring-apache-camel/README.md +++ b/spring-apache-camel/README.md @@ -8,6 +8,7 @@ This article will demonstrate how to configure and use Apache Camel with Spring

Framework Versions:

diff --git a/spring-cloud/README.md b/spring-cloud/README.md index 60acdaeed5..2ffb3a86d0 100644 --- a/spring-cloud/README.md +++ b/spring-cloud/README.md @@ -16,4 +16,5 @@ - [Dockerizing a Spring Boot Application](http://www.baeldung.com/dockerizing-spring-boot-application) - [Introduction to Spring Cloud Rest Client with Netflix Ribbon](http://www.baeldung.com/spring-cloud-rest-client-with-netflix-ribbon) - +### Relevant Articles: +- [Introduction to Spring Cloud Rest Client with Netflix Ribbon](http://www.baeldung.com/spring-cloud-rest-client-with-netflix-ribbon) diff --git a/spring-core/README.md b/spring-core/README.md index f05ba9384f..30ba30f889 100644 --- a/spring-core/README.md +++ b/spring-core/README.md @@ -2,4 +2,4 @@ - [Wiring in Spring: @Autowired, @Resource and @Inject](http://www.baeldung.com/spring-annotations-resource-inject-autowire) - [Exploring the Spring BeanFactory API](http://www.baeldung.com/spring-beanfactory) - [How to use the Spring FactoryBean?](http://www.baeldung.com/spring-factorybean) - +- [Constructor Dependency Injection in Spring](http://www.baeldung.com/constructor-injection-in-spring) diff --git a/spring-core/src/test/java/com/baeldung/beanfactory/README.md b/spring-core/src/test/java/com/baeldung/beanfactory/README.md new file mode 100644 index 0000000000..cff20a184b --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/beanfactory/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Guide to the Spring BeanFactory](http://www.baeldung.com/spring-beanfactory) diff --git a/spring-data-solr/README.md b/spring-data-solr/README.md new file mode 100644 index 0000000000..fbce5280e3 --- /dev/null +++ b/spring-data-solr/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Introduction to Spring Data Solr](http://www.baeldung.com/spring-data-solr) diff --git a/spring-rest/README.md b/spring-rest/README.md index 671fa4996b..3331b9c69f 100644 --- a/spring-rest/README.md +++ b/spring-rest/README.md @@ -10,3 +10,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Returning Custom Status Codes from Spring Controllers](http://www.baeldung.com/spring-mvc-controller-custom-http-status-code) - [A Guide to OkHttp](http://www.baeldung.com/guide-to-okhttp) - [Binary Data Formats in a Spring REST API](http://www.baeldung.com/spring-rest-api-with-binary-data-formats) +- [Guide to UriComponentsBuilder in Spring](http://www.baeldung.com/spring-uricomponentsbuilder) +- [Introduction to FindBugs](http://www.baeldung.com/intro-to-findbugs) diff --git a/spring-social-login/README.md b/spring-social-login/README.md new file mode 100644 index 0000000000..f745a90acb --- /dev/null +++ b/spring-social-login/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [A Secondary Facebook Login with Spring Social](http://www.baeldung.com/facebook-authentication-with-spring-security-and-social) From 38eef2d1c080fbd887d4dca438a4b3709ad0defa Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sun, 18 Dec 2016 10:00:11 +0100 Subject: [PATCH 351/399] Refactor EJBClient.java --- .../src/main/java/com/baeldung/ejb/client/EJBClient.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java b/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java index 08286d580e..ebd6ef1b97 100755 --- a/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java +++ b/ejb/ejb-client/src/main/java/com/baeldung/ejb/client/EJBClient.java @@ -45,8 +45,7 @@ public class EJBClient { final String distinctName = ""; final String beanName = "HelloWorld"; final String viewClassName = HelloWorld.class.getName(); - final String toLookup = "ejb:" + appName + "/" + moduleName - + "/" + distinctName + "/" + beanName + "!" + viewClassName; + final String toLookup = String.format("ejb:%s/%s/%s/%s!%s", appName, moduleName, distinctName, beanName, viewClassName); return (HelloWorld) context.lookup(toLookup); } From 64b7412a9afdc2ed646a9aab88fa84aeea84f6c2 Mon Sep 17 00:00:00 2001 From: Muhammed Almas Date: Sun, 18 Dec 2016 16:04:15 +0530 Subject: [PATCH 352/399] BAEL-282 - Grep in Java after code review (#903) * BAEL-242 Package refactoring after code review for article Grep in Java * BAEL-282 Updated readme file --- core-java/.gitignore | 4 +++- core-java/README.md | 1 + core-java/pom.xml | 9 ++++++--- .../{java8/unix => }/grep/GrepWithUnix4JTest.java | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) rename core-java/src/test/java/com/baeldung/{java8/unix => }/grep/GrepWithUnix4JTest.java (97%) diff --git a/core-java/.gitignore b/core-java/.gitignore index 6ecc6405c2..464f7e5e38 100644 --- a/core-java/.gitignore +++ b/core-java/.gitignore @@ -13,4 +13,6 @@ *.ear # Files generated by integration tests -*.txt \ No newline at end of file +*.txt +/bin/ +/temp diff --git a/core-java/README.md b/core-java/README.md index 9f9f6e596e..ef31a7c46e 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -43,3 +43,4 @@ - [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java) - [Sorting in Java](http://www.baeldung.com/java-sorting) - [Getting Started with Java Properties](http://www.baeldung.com/java-properties) +- [Grep in Java](http://www.baeldung.com/pattern-search-grep-in-java) \ No newline at end of file diff --git a/core-java/pom.xml b/core-java/pom.xml index 0cafeae16a..cd04d7c3e1 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -55,13 +55,13 @@ org.unix4j unix4j-command - 0.4 + ${unix4j.version} com.googlecode.grep4j grep4j - 1.8.7 + ${grep4j.version} @@ -100,7 +100,7 @@ org.projectlombok lombok - 1.16.12 + ${lombok.version} provided @@ -359,6 +359,9 @@ 2.5 4.1 4.01 + 0.4 + 1.8.7 + 1.16.12 1.3 diff --git a/core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java b/core-java/src/test/java/com/baeldung/grep/GrepWithUnix4JTest.java similarity index 97% rename from core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java rename to core-java/src/test/java/com/baeldung/grep/GrepWithUnix4JTest.java index 79ba2e0b17..628518a12f 100644 --- a/core-java/src/test/java/com/baeldung/java8/unix/grep/GrepWithUnix4JTest.java +++ b/core-java/src/test/java/com/baeldung/grep/GrepWithUnix4JTest.java @@ -1,4 +1,4 @@ -package com.baeldung.java8.unix.grep; +package com.baeldung.grep; import java.io.File; import java.util.List; From 5c8f44b2c6f55389033f837ba8d26047198490a9 Mon Sep 17 00:00:00 2001 From: Eugen Date: Sun, 18 Dec 2016 14:13:57 +0200 Subject: [PATCH 353/399] Update README.md --- core-java/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java/README.md b/core-java/README.md index ef31a7c46e..a17e01e8d2 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -43,4 +43,4 @@ - [A Guide To Java Regular Expressions API](http://www.baeldung.com/regular-expressions-java) - [Sorting in Java](http://www.baeldung.com/java-sorting) - [Getting Started with Java Properties](http://www.baeldung.com/java-properties) -- [Grep in Java](http://www.baeldung.com/pattern-search-grep-in-java) \ No newline at end of file +- [Grep in Java](http://www.baeldung.com/grep-in-java) From 73d82faf520c15f85b69a125d8f940b482591e0e Mon Sep 17 00:00:00 2001 From: eugenp Date: Sun, 18 Dec 2016 17:31:20 +0200 Subject: [PATCH 354/399] maven cleanup work --- core-java/pom.xml | 1 + mockito/pom.xml | 3 +++ .../data-flow-shell/pom.xml | 19 ------------------- 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index cd04d7c3e1..6979d980b7 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -193,6 +193,7 @@ **/*LongRunningUnitTest.java **/*ManualTest.java + true
diff --git a/mockito/pom.xml b/mockito/pom.xml index 83005668f3..dc5797e78a 100644 --- a/mockito/pom.xml +++ b/mockito/pom.xml @@ -94,6 +94,9 @@ org.apache.maven.plugins maven-surefire-plugin ${maven-surefire-plugin.version} + + true + diff --git a/spring-cloud-data-flow/data-flow-shell/pom.xml b/spring-cloud-data-flow/data-flow-shell/pom.xml index 6711edcb42..55fa995052 100644 --- a/spring-cloud-data-flow/data-flow-shell/pom.xml +++ b/spring-cloud-data-flow/data-flow-shell/pom.xml @@ -77,23 +77,4 @@ - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - From bfb062d57f46f7a6ce67b5bcdfcb0075422bdc41 Mon Sep 17 00:00:00 2001 From: eugenp Date: Sun, 18 Dec 2016 17:35:41 +0200 Subject: [PATCH 355/399] maven cleanup work --- redis/pom.xml | 22 ++++++++++++++----- .../data-flow-server/pom.xml | 19 ---------------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/redis/pom.xml b/redis/pom.xml index 8443564ffd..e3affdd7ef 100644 --- a/redis/pom.xml +++ b/redis/pom.xml @@ -1,7 +1,6 @@ - + 4.0.0 com.baeldung @@ -44,16 +43,29 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + + true + + + UTF-8 - + 2.9.0 0.6 - + 4.12 diff --git a/spring-cloud-data-flow/data-flow-server/pom.xml b/spring-cloud-data-flow/data-flow-server/pom.xml index 05684008c6..b1f920c94e 100644 --- a/spring-cloud-data-flow/data-flow-server/pom.xml +++ b/spring-cloud-data-flow/data-flow-server/pom.xml @@ -112,23 +112,4 @@ - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - From b74df6163a4b45f4ec8ceebb9e0247b3f4925419 Mon Sep 17 00:00:00 2001 From: Daniele Demichelis Date: Sun, 18 Dec 2016 16:36:34 +0100 Subject: [PATCH 356/399] Pull Request for "A Guide to Rolling File Appenders" article. (#876) * First test with log4j rolling appenders * small fix * Log4j rolling appender * First set up with rolling file on log4j 2 * Added logback code. * log4j2 more detailed example * log4j2 more detailed example * Improved names and examples * Fixed configurations * improved configs * formatted * Final fix * fixed formatting * Formatting fix * Fix sample apps to avoid try / catch * Fix request to replace files * Fix end lines --- log4j/pom.xml | 29 ++++--- .../baeldung/log4j/Log4jRollingExample.java | 18 +++++ .../baeldung/log4j2/Log4j2RollingExample.java | 19 +++++ .../logback/LogbackRollingExample.java | 19 +++++ .../baeldung/slf4j/Slf4jRollingExample.java | 19 +++++ log4j/src/main/resources/log4j.xml | 75 ++++++++++++++++++- log4j/src/main/resources/log4j2.xml | 56 +++++++++++++- log4j/src/main/resources/logback.xml | 59 ++++++++++++++- 8 files changed, 279 insertions(+), 15 deletions(-) create mode 100644 log4j/src/main/java/com/baeldung/log4j/Log4jRollingExample.java create mode 100644 log4j/src/main/java/com/baeldung/log4j2/Log4j2RollingExample.java create mode 100644 log4j/src/main/java/com/baeldung/logback/LogbackRollingExample.java create mode 100644 log4j/src/main/java/com/baeldung/slf4j/Slf4jRollingExample.java diff --git a/log4j/pom.xml b/log4j/pom.xml index 9b87c131b9..856548327f 100644 --- a/log4j/pom.xml +++ b/log4j/pom.xml @@ -8,13 +8,24 @@ log4j 1.0-SNAPSHOT - - - - log4j - log4j - ${log4j.version} - + + + + log4j + log4j + ${log4j.version} + + + log4j + apache-log4j-extras + ${log4j.version} + + + + log4j + apache-log4j-extras + ${log4j.version} + @@ -58,14 +69,14 @@ - + 1.2.17 2.7 2.7 3.3.6 1.1.7 - + 3.6.0 diff --git a/log4j/src/main/java/com/baeldung/log4j/Log4jRollingExample.java b/log4j/src/main/java/com/baeldung/log4j/Log4jRollingExample.java new file mode 100644 index 0000000000..c0c05e1759 --- /dev/null +++ b/log4j/src/main/java/com/baeldung/log4j/Log4jRollingExample.java @@ -0,0 +1,18 @@ +package com.baeldung.log4j; + +import java.util.stream.IntStream; + +import org.apache.log4j.Logger; + +public class Log4jRollingExample { + + private final static Logger logger = Logger.getLogger(Log4jRollingExample.class); + + public static void main(String[] args) throws InterruptedException { + for(int i = 0; i<2000; i++){ + logger.info("This is the " + i + " time I say 'Hello World'."); + Thread.sleep(100); + } + } + +} diff --git a/log4j/src/main/java/com/baeldung/log4j2/Log4j2RollingExample.java b/log4j/src/main/java/com/baeldung/log4j2/Log4j2RollingExample.java new file mode 100644 index 0000000000..8e0b9fccab --- /dev/null +++ b/log4j/src/main/java/com/baeldung/log4j2/Log4j2RollingExample.java @@ -0,0 +1,19 @@ +package com.baeldung.log4j2; + +import java.util.stream.IntStream; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class Log4j2RollingExample { + + private static final Logger logger = LogManager.getLogger(Log4j2RollingExample.class); + + public static void main(String[] args) throws InterruptedException { + for(int i = 0; i<2000; i++){ + logger.info("This is the {} time I say 'Hello World'.", i); + Thread.sleep(100); + } + } + +} diff --git a/log4j/src/main/java/com/baeldung/logback/LogbackRollingExample.java b/log4j/src/main/java/com/baeldung/logback/LogbackRollingExample.java new file mode 100644 index 0000000000..60d55752b3 --- /dev/null +++ b/log4j/src/main/java/com/baeldung/logback/LogbackRollingExample.java @@ -0,0 +1,19 @@ +package com.baeldung.logback; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.stream.IntStream; + +public class LogbackRollingExample { + + private static final Logger logger = LoggerFactory.getLogger(LogbackRollingExample.class); + + public static void main(String[] args) throws InterruptedException { + for(int i = 0; i<2000; i++){ + logger.info("This is the {} time I say 'Hello World'.", i); + Thread.sleep(100); + } + } + +} diff --git a/log4j/src/main/java/com/baeldung/slf4j/Slf4jRollingExample.java b/log4j/src/main/java/com/baeldung/slf4j/Slf4jRollingExample.java new file mode 100644 index 0000000000..f5cc4a280a --- /dev/null +++ b/log4j/src/main/java/com/baeldung/slf4j/Slf4jRollingExample.java @@ -0,0 +1,19 @@ +package com.baeldung.slf4j; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.stream.IntStream; + +public class Slf4jRollingExample { + + private static Logger logger = LoggerFactory.getLogger(Slf4jRollingExample.class); + + public static void main(String[] args) throws InterruptedException { + for(int i = 0; i<2000; i++){ + logger.info("This is the {} time I say 'Hello World'.", i); + Thread.sleep(100); + } + } + +} diff --git a/log4j/src/main/resources/log4j.xml b/log4j/src/main/resources/log4j.xml index 58a924f970..562d6920f9 100644 --- a/log4j/src/main/resources/log4j.xml +++ b/log4j/src/main/resources/log4j.xml @@ -1,28 +1,95 @@ - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/log4j/src/main/resources/log4j2.xml b/log4j/src/main/resources/log4j2.xml index 76a20bcd61..b5724c5bee 100644 --- a/log4j/src/main/resources/log4j2.xml +++ b/log4j/src/main/resources/log4j2.xml @@ -8,16 +8,70 @@ # File appender - + # Pattern of log message for file appender + + # Rolling appender + + + %d{yyyy-MM-dd HH:mm:ss} %p %m%n + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss} %p %m%n + + + + + + + %d{yyyy-MM-dd HH:mm:ss} %p %m%n + + + + + + + + + + + + + # Override log level for specified package + + + + + + diff --git a/log4j/src/main/resources/logback.xml b/log4j/src/main/resources/logback.xml index fc66d560aa..f567962cb6 100644 --- a/log4j/src/main/resources/logback.xml +++ b/log4j/src/main/resources/logback.xml @@ -18,8 +18,65 @@ + # Rolling appenders + + target/slf4j/roll-by-size/app.log + + target/slf4j/roll-by-size/app.%i.log.zip + + 1 + 3 + 1MB + + + 5KB + + + %-4relative [%thread] %-5level %logger{35} - %msg%n + + + + + + target/slf4j/roll-by-time/app.log + + target/slf4j/roll-by-time/app.%d{yyyy-MM-dd-HH-mm}.log.zip + + 20 + 1MB + + + %d{yyyy-MM-dd HH:mm:ss} %p %m%n + + + + + target/slf4j/roll-by-time-and-size/app.log + + target/slf4j/roll-by-time-and-size/app.%d{yyyy-MM-dd-mm}.%i.log.zip + + 5KB + 20 + 1MB + + + %d{yyyy-MM-dd HH:mm:ss} %p %m%n + + + # Override log level for specified package - + + + + + From 8ff889bc7da823c7c81872ba8e0bbc61ba1d630f Mon Sep 17 00:00:00 2001 From: eugenp Date: Sun, 18 Dec 2016 18:11:05 +0200 Subject: [PATCH 357/399] maven work --- pom.xml | 7 +++-- ...File1.txt => 2016-12-18 17-36-38File1.txt} | 0 ...File2.txt => 2016-12-18 17-36-38File2.txt} | 0 spring-cloud-data-flow/pom.xml | 31 ++++++++++--------- spring-core/pom.xml | 1 + 5 files changed, 22 insertions(+), 17 deletions(-) rename spring-apache-camel/src/test/destination-folder/{2016-12-14 23-33-25File1.txt => 2016-12-18 17-36-38File1.txt} (100%) mode change 100755 => 100644 rename spring-apache-camel/src/test/destination-folder/{2016-12-14 23-33-25File2.txt => 2016-12-18 17-36-38File2.txt} (100%) mode change 100755 => 100644 diff --git a/pom.xml b/pom.xml index 211c3b2c4d..36b1a57773 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 com.baeldung parent-modules @@ -151,7 +152,7 @@ xml xmlunit2 xstream - pdf - + pdf + \ No newline at end of file diff --git a/spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File1.txt b/spring-apache-camel/src/test/destination-folder/2016-12-18 17-36-38File1.txt old mode 100755 new mode 100644 similarity index 100% rename from spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File1.txt rename to spring-apache-camel/src/test/destination-folder/2016-12-18 17-36-38File1.txt diff --git a/spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File2.txt b/spring-apache-camel/src/test/destination-folder/2016-12-18 17-36-38File2.txt old mode 100755 new mode 100644 similarity index 100% rename from spring-apache-camel/src/test/destination-folder/2016-12-14 23-33-25File2.txt rename to spring-apache-camel/src/test/destination-folder/2016-12-18 17-36-38File2.txt diff --git a/spring-cloud-data-flow/pom.xml b/spring-cloud-data-flow/pom.xml index 509c185d61..520ff63d49 100644 --- a/spring-cloud-data-flow/pom.xml +++ b/spring-cloud-data-flow/pom.xml @@ -1,15 +1,18 @@ - - 4.0.0 - org.baeldung.spring.cloud - spring-cloud-data-flow - 0.0.1-SNAPSHOT - pom - - data-flow-server - data-flow-shell - time-source - time-processor - log-sink - batch-job - + + 4.0.0 + org.baeldung.spring.cloud + spring-cloud-data-flow + 0.0.1-SNAPSHOT + pom + + + data-flow-server + + time-source + time-processor + log-sink + batch-job + + diff --git a/spring-core/pom.xml b/spring-core/pom.xml index cca6e7f08f..bf05f6a6f0 100644 --- a/spring-core/pom.xml +++ b/spring-core/pom.xml @@ -72,6 +72,7 @@ **/*IntegrationTest.java **/*LiveTest.java + true From b6e8cf95c7996658455af440d71aa7d1dd85b4c0 Mon Sep 17 00:00:00 2001 From: prd Date: Sun, 18 Dec 2016 20:59:24 +0100 Subject: [PATCH 358/399] init --- imageprocessing/pom.xml | 19 +++++++++ .../src/main/java/imagej/DrawRect.java | 22 ++++++++++ .../src/main/java/swing/DrawRect.java | 40 ++++++++++++++++++ imageprocessing/src/main/resources/lena.jpg | Bin 0 -> 95154 bytes 4 files changed, 81 insertions(+) create mode 100644 imageprocessing/pom.xml create mode 100644 imageprocessing/src/main/java/imagej/DrawRect.java create mode 100644 imageprocessing/src/main/java/swing/DrawRect.java create mode 100644 imageprocessing/src/main/resources/lena.jpg diff --git a/imageprocessing/pom.xml b/imageprocessing/pom.xml new file mode 100644 index 0000000000..36e1b57028 --- /dev/null +++ b/imageprocessing/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + com.baeldung + imageprocessing + 1.0-SNAPSHOT + + + + net.imagej + ij + 1.51h + + + + \ No newline at end of file diff --git a/imageprocessing/src/main/java/imagej/DrawRect.java b/imageprocessing/src/main/java/imagej/DrawRect.java new file mode 100644 index 0000000000..53354d89d0 --- /dev/null +++ b/imageprocessing/src/main/java/imagej/DrawRect.java @@ -0,0 +1,22 @@ +package imagej; + +import ij.IJ; +import ij.ImagePlus; +import ij.process.ImageProcessor; + +import java.awt.*; + +public class DrawRect { + public static void main(String[] args) { + ImagePlus imp = IJ.openImage(DrawRect.class.getClassLoader().getResource("lena.jpg").getPath()); + drawRect(imp); + imp.show(); + } + + private static void drawRect(ImagePlus imp) { + ImageProcessor ip = imp.getProcessor(); + ip.setColor(Color.BLUE); + ip.setLineWidth(4); + ip.drawRect(10, 10, imp.getWidth() - 20, imp.getHeight() - 20); + } +} diff --git a/imageprocessing/src/main/java/swing/DrawRect.java b/imageprocessing/src/main/java/swing/DrawRect.java new file mode 100644 index 0000000000..8fc7f5184e --- /dev/null +++ b/imageprocessing/src/main/java/swing/DrawRect.java @@ -0,0 +1,40 @@ +package swing; + +import javax.imageio.ImageIO; +import javax.swing.*; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +public class DrawRect { + public static void main(String[] args) throws IOException { + BufferedImage image = loadImage(); + drawRectangle(image); + displayImage(image); + } + + private static BufferedImage loadImage() throws IOException { + String imagePath = DrawRect.class.getClassLoader().getResource("lena.jpg").getPath(); + return ImageIO.read(new File(imagePath)); + } + + private static void drawRectangle(BufferedImage image) { + Graphics2D g = (Graphics2D) image.getGraphics(); + g.setStroke(new BasicStroke(3)); + g.setColor(Color.BLUE); + g.drawRect(10, 10, image.getWidth() - 20, image.getHeight() - 20); + } + + private static void displayImage(BufferedImage image) { + JLabel picLabel = new JLabel(new ImageIcon(image)); + + JPanel jPanel = new JPanel(); + jPanel.add(picLabel); + + JFrame f = new JFrame(); + f.setSize(new Dimension(image.getWidth(), image.getHeight())); + f.add(jPanel); + f.setVisible(true); + } +} diff --git a/imageprocessing/src/main/resources/lena.jpg b/imageprocessing/src/main/resources/lena.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e1a1657bb5e15d9930f2140dc531ba68df779527 GIT binary patch literal 95154 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⋘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 Date: Sun, 18 Dec 2016 22:04:12 +0200 Subject: [PATCH 359/399] cleanup work --- ...File1.txt => 2016-12-18 22-00-11File1.txt} | 0 ...File2.txt => 2016-12-18 22-00-11File2.txt} | 0 .../file/processor/FileProcessorTest.java | 68 ----- spring-integration/pom.xml | 245 +++++++++--------- ...Test.java => FileCopyIntegrationTest.java} | 39 +-- spring-mvc-java/pom.xml | 1 + .../htmlunit/HtmlUnitAndJUnitLiveTest.java | 32 +++ .../htmlunit/HtmlUnitAndJUnitTest.java | 34 --- ...st.java => HtmlUnitAndSpringLiveTest.java} | 2 +- ...ping.java => HtmlUnitWebLiveScraping.java} | 2 +- 10 files changed, 169 insertions(+), 254 deletions(-) rename spring-apache-camel/src/test/destination-folder/{2016-12-18 17-36-38File1.txt => 2016-12-18 22-00-11File1.txt} (100%) rename spring-apache-camel/src/test/destination-folder/{2016-12-18 17-36-38File2.txt => 2016-12-18 22-00-11File2.txt} (100%) delete mode 100644 spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java rename spring-integration/src/test/java/com/baeldung/samples/{FileCopyTest.java => FileCopyIntegrationTest.java} (52%) create mode 100644 spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitLiveTest.java delete mode 100644 spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java rename spring-mvc-java/src/test/java/com/baeldung/htmlunit/{HtmlUnitAndSpringTest.java => HtmlUnitAndSpringLiveTest.java} (97%) rename spring-mvc-java/src/test/java/com/baeldung/htmlunit/{HtmlUnitWebScraping.java => HtmlUnitWebLiveScraping.java} (97%) diff --git a/spring-apache-camel/src/test/destination-folder/2016-12-18 17-36-38File1.txt b/spring-apache-camel/src/test/destination-folder/2016-12-18 22-00-11File1.txt similarity index 100% rename from spring-apache-camel/src/test/destination-folder/2016-12-18 17-36-38File1.txt rename to spring-apache-camel/src/test/destination-folder/2016-12-18 22-00-11File1.txt diff --git a/spring-apache-camel/src/test/destination-folder/2016-12-18 17-36-38File2.txt b/spring-apache-camel/src/test/destination-folder/2016-12-18 22-00-11File2.txt similarity index 100% rename from spring-apache-camel/src/test/destination-folder/2016-12-18 17-36-38File2.txt rename to spring-apache-camel/src/test/destination-folder/2016-12-18 22-00-11File2.txt diff --git a/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java deleted file mode 100644 index c4a3ced84f..0000000000 --- a/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.apache.camel.file.processor; - -import java.io.File; - -import org.apache.camel.CamelContext; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.impl.DefaultCamelContext; -import org.junit.Before; -import org.junit.Test; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -import com.baeldung.camel.file.FileProcessor; - - -public class FileProcessorTest { - - private static final long DURATION_MILIS = 10000; - private static final String SOURCE_FOLDER = "src/test/source-folder"; - private static final String DESTINATION_FOLDER = "src/test/destination-folder"; - - @Before - public void setUp() throws Exception { - File sourceFolder = new File(SOURCE_FOLDER); - File destinationFolder = new File(DESTINATION_FOLDER); - - cleanFolder(sourceFolder); - cleanFolder(destinationFolder); - - sourceFolder.mkdirs(); - File file1 = new File(SOURCE_FOLDER + "/File1.txt"); - File file2 = new File(SOURCE_FOLDER + "/File2.txt"); - file1.createNewFile(); - file2.createNewFile(); - } - - private void cleanFolder(File folder) { - File[] files = folder.listFiles(); - if (files != null) { - for (File file : files) { - if (file.isFile()) { - file.delete(); - } - } - } - } - - @Test - public void moveFolderContentJavaDSLTest() throws Exception { - final CamelContext camelContext = new DefaultCamelContext(); - camelContext.addRoutes(new RouteBuilder() { - @Override - public void configure() throws Exception { - from("file://" + SOURCE_FOLDER + "?delete=true").process(new FileProcessor()).to("file://" + DESTINATION_FOLDER); - } - }); - camelContext.start(); - Thread.sleep(DURATION_MILIS); - camelContext.stop(); - } - - @Test - public void moveFolderContentSpringDSLTest() throws InterruptedException { - ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-test.xml"); - Thread.sleep(DURATION_MILIS); - applicationContext.close(); - - } -} \ No newline at end of file diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml index 6083afcf76..2fe7e1ad37 100644 --- a/spring-integration/pom.xml +++ b/spring-integration/pom.xml @@ -1,135 +1,132 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - com.baeldung.samples.spring.integration - spring-integration - 1.0.0.BUILD-SNAPSHOT - jar + com.baeldung.samples.spring.integration + spring-integration + 1.0.0.BUILD-SNAPSHOT + jar - spring-integration - http://www.springsource.org/spring-integration + spring-integration + http://www.springsource.org/spring-integration - - 2.2.1 - + + UTF-8 + 4.3.5.RELEASE + 1.1.4.RELEASE + 1.4.7 + 1.1.1 + 1.2.17 + 4.12 - - UTF-8 - 4.3.5.RELEASE - 1.1.4.RELEASE - 1.4.7 - 1.1.1 - 1.2.17 - 4.12 - - 2.10 - 3.6.0 - 1.5.0 - + 2.10 + 3.6.0 + 1.5.0 + - - - repo.springsource.org.milestone - Spring Framework Maven Milestone Repository - https://repo.springsource.org/milestone - - + + + repo.springsource.org.milestone + Spring Framework Maven Milestone Repository + https://repo.springsource.org/milestone + + - - - - maven-eclipse-plugin - ${maven-eclipse-plugin.version} - - - org.springframework.ide.eclipse.core.springnature - - - org.springframework.ide.eclipse.core.springbuilder - - true - true - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - -Xlint:all - true - true - - - - org.codehaus.mojo - exec-maven-plugin - ${exec-maven-plugin.version} - - com.baeldung.samples.Main - - - - + + + + maven-eclipse-plugin + ${maven-eclipse-plugin.version} + + + org.springframework.ide.eclipse.core.springnature + + + org.springframework.ide.eclipse.core.springbuilder + + true + true + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + -Xlint:all + true + true + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + com.baeldung.samples.Main + + + + - + - + - - junit - junit - ${junit.version} - test - - - org.springframework.integration - spring-integration-core - ${spring.integration.version} - - - javax.activation - activation - ${javax-activation.version} - true - - - javax.mail - mail - ${javax-mail.version} - - - log4j - log4j - ${log4j.version} - - - org.springframework.integration - spring-integration-twitter - ${spring.integration.version} - - - org.springframework.integration - spring-integration-mail - ${spring.integration.version} - - - org.springframework.integration - spring-integration-ftp - ${spring.integration.version} - - - org.springframework.social - spring-social-core - ${spring-social.version} - - - org.springframework.integration - spring-integration-file - ${spring.integration.version} - - + + junit + junit + ${junit.version} + test + + + org.springframework.integration + spring-integration-core + ${spring.integration.version} + + + javax.activation + activation + ${javax-activation.version} + true + + + javax.mail + mail + ${javax-mail.version} + + + log4j + log4j + ${log4j.version} + + + org.springframework.integration + spring-integration-twitter + ${spring.integration.version} + + + org.springframework.integration + spring-integration-mail + ${spring.integration.version} + + + org.springframework.integration + spring-integration-ftp + ${spring.integration.version} + + + org.springframework.social + spring-social-core + ${spring-social.version} + + + org.springframework.integration + spring-integration-file + ${spring.integration.version} + + + diff --git a/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java b/spring-integration/src/test/java/com/baeldung/samples/FileCopyIntegrationTest.java similarity index 52% rename from spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java rename to spring-integration/src/test/java/com/baeldung/samples/FileCopyIntegrationTest.java index 567d181972..55c0916e60 100644 --- a/spring-integration/src/test/java/com/baeldung/samples/FileCopyTest.java +++ b/spring-integration/src/test/java/com/baeldung/samples/FileCopyIntegrationTest.java @@ -15,40 +15,27 @@ */ package com.baeldung.samples; -import org.apache.log4j.Logger; import org.junit.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +public final class FileCopyIntegrationTest { -/** - * Starts the Spring Context and will initialize the Spring Integration routes. - * - * @author Baeldung - * @since 1.0 - * - */ -public final class FileCopyTest { + // - private static final Logger LOGGER = Logger.getLogger(FileCopyTest.class); + @Test + public void whenFileCopyConfiguration_thanFileCopiedSuccessfully() throws InterruptedException { + final AbstractApplicationContext context = new AnnotationConfigApplicationContext(FileCopyConfig.class.getCanonicalName()); + context.registerShutdownHook(); + Thread.sleep(5000); + } - @Test - public void whenFileCopyConfiguration_thanFileCopiedSuccessfully() throws InterruptedException { - final AbstractApplicationContext context = new AnnotationConfigApplicationContext(FileCopyConfig.class.getCanonicalName()); - context.registerShutdownHook(); - Thread.sleep(5000); - } + @Test + public void publish() throws InterruptedException { + final AbstractApplicationContext context = new ClassPathXmlApplicationContext("classpath:META-INF/spring/integration/spring-integration-file-publish-context.xml"); - @Test - public void publish() throws InterruptedException { + Thread.sleep(15000); + } - - final AbstractApplicationContext context = - new ClassPathXmlApplicationContext("classpath:META-INF/spring/integration/spring-integration-file-publish-context.xml"); - - Thread.sleep(15000); - - - } } diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index 3c1e44d13a..b507a1c629 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -203,6 +203,7 @@ **/*IntegrationTest.java + true diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitLiveTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitLiveTest.java new file mode 100644 index 0000000000..c9c23f267b --- /dev/null +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitLiveTest.java @@ -0,0 +1,32 @@ +package com.baeldung.htmlunit; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.HtmlPage; + +public class HtmlUnitAndJUnitLiveTest { + + private WebClient webClient; + + @Before + public void init() throws Exception { + webClient = new WebClient(); + } + + @After + public void close() throws Exception { + webClient.close(); + } + + @Test + public void givenAClient_whenEnteringBaeldung_thenPageTitleIsOk() throws Exception { + webClient.getOptions().setThrowExceptionOnScriptError(false); + HtmlPage page = webClient.getPage("http://www.baeldung.com/"); + Assert.assertEquals("Baeldung | Java, Spring and Web Development tutorials", page.getTitleText()); + } + +} diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java deleted file mode 100644 index 46a95ae694..0000000000 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndJUnitTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung.htmlunit; - -import com.gargoylesoftware.htmlunit.WebClient; -import com.gargoylesoftware.htmlunit.html.HtmlPage; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -public class HtmlUnitAndJUnitTest { - - private WebClient webClient; - - @Before - public void init() throws Exception { - webClient = new WebClient(); - } - - @After - public void close() throws Exception { - webClient.close(); - } - - @Test - public void givenAClient_whenEnteringBaeldung_thenPageTitleIsOk() - throws Exception { - webClient.getOptions().setThrowExceptionOnScriptError(false); - HtmlPage page = webClient.getPage("http://www.baeldung.com/"); - Assert.assertEquals( - "Baeldung | Java, Spring and Web Development tutorials", - page.getTitleText()); - } - -} diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringLiveTest.java similarity index 97% rename from spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java rename to spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringLiveTest.java index da1b0e484a..ba66e7ac13 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitAndSpringLiveTest.java @@ -20,7 +20,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlTextInput; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(classes = { TestConfig.class }) -public class HtmlUnitAndSpringTest { +public class HtmlUnitAndSpringLiveTest { @Autowired private WebApplicationContext wac; diff --git a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebLiveScraping.java similarity index 97% rename from spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java rename to spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebLiveScraping.java index 327bfc4596..e8869e8232 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebScraping.java +++ b/spring-mvc-java/src/test/java/com/baeldung/htmlunit/HtmlUnitWebLiveScraping.java @@ -12,7 +12,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlAnchor; import com.gargoylesoftware.htmlunit.html.HtmlHeading1; import com.gargoylesoftware.htmlunit.html.HtmlPage; -public class HtmlUnitWebScraping { +public class HtmlUnitWebLiveScraping { private WebClient webClient; From 51a96d14de27e100954c36e219daa7db54425a75 Mon Sep 17 00:00:00 2001 From: eugenp Date: Sun, 18 Dec 2016 22:13:53 +0200 Subject: [PATCH 360/399] cleanup work --- .../spring-cloud-ribbon-client/pom.xml | 142 +++++++++--------- ... => ServerLocationAppIntegrationTest.java} | 2 +- ...tomUserDetailsServiceIntegrationTest.java} | 12 +- 3 files changed, 80 insertions(+), 76 deletions(-) rename spring-cloud/spring-cloud-ribbon-client/src/test/java/com/baeldung/spring/cloud/ribbon/client/{ServerLocationAppTests.java => ServerLocationAppIntegrationTest.java} (94%) rename spring-security-custom-permission/src/test/java/org/baeldung/web/{CustomUserDetailsServiceTest.java => CustomUserDetailsServiceIntegrationTest.java} (97%) diff --git a/spring-cloud/spring-cloud-ribbon-client/pom.xml b/spring-cloud/spring-cloud-ribbon-client/pom.xml index d4862fc4e8..b85db03383 100644 --- a/spring-cloud/spring-cloud-ribbon-client/pom.xml +++ b/spring-cloud/spring-cloud-ribbon-client/pom.xml @@ -1,80 +1,80 @@ - 4.0.0 - com.baeldung - spring-cloud-ribbon - 0.0.1-SNAPSHOT - jar - spring-cloud-ribbon-client - Introduction to Spring Cloud Rest Client with Netflix Ribbon + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + spring-cloud-ribbon + 0.0.1-SNAPSHOT + jar + spring-cloud-ribbon-client + Introduction to Spring Cloud Rest Client with Netflix Ribbon - - org.springframework.boot - spring-boot-starter-parent - 1.4.2.RELEASE - - + + org.springframework.boot + spring-boot-starter-parent + 1.4.2.RELEASE + + - - UTF-8 - 1.8 - Brixton.SR7 - + + UTF-8 + 1.8 + Brixton.SR7 + - - - org.springframework.cloud - spring-cloud-starter-ribbon - - - org.springframework.boot - spring-boot-starter-web - + + + org.springframework.cloud + spring-cloud-starter-ribbon + + + org.springframework.boot + spring-boot-starter-web + - - org.springframework.boot - spring-boot-starter-test - test - - + + org.springframework.boot + spring-boot-starter-test + test + + - - - - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud-dependencies.version} - pom - import - - - + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud-dependencies.version} + pom + import + + + - - - - org.springframework.boot - spring-boot-maven-plugin - - - + + + + org.springframework.boot + spring-boot-maven-plugin + + + - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-ribbon-client/src/test/java/com/baeldung/spring/cloud/ribbon/client/ServerLocationAppTests.java b/spring-cloud/spring-cloud-ribbon-client/src/test/java/com/baeldung/spring/cloud/ribbon/client/ServerLocationAppIntegrationTest.java similarity index 94% rename from spring-cloud/spring-cloud-ribbon-client/src/test/java/com/baeldung/spring/cloud/ribbon/client/ServerLocationAppTests.java rename to spring-cloud/spring-cloud-ribbon-client/src/test/java/com/baeldung/spring/cloud/ribbon/client/ServerLocationAppIntegrationTest.java index b3606537a2..b971565c44 100644 --- a/spring-cloud/spring-cloud-ribbon-client/src/test/java/com/baeldung/spring/cloud/ribbon/client/ServerLocationAppTests.java +++ b/spring-cloud/spring-cloud-ribbon-client/src/test/java/com/baeldung/spring/cloud/ribbon/client/ServerLocationAppIntegrationTest.java @@ -20,7 +20,7 @@ import org.springframework.test.context.junit4.SpringRunner; @SuppressWarnings("unused") @RunWith(SpringRunner.class) @SpringBootTest(classes = ServerLocationApp.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -public class ServerLocationAppTests { +public class ServerLocationAppIntegrationTest { ConfigurableApplicationContext application2; ConfigurableApplicationContext application3; diff --git a/spring-security-custom-permission/src/test/java/org/baeldung/web/CustomUserDetailsServiceTest.java b/spring-security-custom-permission/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java similarity index 97% rename from spring-security-custom-permission/src/test/java/org/baeldung/web/CustomUserDetailsServiceTest.java rename to spring-security-custom-permission/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java index fbc0c20144..616e80e6e9 100644 --- a/spring-security-custom-permission/src/test/java/org/baeldung/web/CustomUserDetailsServiceTest.java +++ b/spring-security-custom-permission/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java @@ -7,9 +7,9 @@ import org.baeldung.config.PersistenceConfig; import org.baeldung.config.SecurityConfig; import org.baeldung.persistence.dao.UserRepository; import org.baeldung.persistence.model.User; +import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; -import org.junit.After; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.security.authentication.AuthenticationProvider; @@ -23,7 +23,7 @@ import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = { MvcConfig.class, SecurityConfig.class, PersistenceConfig.class }) @WebAppConfiguration -public class CustomUserDetailsServiceTest { +public class CustomUserDetailsServiceIntegrationTest { public static final String USERNAME = "user"; public static final String PASSWORD = "pass"; @@ -34,10 +34,12 @@ public class CustomUserDetailsServiceTest { @Autowired AuthenticationProvider authenticationProvider; - + @Autowired PasswordEncoder passwordEncoder; + // + @Test public void givenExistingUser_whenAuthenticate_thenRetrieveFromDb() { User user = new User(); @@ -63,7 +65,9 @@ public class CustomUserDetailsServiceTest { UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(USERNAME2, PASSWORD); authenticationProvider.authenticate(auth); } - + + // + @After public void tearDown() { myUserRepository.removeUserByUsername(USERNAME); From ac6a6962a24719ba0072138bdc65fcb507e7252a Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Sun, 18 Dec 2016 18:03:11 -0600 Subject: [PATCH 361/399] Update README.md --- core-java/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java/README.md b/core-java/README.md index a17e01e8d2..ec475c1167 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -44,3 +44,4 @@ - [Sorting in Java](http://www.baeldung.com/java-sorting) - [Getting Started with Java Properties](http://www.baeldung.com/java-properties) - [Grep in Java](http://www.baeldung.com/grep-in-java) +- [Java - Combine Multiple Collections](http://www.baeldung.com/java-combine-multiple-collections) From 39cc3511ad2253e330f6ce243e3915a4897aa3d9 Mon Sep 17 00:00:00 2001 From: maibin Date: Mon, 19 Dec 2016 19:13:52 +0100 Subject: [PATCH 362/399] Simulated Annnealing fixes (#907) * @Async and Spring Security * @Async with SecurityContext propagated * Spring and @Async * Simulated Annealing algorithm * Simulated Annealing algorithm * Rebase * Rebase --- core-java/README.md | 1 + .../java/com/baeldung/algorithms/City.java | 22 +++++++++---------- .../algorithms/SimulatedAnnealing.java | 4 +++- .../java/com/baeldung/algorithms/Travel.java | 5 ++++- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/core-java/README.md b/core-java/README.md index ec475c1167..3abe1ba808 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -45,3 +45,4 @@ - [Getting Started with Java Properties](http://www.baeldung.com/java-properties) - [Grep in Java](http://www.baeldung.com/grep-in-java) - [Java - Combine Multiple Collections](http://www.baeldung.com/java-combine-multiple-collections) +- [Simulated Annealing for Travelling Salesman Problem](http://www.baeldung.com/java-simulated-annealing-for-traveling-salesman) diff --git a/core-java/src/main/java/com/baeldung/algorithms/City.java b/core-java/src/main/java/com/baeldung/algorithms/City.java index 32335cda80..1a96dc759d 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/City.java +++ b/core-java/src/main/java/com/baeldung/algorithms/City.java @@ -5,18 +5,18 @@ import lombok.Data; @Data public class City { - private int x; - private int y; + private int x; + private int y; - public City() { - this.x = (int) (Math.random() * 500); - this.y = (int) (Math.random() * 500); - } + public City() { + this.x = (int) (Math.random() * 500); + this.y = (int) (Math.random() * 500); + } - public double distanceToCity(City city) { - int x = Math.abs(getX() - city.getX()); - int y = Math.abs(getY() - city.getY()); - return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); - } + public double distanceToCity(City city) { + int x = Math.abs(getX() - city.getX()); + int y = Math.abs(getY() - city.getY()); + return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + } } diff --git a/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java b/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java index 3ccba9b3e9..cf1dad098e 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java +++ b/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java @@ -25,6 +25,8 @@ public class SimulatedAnnealing { currentSolution.revertSwap(); } t *= coolingRate; + } else { + continue; } if (i % 100 == 0) { System.out.println("Iteration #" + i); @@ -34,7 +36,7 @@ public class SimulatedAnnealing { } public static void main(String[] args) { - System.out.println("Optimized distance for travel: " + simulateAnnealing(10, 10000, 0.9)); + System.out.println("Optimized distance for travel: " + simulateAnnealing(10, 10000, 0.9995)); } } diff --git a/core-java/src/main/java/com/baeldung/algorithms/Travel.java b/core-java/src/main/java/com/baeldung/algorithms/Travel.java index 6e6059b3eb..af03b0abbb 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/Travel.java +++ b/core-java/src/main/java/com/baeldung/algorithms/Travel.java @@ -27,7 +27,10 @@ public class Travel { int a = generateRandomIndex(); int b = generateRandomIndex(); previousTravel = travel; - travel.set(a, travel.get(b)); + City x = travel.get(a); + City y = travel.get(b); + travel.set(a, y); + travel.set(b, x); } public void revertSwap() { From c2f77119237572bba9014a980ebc23c62607e466 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Mon, 19 Dec 2016 16:16:49 -0500 Subject: [PATCH 363/399] Nashorn (#896) --- .../java/com/baeldung/scripting/Nashorn.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/scripting/Nashorn.java diff --git a/core-java/src/main/java/com/baeldung/scripting/Nashorn.java b/core-java/src/main/java/com/baeldung/scripting/Nashorn.java new file mode 100644 index 0000000000..ba9b778de5 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/scripting/Nashorn.java @@ -0,0 +1,48 @@ +package com.baeldung.scripting; + +import javax.script.Bindings; +import javax.script.Invocable; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; + +public class Nashorn { + public static void main(String[] args) throws ScriptException, NoSuchMethodException { + ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); + + Object result = engine.eval( + "var greeting='hello world';" + + "print(greeting);" + + "greeting"); + + System.out.println(result); + + Bindings bindings = engine.createBindings(); + bindings.put("count", 3); + bindings.put("name", "baeldung"); + + String script = "var greeting='Hello ';" + + "for(var i=count;i>0;i--) { " + + "greeting+=name + ' '" + + "}" + + "greeting"; + + Object bindingsResult = engine.eval(script, bindings); + System.out.println(bindingsResult); + + engine.eval("function composeGreeting(name) {" + + "return 'Hello ' + name" + + "}"); + Invocable invocable = (Invocable) engine; + + Object funcResult = invocable.invokeFunction("composeGreeting", "baeldung"); + System.out.println(funcResult); + + Object map = engine.eval("var HashMap = Java.type('java.util.HashMap');" + + "var map = new HashMap();" + + "map.put('hello', 'world');" + + "map"); + + System.out.println(map); + } +} From daa711d5a3d7627afb990e42e45e526a2d15a075 Mon Sep 17 00:00:00 2001 From: maibin Date: Mon, 19 Dec 2016 22:38:56 +0100 Subject: [PATCH 364/399] Simulated Annealing fix (#910) * @Async and Spring Security * @Async with SecurityContext propagated * Spring and @Async * Simulated Annealing algorithm * Simulated Annealing algorithm * Rebase * Rebase * SA further fixes --- .../main/java/com/baeldung/algorithms/SimulatedAnnealing.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java b/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java index cf1dad098e..f2db61c3b1 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java +++ b/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java @@ -17,11 +17,9 @@ public class SimulatedAnnealing { if (t > 0.1) { currentSolution.swapCities(); double currentDistance = currentSolution.getDistance(); - if (currentDistance == 0) - continue; if (currentDistance < bestDistance) { bestDistance = currentDistance; - } else if (Math.exp((currentDistance - bestDistance) / t) < Math.random()) { + } else if (Math.exp((bestDistance - currentDistance) / t) < Math.random()) { currentSolution.revertSwap(); } t *= coolingRate; From 7d6b72a2af93bc4f689cfce325be448ce3afb9f7 Mon Sep 17 00:00:00 2001 From: tschiman Date: Mon, 19 Dec 2016 23:01:40 -0700 Subject: [PATCH 365/399] BAEL-315 Adding test class for demonstrating features of Spring Session and Spring Cloud --- .../gateway/GatewayApplicationTest.java | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationTest.java diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationTest.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationTest.java new file mode 100644 index 0000000000..d6ceac32f0 --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationTest.java @@ -0,0 +1,69 @@ +package com.baeldung.spring.cloud.bootstrap.gateway; + +import org.junit.Assert; +import org.junit.Test; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.*; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +public class GatewayApplicationTest { + + @Test + public void testAccess() throws Exception { + TestRestTemplate testRestTemplate = new TestRestTemplate(); + String testUrl = "http://localhost:8080"; + + ResponseEntity response = testRestTemplate.getForEntity(testUrl + "/resource/hello/cloud", String.class); + Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); + Assert.assertEquals("hello cloud", response.getBody()); + + //try the protected resource and confirm the redirect to login + response = testRestTemplate.getForEntity(testUrl + "/resource/hello/user", String.class); + Assert.assertEquals(HttpStatus.FOUND, response.getStatusCode()); + Assert.assertEquals("http://localhost:8080/login", response.getHeaders().get("Location").get(0)); + + //login as user/password + MultiValueMap form = new LinkedMultiValueMap<>(); + form.add("username", "user"); + form.add("password", "password"); + response = testRestTemplate.postForEntity(testUrl + "/login", form, String.class); + + //extract the session from the cookie and propagate it to the next request + String sessionCookie = response.getHeaders().get("Set-Cookie").get(0).split(";")[0]; + HttpHeaders headers = new HttpHeaders(); + headers.add("Cookie", sessionCookie); + HttpEntity httpEntity = new HttpEntity<>(headers); + + //request the protected resource + response = testRestTemplate.exchange(testUrl + "/resource/hello/user", HttpMethod.GET, httpEntity, String.class); + Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); + Assert.assertEquals("hello cloud user", response.getBody()); + + //request the admin protected resource to determine it is still protected + response = testRestTemplate.exchange(testUrl + "/resource/hello/admin", HttpMethod.GET, httpEntity, String.class); + Assert.assertEquals(HttpStatus.FORBIDDEN, response.getStatusCode()); + + //login as the admin + form.clear(); + form.add("username", "admin"); + form.add("password", "admin"); + response = testRestTemplate.postForEntity(testUrl + "/login", form, String.class); + + //extract the session from the cookie and propagate it to the next request + sessionCookie = response.getHeaders().get("Set-Cookie").get(0).split(";")[0]; + headers = new HttpHeaders(); + headers.add("Cookie", sessionCookie); + httpEntity = new HttpEntity<>(headers); + + //request the protected resource + response = testRestTemplate.exchange(testUrl + "/resource/hello/admin", HttpMethod.GET, httpEntity, String.class); + Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); + Assert.assertEquals("hello cloud admin", response.getBody()); + + //request the discovery resources as the admin + response = testRestTemplate.exchange(testUrl + "/discovery", HttpMethod.GET, httpEntity, String.class); + Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); + } + +} \ No newline at end of file From c74b385f1d0e934cd283b03c4c0e210c578e29ea Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 20 Dec 2016 17:39:29 +0200 Subject: [PATCH 366/399] add integration profile --- spring-integration/pom.xml | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml index 2fe7e1ad37..0aa8fed598 100644 --- a/spring-integration/pom.xml +++ b/spring-integration/pom.xml @@ -22,6 +22,7 @@ 2.10 3.6.0 1.5.0 + 2.19.1 @@ -68,6 +69,17 @@ com.baeldung.samples.Main + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + @@ -128,5 +140,40 @@ ${spring.integration.version} + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + From 7e77d1f822194149b812cd6163f0e0e5275fb90c Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 20 Dec 2016 18:14:31 +0200 Subject: [PATCH 367/399] add live profile --- spring-mvc-java/pom.xml | 79 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index b507a1c629..38443f2022 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -202,6 +202,7 @@ **/*IntegrationTest.java + **/*LiveTest.java true @@ -209,6 +210,27 @@ + + + org.codehaus.cargo + cargo-maven2-plugin + ${cargo-maven2-plugin.version} + + true + + jetty8x + embedded + + + + + + + 8082 + + + + @@ -245,6 +267,63 @@ + + + live + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*IntegrationTest.java + + + **/*LiveTest.java + + + + + + + json + + + + + org.codehaus.cargo + cargo-maven2-plugin + + false + + + + start-server + pre-integration-test + + start + + + + stop-server + post-integration-test + + stop + + + + + + + + From b462c3954350f1c6cbe683ce2b60fdf36b118386 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 20 Dec 2016 18:14:51 +0200 Subject: [PATCH 368/399] add integration profile --- spring-security-custom-permission/pom.xml | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/spring-security-custom-permission/pom.xml b/spring-security-custom-permission/pom.xml index b28c0877c4..39dec2805f 100644 --- a/spring-security-custom-permission/pom.xml +++ b/spring-security-custom-permission/pom.xml @@ -150,6 +150,7 @@ maven-surefire-plugin + **/*IntegrationTest.java **/*LiveTest.java @@ -184,6 +185,42 @@ + + integration + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + live From 5fc5d83907eee3e73182912762c93a80433b7010 Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 20 Dec 2016 18:15:22 +0200 Subject: [PATCH 369/399] add integration profile --- .../spring-cloud-ribbon-client/pom.xml | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/spring-cloud/spring-cloud-ribbon-client/pom.xml b/spring-cloud/spring-cloud-ribbon-client/pom.xml index b85db03383..8aee41f5c4 100644 --- a/spring-cloud/spring-cloud-ribbon-client/pom.xml +++ b/spring-cloud/spring-cloud-ribbon-client/pom.xml @@ -56,6 +56,16 @@ org.springframework.boot spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + + + @@ -77,4 +87,42 @@ + + + + integration + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + \ No newline at end of file From 67c491912d5eecf73125e9140086a8a9f54728ba Mon Sep 17 00:00:00 2001 From: DOHA Date: Tue, 20 Dec 2016 22:21:38 +0200 Subject: [PATCH 370/399] add integration profile --- rest-assured/pom.xml | 49 +++++++++++++++++++ ....java => RestAssured2IntegrationTest.java} | 4 +- ...t.java => RestAssuredIntegrationTest.java} | 4 +- ...va => RestAssuredXML2IntegrationTest.java} | 4 +- ...ava => RestAssuredXMLIntegrationTest.java} | 4 +- spring-rest-docs/pom.xml | 43 ++++++++++++++-- 6 files changed, 97 insertions(+), 11 deletions(-) rename rest-assured/src/test/java/com/baeldung/restassured/{RestAssured2Test.java => RestAssured2IntegrationTest.java} (92%) rename rest-assured/src/test/java/com/baeldung/restassured/{RestAssuredTest.java => RestAssuredIntegrationTest.java} (96%) rename rest-assured/src/test/java/com/baeldung/restassured/{RestAssuredXML2Test.java => RestAssuredXML2IntegrationTest.java} (91%) rename rest-assured/src/test/java/com/baeldung/restassured/{RestAssuredXMLTest.java => RestAssuredXMLIntegrationTest.java} (95%) diff --git a/rest-assured/pom.xml b/rest-assured/pom.xml index 3d1abefeb1..bbeef8bb9c 100644 --- a/rest-assured/pom.xml +++ b/rest-assured/pom.xml @@ -215,9 +215,57 @@ 8 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + + 2.8.5 1.8 @@ -255,6 +303,7 @@ 4.12 3.6.0 + 2.19.1 diff --git a/rest-assured/src/test/java/com/baeldung/restassured/RestAssured2Test.java b/rest-assured/src/test/java/com/baeldung/restassured/RestAssured2IntegrationTest.java similarity index 92% rename from rest-assured/src/test/java/com/baeldung/restassured/RestAssured2Test.java rename to rest-assured/src/test/java/com/baeldung/restassured/RestAssured2IntegrationTest.java index 067756823b..13ba3ccac9 100644 --- a/rest-assured/src/test/java/com/baeldung/restassured/RestAssured2Test.java +++ b/rest-assured/src/test/java/com/baeldung/restassured/RestAssured2IntegrationTest.java @@ -15,7 +15,7 @@ import static io.restassured.RestAssured.get; import com.github.tomakehurst.wiremock.WireMockServer; -public class RestAssured2Test { +public class RestAssured2IntegrationTest { private WireMockServer wireMockServer = new WireMockServer(); private static final String EVENTS_PATH = "/odds"; @@ -41,7 +41,7 @@ public class RestAssured2Test { private static String getJson() { - return Util.inputStreamToString(new RestAssured2Test().getClass() + return Util.inputStreamToString(new RestAssured2IntegrationTest().getClass() .getResourceAsStream("/odds.json")); } diff --git a/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredTest.java b/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredIntegrationTest.java similarity index 96% rename from rest-assured/src/test/java/com/baeldung/restassured/RestAssuredTest.java rename to rest-assured/src/test/java/com/baeldung/restassured/RestAssuredIntegrationTest.java index 06f54aae24..f14d9920b6 100644 --- a/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredTest.java +++ b/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredIntegrationTest.java @@ -20,7 +20,7 @@ import com.github.fge.jsonschema.cfg.ValidationConfiguration; import com.github.fge.jsonschema.main.JsonSchemaFactory; import com.github.tomakehurst.wiremock.WireMockServer; -public class RestAssuredTest { +public class RestAssuredIntegrationTest { private WireMockServer wireMockServer = new WireMockServer(); private static final String EVENTS_PATH = "/events?id=390"; @@ -99,7 +99,7 @@ public class RestAssuredTest { } private static String getEventJson() { - return Util.inputStreamToString(RestAssuredTest.class + return Util.inputStreamToString(RestAssuredIntegrationTest.class .getResourceAsStream("/event_0.json")); } diff --git a/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXML2Test.java b/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXML2IntegrationTest.java similarity index 91% rename from rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXML2Test.java rename to rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXML2IntegrationTest.java index 597280c7c0..b77f24b15f 100644 --- a/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXML2Test.java +++ b/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXML2IntegrationTest.java @@ -15,7 +15,7 @@ import static io.restassured.RestAssured.get; import com.github.tomakehurst.wiremock.WireMockServer; -public class RestAssuredXML2Test { +public class RestAssuredXML2IntegrationTest { private WireMockServer wireMockServer = new WireMockServer(); private static final String EVENTS_PATH = "/teachers"; @@ -42,7 +42,7 @@ public class RestAssuredXML2Test { private static String getXml() { return Util - .inputStreamToString(new RestAssuredXML2Test().getClass().getResourceAsStream("/teachers.xml")); + .inputStreamToString(new RestAssuredXML2IntegrationTest().getClass().getResourceAsStream("/teachers.xml")); } @After diff --git a/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXMLTest.java b/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXMLIntegrationTest.java similarity index 95% rename from rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXMLTest.java rename to rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXMLIntegrationTest.java index 315dc76169..10aef63cdb 100644 --- a/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXMLTest.java +++ b/rest-assured/src/test/java/com/baeldung/restassured/RestAssuredXMLIntegrationTest.java @@ -25,7 +25,7 @@ import com.github.fge.jsonschema.SchemaVersion; import com.github.fge.jsonschema.cfg.ValidationConfiguration; import com.github.fge.jsonschema.main.JsonSchemaFactory; import com.github.tomakehurst.wiremock.WireMockServer; -public class RestAssuredXMLTest { +public class RestAssuredXMLIntegrationTest { private WireMockServer wireMockServer = new WireMockServer(); private static final String EVENTS_PATH = "/employees"; private static final String APPLICATION_XML = "application/xml"; @@ -88,7 +88,7 @@ public class RestAssuredXMLTest { private static String getXml() { return Util - .inputStreamToString(new RestAssuredXMLTest().getClass().getResourceAsStream("/employees.xml")); + .inputStreamToString(new RestAssuredXMLIntegrationTest().getClass().getResourceAsStream("/employees.xml")); } @After diff --git a/spring-rest-docs/pom.xml b/spring-rest-docs/pom.xml index 2e8a70e96b..2acb6b4071 100644 --- a/spring-rest-docs/pom.xml +++ b/spring-rest-docs/pom.xml @@ -65,9 +65,10 @@ org.apache.maven.plugins maven-surefire-plugin - - **/*IntegrationTest.java - + + **/*IntegrationTest.java + **/*LiveTest.java + @@ -96,5 +97,41 @@ + + + integration + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + From de2080f59f1d2f6d8562538820491b5263674bb2 Mon Sep 17 00:00:00 2001 From: felipe-gdr Date: Tue, 20 Dec 2016 19:31:30 -0200 Subject: [PATCH 371/399] BAEL-127: Spring Security - @PreFilter and @PostFilter (#911) * BAEL-127: simple app with filters * removed data rest dependency, final adjustments * added first live test for the rest api * move filters code to new module * moved to root of module, create service layer, standard pom * added spring-security-core module to root pom --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 36b1a57773..51373b07cc 100644 --- a/pom.xml +++ b/pom.xml @@ -126,6 +126,7 @@ spring-rest-docs spring-rest spring-security-basic-auth + spring-security-core spring-security-custom-permission spring-security-mvc-custom spring-security-mvc-digest-auth @@ -155,4 +156,4 @@ pdf - \ No newline at end of file + From 66e6ae6c1974dc5890040b0891a1b7b432d29431 Mon Sep 17 00:00:00 2001 From: Zeger Hendrikse Date: Tue, 20 Dec 2016 22:44:47 +0100 Subject: [PATCH 372/399] Modified code to reflect the code from the article --- .../java/org/baeldung/config/RegistrationController.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java index 025001ac44..da8f5f0e73 100644 --- a/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java +++ b/spring-security-client/spring-security-thymeleaf-authentication/src/main/java/org/baeldung/config/RegistrationController.java @@ -30,7 +30,7 @@ public class RegistrationController { private static final Logger logger = LoggerFactory.getLogger(RegistrationController.class); @Autowired - AuthenticationManager authenticationManager; + private AuthenticationManager authenticationManager; /** * For demo purposes this need only be a GET request method @@ -49,8 +49,6 @@ public class RegistrationController { String username = "user"; String password = "password"; - String view = "registrationSuccess"; - if (requestQualifiesForManualAuthentication()) { try { authenticate(username, password, request, response); @@ -58,12 +56,12 @@ public class RegistrationController { } catch (BadCredentialsException bce) { logger.debug("Authentication failure: bad credentials"); bce.printStackTrace(); - view = "systemError"; // assume a low-level error, since the registration + return "systemError"; // assume a low-level error, since the registration // form would have been successfully validated } } - return view; + return "registrationSuccess"; } private boolean requestQualifiesForManualAuthentication() { From 8442fc354b8efca75497bc23bfa421634faf3b96 Mon Sep 17 00:00:00 2001 From: Zeger Hendrikse Date: Tue, 20 Dec 2016 23:00:35 +0100 Subject: [PATCH 373/399] Merge changes from branch --- jaxb/book.xml | 5 ++ jaxb/pom.xml | 31 ++++++++--- jaxb/sample_book.xml | 5 ++ .../src/main/java/com/baeldung/jaxb/Book.java | 17 +++++- .../src/main/java/com/baeldung/jaxb/Main.java | 4 +- .../java/com/baeldung/jaxb/test/JaxbTest.java | 54 +++++++++++++++++++ 6 files changed, 106 insertions(+), 10 deletions(-) create mode 100644 jaxb/book.xml create mode 100644 jaxb/sample_book.xml create mode 100644 jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java diff --git a/jaxb/book.xml b/jaxb/book.xml new file mode 100644 index 0000000000..605d531b16 --- /dev/null +++ b/jaxb/book.xml @@ -0,0 +1,5 @@ + + + Book1 + 2016-12-16T17:28:49.718Z + diff --git a/jaxb/pom.xml b/jaxb/pom.xml index 6c36956913..115a632d7b 100644 --- a/jaxb/pom.xml +++ b/jaxb/pom.xml @@ -23,7 +23,13 @@ com.sun.istack istack-commons-runtime - ${istack.version} + 3.0.2 + + + + commons-io + commons-io + 2.5 @@ -43,7 +49,18 @@ logback-core ${logback.version} - + + + junit + junit + ${junit.version} + + + + org.apache.commons + commons-lang3 + 3.5 + @@ -60,7 +77,7 @@ org.eclipse.m2e lifecycle-mapping - ${lifecycle-mapping.version} + 1.0.0 @@ -158,16 +175,14 @@ 2.2.11 - 3.0.2 - 1.7.21 1.1.7 - 1.0.0 - 3.6.0 + 3.5.1 2.3 + 4.12 - \ No newline at end of file + diff --git a/jaxb/sample_book.xml b/jaxb/sample_book.xml new file mode 100644 index 0000000000..605d531b16 --- /dev/null +++ b/jaxb/sample_book.xml @@ -0,0 +1,5 @@ + + + Book1 + 2016-12-16T17:28:49.718Z + diff --git a/jaxb/src/main/java/com/baeldung/jaxb/Book.java b/jaxb/src/main/java/com/baeldung/jaxb/Book.java index 8455d3e6df..b7a5d39ce5 100644 --- a/jaxb/src/main/java/com/baeldung/jaxb/Book.java +++ b/jaxb/src/main/java/com/baeldung/jaxb/Book.java @@ -8,6 +8,10 @@ import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; + @XmlRootElement(name = "book") @XmlType(propOrder = { "id", "name", "date" }) public class Book { @@ -53,6 +57,17 @@ public class Book { @Override public String toString() { - return "Book [id=" + id + ", name=" + name + ", author=" + author + ", date=" + date + "]"; + return ToStringBuilder.reflectionToString(this); } + + @Override + public boolean equals(Object obj) { + return EqualsBuilder.reflectionEquals(this, obj); + } + + @Override + public int hashCode() { + return HashCodeBuilder.reflectionHashCode(this); + } + } diff --git a/jaxb/src/main/java/com/baeldung/jaxb/Main.java b/jaxb/src/main/java/com/baeldung/jaxb/Main.java index aaf062dd4e..46adfb3c60 100644 --- a/jaxb/src/main/java/com/baeldung/jaxb/Main.java +++ b/jaxb/src/main/java/com/baeldung/jaxb/Main.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; +import java.util.TimeZone; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; @@ -16,7 +17,8 @@ public class Main { book.setId(1L); book.setName("Book1"); book.setAuthor("Author1"); - book.setDate(new Date()); + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + book.setDate(new Date(1481909329718L)); JAXBContext context = JAXBContext.newInstance(Book.class); Marshaller marshaller = context.createMarshaller(); diff --git a/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java b/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java new file mode 100644 index 0000000000..daf3864436 --- /dev/null +++ b/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java @@ -0,0 +1,54 @@ +package com.baeldung.jaxb.test; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Date; +import java.util.TimeZone; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; + +import org.apache.commons.io.FileUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import com.baeldung.jaxb.Book; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class JaxbTest { + Book book; + JAXBContext context; + + @Before + public void before() throws JAXBException { + book = new Book(); + book.setId(1L); + book.setName("Book1"); + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + book.setDate(new Date(1481909329718L)); + context = JAXBContext.newInstance(Book.class); + } + + @Test + public void marshal() throws JAXBException, IOException { + Marshaller marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + marshaller.marshal(book, new File("./book.xml")); + String sampleBookXML = FileUtils.readFileToString(new File("./sample_book.xml"), "UTF-8"); + String marshallerBookXML = FileUtils.readFileToString(new File("./book.xml"), "UTF-8"); + Assert.assertEquals(sampleBookXML, marshallerBookXML); + } + + @Test + public void unMashal() throws JAXBException, IOException { + Unmarshaller unmarshaller = context.createUnmarshaller(); + Book unMarshallerbook = (Book) unmarshaller.unmarshal(new FileReader("./book.xml")); + Assert.assertEquals(book, unMarshallerbook); + } +} From 8f21e2bc52eb634476af663e817728b82dac8052 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 21 Dec 2016 07:39:10 +0100 Subject: [PATCH 374/399] BAEL-315 - skipping live test --- spring-cloud/spring-cloud-bootstrap/gateway/pom.xml | 9 +++++++++ ...licationTest.java => GatewayApplicationLiveTest.java} | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) rename spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/{GatewayApplicationTest.java => GatewayApplicationLiveTest.java} (98%) diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml index d1bff0b14c..9186f12226 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml @@ -75,6 +75,15 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LiveTest.java + + + diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationTest.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationLiveTest.java similarity index 98% rename from spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationTest.java rename to spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationLiveTest.java index d6ceac32f0..cea431d461 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationTest.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/test/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplicationLiveTest.java @@ -7,7 +7,7 @@ import org.springframework.http.*; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; -public class GatewayApplicationTest { +public class GatewayApplicationLiveTest { @Test public void testAccess() throws Exception { From 42067af3e74eb1afa1b795ec311fe87345b421fe Mon Sep 17 00:00:00 2001 From: DOHA Date: Wed, 21 Dec 2016 14:22:07 +0200 Subject: [PATCH 375/399] adding missing modules to parent pom --- pom.xml | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 51373b07cc..163982039c 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,8 @@ annotations apache-cxf - apache-fop + apache-fop + aspectj assertj autovalue @@ -29,6 +30,8 @@ deltaspike dozer + ejb + feign flyway @@ -45,6 +48,7 @@ httpclient hystrix + imageprocessing immutables jackson @@ -52,6 +56,7 @@ java-cassandra javax-servlets javaxval + jaxb jee7 jjwt jpa-storedprocedure @@ -60,8 +65,9 @@ json junit5 - log4j log-mdc + log4j + log4j2 lombok mapstruct @@ -71,6 +77,7 @@ orika patterns + pdf querydsl @@ -111,8 +118,9 @@ spring-jpa spring-katharsis spring-mockito + spring-mvc-email + spring-mvc-forms spring-mvc-java - spring-mvc-forms spring-mvc-no-xml spring-mvc-tiles spring-mvc-velocity @@ -126,6 +134,13 @@ spring-rest-docs spring-rest spring-security-basic-auth + spring-security-client/spring-security-jsp-authentication + spring-security-client/spring-security-jsp-authorize + spring-security-client/spring-security-jsp-config + spring-security-client/spring-security-mvc + spring-security-client/spring-security-thymeleaf-authentication + spring-security-client/spring-security-thymeleaf-authorize + spring-security-client/spring-security-thymeleaf-config spring-security-core spring-security-custom-permission spring-security-mvc-custom @@ -141,6 +156,7 @@ spring-security-rest spring-security-x509 spring-session + spring-social-login spring-spel spring-thymeleaf spring-userservice @@ -153,7 +169,6 @@ xml xmlunit2 xstream - pdf From acdea70d4c22f9becdf2e4b6b0566c831a05e843 Mon Sep 17 00:00:00 2001 From: Ante Pocedulic Date: Wed, 21 Dec 2016 20:34:34 +0100 Subject: [PATCH 376/399] Advanced Camel article (#905) * - changed test package name from org.baeldung to com.baeldung - streams are added where neccessary - format fixes * Adding Java config for Content Based File Router * Adding Java config for Content Based File Router --- spring-apache-camel/pom.xml | 8 +- .../cfg/ContentBasedFileRouterConfig.java | 26 ++++++ ...ContentBasedFileRouterIntegrationTest.java | 85 +++++++++++-------- .../file/processor/FileProcessorTest.java | 68 +++++++++++++++ 4 files changed, 151 insertions(+), 36 deletions(-) create mode 100644 spring-apache-camel/src/main/java/com/baeldung/camel/file/cfg/ContentBasedFileRouterConfig.java create mode 100644 spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java diff --git a/spring-apache-camel/pom.xml b/spring-apache-camel/pom.xml index 4daa3c1e9a..da7dad1a1f 100644 --- a/spring-apache-camel/pom.xml +++ b/spring-apache-camel/pom.xml @@ -9,7 +9,7 @@ http://maven.apache.org - 2.16.1 + 2.18.1 4.3.4.RELEASE 2.19.1 1.8 @@ -53,6 +53,12 @@ slf4j-log4j12 1.7.21
+ + org.apache.camel + camel-spring-javaconfig + ${env.camel.version} + + diff --git a/spring-apache-camel/src/main/java/com/baeldung/camel/file/cfg/ContentBasedFileRouterConfig.java b/spring-apache-camel/src/main/java/com/baeldung/camel/file/cfg/ContentBasedFileRouterConfig.java new file mode 100644 index 0000000000..ceb68dfa3b --- /dev/null +++ b/spring-apache-camel/src/main/java/com/baeldung/camel/file/cfg/ContentBasedFileRouterConfig.java @@ -0,0 +1,26 @@ +package com.baeldung.camel.file.cfg; + +import java.util.Arrays; +import java.util.List; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spring.javaconfig.CamelConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.camel.file.ContentBasedFileRouter; + +@Configuration +public class ContentBasedFileRouterConfig extends CamelConfiguration { + + @Bean + ContentBasedFileRouter getContentBasedFileRouter() { + return new ContentBasedFileRouter(); + } + + @Override + public List routes() { + return Arrays.asList(getContentBasedFileRouter()); + } + +} diff --git a/spring-apache-camel/src/test/java/com/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java index b0920fe3b5..23f5787e4e 100644 --- a/spring-apache-camel/src/test/java/com/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java +++ b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/ContentBasedFileRouterIntegrationTest.java @@ -7,50 +7,65 @@ import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +import com.baeldung.camel.file.cfg.ContentBasedFileRouterConfig; + @RunWith(JUnit4.class) public class ContentBasedFileRouterIntegrationTest { - private static final long DURATION_MILIS = 10000; - private static final String SOURCE_FOLDER = "src/test/source-folder"; - private static final String DESTINATION_FOLDER_TXT = "src/test/destination-folder-txt"; - private static final String DESTINATION_FOLDER_OTHER = "src/test/destination-folder-other"; + private static final long DURATION_MILIS = 10000; + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER_TXT = "src/test/destination-folder-txt"; + private static final String DESTINATION_FOLDER_OTHER = "src/test/destination-folder-other"; - @Before - public void setUp() throws Exception { - File sourceFolder = new File(SOURCE_FOLDER); - File destinationFolderTxt = new File(DESTINATION_FOLDER_TXT); - File destinationFolderOther = new File(DESTINATION_FOLDER_OTHER); + @Before + public void setUp() throws Exception { + File sourceFolder = new File(SOURCE_FOLDER); + File destinationFolderTxt = new File(DESTINATION_FOLDER_TXT); + File destinationFolderOther = new File(DESTINATION_FOLDER_OTHER); - cleanFolder(sourceFolder); - cleanFolder(destinationFolderTxt); - cleanFolder(destinationFolderOther); + cleanFolder(sourceFolder); + cleanFolder(destinationFolderTxt); + cleanFolder(destinationFolderOther); - sourceFolder.mkdirs(); - File file1 = new File(SOURCE_FOLDER + "/File1.txt"); - File file2 = new File(SOURCE_FOLDER + "/File2.csv"); - file1.createNewFile(); - file2.createNewFile(); - } + sourceFolder.mkdirs(); + File file1 = new File(SOURCE_FOLDER + "/File1.txt"); + File file2 = new File(SOURCE_FOLDER + "/File2.csv"); + file1.createNewFile(); + file2.createNewFile(); + } - private void cleanFolder(File folder) { - File[] files = folder.listFiles(); - if (files != null) { - for (File file : files) { - if (file.isFile()) { - file.delete(); - } - } - } - } + private void cleanFolder(File folder) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile()) { + file.delete(); + } + } + } + } - @Test - @Ignore - public void routeTest() throws InterruptedException { - ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-ContentBasedFileRouterTest.xml"); - Thread.sleep(DURATION_MILIS); - applicationContext.close(); + @Test + @Ignore + public void routeWithXMLConfigTest() throws InterruptedException { + AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext( + "camel-context-ContentBasedFileRouterTest.xml"); + Thread.sleep(DURATION_MILIS); + applicationContext.close(); - } + } + + @Test + @Ignore + public void routeWithJavaConfigTest() throws InterruptedException { + AbstractApplicationContext applicationContext = new AnnotationConfigApplicationContext( + ContentBasedFileRouterConfig.class); + Thread.sleep(DURATION_MILIS); + applicationContext.close(); + + } } \ No newline at end of file diff --git a/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java new file mode 100644 index 0000000000..c4a3ced84f --- /dev/null +++ b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java @@ -0,0 +1,68 @@ +package com.apache.camel.file.processor; + +import java.io.File; + +import org.apache.camel.CamelContext; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.DefaultCamelContext; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.baeldung.camel.file.FileProcessor; + + +public class FileProcessorTest { + + private static final long DURATION_MILIS = 10000; + private static final String SOURCE_FOLDER = "src/test/source-folder"; + private static final String DESTINATION_FOLDER = "src/test/destination-folder"; + + @Before + public void setUp() throws Exception { + File sourceFolder = new File(SOURCE_FOLDER); + File destinationFolder = new File(DESTINATION_FOLDER); + + cleanFolder(sourceFolder); + cleanFolder(destinationFolder); + + sourceFolder.mkdirs(); + File file1 = new File(SOURCE_FOLDER + "/File1.txt"); + File file2 = new File(SOURCE_FOLDER + "/File2.txt"); + file1.createNewFile(); + file2.createNewFile(); + } + + private void cleanFolder(File folder) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile()) { + file.delete(); + } + } + } + } + + @Test + public void moveFolderContentJavaDSLTest() throws Exception { + final CamelContext camelContext = new DefaultCamelContext(); + camelContext.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("file://" + SOURCE_FOLDER + "?delete=true").process(new FileProcessor()).to("file://" + DESTINATION_FOLDER); + } + }); + camelContext.start(); + Thread.sleep(DURATION_MILIS); + camelContext.stop(); + } + + @Test + public void moveFolderContentSpringDSLTest() throws InterruptedException { + ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-test.xml"); + Thread.sleep(DURATION_MILIS); + applicationContext.close(); + + } +} \ No newline at end of file From 3b6d709108d17b3a206d1de49f39279bfc9324b8 Mon Sep 17 00:00:00 2001 From: Egima profile Date: Wed, 21 Dec 2016 23:07:46 +0300 Subject: [PATCH 377/399] Code for Map (#909) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps * fixed network interface tests * removed filetest change * made changes to NIO2 FileTest names * added project for asyncronous channel apis * added project for NIO2 advanced filesystems APIS * merge conflicts * merged changes to asyncfiletest with future get API * removed while loops from async client and server * added project for java8 optional * fixed merge conflicts in spring-core * fixed optional * fixed optional * fixed asyncechotest * shifted optional to own package * made additional tests to demo filter API * added code for Map --- .../java/com/baeldung/java/map/MyKey.java | 59 +++ .../baeldung/java/map/MyLinkedHashMap.java | 25 ++ .../java/com/baeldung/java/map/MapTest.java | 350 ++++++++++++++++++ 3 files changed, 434 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/java/map/MyKey.java create mode 100644 core-java/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java create mode 100644 core-java/src/test/java/com/baeldung/java/map/MapTest.java diff --git a/core-java/src/main/java/com/baeldung/java/map/MyKey.java b/core-java/src/main/java/com/baeldung/java/map/MyKey.java new file mode 100644 index 0000000000..a2587c1dc1 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/map/MyKey.java @@ -0,0 +1,59 @@ +package com.baeldung.java.map; + +public class MyKey { + private String name; + private int id; + + public MyKey(int id, String name) { + this.id = id; + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + @Override + public int hashCode() { + System.out.println("Calling hashCode()"); + return id; + } + + @Override + public String toString() { + return "MyKey [name=" + name + ", id=" + id + "]"; + } + + @Override + public boolean equals(Object obj) { + System.out.println("Calling equals() for key: " + obj); + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + MyKey other = (MyKey) obj; + if (id != other.id) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + +} diff --git a/core-java/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java b/core-java/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java new file mode 100644 index 0000000000..e1c0071ed3 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/java/map/MyLinkedHashMap.java @@ -0,0 +1,25 @@ +package com.baeldung.java.map; + +import java.util.LinkedHashMap; +import java.util.Map; + +public class MyLinkedHashMap extends LinkedHashMap { + + /** + * + */ + private static final long serialVersionUID = 1L; + private static final int MAX_ENTRIES = 5; + + + public MyLinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) { + super(initialCapacity, loadFactor, accessOrder); + } + + + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() > MAX_ENTRIES; + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/map/MapTest.java b/core-java/src/test/java/com/baeldung/java/map/MapTest.java new file mode 100644 index 0000000000..a348869a5c --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/map/MapTest.java @@ -0,0 +1,350 @@ +package com.baeldung.java.map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.Collection; +import java.util.Comparator; +import java.util.ConcurrentModificationException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.TreeMap; + +import org.junit.Test; + +public class MapTest { + @Test + public void givenHashMap_whenRetrievesKeyset_thenCorrect() { + Map map = new HashMap<>(); + map.put("name", "baeldung"); + map.put("type", "blog"); + + Set keys = map.keySet(); + + assertEquals(2, keys.size()); + assertTrue(keys.contains("name")); + assertTrue(keys.contains("type")); + } + + @Test + public void givenHashMap_whenRetrievesValues_thenCorrect() { + Map map = new HashMap<>(); + map.put("name", "baeldung"); + map.put("type", "blog"); + + Collection values = map.values(); + + assertEquals(2, values.size()); + assertTrue(values.contains("baeldung")); + assertTrue(values.contains("blog")); + } + + @Test + public void givenHashMap_whenRetrievesEntries_thenCorrect() { + Map map = new HashMap<>(); + map.put("name", "baeldung"); + map.put("type", "blog"); + + Set> entries = map.entrySet(); + + assertEquals(2, entries.size()); + for (Entry e : entries) { + String key = e.getKey(); + String val = e.getValue(); + assertTrue(key.equals("name") || key.equals("type")); + assertTrue(val.equals("baeldung") || val.equals("blog")); + } + } + + @Test + public void givenKeySet_whenChangeReflectsInMap_thenCorrect() { + Map map = new HashMap<>(); + map.put("name", "baeldung"); + map.put("type", "blog"); + + assertEquals(2, map.size()); + + Set keys = map.keySet(); + + keys.remove("name"); + assertEquals(1, map.size()); + } + + @Test(expected = ConcurrentModificationException.class) + public void givenIterator_whenFailsFastOnModification_thenCorrect() { + Map map = new HashMap<>(); + map.put("name", "baeldung"); + map.put("type", "blog"); + + Set keys = map.keySet(); + Iterator it = keys.iterator(); + map.remove("type"); + while (it.hasNext()) { + String key = it.next(); + } + } + + public void givenIterator_whenRemoveWorks_thenCorrect() { + Map map = new HashMap<>(); + map.put("name", "baeldung"); + map.put("type", "blog"); + + Set keys = map.keySet(); + Iterator it = keys.iterator(); + while (it.hasNext()) { + it.next(); + it.remove(); + } + assertEquals(0, map.size()); + } + + @Test + public void whenHashCodeIsCalledOnPut_thenCorrect() { + MyKey key = new MyKey(1, "name"); + Map map = new HashMap<>(); + map.put(key, "val"); + } + + @Test + public void whenHashCodeIsCalledOnGet_thenCorrect() { + MyKey key = new MyKey(1, "name"); + Map map = new HashMap<>(); + map.put(key, "val"); + map.get(key); + } + + @Test + public void whenGetWorks_thenCorrect() { + Map map = new HashMap<>(); + map.put("key", "val"); + + String val = map.get("key"); + + assertEquals("val", val); + } + + @Test + public void givenNewKey_whenPutReturnsNull_thenCorrect() { + Map map = new HashMap<>(); + + String rtnVal = map.put("key1", "val1"); + + assertNull(rtnVal); + } + + @Test + public void givenUnmappedKey_whenGetReturnsNull_thenCorrect() { + Map map = new HashMap<>(); + + String rtnVal = map.get("key1"); + + assertNull(rtnVal); + } + + @Test + public void givenNullVal_whenPutReturnsNull_thenCorrect() { + Map map = new HashMap<>(); + + String rtnVal = map.put("key1", null); + + assertNull(rtnVal); + } + + @Test + public void givenNullKeyAndVal_whenAccepts_thenCorrect() { + Map map = new HashMap<>(); + + map.put(null, null); + } + + @Test + public void givenNullVal_whenRetrieves_thenCorrect() { + Map map = new HashMap<>(); + map.put("key", null); + + String val = map.get("key"); + + assertNull(val); + } + + @Test + public void whenContainsDistinguishesNullValues_thenCorrect() { + Map map = new HashMap<>(); + + String val1 = map.get("key"); + boolean valPresent = map.containsKey("key"); + + assertNull(val1); + assertFalse(valPresent); + + map.put("key", null); + String val = map.get("key"); + valPresent = map.containsKey("key"); + + assertNull(val); + assertTrue(valPresent); + + } + + @Test + public void whenPutReturnsPrevValue_thenCorrect() { + Map map = new HashMap<>(); + map.put("key1", "val1"); + String rtnVal = map.put("key1", "val2"); + + assertEquals("val1", rtnVal); + } + + + + @Test + public void whenCallsEqualsOnCollision_thenCorrect() { + HashMap map = new HashMap<>(); + MyKey k1 = new MyKey(1, "firstKey"); + MyKey k2 = new MyKey(2, "secondKey"); + MyKey k3 = new MyKey(2, "thirdKey"); + + System.out.println("storing value for k1"); + map.put(k1, "firstValue"); + + System.out.println("storing value for k2"); + map.put(k2, "secondValue"); + + System.out.println("storing value for k3"); + map.put(k3, "thirdValue"); + + System.out.println("retrieving value for k1"); + String v1 = map.get(k1); + + System.out.println("retrieving value for k2"); + String v2 = map.get(k2); + + System.out.println("retrieving value for k3"); + String v3 = map.get(k3); + + assertEquals("firstValue", v1); + assertEquals("secondValue", v2); + assertEquals("thirdValue", v3); + + } + + @Test + public void givenLinkedHashMap_whenGetsOrderedKeyset_thenCorrect() { + LinkedHashMap map = new LinkedHashMap<>(); + map.put(1, null); + map.put(2, null); + map.put(3, null); + map.put(4, null); + map.put(5, null); + Set keys = map.keySet(); + Integer[] arr = keys.toArray(new Integer[0]); + for (int i = 0; i < arr.length; i++) { + assertEquals(new Integer(i + 1), arr[i]); + + } + } + + @Test + public void givenLinkedHashMap_whenAccessOrderWorks_thenCorrect() { + LinkedHashMap map = new LinkedHashMap<>(16, .75f, true); + map.put(1, null); + map.put(2, null); + map.put(3, null); + map.put(4, null); + map.put(5, null); + Set keys = map.keySet(); + assertEquals("[1, 2, 3, 4, 5]", keys.toString()); + map.get(4); + assertEquals("[1, 2, 3, 5, 4]", keys.toString()); + map.get(1); + assertEquals("[2, 3, 5, 4, 1]", keys.toString()); + map.get(3); + assertEquals("[2, 5, 4, 1, 3]", keys.toString()); + } + + @Test + public void givenLinkedHashMap_whenRemovesEldestEntry_thenCorrect() { + LinkedHashMap map = new MyLinkedHashMap<>(16, .75f, true); + map.put(1, null); + map.put(2, null); + map.put(3, null); + map.put(4, null); + map.put(5, null); + Set keys = map.keySet(); + assertEquals("[1, 2, 3, 4, 5]", keys.toString()); + map.put(6, null); + assertEquals("[2, 3, 4, 5, 6]", keys.toString()); + map.put(7, null); + assertEquals("[3, 4, 5, 6, 7]", keys.toString()); + map.put(8, null); + assertEquals("[4, 5, 6, 7, 8]", keys.toString()); + } + + @Test + public void givenTreeMap_whenOrdersEntriesNaturally_thenCorrect() { + TreeMap map = new TreeMap<>(); + map.put(3, "val"); + map.put(2, "val"); + map.put(1, "val"); + map.put(5, "val"); + map.put(4, "val"); + assertEquals("[1, 2, 3, 4, 5]", map.keySet().toString()); + } + + @Test + public void givenTreeMap_whenOrdersEntriesNaturally_thenCorrect2() { + TreeMap map = new TreeMap<>(); + map.put("c", "val"); + map.put("b", "val"); + map.put("a", "val"); + map.put("e", "val"); + map.put("d", "val"); + + assertEquals("[a, b, c, d, e]", map.keySet().toString()); + } + + @Test + public void givenTreeMap_whenOrdersEntriesByComparator_thenCorrect() { + TreeMap map = new TreeMap<>(new Comparator() { + + @Override + public int compare(Integer o1, Integer o2) { + return o2 - o1; + } + }); + map.put(3, "val"); + map.put(2, "val"); + map.put(1, "val"); + map.put(5, "val"); + map.put(4, "val"); + + assertEquals("[5, 4, 3, 2, 1]", map.keySet().toString()); + } + + @Test + public void givenTreeMap_whenPerformsQueries_thenCorrect() { + TreeMap map = new TreeMap<>(); + map.put(3, "val"); + map.put(2, "val"); + map.put(1, "val"); + map.put(5, "val"); + map.put(4, "val"); + + Integer highestKey = map.lastKey(); + Integer lowestKey = map.firstKey(); + Set keysLessThan3 = map.headMap(3).keySet(); + Set keysGreaterThanEqTo3 = map.tailMap(3).keySet(); + + assertEquals(new Integer(5), highestKey); + assertEquals(new Integer(1), lowestKey); + assertEquals("[1, 2]", keysLessThan3.toString()); + assertEquals("[3, 4, 5]", keysGreaterThanEqTo3.toString()); + } + +} From 6886ebc511176b17b5f584474f157f27e044d36d Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 22 Dec 2016 09:15:11 +0200 Subject: [PATCH 378/399] minor maven cleanup --- autovalue/pom.xml | 11 ++++++----- spring-mvc-email/pom.xml | 7 ++++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/autovalue/pom.xml b/autovalue/pom.xml index 2f6601c30d..57c4662e5c 100644 --- a/autovalue/pom.xml +++ b/autovalue/pom.xml @@ -2,10 +2,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.baeldung - autovalue-tutorial + autovalue 1.0 - AutoValue - + autovalue + @@ -20,7 +20,7 @@ - + com.google.auto.value @@ -35,10 +35,11 @@ test - + 1.3 4.12 3.6.0 + diff --git a/spring-mvc-email/pom.xml b/spring-mvc-email/pom.xml index a04097e027..5d72bb4a1c 100644 --- a/spring-mvc-email/pom.xml +++ b/spring-mvc-email/pom.xml @@ -1,11 +1,12 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.baeldung.spring - SpringMVCEmail + spring-mvc-email 1.0 + spring-mvc-email war @@ -40,7 +41,6 @@ 1.8 - @@ -49,4 +49,5 @@ + From ba897222362946edc4676b076ab8ae6f7e2a063d Mon Sep 17 00:00:00 2001 From: pivovarit Date: Thu, 22 Dec 2016 10:22:03 +0100 Subject: [PATCH 379/399] Reformat JaxbTest --- .../java/com/baeldung/jaxb/test/JaxbTest.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java b/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java index daf3864436..10febabacd 100644 --- a/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java +++ b/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java @@ -1,16 +1,6 @@ package com.baeldung.jaxb.test; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.Date; -import java.util.TimeZone; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; - +import com.baeldung.jaxb.Book; import org.apache.commons.io.FileUtils; import org.junit.Assert; import org.junit.Before; @@ -18,12 +8,20 @@ import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; -import com.baeldung.jaxb.Book; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Date; +import java.util.TimeZone; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class JaxbTest { - Book book; - JAXBContext context; + private Book book; + private JAXBContext context; @Before public void before() throws JAXBException { @@ -42,6 +40,7 @@ public class JaxbTest { marshaller.marshal(book, new File("./book.xml")); String sampleBookXML = FileUtils.readFileToString(new File("./sample_book.xml"), "UTF-8"); String marshallerBookXML = FileUtils.readFileToString(new File("./book.xml"), "UTF-8"); + Assert.assertEquals(sampleBookXML, marshallerBookXML); } @@ -49,6 +48,7 @@ public class JaxbTest { public void unMashal() throws JAXBException, IOException { Unmarshaller unmarshaller = context.createUnmarshaller(); Book unMarshallerbook = (Book) unmarshaller.unmarshal(new FileReader("./book.xml")); + Assert.assertEquals(book, unMarshallerbook); } } From eadf45d6280a5560eee30246eb9dad84234a67b0 Mon Sep 17 00:00:00 2001 From: jaysridhar Date: Thu, 22 Dec 2016 15:07:13 +0530 Subject: [PATCH 380/399] Added demonstration of @JsonFormat and associated test. (#906) --- .../jacksonannotation/format/User.java | 40 +++++++++++++++++++ .../format/JsonFormatTest.java | 39 ++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100755 jackson-annotations/src/main/java/com/baeldung/jacksonannotation/format/User.java create mode 100755 jackson-annotations/src/test/java/com/baeldung/jacksonannotation/format/JsonFormatTest.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/format/User.java b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/format/User.java new file mode 100755 index 0000000000..8e23a2c755 --- /dev/null +++ b/jackson-annotations/src/main/java/com/baeldung/jacksonannotation/format/User.java @@ -0,0 +1,40 @@ +package com.baeldung.jacksonannotation.format; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import com.baeldung.jacksonannotation.domain.Person; + +/** + * @author Jay Sridhar + * @version 1.0 + */ +public class User extends Person { + private String firstName; + private String lastName; + + @JsonFormat(shape = JsonFormat.Shape.STRING, + pattern = "yyyy-MM-dd@HH:mm:ss.SSSZ") + private Date createdDate; + + public User(String firstName,String lastName) { + super(firstName, lastName); + this.createdDate = new Date(); + } + + public Date getCreatedDate() { + return createdDate; + } + + @JsonFormat(shape = JsonFormat.Shape.STRING, + pattern = "yyyy-MM-dd@HH:mm:ss.SSSZ", + locale = "en_GB") + public Date getCurrentDate() { + return new Date(); + } + + @JsonFormat(shape = JsonFormat.Shape.NUMBER) + public Date getDateNum() { + return new Date(); + } +} diff --git a/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/format/JsonFormatTest.java b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/format/JsonFormatTest.java new file mode 100755 index 0000000000..e5547d2aa6 --- /dev/null +++ b/jackson-annotations/src/test/java/com/baeldung/jacksonannotation/format/JsonFormatTest.java @@ -0,0 +1,39 @@ +package com.baeldung.jacksonannotation.format; + +import java.util.Date; + +import com.fasterxml.jackson.core.JsonProcessingException; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import org.junit.Test; + +import static io.restassured.path.json.JsonPath.from; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.data.Percentage.withPercentage; + +/** + * @author Jay Sridhar + * @version 1.0 + */ +public class JsonFormatTest { + + @Test + public void whenSerializedDateFormat_thenCorrect() throws JsonProcessingException { + + User user = new User("Jay", "Sridhar"); + + String result = new ObjectMapper().writeValueAsString(user); + + // Expected to match: "2016-12-19@09:34:42.628+0000" + assertThat(from(result).getString("createdDate")) + .matches("\\d{4}\\-\\d{2}\\-\\d{2}@\\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\+\\d{4}"); + + // Expected to be close to current time + long now = new Date().getTime(); + assertThat(from(result).getLong("dateNum")) + .isCloseTo(now, withPercentage(10.0)); + + } +} From 0a9245cd52b277b6a362d63345a368799376d392 Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 22 Dec 2016 20:18:58 +0200 Subject: [PATCH 381/399] remove duplicate test --- .../file/processor/FileProcessorTest.java | 68 ------------------- 1 file changed, 68 deletions(-) delete mode 100644 spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java diff --git a/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java b/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java deleted file mode 100644 index c4a3ced84f..0000000000 --- a/spring-apache-camel/src/test/java/com/apache/camel/file/processor/FileProcessorTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.apache.camel.file.processor; - -import java.io.File; - -import org.apache.camel.CamelContext; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.impl.DefaultCamelContext; -import org.junit.Before; -import org.junit.Test; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -import com.baeldung.camel.file.FileProcessor; - - -public class FileProcessorTest { - - private static final long DURATION_MILIS = 10000; - private static final String SOURCE_FOLDER = "src/test/source-folder"; - private static final String DESTINATION_FOLDER = "src/test/destination-folder"; - - @Before - public void setUp() throws Exception { - File sourceFolder = new File(SOURCE_FOLDER); - File destinationFolder = new File(DESTINATION_FOLDER); - - cleanFolder(sourceFolder); - cleanFolder(destinationFolder); - - sourceFolder.mkdirs(); - File file1 = new File(SOURCE_FOLDER + "/File1.txt"); - File file2 = new File(SOURCE_FOLDER + "/File2.txt"); - file1.createNewFile(); - file2.createNewFile(); - } - - private void cleanFolder(File folder) { - File[] files = folder.listFiles(); - if (files != null) { - for (File file : files) { - if (file.isFile()) { - file.delete(); - } - } - } - } - - @Test - public void moveFolderContentJavaDSLTest() throws Exception { - final CamelContext camelContext = new DefaultCamelContext(); - camelContext.addRoutes(new RouteBuilder() { - @Override - public void configure() throws Exception { - from("file://" + SOURCE_FOLDER + "?delete=true").process(new FileProcessor()).to("file://" + DESTINATION_FOLDER); - } - }); - camelContext.start(); - Thread.sleep(DURATION_MILIS); - camelContext.stop(); - } - - @Test - public void moveFolderContentSpringDSLTest() throws InterruptedException { - ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("camel-context-test.xml"); - Thread.sleep(DURATION_MILIS); - applicationContext.close(); - - } -} \ No newline at end of file From 0467e93b9e43fe18a10928bf184523535fdd3832 Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 22 Dec 2016 21:08:13 +0200 Subject: [PATCH 382/399] rename tests --- .../baeldung/autovalue/{MoneyTest.java => MoneyUnitTest.java} | 2 +- .../xml/{DefaultParserTest.java => DefaultParserUnitTest.java} | 2 +- .../xml/{Dom4JParserTest.java => Dom4JParserUnitTest.java} | 2 +- .../xml/{JDomParserTest.java => JDomParserUnitTest.java} | 2 +- .../xml/{JaxbParserTest.java => JaxbParserUnitTest.java} | 2 +- .../baeldung/xml/{JaxenDemoTest.java => JaxenDemoUnitTest.java} | 2 +- .../xml/{StaxParserTest.java => StaxParserUnitTest.java} | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) rename autovalue/src/test/java/com/baeldung/autovalue/{MoneyTest.java => MoneyUnitTest.java} (98%) rename xml/src/test/java/com/baeldung/xml/{DefaultParserTest.java => DefaultParserUnitTest.java} (98%) rename xml/src/test/java/com/baeldung/xml/{Dom4JParserTest.java => Dom4JParserUnitTest.java} (98%) rename xml/src/test/java/com/baeldung/xml/{JDomParserTest.java => JDomParserUnitTest.java} (96%) rename xml/src/test/java/com/baeldung/xml/{JaxbParserTest.java => JaxbParserUnitTest.java} (96%) rename xml/src/test/java/com/baeldung/xml/{JaxenDemoTest.java => JaxenDemoUnitTest.java} (93%) rename xml/src/test/java/com/baeldung/xml/{StaxParserTest.java => StaxParserUnitTest.java} (94%) diff --git a/autovalue/src/test/java/com/baeldung/autovalue/MoneyTest.java b/autovalue/src/test/java/com/baeldung/autovalue/MoneyUnitTest.java similarity index 98% rename from autovalue/src/test/java/com/baeldung/autovalue/MoneyTest.java rename to autovalue/src/test/java/com/baeldung/autovalue/MoneyUnitTest.java index af3afe84fb..a9482125a6 100644 --- a/autovalue/src/test/java/com/baeldung/autovalue/MoneyTest.java +++ b/autovalue/src/test/java/com/baeldung/autovalue/MoneyUnitTest.java @@ -4,7 +4,7 @@ import static org.junit.Assert.*; import org.junit.Test; -public class MoneyTest { +public class MoneyUnitTest { @Test public void givenTwoSameValueMoneyObjects_whenEqualityTestFails_thenCorrect() { MutableMoney m1 = new MutableMoney(10000, "USD"); diff --git a/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java b/xml/src/test/java/com/baeldung/xml/DefaultParserUnitTest.java similarity index 98% rename from xml/src/test/java/com/baeldung/xml/DefaultParserTest.java rename to xml/src/test/java/com/baeldung/xml/DefaultParserUnitTest.java index 734e7a93cb..31b4e1aecd 100644 --- a/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/DefaultParserUnitTest.java @@ -8,7 +8,7 @@ import org.junit.Test; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -public class DefaultParserTest { +public class DefaultParserUnitTest { final String fileName = "src/test/resources/example.xml"; diff --git a/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java b/xml/src/test/java/com/baeldung/xml/Dom4JParserUnitTest.java similarity index 98% rename from xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java rename to xml/src/test/java/com/baeldung/xml/Dom4JParserUnitTest.java index 277eca8355..36b6e641f6 100644 --- a/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/Dom4JParserUnitTest.java @@ -11,7 +11,7 @@ import org.dom4j.Element; import org.dom4j.Node; import org.junit.Test; -public class Dom4JParserTest { +public class Dom4JParserUnitTest { final String fileName = "src/test/resources/example.xml"; diff --git a/xml/src/test/java/com/baeldung/xml/JDomParserTest.java b/xml/src/test/java/com/baeldung/xml/JDomParserUnitTest.java similarity index 96% rename from xml/src/test/java/com/baeldung/xml/JDomParserTest.java rename to xml/src/test/java/com/baeldung/xml/JDomParserUnitTest.java index 981458469f..bfe72e872a 100644 --- a/xml/src/test/java/com/baeldung/xml/JDomParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/JDomParserUnitTest.java @@ -10,7 +10,7 @@ import java.util.List; import org.jdom2.Element; import org.junit.Test; -public class JDomParserTest { +public class JDomParserUnitTest { final String fileName = "src/test/resources/example.xml"; diff --git a/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java b/xml/src/test/java/com/baeldung/xml/JaxbParserUnitTest.java similarity index 96% rename from xml/src/test/java/com/baeldung/xml/JaxbParserTest.java rename to xml/src/test/java/com/baeldung/xml/JaxbParserUnitTest.java index 6c31a7bfdd..6f36c148fd 100644 --- a/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/JaxbParserUnitTest.java @@ -9,7 +9,7 @@ import org.junit.Test; import com.baeldung.xml.binding.Tutorials; -public class JaxbParserTest { +public class JaxbParserUnitTest { final String fileName = "src/test/resources/example.xml"; diff --git a/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java b/xml/src/test/java/com/baeldung/xml/JaxenDemoUnitTest.java similarity index 93% rename from xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java rename to xml/src/test/java/com/baeldung/xml/JaxenDemoUnitTest.java index 2521fcaf8a..d0349048b3 100644 --- a/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java +++ b/xml/src/test/java/com/baeldung/xml/JaxenDemoUnitTest.java @@ -8,7 +8,7 @@ import java.util.List; import org.junit.Test; -public class JaxenDemoTest { +public class JaxenDemoUnitTest { final String fileName = "src/test/resources/example.xml"; diff --git a/xml/src/test/java/com/baeldung/xml/StaxParserTest.java b/xml/src/test/java/com/baeldung/xml/StaxParserUnitTest.java similarity index 94% rename from xml/src/test/java/com/baeldung/xml/StaxParserTest.java rename to xml/src/test/java/com/baeldung/xml/StaxParserUnitTest.java index cf7ee1ee75..afddb591ca 100644 --- a/xml/src/test/java/com/baeldung/xml/StaxParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/StaxParserUnitTest.java @@ -10,7 +10,7 @@ import org.junit.Test; import com.baeldung.xml.binding.Tutorial; -public class StaxParserTest { +public class StaxParserUnitTest { final String fileName = "src/test/resources/example.xml"; From 4f1ac2e7760bdfc4403a5e90739101585b93b73b Mon Sep 17 00:00:00 2001 From: nguyennamthai Date: Fri, 23 Dec 2016 23:38:23 +0700 Subject: [PATCH 383/399] Apache POI Support for MS Word (#908) * Initial commit for Apache POI support for MS Word * Relocate the POI Word project * Add Apache POI to the repo --- apache-poi/.gitignore | 1 + apache-poi/pom.xml | 41 ++++++++ .../com/baeldung/poi/word/WordDocument.java | 95 ++++++++++++++++++ apache-poi/src/main/resources/logo-leaf.png | Bin 0 -> 782 bytes .../src/main/resources/poi-word-para1.txt | 1 + .../src/main/resources/poi-word-para2.txt | 2 + .../src/main/resources/poi-word-para3.txt | 3 + .../java/com/baeldung/poi/word/WordTest.java | 47 +++++++++ 8 files changed, 190 insertions(+) create mode 100644 apache-poi/.gitignore create mode 100644 apache-poi/pom.xml create mode 100644 apache-poi/src/main/java/com/baeldung/poi/word/WordDocument.java create mode 100644 apache-poi/src/main/resources/logo-leaf.png create mode 100644 apache-poi/src/main/resources/poi-word-para1.txt create mode 100644 apache-poi/src/main/resources/poi-word-para2.txt create mode 100644 apache-poi/src/main/resources/poi-word-para3.txt create mode 100644 apache-poi/src/test/java/com/baeldung/poi/word/WordTest.java diff --git a/apache-poi/.gitignore b/apache-poi/.gitignore new file mode 100644 index 0000000000..e05054868c --- /dev/null +++ b/apache-poi/.gitignore @@ -0,0 +1 @@ +*.docx diff --git a/apache-poi/pom.xml b/apache-poi/pom.xml new file mode 100644 index 0000000000..d94b2e2ad1 --- /dev/null +++ b/apache-poi/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + com.baeldung + apache-poi + 0.0.1-SNAPSHOT + + + 3.6.0 + 4.12 + 3.15 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + + + + junit + junit + ${junit.version} + test + + + org.apache.poi + poi-ooxml + ${poi.version} + + + diff --git a/apache-poi/src/main/java/com/baeldung/poi/word/WordDocument.java b/apache-poi/src/main/java/com/baeldung/poi/word/WordDocument.java new file mode 100644 index 0000000000..c05c323447 --- /dev/null +++ b/apache-poi/src/main/java/com/baeldung/poi/word/WordDocument.java @@ -0,0 +1,95 @@ +package com.baeldung.poi.word; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.apache.poi.util.Units; +import org.apache.poi.xwpf.usermodel.ParagraphAlignment; +import org.apache.poi.xwpf.usermodel.UnderlinePatterns; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; + +public class WordDocument { + public static String logo = "logo-leaf.png"; + public static String paragraph1 = "poi-word-para1.txt"; + public static String paragraph2 = "poi-word-para2.txt"; + public static String paragraph3 = "poi-word-para3.txt"; + public static String output = "rest-with-spring.docx"; + + public void handleSimpleDoc() throws Exception { + XWPFDocument document = new XWPFDocument(); + + XWPFParagraph title = document.createParagraph(); + title.setAlignment(ParagraphAlignment.CENTER); + XWPFRun titleRun = title.createRun(); + titleRun.setText("Build Your REST API with Spring"); + titleRun.setColor("009933"); + titleRun.setBold(true); + titleRun.setFontFamily("Courier"); + titleRun.setFontSize(20); + + XWPFParagraph subTitle = document.createParagraph(); + subTitle.setAlignment(ParagraphAlignment.CENTER); + XWPFRun subTitleRun = subTitle.createRun(); + subTitleRun.setText("from HTTP fundamentals to API Mastery"); + subTitleRun.setColor("00CC44"); + subTitleRun.setFontFamily("Courier"); + subTitleRun.setFontSize(16); + subTitleRun.setTextPosition(20); + subTitleRun.setUnderline(UnderlinePatterns.DOT_DOT_DASH); + + XWPFParagraph image = document.createParagraph(); + image.setAlignment(ParagraphAlignment.CENTER); + XWPFRun imageRun = image.createRun(); + imageRun.setTextPosition(20); + Path imagePath = Paths.get(ClassLoader.getSystemResource(logo).toURI()); + imageRun.addPicture(Files.newInputStream(imagePath), XWPFDocument.PICTURE_TYPE_PNG, imagePath.getFileName().toString(), Units.toEMU(50), Units.toEMU(50)); + + XWPFParagraph sectionTitle = document.createParagraph(); + XWPFRun sectionTRun = sectionTitle.createRun(); + sectionTRun.setText("What makes a good API?"); + sectionTRun.setColor("00CC44"); + sectionTRun.setBold(true); + sectionTRun.setFontFamily("Courier"); + + XWPFParagraph para1 = document.createParagraph(); + para1.setAlignment(ParagraphAlignment.BOTH); + String string1 = convertTextFileToString(paragraph1); + XWPFRun para1Run = para1.createRun(); + para1Run.setText(string1); + + XWPFParagraph para2 = document.createParagraph(); + para2.setAlignment(ParagraphAlignment.RIGHT); + String string2 = convertTextFileToString(paragraph2); + XWPFRun para2Run = para2.createRun(); + para2Run.setText(string2); + para2Run.setItalic(true); + + XWPFParagraph para3 = document.createParagraph(); + para3.setAlignment(ParagraphAlignment.LEFT); + String string3 = convertTextFileToString(paragraph3); + XWPFRun para3Run = para3.createRun(); + para3Run.setText(string3); + + FileOutputStream out = new FileOutputStream(output); + document.write(out); + out.close(); + document.close(); + } + + public String convertTextFileToString(String fileName) { + try (Stream stream = Files.lines(Paths.get(ClassLoader.getSystemResource(fileName).toURI()))) { + return stream.collect(Collectors.joining(" ")); + } catch (IOException | URISyntaxException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/apache-poi/src/main/resources/logo-leaf.png b/apache-poi/src/main/resources/logo-leaf.png new file mode 100644 index 0000000000000000000000000000000000000000..395a2ccf796b1813d766d4766a7cf9bbb71d377f GIT binary patch literal 782 zcmV+p1M&QcP)*JtmV#+AnZ0eu0AyGckMu^9YgCCAsnik4ad*k*6(V zwxk(SFVQRX60KsgBt>$rWHW`FDG5)8i4t!kpO_@cHWrf8ByHOxWyU2fnaW-~^n`;z z09x7-sb##_CP|tt9HA;AVK_)cFSc;D#5;~-(Z#}k%Amw(94kMwK_)mVSe(AAXdN-| zK!C_f1tn}FwYXEm1~ZVs8#NfbQ6+qTE zdanz}`S!*~M#Nv_$u6W86(j&ir*GVnbQJ=?Q62Y{-MGsbmWS zvAFAk4%mT5RHvNbq3A;bU19;2`jBMy;cgrD@{qW@aJLXP`AR{iwA+QaM>MYD@Bh;- zNTSNo_{4-+vI#AyLcmcZNvXI)K;u9iJS@r%F%umm6b>(ZWLT0qawI@Pa>!+CAkyvd ziaP>@q-;G$iwGGf)VbJxGGt<(BmLItJqo@3318%}=^u#V2S=#XM?_3a(;K)vE=j`7 z5f>uQ_>#MaXB(Bc*8Qw((TOx1l5ke(U~`8m7aZ!Sr+U~bg~LK7*n0e$!r>s2&GB1a z<0wtME3G}Nx8t|KAw^PHhERh-&+?1o31v~yIohKp`o6!wK2(4y)<5F$J6ucHR+v|B=cq4W}%HH`D}yR$lI= zuMEgluQ=vRU6+g}w2n35LHK1Yr-r5Bq4;ED paragraphs = document.getParagraphs(); + document.close(); + + XWPFParagraph title = paragraphs.get(0); + XWPFRun titleRun = title.getRuns().get(0); + assertEquals("Build Your REST API with Spring", title.getText()); + assertEquals("009933", titleRun.getColor()); + assertTrue(titleRun.isBold()); + assertEquals("Courier", titleRun.getFontFamily()); + assertEquals(20, titleRun.getFontSize()); + + assertEquals("from HTTP fundamentals to API Mastery", paragraphs.get(1).getText()); + assertEquals("What makes a good API?", paragraphs.get(3).getText()); + assertEquals(wordDocument.convertTextFileToString(WordDocument.paragraph1), paragraphs.get(4).getText()); + assertEquals(wordDocument.convertTextFileToString(WordDocument.paragraph2), paragraphs.get(5).getText()); + assertEquals(wordDocument.convertTextFileToString(WordDocument.paragraph3), paragraphs.get(6).getText()); + } +} From d61e7ec8e87c238591767f1f61045e143f5ad8d5 Mon Sep 17 00:00:00 2001 From: Zeger Hendrikse Date: Fri, 23 Dec 2016 17:41:30 +0100 Subject: [PATCH 384/399] Added pom.xml --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 163982039c..8d55c2933d 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,7 @@ annotations apache-cxf apache-fop + apache-poi aspectj assertj autovalue From 5226c5f414eda725daaf8d2425d9e7b246f75cda Mon Sep 17 00:00:00 2001 From: Tuan Date: Sat, 24 Dec 2016 00:41:51 +0700 Subject: [PATCH 385/399] BAEL-406 (#902) * Change text/xml to application/xml * Revert "Change text/xml to application/xml" This reverts commit b61b82cd2a31831c43df1993d36997c762e21907. * Apache CXF Aegis data bindings * remove else condition * remove else condition * spring retry introduction * remove else condition * remove spring retry, format code * BAEL-315 Removing the unnecessary version on spring session. Renaming the module from spring-cloud-integration to spring-could-bootstrap * add unit test * BAEL-40: Add NDC and JBoss Logging to the demo application (#880) * Add NDC and JBoss Logging to the demo application * NDC for Log4j, Log4j2 and JBoss Logging * Simplify NDC example by making it a single operation instead of two * Make NDC example as RestController, Use JBoss Logging only as a logging bridge * Fix merge conflicts in pull request - log-mdc pom.xml updated * Simulated Annealing algorithm (#900) * @Async and Spring Security * @Async with SecurityContext propagated * Spring and @Async * Simulated Annealing algorithm * Simulated Annealing algorithm * Rebase * Rebase * create intelliJ formatter * fix intelliJ formatter * add unit test * BAEL-36 BAEL-282 Getting file size using Java and apache commons IO api. Also grep in Java (#890) * BAL-36 File size api in java and apache commons IO * BAEL-36 Getting file size using Java and commons IO api. * BAEL-282 Added support for grep functionality. * BAEL-282 Rename the text file extension. * maven fix and small formatting work * BAEL-35: Added test methods using Apache Commons Collections4 * Created README.md and added relevant articles (#901) * Added relevant articles * Added relevant articles * Added relevant articles * Created README.md and added relevant articles * Created README.md and added relevant articles * Added relevant articles * Added relevant articles * Created README.md and added relevant articles * Created README.md and added relevant articles * Created README.md and added relevant articles * Added relevant articles * Created README.md and added relevant articles * Added relevant articles * Added relevant articles * Update README.md * Added relevant articles * Added relevant articles * Added relevant articles * Update README.md * Added relevant articles * Update README.md * Created README.md and added relevant articles * Added relevant articles * Added relevant articles * Added relevant articles * Added relevant articles * Created README.md and added relevant articles * Update README.md * Refactor EJBClient.java * BAEL-282 - Grep in Java after code review (#903) * BAEL-242 Package refactoring after code review for article Grep in Java * BAEL-282 Updated readme file * Update README.md * maven cleanup work * maven cleanup work * Pull Request for "A Guide to Rolling File Appenders" article. (#876) * First test with log4j rolling appenders * small fix * Log4j rolling appender * First set up with rolling file on log4j 2 * Added logback code. * log4j2 more detailed example * log4j2 more detailed example * Improved names and examples * Fixed configurations * improved configs * formatted * Final fix * fixed formatting * Formatting fix * Fix sample apps to avoid try / catch * Fix request to replace files * Fix end lines * maven work * init * cleanup work * cleanup work * Update README.md * set default timezone * Simulated Annnealing fixes (#907) * @Async and Spring Security * @Async with SecurityContext propagated * Spring and @Async * Simulated Annealing algorithm * Simulated Annealing algorithm * Rebase * Rebase * Nashorn (#896) * Simulated Annealing fix (#910) * @Async and Spring Security * @Async with SecurityContext propagated * Spring and @Async * Simulated Annealing algorithm * Simulated Annealing algorithm * Rebase * Rebase * SA further fixes * change tab to space in xml files and add equal, hashcode, toString using apache commons lang * BAEL-315 Adding test class for demonstrating features of Spring Session and Spring Cloud * add integration profile * add live profile * add integration profile * add integration profile * add integration profile * BAEL-127: Spring Security - @PreFilter and @PostFilter (#911) * BAEL-127: simple app with filters * removed data rest dependency, final adjustments * added first live test for the rest api * move filters code to new module * moved to root of module, create service layer, standard pom * added spring-security-core module to root pom * Modified code to reflect the code from the article * Merge changes from branch * BAEL-315 - skipping live test * adding missing modules to parent pom * Advanced Camel article (#905) * - changed test package name from org.baeldung to com.baeldung - streams are added where neccessary - format fixes * Adding Java config for Content Based File Router * Adding Java config for Content Based File Router * Code for Map (#909) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps * fixed network interface tests * removed filetest change * made changes to NIO2 FileTest names * added project for asyncronous channel apis * added project for NIO2 advanced filesystems APIS * merge conflicts * merged changes to asyncfiletest with future get API * removed while loops from async client and server * added project for java8 optional * fixed merge conflicts in spring-core * fixed optional * fixed optional * fixed asyncechotest * shifted optional to own package * made additional tests to demo filter API * added code for Map * change unit test package dir * minor maven cleanup * Reformat JaxbTest * Added demonstration of @JsonFormat and associated test. (#906) * remove duplicate test * rename tests * delete bool.xml file * remove jaxb * spring retry introduction * remove else condition * remove spring retry, format code --- jaxb/book.xml | 5 - jaxb/pom.xml | 321 ++++++++---------- .../src/main/java/com/baeldung/jaxb/Main.java | 41 --- .../java/com/baeldung/jaxb/test/JaxbTest.java | 35 +- jaxb/{ => src/test/resources}/sample_book.xml | 0 5 files changed, 169 insertions(+), 233 deletions(-) delete mode 100644 jaxb/book.xml delete mode 100644 jaxb/src/main/java/com/baeldung/jaxb/Main.java rename jaxb/{ => src/test/resources}/sample_book.xml (100%) diff --git a/jaxb/book.xml b/jaxb/book.xml deleted file mode 100644 index 605d531b16..0000000000 --- a/jaxb/book.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - Book1 - 2016-12-16T17:28:49.718Z - diff --git a/jaxb/pom.xml b/jaxb/pom.xml index 115a632d7b..b636a4dc82 100644 --- a/jaxb/pom.xml +++ b/jaxb/pom.xml @@ -1,188 +1,167 @@ - 4.0.0 - com.baeldung - jaxb - 0.0.1-SNAPSHOT - jaxb + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + jaxb + 0.0.1-SNAPSHOT + jaxb - - - org.glassfish.jaxb - jaxb-runtime - ${jaxb.version} - + + + org.glassfish.jaxb + jaxb-runtime + ${jaxb.version} + - - org.glassfish.jaxb - jaxb-core - ${jaxb.version} - + + org.glassfish.jaxb + jaxb-core + ${jaxb.version} + - - - com.sun.istack - istack-commons-runtime - 3.0.2 - + + + com.sun.istack + istack-commons-runtime + 3.0.2 + - - commons-io - commons-io - 2.5 - + + commons-io + commons-io + 2.5 + - - org.slf4j - slf4j-api - ${org.slf4j.version} - + + org.slf4j + slf4j-api + ${org.slf4j.version} + - - ch.qos.logback - logback-classic - ${logback.version} - + + ch.qos.logback + logback-classic + ${logback.version} + - - ch.qos.logback - logback-core - ${logback.version} - - - - junit - junit - ${junit.version} - - - - org.apache.commons - commons-lang3 - 3.5 - - + + ch.qos.logback + logback-core + ${logback.version} + - - jaxb - - - src/main/resources - true - - + + junit + junit + ${junit.version} + - - - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 - - - - - - org.codehaus.mojo - jaxb2-maven-plugin - [${jaxb2-maven-plugin.version},) - - schemagen - xjc - - - - - - - - - - - - + + org.apache.commons + commons-lang3 + 3.5 + + - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - + + jaxb + + + src/main/resources + true + + - - - org.codehaus.mojo - jaxb2-maven-plugin - ${jaxb2-maven-plugin.version} - - - xjc - - xjc - - - - - - src/main/resources/global.xjb - - - src/main/resources/user.xsd - - ${basedir}/src/main/java - false - - + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.codehaus.mojo + jaxb2-maven-plugin + [${jaxb2-maven-plugin.version},) + + schemagen + xjc + + + + + + + + + + + + - - - - + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + - - - 2.2.11 + + + org.codehaus.mojo + jaxb2-maven-plugin + ${jaxb2-maven-plugin.version} + + + xjc + + xjc + + + + + + src/main/resources/global.xjb + + + src/main/resources/user.xsd + + ${basedir}/src/main/java + false + + - - 1.7.21 - 1.1.7 + + + + - - 3.5.1 - 2.3 - 4.12 - + + + 2.2.11 - + + 1.7.21 + 1.1.7 + + + 3.5.1 + 2.3 + 4.12 + + + \ No newline at end of file diff --git a/jaxb/src/main/java/com/baeldung/jaxb/Main.java b/jaxb/src/main/java/com/baeldung/jaxb/Main.java deleted file mode 100644 index 46adfb3c60..0000000000 --- a/jaxb/src/main/java/com/baeldung/jaxb/Main.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.jaxb; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.Date; -import java.util.TimeZone; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; - -public class Main { - public static void marshal() throws JAXBException, IOException { - Book book = new Book(); - book.setId(1L); - book.setName("Book1"); - book.setAuthor("Author1"); - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - book.setDate(new Date(1481909329718L)); - - JAXBContext context = JAXBContext.newInstance(Book.class); - Marshaller marshaller = context.createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); - marshaller.marshal(book, new File("./book.xml")); - } - - public static Book unMashal() throws JAXBException, IOException { - JAXBContext context = JAXBContext.newInstance(Book.class); - Unmarshaller unmarshaller = context.createUnmarshaller(); - Book book = (Book) unmarshaller.unmarshal(new FileReader("./book.xml")); - return book; - } - - public static void main(String[] args) throws JAXBException, IOException { - marshal(); - Book book = unMashal(); - System.out.println(book.toString()); - } -} diff --git a/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java b/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java index 10febabacd..7721490de8 100644 --- a/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java +++ b/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java @@ -1,6 +1,16 @@ package com.baeldung.jaxb.test; -import com.baeldung.jaxb.Book; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Date; +import java.util.TimeZone; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; + import org.apache.commons.io.FileUtils; import org.junit.Assert; import org.junit.Before; @@ -8,15 +18,7 @@ import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.Date; -import java.util.TimeZone; +import com.baeldung.jaxb.Book; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class JaxbTest { @@ -37,18 +39,19 @@ public class JaxbTest { public void marshal() throws JAXBException, IOException { Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); - marshaller.marshal(book, new File("./book.xml")); - String sampleBookXML = FileUtils.readFileToString(new File("./sample_book.xml"), "UTF-8"); - String marshallerBookXML = FileUtils.readFileToString(new File("./book.xml"), "UTF-8"); - + marshaller.marshal(book, new File(this.getClass().getResource("/").getPath() + "/book.xml")); + File sampleBookFile = new File(this.getClass().getResource("/sample_book.xml").getFile()); + File bookFile = new File(this.getClass().getResource("/book.xml").getFile()); + String sampleBookXML = FileUtils.readFileToString(sampleBookFile, "UTF-8"); + String marshallerBookXML = FileUtils.readFileToString(bookFile, "UTF-8"); Assert.assertEquals(sampleBookXML, marshallerBookXML); } @Test public void unMashal() throws JAXBException, IOException { Unmarshaller unmarshaller = context.createUnmarshaller(); - Book unMarshallerbook = (Book) unmarshaller.unmarshal(new FileReader("./book.xml")); - + String bookFile = this.getClass().getResource("/book.xml").getFile(); + Book unMarshallerbook = (Book) unmarshaller.unmarshal(new FileReader(bookFile)); Assert.assertEquals(book, unMarshallerbook); } } diff --git a/jaxb/sample_book.xml b/jaxb/src/test/resources/sample_book.xml similarity index 100% rename from jaxb/sample_book.xml rename to jaxb/src/test/resources/sample_book.xml From 1a17166d365b6806fcdada48aa3c1b3b49f53e04 Mon Sep 17 00:00:00 2001 From: maibin Date: Fri, 23 Dec 2016 19:36:08 +0100 Subject: [PATCH 386/399] Slope One Algorithm (#917) * @Async and Spring Security * @Async with SecurityContext propagated * Spring and @Async * Simulated Annealing algorithm * Simulated Annealing algorithm * Rebase * Rebase * SA further fixes * Slope One plus package refactoring --- .../com/baeldung/algorithms/RunAlgorithm.java | 31 +++++ .../algorithms/{ => annealing}/City.java | 2 +- .../{ => annealing}/SimulatedAnnealing.java | 6 +- .../algorithms/{ => annealing}/Travel.java | 2 +- .../algorithms/slope_one/InputData.java | 36 ++++++ .../baeldung/algorithms/slope_one/Item.java | 13 ++ .../algorithms/slope_one/SlopeOne.java | 120 ++++++++++++++++++ .../baeldung/algorithms/slope_one/User.java | 14 ++ .../algorithms/SimulatedAnnealingTest.java | 2 + 9 files changed, 219 insertions(+), 7 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/algorithms/RunAlgorithm.java rename core-java/src/main/java/com/baeldung/algorithms/{ => annealing}/City.java (89%) rename core-java/src/main/java/com/baeldung/algorithms/{ => annealing}/SimulatedAnnealing.java (88%) rename core-java/src/main/java/com/baeldung/algorithms/{ => annealing}/Travel.java (97%) create mode 100644 core-java/src/main/java/com/baeldung/algorithms/slope_one/InputData.java create mode 100644 core-java/src/main/java/com/baeldung/algorithms/slope_one/Item.java create mode 100644 core-java/src/main/java/com/baeldung/algorithms/slope_one/SlopeOne.java create mode 100644 core-java/src/main/java/com/baeldung/algorithms/slope_one/User.java diff --git a/core-java/src/main/java/com/baeldung/algorithms/RunAlgorithm.java b/core-java/src/main/java/com/baeldung/algorithms/RunAlgorithm.java new file mode 100644 index 0000000000..9394bbdbb8 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/algorithms/RunAlgorithm.java @@ -0,0 +1,31 @@ +package com.baeldung.algorithms; + +import java.util.Scanner; + +import com.baeldung.algorithms.annealing.SimulatedAnnealing; +import com.baeldung.algorithms.slope_one.SlopeOne; + +public class RunAlgorithm { + + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.println("Run algorithm:"); + System.out.println("1 - Simulated Annealing"); + System.out.println("2 - Slope One"); + int decision = in.nextInt(); + switch (decision) { + case 1: + System.out.println( + "Optimized distance for travel: " + SimulatedAnnealing.simulateAnnealing(10, 10000, 0.9995)); + break; + case 2: + SlopeOne.slopeOne(3); + break; + default: + System.out.println("Unknown option"); + break; + } + in.close(); + } + +} diff --git a/core-java/src/main/java/com/baeldung/algorithms/City.java b/core-java/src/main/java/com/baeldung/algorithms/annealing/City.java similarity index 89% rename from core-java/src/main/java/com/baeldung/algorithms/City.java rename to core-java/src/main/java/com/baeldung/algorithms/annealing/City.java index 1a96dc759d..0f060c73c2 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/City.java +++ b/core-java/src/main/java/com/baeldung/algorithms/annealing/City.java @@ -1,4 +1,4 @@ -package com.baeldung.algorithms; +package com.baeldung.algorithms.annealing; import lombok.Data; diff --git a/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java b/core-java/src/main/java/com/baeldung/algorithms/annealing/SimulatedAnnealing.java similarity index 88% rename from core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java rename to core-java/src/main/java/com/baeldung/algorithms/annealing/SimulatedAnnealing.java index f2db61c3b1..c02b0b8285 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/SimulatedAnnealing.java +++ b/core-java/src/main/java/com/baeldung/algorithms/annealing/SimulatedAnnealing.java @@ -1,4 +1,4 @@ -package com.baeldung.algorithms; +package com.baeldung.algorithms.annealing; public class SimulatedAnnealing { @@ -33,8 +33,4 @@ public class SimulatedAnnealing { return bestDistance; } - public static void main(String[] args) { - System.out.println("Optimized distance for travel: " + simulateAnnealing(10, 10000, 0.9995)); - } - } diff --git a/core-java/src/main/java/com/baeldung/algorithms/Travel.java b/core-java/src/main/java/com/baeldung/algorithms/annealing/Travel.java similarity index 97% rename from core-java/src/main/java/com/baeldung/algorithms/Travel.java rename to core-java/src/main/java/com/baeldung/algorithms/annealing/Travel.java index af03b0abbb..9bf341fbbe 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/Travel.java +++ b/core-java/src/main/java/com/baeldung/algorithms/annealing/Travel.java @@ -1,4 +1,4 @@ -package com.baeldung.algorithms; +package com.baeldung.algorithms.annealing; import java.util.ArrayList; import java.util.Collections; diff --git a/core-java/src/main/java/com/baeldung/algorithms/slope_one/InputData.java b/core-java/src/main/java/com/baeldung/algorithms/slope_one/InputData.java new file mode 100644 index 0000000000..548f7ae4da --- /dev/null +++ b/core-java/src/main/java/com/baeldung/algorithms/slope_one/InputData.java @@ -0,0 +1,36 @@ +package com.baeldung.algorithms.slope_one; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import lombok.Data; + +@Data +public class InputData { + + protected static List items = Arrays.asList(new Item("Candy"), new Item("Drink"), new Item("Soda"), new Item("Popcorn"), + new Item("Snacks")); + + public static Map> initializeData(int numberOfUsers) { + Map> data = new HashMap<>(); + HashMap newUser; + Set newRecommendationSet; + for (int i = 0; i < numberOfUsers; i++) { + newUser = new HashMap(); + newRecommendationSet = new HashSet<>(); + for (int j = 0; j < 3; j++) { + newRecommendationSet.add(items.get((int) (Math.random() * 5))); + } + for (Item item : newRecommendationSet) { + newUser.put(item, Math.random()); + } + data.put(new User("User " + i), newUser); + } + return data; + } + +} diff --git a/core-java/src/main/java/com/baeldung/algorithms/slope_one/Item.java b/core-java/src/main/java/com/baeldung/algorithms/slope_one/Item.java new file mode 100644 index 0000000000..818a6d4601 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/algorithms/slope_one/Item.java @@ -0,0 +1,13 @@ +package com.baeldung.algorithms.slope_one; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Item { + + private String itemName; +} diff --git a/core-java/src/main/java/com/baeldung/algorithms/slope_one/SlopeOne.java b/core-java/src/main/java/com/baeldung/algorithms/slope_one/SlopeOne.java new file mode 100644 index 0000000000..800a86884f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/algorithms/slope_one/SlopeOne.java @@ -0,0 +1,120 @@ +package com.baeldung.algorithms.slope_one; + +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +/** + * Slope One algorithm implementation + */ +public class SlopeOne { + + private static Map> differencesMatrix = new HashMap<>(); + private static Map> frequenciesMatrix = new HashMap<>(); + private static Map> inputData; + private static Map> outputData = new HashMap<>(); + + public static void slopeOne(int numberOfUsers) { + inputData = InputData.initializeData(numberOfUsers); + System.out.println("Slope One - Before the Prediction\n"); + buildDifferencesMatrix(inputData); + System.out.println("\nSlope One - With Predictions\n"); + predict(inputData); + } + + /** + * Based on the available data, calculate the relationships between the + * items and number of occurences + * + * @param data existing user data and their items' ratings + */ + private static void buildDifferencesMatrix(Map> data) { + for (HashMap user : data.values()) { + for (Entry entry : user.entrySet()) { + if (!differencesMatrix.containsKey(entry.getKey())) { + differencesMatrix.put(entry.getKey(), new HashMap()); + frequenciesMatrix.put(entry.getKey(), new HashMap()); + } + for (Entry entry2 : user.entrySet()) { + int oldCount = 0; + if (frequenciesMatrix.get(entry.getKey()).containsKey(entry2.getKey())) + oldCount = frequenciesMatrix.get(entry.getKey()).get(entry2.getKey()).intValue(); + double oldDiff = 0.0; + if (differencesMatrix.get(entry.getKey()).containsKey(entry2.getKey())) + oldDiff = differencesMatrix.get(entry.getKey()).get(entry2.getKey()).doubleValue(); + double observedDiff = entry.getValue() - entry2.getValue(); + frequenciesMatrix.get(entry.getKey()).put(entry2.getKey(), oldCount + 1); + differencesMatrix.get(entry.getKey()).put(entry2.getKey(), oldDiff + observedDiff); + } + } + } + for (Item j : differencesMatrix.keySet()) { + for (Item i : differencesMatrix.get(j).keySet()) { + double oldvalue = differencesMatrix.get(j).get(i).doubleValue(); + int count = frequenciesMatrix.get(j).get(i).intValue(); + differencesMatrix.get(j).put(i, oldvalue / count); + } + } + printData(data); + } + + /** + * Based on existing data predict all missing ratings. If prediction is not + * possible, the value will be equal to -1 + * + * @param data existing user data and their items' ratings + */ + private static void predict(Map> data) { + HashMap predictions = new HashMap(); + HashMap frequencies = new HashMap(); + for (Item j : differencesMatrix.keySet()) { + frequencies.put(j, 0); + predictions.put(j, 0.0); + } + for (Entry> entry : data.entrySet()) { + for (Item j : entry.getValue().keySet()) { + for (Item k : differencesMatrix.keySet()) { + try { + double newValue = (differencesMatrix.get(k).get(j).doubleValue() + + entry.getValue().get(j).doubleValue()) * frequenciesMatrix.get(k).get(j).intValue(); + predictions.put(k, predictions.get(k) + newValue); + frequencies.put(k, frequencies.get(k) + frequenciesMatrix.get(k).get(j).intValue()); + } catch (NullPointerException e) { + } + } + } + HashMap cleanPredictions = new HashMap(); + for (Item j : predictions.keySet()) { + if (frequencies.get(j) > 0) { + cleanPredictions.put(j, predictions.get(j).doubleValue() / frequencies.get(j).intValue()); + } + } + for (Item j : InputData.items) { + if (entry.getValue().containsKey(j)) { + cleanPredictions.put(j, entry.getValue().get(j)); + } else { + cleanPredictions.put(j, -1.0); + } + } + outputData.put(entry.getKey(), cleanPredictions); + } + printData(outputData); + } + + private static void printData(Map> data) { + for (User user : data.keySet()) { + System.out.println(user.getUsername() + ":"); + print(data.get(user)); + } + } + + private static void print(HashMap hashMap) { + NumberFormat formatter = new DecimalFormat("#0.000"); + for (Item j : hashMap.keySet()) { + System.out.println(" " + j.getItemName() + " --> " + formatter.format(hashMap.get(j).doubleValue())); + } + } + +} diff --git a/core-java/src/main/java/com/baeldung/algorithms/slope_one/User.java b/core-java/src/main/java/com/baeldung/algorithms/slope_one/User.java new file mode 100644 index 0000000000..57f16f6748 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/algorithms/slope_one/User.java @@ -0,0 +1,14 @@ +package com.baeldung.algorithms.slope_one; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class User { + + private String username; + +} diff --git a/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java b/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java index 3fe3650041..2fc7ea9b92 100644 --- a/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java +++ b/core-java/src/test/java/com/baeldung/algorithms/SimulatedAnnealingTest.java @@ -3,6 +3,8 @@ package com.baeldung.algorithms; import org.junit.Assert; import org.junit.Test; +import com.baeldung.algorithms.annealing.SimulatedAnnealing; + public class SimulatedAnnealingTest { @Test From ac20dd32d050094a2394ac33f5479e511467ba4a Mon Sep 17 00:00:00 2001 From: prd Date: Sat, 24 Dec 2016 01:19:33 +0100 Subject: [PATCH 387/399] refactor packages & introduce OpenIMAJ --- imageprocessing/pom.xml | 5 ++++ .../imagej/ImageJRectExample.java} | 6 ++-- .../openimaj/OpenIMAJRectExample.java | 28 +++++++++++++++++++ .../swing/SwingRectExample.java} | 6 ++-- 4 files changed, 39 insertions(+), 6 deletions(-) rename imageprocessing/src/main/java/{imagej/DrawRect.java => com/baeldung/imageprocessing/imagej/ImageJRectExample.java} (68%) create mode 100644 imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java rename imageprocessing/src/main/java/{swing/DrawRect.java => com/baeldung/imageprocessing/swing/SwingRectExample.java} (85%) diff --git a/imageprocessing/pom.xml b/imageprocessing/pom.xml index 36e1b57028..6c1cdff2e3 100644 --- a/imageprocessing/pom.xml +++ b/imageprocessing/pom.xml @@ -14,6 +14,11 @@ ij 1.51h
+ + org.openimaj + core-image + 1.3.5 + \ No newline at end of file diff --git a/imageprocessing/src/main/java/imagej/DrawRect.java b/imageprocessing/src/main/java/com/baeldung/imageprocessing/imagej/ImageJRectExample.java similarity index 68% rename from imageprocessing/src/main/java/imagej/DrawRect.java rename to imageprocessing/src/main/java/com/baeldung/imageprocessing/imagej/ImageJRectExample.java index 53354d89d0..893eb262f7 100644 --- a/imageprocessing/src/main/java/imagej/DrawRect.java +++ b/imageprocessing/src/main/java/com/baeldung/imageprocessing/imagej/ImageJRectExample.java @@ -1,4 +1,4 @@ -package imagej; +package com.baeldung.imageprocessing.imagej; import ij.IJ; import ij.ImagePlus; @@ -6,9 +6,9 @@ import ij.process.ImageProcessor; import java.awt.*; -public class DrawRect { +public class ImageJRectExample { public static void main(String[] args) { - ImagePlus imp = IJ.openImage(DrawRect.class.getClassLoader().getResource("lena.jpg").getPath()); + ImagePlus imp = IJ.openImage(ImageJRectExample.class.getClassLoader().getResource("lena.jpg").getPath()); drawRect(imp); imp.show(); } diff --git a/imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java b/imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java new file mode 100644 index 0000000000..52f6c524a8 --- /dev/null +++ b/imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java @@ -0,0 +1,28 @@ +package com.baeldung.imageprocessing.openimaj; + +import org.openimaj.image.DisplayUtilities; +import org.openimaj.image.ImageUtilities; +import org.openimaj.image.MBFImage; +import org.openimaj.math.geometry.point.Point2d; +import org.openimaj.math.geometry.point.Point2dImpl; +import org.openimaj.math.geometry.shape.Polygon; + +import java.io.IOException; +import java.util.Arrays; + +public class OpenIMAJRectExample { + public static void main(String[] args) throws IOException { + MBFImage image = ImageUtilities.readMBF(OpenIMAJRectExample.class.getClassLoader().getResource("lena.jpg")); + drawRectangle(image); + DisplayUtilities.display(image); + } + + private static void drawRectangle(MBFImage image) { + Point2d tl = new Point2dImpl(10, 10); + Point2d bl = new Point2dImpl(10, image.getHeight()-10); + Point2d br = new Point2dImpl(image.getWidth()-10, image.getHeight()-10); + Point2d tr = new Point2dImpl(image.getWidth() - 10, 10); + Polygon polygon = new Polygon(Arrays.asList(tl, bl, br, tr)); + image.drawPolygon(polygon, 4, new Float[] {new Float(0),new Float(0),new Float(255.0)}); + } +} diff --git a/imageprocessing/src/main/java/swing/DrawRect.java b/imageprocessing/src/main/java/com/baeldung/imageprocessing/swing/SwingRectExample.java similarity index 85% rename from imageprocessing/src/main/java/swing/DrawRect.java rename to imageprocessing/src/main/java/com/baeldung/imageprocessing/swing/SwingRectExample.java index 8fc7f5184e..08edd6ee83 100644 --- a/imageprocessing/src/main/java/swing/DrawRect.java +++ b/imageprocessing/src/main/java/com/baeldung/imageprocessing/swing/SwingRectExample.java @@ -1,4 +1,4 @@ -package swing; +package com.baeldung.imageprocessing.swing; import javax.imageio.ImageIO; import javax.swing.*; @@ -7,7 +7,7 @@ import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; -public class DrawRect { +public class SwingRectExample { public static void main(String[] args) throws IOException { BufferedImage image = loadImage(); drawRectangle(image); @@ -15,7 +15,7 @@ public class DrawRect { } private static BufferedImage loadImage() throws IOException { - String imagePath = DrawRect.class.getClassLoader().getResource("lena.jpg").getPath(); + String imagePath = SwingRectExample.class.getClassLoader().getResource("lena.jpg").getPath(); return ImageIO.read(new File(imagePath)); } From e04a15bc8ee4d3f76b68755b3bc3861526aff6cd Mon Sep 17 00:00:00 2001 From: prd Date: Sat, 24 Dec 2016 01:27:48 +0100 Subject: [PATCH 388/399] refactor pom for image processing --- imageprocessing/pom.xml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/imageprocessing/pom.xml b/imageprocessing/pom.xml index 6c1cdff2e3..20fb70edd9 100644 --- a/imageprocessing/pom.xml +++ b/imageprocessing/pom.xml @@ -8,17 +8,21 @@ imageprocessing 1.0-SNAPSHOT + + 1.3.5 + 1.51h + + net.imagej ij - 1.51h + ${ij.version} org.openimaj core-image - 1.3.5 + ${core-image.version} - \ No newline at end of file From e3b3dff24410233df7af8d9eca0ec7327efe3334 Mon Sep 17 00:00:00 2001 From: Daniele Demichelis Date: Sat, 24 Dec 2016 04:59:29 +0100 Subject: [PATCH 389/399] Pull Request for fix to "A Guide to Rolling File Appenders" article. (#919) * First test with log4j rolling appenders * small fix * Log4j rolling appender * First set up with rolling file on log4j 2 * Added logback code. * log4j2 more detailed example * log4j2 more detailed example * Improved names and examples * Fixed configurations * improved configs * formatted * Final fix * fixed formatting * Formatting fix * Fix sample apps to avoid try / catch * Fix request to replace files * Fix end lines * Log4j2 logger is shot down at the end. --- .../main/java/com/baeldung/log4j2/Log4j2RollingExample.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/log4j/src/main/java/com/baeldung/log4j2/Log4j2RollingExample.java b/log4j/src/main/java/com/baeldung/log4j2/Log4j2RollingExample.java index 8e0b9fccab..0adf7ed2bf 100644 --- a/log4j/src/main/java/com/baeldung/log4j2/Log4j2RollingExample.java +++ b/log4j/src/main/java/com/baeldung/log4j2/Log4j2RollingExample.java @@ -1,7 +1,5 @@ package com.baeldung.log4j2; -import java.util.stream.IntStream; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -14,6 +12,7 @@ public class Log4j2RollingExample { logger.info("This is the {} time I say 'Hello World'.", i); Thread.sleep(100); } + LogManager.shutdown(); } } From c3feed8089574ebff8ceb5e84d8fc1346196d2dd Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sat, 24 Dec 2016 14:23:52 +0100 Subject: [PATCH 390/399] Refactor OpenIMAJRectExample --- .../imageprocessing/openimaj/OpenIMAJRectExample.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java b/imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java index 52f6c524a8..7323dcf611 100644 --- a/imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java +++ b/imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java @@ -19,10 +19,10 @@ public class OpenIMAJRectExample { private static void drawRectangle(MBFImage image) { Point2d tl = new Point2dImpl(10, 10); - Point2d bl = new Point2dImpl(10, image.getHeight()-10); - Point2d br = new Point2dImpl(image.getWidth()-10, image.getHeight()-10); + Point2d bl = new Point2dImpl(10, image.getHeight() - 10); + Point2d br = new Point2dImpl(image.getWidth() - 10, image.getHeight() - 10); Point2d tr = new Point2dImpl(image.getWidth() - 10, 10); Polygon polygon = new Polygon(Arrays.asList(tl, bl, br, tr)); - image.drawPolygon(polygon, 4, new Float[] {new Float(0),new Float(0),new Float(255.0)}); + image.drawPolygon(polygon, 4, new Float[] { 0f, 0f, 255.0f }); } } From b80f7963e2f2708a271bf4c054a375010cea5e75 Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Sat, 24 Dec 2016 15:22:28 +0100 Subject: [PATCH 391/399] BAEL-315 - updating README --- spring-cloud/spring-cloud-bootstrap/README.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-cloud/spring-cloud-bootstrap/README.MD b/spring-cloud/spring-cloud-bootstrap/README.MD index c16ba3e247..d6f8faf31e 100644 --- a/spring-cloud/spring-cloud-bootstrap/README.MD +++ b/spring-cloud/spring-cloud-bootstrap/README.MD @@ -1,2 +1,3 @@ ### Relevant Articles: - [Spring Cloud – Bootstrapping](http://www.baeldung.com/spring-cloud-bootstrapping) +- [Spring Cloud – Securing Services](http://www.baeldung.com/spring-cloud-securing-services) From 69f902cc046876a3df1fcf24dbfac2eba170682f Mon Sep 17 00:00:00 2001 From: pivovarit Date: Sat, 24 Dec 2016 18:50:45 +0100 Subject: [PATCH 392/399] Rename module --- {imageprocessing => image-processing}/pom.xml | 0 .../imageprocessing/imagej/ImageJRectExample.java | 0 .../openimaj/OpenIMAJRectExample.java | 0 .../imageprocessing/swing/SwingRectExample.java | 0 .../src/main/resources/lena.jpg | Bin 5 files changed, 0 insertions(+), 0 deletions(-) rename {imageprocessing => image-processing}/pom.xml (100%) rename {imageprocessing => image-processing}/src/main/java/com/baeldung/imageprocessing/imagej/ImageJRectExample.java (100%) rename {imageprocessing => image-processing}/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java (100%) rename {imageprocessing => image-processing}/src/main/java/com/baeldung/imageprocessing/swing/SwingRectExample.java (100%) rename {imageprocessing => image-processing}/src/main/resources/lena.jpg (100%) diff --git a/imageprocessing/pom.xml b/image-processing/pom.xml similarity index 100% rename from imageprocessing/pom.xml rename to image-processing/pom.xml diff --git a/imageprocessing/src/main/java/com/baeldung/imageprocessing/imagej/ImageJRectExample.java b/image-processing/src/main/java/com/baeldung/imageprocessing/imagej/ImageJRectExample.java similarity index 100% rename from imageprocessing/src/main/java/com/baeldung/imageprocessing/imagej/ImageJRectExample.java rename to image-processing/src/main/java/com/baeldung/imageprocessing/imagej/ImageJRectExample.java diff --git a/imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java b/image-processing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java similarity index 100% rename from imageprocessing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java rename to image-processing/src/main/java/com/baeldung/imageprocessing/openimaj/OpenIMAJRectExample.java diff --git a/imageprocessing/src/main/java/com/baeldung/imageprocessing/swing/SwingRectExample.java b/image-processing/src/main/java/com/baeldung/imageprocessing/swing/SwingRectExample.java similarity index 100% rename from imageprocessing/src/main/java/com/baeldung/imageprocessing/swing/SwingRectExample.java rename to image-processing/src/main/java/com/baeldung/imageprocessing/swing/SwingRectExample.java diff --git a/imageprocessing/src/main/resources/lena.jpg b/image-processing/src/main/resources/lena.jpg similarity index 100% rename from imageprocessing/src/main/resources/lena.jpg rename to image-processing/src/main/resources/lena.jpg From 428bfcc8f2989d46f969da200dce385930a7068d Mon Sep 17 00:00:00 2001 From: Saptarshi Basu Date: Sun, 25 Dec 2016 01:14:35 +0530 Subject: [PATCH 393/399] WatchService vs. Apache Commons IO Mnitoring (#921) * WatchService vs. Apache Commons IO Mnitoring * Indentation fixed --- .../DirectoryMonitoringExample.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java diff --git a/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java b/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java new file mode 100644 index 0000000000..49030b5352 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java @@ -0,0 +1,38 @@ +package com.baeldung.dirmonitoring; + +import java.io.File; + +import org.apache.commons.io.monitor.FileAlterationListener; +import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; +import org.apache.commons.io.monitor.FileAlterationMonitor; +import org.apache.commons.io.monitor.FileAlterationObserver; + +public class DirectoryMonitoringExample { + + public static final int POLL_INTERVAL = 500; + + public static void main(String[] args) throws Exception { + FileAlterationObserver observer = new FileAlterationObserver(System.getProperty("user.home")); + FileAlterationMonitor monitor = new FileAlterationMonitor(POLL_INTERVAL); + FileAlterationListener listener = new FileAlterationListenerAdaptor() { + @Override + public void onFileCreate(File file) { + System.out.println("File: " + file.getName() + " created"); + } + + @Override + public void onFileDelete(File file) { + System.out.println("File: " + file.getName() + " deleted"); + } + + @Override + public void onFileChange(File file) { + System.out.println("File: " + file.getName() + " changed"); + } + }; + observer.addListener(listener); + monitor.addObserver(observer); + monitor.start(); + + } +} From c271755048d8fe1fbbfb442dd80f8fc13008f1be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Soares?= Date: Sun, 25 Dec 2016 14:11:27 +0000 Subject: [PATCH 394/399] Initial commit of Jsoup example (#913) * Initial commit of Jsoup example * Initial commit of Jsoup example * Fix the requested changes --- jsoup/pom.xml | 29 ++++++ .../java/com/baeldung/jsoup/JsoupExample.java | 89 +++++++++++++++++++ pom.xml | 9 +- 3 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 jsoup/pom.xml create mode 100644 jsoup/src/main/java/com/baeldung/jsoup/JsoupExample.java diff --git a/jsoup/pom.xml b/jsoup/pom.xml new file mode 100644 index 0000000000..989f30422c --- /dev/null +++ b/jsoup/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + jsoup + jar + + + org.jsoup + jsoup + ${jsoup.version} + + + commons-io + commons-io + ${commons.io.version} + + + + 1.8 + 1.8 + 2.5 + 1.10.1 + + diff --git a/jsoup/src/main/java/com/baeldung/jsoup/JsoupExample.java b/jsoup/src/main/java/com/baeldung/jsoup/JsoupExample.java new file mode 100644 index 0000000000..10431a621d --- /dev/null +++ b/jsoup/src/main/java/com/baeldung/jsoup/JsoupExample.java @@ -0,0 +1,89 @@ +package com.baeldung.jsoup; + +import java.io.File; +import java.io.IOException; +import org.apache.commons.io.FileUtils; +import org.jsoup.HttpStatusException; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.parser.Tag; +import org.jsoup.select.Elements; + +public class JsoupExample { + + public static void main(String[] args) throws IOException { + scrapeSpringBlog(); + } + + static void scrapeSpringBlog() throws IOException { + String blogUrl = "https://spring.io/blog"; + Document doc = Jsoup.connect(blogUrl).get(); + + try { + Document doc404 = Jsoup.connect("https://spring.io/will-not-be-found").get(); + } catch (HttpStatusException ex) { + System.out.println(ex.getMessage()); + } + + Document docCustomConn = Jsoup.connect(blogUrl).userAgent("Mozilla").get(); + docCustomConn = Jsoup.connect(blogUrl).timeout(5000).get(); + docCustomConn = Jsoup.connect(blogUrl).cookie("cookiename", "val234").get(); + // docCustomConn = Jsoup.connect(blogUrl).data("datakey", "datavalue").post(); + docCustomConn = Jsoup.connect(blogUrl).header("headersecurity", "xyz123").get(); + + docCustomConn = Jsoup.connect(blogUrl) + .userAgent("Mozilla") + .timeout(5000) + .cookie("cookiename", "val234") + .cookie("anothercookie", "ilovejsoup") + .header("headersecurity", "xyz123") + .get(); + + Elements links = doc.select("a"); + Elements sections = doc.select("section"); + Elements logo = doc.select(".spring-logo--container"); + Elements pagination = doc.select("#pagination_control"); + Elements divsDescendant = doc.select("header div"); + Elements divsDirect = doc.select("header > div"); + + Element pag = doc.getElementById("pagination_control"); + Elements desktopOnly = doc.getElementsByClass("desktopOnly"); + + Element firstSection = sections.first(); + Element lastSection = sections.last(); + Element secondSection = sections.get(2); + Elements allParents = firstSection.parents(); + Element parent = firstSection.parent(); + Elements children = firstSection.children(); + Elements siblings = firstSection.siblingElements(); + + sections.stream().forEach(el -> System.out.println("section: " + el)); + + Elements sectionParagraphs = firstSection.select(".paragraph"); + + Element firstArticle = doc.select("article").first(); + Element timeElement = firstArticle.select("time").first(); + String dateTimeOfFirstArticle = timeElement.attr("datetime"); + Element sectionDiv = firstArticle.select("section div").first(); + String sectionDivText = sectionDiv.text(); + String articleHtml = firstArticle.html(); + String outerHtml = firstArticle.outerHtml(); + + timeElement.attr("datetime", "2016-12-16 15:19:54.3"); + sectionDiv.text("foo bar"); + firstArticle.select("h2").html("
"); + + Element link = new Element(Tag.valueOf("a"), "") + .text("Checkout this amazing website!") + .attr("href", "http://baeldung.com") + .attr("target", "_blank"); + firstArticle.appendChild(link); + + doc.select("li.navbar-link").remove(); + firstArticle.select("img").remove(); + + File indexFile = new File("/tmp", "spring_blog_home.html"); + FileUtils.writeStringToFile(indexFile, doc.html(), doc.charset()); + } +} diff --git a/pom.xml b/pom.xml index 8d55c2933d..cb1b882b3f 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung parent-modules @@ -64,11 +64,12 @@ jsf json-path json + jsoup junit5 log-mdc log4j - log4j2 + log4j2 lombok mapstruct @@ -119,8 +120,8 @@ spring-jpa spring-katharsis spring-mockito - spring-mvc-email - spring-mvc-forms + spring-mvc-email + spring-mvc-forms spring-mvc-java spring-mvc-no-xml spring-mvc-tiles From ff5e07323dad89e45382527d63a3040b5ea82240 Mon Sep 17 00:00:00 2001 From: Pedja Date: Mon, 26 Dec 2016 13:25:12 +0100 Subject: [PATCH 395/399] Renamed module imageprocessing to image-processing --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cb1b882b3f..52c6ec611d 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ httpclient hystrix - imageprocessing + image-processing immutables jackson From 759d8e16872b9613993df3950997f9eba9df8b70 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 26 Dec 2016 17:07:32 +0200 Subject: [PATCH 396/399] maven upgrade --- spring-data-neo4j/pom.xml | 138 ++++++++++++++++++++------------------ 1 file changed, 71 insertions(+), 67 deletions(-) diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index a151d129a7..ce10313b2e 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -5,21 +5,6 @@ com.baeldung spring-data-neo4j 1.0 - jar - - - 1.8 - UTF-8 - UTF-8 - 3.0.7 - 4.1.5.RELEASE - 1.1 - 1.4.2.RELEASE - 4.3.4.RELEASE - 2.0.5 - 4.12 - 2.19.1 - @@ -76,6 +61,7 @@ ${neo4j.version} test + junit junit @@ -89,57 +75,75 @@ - - - - maven-compiler-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - **/*IntegrationTest.java - **/*LiveTest.java - - - - - + + + + maven-compiler-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + + + 1.8 + UTF-8 + UTF-8 + + 3.0.7 + 4.1.6.RELEASE + 1.1 + 1.4.3.RELEASE + 4.3.5.RELEASE + 2.0.6 + + 4.12 + + 2.19.1 + - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - From bc518a5bc14c23e37e55c427f1879145eaf7ce93 Mon Sep 17 00:00:00 2001 From: eugenp Date: Mon, 26 Dec 2016 18:09:10 +0200 Subject: [PATCH 397/399] maven work --- ejb/ejb-client/pom.xml | 25 +++++++++++++------------ image-processing/pom.xml | 8 ++++---- log4j2/pom.xml | 22 ++++++++++++++++++---- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/ejb/ejb-client/pom.xml b/ejb/ejb-client/pom.xml index 84656b40c5..2580a1e869 100755 --- a/ejb/ejb-client/pom.xml +++ b/ejb/ejb-client/pom.xml @@ -1,15 +1,16 @@ - 4.0.0 - - com.baeldung.ejb - ejb - 1.0-SNAPSHOT - - ejb-client - EJB3 Client Maven - EJB3 Client Maven + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + 4.0.0 + ejb-client + ejb-client + + + com.baeldung.ejb + ejb + 1.0-SNAPSHOT + + org.wildfly @@ -44,10 +45,10 @@ - + 4.12 2.19.1 - + \ No newline at end of file diff --git a/image-processing/pom.xml b/image-processing/pom.xml index 20fb70edd9..8766da571e 100644 --- a/image-processing/pom.xml +++ b/image-processing/pom.xml @@ -1,11 +1,10 @@ - + 4.0.0 com.baeldung - imageprocessing + image-processing 1.0-SNAPSHOT @@ -25,4 +24,5 @@ ${core-image.version}
+ \ No newline at end of file diff --git a/log4j2/pom.xml b/log4j2/pom.xml index 124b19330f..1ac3d47486 100644 --- a/log4j2/pom.xml +++ b/log4j2/pom.xml @@ -1,7 +1,6 @@ - + 4.0.0 log4j2 @@ -65,6 +64,7 @@ + org.apache.maven.plugins maven-compiler-plugin @@ -74,9 +74,23 @@ 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + + true + + + - + 2.8.5 1.4.193 From ed89b85f18982d9c885ca4b18e6b250c1782c8c1 Mon Sep 17 00:00:00 2001 From: maibin Date: Mon, 26 Dec 2016 21:21:17 +0100 Subject: [PATCH 398/399] Slope One refactoring (#926) * @Async and Spring Security * @Async with SecurityContext propagated * Spring and @Async * Simulated Annealing algorithm * Simulated Annealing algorithm * Rebase * Rebase * SA further fixes * Slope One plus package refactoring * SlopeOne refactoring --- .../algorithms/slope_one/SlopeOne.java | 88 ++++++++++--------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/algorithms/slope_one/SlopeOne.java b/core-java/src/main/java/com/baeldung/algorithms/slope_one/SlopeOne.java index 800a86884f..f11538356a 100644 --- a/core-java/src/main/java/com/baeldung/algorithms/slope_one/SlopeOne.java +++ b/core-java/src/main/java/com/baeldung/algorithms/slope_one/SlopeOne.java @@ -11,8 +11,8 @@ import java.util.Map.Entry; */ public class SlopeOne { - private static Map> differencesMatrix = new HashMap<>(); - private static Map> frequenciesMatrix = new HashMap<>(); + private static Map> diff = new HashMap<>(); + private static Map> freq = new HashMap<>(); private static Map> inputData; private static Map> outputData = new HashMap<>(); @@ -28,33 +28,36 @@ public class SlopeOne { * Based on the available data, calculate the relationships between the * items and number of occurences * - * @param data existing user data and their items' ratings + * @param data + * existing user data and their items' ratings */ private static void buildDifferencesMatrix(Map> data) { for (HashMap user : data.values()) { - for (Entry entry : user.entrySet()) { - if (!differencesMatrix.containsKey(entry.getKey())) { - differencesMatrix.put(entry.getKey(), new HashMap()); - frequenciesMatrix.put(entry.getKey(), new HashMap()); + for (Entry e : user.entrySet()) { + if (!diff.containsKey(e.getKey())) { + diff.put(e.getKey(), new HashMap()); + freq.put(e.getKey(), new HashMap()); } - for (Entry entry2 : user.entrySet()) { + for (Entry e2 : user.entrySet()) { int oldCount = 0; - if (frequenciesMatrix.get(entry.getKey()).containsKey(entry2.getKey())) - oldCount = frequenciesMatrix.get(entry.getKey()).get(entry2.getKey()).intValue(); + if (freq.get(e.getKey()).containsKey(e2.getKey())) { + oldCount = freq.get(e.getKey()).get(e2.getKey()).intValue(); + } double oldDiff = 0.0; - if (differencesMatrix.get(entry.getKey()).containsKey(entry2.getKey())) - oldDiff = differencesMatrix.get(entry.getKey()).get(entry2.getKey()).doubleValue(); - double observedDiff = entry.getValue() - entry2.getValue(); - frequenciesMatrix.get(entry.getKey()).put(entry2.getKey(), oldCount + 1); - differencesMatrix.get(entry.getKey()).put(entry2.getKey(), oldDiff + observedDiff); + if (diff.get(e.getKey()).containsKey(e2.getKey())) { + oldDiff = diff.get(e.getKey()).get(e2.getKey()).doubleValue(); + } + double observedDiff = e.getValue() - e2.getValue(); + freq.get(e.getKey()).put(e2.getKey(), oldCount + 1); + diff.get(e.getKey()).put(e2.getKey(), oldDiff + observedDiff); } } } - for (Item j : differencesMatrix.keySet()) { - for (Item i : differencesMatrix.get(j).keySet()) { - double oldvalue = differencesMatrix.get(j).get(i).doubleValue(); - int count = frequenciesMatrix.get(j).get(i).intValue(); - differencesMatrix.get(j).put(i, oldvalue / count); + for (Item j : diff.keySet()) { + for (Item i : diff.get(j).keySet()) { + double oldValue = diff.get(j).get(i).doubleValue(); + int count = freq.get(j).get(i).intValue(); + diff.get(j).put(i, oldValue / count); } } printData(data); @@ -64,41 +67,42 @@ public class SlopeOne { * Based on existing data predict all missing ratings. If prediction is not * possible, the value will be equal to -1 * - * @param data existing user data and their items' ratings + * @param data + * existing user data and their items' ratings */ private static void predict(Map> data) { - HashMap predictions = new HashMap(); - HashMap frequencies = new HashMap(); - for (Item j : differencesMatrix.keySet()) { - frequencies.put(j, 0); - predictions.put(j, 0.0); + HashMap uPred = new HashMap(); + HashMap uFreq = new HashMap(); + for (Item j : diff.keySet()) { + uFreq.put(j, 0); + uPred.put(j, 0.0); } - for (Entry> entry : data.entrySet()) { - for (Item j : entry.getValue().keySet()) { - for (Item k : differencesMatrix.keySet()) { + for (Entry> e : data.entrySet()) { + for (Item j : e.getValue().keySet()) { + for (Item k : diff.keySet()) { try { - double newValue = (differencesMatrix.get(k).get(j).doubleValue() - + entry.getValue().get(j).doubleValue()) * frequenciesMatrix.get(k).get(j).intValue(); - predictions.put(k, predictions.get(k) + newValue); - frequencies.put(k, frequencies.get(k) + frequenciesMatrix.get(k).get(j).intValue()); - } catch (NullPointerException e) { + double predictedValue = diff.get(k).get(j).doubleValue() + e.getValue().get(j).doubleValue(); + double finalValue = predictedValue * freq.get(k).get(j).intValue(); + uPred.put(k, uPred.get(k) + finalValue); + uFreq.put(k, uFreq.get(k) + freq.get(k).get(j).intValue()); + } catch (NullPointerException e1) { } } } - HashMap cleanPredictions = new HashMap(); - for (Item j : predictions.keySet()) { - if (frequencies.get(j) > 0) { - cleanPredictions.put(j, predictions.get(j).doubleValue() / frequencies.get(j).intValue()); + HashMap clean = new HashMap(); + for (Item j : uPred.keySet()) { + if (uFreq.get(j) > 0) { + clean.put(j, uPred.get(j).doubleValue() / uFreq.get(j).intValue()); } } for (Item j : InputData.items) { - if (entry.getValue().containsKey(j)) { - cleanPredictions.put(j, entry.getValue().get(j)); + if (e.getValue().containsKey(j)) { + clean.put(j, e.getValue().get(j)); } else { - cleanPredictions.put(j, -1.0); + clean.put(j, -1.0); } } - outputData.put(entry.getKey(), cleanPredictions); + outputData.put(e.getKey(), clean); } printData(outputData); } From bfaff068134968f799b55888da0e3391967a8383 Mon Sep 17 00:00:00 2001 From: eugenp Date: Tue, 27 Dec 2016 13:00:01 +0200 Subject: [PATCH 399/399] maven cleanup work --- javax-servlets/pom.xml | 5 +++-- .../servlets}/FormServlet.java | 0 .../servlets}/FormServletLiveTest.java | 11 +++++------ log4j2/pom.xml | 3 +++ 4 files changed, 11 insertions(+), 8 deletions(-) rename javax-servlets/src/main/java/com/{baeldung.servlets => baeldung/servlets}/FormServlet.java (100%) rename javax-servlets/src/test/java/com/{baeldung.servlets => baeldung/servlets}/FormServletLiveTest.java (99%) diff --git a/javax-servlets/pom.xml b/javax-servlets/pom.xml index a01a80077f..68a1b9c441 100644 --- a/javax-servlets/pom.xml +++ b/javax-servlets/pom.xml @@ -4,9 +4,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.root - ServletmavenExample + com.baeldung + javax-servlets 1.0-SNAPSHOT + diff --git a/javax-servlets/src/main/java/com/baeldung.servlets/FormServlet.java b/javax-servlets/src/main/java/com/baeldung/servlets/FormServlet.java similarity index 100% rename from javax-servlets/src/main/java/com/baeldung.servlets/FormServlet.java rename to javax-servlets/src/main/java/com/baeldung/servlets/FormServlet.java diff --git a/javax-servlets/src/test/java/com/baeldung.servlets/FormServletLiveTest.java b/javax-servlets/src/test/java/com/baeldung/servlets/FormServletLiveTest.java similarity index 99% rename from javax-servlets/src/test/java/com/baeldung.servlets/FormServletLiveTest.java rename to javax-servlets/src/test/java/com/baeldung/servlets/FormServletLiveTest.java index 45f5e83c87..dca725ae32 100644 --- a/javax-servlets/src/test/java/com/baeldung.servlets/FormServletLiveTest.java +++ b/javax-servlets/src/test/java/com/baeldung/servlets/FormServletLiveTest.java @@ -1,5 +1,10 @@ package com.baeldung.servlets; +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; + import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; @@ -8,11 +13,6 @@ import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.junit.Test; -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; - public class FormServletLiveTest { @Test @@ -25,7 +25,6 @@ public class FormServletLiveTest { nvps.add(new BasicNameValuePair("height", String.valueOf(2))); nvps.add(new BasicNameValuePair("weight", String.valueOf(80))); - method.setEntity(new UrlEncodedFormEntity(nvps)); HttpResponse httpResponse = client.execute(method); diff --git a/log4j2/pom.xml b/log4j2/pom.xml index 1ac3d47486..893c79be72 100644 --- a/log4j2/pom.xml +++ b/log4j2/pom.xml @@ -97,6 +97,9 @@ 2.1.1 2.7 4.12 + 3.6.0 + 2.19.1 +