diff --git a/.gitignore b/.gitignore index 245974c..35c1233 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,10 @@ -/target/ +HELP.md +target/ !.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** ### STS ### -.xls -.metadata .apt_generated .classpath .factorypath @@ -20,8 +21,21 @@ ### NetBeans ### /nbproject/private/ -/build/ /nbbuild/ /dist/ /nbdist/ -/.nb-gradle/ \ No newline at end of file +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ + +# Compiled class file +*.class +**/target/ +design/ +uml/ + +# Log file +*.log +*.log.gz \ No newline at end of file diff --git a/.metadata/.lock b/.metadata/.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.mylyn/.taskListIndex/segments_1 b/.metadata/.mylyn/.taskListIndex/segments_1 new file mode 100644 index 0000000..e0a412a Binary files /dev/null and b/.metadata/.mylyn/.taskListIndex/segments_1 differ diff --git a/.metadata/.mylyn/.taskListIndex/write.lock b/.metadata/.mylyn/.taskListIndex/write.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.mylyn/.tasks.xml.zip b/.metadata/.mylyn/.tasks.xml.zip new file mode 100644 index 0000000..9939b35 Binary files /dev/null and b/.metadata/.mylyn/.tasks.xml.zip differ diff --git a/.metadata/.mylyn/repositories.xml.zip b/.metadata/.mylyn/repositories.xml.zip new file mode 100644 index 0000000..41efd12 Binary files /dev/null and b/.metadata/.mylyn/repositories.xml.zip differ diff --git a/.metadata/.mylyn/tasks.xml.zip b/.metadata/.mylyn/tasks.xml.zip new file mode 100644 index 0000000..9256d39 Binary files /dev/null and b/.metadata/.mylyn/tasks.xml.zip differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/0/8063cb34e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/0/8063cb34e345001c11de97d36a89b06b new file mode 100644 index 0000000..21dad82 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/0/8063cb34e345001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling.services; + +public class VeryComplexService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/0/f0ca2e52c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/0/f0ca2e52c646001c137a95b836e30a66 new file mode 100644 index 0000000..62abbac --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/0/f0ca2e52c646001c137a95b836e30a66 @@ -0,0 +1,20 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + // constructor: + + + + // set-get: + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/10/c0bd632d5945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/10/c0bd632d5945001c1e6d86658ace159a new file mode 100644 index 0000000..14cba28 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/10/c0bd632d5945001c1e6d86658ace159a @@ -0,0 +1,10 @@ +package com.use.jar; + + +public class TestUseJar { + + public static void main(String[] args) { + int result = add2(3,4); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/13/404cc4978d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/13/404cc4978d46001c137a95b836e30a66 new file mode 100644 index 0000000..895d896 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/13/404cc4978d46001c137a95b836e30a66 @@ -0,0 +1,8 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/13/8006fa007944001c155ec24d5b86e7d1 b/.metadata/.plugins/org.eclipse.core.resources/.history/13/8006fa007944001c155ec24d5b86e7d1 new file mode 100644 index 0000000..c7fcd1e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/13/8006fa007944001c155ec24d5b86e7d1 @@ -0,0 +1,5 @@ +package com.manhkm.jar; + +public class FunctionOne { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/14/80f89c5dc646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/14/80f89c5dc646001c137a95b836e30a66 new file mode 100644 index 0000000..b7144f8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/14/80f89c5dc646001c137a95b836e30a66 @@ -0,0 +1,22 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + // set-get: + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/14/901a7a15c846001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/14/901a7a15c846001c137a95b836e30a66 new file mode 100644 index 0000000..425bbd2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/14/901a7a15c846001c137a95b836e30a66 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/15/300edd755945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/15/300edd755945001c1e6d86658ace159a new file mode 100644 index 0000000..177079c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/15/300edd755945001c1e6d86658ace159a @@ -0,0 +1,11 @@ +package com.use.jar; + +import com.manhkm.jar.FunctionOne; + +public class TestUseJar { + + public static void main(String[] args) { + System.out.println(add(11, 22)); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/17/30430f75e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/17/30430f75e345001c11de97d36a89b06b new file mode 100644 index 0000000..b674153 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/17/30430f75e345001c11de97d36a89b06b @@ -0,0 +1,18 @@ +package com.tight.coupling.services; + +import com.tight.coupling.SortAlgorithm; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; + + // constructor: + public VeryComplexService(SortAlgorithm sortAlgorithm) { + super(); + this.sortAlgorithm = sortAlgorithm; + } + + public void complexBusiness(int array[]) { + sortAlgorithm.sort(array); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/17/f0e1f30d8e46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/17/f0e1f30d8e46001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/18/00311f87c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/18/00311f87c646001c137a95b836e30a66 new file mode 100644 index 0000000..f1de0cc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/18/00311f87c646001c137a95b836e30a66 @@ -0,0 +1,6 @@ +package com.webservice.ws; + +@WebService +public class UserService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/18/40675e8e8c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/18/40675e8e8c46001c137a95b836e30a66 new file mode 100644 index 0000000..dbf608f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/18/40675e8e8c46001c137a95b836e30a66 @@ -0,0 +1,11 @@ +package ws; + +import javax.jws.WebService; + +@WebService +public class EchoWS { + + public String echo(String s) { + return "Echo: "; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/18/90e28d35c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/18/90e28d35c746001c137a95b836e30a66 new file mode 100644 index 0000000..607431a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/18/90e28d35c746001c137a95b836e30a66 @@ -0,0 +1,46 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/19/60d32baad546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/19/60d32baad546001c137a95b836e30a66 new file mode 100644 index 0000000..947675f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/19/60d32baad546001c137a95b836e30a66 @@ -0,0 +1,13 @@ +package com.webservice.ws; + +/** + * + * @author ManhKM + * wsimport -s . http://localhost:8089/ws/users?wsdl + * + */ +public class SoapClient { + public static void main(String[] args) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1c/60b5b471c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/1c/60b5b471c646001c137a95b836e30a66 new file mode 100644 index 0000000..d46e931 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1c/60b5b471c646001c137a95b836e30a66 @@ -0,0 +1,38 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + // set-get: + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + // toString: + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/10d8e1e1e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/10d8e1e1e345001c11de97d36a89b06b new file mode 100644 index 0000000..b674153 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/10d8e1e1e345001c11de97d36a89b06b @@ -0,0 +1,18 @@ +package com.tight.coupling.services; + +import com.tight.coupling.SortAlgorithm; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; + + // constructor: + public VeryComplexService(SortAlgorithm sortAlgorithm) { + super(); + this.sortAlgorithm = sortAlgorithm; + } + + public void complexBusiness(int array[]) { + sortAlgorithm.sort(array); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b07adb57d646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b07adb57d646001c137a95b836e30a66 new file mode 100644 index 0000000..b6378b9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b07adb57d646001c137a95b836e30a66 @@ -0,0 +1,36 @@ +package com.webservice.ws; + +import java.util.Arrays; + +/** + * + * @author ManhKM + * wsimport -s . http://localhost:8089/ws/users?wsdl + * + */ +public class SoapClient { + public static void main(String[] args) { + UserServiceImplService userServiceImplService = new UserServiceImplService(); + UserService userService = userServiceImplService.getUserServiceImplPort(); + + User user1 = new User(); + user1.setId(100); + user1.setUsername("alibaba"); + + User user2 = new User(); + user2.setId(101); + user2.setUsername("tom"); + + User user3 = new User(); + user3.setId(102); + user3.setUsername("jery"); + + userService.insert(user1); + userService.insert(user2); + userService.insert(user3); + + System.out.println("Get all Users : " + Arrays.asList(userService.getAll())); + + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/c094721e7944001c155ec24d5b86e7d1 b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/c094721e7944001c155ec24d5b86e7d1 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/e0fe61de8d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/e0fe61de8d46001c137a95b836e30a66 new file mode 100644 index 0000000..c8df89f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/e0fe61de8d46001c137a95b836e30a66 @@ -0,0 +1,13 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWSService service = new EchoWSService(); + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1f/302c9469c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/302c9469c646001c137a95b836e30a66 new file mode 100644 index 0000000..8d463f8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/302c9469c646001c137a95b836e30a66 @@ -0,0 +1,37 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + // set-get: + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1f/50ec5009c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/50ec5009c646001c137a95b836e30a66 new file mode 100644 index 0000000..466ca17 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/50ec5009c646001c137a95b836e30a66 @@ -0,0 +1,5 @@ + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1f/e0a1c9cae245001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/e0a1c9cae245001c11de97d36a89b06b new file mode 100644 index 0000000..0b83095 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/e0a1c9cae245001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling; + +public class SortAlgorithm { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1f/e0caaa94c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/e0caaa94c746001c137a95b836e30a66 new file mode 100644 index 0000000..292e8ea --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/e0caaa94c746001c137a95b836e30a66 @@ -0,0 +1,50 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + return 0; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1; + } + + @Override + public boolean update(User user) { + return USERS.put(user.getId(), user) != null; + } + + @Override + public boolean delete(int id) { + return USERS.remove(id) != null; + } + + @Override + public User get(int id) { + return USES.getOrDefault(id, new User()); + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2/f044c8dc6248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/2/f044c8dc6248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..19ef650 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2/f044c8dc6248001c1eb1b6cc5fdf9661 @@ -0,0 +1,22 @@ +package com.gpcoder; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "user") +public class User { + + private Integer id; + private String username; + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2/f0ff4091eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/2/f0ff4091eb45001c11de97d36a89b06b new file mode 100644 index 0000000..f31fe28 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2/f0ff4091eb45001c11de97d36a89b06b @@ -0,0 +1,12 @@ +package com.ioc.entity; + +public class Girl { + + private Outfit outfit; + public Girl(Outfit anything) { + outfit = anything; + } + public Outfit getOutfit() { + return outfit; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/20/300ccfdec746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/20/300ccfdec746001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/20/30817967d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/20/30817967d446001c137a95b836e30a66 new file mode 100644 index 0000000..ec2a5be --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/20/30817967d446001c137a95b836e30a66 @@ -0,0 +1,27 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + // create a service instance with the specified WSDL. + Service service = Service.create(wsdlURL, qname); + + // we need to pass interface and model beans to client: + UserService userService = service.getPort(UserService.class); + + User user1 = new User(1, "manhkm"); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/20/7090c0efe345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/20/7090c0efe345001c11de97d36a89b06b new file mode 100644 index 0000000..176f8cb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/20/7090c0efe345001c11de97d36a89b06b @@ -0,0 +1,14 @@ +package com.tight.coupling; + +import com.tight.coupling.services.VeryComplexService; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + SortAlgorithm quickSort = new QuicksortAlgorithm(); + + VeryComplexService business1 = new VeryComplexService(bubbleSort); + business1. + VeryComplexService business2 = new VeryComplexService(quickSort); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/21/80a108c1c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/21/80a108c1c646001c137a95b836e30a66 new file mode 100644 index 0000000..c37d0c1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/21/80a108c1c646001c137a95b836e30a66 @@ -0,0 +1,21 @@ +package com.webservice.ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); + + @WebMethod + boolean update(User user); + + @WebMethod + boolean delete(int id); + + User get(int id); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/22/704175d45f48001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/22/704175d45f48001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..7d83a2d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/22/704175d45f48001c1eb1b6cc5fdf9661 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/23/90bae8a3c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/23/90bae8a3c646001c137a95b836e30a66 new file mode 100644 index 0000000..9f7d18a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/23/90bae8a3c646001c137a95b836e30a66 @@ -0,0 +1,11 @@ +package com.webservice.ws; + +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + int insert(User user); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/23/c0632e14e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/23/c0632e14e345001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/23/f05384f8e245001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/23/f05384f8e245001c11de97d36a89b06b new file mode 100644 index 0000000..7ba631a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/23/f05384f8e245001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling; + +public class BubbleSortAlgorithm implements SortAlgorithm{ + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/24/004b217fc646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/24/004b217fc646001c137a95b836e30a66 new file mode 100644 index 0000000..2e2590a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/24/004b217fc646001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package com.webservice.ws; + +public class UserService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/25/006d5569eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/25/006d5569eb45001c11de97d36a89b06b new file mode 100644 index 0000000..4c30274 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/25/006d5569eb45001c11de97d36a89b06b @@ -0,0 +1,8 @@ +package com.ioc; + +public class Main { + public static void main(String[] args) { + Outfit bikini = new Bikini(); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/27/1042ef51e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/27/1042ef51e345001c11de97d36a89b06b new file mode 100644 index 0000000..8de0bee --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/27/1042ef51e345001c11de97d36a89b06b @@ -0,0 +1,9 @@ +package com.tight.coupling.services; + +import com.tight.coupling.SortAlgorithm; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/29/106bbd32e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/29/106bbd32e345001c11de97d36a89b06b new file mode 100644 index 0000000..56c8a26 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/29/106bbd32e345001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling; + +public class VeryComplexService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2a/f02a1c08c846001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/2a/f02a1c08c846001c137a95b836e30a66 new file mode 100644 index 0000000..d500691 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2a/f02a1c08c846001c137a95b836e30a66 @@ -0,0 +1,10 @@ +package com.webservice.ws; + +public class SoapPublisher { + + public static final String WS_URL = "http://localhost:8089/ws/users"; + + public static void main(String[] args) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2b/f0b5a2e45845001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/2b/f0b5a2e45845001c1e6d86658ace159a new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2c/00b663d6d546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/2c/00b663d6d546001c137a95b836e30a66 new file mode 100644 index 0000000..ca70316 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2c/00b663d6d546001c137a95b836e30a66 @@ -0,0 +1,14 @@ +package com.webservice.ws; + +/** + * + * @author ManhKM + * wsimport -s . http://localhost:8089/ws/users?wsdl + * + */ +public class SoapClient { + public static void main(String[] args) { + UserServiceImplService userServiceImplService = new UserServiceImplService(); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2c/8098b25cc646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/2c/8098b25cc646001c137a95b836e30a66 new file mode 100644 index 0000000..508cbe6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2c/8098b25cc646001c137a95b836e30a66 @@ -0,0 +1,21 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + // set-get: + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2e/c0372917e445001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/2e/c0372917e445001c11de97d36a89b06b new file mode 100644 index 0000000..479c7d4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2e/c0372917e445001c11de97d36a89b06b @@ -0,0 +1,14 @@ +package com.tight.coupling; + +import com.tight.coupling.services.VeryComplexService; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + SortAlgorithm quickSort = new QuicksortAlgorithm(); + + VeryComplexService business1 = new VeryComplexService(bubbleSort); + + VeryComplexService business2 = new VeryComplexService(quickSort); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2f/60b686fcb346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/60b686fcb346001c137a95b836e30a66 new file mode 100644 index 0000000..098a2d0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/60b686fcb346001c137a95b836e30a66 @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2f/7039829ee345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/7039829ee345001c11de97d36a89b06b new file mode 100644 index 0000000..9e40e4d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/7039829ee345001c11de97d36a89b06b @@ -0,0 +1,6 @@ +package com.tight.coupling; + +public class Main { + public static void main(String[] args) { + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/30/90f9050ac846001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/30/90f9050ac846001c137a95b836e30a66 new file mode 100644 index 0000000..2297389 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/30/90f9050ac846001c137a95b836e30a66 @@ -0,0 +1,12 @@ +package com.webservice.ws; + +import javax.xml.ws.Endpoint; + +public class SoapPublisher { + + public static final String WS_URL = "http://localhost:8089/ws/users"; + + public static void main(String[] args) { + Endpoint.publish(WS_URL, new UserServiceImpl()) + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/31/0073b489e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/31/0073b489e345001c11de97d36a89b06b new file mode 100644 index 0000000..0395e35 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/31/0073b489e345001c11de97d36a89b06b @@ -0,0 +1,7 @@ +package com.tight.coupling; + +public class Main { + public static void main(String[] args) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/32/50b3cc2ac646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/32/50b3cc2ac646001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/33/7015cf37c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/33/7015cf37c646001c137a95b836e30a66 new file mode 100644 index 0000000..24d4180 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/33/7015cf37c646001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package com.webservice.ws; + +public class User { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/34/6017579ad546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/34/6017579ad546001c137a95b836e30a66 new file mode 100644 index 0000000..5006835 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/34/6017579ad546001c137a95b836e30a66 @@ -0,0 +1,11 @@ +package com.webservice.ws; + +/** + * + * @author ManhKM + * wsimport -s . http://localhost:8089/ws/users?wsdl + * + */ +public class SoapClient { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/35/00dd9f0bd446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/35/00dd9f0bd446001c137a95b836e30a66 new file mode 100644 index 0000000..5dfa238 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/35/00dd9f0bd446001c137a95b836e30a66 @@ -0,0 +1,15 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImpl"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/35/7007c3eddd42001c149691cc9b37b92a b/.metadata/.plugins/org.eclipse.core.resources/.history/35/7007c3eddd42001c149691cc9b37b92a new file mode 100644 index 0000000..34aa0bd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/35/7007c3eddd42001c149691cc9b37b92a @@ -0,0 +1,13 @@ +## Bài toán: + +Name: App CurrencyConverter +Mô tả: Chức năng chuyển đổi các đơn vị tiền tệ khác nhau. +Ứng dụng được viết dưới dạng chủ-khách bằng các sử dụng công nghệ socket. +Ứng dụng: khách nhập số tiền, đơn vị tiền +Máy chủ: Trả về giá trị tiền tương ứng. +Ứng dụng khách in ra số tiền tương ứng trên màn hình. + + +## Thiết kế: + +## Tài liệu tham khảo: diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/35/903881605945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/35/903881605945001c1e6d86658ace159a new file mode 100644 index 0000000..9510161 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/35/903881605945001c1e6d86658ace159a @@ -0,0 +1,11 @@ +package com.use.jar; + +import com.manhkm.jar.FunctionOne; + +public class TestUseJar { + + public static void main(String[] args) { + FunctionOne + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/35/b0f184e2ea45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/35/b0f184e2ea45001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/37/208afba4c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/37/208afba4c646001c137a95b836e30a66 new file mode 100644 index 0000000..2f24bdb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/37/208afba4c646001c137a95b836e30a66 @@ -0,0 +1,12 @@ +package com.webservice.ws; + +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/37/900e752ae345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/37/900e752ae345001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/37/f0f656f8d546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/37/f0f656f8d546001c137a95b836e30a66 new file mode 100644 index 0000000..8e8bf94 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/37/f0f656f8d546001c137a95b836e30a66 @@ -0,0 +1,19 @@ +package com.webservice.ws; + +/** + * + * @author ManhKM + * wsimport -s . http://localhost:8089/ws/users?wsdl + * + */ +public class SoapClient { + public static void main(String[] args) { + UserServiceImplService userServiceImplService = new UserServiceImplService(); + UserService userService = userServiceImplService.getUserServiceImplPort(); + + User user1 = new User(); + user1.setId(100); + user1.setUsername("alibaba"); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/39/50272260c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/39/50272260c746001c137a95b836e30a66 new file mode 100644 index 0000000..817eae9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/39/50272260c746001c137a95b836e30a66 @@ -0,0 +1,46 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/39/e0ec03868d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/39/e0ec03868d46001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3c/408feb44c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/408feb44c646001c137a95b836e30a66 new file mode 100644 index 0000000..8a1ded5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/408feb44c646001c137a95b836e30a66 @@ -0,0 +1,9 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3c/60449178eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/60449178eb45001c11de97d36a89b06b new file mode 100644 index 0000000..d5ca2e8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/60449178eb45001c11de97d36a89b06b @@ -0,0 +1,12 @@ +package com.ioc; + +import com.ioc.entity.Bikini; +import com.ioc.entity.Outfit; + +public class Main { + public static void main(String[] args) { + Outfit bikini = new Bikini(); + + Girl girl1 = new Girl(bikini); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3d/30e7dc41eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/3d/30e7dc41eb45001c11de97d36a89b06b new file mode 100644 index 0000000..45809d8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3d/30e7dc41eb45001c11de97d36a89b06b @@ -0,0 +1,9 @@ +package com.ioc.entity; + +public class Girl { + + private Outfit outfit; + public Girl(Outfit anything) { + outfit = anything + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3d/7082b887d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/3d/7082b887d446001c137a95b836e30a66 new file mode 100644 index 0000000..6e5febf --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3d/7082b887d446001c137a95b836e30a66 @@ -0,0 +1,35 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + // create a service instance with the specified WSDL. + Service service = Service.create(wsdlURL, qname); + + // we need to pass interface and model beans to client: + UserService userService = service.getPort(UserService.class); + + User user1 = new User(1, "manhkm"); + User user2 = new User(2, "trangtt"); + User user3 = new User(3, "thanglv"); + + userService.insert(user1); + userService.insert(user2); + userService.insert(user3); + + + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3d/f0488257eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/3d/f0488257eb45001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3f/307aa559b346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/307aa559b346001c137a95b836e30a66 new file mode 100644 index 0000000..7c71552 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/307aa559b346001c137a95b836e30a66 @@ -0,0 +1,6 @@ + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3f/5076fff1c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/5076fff1c746001c137a95b836e30a66 new file mode 100644 index 0000000..52a88f7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/5076fff1c746001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package com.webservice.ws; + +public class SoapPublisher { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3f/f0f8f2938d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/f0f8f2938d46001c137a95b836e30a66 new file mode 100644 index 0000000..f8e864e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/f0f8f2938d46001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package ws; + +public class EchoClient { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/42/50bd53928c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/42/50bd53928c46001c137a95b836e30a66 new file mode 100644 index 0000000..322352b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/42/50bd53928c46001c137a95b836e30a66 @@ -0,0 +1,11 @@ +package ws; + +import javax.jws.WebService; + +@WebService +public class EchoWS { + + public String echo(String s) { + return "Echo: " + s; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/42/f06cc573c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/42/f06cc573c646001c137a95b836e30a66 new file mode 100644 index 0000000..02b2b3b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/42/f06cc573c646001c137a95b836e30a66 @@ -0,0 +1,40 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + // set-get: + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + @Override + public String toString() { + return "User [id=" + id + ", username=" + username + "]"; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/43/30e42e8ad546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/43/30e42e8ad546001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/47/9065dc13c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/47/9065dc13c746001c137a95b836e30a66 new file mode 100644 index 0000000..c9b4a78 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/47/9065dc13c746001c137a95b836e30a66 @@ -0,0 +1,45 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/47/f04ba9f9e245001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/47/f04ba9f9e245001c11de97d36a89b06b new file mode 100644 index 0000000..2b36a86 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/47/f04ba9f9e245001c11de97d36a89b06b @@ -0,0 +1,11 @@ +package com.tight.coupling; + +public class BubbleSortAlgorithm implements SortAlgorithm{ + + @Override + public void sort(int[] array) { + // TODO Auto-generated method stub + + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/48/10fc1c405945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/48/10fc1c405945001c1e6d86658ace159a new file mode 100644 index 0000000..fbd0580 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/48/10fc1c405945001c1e6d86658ace159a @@ -0,0 +1,11 @@ +package com.use.jar; + +import com.manhkm.jar.FunctionOne; + +public class TestUseJar { + + public static void main(String[] args) { + int result = FunctionOne.add2(3,4); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/49/a05a4e09ce46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/49/a05a4e09ce46001c137a95b836e30a66 new file mode 100644 index 0000000..30d5ca7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/49/a05a4e09ce46001c137a95b836e30a66 @@ -0,0 +1,48 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + user.setId(id); + USERS.put(id, user); + return id; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1; + } + + @Override + public boolean update(User user) { + return USERS.put(user.getId(), user) != null; + } + + @Override + public boolean delete(int id) { + return USERS.remove(id) != null; + } + + @Override + public User get(int id) { + return USERS.getOrDefault(id, new User()); + } + + @Override + public User[] getAll() { + return USERS.values().toArray(new User[0]); + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/49/c03e1117eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/49/c03e1117eb45001c11de97d36a89b06b new file mode 100644 index 0000000..cbe5f8c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/49/c03e1117eb45001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.ioc.entity; + +public class Bikini implements Outfit{ + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4a/50ce5509c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/4a/50ce5509c646001c137a95b836e30a66 new file mode 100644 index 0000000..2fc7793 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4a/50ce5509c646001c137a95b836e30a66 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4f/c06d68407944001c155ec24d5b86e7d1 b/.metadata/.plugins/org.eclipse.core.resources/.history/4f/c06d68407944001c155ec24d5b86e7d1 new file mode 100644 index 0000000..4a39dd9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4f/c06d68407944001c155ec24d5b86e7d1 @@ -0,0 +1,12 @@ +package com.manhkm.jar; + +public class FunctionOne { + + public int add3(int a, int b, int c) { + return (a+b+c); + } + + public int add2(int a, int b) { + return (a+b); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/50/00b4f178d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/50/00b4f178d446001c137a95b836e30a66 new file mode 100644 index 0000000..cae54d2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/50/00b4f178d446001c137a95b836e30a66 @@ -0,0 +1,31 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + // create a service instance with the specified WSDL. + Service service = Service.create(wsdlURL, qname); + + // we need to pass interface and model beans to client: + UserService userService = service.getPort(UserService.class); + + User user1 = new User(1, "manhkm"); + User user2 = new User(2, "trangtt"); + User user3 = new User(3, "thanglv"); + + userService.insert(user1); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/52/60ca7baec646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/52/60ca7baec646001c137a95b836e30a66 new file mode 100644 index 0000000..e8011de --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/52/60ca7baec646001c137a95b836e30a66 @@ -0,0 +1,16 @@ +package com.webservice.ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); + + @WebMethod + boolean update(User user); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/52/c0af1e61c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/52/c0af1e61c746001c137a95b836e30a66 new file mode 100644 index 0000000..b805616 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/52/c0af1e61c746001c137a95b836e30a66 @@ -0,0 +1,53 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + return 0; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1;; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/53/d0299e4dc746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/53/d0299e4dc746001c137a95b836e30a66 new file mode 100644 index 0000000..0c49413 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/53/d0299e4dc746001c137a95b836e30a66 @@ -0,0 +1,46 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id =Integer generateUniqueId(); + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/54/20aa7023eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/54/20aa7023eb45001c11de97d36a89b06b new file mode 100644 index 0000000..0bdb19b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/54/20aa7023eb45001c11de97d36a89b06b @@ -0,0 +1,9 @@ +package com.ioc.entity; + +public class Bikini implements Outfit{ + + @Override + public void wear() { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/56/206f5fd3b346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/56/206f5fd3b346001c137a95b836e30a66 new file mode 100644 index 0000000..425bbd2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/56/206f5fd3b346001c137a95b836e30a66 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/56/50abec94c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/56/50abec94c646001c137a95b836e30a66 new file mode 100644 index 0000000..2c873bf --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/56/50abec94c646001c137a95b836e30a66 @@ -0,0 +1,7 @@ +package com.webservice.ws; + +import javax.jws.WebService; +@WebService +public class UserService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/57/50bde7bec646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/57/50bde7bec646001c137a95b836e30a66 new file mode 100644 index 0000000..a110a4b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/57/50bde7bec646001c137a95b836e30a66 @@ -0,0 +1,19 @@ +package com.webservice.ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); + + @WebMethod + boolean update(User user); + + @WebMethod + boolean delete(int id); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/57/c0b6b5c18c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/57/c0b6b5c18c46001c137a95b836e30a66 new file mode 100644 index 0000000..6ef5511 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/57/c0b6b5c18c46001c137a95b836e30a66 @@ -0,0 +1,20 @@ +package ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.xml.ws.Endpoint; + +@WebService +public class EchoWS { + + @WebMethod + public String echo(String s) { + return "Echo: " + s; + } + + public static void main(String[] agrs) { + System.out.println("EchoWS up and running..."); + String url = "http://192.168.0.5:8888/EchoWS"; + Endpoint.publish(url, new EchoWS()) + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/58/00c79b7dc746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/58/00c79b7dc746001c137a95b836e30a66 new file mode 100644 index 0000000..00a23f3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/58/00c79b7dc746001c137a95b836e30a66 @@ -0,0 +1,52 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + return 0; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1; + } + + @Override + public boolean update(User user) { + return USERS.put(user.getId(), user) != null; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/58/20d99a33eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/58/20d99a33eb45001c11de97d36a89b06b new file mode 100644 index 0000000..0e1ab1f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/58/20d99a33eb45001c11de97d36a89b06b @@ -0,0 +1,9 @@ +package com.ioc.entity; + +public class Girl { + + private Bikini outfit; + public Girl() { + outfit = new Bikini(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/58/307414a6c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/58/307414a6c646001c137a95b836e30a66 new file mode 100644 index 0000000..4d446fc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/58/307414a6c646001c137a95b836e30a66 @@ -0,0 +1,13 @@ +package com.webservice.ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5b/004df299d346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/5b/004df299d346001c137a95b836e30a66 new file mode 100644 index 0000000..77398b3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5b/004df299d346001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package com.webservice.ws; + +public class SoapClient { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5b/40c7810ed446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/5b/40c7810ed446001c137a95b836e30a66 new file mode 100644 index 0000000..cff204a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5b/40c7810ed446001c137a95b836e30a66 @@ -0,0 +1,15 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5d/909c08d3b346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/5d/909c08d3b346001c137a95b836e30a66 new file mode 100644 index 0000000..94d95b9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5d/909c08d3b346001c137a95b836e30a66 @@ -0,0 +1,29 @@ + + + SoapWebServiceExample + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + + Apache-Axis Servlet + AxisServlet + org.apache.axis.transport.http.AxisServlet + + + AxisServlet + /servlet/AxisServlet + + + AxisServlet + *.jws + + + AxisServlet + /services/* + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5e/40c8c9ed8d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/40c8c9ed8d46001c137a95b836e30a66 new file mode 100644 index 0000000..d16eb57 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/40c8c9ed8d46001c137a95b836e30a66 @@ -0,0 +1,14 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWSService service = new EchoWSService(); + EchoWS port = service.getEchoWSPort(); + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5e/f0f82429d546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/f0f82429d546001c137a95b836e30a66 new file mode 100644 index 0000000..6578536 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/f0f82429d546001c137a95b836e30a66 @@ -0,0 +1,6 @@ + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5f/10c6a8c1ea45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/10c6a8c1ea45001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5f/207eb732d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/207eb732d446001c137a95b836e30a66 new file mode 100644 index 0000000..a42f62f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/207eb732d446001c137a95b836e30a66 @@ -0,0 +1,18 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6/404b2329d546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/6/404b2329d546001c137a95b836e30a66 new file mode 100644 index 0000000..0df37ab --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6/404b2329d546001c137a95b836e30a66 @@ -0,0 +1,5 @@ + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6/f0498fb8c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/6/f0498fb8c646001c137a95b836e30a66 new file mode 100644 index 0000000..12acd8d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6/f0498fb8c646001c137a95b836e30a66 @@ -0,0 +1,18 @@ +package com.webservice.ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); + + @WebMethod + boolean update(User user); + + boolean delete(int id); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/60/00c6fc16e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/60/00c6fc16e345001c11de97d36a89b06b new file mode 100644 index 0000000..427b4c8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/60/00c6fc16e345001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling; + +public class QuicksortAlgorithm { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/61/6060a859b346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/61/6060a859b346001c137a95b836e30a66 new file mode 100644 index 0000000..be07662 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/61/6060a859b346001c137a95b836e30a66 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/62/10a89119eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/62/10a89119eb45001c11de97d36a89b06b new file mode 100644 index 0000000..7580324 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/62/10a89119eb45001c11de97d36a89b06b @@ -0,0 +1,10 @@ +package com.ioc.entity; + +public class Bikini implements Outfit{ + + @Override + public void wear() { + // TODO Auto-generated method stub + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/62/2066f2ebdd42001c149691cc9b37b92a b/.metadata/.plugins/org.eclipse.core.resources/.history/62/2066f2ebdd42001c149691cc9b37b92a new file mode 100644 index 0000000..db3dfe2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/62/2066f2ebdd42001c149691cc9b37b92a @@ -0,0 +1,13 @@ +## Bài toán: + +Name: App CurrencyConverter +Mô tả: Chức năng chuyển đổi các đơn vị tiền tệ khác nhau. +Ứng dụng được viết dưới dạng chủ-khách bằng các sử dụng công nghệ socket. +Ứng dụng khách nhập số tiền, đơn vị tiền +Máy chủ: Trả về giá trị tiền tương ứng. +Ứng dụng khách in ra số tiền tương ứng trên màn hình. + + +## Thiết kế: + +## Tài liệu tham khảo: diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/62/d01e187bc646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/62/d01e187bc646001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/63/2017889ce345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/63/2017889ce345001c11de97d36a89b06b new file mode 100644 index 0000000..402928c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/63/2017889ce345001c11de97d36a89b06b @@ -0,0 +1,7 @@ +package com.tight.coupling; + +public class Main { + public static void main(String[] args) { + SortAlgorithm + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/63/40e610cb6248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/63/40e610cb6248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..3d8ab2a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/63/40e610cb6248001c1eb1b6cc5fdf9661 @@ -0,0 +1,11 @@ +package com.gpcoder; + +import javax.xml.bind.annotation.XmlRootElement; + + +@XmlRootElement(name = "user") +public class User { + + private Integer id; + private String username; +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/63/909d2129d546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/63/909d2129d546001c137a95b836e30a66 new file mode 100644 index 0000000..42b1988 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/63/909d2129d546001c137a95b836e30a66 @@ -0,0 +1,3 @@ + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/65/90e0b014eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/65/90e0b014eb45001c11de97d36a89b06b new file mode 100644 index 0000000..4516ada --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/65/90e0b014eb45001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.ioc.entity; + +public class Bikini { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/66/304682cf5945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/66/304682cf5945001c1e6d86658ace159a new file mode 100644 index 0000000..8732088 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/66/304682cf5945001c1e6d86658ace159a @@ -0,0 +1,16 @@ +package com.use.jar; + +import com.manhkm.jar.FunctionOne; + +public class TestUseJar { + + public static void main(String[] args) { + + } + + public static void usingFunction() { + FunctionOne functionOne = new FunctionOne(); + System.out.println(functionOne.add2(10, 20)); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/66/306d7f00c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/66/306d7f00c746001c137a95b836e30a66 new file mode 100644 index 0000000..7eb8b1d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/66/306d7f00c746001c137a95b836e30a66 @@ -0,0 +1,39 @@ +package com.webservice.ws; + +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + @Override + public int insert(User user) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/67/b0422038c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/67/b0422038c646001c137a95b836e30a66 new file mode 100644 index 0000000..57729f6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/67/b0422038c646001c137a95b836e30a66 @@ -0,0 +1,8 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/67/f0a8865ae345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/67/f0a8865ae345001c11de97d36a89b06b new file mode 100644 index 0000000..3575dcd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/67/f0a8865ae345001c11de97d36a89b06b @@ -0,0 +1,10 @@ +package com.tight.coupling.services; + +import com.tight.coupling.SortAlgorithm; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; + + // constructor: + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/69/60b8d47cc546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/69/60b8d47cc546001c137a95b836e30a66 new file mode 100644 index 0000000..79d003e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/69/60b8d47cc546001c137a95b836e30a66 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6a/3026d1047944001c155ec24d5b86e7d1 b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/3026d1047944001c155ec24d5b86e7d1 new file mode 100644 index 0000000..43a7323 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/3026d1047944001c155ec24d5b86e7d1 @@ -0,0 +1,8 @@ +package com.manhkm.jar; + +public class FunctionOne { + + public int add2(int a, int b, int c) { + return (a+b+c); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6a/603d1344d646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/603d1344d646001c137a95b836e30a66 new file mode 100644 index 0000000..4ed1d37 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/603d1344d646001c137a95b836e30a66 @@ -0,0 +1,37 @@ +package com.webservice.ws; + +import java.util.Arrays; + +/** + * + * @author ManhKM + * wsimport -s . http://localhost:8089/ws/users?wsdl + * + */ +public class SoapClient { + public static void main(String[] args) { + UserServiceImplService userServiceImplService = new UserServiceImplService(); + UserService userService = userServiceImplService.getUserServiceImplPort(); + + User user1 = new User(); + user1.setId(100); + user1.setUsername("alibaba"); + + User user2 = new User(); + user2.setId(101); + user2.setUsername("tom"); + + User user3 = new User(); + user3.setId(102); + user3.setUsername("jery"); + + userService.insert(user1); + userService.insert(user2); + userService.insert(user3); + + System.out.println("Get all Users: "); + System.out.println(Arrays.asList(userService.getAll())); + + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6a/60545e87eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/60545e87eb45001c11de97d36a89b06b new file mode 100644 index 0000000..92faccf --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/60545e87eb45001c11de97d36a89b06b @@ -0,0 +1,9 @@ +package com.ioc.entity; + +public class Girl { + + private Outfit outfit; + public Girl(Outfit anything) { + outfit = anything; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6a/a0205409c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/a0205409c646001c137a95b836e30a66 new file mode 100644 index 0000000..609a76d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/a0205409c646001c137a95b836e30a66 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6a/a069d8ea5945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/a069d8ea5945001c1e6d86658ace159a new file mode 100644 index 0000000..759b6ac --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/a069d8ea5945001c1e6d86658ace159a @@ -0,0 +1,5 @@ +package com.use.jar; + +public class DemoHelloWorld { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6b/90fe7506d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/6b/90fe7506d446001c137a95b836e30a66 new file mode 100644 index 0000000..03d09e4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6b/90fe7506d446001c137a95b836e30a66 @@ -0,0 +1,15 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6c/204d5133d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/6c/204d5133d446001c137a95b836e30a66 new file mode 100644 index 0000000..9f9f935 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6c/204d5133d446001c137a95b836e30a66 @@ -0,0 +1,21 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + // create a service instance with the specified WSDL. + Service service = Service.create(wsdlURL, qname) + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6d/802d23a3dd42001c149691cc9b37b92a b/.metadata/.plugins/org.eclipse.core.resources/.history/6d/802d23a3dd42001c149691cc9b37b92a new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6d/f03afe027944001c155ec24d5b86e7d1 b/.metadata/.plugins/org.eclipse.core.resources/.history/6d/f03afe027944001c155ec24d5b86e7d1 new file mode 100644 index 0000000..e031372 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6d/f03afe027944001c155ec24d5b86e7d1 @@ -0,0 +1,8 @@ +package com.manhkm.jar; + +public class FunctionOne { + + public int add(int a, int b, int c) { + return (a+b+c); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6e/1067949b8d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/1067949b8d46001c137a95b836e30a66 new file mode 100644 index 0000000..782aa7c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/1067949b8d46001c137a95b836e30a66 @@ -0,0 +1,12 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + + } catch (Exception e) { + // TODO: handle exception + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6e/10e6be938c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/10e6be938c46001c137a95b836e30a66 new file mode 100644 index 0000000..c144a10 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/10e6be938c46001c137a95b836e30a66 @@ -0,0 +1,12 @@ +package ws; + +import javax.jws.WebService; + +@WebService +public class EchoWS { + + @WebMethod + public String echo(String s) { + return "Echo: " + s; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6f/b0dcde3d7944001c155ec24d5b86e7d1 b/.metadata/.plugins/org.eclipse.core.resources/.history/6f/b0dcde3d7944001c155ec24d5b86e7d1 new file mode 100644 index 0000000..af5c274 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6f/b0dcde3d7944001c155ec24d5b86e7d1 @@ -0,0 +1,8 @@ +package com.manhkm.jar; + +public class FunctionTwo { + + public int duplicate(int a, int b) { + return(a*b); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7/50416903b446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/7/50416903b446001c137a95b836e30a66 new file mode 100644 index 0000000..169358a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7/50416903b446001c137a95b836e30a66 @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding//src/main/java/com/webservice/HelloWorld.java=UTF-8 +encoding//src/main/java/com/webservice/HelloWorldSoapBindingStub.java=UTF-8 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7/d05d3d4bc446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/7/d05d3d4bc446001c137a95b836e30a66 new file mode 100644 index 0000000..61ee733 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7/d05d3d4bc446001c137a95b836e30a66 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/71/004bf5a2e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/71/004bf5a2e345001c11de97d36a89b06b new file mode 100644 index 0000000..0eae657 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/71/004bf5a2e345001c11de97d36a89b06b @@ -0,0 +1,7 @@ +package com.tight.coupling; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/72/009a5209c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/72/009a5209c646001c137a95b836e30a66 new file mode 100644 index 0000000..c1e1d85 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/72/009a5209c646001c137a95b836e30a66 @@ -0,0 +1,6 @@ + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/74/40a9dad1c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/74/40a9dad1c646001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/76/5025b932e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/76/5025b932e345001c11de97d36a89b06b new file mode 100644 index 0000000..56c8a26 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/76/5025b932e345001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling; + +public class VeryComplexService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/76/90bcd27cc546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/76/90bcd27cc546001c137a95b836e30a66 new file mode 100644 index 0000000..0567324 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/76/90bcd27cc546001c137a95b836e30a66 @@ -0,0 +1,260 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// ============================================================================ +// catalina.policy - Security Policy Permissions for Tomcat +// +// This file contains a default set of security policies to be enforced (by the +// JVM) when Catalina is executed with the "-security" option. In addition +// to the permissions granted here, the following additional permissions are +// granted to each web application: +// +// * Read access to the web application's document root directory +// * Read, write and delete access to the web application's working directory +// ============================================================================ + + +// ========== SYSTEM CODE PERMISSIONS ========================================= + + +// These permissions apply to javac +grant codeBase "file:${java.home}/lib/-" { + permission java.security.AllPermission; +}; + +// These permissions apply to all shared system extensions +grant codeBase "file:${java.home}/jre/lib/ext/-" { + permission java.security.AllPermission; +}; + +// These permissions apply to javac when ${java.home} points at $JAVA_HOME/jre +grant codeBase "file:${java.home}/../lib/-" { + permission java.security.AllPermission; +}; + +// These permissions apply to all shared system extensions when +// ${java.home} points at $JAVA_HOME/jre +grant codeBase "file:${java.home}/lib/ext/-" { + permission java.security.AllPermission; +}; + + +// ========== CATALINA CODE PERMISSIONS ======================================= + + +// These permissions apply to the daemon code +grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" { + permission java.security.AllPermission; +}; + +// These permissions apply to the logging API +// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home}, +// update this section accordingly. +// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} +grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" { + permission java.io.FilePermission + "${java.home}${file.separator}lib${file.separator}logging.properties", "read"; + + permission java.io.FilePermission + "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read"; + permission java.io.FilePermission + "${catalina.base}${file.separator}logs", "read, write"; + permission java.io.FilePermission + "${catalina.base}${file.separator}logs${file.separator}*", "read, write, delete"; + + permission java.lang.RuntimePermission "shutdownHooks"; + permission java.lang.RuntimePermission "getClassLoader"; + permission java.lang.RuntimePermission "setContextClassLoader"; + + permission java.lang.management.ManagementPermission "monitor"; + + permission java.util.logging.LoggingPermission "control"; + + permission java.util.PropertyPermission "java.util.logging.config.class", "read"; + permission java.util.PropertyPermission "java.util.logging.config.file", "read"; + permission java.util.PropertyPermission "org.apache.juli.AsyncLoggerPollInterval", "read"; + permission java.util.PropertyPermission "org.apache.juli.AsyncMaxRecordCount", "read"; + permission java.util.PropertyPermission "org.apache.juli.AsyncOverflowDropType", "read"; + permission java.util.PropertyPermission "org.apache.juli.ClassLoaderLogManager.debug", "read"; + permission java.util.PropertyPermission "catalina.base", "read"; + + // Note: To enable per context logging configuration, permit read access to + // the appropriate file. Be sure that the logging configuration is + // secure before enabling such access. + // E.g. for the examples web application (uncomment and unwrap + // the following to be on a single line): + // permission java.io.FilePermission "${catalina.base}${file.separator} + // webapps${file.separator}examples${file.separator}WEB-INF + // ${file.separator}classes${file.separator}logging.properties", "read"; +}; + +// These permissions apply to the server startup code +grant codeBase "file:${catalina.home}/bin/bootstrap.jar" { + permission java.security.AllPermission; +}; + +// These permissions apply to the servlet API classes +// and those that are shared across all class loaders +// located in the "lib" directory +grant codeBase "file:${catalina.home}/lib/-" { + permission java.security.AllPermission; +}; + + +// If using a per instance lib directory, i.e. ${catalina.base}/lib, +// then the following permission will need to be uncommented +// grant codeBase "file:${catalina.base}/lib/-" { +// permission java.security.AllPermission; +// }; + + +// ========== WEB APPLICATION PERMISSIONS ===================================== + + +// These permissions are granted by default to all web applications +// In addition, a web application will be given a read FilePermission +// for all files and directories in its document root. +grant { + // Required for JNDI lookup of named JDBC DataSource's and + // javamail named MimePart DataSource used to send mail + permission java.util.PropertyPermission "java.home", "read"; + permission java.util.PropertyPermission "java.naming.*", "read"; + permission java.util.PropertyPermission "javax.sql.*", "read"; + + // OS Specific properties to allow read access + permission java.util.PropertyPermission "os.name", "read"; + permission java.util.PropertyPermission "os.version", "read"; + permission java.util.PropertyPermission "os.arch", "read"; + permission java.util.PropertyPermission "file.separator", "read"; + permission java.util.PropertyPermission "path.separator", "read"; + permission java.util.PropertyPermission "line.separator", "read"; + + // JVM properties to allow read access + permission java.util.PropertyPermission "java.version", "read"; + permission java.util.PropertyPermission "java.vendor", "read"; + permission java.util.PropertyPermission "java.vendor.url", "read"; + permission java.util.PropertyPermission "java.class.version", "read"; + permission java.util.PropertyPermission "java.specification.version", "read"; + permission java.util.PropertyPermission "java.specification.vendor", "read"; + permission java.util.PropertyPermission "java.specification.name", "read"; + + permission java.util.PropertyPermission "java.vm.specification.version", "read"; + permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; + permission java.util.PropertyPermission "java.vm.specification.name", "read"; + permission java.util.PropertyPermission "java.vm.version", "read"; + permission java.util.PropertyPermission "java.vm.vendor", "read"; + permission java.util.PropertyPermission "java.vm.name", "read"; + + // Required for OpenJMX + permission java.lang.RuntimePermission "getAttribute"; + + // Allow read of JAXP compliant XML parser debug + permission java.util.PropertyPermission "jaxp.debug", "read"; + + // All JSPs need to be able to read this package + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat"; + + // Precompiled JSPs need access to these packages. + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime"; + permission java.lang.RuntimePermission + "accessClassInPackage.org.apache.jasper.runtime.*"; + + // Applications using WebSocket need to be able to access these packages + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; +}; + + +// The Manager application needs access to the following packages to support the +// session display functionality. It also requires the custom Tomcat +// DeployXmlPermission to enable the use of META-INF/context.xml +// These settings support the following configurations: +// - default CATALINA_HOME == CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME +grant codeBase "file:${catalina.base}/webapps/manager/-" { + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util"; + permission org.apache.catalina.security.DeployXmlPermission "manager"; +}; +grant codeBase "file:${catalina.home}/webapps/manager/-" { + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util"; + permission org.apache.catalina.security.DeployXmlPermission "manager"; +}; + +// The Host Manager application needs the custom Tomcat DeployXmlPermission to +// enable the use of META-INF/context.xml +// These settings support the following configurations: +// - default CATALINA_HOME == CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, per instance Host Manager in CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, shared Host Manager in CATALINA_HOME +grant codeBase "file:${catalina.base}/webapps/host-manager/-" { + permission org.apache.catalina.security.DeployXmlPermission "host-manager"; +}; +grant codeBase "file:${catalina.home}/webapps/host-manager/-" { + permission org.apache.catalina.security.DeployXmlPermission "host-manager"; +}; + + +// You can assign additional permissions to particular web applications by +// adding additional "grant" entries here, based on the code base for that +// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files. +// +// Different permissions can be granted to JSP pages, classes loaded from +// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/ +// directory, or even to individual jar files in the /WEB-INF/lib/ directory. +// +// For instance, assume that the standard "examples" application +// included a JDBC driver that needed to establish a network connection to the +// corresponding database and used the scrape taglib to get the weather from +// the NOAA web server. You might create a "grant" entries like this: +// +// The permissions granted to the context root directory apply to JSP pages. +// grant codeBase "file:${catalina.base}/webapps/examples/-" { +// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect"; +// permission java.net.SocketPermission "*.noaa.gov:80", "connect"; +// }; +// +// The permissions granted to the context WEB-INF/classes directory +// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" { +// }; +// +// The permission granted to your JDBC driver +// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" { +// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect"; +// }; +// The permission granted to the scrape taglib +// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" { +// permission java.net.SocketPermission "*.noaa.gov:80", "connect"; +// }; + +// To grant permissions for web applications using packed WAR files, use the +// Tomcat specific WAR url scheme. +// +// The permissions granted to the entire web application +// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/-" { +// }; +// +// The permissions granted to a specific JAR +// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/WEB-INF/lib/foo.jar" { +// }; diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/78/804b6e95d346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/78/804b6e95d346001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/79/8057ebace345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/79/8057ebace345001c11de97d36a89b06b new file mode 100644 index 0000000..fe586bb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/79/8057ebace345001c11de97d36a89b06b @@ -0,0 +1,8 @@ +package com.tight.coupling; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + SortAlgorithm bubbleSort = new QuicksortAlgorithm(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/79/b04e8d10d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/79/b04e8d10d446001c137a95b836e30a66 new file mode 100644 index 0000000..36f55db --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/79/b04e8d10d446001c137a95b836e30a66 @@ -0,0 +1,17 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/79/c05b99ecd346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/79/c05b99ecd346001c137a95b836e30a66 new file mode 100644 index 0000000..b44bfeb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/79/c05b99ecd346001c137a95b836e30a66 @@ -0,0 +1,13 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/79/f010c446e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/79/f010c446e345001c11de97d36a89b06b new file mode 100644 index 0000000..8f806f4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/79/f010c446e345001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling.services; + +public class VeryComplexService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7a/b033deb5c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/7a/b033deb5c646001c137a95b836e30a66 new file mode 100644 index 0000000..dee15f5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7a/b033deb5c646001c137a95b836e30a66 @@ -0,0 +1,18 @@ +package com.webservice.ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); + + @WebMethod + boolean update(User user); + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7c/400155b68d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/400155b68d46001c137a95b836e30a66 new file mode 100644 index 0000000..c8df89f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/400155b68d46001c137a95b836e30a66 @@ -0,0 +1,13 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWSService service = new EchoWSService(); + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7c/c0a2194ec446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/c0a2194ec446001c137a95b836e30a66 new file mode 100644 index 0000000..fb6eaa0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/c0a2194ec446001c137a95b836e30a66 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7d/2030fe23c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/7d/2030fe23c746001c137a95b836e30a66 new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7d/2030fe23c746001c137a95b836e30a66 @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7d/40af93a7c846001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/7d/40af93a7c846001c137a95b836e30a66 new file mode 100644 index 0000000..c7cf678 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7d/40af93a7c846001c137a95b836e30a66 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7d/d0d22bd4e245001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/7d/d0d22bd4e245001c11de97d36a89b06b new file mode 100644 index 0000000..bca8e00 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7d/d0d22bd4e245001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling; + +public interface SortAlgorithm { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7e/50d06603b446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/7e/50d06603b446001c137a95b836e30a66 new file mode 100644 index 0000000..d009bc7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7e/50d06603b446001c137a95b836e30a66 @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//src/main/java/com/webservice/HelloWorld.java=UTF-8 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7e/c0d364fae245001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/7e/c0d364fae245001c11de97d36a89b06b new file mode 100644 index 0000000..d455971 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7e/c0d364fae245001c11de97d36a89b06b @@ -0,0 +1,10 @@ +package com.tight.coupling; + +public class BubbleSortAlgorithm implements SortAlgorithm{ + + @Override + public void sort(int[] array) { + // TODO Auto-generated method stub + + }\ +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8/408f73f16248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/8/408f73f16248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..c28a87e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8/408f73f16248001c1eb1b6cc5fdf9661 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8/b02ee82dc746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/8/b02ee82dc746001c137a95b836e30a66 new file mode 100644 index 0000000..607431a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8/b02ee82dc746001c137a95b836e30a66 @@ -0,0 +1,46 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/80/d03c6422e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/80/d03c6422e345001c11de97d36a89b06b new file mode 100644 index 0000000..32f86e4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/80/d03c6422e345001c11de97d36a89b06b @@ -0,0 +1,11 @@ +package com.tight.coupling; + +public class QuicksortAlgorithm implements SortAlgorithm{ + + @Override + public void sort(int[] array) { + // TODO Auto-generated method stub + + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/82/50eb1d04b446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/82/50eb1d04b446001c137a95b836e30a66 new file mode 100644 index 0000000..3869006 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/82/50eb1d04b446001c137a95b836e30a66 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/83/20f4c12d7944001c155ec24d5b86e7d1 b/.metadata/.plugins/org.eclipse.core.resources/.history/83/20f4c12d7944001c155ec24d5b86e7d1 new file mode 100644 index 0000000..9861ddd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/83/20f4c12d7944001c155ec24d5b86e7d1 @@ -0,0 +1,5 @@ +package com.manhkm.jar; + +public class FunctionTwo { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/84/c05d49edc646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/84/c05d49edc646001c137a95b836e30a66 new file mode 100644 index 0000000..5b47d2e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/84/c05d49edc646001c137a95b836e30a66 @@ -0,0 +1,6 @@ +package com.webservice.ws; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/85/102eb3418842001c1cbc975586bbcf20 b/.metadata/.plugins/org.eclipse.core.resources/.history/85/102eb3418842001c1cbc975586bbcf20 new file mode 100644 index 0000000..741c332 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/85/102eb3418842001c1cbc975586bbcf20 @@ -0,0 +1,16 @@ +package com.demo; + +public class StringBufferDemo { + public static void main(String[] args) { + long start = System.nanoTime(); + + StringBuffer s = new StringBuffer("hello"); + for(int i = 0; i < 1000; i++) { + s.append(" World"); + } + long end = System.nanoTime(); + + System.out.println("Total time: " + (end-start)); + // before: Total time: 5002500 + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/85/40c94e4ed446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/85/40c94e4ed446001c137a95b836e30a66 new file mode 100644 index 0000000..6a58c73 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/85/40c94e4ed446001c137a95b836e30a66 @@ -0,0 +1,22 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + // create a service instance with the specified WSDL. + Service service = Service.create(wsdlURL, qname); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/85/70b0e220e445001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/85/70b0e220e445001c11de97d36a89b06b new file mode 100644 index 0000000..d6103a4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/85/70b0e220e445001c11de97d36a89b06b @@ -0,0 +1,15 @@ +package com.tight.coupling; + +import com.tight.coupling.services.VeryComplexService; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + SortAlgorithm quickSort = new QuicksortAlgorithm(); + + VeryComplexService business1 = new VeryComplexService(bubbleSort); + business1.complexBusiness(null); + + VeryComplexService business2 = new VeryComplexService(quickSort); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/86/e05f847ee345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/86/e05f847ee345001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/86/f0f233cec746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/86/f0f233cec746001c137a95b836e30a66 new file mode 100644 index 0000000..99f804b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/86/f0f233cec746001c137a95b836e30a66 @@ -0,0 +1,46 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + return 0; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1; + } + + @Override + public boolean update(User user) { + return USERS.put(user.getId(), user) != null; + } + + @Override + public boolean delete(int id) { + return USERS.remove(id) != null; + } + + @Override + public User get(int id) { + return USERS.getOrDefault(id, new User()); + } + + @Override + public User[] getAll() { + return USERS.values().toArray(new User[0]); + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/87/10a568c0d346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/87/10a568c0d346001c137a95b836e30a66 new file mode 100644 index 0000000..c105c04 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/87/10a568c0d346001c137a95b836e30a66 @@ -0,0 +1,12 @@ +package com.webservice.ws; + +import java.net.URL; + +public class SoapClient { + public static void main(String[] args) { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/87/40bc09cee345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/87/40bc09cee345001c11de97d36a89b06b new file mode 100644 index 0000000..2ef40c0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/87/40bc09cee345001c11de97d36a89b06b @@ -0,0 +1,13 @@ +package com.tight.coupling; + +import com.tight.coupling.services.VeryComplexService; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + SortAlgorithm quickSort = new QuicksortAlgorithm(); + + VeryComplexService business1 = new VeryComplexService(bubbleSort); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/88/2061b1ca6248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/88/2061b1ca6248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..6126f6c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/88/2061b1ca6248001c1eb1b6cc5fdf9661 @@ -0,0 +1,14 @@ +package com.gpcoder; + +import javax.xml.bind.annotation.XmlRootElement; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@XmlRootElement(name = "user") +public class User { + + private Integer id; + private String username; +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/88/50b0d62e8842001c1cbc975586bbcf20 b/.metadata/.plugins/org.eclipse.core.resources/.history/88/50b0d62e8842001c1cbc975586bbcf20 new file mode 100644 index 0000000..8d9cc21 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/88/50b0d62e8842001c1cbc975586bbcf20 @@ -0,0 +1,15 @@ +package com.demo; + +public class StringBufferDemo { + public static void main(String[] args) { + long start = System.nanoTime(); + + StringBuffer s = new StringBuffer("hello"); + for(int i = 0; i < 1000; i++) { + s.append + } + long end = System.nanoTime(); + + System.out.println("Total time: " + (end-start)); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/89/7013fc6fc746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/89/7013fc6fc746001c137a95b836e30a66 new file mode 100644 index 0000000..01a0b1e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/89/7013fc6fc746001c137a95b836e30a66 @@ -0,0 +1,53 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + return 0; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8c/308b9455c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/8c/308b9455c646001c137a95b836e30a66 new file mode 100644 index 0000000..24f5b55 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8c/308b9455c646001c137a95b836e30a66 @@ -0,0 +1,22 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + + + + + // set-get: + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8d/302eeae85945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/8d/302eeae85945001c1e6d86658ace159a new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8d/508ea7ffc746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/8d/508ea7ffc746001c137a95b836e30a66 new file mode 100644 index 0000000..e5d536f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8d/508ea7ffc746001c137a95b836e30a66 @@ -0,0 +1,7 @@ +package com.webservice.ws; + +public class SoapPublisher { + + public static final String WS_URL = "http://localhost:8089/ws/users"; + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a0797a97eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a0797a97eb45001c11de97d36a89b06b new file mode 100644 index 0000000..c4e4e34 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a0797a97eb45001c11de97d36a89b06b @@ -0,0 +1,13 @@ +package com.ioc; + +import com.ioc.entity.Bikini; +import com.ioc.entity.Girl; +import com.ioc.entity.Outfit; + +public class Main { + public static void main(String[] args) { + Outfit bikini = new Bikini(); + + Girl girl1 = new Girl(bikini); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8e/403ad5bbd346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/8e/403ad5bbd346001c137a95b836e30a66 new file mode 100644 index 0000000..e3683ff --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8e/403ad5bbd346001c137a95b836e30a66 @@ -0,0 +1,10 @@ +package com.webservice.ws; + +public class SoapClient { + public static void main(String[] args) { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8e/90f3a359b346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/8e/90f3a359b346001c137a95b836e30a66 new file mode 100644 index 0000000..5d433c6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8e/90f3a359b346001c137a95b836e30a66 @@ -0,0 +1,5 @@ + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8f/404ea09c8c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/8f/404ea09c8c46001c137a95b836e30a66 new file mode 100644 index 0000000..606922d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8f/404ea09c8c46001c137a95b836e30a66 @@ -0,0 +1,13 @@ +package ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; + +@WebService +public class EchoWS { + + @WebMethod + public String echo(String s) { + return "Echo: " + s; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8f/d0bc1fadc646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/8f/d0bc1fadc646001c137a95b836e30a66 new file mode 100644 index 0000000..b4b3033 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8f/d0bc1fadc646001c137a95b836e30a66 @@ -0,0 +1,15 @@ +package com.webservice.ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9/401e71f16248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/9/401e71f16248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..0567324 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9/401e71f16248001c1eb1b6cc5fdf9661 @@ -0,0 +1,260 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// ============================================================================ +// catalina.policy - Security Policy Permissions for Tomcat +// +// This file contains a default set of security policies to be enforced (by the +// JVM) when Catalina is executed with the "-security" option. In addition +// to the permissions granted here, the following additional permissions are +// granted to each web application: +// +// * Read access to the web application's document root directory +// * Read, write and delete access to the web application's working directory +// ============================================================================ + + +// ========== SYSTEM CODE PERMISSIONS ========================================= + + +// These permissions apply to javac +grant codeBase "file:${java.home}/lib/-" { + permission java.security.AllPermission; +}; + +// These permissions apply to all shared system extensions +grant codeBase "file:${java.home}/jre/lib/ext/-" { + permission java.security.AllPermission; +}; + +// These permissions apply to javac when ${java.home} points at $JAVA_HOME/jre +grant codeBase "file:${java.home}/../lib/-" { + permission java.security.AllPermission; +}; + +// These permissions apply to all shared system extensions when +// ${java.home} points at $JAVA_HOME/jre +grant codeBase "file:${java.home}/lib/ext/-" { + permission java.security.AllPermission; +}; + + +// ========== CATALINA CODE PERMISSIONS ======================================= + + +// These permissions apply to the daemon code +grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" { + permission java.security.AllPermission; +}; + +// These permissions apply to the logging API +// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home}, +// update this section accordingly. +// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} +grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" { + permission java.io.FilePermission + "${java.home}${file.separator}lib${file.separator}logging.properties", "read"; + + permission java.io.FilePermission + "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read"; + permission java.io.FilePermission + "${catalina.base}${file.separator}logs", "read, write"; + permission java.io.FilePermission + "${catalina.base}${file.separator}logs${file.separator}*", "read, write, delete"; + + permission java.lang.RuntimePermission "shutdownHooks"; + permission java.lang.RuntimePermission "getClassLoader"; + permission java.lang.RuntimePermission "setContextClassLoader"; + + permission java.lang.management.ManagementPermission "monitor"; + + permission java.util.logging.LoggingPermission "control"; + + permission java.util.PropertyPermission "java.util.logging.config.class", "read"; + permission java.util.PropertyPermission "java.util.logging.config.file", "read"; + permission java.util.PropertyPermission "org.apache.juli.AsyncLoggerPollInterval", "read"; + permission java.util.PropertyPermission "org.apache.juli.AsyncMaxRecordCount", "read"; + permission java.util.PropertyPermission "org.apache.juli.AsyncOverflowDropType", "read"; + permission java.util.PropertyPermission "org.apache.juli.ClassLoaderLogManager.debug", "read"; + permission java.util.PropertyPermission "catalina.base", "read"; + + // Note: To enable per context logging configuration, permit read access to + // the appropriate file. Be sure that the logging configuration is + // secure before enabling such access. + // E.g. for the examples web application (uncomment and unwrap + // the following to be on a single line): + // permission java.io.FilePermission "${catalina.base}${file.separator} + // webapps${file.separator}examples${file.separator}WEB-INF + // ${file.separator}classes${file.separator}logging.properties", "read"; +}; + +// These permissions apply to the server startup code +grant codeBase "file:${catalina.home}/bin/bootstrap.jar" { + permission java.security.AllPermission; +}; + +// These permissions apply to the servlet API classes +// and those that are shared across all class loaders +// located in the "lib" directory +grant codeBase "file:${catalina.home}/lib/-" { + permission java.security.AllPermission; +}; + + +// If using a per instance lib directory, i.e. ${catalina.base}/lib, +// then the following permission will need to be uncommented +// grant codeBase "file:${catalina.base}/lib/-" { +// permission java.security.AllPermission; +// }; + + +// ========== WEB APPLICATION PERMISSIONS ===================================== + + +// These permissions are granted by default to all web applications +// In addition, a web application will be given a read FilePermission +// for all files and directories in its document root. +grant { + // Required for JNDI lookup of named JDBC DataSource's and + // javamail named MimePart DataSource used to send mail + permission java.util.PropertyPermission "java.home", "read"; + permission java.util.PropertyPermission "java.naming.*", "read"; + permission java.util.PropertyPermission "javax.sql.*", "read"; + + // OS Specific properties to allow read access + permission java.util.PropertyPermission "os.name", "read"; + permission java.util.PropertyPermission "os.version", "read"; + permission java.util.PropertyPermission "os.arch", "read"; + permission java.util.PropertyPermission "file.separator", "read"; + permission java.util.PropertyPermission "path.separator", "read"; + permission java.util.PropertyPermission "line.separator", "read"; + + // JVM properties to allow read access + permission java.util.PropertyPermission "java.version", "read"; + permission java.util.PropertyPermission "java.vendor", "read"; + permission java.util.PropertyPermission "java.vendor.url", "read"; + permission java.util.PropertyPermission "java.class.version", "read"; + permission java.util.PropertyPermission "java.specification.version", "read"; + permission java.util.PropertyPermission "java.specification.vendor", "read"; + permission java.util.PropertyPermission "java.specification.name", "read"; + + permission java.util.PropertyPermission "java.vm.specification.version", "read"; + permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; + permission java.util.PropertyPermission "java.vm.specification.name", "read"; + permission java.util.PropertyPermission "java.vm.version", "read"; + permission java.util.PropertyPermission "java.vm.vendor", "read"; + permission java.util.PropertyPermission "java.vm.name", "read"; + + // Required for OpenJMX + permission java.lang.RuntimePermission "getAttribute"; + + // Allow read of JAXP compliant XML parser debug + permission java.util.PropertyPermission "jaxp.debug", "read"; + + // All JSPs need to be able to read this package + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat"; + + // Precompiled JSPs need access to these packages. + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime"; + permission java.lang.RuntimePermission + "accessClassInPackage.org.apache.jasper.runtime.*"; + + // Applications using WebSocket need to be able to access these packages + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; +}; + + +// The Manager application needs access to the following packages to support the +// session display functionality. It also requires the custom Tomcat +// DeployXmlPermission to enable the use of META-INF/context.xml +// These settings support the following configurations: +// - default CATALINA_HOME == CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME +grant codeBase "file:${catalina.base}/webapps/manager/-" { + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util"; + permission org.apache.catalina.security.DeployXmlPermission "manager"; +}; +grant codeBase "file:${catalina.home}/webapps/manager/-" { + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util"; + permission org.apache.catalina.security.DeployXmlPermission "manager"; +}; + +// The Host Manager application needs the custom Tomcat DeployXmlPermission to +// enable the use of META-INF/context.xml +// These settings support the following configurations: +// - default CATALINA_HOME == CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, per instance Host Manager in CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, shared Host Manager in CATALINA_HOME +grant codeBase "file:${catalina.base}/webapps/host-manager/-" { + permission org.apache.catalina.security.DeployXmlPermission "host-manager"; +}; +grant codeBase "file:${catalina.home}/webapps/host-manager/-" { + permission org.apache.catalina.security.DeployXmlPermission "host-manager"; +}; + + +// You can assign additional permissions to particular web applications by +// adding additional "grant" entries here, based on the code base for that +// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files. +// +// Different permissions can be granted to JSP pages, classes loaded from +// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/ +// directory, or even to individual jar files in the /WEB-INF/lib/ directory. +// +// For instance, assume that the standard "examples" application +// included a JDBC driver that needed to establish a network connection to the +// corresponding database and used the scrape taglib to get the weather from +// the NOAA web server. You might create a "grant" entries like this: +// +// The permissions granted to the context root directory apply to JSP pages. +// grant codeBase "file:${catalina.base}/webapps/examples/-" { +// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect"; +// permission java.net.SocketPermission "*.noaa.gov:80", "connect"; +// }; +// +// The permissions granted to the context WEB-INF/classes directory +// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" { +// }; +// +// The permission granted to your JDBC driver +// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" { +// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect"; +// }; +// The permission granted to the scrape taglib +// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" { +// permission java.net.SocketPermission "*.noaa.gov:80", "connect"; +// }; + +// To grant permissions for web applications using packed WAR files, use the +// Tomcat specific WAR url scheme. +// +// The permissions granted to the entire web application +// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/-" { +// }; +// +// The permissions granted to a specific JAR +// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/WEB-INF/lib/foo.jar" { +// }; diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9/5089b8e3e245001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/9/5089b8e3e245001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9/c0228400b446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/9/c0228400b446001c137a95b836e30a66 new file mode 100644 index 0000000..3241b06 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9/c0228400b446001c137a95b836e30a66 @@ -0,0 +1,3 @@ + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/93/5064f000de42001c149691cc9b37b92a b/.metadata/.plugins/org.eclipse.core.resources/.history/93/5064f000de42001c149691cc9b37b92a new file mode 100644 index 0000000..72d64fb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/93/5064f000de42001c149691cc9b37b92a @@ -0,0 +1,13 @@ +## Bài toán: + +Name: App CurrencyConverter +Mô tả: Chức năng chuyển đổi các đơn vị tiền tệ khác nhau. +Ứng dụng được viết dưới dạng chủ-khách bằng các sử dụng công nghệ socket. +Ứng dụng: Khách nhập số tiền, đơn vị tiền +Máy chủ: Trả về giá trị tiền tương ứng. +Ứng dụng khách in ra số tiền tương ứng trên màn hình. + + +## Thiết kế: + +## Tài liệu tham khảo: diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/97/00e76cc45945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/97/00e76cc45945001c1e6d86658ace159a new file mode 100644 index 0000000..92e74fd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/97/00e76cc45945001c1e6d86658ace159a @@ -0,0 +1,14 @@ +package com.use.jar; + +import com.manhkm.jar.FunctionOne; + +public class TestUseJar { + + public static void main(String[] args) { + } + + public void usingFunction() { + FunctionOne.add2(10, 20); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/97/f0418aa58c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/97/f0418aa58c46001c137a95b836e30a66 new file mode 100644 index 0000000..e53e21a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/97/f0418aa58c46001c137a95b836e30a66 @@ -0,0 +1,17 @@ +package ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; + +@WebService +public class EchoWS { + + @WebMethod + public String echo(String s) { + return "Echo: " + s; + } + + public static void main(String[] agrs) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/98/b0f4aaa0c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/98/b0f4aaa0c646001c137a95b836e30a66 new file mode 100644 index 0000000..0b29da6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/98/b0f4aaa0c646001c137a95b836e30a66 @@ -0,0 +1,10 @@ +package com.webservice.ws; + +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/99/b0c4c19feb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/99/b0c4c19feb45001c11de97d36a89b06b new file mode 100644 index 0000000..05fed3e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/99/b0c4c19feb45001c11de97d36a89b06b @@ -0,0 +1,14 @@ +package com.ioc; + +import com.ioc.entity.Bikini; +import com.ioc.entity.Girl; +import com.ioc.entity.Outfit; + +public class Main { + public static void main(String[] args) { + Outfit bikini = new Bikini(); + + Girl girl1 = new Girl(bikini); + girl1.getOutfit(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9a/20474374d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/20474374d446001c137a95b836e30a66 new file mode 100644 index 0000000..2bc16d9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/20474374d446001c137a95b836e30a66 @@ -0,0 +1,29 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + // create a service instance with the specified WSDL. + Service service = Service.create(wsdlURL, qname); + + // we need to pass interface and model beans to client: + UserService userService = service.getPort(UserService.class); + + User user1 = new User(1, "manhkm"); + User user2 = new User(2, "trangtt"); + User user3 = new User(3, "thanglv"); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9a/802b74f16248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/802b74f16248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..2e175df --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/802b74f16248001c1eb1b6cc5fdf9661 @@ -0,0 +1,40 @@ + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9c/60da4803eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/9c/60da4803eb45001c11de97d36a89b06b new file mode 100644 index 0000000..6fb900b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9c/60da4803eb45001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.ioc.entity; + +public class Outfit { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9e/7034a159b346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/9e/7034a159b346001c137a95b836e30a66 new file mode 100644 index 0000000..3ef3287 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9e/7034a159b346001c137a95b836e30a66 @@ -0,0 +1,3 @@ + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9f/50eed76aeb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/50eed76aeb45001c11de97d36a89b06b new file mode 100644 index 0000000..922c8b5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/50eed76aeb45001c11de97d36a89b06b @@ -0,0 +1,10 @@ +package com.ioc; + +import com.ioc.entity.Outfit; + +public class Main { + public static void main(String[] args) { + Outfit bikini = new Bikini(); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9f/800966eee345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/800966eee345001c11de97d36a89b06b new file mode 100644 index 0000000..8a9abbd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/800966eee345001c11de97d36a89b06b @@ -0,0 +1,13 @@ +package com.tight.coupling; + +import com.tight.coupling.services.VeryComplexService; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + SortAlgorithm quickSort = new QuicksortAlgorithm(); + + VeryComplexService business1 = new VeryComplexService(bubbleSort); + VeryComplexService business2 = new VeryComplexService(quickSort); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a0/80fa9c49e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/a0/80fa9c49e345001c11de97d36a89b06b new file mode 100644 index 0000000..52020ad --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a0/80fa9c49e345001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling.services; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a1/10f1d299c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/10f1d299c646001c137a95b836e30a66 new file mode 100644 index 0000000..e5107d8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/10f1d299c646001c137a95b836e30a66 @@ -0,0 +1,10 @@ +package com.webservice.ws; + +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public class UserService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a1/f0631af05945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/f0631af05945001c1e6d86658ace159a new file mode 100644 index 0000000..46f1861 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/f0631af05945001c1e6d86658ace159a @@ -0,0 +1,7 @@ +package com.use.jar; + +public class DemoHelloWorld { + public static void main(String[] args) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a2/1058e1d66248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/a2/1058e1d66248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..2d65a83 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a2/1058e1d66248001c1eb1b6cc5fdf9661 @@ -0,0 +1,21 @@ +package com.gpcoder; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "user") +public class User { + + private Integer id; + private String username; + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a2/506a6a8d8c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/a2/506a6a8d8c46001c137a95b836e30a66 new file mode 100644 index 0000000..8d4c7b7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a2/506a6a8d8c46001c137a95b836e30a66 @@ -0,0 +1,8 @@ +package ws; + +import javax.jws.WebService; + +@WebService +public class EchoWS { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a4/b08ac27d8c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/a4/b08ac27d8c46001c137a95b836e30a66 new file mode 100644 index 0000000..6bff51d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a4/b08ac27d8c46001c137a95b836e30a66 @@ -0,0 +1,6 @@ +package ws; + +@WebService +public class EchoWS { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a7/c025b007e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/a7/c025b007e345001c11de97d36a89b06b new file mode 100644 index 0000000..e4f7000 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a7/c025b007e345001c11de97d36a89b06b @@ -0,0 +1,10 @@ +package com.tight.coupling; + +public class BubbleSortAlgorithm implements SortAlgorithm{ + + @Override + public void sort(int[] array) { + // TODO Auto-generated method stub + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ab/1081fb148e46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/1081fb148e46001c137a95b836e30a66 new file mode 100644 index 0000000..5baf62c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/1081fb148e46001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package ws; + +public class EchoWSService { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ab/4048ff17eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/4048ff17eb45001c11de97d36a89b06b new file mode 100644 index 0000000..eba4c21 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/4048ff17eb45001c11de97d36a89b06b @@ -0,0 +1,11 @@ +package com.ioc.entity; + +public class Bikini implements Outfit{ + + @Override + public void wear() { + // TODO Auto-generated method stub + + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ab/40f58b66c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/40f58b66c646001c137a95b836e30a66 new file mode 100644 index 0000000..a93639e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/40f58b66c646001c137a95b836e30a66 @@ -0,0 +1,23 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + // set-get: + + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ad/5006f218e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/5006f218e345001c11de97d36a89b06b new file mode 100644 index 0000000..9456fcd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/5006f218e345001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling; + +public class QuicksortAlgorithm implements SortAlgorithm{ + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ad/704b6f01c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/704b6f01c746001c137a95b836e30a66 new file mode 100644 index 0000000..df93896 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/704b6f01c746001c137a95b836e30a66 @@ -0,0 +1,41 @@ +package com.webservice.ws; + +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ae/108c485cc646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/108c485cc646001c137a95b836e30a66 new file mode 100644 index 0000000..834f712 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/108c485cc646001c137a95b836e30a66 @@ -0,0 +1,26 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + + + + + // set-get: + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ae/20d95500eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/20d95500eb45001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ae/608b87c6e245001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/608b87c6e245001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/af/d0ee74f16248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/af/d0ee74f16248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..1651be8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/af/d0ee74f16248001c1eb1b6cc5fdf9661 @@ -0,0 +1,4726 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + / + + + + + jsp + *.jsp + *.jspx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + + + + + + + + + + + + + 123 + application/vnd.lotus-1-2-3 + + + 3dml + text/vnd.in3d.3dml + + + 3ds + image/x-3ds + + + 3g2 + video/3gpp2 + + + 3gp + video/3gpp + + + 7z + application/x-7z-compressed + + + aab + application/x-authorware-bin + + + aac + audio/x-aac + + + aam + application/x-authorware-map + + + aas + application/x-authorware-seg + + + abs + audio/x-mpeg + + + abw + application/x-abiword + + + ac + application/pkix-attr-cert + + + acc + application/vnd.americandynamics.acc + + + ace + application/x-ace-compressed + + + acu + application/vnd.acucobol + + + acutc + application/vnd.acucorp + + + adp + audio/adpcm + + + aep + application/vnd.audiograph + + + afm + application/x-font-type1 + + + afp + application/vnd.ibm.modcap + + + ahead + application/vnd.ahead.space + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + air + application/vnd.adobe.air-application-installer-package+zip + + + ait + application/vnd.dvb.ait + + + ami + application/vnd.amiga.ami + + + anx + application/annodex + + + apk + application/vnd.android.package-archive + + + appcache + text/cache-manifest + + + application + application/x-ms-application + + + apr + application/vnd.lotus-approach + + + arc + application/x-freearc + + + art + image/x-jg + + + asc + application/pgp-signature + + + asf + video/x-ms-asf + + + asm + text/x-asm + + + aso + application/vnd.accpac.simply.aso + + + asx + video/x-ms-asf + + + atc + application/vnd.acucorp + + + atom + application/atom+xml + + + atomcat + application/atomcat+xml + + + atomsvc + application/atomsvc+xml + + + atx + application/vnd.antix.game-component + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + aw + application/applixware + + + axa + audio/annodex + + + axv + video/annodex + + + azf + application/vnd.airzip.filesecure.azf + + + azs + application/vnd.airzip.filesecure.azs + + + azw + application/vnd.amazon.ebook + + + bat + application/x-msdownload + + + bcpio + application/x-bcpio + + + bdf + application/x-font-bdf + + + bdm + application/vnd.syncml.dm+wbxml + + + bed + application/vnd.realvnc.bed + + + bh2 + application/vnd.fujitsu.oasysprs + + + bin + application/octet-stream + + + blb + application/x-blorb + + + blorb + application/x-blorb + + + bmi + application/vnd.bmi + + + bmp + image/bmp + + + body + text/html + + + book + application/vnd.framemaker + + + box + application/vnd.previewsystems.box + + + boz + application/x-bzip2 + + + bpk + application/octet-stream + + + btif + image/prs.btif + + + bz + application/x-bzip + + + bz2 + application/x-bzip2 + + + c + text/x-c + + + c11amc + application/vnd.cluetrust.cartomobile-config + + + c11amz + application/vnd.cluetrust.cartomobile-config-pkg + + + c4d + application/vnd.clonk.c4group + + + c4f + application/vnd.clonk.c4group + + + c4g + application/vnd.clonk.c4group + + + c4p + application/vnd.clonk.c4group + + + c4u + application/vnd.clonk.c4group + + + cab + application/vnd.ms-cab-compressed + + + caf + audio/x-caf + + + cap + application/vnd.tcpdump.pcap + + + car + application/vnd.curl.car + + + cat + application/vnd.ms-pki.seccat + + + cb7 + application/x-cbr + + + cba + application/x-cbr + + + cbr + application/x-cbr + + + cbt + application/x-cbr + + + cbz + application/x-cbr + + + cc + text/x-c + + + cct + application/x-director + + + ccxml + application/ccxml+xml + + + cdbcmsg + application/vnd.contact.cmsg + + + cdf + application/x-cdf + + + cdkey + application/vnd.mediastation.cdkey + + + cdmia + application/cdmi-capability + + + cdmic + application/cdmi-container + + + cdmid + application/cdmi-domain + + + cdmio + application/cdmi-object + + + cdmiq + application/cdmi-queue + + + cdx + chemical/x-cdx + + + cdxml + application/vnd.chemdraw+xml + + + cdy + application/vnd.cinderella + + + cer + application/pkix-cert + + + cfs + application/x-cfs-compressed + + + cgm + image/cgm + + + chat + application/x-chat + + + chm + application/vnd.ms-htmlhelp + + + chrt + application/vnd.kde.kchart + + + cif + chemical/x-cif + + + cii + application/vnd.anser-web-certificate-issue-initiation + + + cil + application/vnd.ms-artgalry + + + cla + application/vnd.claymore + + + class + application/java + + + clkk + application/vnd.crick.clicker.keyboard + + + clkp + application/vnd.crick.clicker.palette + + + clkt + application/vnd.crick.clicker.template + + + clkw + application/vnd.crick.clicker.wordbank + + + clkx + application/vnd.crick.clicker + + + clp + application/x-msclip + + + cmc + application/vnd.cosmocaller + + + cmdf + chemical/x-cmdf + + + cml + chemical/x-cml + + + cmp + application/vnd.yellowriver-custom-menu + + + cmx + image/x-cmx + + + cod + application/vnd.rim.cod + + + com + application/x-msdownload + + + conf + text/plain + + + cpio + application/x-cpio + + + cpp + text/x-c + + + cpt + application/mac-compactpro + + + crd + application/x-mscardfile + + + crl + application/pkix-crl + + + crt + application/x-x509-ca-cert + + + cryptonote + application/vnd.rig.cryptonote + + + csh + application/x-csh + + + csml + chemical/x-csml + + + csp + application/vnd.commonspace + + + css + text/css + + + cst + application/x-director + + + csv + text/csv + + + cu + application/cu-seeme + + + curl + text/vnd.curl + + + cww + application/prs.cww + + + cxt + application/x-director + + + cxx + text/x-c + + + dae + model/vnd.collada+xml + + + daf + application/vnd.mobius.daf + + + dart + application/vnd.dart + + + dataless + application/vnd.fdsn.seed + + + davmount + application/davmount+xml + + + dbk + application/docbook+xml + + + dcr + application/x-director + + + dcurl + text/vnd.curl.dcurl + + + dd2 + application/vnd.oma.dd2+xml + + + ddd + application/vnd.fujixerox.ddd + + + deb + application/x-debian-package + + + def + text/plain + + + deploy + application/octet-stream + + + der + application/x-x509-ca-cert + + + dfac + application/vnd.dreamfactory + + + dgc + application/x-dgc-compressed + + + dib + image/bmp + + + dic + text/x-c + + + dir + application/x-director + + + dis + application/vnd.mobius.dis + + + dist + application/octet-stream + + + distz + application/octet-stream + + + djv + image/vnd.djvu + + + djvu + image/vnd.djvu + + + dll + application/x-msdownload + + + dmg + application/x-apple-diskimage + + + dmp + application/vnd.tcpdump.pcap + + + dms + application/octet-stream + + + dna + application/vnd.dna + + + doc + application/msword + + + docm + application/vnd.ms-word.document.macroenabled.12 + + + docx + application/vnd.openxmlformats-officedocument.wordprocessingml.document + + + dot + application/msword + + + dotm + application/vnd.ms-word.template.macroenabled.12 + + + dotx + application/vnd.openxmlformats-officedocument.wordprocessingml.template + + + dp + application/vnd.osgi.dp + + + dpg + application/vnd.dpgraph + + + dra + audio/vnd.dra + + + dsc + text/prs.lines.tag + + + dssc + application/dssc+der + + + dtb + application/x-dtbook+xml + + + dtd + application/xml-dtd + + + dts + audio/vnd.dts + + + dtshd + audio/vnd.dts.hd + + + dump + application/octet-stream + + + dv + video/x-dv + + + dvb + video/vnd.dvb.file + + + dvi + application/x-dvi + + + dwf + model/vnd.dwf + + + dwg + image/vnd.dwg + + + dxf + image/vnd.dxf + + + dxp + application/vnd.spotfire.dxp + + + dxr + application/x-director + + + ecelp4800 + audio/vnd.nuera.ecelp4800 + + + ecelp7470 + audio/vnd.nuera.ecelp7470 + + + ecelp9600 + audio/vnd.nuera.ecelp9600 + + + ecma + application/ecmascript + + + edm + application/vnd.novadigm.edm + + + edx + application/vnd.novadigm.edx + + + efif + application/vnd.picsel + + + ei6 + application/vnd.pg.osasli + + + elc + application/octet-stream + + + emf + application/x-msmetafile + + + eml + message/rfc822 + + + emma + application/emma+xml + + + emz + application/x-msmetafile + + + eol + audio/vnd.digital-winds + + + eot + application/vnd.ms-fontobject + + + eps + application/postscript + + + epub + application/epub+zip + + + es3 + application/vnd.eszigno3+xml + + + esa + application/vnd.osgi.subsystem + + + esf + application/vnd.epson.esf + + + et3 + application/vnd.eszigno3+xml + + + etx + text/x-setext + + + eva + application/x-eva + + + evy + application/x-envoy + + + exe + application/octet-stream + + + exi + application/exi + + + ext + application/vnd.novadigm.ext + + + ez + application/andrew-inset + + + ez2 + application/vnd.ezpix-album + + + ez3 + application/vnd.ezpix-package + + + f + text/x-fortran + + + f4v + video/x-f4v + + + f77 + text/x-fortran + + + f90 + text/x-fortran + + + fbs + image/vnd.fastbidsheet + + + fcdt + application/vnd.adobe.formscentral.fcdt + + + fcs + application/vnd.isac.fcs + + + fdf + application/vnd.fdf + + + fe_launch + application/vnd.denovo.fcselayout-link + + + fg5 + application/vnd.fujitsu.oasysgp + + + fgd + application/x-director + + + fh + image/x-freehand + + + fh4 + image/x-freehand + + + fh5 + image/x-freehand + + + fh7 + image/x-freehand + + + fhc + image/x-freehand + + + fig + application/x-xfig + + + flac + audio/flac + + + fli + video/x-fli + + + flo + application/vnd.micrografx.flo + + + flv + video/x-flv + + + flw + application/vnd.kde.kivio + + + flx + text/vnd.fmi.flexstor + + + fly + text/vnd.fly + + + fm + application/vnd.framemaker + + + fnc + application/vnd.frogans.fnc + + + for + text/x-fortran + + + fpx + image/vnd.fpx + + + frame + application/vnd.framemaker + + + fsc + application/vnd.fsc.weblaunch + + + fst + image/vnd.fst + + + ftc + application/vnd.fluxtime.clip + + + fti + application/vnd.anser-web-funds-transfer-initiation + + + fvt + video/vnd.fvt + + + fxp + application/vnd.adobe.fxp + + + fxpl + application/vnd.adobe.fxp + + + fzs + application/vnd.fuzzysheet + + + g2w + application/vnd.geoplan + + + g3 + image/g3fax + + + g3w + application/vnd.geospace + + + gac + application/vnd.groove-account + + + gam + application/x-tads + + + gbr + application/rpki-ghostbusters + + + gca + application/x-gca-compressed + + + gdl + model/vnd.gdl + + + geo + application/vnd.dynageo + + + gex + application/vnd.geometry-explorer + + + ggb + application/vnd.geogebra.file + + + ggt + application/vnd.geogebra.tool + + + ghf + application/vnd.groove-help + + + gif + image/gif + + + gim + application/vnd.groove-identity-message + + + gml + application/gml+xml + + + gmx + application/vnd.gmx + + + gnumeric + application/x-gnumeric + + + gph + application/vnd.flographit + + + gpx + application/gpx+xml + + + gqf + application/vnd.grafeq + + + gqs + application/vnd.grafeq + + + gram + application/srgs + + + gramps + application/x-gramps-xml + + + gre + application/vnd.geometry-explorer + + + grv + application/vnd.groove-injector + + + grxml + application/srgs+xml + + + gsf + application/x-font-ghostscript + + + gtar + application/x-gtar + + + gtm + application/vnd.groove-tool-message + + + gtw + model/vnd.gtw + + + gv + text/vnd.graphviz + + + gxf + application/gxf + + + gxt + application/vnd.geonext + + + gz + application/x-gzip + + + h + text/x-c + + + h261 + video/h261 + + + h263 + video/h263 + + + h264 + video/h264 + + + hal + application/vnd.hal+xml + + + hbci + application/vnd.hbci + + + hdf + application/x-hdf + + + hh + text/x-c + + + hlp + application/winhlp + + + hpgl + application/vnd.hp-hpgl + + + hpid + application/vnd.hp-hpid + + + hps + application/vnd.hp-hps + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htke + application/vnd.kenameaapp + + + htm + text/html + + + html + text/html + + + hvd + application/vnd.yamaha.hv-dic + + + hvp + application/vnd.yamaha.hv-voice + + + hvs + application/vnd.yamaha.hv-script + + + i2g + application/vnd.intergeo + + + icc + application/vnd.iccprofile + + + ice + x-conference/x-cooltalk + + + icm + application/vnd.iccprofile + + + ico + image/x-icon + + + ics + text/calendar + + + ief + image/ief + + + ifb + text/calendar + + + ifm + application/vnd.shana.informed.formdata + + + iges + model/iges + + + igl + application/vnd.igloader + + + igm + application/vnd.insors.igm + + + igs + model/iges + + + igx + application/vnd.micrografx.igx + + + iif + application/vnd.shana.informed.interchange + + + imp + application/vnd.accpac.simply.imp + + + ims + application/vnd.ms-ims + + + in + text/plain + + + ink + application/inkml+xml + + + inkml + application/inkml+xml + + + install + application/x-install-instructions + + + iota + application/vnd.astraea-software.iota + + + ipfix + application/ipfix + + + ipk + application/vnd.shana.informed.package + + + irm + application/vnd.ibm.rights-management + + + irp + application/vnd.irepository.package+xml + + + iso + application/x-iso9660-image + + + itp + application/vnd.shana.informed.formtemplate + + + ivp + application/vnd.immervision-ivp + + + ivu + application/vnd.immervision-ivu + + + jad + text/vnd.sun.j2me.app-descriptor + + + jam + application/vnd.jam + + + jar + application/java-archive + + + java + text/x-java-source + + + jisp + application/vnd.jisp + + + jlt + application/vnd.hp-jlyt + + + jnlp + application/x-java-jnlp-file + + + joda + application/vnd.joost.joda-archive + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + jpgm + video/jpm + + + jpgv + video/jpeg + + + jpm + video/jpm + + + js + application/javascript + + + jsf + text/plain + + + json + application/json + + + jsonml + application/jsonml+json + + + jspf + text/plain + + + kar + audio/midi + + + karbon + application/vnd.kde.karbon + + + kfo + application/vnd.kde.kformula + + + kia + application/vnd.kidspiration + + + kml + application/vnd.google-earth.kml+xml + + + kmz + application/vnd.google-earth.kmz + + + kne + application/vnd.kinar + + + knp + application/vnd.kinar + + + kon + application/vnd.kde.kontour + + + kpr + application/vnd.kde.kpresenter + + + kpt + application/vnd.kde.kpresenter + + + kpxx + application/vnd.ds-keypoint + + + ksp + application/vnd.kde.kspread + + + ktr + application/vnd.kahootz + + + ktx + image/ktx + + + ktz + application/vnd.kahootz + + + kwd + application/vnd.kde.kword + + + kwt + application/vnd.kde.kword + + + lasxml + application/vnd.las.las+xml + + + latex + application/x-latex + + + lbd + application/vnd.llamagraphics.life-balance.desktop + + + lbe + application/vnd.llamagraphics.life-balance.exchange+xml + + + les + application/vnd.hhe.lesson-player + + + lha + application/x-lzh-compressed + + + link66 + application/vnd.route66.link66+xml + + + list + text/plain + + + list3820 + application/vnd.ibm.modcap + + + listafp + application/vnd.ibm.modcap + + + lnk + application/x-ms-shortcut + + + log + text/plain + + + lostxml + application/lost+xml + + + lrf + application/octet-stream + + + lrm + application/vnd.ms-lrm + + + ltf + application/vnd.frogans.ltf + + + lvp + audio/vnd.lucent.voice + + + lwp + application/vnd.lotus-wordpro + + + lzh + application/x-lzh-compressed + + + m13 + application/x-msmediaview + + + m14 + application/x-msmediaview + + + m1v + video/mpeg + + + m21 + application/mp21 + + + m2a + audio/mpeg + + + m2v + video/mpeg + + + m3a + audio/mpeg + + + m3u + audio/x-mpegurl + + + m3u8 + application/vnd.apple.mpegurl + + + m4a + audio/mp4 + + + m4b + audio/mp4 + + + m4r + audio/mp4 + + + m4u + video/vnd.mpegurl + + + m4v + video/mp4 + + + ma + application/mathematica + + + mac + image/x-macpaint + + + mads + application/mads+xml + + + mag + application/vnd.ecowin.chart + + + maker + application/vnd.framemaker + + + man + text/troff + + + mar + application/octet-stream + + + mathml + application/mathml+xml + + + mb + application/mathematica + + + mbk + application/vnd.mobius.mbk + + + mbox + application/mbox + + + mc1 + application/vnd.medcalcdata + + + mcd + application/vnd.mcd + + + mcurl + text/vnd.curl.mcurl + + + mdb + application/x-msaccess + + + mdi + image/vnd.ms-modi + + + me + text/troff + + + mesh + model/mesh + + + meta4 + application/metalink4+xml + + + metalink + application/metalink+xml + + + mets + application/mets+xml + + + mfm + application/vnd.mfmp + + + mft + application/rpki-manifest + + + mgp + application/vnd.osgeo.mapguide.package + + + mgz + application/vnd.proteus.magazine + + + mid + audio/midi + + + midi + audio/midi + + + mie + application/x-mie + + + mif + application/x-mif + + + mime + message/rfc822 + + + mj2 + video/mj2 + + + mjp2 + video/mj2 + + + mk3d + video/x-matroska + + + mka + audio/x-matroska + + + mks + video/x-matroska + + + mkv + video/x-matroska + + + mlp + application/vnd.dolby.mlp + + + mmd + application/vnd.chipnuts.karaoke-mmd + + + mmf + application/vnd.smaf + + + mmr + image/vnd.fujixerox.edmics-mmr + + + mng + video/x-mng + + + mny + application/x-msmoney + + + mobi + application/x-mobipocket-ebook + + + mods + application/mods+xml + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/mpeg + + + mp2 + audio/mpeg + + + mp21 + application/mp21 + + + mp2a + audio/mpeg + + + mp3 + audio/mpeg + + + mp4 + video/mp4 + + + mp4a + audio/mp4 + + + mp4s + application/mp4 + + + mp4v + video/mp4 + + + mpa + audio/mpeg + + + mpc + application/vnd.mophun.certificate + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpg4 + video/mp4 + + + mpga + audio/mpeg + + + mpkg + application/vnd.apple.installer+xml + + + mpm + application/vnd.blueice.multipass + + + mpn + application/vnd.mophun.application + + + mpp + application/vnd.ms-project + + + mpt + application/vnd.ms-project + + + mpv2 + video/mpeg2 + + + mpy + application/vnd.ibm.minipay + + + mqy + application/vnd.mobius.mqy + + + mrc + application/marc + + + mrcx + application/marcxml+xml + + + ms + text/troff + + + mscml + application/mediaservercontrol+xml + + + mseed + application/vnd.fdsn.mseed + + + mseq + application/vnd.mseq + + + msf + application/vnd.epson.msf + + + msh + model/mesh + + + msi + application/x-msdownload + + + msl + application/vnd.mobius.msl + + + msty + application/vnd.muvee.style + + + mts + model/vnd.mts + + + mus + application/vnd.musician + + + musicxml + application/vnd.recordare.musicxml+xml + + + mvb + application/x-msmediaview + + + mwf + application/vnd.mfer + + + mxf + application/mxf + + + mxl + application/vnd.recordare.musicxml + + + mxml + application/xv+xml + + + mxs + application/vnd.triscape.mxs + + + mxu + video/vnd.mpegurl + + + n-gage + application/vnd.nokia.n-gage.symbian.install + + + n3 + text/n3 + + + nb + application/mathematica + + + nbp + application/vnd.wolfram.player + + + nc + application/x-netcdf + + + ncx + application/x-dtbncx+xml + + + nfo + text/x-nfo + + + ngdat + application/vnd.nokia.n-gage.data + + + nitf + application/vnd.nitf + + + nlu + application/vnd.neurolanguage.nlu + + + nml + application/vnd.enliven + + + nnd + application/vnd.noblenet-directory + + + nns + application/vnd.noblenet-sealer + + + nnw + application/vnd.noblenet-web + + + npx + image/vnd.net-fpx + + + nsc + application/x-conference + + + nsf + application/vnd.lotus-notes + + + ntf + application/vnd.nitf + + + nzb + application/x-nzb + + + oa2 + application/vnd.fujitsu.oasys2 + + + oa3 + application/vnd.fujitsu.oasys3 + + + oas + application/vnd.fujitsu.oasys + + + obd + application/x-msbinder + + + obj + application/x-tgif + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + odft + application/vnd.oasis.opendocument.formula-template + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + oga + audio/ogg + + + ogg + audio/ogg + + + ogv + video/ogg + + + + ogx + application/ogg + + + omdoc + application/omdoc+xml + + + onepkg + application/onenote + + + onetmp + application/onenote + + + onetoc + application/onenote + + + onetoc2 + application/onenote + + + opf + application/oebps-package+xml + + + opml + text/x-opml + + + oprc + application/vnd.palm + + + org + application/vnd.lotus-organizer + + + osf + application/vnd.yamaha.openscoreformat + + + osfpvg + application/vnd.yamaha.openscoreformat.osfpvg+xml + + + otc + application/vnd.oasis.opendocument.chart-template + + + otf + font/otf + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + oti + application/vnd.oasis.opendocument.image-template + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + oxps + application/oxps + + + oxt + application/vnd.openofficeorg.extension + + + p + text/x-pascal + + + p10 + application/pkcs10 + + + p12 + application/x-pkcs12 + + + p7b + application/x-pkcs7-certificates + + + p7c + application/pkcs7-mime + + + p7m + application/pkcs7-mime + + + p7r + application/x-pkcs7-certreqresp + + + p7s + application/pkcs7-signature + + + p8 + application/pkcs8 + + + pas + text/x-pascal + + + paw + application/vnd.pawaafile + + + pbd + application/vnd.powerbuilder6 + + + pbm + image/x-portable-bitmap + + + pcap + application/vnd.tcpdump.pcap + + + pcf + application/x-font-pcf + + + pcl + application/vnd.hp-pcl + + + pclxl + application/vnd.hp-pclxl + + + pct + image/pict + + + pcurl + application/vnd.curl.pcurl + + + pcx + image/x-pcx + + + pdb + application/vnd.palm + + + pdf + application/pdf + + + pfa + application/x-font-type1 + + + pfb + application/x-font-type1 + + + pfm + application/x-font-type1 + + + pfr + application/font-tdpfr + + + pfx + application/x-pkcs12 + + + pgm + image/x-portable-graymap + + + pgn + application/x-chess-pgn + + + pgp + application/pgp-encrypted + + + pic + image/pict + + + pict + image/pict + + + pkg + application/octet-stream + + + pki + application/pkixcmp + + + pkipath + application/pkix-pkipath + + + plb + application/vnd.3gpp.pic-bw-large + + + plc + application/vnd.mobius.plc + + + plf + application/vnd.pocketlearn + + + pls + audio/x-scpls + + + pml + application/vnd.ctc-posml + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + portpkg + application/vnd.macports.portpkg + + + pot + application/vnd.ms-powerpoint + + + potm + application/vnd.ms-powerpoint.template.macroenabled.12 + + + potx + application/vnd.openxmlformats-officedocument.presentationml.template + + + ppam + application/vnd.ms-powerpoint.addin.macroenabled.12 + + + ppd + application/vnd.cups-ppd + + + ppm + image/x-portable-pixmap + + + pps + application/vnd.ms-powerpoint + + + ppsm + application/vnd.ms-powerpoint.slideshow.macroenabled.12 + + + ppsx + application/vnd.openxmlformats-officedocument.presentationml.slideshow + + + ppt + application/vnd.ms-powerpoint + + + pptm + application/vnd.ms-powerpoint.presentation.macroenabled.12 + + + pptx + application/vnd.openxmlformats-officedocument.presentationml.presentation + + + pqa + application/vnd.palm + + + prc + application/x-mobipocket-ebook + + + pre + application/vnd.lotus-freelance + + + prf + application/pics-rules + + + ps + application/postscript + + + psb + application/vnd.3gpp.pic-bw-small + + + psd + image/vnd.adobe.photoshop + + + psf + application/x-font-linux-psf + + + pskcxml + application/pskc+xml + + + ptid + application/vnd.pvi.ptid1 + + + pub + application/x-mspublisher + + + pvb + application/vnd.3gpp.pic-bw-var + + + pwn + application/vnd.3m.post-it-notes + + + pya + audio/vnd.ms-playready.media.pya + + + pyv + video/vnd.ms-playready.media.pyv + + + qam + application/vnd.epson.quickanime + + + qbo + application/vnd.intu.qbo + + + qfx + application/vnd.intu.qfx + + + qps + application/vnd.publishare-delta-tree + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + qwd + application/vnd.quark.quarkxpress + + + qwt + application/vnd.quark.quarkxpress + + + qxb + application/vnd.quark.quarkxpress + + + qxd + application/vnd.quark.quarkxpress + + + qxl + application/vnd.quark.quarkxpress + + + qxt + application/vnd.quark.quarkxpress + + + ra + audio/x-pn-realaudio + + + ram + audio/x-pn-realaudio + + + rar + application/x-rar-compressed + + + ras + image/x-cmu-raster + + + rcprofile + application/vnd.ipunplugged.rcprofile + + + rdf + application/rdf+xml + + + rdz + application/vnd.data-vision.rdz + + + rep + application/vnd.businessobjects + + + res + application/x-dtbresource+xml + + + rgb + image/x-rgb + + + rif + application/reginfo+xml + + + rip + audio/vnd.rip + + + ris + application/x-research-info-systems + + + rl + application/resource-lists+xml + + + rlc + image/vnd.fujixerox.edmics-rlc + + + rld + application/resource-lists-diff+xml + + + rm + application/vnd.rn-realmedia + + + rmi + audio/midi + + + rmp + audio/x-pn-realaudio-plugin + + + rms + application/vnd.jcp.javame.midlet-rms + + + rmvb + application/vnd.rn-realmedia-vbr + + + rnc + application/relax-ng-compact-syntax + + + roa + application/rpki-roa + + + roff + text/troff + + + rp9 + application/vnd.cloanto.rp9 + + + rpss + application/vnd.nokia.radio-presets + + + rpst + application/vnd.nokia.radio-preset + + + rq + application/sparql-query + + + rs + application/rls-services+xml + + + rsd + application/rsd+xml + + + rss + application/rss+xml + + + rtf + application/rtf + + + rtx + text/richtext + + + s + text/x-asm + + + s3m + audio/s3m + + + saf + application/vnd.yamaha.smaf-audio + + + sbml + application/sbml+xml + + + sc + application/vnd.ibm.secure-container + + + scd + application/x-msschedule + + + scm + application/vnd.lotus-screencam + + + scq + application/scvp-cv-request + + + scs + application/scvp-cv-response + + + scurl + text/vnd.curl.scurl + + + sda + application/vnd.stardivision.draw + + + sdc + application/vnd.stardivision.calc + + + sdd + application/vnd.stardivision.impress + + + sdkd + application/vnd.solent.sdkm+xml + + + sdkm + application/vnd.solent.sdkm+xml + + + sdp + application/sdp + + + sdw + application/vnd.stardivision.writer + + + see + application/vnd.seemail + + + seed + application/vnd.fdsn.seed + + + sema + application/vnd.sema + + + semd + application/vnd.semd + + + semf + application/vnd.semf + + + ser + application/java-serialized-object + + + setpay + application/set-payment-initiation + + + setreg + application/set-registration-initiation + + + sfd-hdstx + application/vnd.hydrostatix.sof-data + + + sfs + application/vnd.spotfire.sfs + + + sfv + text/x-sfv + + + sgi + image/sgi + + + sgl + application/vnd.stardivision.writer-global + + + sgm + text/sgml + + + sgml + text/sgml + + + sh + application/x-sh + + + shar + application/x-shar + + + shf + application/shf+xml + + + + sid + image/x-mrsid-image + + + sig + application/pgp-signature + + + sil + audio/silk + + + silo + model/mesh + + + sis + application/vnd.symbian.install + + + sisx + application/vnd.symbian.install + + + sit + application/x-stuffit + + + sitx + application/x-stuffitx + + + skd + application/vnd.koan + + + skm + application/vnd.koan + + + skp + application/vnd.koan + + + skt + application/vnd.koan + + + sldm + application/vnd.ms-powerpoint.slide.macroenabled.12 + + + sldx + application/vnd.openxmlformats-officedocument.presentationml.slide + + + slt + application/vnd.epson.salt + + + sm + application/vnd.stepmania.stepchart + + + smf + application/vnd.stardivision.math + + + smi + application/smil+xml + + + smil + application/smil+xml + + + smv + video/x-smv + + + smzip + application/vnd.stepmania.package + + + snd + audio/basic + + + snf + application/x-font-snf + + + so + application/octet-stream + + + spc + application/x-pkcs7-certificates + + + spf + application/vnd.yamaha.smaf-phrase + + + spl + application/x-futuresplash + + + spot + text/vnd.in3d.spot + + + spp + application/scvp-vp-response + + + spq + application/scvp-vp-request + + + spx + audio/ogg + + + sql + application/x-sql + + + src + application/x-wais-source + + + srt + application/x-subrip + + + sru + application/sru+xml + + + srx + application/sparql-results+xml + + + ssdl + application/ssdl+xml + + + sse + application/vnd.kodak-descriptor + + + ssf + application/vnd.epson.ssf + + + ssml + application/ssml+xml + + + st + application/vnd.sailingtracker.track + + + stc + application/vnd.sun.xml.calc.template + + + std + application/vnd.sun.xml.draw.template + + + stf + application/vnd.wt.stf + + + sti + application/vnd.sun.xml.impress.template + + + stk + application/hyperstudio + + + stl + application/vnd.ms-pki.stl + + + str + application/vnd.pg.format + + + stw + application/vnd.sun.xml.writer.template + + + sub + text/vnd.dvb.subtitle + + + sus + application/vnd.sus-calendar + + + susp + application/vnd.sus-calendar + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svc + application/vnd.dvb.service + + + svd + application/vnd.svd + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swa + application/x-director + + + swf + application/x-shockwave-flash + + + swi + application/vnd.aristanetworks.swi + + + sxc + application/vnd.sun.xml.calc + + + sxd + application/vnd.sun.xml.draw + + + sxg + application/vnd.sun.xml.writer.global + + + sxi + application/vnd.sun.xml.impress + + + sxm + application/vnd.sun.xml.math + + + sxw + application/vnd.sun.xml.writer + + + t + text/troff + + + t3 + application/x-t3vm-image + + + taglet + application/vnd.mynfc + + + tao + application/vnd.tao.intent-module-archive + + + tar + application/x-tar + + + tcap + application/vnd.3gpp2.tcap + + + tcl + application/x-tcl + + + teacher + application/vnd.smart.teacher + + + tei + application/tei+xml + + + teicorpus + application/tei+xml + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + text + text/plain + + + tfi + application/thraud+xml + + + tfm + application/x-tex-tfm + + + tga + image/x-tga + + + thmx + application/vnd.ms-officetheme + + + tif + image/tiff + + + tiff + image/tiff + + + tmo + application/vnd.tmobile-livetv + + + torrent + application/x-bittorrent + + + tpl + application/vnd.groove-tool-template + + + tpt + application/vnd.trid.tpt + + + tr + text/troff + + + tra + application/vnd.trueapp + + + trm + application/x-msterminal + + + tsd + application/timestamped-data + + + tsv + text/tab-separated-values + + + ttc + font/collection + + + ttf + font/ttf + + + ttl + text/turtle + + + twd + application/vnd.simtech-mindmapper + + + twds + application/vnd.simtech-mindmapper + + + txd + application/vnd.genomatix.tuxedo + + + txf + application/vnd.mobius.txf + + + txt + text/plain + + + u32 + application/x-authorware-bin + + + udeb + application/x-debian-package + + + ufd + application/vnd.ufdl + + + ufdl + application/vnd.ufdl + + + ulw + audio/basic + + + ulx + application/x-glulx + + + umj + application/vnd.umajin + + + unityweb + application/vnd.unity + + + uoml + application/vnd.uoml+xml + + + uri + text/uri-list + + + uris + text/uri-list + + + urls + text/uri-list + + + ustar + application/x-ustar + + + utz + application/vnd.uiq.theme + + + uu + text/x-uuencode + + + uva + audio/vnd.dece.audio + + + uvd + application/vnd.dece.data + + + uvf + application/vnd.dece.data + + + uvg + image/vnd.dece.graphic + + + uvh + video/vnd.dece.hd + + + uvi + image/vnd.dece.graphic + + + uvm + video/vnd.dece.mobile + + + uvp + video/vnd.dece.pd + + + uvs + video/vnd.dece.sd + + + uvt + application/vnd.dece.ttml+xml + + + uvu + video/vnd.uvvu.mp4 + + + uvv + video/vnd.dece.video + + + uvva + audio/vnd.dece.audio + + + uvvd + application/vnd.dece.data + + + uvvf + application/vnd.dece.data + + + uvvg + image/vnd.dece.graphic + + + uvvh + video/vnd.dece.hd + + + uvvi + image/vnd.dece.graphic + + + uvvm + video/vnd.dece.mobile + + + uvvp + video/vnd.dece.pd + + + uvvs + video/vnd.dece.sd + + + uvvt + application/vnd.dece.ttml+xml + + + uvvu + video/vnd.uvvu.mp4 + + + uvvv + video/vnd.dece.video + + + uvvx + application/vnd.dece.unspecified + + + uvvz + application/vnd.dece.zip + + + uvx + application/vnd.dece.unspecified + + + uvz + application/vnd.dece.zip + + + vcard + text/vcard + + + vcd + application/x-cdlink + + + vcf + text/x-vcard + + + vcg + application/vnd.groove-vcard + + + vcs + text/x-vcalendar + + + vcx + application/vnd.vcx + + + vis + application/vnd.visionary + + + viv + video/vnd.vivo + + + vob + video/x-ms-vob + + + vor + application/vnd.stardivision.writer + + + vox + application/x-authorware-bin + + + vrml + model/vrml + + + vsd + application/vnd.visio + + + vsf + application/vnd.vsf + + + vss + application/vnd.visio + + + vst + application/vnd.visio + + + vsw + application/vnd.visio + + + vtu + model/vnd.vtu + + + vxml + application/voicexml+xml + + + w3d + application/x-director + + + wad + application/x-doom + + + wasm + application/wasm + + + wav + audio/x-wav + + + wax + audio/x-ms-wax + + + + wbmp + image/vnd.wap.wbmp + + + wbs + application/vnd.criticaltools.wbs+xml + + + wbxml + application/vnd.wap.wbxml + + + wcm + application/vnd.ms-works + + + wdb + application/vnd.ms-works + + + wdp + image/vnd.ms-photo + + + weba + audio/webm + + + webm + video/webm + + + webp + image/webp + + + wg + application/vnd.pmi.widget + + + wgt + application/widget + + + wks + application/vnd.ms-works + + + wm + video/x-ms-wm + + + wma + audio/x-ms-wma + + + wmd + application/x-ms-wmd + + + wmf + application/x-msmetafile + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlsc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wmx + video/x-ms-wmx + + + wmz + application/x-msmetafile + + + woff + font/woff + + + woff2 + font/woff2 + + + wpd + application/vnd.wordperfect + + + wpl + application/vnd.ms-wpl + + + wps + application/vnd.ms-works + + + wqd + application/vnd.wqd + + + wri + application/x-mswrite + + + wrl + model/vrml + + + wsdl + application/wsdl+xml + + + wspolicy + application/wspolicy+xml + + + wtb + application/vnd.webturbo + + + wvx + video/x-ms-wvx + + + x32 + application/x-authorware-bin + + + x3d + model/x3d+xml + + + x3db + model/x3d+binary + + + x3dbz + model/x3d+binary + + + x3dv + model/x3d+vrml + + + x3dvz + model/x3d+vrml + + + x3dz + model/x3d+xml + + + xaml + application/xaml+xml + + + xap + application/x-silverlight-app + + + xar + application/vnd.xara + + + xbap + application/x-ms-xbap + + + xbd + application/vnd.fujixerox.docuworks.binder + + + xbm + image/x-xbitmap + + + xdf + application/xcap-diff+xml + + + xdm + application/vnd.syncml.dm+xml + + + xdp + application/vnd.adobe.xdp+xml + + + xdssc + application/dssc+xml + + + xdw + application/vnd.fujixerox.docuworks + + + xenc + application/xenc+xml + + + xer + application/patch-ops-error+xml + + + xfdf + application/vnd.adobe.xfdf + + + xfdl + application/vnd.xfdl + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xhvml + application/xv+xml + + + xif + image/vnd.xiff + + + xla + application/vnd.ms-excel + + + xlam + application/vnd.ms-excel.addin.macroenabled.12 + + + xlc + application/vnd.ms-excel + + + xlf + application/x-xliff+xml + + + xlm + application/vnd.ms-excel + + + xls + application/vnd.ms-excel + + + xlsb + application/vnd.ms-excel.sheet.binary.macroenabled.12 + + + xlsm + application/vnd.ms-excel.sheet.macroenabled.12 + + + xlsx + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + xlt + application/vnd.ms-excel + + + xltm + application/vnd.ms-excel.template.macroenabled.12 + + + xltx + application/vnd.openxmlformats-officedocument.spreadsheetml.template + + + xlw + application/vnd.ms-excel + + + xm + audio/xm + + + xml + application/xml + + + xo + application/vnd.olpc-sugar + + + xop + application/xop+xml + + + xpi + application/x-xpinstall + + + xpl + application/xproc+xml + + + xpm + image/x-xpixmap + + + xpr + application/vnd.is-xpr + + + xps + application/vnd.ms-xpsdocument + + + xpw + application/vnd.intercon.formnet + + + xpx + application/vnd.intercon.formnet + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xsm + application/vnd.syncml+xml + + + xspf + application/xspf+xml + + + xul + application/vnd.mozilla.xul+xml + + + xvm + application/xv+xml + + + xvml + application/xv+xml + + + xwd + image/x-xwindowdump + + + xyz + chemical/x-xyz + + + xz + application/x-xz + + + yang + application/yang + + + yin + application/yin+xml + + + z + application/x-compress + + + z1 + application/x-zmachine + + + z2 + application/x-zmachine + + + z3 + application/x-zmachine + + + z4 + application/x-zmachine + + + z5 + application/x-zmachine + + + z6 + application/x-zmachine + + + z7 + application/x-zmachine + + + z8 + application/x-zmachine + + + zaz + application/vnd.zzazz.deck+xml + + + zip + application/zip + + + zir + application/vnd.zul + + + zirz + application/vnd.zul + + + zmm + application/vnd.handheld-entertainment+xml + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b/00937592d546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/b/00937592d546001c137a95b836e30a66 new file mode 100644 index 0000000..77398b3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b/00937592d546001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package com.webservice.ws; + +public class SoapClient { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b0/0079d26fe345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/b0/0079d26fe345001c11de97d36a89b06b new file mode 100644 index 0000000..af62bab --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b0/0079d26fe345001c11de97d36a89b06b @@ -0,0 +1,18 @@ +package com.tight.coupling.services; + +import com.tight.coupling.SortAlgorithm; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; + + // constructor: + public VeryComplexService(SortAlgorithm sortAlgorithm) { + super(); + this.sortAlgorithm = sortAlgorithm; + } + + public void complexBusiness() { + sortAlgorithm.sort(array); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b0/8006d57cc546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/b0/8006d57cc546001c137a95b836e30a66 new file mode 100644 index 0000000..2e175df --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b0/8006d57cc546001c137a95b836e30a66 @@ -0,0 +1,40 @@ + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b2/80079768c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/b2/80079768c646001c137a95b836e30a66 new file mode 100644 index 0000000..3e91ce9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b2/80079768c646001c137a95b836e30a66 @@ -0,0 +1,40 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + // set-get: + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + + + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b3/202533f78d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/202533f78d46001c137a95b836e30a66 new file mode 100644 index 0000000..4c76792 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/202533f78d46001c137a95b836e30a66 @@ -0,0 +1,18 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWSService service = new EchoWSService(); + EchoWS port = service.getEchoWSPort(); + String res = null; + if(args.length == 0) { + + } + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b3/303c8a49eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/303c8a49eb45001c11de97d36a89b06b new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b3/a0b2bb195945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/a0b2bb195945001c1e6d86658ace159a new file mode 100644 index 0000000..b5a6714 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/a0b2bb195945001c1e6d86658ace159a @@ -0,0 +1,5 @@ +package com.use.jar; + +public class TestUseJar { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b4/40bb8dfcb346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/b4/40bb8dfcb346001c137a95b836e30a66 new file mode 100644 index 0000000..f7f6524 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b4/40bb8dfcb346001c137a95b836e30a66 @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b4/60eeaec28d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/b4/60eeaec28d46001c137a95b836e30a66 new file mode 100644 index 0000000..5fc8a27 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b4/60eeaec28d46001c137a95b836e30a66 @@ -0,0 +1,13 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWS service = new EchoWS(); + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b6/40b8cccb5945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/40b8cccb5945001c1e6d86658ace159a new file mode 100644 index 0000000..fc18936 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/40b8cccb5945001c1e6d86658ace159a @@ -0,0 +1,16 @@ +package com.use.jar; + +import com.manhkm.jar.FunctionOne; + +public class TestUseJar { + + public static void main(String[] args) { + + } + + public static void usingFunction() { + FunctionOne functionOne = new FunctionOne(); + functionOne.add2(10, 20); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b7/903ce740eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/903ce740eb45001c11de97d36a89b06b new file mode 100644 index 0000000..a64dfd8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/903ce740eb45001c11de97d36a89b06b @@ -0,0 +1,9 @@ +package com.ioc.entity; + +public class Girl { + + private Outfit outfit; + public Girl(Outfit anything) { + outfit = new Bikini(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b8/8091973ceb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/b8/8091973ceb45001c11de97d36a89b06b new file mode 100644 index 0000000..3243e4b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b8/8091973ceb45001c11de97d36a89b06b @@ -0,0 +1,9 @@ +package com.ioc.entity; + +public class Girl { + + private Outfit outfit; + public Girl() { + outfit = new Bikini(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ba/50d656b78c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ba/50d656b78c46001c137a95b836e30a66 new file mode 100644 index 0000000..8728511 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ba/50d656b78c46001c137a95b836e30a66 @@ -0,0 +1,17 @@ +package ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; + +@WebService +public class EchoWS { + + @WebMethod + public String echo(String s) { + return "Echo: " + s; + } + + public static void main(String[] agrs) { + System.out.println("EchoWS up and running..."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ba/a0d27877b346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ba/a0d27877b346001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ba/f0bd3b038e46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ba/f0bd3b038e46001c137a95b836e30a66 new file mode 100644 index 0000000..6a3cb0b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ba/f0bd3b038e46001c137a95b836e30a66 @@ -0,0 +1,18 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWSService service = new EchoWSService(); + EchoWS port = service.getEchoWSPort(); + String res = null; + if(args.length == 0) { + res = port.echo("Testing WebService"); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bb/30062829d546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/bb/30062829d546001c137a95b836e30a66 new file mode 100644 index 0000000..01c3ca5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bb/30062829d546001c137a95b836e30a66 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bb/706f56f88d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/bb/706f56f88d46001c137a95b836e30a66 new file mode 100644 index 0000000..8829f5f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bb/706f56f88d46001c137a95b836e30a66 @@ -0,0 +1,18 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWSService service = new EchoWSService(); + EchoWS port = service.getEchoWSPort(); + String res = null; + if(args.length == 0) { + res = port.echo("Testing WebService") + } + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bb/9076abd26248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/bb/9076abd26248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..e677419 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bb/9076abd26248001c1eb1b6cc5fdf9661 @@ -0,0 +1,12 @@ +package com.gpcoder; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "user") +public class User { + + private Integer id; + private String username; + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bc/f0cbe34de345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/f0cbe34de345001c11de97d36a89b06b new file mode 100644 index 0000000..09e0272 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/f0cbe34de345001c11de97d36a89b06b @@ -0,0 +1,7 @@ +package com.tight.coupling.services; + +import com.tight.coupling.SortAlgorithm; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bf/907f2629d546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/907f2629d546001c137a95b836e30a66 new file mode 100644 index 0000000..0eff1cf --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/907f2629d546001c137a95b836e30a66 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b062e180e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b062e180e345001c11de97d36a89b06b new file mode 100644 index 0000000..0760b0b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b062e180e345001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling; + +public class Main { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c/10578700b446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c/10578700b446001c137a95b836e30a66 new file mode 100644 index 0000000..f81d0fb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c/10578700b446001c137a95b836e30a66 @@ -0,0 +1,5 @@ + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c/50b26b03b446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c/50b26b03b446001c137a95b836e30a66 new file mode 100644 index 0000000..4b7a5a1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c/50b26b03b446001c137a95b836e30a66 @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java/com/webservice/HelloWorld.java=UTF-8 +encoding//src/main/java/com/webservice/HelloWorldService.java=UTF-8 +encoding//src/main/java/com/webservice/HelloWorldSoapBindingStub.java=UTF-8 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c/60db915ac646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c/60db915ac646001c137a95b836e30a66 new file mode 100644 index 0000000..834f712 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c/60db915ac646001c137a95b836e30a66 @@ -0,0 +1,26 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + public User() { + + } + + + + + + // set-get: + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c/90e28f00b446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c/90e28f00b446001c137a95b836e30a66 new file mode 100644 index 0000000..b2029ff --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c/90e28f00b446001c137a95b836e30a66 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c/f03d9079d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c/f03d9079d446001c137a95b836e30a66 new file mode 100644 index 0000000..cccf5aa --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c/f03d9079d446001c137a95b836e30a66 @@ -0,0 +1,33 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + // create a service instance with the specified WSDL. + Service service = Service.create(wsdlURL, qname); + + // we need to pass interface and model beans to client: + UserService userService = service.getPort(UserService.class); + + User user1 = new User(1, "manhkm"); + User user2 = new User(2, "trangtt"); + User user3 = new User(3, "thanglv"); + + userService.insert(user1); + userService.insert(user2); + userService.insert(user3); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c1/50243898eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/c1/50243898eb45001c11de97d36a89b06b new file mode 100644 index 0000000..7c37353 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c1/50243898eb45001c11de97d36a89b06b @@ -0,0 +1,14 @@ +package com.ioc; + +import com.ioc.entity.Bikini; +import com.ioc.entity.Girl; +import com.ioc.entity.Outfit; + +public class Main { + public static void main(String[] args) { + Outfit bikini = new Bikini(); + + Girl girl1 = new Girl(bikini); + girl1.getOutfit() + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c1/b084d5288842001c1cbc975586bbcf20 b/.metadata/.plugins/org.eclipse.core.resources/.history/c1/b084d5288842001c1cbc975586bbcf20 new file mode 100644 index 0000000..cc43a55 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c1/b084d5288842001c1cbc975586bbcf20 @@ -0,0 +1,15 @@ +package com.demo; + +public class StringBuffer { + public static void main(String[] args) { + long start = System.nanoTime(); + + StringBuffer s = new StringBuffer("hello"); + for(int i = 0; i < 1000; i++) { + s.append + } + long end = System.nanoTime(); + + System.out.println("Total time: " + (end-start)); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c2/50d58c00b446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c2/50d58c00b446001c137a95b836e30a66 new file mode 100644 index 0000000..598a58f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c2/50d58c00b446001c137a95b836e30a66 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c3/403d8a00b446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c3/403d8a00b446001c137a95b836e30a66 new file mode 100644 index 0000000..55b9df2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c3/403d8a00b446001c137a95b836e30a66 @@ -0,0 +1,6 @@ + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c4/90d1c9078e46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c4/90d1c9078e46001c137a95b836e30a66 new file mode 100644 index 0000000..f6e7a2d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c4/90d1c9078e46001c137a95b836e30a66 @@ -0,0 +1,20 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWSService service = new EchoWSService(); + EchoWS port = service.getEchoWSPort(); + String res = null; + if(args.length == 0) { + res = port.echo("Testing WebService"); + } else { + res = port.echo(args[0]); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c5/f0905646c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c5/f0905646c646001c137a95b836e30a66 new file mode 100644 index 0000000..ccd8239 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c5/f0905646c646001c137a95b836e30a66 @@ -0,0 +1,13 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + + // set-get: + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c7/605711f0c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/c7/605711f0c646001c137a95b836e30a66 new file mode 100644 index 0000000..2448fc0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c7/605711f0c646001c137a95b836e30a66 @@ -0,0 +1,9 @@ +package com.webservice.ws; + +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cc/201a619fc746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/cc/201a619fc746001c137a95b836e30a66 new file mode 100644 index 0000000..5ef7ceb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/cc/201a619fc746001c137a95b836e30a66 @@ -0,0 +1,50 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + return 0; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1; + } + + @Override + public boolean update(User user) { + return USERS.put(user.getId(), user) != null; + } + + @Override + public boolean delete(int id) { + return USERS.remove(id) != null; + } + + @Override + public User get(int id) { + return USERS.getOrDefault(id, new User()); + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b030608bb346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b030608bb346001c137a95b836e30a66 new file mode 100644 index 0000000..f89537f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b030608bb346001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package com.webservice; + +public class HelloWorld { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cd/101879c08c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/101879c08c46001c137a95b836e30a66 new file mode 100644 index 0000000..f4db908 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/101879c08c46001c137a95b836e30a66 @@ -0,0 +1,18 @@ +package ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; + +@WebService +public class EchoWS { + + @WebMethod + public String echo(String s) { + return "Echo: " + s; + } + + public static void main(String[] agrs) { + System.out.println("EchoWS up and running..."); + String url = "http://192.168.0.5:8888/EchoWS"; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cd/10d8bf4dc646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/10d8bf4dc646001c137a95b836e30a66 new file mode 100644 index 0000000..5f421eb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/10d8bf4dc646001c137a95b836e30a66 @@ -0,0 +1,15 @@ +package com.webservice.ws; + +public class User { + + private Integer id; + private String username; + + // constructor: + + + + // set-get: + + // toString: +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cd/20d28617d646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/20d28617d646001c137a95b836e30a66 new file mode 100644 index 0000000..e1539fa --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/20d28617d646001c137a95b836e30a66 @@ -0,0 +1,29 @@ +package com.webservice.ws; + +/** + * + * @author ManhKM + * wsimport -s . http://localhost:8089/ws/users?wsdl + * + */ +public class SoapClient { + public static void main(String[] args) { + UserServiceImplService userServiceImplService = new UserServiceImplService(); + UserService userService = userServiceImplService.getUserServiceImplPort(); + + User user1 = new User(); + user1.setId(100); + user1.setUsername("alibaba"); + + User user2 = new User(); + user2.setId(101); + user2.setUsername("tom"); + + User user3 = new User(); + user3.setId(102); + user3.setUsername("jery"); + + + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cd/301844c58d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/301844c58d46001c137a95b836e30a66 new file mode 100644 index 0000000..f147583 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/301844c58d46001c137a95b836e30a66 @@ -0,0 +1,13 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWSService service = new EchoWS(); + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cd/c08c4f09c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/c08c4f09c646001c137a95b836e30a66 new file mode 100644 index 0000000..cebbd22 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/c08c4f09c646001c137a95b836e30a66 @@ -0,0 +1,3 @@ + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ce/406805d3b346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ce/406805d3b346001c137a95b836e30a66 new file mode 100644 index 0000000..e2d4766 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ce/406805d3b346001c137a95b836e30a66 @@ -0,0 +1,12 @@ + + + SoapWebServiceExample + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ce/a054d57cc546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ce/a054d57cc546001c137a95b836e30a66 new file mode 100644 index 0000000..1651be8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ce/a054d57cc546001c137a95b836e30a66 @@ -0,0 +1,4726 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + / + + + + + jsp + *.jsp + *.jspx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + + + + + + + + + + + + + 123 + application/vnd.lotus-1-2-3 + + + 3dml + text/vnd.in3d.3dml + + + 3ds + image/x-3ds + + + 3g2 + video/3gpp2 + + + 3gp + video/3gpp + + + 7z + application/x-7z-compressed + + + aab + application/x-authorware-bin + + + aac + audio/x-aac + + + aam + application/x-authorware-map + + + aas + application/x-authorware-seg + + + abs + audio/x-mpeg + + + abw + application/x-abiword + + + ac + application/pkix-attr-cert + + + acc + application/vnd.americandynamics.acc + + + ace + application/x-ace-compressed + + + acu + application/vnd.acucobol + + + acutc + application/vnd.acucorp + + + adp + audio/adpcm + + + aep + application/vnd.audiograph + + + afm + application/x-font-type1 + + + afp + application/vnd.ibm.modcap + + + ahead + application/vnd.ahead.space + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + air + application/vnd.adobe.air-application-installer-package+zip + + + ait + application/vnd.dvb.ait + + + ami + application/vnd.amiga.ami + + + anx + application/annodex + + + apk + application/vnd.android.package-archive + + + appcache + text/cache-manifest + + + application + application/x-ms-application + + + apr + application/vnd.lotus-approach + + + arc + application/x-freearc + + + art + image/x-jg + + + asc + application/pgp-signature + + + asf + video/x-ms-asf + + + asm + text/x-asm + + + aso + application/vnd.accpac.simply.aso + + + asx + video/x-ms-asf + + + atc + application/vnd.acucorp + + + atom + application/atom+xml + + + atomcat + application/atomcat+xml + + + atomsvc + application/atomsvc+xml + + + atx + application/vnd.antix.game-component + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + aw + application/applixware + + + axa + audio/annodex + + + axv + video/annodex + + + azf + application/vnd.airzip.filesecure.azf + + + azs + application/vnd.airzip.filesecure.azs + + + azw + application/vnd.amazon.ebook + + + bat + application/x-msdownload + + + bcpio + application/x-bcpio + + + bdf + application/x-font-bdf + + + bdm + application/vnd.syncml.dm+wbxml + + + bed + application/vnd.realvnc.bed + + + bh2 + application/vnd.fujitsu.oasysprs + + + bin + application/octet-stream + + + blb + application/x-blorb + + + blorb + application/x-blorb + + + bmi + application/vnd.bmi + + + bmp + image/bmp + + + body + text/html + + + book + application/vnd.framemaker + + + box + application/vnd.previewsystems.box + + + boz + application/x-bzip2 + + + bpk + application/octet-stream + + + btif + image/prs.btif + + + bz + application/x-bzip + + + bz2 + application/x-bzip2 + + + c + text/x-c + + + c11amc + application/vnd.cluetrust.cartomobile-config + + + c11amz + application/vnd.cluetrust.cartomobile-config-pkg + + + c4d + application/vnd.clonk.c4group + + + c4f + application/vnd.clonk.c4group + + + c4g + application/vnd.clonk.c4group + + + c4p + application/vnd.clonk.c4group + + + c4u + application/vnd.clonk.c4group + + + cab + application/vnd.ms-cab-compressed + + + caf + audio/x-caf + + + cap + application/vnd.tcpdump.pcap + + + car + application/vnd.curl.car + + + cat + application/vnd.ms-pki.seccat + + + cb7 + application/x-cbr + + + cba + application/x-cbr + + + cbr + application/x-cbr + + + cbt + application/x-cbr + + + cbz + application/x-cbr + + + cc + text/x-c + + + cct + application/x-director + + + ccxml + application/ccxml+xml + + + cdbcmsg + application/vnd.contact.cmsg + + + cdf + application/x-cdf + + + cdkey + application/vnd.mediastation.cdkey + + + cdmia + application/cdmi-capability + + + cdmic + application/cdmi-container + + + cdmid + application/cdmi-domain + + + cdmio + application/cdmi-object + + + cdmiq + application/cdmi-queue + + + cdx + chemical/x-cdx + + + cdxml + application/vnd.chemdraw+xml + + + cdy + application/vnd.cinderella + + + cer + application/pkix-cert + + + cfs + application/x-cfs-compressed + + + cgm + image/cgm + + + chat + application/x-chat + + + chm + application/vnd.ms-htmlhelp + + + chrt + application/vnd.kde.kchart + + + cif + chemical/x-cif + + + cii + application/vnd.anser-web-certificate-issue-initiation + + + cil + application/vnd.ms-artgalry + + + cla + application/vnd.claymore + + + class + application/java + + + clkk + application/vnd.crick.clicker.keyboard + + + clkp + application/vnd.crick.clicker.palette + + + clkt + application/vnd.crick.clicker.template + + + clkw + application/vnd.crick.clicker.wordbank + + + clkx + application/vnd.crick.clicker + + + clp + application/x-msclip + + + cmc + application/vnd.cosmocaller + + + cmdf + chemical/x-cmdf + + + cml + chemical/x-cml + + + cmp + application/vnd.yellowriver-custom-menu + + + cmx + image/x-cmx + + + cod + application/vnd.rim.cod + + + com + application/x-msdownload + + + conf + text/plain + + + cpio + application/x-cpio + + + cpp + text/x-c + + + cpt + application/mac-compactpro + + + crd + application/x-mscardfile + + + crl + application/pkix-crl + + + crt + application/x-x509-ca-cert + + + cryptonote + application/vnd.rig.cryptonote + + + csh + application/x-csh + + + csml + chemical/x-csml + + + csp + application/vnd.commonspace + + + css + text/css + + + cst + application/x-director + + + csv + text/csv + + + cu + application/cu-seeme + + + curl + text/vnd.curl + + + cww + application/prs.cww + + + cxt + application/x-director + + + cxx + text/x-c + + + dae + model/vnd.collada+xml + + + daf + application/vnd.mobius.daf + + + dart + application/vnd.dart + + + dataless + application/vnd.fdsn.seed + + + davmount + application/davmount+xml + + + dbk + application/docbook+xml + + + dcr + application/x-director + + + dcurl + text/vnd.curl.dcurl + + + dd2 + application/vnd.oma.dd2+xml + + + ddd + application/vnd.fujixerox.ddd + + + deb + application/x-debian-package + + + def + text/plain + + + deploy + application/octet-stream + + + der + application/x-x509-ca-cert + + + dfac + application/vnd.dreamfactory + + + dgc + application/x-dgc-compressed + + + dib + image/bmp + + + dic + text/x-c + + + dir + application/x-director + + + dis + application/vnd.mobius.dis + + + dist + application/octet-stream + + + distz + application/octet-stream + + + djv + image/vnd.djvu + + + djvu + image/vnd.djvu + + + dll + application/x-msdownload + + + dmg + application/x-apple-diskimage + + + dmp + application/vnd.tcpdump.pcap + + + dms + application/octet-stream + + + dna + application/vnd.dna + + + doc + application/msword + + + docm + application/vnd.ms-word.document.macroenabled.12 + + + docx + application/vnd.openxmlformats-officedocument.wordprocessingml.document + + + dot + application/msword + + + dotm + application/vnd.ms-word.template.macroenabled.12 + + + dotx + application/vnd.openxmlformats-officedocument.wordprocessingml.template + + + dp + application/vnd.osgi.dp + + + dpg + application/vnd.dpgraph + + + dra + audio/vnd.dra + + + dsc + text/prs.lines.tag + + + dssc + application/dssc+der + + + dtb + application/x-dtbook+xml + + + dtd + application/xml-dtd + + + dts + audio/vnd.dts + + + dtshd + audio/vnd.dts.hd + + + dump + application/octet-stream + + + dv + video/x-dv + + + dvb + video/vnd.dvb.file + + + dvi + application/x-dvi + + + dwf + model/vnd.dwf + + + dwg + image/vnd.dwg + + + dxf + image/vnd.dxf + + + dxp + application/vnd.spotfire.dxp + + + dxr + application/x-director + + + ecelp4800 + audio/vnd.nuera.ecelp4800 + + + ecelp7470 + audio/vnd.nuera.ecelp7470 + + + ecelp9600 + audio/vnd.nuera.ecelp9600 + + + ecma + application/ecmascript + + + edm + application/vnd.novadigm.edm + + + edx + application/vnd.novadigm.edx + + + efif + application/vnd.picsel + + + ei6 + application/vnd.pg.osasli + + + elc + application/octet-stream + + + emf + application/x-msmetafile + + + eml + message/rfc822 + + + emma + application/emma+xml + + + emz + application/x-msmetafile + + + eol + audio/vnd.digital-winds + + + eot + application/vnd.ms-fontobject + + + eps + application/postscript + + + epub + application/epub+zip + + + es3 + application/vnd.eszigno3+xml + + + esa + application/vnd.osgi.subsystem + + + esf + application/vnd.epson.esf + + + et3 + application/vnd.eszigno3+xml + + + etx + text/x-setext + + + eva + application/x-eva + + + evy + application/x-envoy + + + exe + application/octet-stream + + + exi + application/exi + + + ext + application/vnd.novadigm.ext + + + ez + application/andrew-inset + + + ez2 + application/vnd.ezpix-album + + + ez3 + application/vnd.ezpix-package + + + f + text/x-fortran + + + f4v + video/x-f4v + + + f77 + text/x-fortran + + + f90 + text/x-fortran + + + fbs + image/vnd.fastbidsheet + + + fcdt + application/vnd.adobe.formscentral.fcdt + + + fcs + application/vnd.isac.fcs + + + fdf + application/vnd.fdf + + + fe_launch + application/vnd.denovo.fcselayout-link + + + fg5 + application/vnd.fujitsu.oasysgp + + + fgd + application/x-director + + + fh + image/x-freehand + + + fh4 + image/x-freehand + + + fh5 + image/x-freehand + + + fh7 + image/x-freehand + + + fhc + image/x-freehand + + + fig + application/x-xfig + + + flac + audio/flac + + + fli + video/x-fli + + + flo + application/vnd.micrografx.flo + + + flv + video/x-flv + + + flw + application/vnd.kde.kivio + + + flx + text/vnd.fmi.flexstor + + + fly + text/vnd.fly + + + fm + application/vnd.framemaker + + + fnc + application/vnd.frogans.fnc + + + for + text/x-fortran + + + fpx + image/vnd.fpx + + + frame + application/vnd.framemaker + + + fsc + application/vnd.fsc.weblaunch + + + fst + image/vnd.fst + + + ftc + application/vnd.fluxtime.clip + + + fti + application/vnd.anser-web-funds-transfer-initiation + + + fvt + video/vnd.fvt + + + fxp + application/vnd.adobe.fxp + + + fxpl + application/vnd.adobe.fxp + + + fzs + application/vnd.fuzzysheet + + + g2w + application/vnd.geoplan + + + g3 + image/g3fax + + + g3w + application/vnd.geospace + + + gac + application/vnd.groove-account + + + gam + application/x-tads + + + gbr + application/rpki-ghostbusters + + + gca + application/x-gca-compressed + + + gdl + model/vnd.gdl + + + geo + application/vnd.dynageo + + + gex + application/vnd.geometry-explorer + + + ggb + application/vnd.geogebra.file + + + ggt + application/vnd.geogebra.tool + + + ghf + application/vnd.groove-help + + + gif + image/gif + + + gim + application/vnd.groove-identity-message + + + gml + application/gml+xml + + + gmx + application/vnd.gmx + + + gnumeric + application/x-gnumeric + + + gph + application/vnd.flographit + + + gpx + application/gpx+xml + + + gqf + application/vnd.grafeq + + + gqs + application/vnd.grafeq + + + gram + application/srgs + + + gramps + application/x-gramps-xml + + + gre + application/vnd.geometry-explorer + + + grv + application/vnd.groove-injector + + + grxml + application/srgs+xml + + + gsf + application/x-font-ghostscript + + + gtar + application/x-gtar + + + gtm + application/vnd.groove-tool-message + + + gtw + model/vnd.gtw + + + gv + text/vnd.graphviz + + + gxf + application/gxf + + + gxt + application/vnd.geonext + + + gz + application/x-gzip + + + h + text/x-c + + + h261 + video/h261 + + + h263 + video/h263 + + + h264 + video/h264 + + + hal + application/vnd.hal+xml + + + hbci + application/vnd.hbci + + + hdf + application/x-hdf + + + hh + text/x-c + + + hlp + application/winhlp + + + hpgl + application/vnd.hp-hpgl + + + hpid + application/vnd.hp-hpid + + + hps + application/vnd.hp-hps + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htke + application/vnd.kenameaapp + + + htm + text/html + + + html + text/html + + + hvd + application/vnd.yamaha.hv-dic + + + hvp + application/vnd.yamaha.hv-voice + + + hvs + application/vnd.yamaha.hv-script + + + i2g + application/vnd.intergeo + + + icc + application/vnd.iccprofile + + + ice + x-conference/x-cooltalk + + + icm + application/vnd.iccprofile + + + ico + image/x-icon + + + ics + text/calendar + + + ief + image/ief + + + ifb + text/calendar + + + ifm + application/vnd.shana.informed.formdata + + + iges + model/iges + + + igl + application/vnd.igloader + + + igm + application/vnd.insors.igm + + + igs + model/iges + + + igx + application/vnd.micrografx.igx + + + iif + application/vnd.shana.informed.interchange + + + imp + application/vnd.accpac.simply.imp + + + ims + application/vnd.ms-ims + + + in + text/plain + + + ink + application/inkml+xml + + + inkml + application/inkml+xml + + + install + application/x-install-instructions + + + iota + application/vnd.astraea-software.iota + + + ipfix + application/ipfix + + + ipk + application/vnd.shana.informed.package + + + irm + application/vnd.ibm.rights-management + + + irp + application/vnd.irepository.package+xml + + + iso + application/x-iso9660-image + + + itp + application/vnd.shana.informed.formtemplate + + + ivp + application/vnd.immervision-ivp + + + ivu + application/vnd.immervision-ivu + + + jad + text/vnd.sun.j2me.app-descriptor + + + jam + application/vnd.jam + + + jar + application/java-archive + + + java + text/x-java-source + + + jisp + application/vnd.jisp + + + jlt + application/vnd.hp-jlyt + + + jnlp + application/x-java-jnlp-file + + + joda + application/vnd.joost.joda-archive + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + jpgm + video/jpm + + + jpgv + video/jpeg + + + jpm + video/jpm + + + js + application/javascript + + + jsf + text/plain + + + json + application/json + + + jsonml + application/jsonml+json + + + jspf + text/plain + + + kar + audio/midi + + + karbon + application/vnd.kde.karbon + + + kfo + application/vnd.kde.kformula + + + kia + application/vnd.kidspiration + + + kml + application/vnd.google-earth.kml+xml + + + kmz + application/vnd.google-earth.kmz + + + kne + application/vnd.kinar + + + knp + application/vnd.kinar + + + kon + application/vnd.kde.kontour + + + kpr + application/vnd.kde.kpresenter + + + kpt + application/vnd.kde.kpresenter + + + kpxx + application/vnd.ds-keypoint + + + ksp + application/vnd.kde.kspread + + + ktr + application/vnd.kahootz + + + ktx + image/ktx + + + ktz + application/vnd.kahootz + + + kwd + application/vnd.kde.kword + + + kwt + application/vnd.kde.kword + + + lasxml + application/vnd.las.las+xml + + + latex + application/x-latex + + + lbd + application/vnd.llamagraphics.life-balance.desktop + + + lbe + application/vnd.llamagraphics.life-balance.exchange+xml + + + les + application/vnd.hhe.lesson-player + + + lha + application/x-lzh-compressed + + + link66 + application/vnd.route66.link66+xml + + + list + text/plain + + + list3820 + application/vnd.ibm.modcap + + + listafp + application/vnd.ibm.modcap + + + lnk + application/x-ms-shortcut + + + log + text/plain + + + lostxml + application/lost+xml + + + lrf + application/octet-stream + + + lrm + application/vnd.ms-lrm + + + ltf + application/vnd.frogans.ltf + + + lvp + audio/vnd.lucent.voice + + + lwp + application/vnd.lotus-wordpro + + + lzh + application/x-lzh-compressed + + + m13 + application/x-msmediaview + + + m14 + application/x-msmediaview + + + m1v + video/mpeg + + + m21 + application/mp21 + + + m2a + audio/mpeg + + + m2v + video/mpeg + + + m3a + audio/mpeg + + + m3u + audio/x-mpegurl + + + m3u8 + application/vnd.apple.mpegurl + + + m4a + audio/mp4 + + + m4b + audio/mp4 + + + m4r + audio/mp4 + + + m4u + video/vnd.mpegurl + + + m4v + video/mp4 + + + ma + application/mathematica + + + mac + image/x-macpaint + + + mads + application/mads+xml + + + mag + application/vnd.ecowin.chart + + + maker + application/vnd.framemaker + + + man + text/troff + + + mar + application/octet-stream + + + mathml + application/mathml+xml + + + mb + application/mathematica + + + mbk + application/vnd.mobius.mbk + + + mbox + application/mbox + + + mc1 + application/vnd.medcalcdata + + + mcd + application/vnd.mcd + + + mcurl + text/vnd.curl.mcurl + + + mdb + application/x-msaccess + + + mdi + image/vnd.ms-modi + + + me + text/troff + + + mesh + model/mesh + + + meta4 + application/metalink4+xml + + + metalink + application/metalink+xml + + + mets + application/mets+xml + + + mfm + application/vnd.mfmp + + + mft + application/rpki-manifest + + + mgp + application/vnd.osgeo.mapguide.package + + + mgz + application/vnd.proteus.magazine + + + mid + audio/midi + + + midi + audio/midi + + + mie + application/x-mie + + + mif + application/x-mif + + + mime + message/rfc822 + + + mj2 + video/mj2 + + + mjp2 + video/mj2 + + + mk3d + video/x-matroska + + + mka + audio/x-matroska + + + mks + video/x-matroska + + + mkv + video/x-matroska + + + mlp + application/vnd.dolby.mlp + + + mmd + application/vnd.chipnuts.karaoke-mmd + + + mmf + application/vnd.smaf + + + mmr + image/vnd.fujixerox.edmics-mmr + + + mng + video/x-mng + + + mny + application/x-msmoney + + + mobi + application/x-mobipocket-ebook + + + mods + application/mods+xml + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/mpeg + + + mp2 + audio/mpeg + + + mp21 + application/mp21 + + + mp2a + audio/mpeg + + + mp3 + audio/mpeg + + + mp4 + video/mp4 + + + mp4a + audio/mp4 + + + mp4s + application/mp4 + + + mp4v + video/mp4 + + + mpa + audio/mpeg + + + mpc + application/vnd.mophun.certificate + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpg4 + video/mp4 + + + mpga + audio/mpeg + + + mpkg + application/vnd.apple.installer+xml + + + mpm + application/vnd.blueice.multipass + + + mpn + application/vnd.mophun.application + + + mpp + application/vnd.ms-project + + + mpt + application/vnd.ms-project + + + mpv2 + video/mpeg2 + + + mpy + application/vnd.ibm.minipay + + + mqy + application/vnd.mobius.mqy + + + mrc + application/marc + + + mrcx + application/marcxml+xml + + + ms + text/troff + + + mscml + application/mediaservercontrol+xml + + + mseed + application/vnd.fdsn.mseed + + + mseq + application/vnd.mseq + + + msf + application/vnd.epson.msf + + + msh + model/mesh + + + msi + application/x-msdownload + + + msl + application/vnd.mobius.msl + + + msty + application/vnd.muvee.style + + + mts + model/vnd.mts + + + mus + application/vnd.musician + + + musicxml + application/vnd.recordare.musicxml+xml + + + mvb + application/x-msmediaview + + + mwf + application/vnd.mfer + + + mxf + application/mxf + + + mxl + application/vnd.recordare.musicxml + + + mxml + application/xv+xml + + + mxs + application/vnd.triscape.mxs + + + mxu + video/vnd.mpegurl + + + n-gage + application/vnd.nokia.n-gage.symbian.install + + + n3 + text/n3 + + + nb + application/mathematica + + + nbp + application/vnd.wolfram.player + + + nc + application/x-netcdf + + + ncx + application/x-dtbncx+xml + + + nfo + text/x-nfo + + + ngdat + application/vnd.nokia.n-gage.data + + + nitf + application/vnd.nitf + + + nlu + application/vnd.neurolanguage.nlu + + + nml + application/vnd.enliven + + + nnd + application/vnd.noblenet-directory + + + nns + application/vnd.noblenet-sealer + + + nnw + application/vnd.noblenet-web + + + npx + image/vnd.net-fpx + + + nsc + application/x-conference + + + nsf + application/vnd.lotus-notes + + + ntf + application/vnd.nitf + + + nzb + application/x-nzb + + + oa2 + application/vnd.fujitsu.oasys2 + + + oa3 + application/vnd.fujitsu.oasys3 + + + oas + application/vnd.fujitsu.oasys + + + obd + application/x-msbinder + + + obj + application/x-tgif + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + odft + application/vnd.oasis.opendocument.formula-template + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + oga + audio/ogg + + + ogg + audio/ogg + + + ogv + video/ogg + + + + ogx + application/ogg + + + omdoc + application/omdoc+xml + + + onepkg + application/onenote + + + onetmp + application/onenote + + + onetoc + application/onenote + + + onetoc2 + application/onenote + + + opf + application/oebps-package+xml + + + opml + text/x-opml + + + oprc + application/vnd.palm + + + org + application/vnd.lotus-organizer + + + osf + application/vnd.yamaha.openscoreformat + + + osfpvg + application/vnd.yamaha.openscoreformat.osfpvg+xml + + + otc + application/vnd.oasis.opendocument.chart-template + + + otf + font/otf + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + oti + application/vnd.oasis.opendocument.image-template + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + oxps + application/oxps + + + oxt + application/vnd.openofficeorg.extension + + + p + text/x-pascal + + + p10 + application/pkcs10 + + + p12 + application/x-pkcs12 + + + p7b + application/x-pkcs7-certificates + + + p7c + application/pkcs7-mime + + + p7m + application/pkcs7-mime + + + p7r + application/x-pkcs7-certreqresp + + + p7s + application/pkcs7-signature + + + p8 + application/pkcs8 + + + pas + text/x-pascal + + + paw + application/vnd.pawaafile + + + pbd + application/vnd.powerbuilder6 + + + pbm + image/x-portable-bitmap + + + pcap + application/vnd.tcpdump.pcap + + + pcf + application/x-font-pcf + + + pcl + application/vnd.hp-pcl + + + pclxl + application/vnd.hp-pclxl + + + pct + image/pict + + + pcurl + application/vnd.curl.pcurl + + + pcx + image/x-pcx + + + pdb + application/vnd.palm + + + pdf + application/pdf + + + pfa + application/x-font-type1 + + + pfb + application/x-font-type1 + + + pfm + application/x-font-type1 + + + pfr + application/font-tdpfr + + + pfx + application/x-pkcs12 + + + pgm + image/x-portable-graymap + + + pgn + application/x-chess-pgn + + + pgp + application/pgp-encrypted + + + pic + image/pict + + + pict + image/pict + + + pkg + application/octet-stream + + + pki + application/pkixcmp + + + pkipath + application/pkix-pkipath + + + plb + application/vnd.3gpp.pic-bw-large + + + plc + application/vnd.mobius.plc + + + plf + application/vnd.pocketlearn + + + pls + audio/x-scpls + + + pml + application/vnd.ctc-posml + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + portpkg + application/vnd.macports.portpkg + + + pot + application/vnd.ms-powerpoint + + + potm + application/vnd.ms-powerpoint.template.macroenabled.12 + + + potx + application/vnd.openxmlformats-officedocument.presentationml.template + + + ppam + application/vnd.ms-powerpoint.addin.macroenabled.12 + + + ppd + application/vnd.cups-ppd + + + ppm + image/x-portable-pixmap + + + pps + application/vnd.ms-powerpoint + + + ppsm + application/vnd.ms-powerpoint.slideshow.macroenabled.12 + + + ppsx + application/vnd.openxmlformats-officedocument.presentationml.slideshow + + + ppt + application/vnd.ms-powerpoint + + + pptm + application/vnd.ms-powerpoint.presentation.macroenabled.12 + + + pptx + application/vnd.openxmlformats-officedocument.presentationml.presentation + + + pqa + application/vnd.palm + + + prc + application/x-mobipocket-ebook + + + pre + application/vnd.lotus-freelance + + + prf + application/pics-rules + + + ps + application/postscript + + + psb + application/vnd.3gpp.pic-bw-small + + + psd + image/vnd.adobe.photoshop + + + psf + application/x-font-linux-psf + + + pskcxml + application/pskc+xml + + + ptid + application/vnd.pvi.ptid1 + + + pub + application/x-mspublisher + + + pvb + application/vnd.3gpp.pic-bw-var + + + pwn + application/vnd.3m.post-it-notes + + + pya + audio/vnd.ms-playready.media.pya + + + pyv + video/vnd.ms-playready.media.pyv + + + qam + application/vnd.epson.quickanime + + + qbo + application/vnd.intu.qbo + + + qfx + application/vnd.intu.qfx + + + qps + application/vnd.publishare-delta-tree + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + qwd + application/vnd.quark.quarkxpress + + + qwt + application/vnd.quark.quarkxpress + + + qxb + application/vnd.quark.quarkxpress + + + qxd + application/vnd.quark.quarkxpress + + + qxl + application/vnd.quark.quarkxpress + + + qxt + application/vnd.quark.quarkxpress + + + ra + audio/x-pn-realaudio + + + ram + audio/x-pn-realaudio + + + rar + application/x-rar-compressed + + + ras + image/x-cmu-raster + + + rcprofile + application/vnd.ipunplugged.rcprofile + + + rdf + application/rdf+xml + + + rdz + application/vnd.data-vision.rdz + + + rep + application/vnd.businessobjects + + + res + application/x-dtbresource+xml + + + rgb + image/x-rgb + + + rif + application/reginfo+xml + + + rip + audio/vnd.rip + + + ris + application/x-research-info-systems + + + rl + application/resource-lists+xml + + + rlc + image/vnd.fujixerox.edmics-rlc + + + rld + application/resource-lists-diff+xml + + + rm + application/vnd.rn-realmedia + + + rmi + audio/midi + + + rmp + audio/x-pn-realaudio-plugin + + + rms + application/vnd.jcp.javame.midlet-rms + + + rmvb + application/vnd.rn-realmedia-vbr + + + rnc + application/relax-ng-compact-syntax + + + roa + application/rpki-roa + + + roff + text/troff + + + rp9 + application/vnd.cloanto.rp9 + + + rpss + application/vnd.nokia.radio-presets + + + rpst + application/vnd.nokia.radio-preset + + + rq + application/sparql-query + + + rs + application/rls-services+xml + + + rsd + application/rsd+xml + + + rss + application/rss+xml + + + rtf + application/rtf + + + rtx + text/richtext + + + s + text/x-asm + + + s3m + audio/s3m + + + saf + application/vnd.yamaha.smaf-audio + + + sbml + application/sbml+xml + + + sc + application/vnd.ibm.secure-container + + + scd + application/x-msschedule + + + scm + application/vnd.lotus-screencam + + + scq + application/scvp-cv-request + + + scs + application/scvp-cv-response + + + scurl + text/vnd.curl.scurl + + + sda + application/vnd.stardivision.draw + + + sdc + application/vnd.stardivision.calc + + + sdd + application/vnd.stardivision.impress + + + sdkd + application/vnd.solent.sdkm+xml + + + sdkm + application/vnd.solent.sdkm+xml + + + sdp + application/sdp + + + sdw + application/vnd.stardivision.writer + + + see + application/vnd.seemail + + + seed + application/vnd.fdsn.seed + + + sema + application/vnd.sema + + + semd + application/vnd.semd + + + semf + application/vnd.semf + + + ser + application/java-serialized-object + + + setpay + application/set-payment-initiation + + + setreg + application/set-registration-initiation + + + sfd-hdstx + application/vnd.hydrostatix.sof-data + + + sfs + application/vnd.spotfire.sfs + + + sfv + text/x-sfv + + + sgi + image/sgi + + + sgl + application/vnd.stardivision.writer-global + + + sgm + text/sgml + + + sgml + text/sgml + + + sh + application/x-sh + + + shar + application/x-shar + + + shf + application/shf+xml + + + + sid + image/x-mrsid-image + + + sig + application/pgp-signature + + + sil + audio/silk + + + silo + model/mesh + + + sis + application/vnd.symbian.install + + + sisx + application/vnd.symbian.install + + + sit + application/x-stuffit + + + sitx + application/x-stuffitx + + + skd + application/vnd.koan + + + skm + application/vnd.koan + + + skp + application/vnd.koan + + + skt + application/vnd.koan + + + sldm + application/vnd.ms-powerpoint.slide.macroenabled.12 + + + sldx + application/vnd.openxmlformats-officedocument.presentationml.slide + + + slt + application/vnd.epson.salt + + + sm + application/vnd.stepmania.stepchart + + + smf + application/vnd.stardivision.math + + + smi + application/smil+xml + + + smil + application/smil+xml + + + smv + video/x-smv + + + smzip + application/vnd.stepmania.package + + + snd + audio/basic + + + snf + application/x-font-snf + + + so + application/octet-stream + + + spc + application/x-pkcs7-certificates + + + spf + application/vnd.yamaha.smaf-phrase + + + spl + application/x-futuresplash + + + spot + text/vnd.in3d.spot + + + spp + application/scvp-vp-response + + + spq + application/scvp-vp-request + + + spx + audio/ogg + + + sql + application/x-sql + + + src + application/x-wais-source + + + srt + application/x-subrip + + + sru + application/sru+xml + + + srx + application/sparql-results+xml + + + ssdl + application/ssdl+xml + + + sse + application/vnd.kodak-descriptor + + + ssf + application/vnd.epson.ssf + + + ssml + application/ssml+xml + + + st + application/vnd.sailingtracker.track + + + stc + application/vnd.sun.xml.calc.template + + + std + application/vnd.sun.xml.draw.template + + + stf + application/vnd.wt.stf + + + sti + application/vnd.sun.xml.impress.template + + + stk + application/hyperstudio + + + stl + application/vnd.ms-pki.stl + + + str + application/vnd.pg.format + + + stw + application/vnd.sun.xml.writer.template + + + sub + text/vnd.dvb.subtitle + + + sus + application/vnd.sus-calendar + + + susp + application/vnd.sus-calendar + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svc + application/vnd.dvb.service + + + svd + application/vnd.svd + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swa + application/x-director + + + swf + application/x-shockwave-flash + + + swi + application/vnd.aristanetworks.swi + + + sxc + application/vnd.sun.xml.calc + + + sxd + application/vnd.sun.xml.draw + + + sxg + application/vnd.sun.xml.writer.global + + + sxi + application/vnd.sun.xml.impress + + + sxm + application/vnd.sun.xml.math + + + sxw + application/vnd.sun.xml.writer + + + t + text/troff + + + t3 + application/x-t3vm-image + + + taglet + application/vnd.mynfc + + + tao + application/vnd.tao.intent-module-archive + + + tar + application/x-tar + + + tcap + application/vnd.3gpp2.tcap + + + tcl + application/x-tcl + + + teacher + application/vnd.smart.teacher + + + tei + application/tei+xml + + + teicorpus + application/tei+xml + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + text + text/plain + + + tfi + application/thraud+xml + + + tfm + application/x-tex-tfm + + + tga + image/x-tga + + + thmx + application/vnd.ms-officetheme + + + tif + image/tiff + + + tiff + image/tiff + + + tmo + application/vnd.tmobile-livetv + + + torrent + application/x-bittorrent + + + tpl + application/vnd.groove-tool-template + + + tpt + application/vnd.trid.tpt + + + tr + text/troff + + + tra + application/vnd.trueapp + + + trm + application/x-msterminal + + + tsd + application/timestamped-data + + + tsv + text/tab-separated-values + + + ttc + font/collection + + + ttf + font/ttf + + + ttl + text/turtle + + + twd + application/vnd.simtech-mindmapper + + + twds + application/vnd.simtech-mindmapper + + + txd + application/vnd.genomatix.tuxedo + + + txf + application/vnd.mobius.txf + + + txt + text/plain + + + u32 + application/x-authorware-bin + + + udeb + application/x-debian-package + + + ufd + application/vnd.ufdl + + + ufdl + application/vnd.ufdl + + + ulw + audio/basic + + + ulx + application/x-glulx + + + umj + application/vnd.umajin + + + unityweb + application/vnd.unity + + + uoml + application/vnd.uoml+xml + + + uri + text/uri-list + + + uris + text/uri-list + + + urls + text/uri-list + + + ustar + application/x-ustar + + + utz + application/vnd.uiq.theme + + + uu + text/x-uuencode + + + uva + audio/vnd.dece.audio + + + uvd + application/vnd.dece.data + + + uvf + application/vnd.dece.data + + + uvg + image/vnd.dece.graphic + + + uvh + video/vnd.dece.hd + + + uvi + image/vnd.dece.graphic + + + uvm + video/vnd.dece.mobile + + + uvp + video/vnd.dece.pd + + + uvs + video/vnd.dece.sd + + + uvt + application/vnd.dece.ttml+xml + + + uvu + video/vnd.uvvu.mp4 + + + uvv + video/vnd.dece.video + + + uvva + audio/vnd.dece.audio + + + uvvd + application/vnd.dece.data + + + uvvf + application/vnd.dece.data + + + uvvg + image/vnd.dece.graphic + + + uvvh + video/vnd.dece.hd + + + uvvi + image/vnd.dece.graphic + + + uvvm + video/vnd.dece.mobile + + + uvvp + video/vnd.dece.pd + + + uvvs + video/vnd.dece.sd + + + uvvt + application/vnd.dece.ttml+xml + + + uvvu + video/vnd.uvvu.mp4 + + + uvvv + video/vnd.dece.video + + + uvvx + application/vnd.dece.unspecified + + + uvvz + application/vnd.dece.zip + + + uvx + application/vnd.dece.unspecified + + + uvz + application/vnd.dece.zip + + + vcard + text/vcard + + + vcd + application/x-cdlink + + + vcf + text/x-vcard + + + vcg + application/vnd.groove-vcard + + + vcs + text/x-vcalendar + + + vcx + application/vnd.vcx + + + vis + application/vnd.visionary + + + viv + video/vnd.vivo + + + vob + video/x-ms-vob + + + vor + application/vnd.stardivision.writer + + + vox + application/x-authorware-bin + + + vrml + model/vrml + + + vsd + application/vnd.visio + + + vsf + application/vnd.vsf + + + vss + application/vnd.visio + + + vst + application/vnd.visio + + + vsw + application/vnd.visio + + + vtu + model/vnd.vtu + + + vxml + application/voicexml+xml + + + w3d + application/x-director + + + wad + application/x-doom + + + wasm + application/wasm + + + wav + audio/x-wav + + + wax + audio/x-ms-wax + + + + wbmp + image/vnd.wap.wbmp + + + wbs + application/vnd.criticaltools.wbs+xml + + + wbxml + application/vnd.wap.wbxml + + + wcm + application/vnd.ms-works + + + wdb + application/vnd.ms-works + + + wdp + image/vnd.ms-photo + + + weba + audio/webm + + + webm + video/webm + + + webp + image/webp + + + wg + application/vnd.pmi.widget + + + wgt + application/widget + + + wks + application/vnd.ms-works + + + wm + video/x-ms-wm + + + wma + audio/x-ms-wma + + + wmd + application/x-ms-wmd + + + wmf + application/x-msmetafile + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlsc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wmx + video/x-ms-wmx + + + wmz + application/x-msmetafile + + + woff + font/woff + + + woff2 + font/woff2 + + + wpd + application/vnd.wordperfect + + + wpl + application/vnd.ms-wpl + + + wps + application/vnd.ms-works + + + wqd + application/vnd.wqd + + + wri + application/x-mswrite + + + wrl + model/vrml + + + wsdl + application/wsdl+xml + + + wspolicy + application/wspolicy+xml + + + wtb + application/vnd.webturbo + + + wvx + video/x-ms-wvx + + + x32 + application/x-authorware-bin + + + x3d + model/x3d+xml + + + x3db + model/x3d+binary + + + x3dbz + model/x3d+binary + + + x3dv + model/x3d+vrml + + + x3dvz + model/x3d+vrml + + + x3dz + model/x3d+xml + + + xaml + application/xaml+xml + + + xap + application/x-silverlight-app + + + xar + application/vnd.xara + + + xbap + application/x-ms-xbap + + + xbd + application/vnd.fujixerox.docuworks.binder + + + xbm + image/x-xbitmap + + + xdf + application/xcap-diff+xml + + + xdm + application/vnd.syncml.dm+xml + + + xdp + application/vnd.adobe.xdp+xml + + + xdssc + application/dssc+xml + + + xdw + application/vnd.fujixerox.docuworks + + + xenc + application/xenc+xml + + + xer + application/patch-ops-error+xml + + + xfdf + application/vnd.adobe.xfdf + + + xfdl + application/vnd.xfdl + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xhvml + application/xv+xml + + + xif + image/vnd.xiff + + + xla + application/vnd.ms-excel + + + xlam + application/vnd.ms-excel.addin.macroenabled.12 + + + xlc + application/vnd.ms-excel + + + xlf + application/x-xliff+xml + + + xlm + application/vnd.ms-excel + + + xls + application/vnd.ms-excel + + + xlsb + application/vnd.ms-excel.sheet.binary.macroenabled.12 + + + xlsm + application/vnd.ms-excel.sheet.macroenabled.12 + + + xlsx + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + xlt + application/vnd.ms-excel + + + xltm + application/vnd.ms-excel.template.macroenabled.12 + + + xltx + application/vnd.openxmlformats-officedocument.spreadsheetml.template + + + xlw + application/vnd.ms-excel + + + xm + audio/xm + + + xml + application/xml + + + xo + application/vnd.olpc-sugar + + + xop + application/xop+xml + + + xpi + application/x-xpinstall + + + xpl + application/xproc+xml + + + xpm + image/x-xpixmap + + + xpr + application/vnd.is-xpr + + + xps + application/vnd.ms-xpsdocument + + + xpw + application/vnd.intercon.formnet + + + xpx + application/vnd.intercon.formnet + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xsm + application/vnd.syncml+xml + + + xspf + application/xspf+xml + + + xul + application/vnd.mozilla.xul+xml + + + xvm + application/xv+xml + + + xvml + application/xv+xml + + + xwd + image/x-xwindowdump + + + xyz + chemical/x-xyz + + + xz + application/x-xz + + + yang + application/yang + + + yin + application/yin+xml + + + z + application/x-compress + + + z1 + application/x-zmachine + + + z2 + application/x-zmachine + + + z3 + application/x-zmachine + + + z4 + application/x-zmachine + + + z5 + application/x-zmachine + + + z6 + application/x-zmachine + + + z7 + application/x-zmachine + + + z8 + application/x-zmachine + + + zaz + application/vnd.zzazz.deck+xml + + + zip + application/zip + + + zir + application/vnd.zul + + + zirz + application/vnd.zul + + + zmm + application/vnd.handheld-entertainment+xml + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ce/f0d0e2b86248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/ce/f0d0e2b86248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..5e0ee56 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ce/f0d0e2b86248001c1eb1b6cc5fdf9661 @@ -0,0 +1,15 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/00f372f16248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/00f372f16248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..73f82b7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/00f372f16248001c1eb1b6cc5fdf9661 @@ -0,0 +1,28 @@ + + + + + + WEB-INF/web.xml + ${catalina.base}/conf/web.xml + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/30373f67eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/30373f67eb45001c11de97d36a89b06b new file mode 100644 index 0000000..6949783 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/30373f67eb45001c11de97d36a89b06b @@ -0,0 +1,8 @@ +package com.ioc; + +public class Main { + public static void main(String[] args) { + Outfit bikini - new Bikini(); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d2/60b9a9ac8d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/60b9a9ac8d46001c137a95b836e30a66 new file mode 100644 index 0000000..4e0c62a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/60b9a9ac8d46001c137a95b836e30a66 @@ -0,0 +1,12 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d2/c092e890c746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/c092e890c746001c137a95b836e30a66 new file mode 100644 index 0000000..1a935cc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/c092e890c746001c137a95b836e30a66 @@ -0,0 +1,51 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + return 0; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1; + } + + @Override + public boolean update(User user) { + return USERS.put(user.getId(), user) != null; + } + + @Override + public boolean delete(int id) { + return USERS.remove(id) != null; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d3/50718bfcb346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/d3/50718bfcb346001c137a95b836e30a66 new file mode 100644 index 0000000..bd276ad --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d3/50718bfcb346001c137a95b836e30a66 @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d4/90e0b951eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/d4/90e0b951eb45001c11de97d36a89b06b new file mode 100644 index 0000000..861517d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d4/90e0b951eb45001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.ioc.entity; + +public class main { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d5/b05859308842001c1cbc975586bbcf20 b/.metadata/.plugins/org.eclipse.core.resources/.history/d5/b05859308842001c1cbc975586bbcf20 new file mode 100644 index 0000000..0088b2a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d5/b05859308842001c1cbc975586bbcf20 @@ -0,0 +1,15 @@ +package com.demo; + +public class StringBufferDemo { + public static void main(String[] args) { + long start = System.nanoTime(); + + StringBuffer s = new StringBuffer("hello"); + for(int i = 0; i < 1000; i++) { + s.append(" World") + } + long end = System.nanoTime(); + + System.out.println("Total time: " + (end-start)); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d6/10f5d37cc546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/10f5d37cc546001c137a95b836e30a66 new file mode 100644 index 0000000..73f82b7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/10f5d37cc546001c137a95b836e30a66 @@ -0,0 +1,28 @@ + + + + + + WEB-INF/web.xml + ${catalina.base}/conf/web.xml + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d6/201808398842001c1cbc975586bbcf20 b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/201808398842001c1cbc975586bbcf20 new file mode 100644 index 0000000..84eaf84 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/201808398842001c1cbc975586bbcf20 @@ -0,0 +1,15 @@ +package com.demo; + +public class StringBufferDemo { + public static void main(String[] args) { + long start = System.nanoTime(); + + StringBuffer s = new StringBuffer("hello"); + for(int i = 0; i < 1000; i++) { + s.append(" World"); + } + long end = System.nanoTime(); + + System.out.println("Total time: " + (end-start)); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d6/409add28d646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/409add28d646001c137a95b836e30a66 new file mode 100644 index 0000000..38dce90 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/409add28d646001c137a95b836e30a66 @@ -0,0 +1,36 @@ +package com.webservice.ws; + +import java.util.Arrays; + +/** + * + * @author ManhKM + * wsimport -s . http://localhost:8089/ws/users?wsdl + * + */ +public class SoapClient { + public static void main(String[] args) { + UserServiceImplService userServiceImplService = new UserServiceImplService(); + UserService userService = userServiceImplService.getUserServiceImplPort(); + + User user1 = new User(); + user1.setId(100); + user1.setUsername("alibaba"); + + User user2 = new User(); + user2.setId(101); + user2.setUsername("tom"); + + User user3 = new User(); + user3.setId(102); + user3.setUsername("jery"); + + userService.insert(user1); + userService.insert(user2); + userService.insert(user3); + + System.out.println(Arrays.asList(userService.getAll())); + + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d8/1019bcefe245001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/d8/1019bcefe245001c11de97d36a89b06b new file mode 100644 index 0000000..325ee4a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d8/1019bcefe245001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.tight.coupling; + +public class BubbleSortAlgorithm { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d8/f036970ec746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/d8/f036970ec746001c137a95b836e30a66 new file mode 100644 index 0000000..4b48db7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d8/f036970ec746001c137a95b836e30a66 @@ -0,0 +1,45 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.*; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/da/d07d72f16248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/da/d07d72f16248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..dc2186f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/da/d07d72f16248001c1eb1b6cc5fdf9661 @@ -0,0 +1,214 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageAccess unless the +# corresponding RuntimePermission ("accessClassInPackage."+package) has +# been granted. +package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat. +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageDefinition unless the +# corresponding RuntimePermission ("defineClassInPackage."+package) has +# been granted. +# +# by default, no packages are restricted for definition, and none of +# the class loaders supplied with the JDK call checkPackageDefinition. +# +package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,\ +org.apache.jasper.,org.apache.naming.,org.apache.tomcat. + +# +# +# List of comma-separated paths defining the contents of the "common" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. +# If left as blank,the JVM system loader will be used as Catalina's "common" +# loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# +# Note: Values are enclosed in double quotes ("...") in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. +common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar" + +# +# List of comma-separated paths defining the contents of the "server" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. +# If left as blank, the "common" loader will be used as Catalina's "server" +# loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# +# Note: Values may be enclosed in double quotes ("...") in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. +server.loader= + +# +# List of comma-separated paths defining the contents of the "shared" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_BASE path or absolute. If left as blank, +# the "common" loader will be used as Catalina's "shared" loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# Please note that for single jars, e.g. bar.jar, you need the URL form +# starting with file:. +# +# Note: Values may be enclosed in double quotes ("...") in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. +shared.loader= + +# Default list of JAR files that should not be scanned using the JarScanner +# functionality. This is typically used to scan JARs for configuration +# information. JARs that do not contain such information may be excluded from +# the scan to speed up the scanning process. This is the default list. JARs on +# this list are excluded from all scans. The list must be a comma separated list +# of JAR file names. +# The list of JARs to skip may be over-ridden at a Context level for individual +# scan types by configuring a JarScanner with a nested JarScanFilter. +# The JARs listed below include: +# - Tomcat Bootstrap JARs +# - Tomcat API JARs +# - Catalina JARs +# - Jasper JARs +# - Tomcat JARs +# - Common non-Tomcat JARs +# - Test JARs (JUnit, Cobertura and dependencies) +tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\ +annotations-api.jar,\ +ant-junit*.jar,\ +ant-launcher.jar,\ +ant.jar,\ +asm-*.jar,\ +aspectj*.jar,\ +bootstrap.jar,\ +catalina-ant.jar,\ +catalina-ha.jar,\ +catalina-jmx-remote.jar,\ +catalina-storeconfig.jar,\ +catalina-tribes.jar,\ +catalina-ws.jar,\ +catalina.jar,\ +cglib-*.jar,\ +cobertura-*.jar,\ +commons-beanutils*.jar,\ +commons-codec*.jar,\ +commons-collections*.jar,\ +commons-daemon.jar,\ +commons-dbcp*.jar,\ +commons-digester*.jar,\ +commons-fileupload*.jar,\ +commons-httpclient*.jar,\ +commons-io*.jar,\ +commons-lang*.jar,\ +commons-logging*.jar,\ +commons-math*.jar,\ +commons-pool*.jar,\ +dom4j-*.jar,\ +easymock-*.jar,\ +ecj-*.jar,\ +el-api.jar,\ +geronimo-spec-jaxrpc*.jar,\ +h2*.jar,\ +hamcrest-*.jar,\ +hibernate*.jar,\ +httpclient*.jar,\ +icu4j-*.jar,\ +jasper-el.jar,\ +jasper.jar,\ +jaspic-api.jar,\ +jaxb-*.jar,\ +jaxen-*.jar,\ +jdom-*.jar,\ +jetty-*.jar,\ +jmx-tools.jar,\ +jmx.jar,\ +jsp-api.jar,\ +jstl.jar,\ +jta*.jar,\ +junit-*.jar,\ +junit.jar,\ +log4j*.jar,\ +mail*.jar,\ +objenesis-*.jar,\ +oraclepki.jar,\ +oro-*.jar,\ +servlet-api-*.jar,\ +servlet-api.jar,\ +slf4j*.jar,\ +taglibs-standard-spec-*.jar,\ +tagsoup-*.jar,\ +tomcat-api.jar,\ +tomcat-coyote.jar,\ +tomcat-dbcp.jar,\ +tomcat-i18n-*.jar,\ +tomcat-jdbc.jar,\ +tomcat-jni.jar,\ +tomcat-juli-adapters.jar,\ +tomcat-juli.jar,\ +tomcat-util-scan.jar,\ +tomcat-util.jar,\ +tomcat-websocket.jar,\ +tools.jar,\ +websocket-api.jar,\ +wsdl4j*.jar,\ +xercesImpl.jar,\ +xml-apis.jar,\ +xmlParserAPIs-*.jar,\ +xmlParserAPIs.jar,\ +xom-*.jar + +# Default list of JAR files that should be scanned that overrides the default +# jarsToSkip list above. This is typically used to include a specific JAR that +# has been excluded by a broad file name pattern in the jarsToSkip list. +# The list of JARs to scan may be over-ridden at a Context level for individual +# scan types by configuring a JarScanner with a nested JarScanFilter. +tomcat.util.scan.StandardJarScanFilter.jarsToScan=\ +log4j-taglib*.jar,\ +log4j-web*.jar,\ +log4javascript*.jar,\ +slf4j-taglib*.jar + +# String cache configuration. +tomcat.util.buf.StringCache.byte.enabled=true +#tomcat.util.buf.StringCache.char.enabled=true +#tomcat.util.buf.StringCache.trainThreshold=500000 +#tomcat.util.buf.StringCache.cacheSize=5000 + +# This system property is deprecated. Use the relaxedPathChars relaxedQueryChars +# attributes of the Connector instead. These attributes permit a wider range of +# characters to be configured as valid. +# Allow for changes to HTTP request validation +# WARNING: Using this option may expose the server to CVE-2016-6816 +#tomcat.util.http.parser.HttpParser.requestTargetAllow=| diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/db/407ab6845945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/db/407ab6845945001c1e6d86658ace159a new file mode 100644 index 0000000..6a6f5ca --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/db/407ab6845945001c1e6d86658ace159a @@ -0,0 +1,11 @@ +package com.use.jar; + +import com.manhkm.jar.FunctionOne; + +public class TestUseJar { + + public static void main(String[] args) { + System.out.println(FunctionOne.add(11, 22)); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/db/90182e34d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/db/90182e34d446001c137a95b836e30a66 new file mode 100644 index 0000000..14d7d03 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/db/90182e34d446001c137a95b836e30a66 @@ -0,0 +1,21 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + // create a service instance with the specified WSDL. + Service service = Service.create(wsdlURL, qname); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/db/b016b8748c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/db/b016b8748c46001c137a95b836e30a66 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/db/f0dfe9efcb46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/db/f0dfe9efcb46001c137a95b836e30a66 new file mode 100644 index 0000000..658ab5d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/db/f0dfe9efcb46001c137a95b836e30a66 @@ -0,0 +1,12 @@ +package com.webservice.ws; + +import javax.xml.ws.Endpoint; + +public class SoapPublisher { + + public static final String WS_URL = "http://localhost:8089/ws/users"; + + public static void main(String[] args) { + Endpoint.publish(WS_URL, new UserServiceImpl()); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/dd/300031c8e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/dd/300031c8e345001c11de97d36a89b06b new file mode 100644 index 0000000..3f05047 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/dd/300031c8e345001c11de97d36a89b06b @@ -0,0 +1,10 @@ +package com.tight.coupling; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + SortAlgorithm quickSort = new QuicksortAlgorithm(); + + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/dd/30c22564eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/dd/30c22564eb45001c11de97d36a89b06b new file mode 100644 index 0000000..fb04ad3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/dd/30c22564eb45001c11de97d36a89b06b @@ -0,0 +1,7 @@ +package com.ioc; + +public class Main { + public static void main(String[] args) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/dd/80697090eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/dd/80697090eb45001c11de97d36a89b06b new file mode 100644 index 0000000..6bfff6e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/dd/80697090eb45001c11de97d36a89b06b @@ -0,0 +1,11 @@ +package com.ioc.entity; + +public class Girl { + + private Outfit outfit; + public Girl(Outfit anything) { + outfit = anything; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/dd/c01aa1168e46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/dd/c01aa1168e46001c137a95b836e30a66 new file mode 100644 index 0000000..4f6c2e9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/dd/c01aa1168e46001c137a95b836e30a66 @@ -0,0 +1,10 @@ +package ws; + +public class EchoWSService { + + public EchoWS getEchoWSPort() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/de/609b610beb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/de/609b610beb45001c11de97d36a89b06b new file mode 100644 index 0000000..7b2ef0c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/de/609b610beb45001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.ioc.entity; + +public interface Outfit { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/de/a029caaee345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/de/a029caaee345001c11de97d36a89b06b new file mode 100644 index 0000000..0e7a6d2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/de/a029caaee345001c11de97d36a89b06b @@ -0,0 +1,8 @@ +package com.tight.coupling; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + SortAlgorithm quickSort = new QuicksortAlgorithm(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/df/2001db03de42001c149691cc9b37b92a b/.metadata/.plugins/org.eclipse.core.resources/.history/df/2001db03de42001c149691cc9b37b92a new file mode 100644 index 0000000..c55efd7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/df/2001db03de42001c149691cc9b37b92a @@ -0,0 +1,18 @@ +## Bài toán: + +Name: App CurrencyConverter +Mô tả: Chức năng chuyển đổi các đơn vị tiền tệ khác nhau. +Ứng dụng được viết dưới dạng chủ-khách bằng các sử dụng công nghệ socket. +Ứng dụng: Khách nhập số tiền, đơn vị tiền +Máy chủ: Trả về giá trị tiền tương ứng. +Ứng dụng khách in ra số tiền tương ứng trên màn hình. + + +## Thiết kế: + +Một Server mở kết nối +Một data lưu trong xml +Một Client giao tiếp. + + +## Tài liệu tham khảo: diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e/10dcfd7be345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/e/10dcfd7be345001c11de97d36a89b06b new file mode 100644 index 0000000..37172ff --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e/10dcfd7be345001c11de97d36a89b06b @@ -0,0 +1,22 @@ +package com.tight.coupling.services; + +import com.tight.coupling.SortAlgorithm; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; + + // constructor: + public VeryComplexService(SortAlgorithm sortAlgorithm) { + super(); + this.sortAlgorithm = sortAlgorithm; + } + + public void complexBusiness(int array[]) { + sortAlgorithm.sort(array); + } + + public static void main(String[] args) { + + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e/501c146de345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/e/501c146de345001c11de97d36a89b06b new file mode 100644 index 0000000..543a65e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e/501c146de345001c11de97d36a89b06b @@ -0,0 +1,16 @@ +package com.tight.coupling.services; + +import com.tight.coupling.SortAlgorithm; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; + + // constructor: + public VeryComplexService(SortAlgorithm sortAlgorithm) { + super(); + this.sortAlgorithm = sortAlgorithm; + } + + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e0/706fff107944001c155ec24d5b86e7d1 b/.metadata/.plugins/org.eclipse.core.resources/.history/e0/706fff107944001c155ec24d5b86e7d1 new file mode 100644 index 0000000..73c67a2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e0/706fff107944001c155ec24d5b86e7d1 @@ -0,0 +1,8 @@ +package com.manhkm.jar; + +public class FunctionOne { + + public int add3(int a, int b, int c) { + return (a+b+c); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e4/00d1cd57d446001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/00d1cd57d446001c137a95b836e30a66 new file mode 100644 index 0000000..81fcbe1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/00d1cd57d446001c137a95b836e30a66 @@ -0,0 +1,27 @@ +package com.webservice.ws; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; + +public class SoapClient { + public static void main(String[] args) throws MalformedURLException { + + // create url of .wsdl file: + URL wsdlURL = new URL(SoapPublisher.WS_URL + ".wsdl"); + + // create a qname using targerNamesapce and name: + QName qname = new QName("http://ws.webservice.com/", "UserServiceImplService"); + + // create a service instance with the specified WSDL. + Service service = Service.create(wsdlURL, qname); + + // we need to pass interface and model beans to client: + UserService userService = service.getPort(UserService.class); + + User user1 = new User(); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e4/300f11f38c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/300f11f38c46001c137a95b836e30a66 new file mode 100644 index 0000000..7ffa71d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/300f11f38c46001c137a95b836e30a66 @@ -0,0 +1,20 @@ +package ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.xml.ws.Endpoint; + +@WebService +public class EchoWS { + + @WebMethod + public String echo(String s) { + return "Echo: " + s; + } + + public static void main(String[] agrs) { + System.out.println("EchoWS up and running..."); + String url = "http://192.168.0.5:8888/EchoWS"; + Endpoint.publish(url, new EchoWS()); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e4/e098a959b346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/e098a959b346001c137a95b836e30a66 new file mode 100644 index 0000000..1d432b1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/e098a959b346001c137a95b836e30a66 @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20d73275eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20d73275eb45001c11de97d36a89b06b new file mode 100644 index 0000000..58b62c7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20d73275eb45001c11de97d36a89b06b @@ -0,0 +1,11 @@ +package com.ioc; + +import com.ioc.entity.Bikini; +import com.ioc.entity.Outfit; + +public class Main { + public static void main(String[] args) { + Outfit bikini = new Bikini(); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e8/30c072cc6248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/e8/30c072cc6248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..477afd7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e8/30c072cc6248001c1eb1b6cc5fdf9661 @@ -0,0 +1,10 @@ +package com.gpcoder; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "user") +public class User { + + private Integer id; + private String username; +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e9/90aaf5ec7844001c155ec24d5b86e7d1 b/.metadata/.plugins/org.eclipse.core.resources/.history/e9/90aaf5ec7844001c155ec24d5b86e7d1 new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e9/e0adbce1d546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/e9/e0adbce1d546001c137a95b836e30a66 new file mode 100644 index 0000000..e80c3e9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e9/e0adbce1d546001c137a95b836e30a66 @@ -0,0 +1,17 @@ +package com.webservice.ws; + +/** + * + * @author ManhKM + * wsimport -s . http://localhost:8089/ws/users?wsdl + * + */ +public class SoapClient { + public static void main(String[] args) { + UserServiceImplService userServiceImplService = new UserServiceImplService(); + UserService userService = userServiceImplService.getUserServiceImplPort(); + + User user1 = new User(); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ea/60f11dc7c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ea/60f11dc7c646001c137a95b836e30a66 new file mode 100644 index 0000000..9efb355 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ea/60f11dc7c646001c137a95b836e30a66 @@ -0,0 +1,22 @@ +package com.webservice.ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); + + @WebMethod + boolean update(User user); + + @WebMethod + boolean delete(int id); + + @WebMethod + User get(int id); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ec/501ce359eb45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/ec/501ce359eb45001c11de97d36a89b06b new file mode 100644 index 0000000..3ff032b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ec/501ce359eb45001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.ioc; + +public class Main { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ed/30e3a59de345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/ed/30e3a59de345001c11de97d36a89b06b new file mode 100644 index 0000000..0eae657 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ed/30e3a59de345001c11de97d36a89b06b @@ -0,0 +1,7 @@ +package com.tight.coupling; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ed/b0893cf98d46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ed/b0893cf98d46001c137a95b836e30a66 new file mode 100644 index 0000000..e686be0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ed/b0893cf98d46001c137a95b836e30a66 @@ -0,0 +1,19 @@ +package ws; + +public class EchoClient { + + public static void main(String[] args) { + try { + EchoWSService service = new EchoWSService(); + EchoWS port = service.getEchoWSPort(); + String res = null; + if(args.length == 0) { + res = port.echo("Testing WebService"); + + } + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ee/d058d37cc546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ee/d058d37cc546001c137a95b836e30a66 new file mode 100644 index 0000000..dc2186f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ee/d058d37cc546001c137a95b836e30a66 @@ -0,0 +1,214 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageAccess unless the +# corresponding RuntimePermission ("accessClassInPackage."+package) has +# been granted. +package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat. +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageDefinition unless the +# corresponding RuntimePermission ("defineClassInPackage."+package) has +# been granted. +# +# by default, no packages are restricted for definition, and none of +# the class loaders supplied with the JDK call checkPackageDefinition. +# +package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,\ +org.apache.jasper.,org.apache.naming.,org.apache.tomcat. + +# +# +# List of comma-separated paths defining the contents of the "common" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. +# If left as blank,the JVM system loader will be used as Catalina's "common" +# loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# +# Note: Values are enclosed in double quotes ("...") in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. +common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar" + +# +# List of comma-separated paths defining the contents of the "server" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. +# If left as blank, the "common" loader will be used as Catalina's "server" +# loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# +# Note: Values may be enclosed in double quotes ("...") in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. +server.loader= + +# +# List of comma-separated paths defining the contents of the "shared" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_BASE path or absolute. If left as blank, +# the "common" loader will be used as Catalina's "shared" loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# Please note that for single jars, e.g. bar.jar, you need the URL form +# starting with file:. +# +# Note: Values may be enclosed in double quotes ("...") in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. +shared.loader= + +# Default list of JAR files that should not be scanned using the JarScanner +# functionality. This is typically used to scan JARs for configuration +# information. JARs that do not contain such information may be excluded from +# the scan to speed up the scanning process. This is the default list. JARs on +# this list are excluded from all scans. The list must be a comma separated list +# of JAR file names. +# The list of JARs to skip may be over-ridden at a Context level for individual +# scan types by configuring a JarScanner with a nested JarScanFilter. +# The JARs listed below include: +# - Tomcat Bootstrap JARs +# - Tomcat API JARs +# - Catalina JARs +# - Jasper JARs +# - Tomcat JARs +# - Common non-Tomcat JARs +# - Test JARs (JUnit, Cobertura and dependencies) +tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\ +annotations-api.jar,\ +ant-junit*.jar,\ +ant-launcher.jar,\ +ant.jar,\ +asm-*.jar,\ +aspectj*.jar,\ +bootstrap.jar,\ +catalina-ant.jar,\ +catalina-ha.jar,\ +catalina-jmx-remote.jar,\ +catalina-storeconfig.jar,\ +catalina-tribes.jar,\ +catalina-ws.jar,\ +catalina.jar,\ +cglib-*.jar,\ +cobertura-*.jar,\ +commons-beanutils*.jar,\ +commons-codec*.jar,\ +commons-collections*.jar,\ +commons-daemon.jar,\ +commons-dbcp*.jar,\ +commons-digester*.jar,\ +commons-fileupload*.jar,\ +commons-httpclient*.jar,\ +commons-io*.jar,\ +commons-lang*.jar,\ +commons-logging*.jar,\ +commons-math*.jar,\ +commons-pool*.jar,\ +dom4j-*.jar,\ +easymock-*.jar,\ +ecj-*.jar,\ +el-api.jar,\ +geronimo-spec-jaxrpc*.jar,\ +h2*.jar,\ +hamcrest-*.jar,\ +hibernate*.jar,\ +httpclient*.jar,\ +icu4j-*.jar,\ +jasper-el.jar,\ +jasper.jar,\ +jaspic-api.jar,\ +jaxb-*.jar,\ +jaxen-*.jar,\ +jdom-*.jar,\ +jetty-*.jar,\ +jmx-tools.jar,\ +jmx.jar,\ +jsp-api.jar,\ +jstl.jar,\ +jta*.jar,\ +junit-*.jar,\ +junit.jar,\ +log4j*.jar,\ +mail*.jar,\ +objenesis-*.jar,\ +oraclepki.jar,\ +oro-*.jar,\ +servlet-api-*.jar,\ +servlet-api.jar,\ +slf4j*.jar,\ +taglibs-standard-spec-*.jar,\ +tagsoup-*.jar,\ +tomcat-api.jar,\ +tomcat-coyote.jar,\ +tomcat-dbcp.jar,\ +tomcat-i18n-*.jar,\ +tomcat-jdbc.jar,\ +tomcat-jni.jar,\ +tomcat-juli-adapters.jar,\ +tomcat-juli.jar,\ +tomcat-util-scan.jar,\ +tomcat-util.jar,\ +tomcat-websocket.jar,\ +tools.jar,\ +websocket-api.jar,\ +wsdl4j*.jar,\ +xercesImpl.jar,\ +xml-apis.jar,\ +xmlParserAPIs-*.jar,\ +xmlParserAPIs.jar,\ +xom-*.jar + +# Default list of JAR files that should be scanned that overrides the default +# jarsToSkip list above. This is typically used to include a specific JAR that +# has been excluded by a broad file name pattern in the jarsToSkip list. +# The list of JARs to scan may be over-ridden at a Context level for individual +# scan types by configuring a JarScanner with a nested JarScanFilter. +tomcat.util.scan.StandardJarScanFilter.jarsToScan=\ +log4j-taglib*.jar,\ +log4j-web*.jar,\ +log4javascript*.jar,\ +slf4j-taglib*.jar + +# String cache configuration. +tomcat.util.buf.StringCache.byte.enabled=true +#tomcat.util.buf.StringCache.char.enabled=true +#tomcat.util.buf.StringCache.trainThreshold=500000 +#tomcat.util.buf.StringCache.cacheSize=5000 + +# This system property is deprecated. Use the relaxedPathChars relaxedQueryChars +# attributes of the Connector instead. These attributes permit a wider range of +# characters to be configured as valid. +# Allow for changes to HTTP request validation +# WARNING: Using this option may expose the server to CVE-2016-6816 +#tomcat.util.http.parser.HttpParser.requestTargetAllow=| diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ef/606f74cac646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/ef/606f74cac646001c137a95b836e30a66 new file mode 100644 index 0000000..48b7372 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ef/606f74cac646001c137a95b836e30a66 @@ -0,0 +1,24 @@ +package com.webservice.ws; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; + +@WebService +@SOAPBinding(style = SOAPBinding.Style.RPC) +public interface UserService { + + @WebMethod + int insert(User user); + + @WebMethod + boolean update(User user); + + @WebMethod + boolean delete(int id); + + @WebMethod + User get(int id); + + User[] getAll(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f0/80eed525e445001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/f0/80eed525e445001c11de97d36a89b06b new file mode 100644 index 0000000..d6103a4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f0/80eed525e445001c11de97d36a89b06b @@ -0,0 +1,15 @@ +package com.tight.coupling; + +import com.tight.coupling.services.VeryComplexService; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + SortAlgorithm quickSort = new QuicksortAlgorithm(); + + VeryComplexService business1 = new VeryComplexService(bubbleSort); + business1.complexBusiness(null); + + VeryComplexService business2 = new VeryComplexService(quickSort); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f0/a0f0fb7a8c46001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/f0/a0f0fb7a8c46001c137a95b836e30a66 new file mode 100644 index 0000000..316f796 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f0/a0f0fb7a8c46001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package ws; + +public class EchoWS { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e0de3ad66248001c1eb1b6cc5fdf9661 b/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e0de3ad66248001c1eb1b6cc5fdf9661 new file mode 100644 index 0000000..407300f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e0de3ad66248001c1eb1b6cc5fdf9661 @@ -0,0 +1,17 @@ +package com.gpcoder; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "user") +public class User { + + private Integer id; + private String username; + public User(Integer id, String username) { + super(); + this.id = id; + this.username = username; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f3/801c38cfc746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/f3/801c38cfc746001c137a95b836e30a66 new file mode 100644 index 0000000..f4cdedc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f3/801c38cfc746001c137a95b836e30a66 @@ -0,0 +1,48 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + user.setId(id); + USERS.put(id, user); + return 0; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1; + } + + @Override + public boolean update(User user) { + return USERS.put(user.getId(), user) != null; + } + + @Override + public boolean delete(int id) { + return USERS.remove(id) != null; + } + + @Override + public User get(int id) { + return USERS.getOrDefault(id, new User()); + } + + @Override + public User[] getAll() { + return USERS.values().toArray(new User[0]); + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f4/10a25a72b546001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/f4/10a25a72b546001c137a95b836e30a66 new file mode 100644 index 0000000..aa5973c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f4/10a25a72b546001c137a95b836e30a66 @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f4/20f6f00bc746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/f4/20f6f00bc746001c137a95b836e30a66 new file mode 100644 index 0000000..42ad725 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f4/20f6f00bc746001c137a95b836e30a66 @@ -0,0 +1,44 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c0f4cee4c646001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c0f4cee4c646001c137a95b836e30a66 new file mode 100644 index 0000000..ffd318e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c0f4cee4c646001c137a95b836e30a66 @@ -0,0 +1,5 @@ +package com.webservice.ws; + +public class UserServiceImpl { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f6/1040e1d7ea45001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/f6/1040e1d7ea45001c11de97d36a89b06b new file mode 100644 index 0000000..43acdb6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f6/1040e1d7ea45001c11de97d36a89b06b @@ -0,0 +1,5 @@ +package com.ioc.entity; + +public class Girl { + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f7/00581deadd42001c149691cc9b37b92a b/.metadata/.plugins/org.eclipse.core.resources/.history/f7/00581deadd42001c149691cc9b37b92a new file mode 100644 index 0000000..20d395c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f7/00581deadd42001c149691cc9b37b92a @@ -0,0 +1,5 @@ +## Bài toán: + +## Thiết kế: + +## Tài liệu tham khảo: diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f9/90d5a34ac746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/f9/90d5a34ac746001c137a95b836e30a66 new file mode 100644 index 0000000..951f48e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f9/90d5a34ac746001c137a95b836e30a66 @@ -0,0 +1,46 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + + return 0; + } + + @Override + public boolean update(User user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean delete(int id) { + // TODO Auto-generated method stub + return false; + } + + @Override + public User get(int id) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User[] getAll() { + // TODO Auto-generated method stub + return null; + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f9/c05fa2b05945001c1e6d86658ace159a b/.metadata/.plugins/org.eclipse.core.resources/.history/f9/c05fa2b05945001c1e6d86658ace159a new file mode 100644 index 0000000..16c33b6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f9/c05fa2b05945001c1e6d86658ace159a @@ -0,0 +1,11 @@ +package com.use.jar; + +import com.manhkm.jar.FunctionOne; + +public class TestUseJar { + + public static void main(String[] args) { + System.out.println(FunctionOne.add2(11, 22)); + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fa/8018e3b7d346001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/fa/8018e3b7d346001c137a95b836e30a66 new file mode 100644 index 0000000..89226eb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fa/8018e3b7d346001c137a95b836e30a66 @@ -0,0 +1,7 @@ +package com.webservice.ws; + +public class SoapClient { + public static void main(String[] args) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fa/b07bc6aae345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/fa/b07bc6aae345001c11de97d36a89b06b new file mode 100644 index 0000000..52ba771 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fa/b07bc6aae345001c11de97d36a89b06b @@ -0,0 +1,8 @@ +package com.tight.coupling; + +public class Main { + public static void main(String[] args) { + SortAlgorithm bubbleSort = new BubbleSortAlgorithm(); + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e0b48b77e345001c11de97d36a89b06b b/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e0b48b77e345001c11de97d36a89b06b new file mode 100644 index 0000000..e1e5ff4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e0b48b77e345001c11de97d36a89b06b @@ -0,0 +1,20 @@ +package com.tight.coupling.services; + +import com.tight.coupling.SortAlgorithm; + +public class VeryComplexService { + private SortAlgorithm sortAlgorithm; + + // constructor: + public VeryComplexService(SortAlgorithm sortAlgorithm) { + super(); + this.sortAlgorithm = sortAlgorithm; + } + + public void complexBusiness(int array[]) { + sortAlgorithm.sort(array); + } + + main + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fe/a001fabcc746001c137a95b836e30a66 b/.metadata/.plugins/org.eclipse.core.resources/.history/fe/a001fabcc746001c137a95b836e30a66 new file mode 100644 index 0000000..f9362bf --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fe/a001fabcc746001c137a95b836e30a66 @@ -0,0 +1,49 @@ +package com.webservice.ws; + +import java.util.HashMap; +import java.util.Map; + +import java.util.HashMap; +import java.util.Map; +import javax.jws.WebService; + +@WebService(endpointInterface = "com.webservice.ws.UserService") +public class UserServiceImpl implements UserService{ + + private static final Map USERS = new HashMap<>(); + + @Override + public int insert(User user) { + Integer id = generateUniqueId(); + return 0; + } + + private Integer generateUniqueId() { + return USERS.keySet() + .stream() + .max((x1, x2) -> x1 - x2) + .orElse(0) + 1; + } + + @Override + public boolean update(User user) { + return USERS.put(user.getId(), user) != null; + } + + @Override + public boolean delete(int id) { + return USERS.remove(id) != null; + } + + @Override + public User get(int id) { + return USERS.getOrDefault(id, new User()); + } + + @Override + public User[] getAll() { + return USERS.values().toArray(new User[0]); + } + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/.location new file mode 100644 index 0000000..2bf9d23 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/.location new file mode 100644 index 0000000..bc1224d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/.markers new file mode 100644 index 0000000..5a09929 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/.markers differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..025c58d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Thu Nov 11 16:01:07 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..a50abf0 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Book-Price/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/.location new file mode 100644 index 0000000..94f5a09 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..21dbbce --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Thu Nov 11 17:51:37 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..2fac7ea Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Currency-Converter/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/.location new file mode 100644 index 0000000..3d4b79f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..f714290 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Sat Nov 13 18:57:25 ICT 2021 +.gitdir=../../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..f7f83b0 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Jar-Project/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/.location new file mode 100644 index 0000000..7546bd2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/.markers new file mode 100644 index 0000000..c5554f2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/.markers differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..5398e16 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Thu Nov 11 14:38:38 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..a031359 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-DOM/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.indexes/e4/81/fd/1d/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.indexes/e4/81/fd/1d/history.index new file mode 100644 index 0000000..fbb7f12 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.indexes/e4/81/fd/1d/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.indexes/e4/81/fd/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.indexes/e4/81/fd/history.index new file mode 100644 index 0000000..59c80f1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.indexes/e4/81/fd/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.location new file mode 100644 index 0000000..c6b982b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..95799d2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Mon Nov 15 15:03:02 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..7b472e7 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-IoC/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/.indexes/e4/dc/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/.indexes/e4/dc/history.index new file mode 100644 index 0000000..70ec9f5 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/.indexes/e4/dc/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/.location new file mode 100644 index 0000000..1836684 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..4be642d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Tue Nov 16 10:22:11 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..fc67ed6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Service/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/.location new file mode 100644 index 0000000..0fdc28c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/.markers new file mode 100644 index 0000000..5ea24ce Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/.markers differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..8a8d4ee --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Thu Nov 11 07:36:23 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..3218bef Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-String/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.indexes/e4/81/1e/83/5e/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.indexes/e4/81/1e/83/5e/history.index new file mode 100644 index 0000000..89410c3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.indexes/e4/81/1e/83/5e/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.indexes/e4/81/1e/83/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.indexes/e4/81/1e/83/history.index new file mode 100644 index 0000000..e7e5318 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.indexes/e4/81/1e/83/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.location new file mode 100644 index 0000000..6646cc9 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..cc85c15 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Mon Nov 15 14:06:02 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..f2ca7e5 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Java-Tight-Coupling/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.indexes/af/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.indexes/af/history.index new file mode 100644 index 0000000..87455cf Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.indexes/af/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.indexes/e4/81/dc/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.indexes/e4/81/dc/history.index new file mode 100644 index 0000000..871cfad Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.indexes/e4/81/dc/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.indexes/properties.index new file mode 100644 index 0000000..47bcb47 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.location new file mode 100644 index 0000000..afa0c3b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.markers new file mode 100644 index 0000000..7c8136a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/.markers differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..ed67e2d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Thu Nov 18 18:29:01 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..30f8fbb Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/RestfulWebServiceExample/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.indexes/c7/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.indexes/c7/history.index new file mode 100644 index 0000000..2734b4e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.indexes/c7/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..eeb7701 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Servers/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Tue Nov 16 14:57:05 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/af/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/af/history.index new file mode 100644 index 0000000..4a604b7 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/af/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/22/81/e1/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/22/81/e1/history.index new file mode 100644 index 0000000..d245d7a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/22/81/e1/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/b3/64/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/b3/64/history.index new file mode 100644 index 0000000..3617f70 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/b3/64/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/b3/a8/95/81/e1/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/b3/a8/95/81/e1/history.index new file mode 100644 index 0000000..d5fede6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/b3/a8/95/81/e1/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/b3/a8/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/b3/a8/history.index new file mode 100644 index 0000000..bf4238c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/e4/b9/b3/a8/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.location new file mode 100644 index 0000000..3171c0b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..7e2c300 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Tue Nov 16 15:01:06 ICT 2021 +.gitdir=../../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..6f84075 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.indexes/af/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.indexes/af/history.index new file mode 100644 index 0000000..0eb1ab2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.indexes/af/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.indexes/e4/b9/22/81/e1/dc/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.indexes/e4/b9/22/81/e1/dc/history.index new file mode 100644 index 0000000..f4e6d97 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.indexes/e4/b9/22/81/e1/dc/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.location new file mode 100644 index 0000000..f1240bc Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..4bd1ac0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Tue Nov 16 17:14:52 ICT 2021 +.gitdir=../../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..3e3cab2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.indexes/af/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.indexes/af/history.index new file mode 100644 index 0000000..a2c4f87 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.indexes/af/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.indexes/e4/b9/22/81/e1/dc/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.indexes/e4/b9/22/81/e1/dc/history.index new file mode 100644 index 0000000..d08e19a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.indexes/e4/b9/22/81/e1/dc/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.location new file mode 100644 index 0000000..2a81066 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..3650bd6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Tue Nov 16 19:03:08 ICT 2021 +.gitdir=../../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..91848e1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExample2Client/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/.indexes/af/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/.indexes/af/history.index new file mode 100644 index 0000000..a43ac91 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/.indexes/af/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/.markers new file mode 100644 index 0000000..13d1a96 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/.markers differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..035427b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Tue Nov 16 15:05:46 ICT 2021 +.gitdir=../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..bc05a32 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/SoapWebServiceExampleClient/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/.indexes/properties.index new file mode 100644 index 0000000..1e099f3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/.location b/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/.location new file mode 100644 index 0000000..5792a89 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/.location differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/org.eclipse.egit.core/GitProjectData.properties b/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/org.eclipse.egit.core/GitProjectData.properties new file mode 100644 index 0000000..8fddf0f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/org.eclipse.egit.core/GitProjectData.properties @@ -0,0 +1,3 @@ +#GitProjectData +#Sun Nov 14 21:39:45 ICT 2021 +.gitdir=../../.git diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/org.eclipse.jdt.core/state.dat b/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..cd8b174 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/Using-Jar/org.eclipse.jdt.core/state.dat differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version new file mode 100644 index 0000000..25cb955 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index new file mode 100644 index 0000000..0454e8a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/5.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/5.tree new file mode 100644 index 0000000..a883938 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/5.tree differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources new file mode 100644 index 0000000..573fcf5 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/DOMCreateXMLExample.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/DOMCreateXMLExample.launch new file mode 100644 index 0000000..1a04627 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/DOMCreateXMLExample.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/DOMExample.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/DOMExample.launch new file mode 100644 index 0000000..0d02226 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/DOMExample.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/DemoHelloWorld.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/DemoHelloWorld.launch new file mode 100644 index 0000000..101175f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/DemoHelloWorld.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/EchoWS.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/EchoWS.launch new file mode 100644 index 0000000..54d2692 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/EchoWS.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/Main (1).launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/Main (1).launch new file mode 100644 index 0000000..a965354 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/Main (1).launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/Main.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/Main.launch new file mode 100644 index 0000000..f27ae55 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/Main.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/MyClient.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/MyClient.launch new file mode 100644 index 0000000..edf9eb2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/MyClient.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/MyServer.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/MyServer.launch new file mode 100644 index 0000000..4912422 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/MyServer.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/New_configuration (1).launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/New_configuration (1).launch new file mode 100644 index 0000000..d6c7d2e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/New_configuration (1).launch @@ -0,0 +1,6 @@ + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/New_configuration.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/New_configuration.launch new file mode 100644 index 0000000..999c6d2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/New_configuration.launch @@ -0,0 +1,6 @@ + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/RestfulWebServiceExample.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/RestfulWebServiceExample.launch new file mode 100644 index 0000000..7cd2239 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/RestfulWebServiceExample.launch @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapClient (1).launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapClient (1).launch new file mode 100644 index 0000000..617a723 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapClient (1).launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapClient.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapClient.launch new file mode 100644 index 0000000..1adf969 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapClient.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapPublisher.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapPublisher.launch new file mode 100644 index 0000000..a4148bc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapPublisher.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapWebServiceExample2.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapWebServiceExample2.launch new file mode 100644 index 0000000..82fc233 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/SoapWebServiceExample2.launch @@ -0,0 +1,4 @@ + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/StringBufferDemo.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/StringBufferDemo.launch new file mode 100644 index 0000000..f321eaa --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/StringBufferDemo.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/StringNomal.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/StringNomal.launch new file mode 100644 index 0000000..dd738da --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/StringNomal.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/TestUseJar.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/TestUseJar.launch new file mode 100644 index 0000000..5ea2494 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/TestUseJar.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml new file mode 100644 index 0000000..d6f6c0c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml @@ -0,0 +1,16 @@ + +
+
+ + + +
+
+ + + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml new file mode 100644 index 0000000..577b824 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.e4.ui.workbench.swt/dialog_settings.xml b/.metadata/.plugins/org.eclipse.e4.ui.workbench.swt/dialog_settings.xml new file mode 100644 index 0000000..a94cdbc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.e4.ui.workbench.swt/dialog_settings.xml @@ -0,0 +1,14 @@ + +
+
+ + + + + + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi new file mode 100644 index 0000000..e9b5ab1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -0,0 +1,3503 @@ + + + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration + + + + + + + + topLevel + shellMaximized + + + + + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.jst.j2ee.J2eeMainActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaActionSet + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.debug.ui.debugActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.wst.server.ui.ServersView + persp.viewSC:org.eclipse.datatools.connectivity.DataSourceExplorerNavigator + persp.viewSC:org.eclipse.ui.views.BookmarkView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.PropertySheet + persp.viewSC:org.eclipse.ui.views.ResourceNavigator + persp.viewSC:org.eclipse.wst.common.snippets.internal.ui.SnippetsView + persp.viewSC:org.eclipse.ui.views.AllMarkersView + persp.viewSC:org.eclipse.mylyn.tasks.ui.views.tasks + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.actionSet:org.eclipse.wst.ws.explorer.explorer + persp.newWizSC:org.eclipse.m2e.core.wizards.Maven2ProjectWizard + persp.newWizSC:org.eclipse.wst.css.ui.internal.wizard.NewCSSWizard + persp.newWizSC:org.eclipse.wst.jsdt.ui.NewJSWizard + persp.actionSet:org.eclipse.eclemma.ui.CoverageActionSet + persp.showIn:org.eclipse.eclemma.ui.CoverageView + persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.perspSC:org.eclipse.jdt.ui.JavaPerspective + persp.perspSC:org.eclipse.ui.resourcePerspective + persp.perspSC:org.eclipse.wst.web.ui.webDevPerspective + persp.newWizSC:org.eclipse.jst.j2ee.ui.project.facet.EarProjectWizard + persp.newWizSC:org.eclipse.jst.servlet.ui.project.facet.WebProjectWizard + persp.newWizSC:org.eclipse.jst.ejb.ui.project.facet.EjbProjectWizard + persp.newWizSC:org.eclipse.jst.j2ee.jca.ui.internal.wizard.ConnectorProjectWizard + persp.newWizSC:org.eclipse.jst.j2ee.ui.project.facet.appclient.AppClientProjectWizard + persp.newWizSC:org.eclipse.wst.web.ui.internal.wizards.SimpleWebProjectWizard + persp.newWizSC:org.eclipse.jpt.ui.wizard.newJpaProject + persp.newWizSC:org.eclipse.jst.servlet.ui.internal.wizard.AddServletWizard + persp.newWizSC:org.eclipse.jst.ejb.ui.internal.wizard.AddSessionBeanWizard + persp.newWizSC:org.eclipse.jst.ejb.ui.internal.wizard.AddMessageDrivenBeanWizard + persp.newWizSC:org.eclipse.jpt.ui.wizard.newEntity + persp.newWizSC:org.eclipse.jst.ws.creation.ui.wizard.serverwizard + persp.newWizSC:org.eclipse.ui.wizards.new.folder + persp.newWizSC:org.eclipse.ui.wizards.new.file + persp.actionSet:org.eclipse.wst.server.ui.internal.webbrowser.actionSet + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.newWizSC:org.eclipse.jpt.jpa.ui.wizard.newJpaProject + persp.perspSC:org.eclipse.jpt.ui.jpaPerspective + persp.newWizSC:org.eclipse.jst.jsp.ui.internal.wizard.NewJSPWizard + + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Java + + + View + categoryTag:Java Browsing + + + + + + + Minimized + + View + categoryTag:General + + + View + categoryTag:Mylyn + + + View + categoryTag:General + + + + + General + Terminal + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Server + + + View + categoryTag:Data Management + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Terminal + + + + + + + + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaElementCreationActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.jdt.ui.PackageExplorer + persp.viewSC:org.eclipse.jdt.ui.TypeHierarchy + persp.viewSC:org.eclipse.jdt.ui.SourceView + persp.viewSC:org.eclipse.jdt.ui.JavadocView + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.views.ResourceNavigator + persp.viewSC:org.eclipse.ui.views.TaskList + persp.viewSC:org.eclipse.ui.views.ProgressView + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.ui.texteditor.TemplatesView + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.newWizSC:org.eclipse.jdt.ui.wizards.JavaProjectWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewPackageCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewClassCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewEnumCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewRecordCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard + persp.newWizSC:org.eclipse.ui.wizards.new.folder + persp.newWizSC:org.eclipse.ui.wizards.new.file + persp.newWizSC:org.eclipse.ui.editors.wizards.UntitledTextFileWizard + persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.showIn:org.eclipse.jdt.ui.PackageExplorer + persp.showIn:org.eclipse.team.ui.GenericHistoryView + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.mylyn.tasks.ui.views.tasks + persp.newWizSC:org.eclipse.mylyn.tasks.ui.wizards.new.repository.task + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet + persp.showIn:org.eclipse.egit.ui.RepositoriesView + persp.actionSet:org.eclipse.eclemma.ui.CoverageActionSet + persp.showIn:org.eclipse.eclemma.ui.CoverageView + persp.viewSC:org.eclipse.tm.terminal.view.ui.TerminalsView + persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView + persp.newWizSC:org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard + persp.actionSet:org.eclipse.jdt.junit.JUnitActionSet + persp.viewSC:org.eclipse.ant.ui.views.AntView + + + + org.eclipse.e4.primaryNavigationStack + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:General + + + View + categoryTag:Java + + + + + View + categoryTag:Git + + + + + + + + + Minimized + + View + categoryTag:Mylyn + + + + org.eclipse.e4.secondaryNavigationStack + Minimized + + View + categoryTag:General + active + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Ant + + + + + + org.eclipse.e4.secondaryDataStack + noFocus + + View + categoryTag:General + + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Terminal + + + + + + + + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.viewSC:org.eclipse.ui.views.ProgressView + persp.viewSC:org.eclipse.ui.texteditor.TemplatesView + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.debug.ui.debugActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.debug.ui.DebugView + persp.viewSC:org.eclipse.debug.ui.VariableView + persp.viewSC:org.eclipse.debug.ui.BreakpointView + persp.viewSC:org.eclipse.debug.ui.ExpressionView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.perspSC:org.eclipse.wst.xml.ui.perspective + persp.perspSC:org.eclipse.jdt.ui.JavaPerspective + persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective + persp.actionSet:org.eclipse.jdt.ui.JavaActionSet + persp.showIn:org.eclipse.jdt.ui.PackageExplorer + persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet + persp.viewSC:org.eclipse.jdt.debug.ui.DisplayView + persp.showIn:org.eclipse.egit.ui.RepositoriesView + persp.actionSet:org.eclipse.eclemma.ui.CoverageActionSet + persp.showIn:org.eclipse.eclemma.ui.CoverageView + persp.viewSC:org.eclipse.tm.terminal.view.ui.TerminalsView + persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView + persp.viewSC:org.eclipse.jdt.junit.ResultView + persp.viewSC:org.eclipse.ant.ui.views.AntView + persp.viewSC:org.eclipse.datatools.sqltools.result.resultView + persp.perspSC:org.eclipse.datatools.sqltools.sqleditor.perspectives.EditorPerspective + + + org.eclipse.e4.primaryNavigationStack + + View + categoryTag:Debug + + + View + categoryTag:General + + + View + categoryTag:Server + + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:Java + + + + + + + org.eclipse.e4.secondaryNavigationStack + Minimized + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Ant + + + + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Debug + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Debug + + + View + categoryTag:General + + + View + categoryTag:Terminal + + + View + categoryTag:Data Management + + + + + + + + + View + categoryTag:Help + + + View + categoryTag:General + + + View + categoryTag:Help + + + + + + + View + categoryTag:Help + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Help + + + + org.eclipse.e4.primaryDataStack + EditorStack + active + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + active + activeOnClose + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java Browsing + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + + View + categoryTag:Server + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Data Management + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + highlighted + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Mylyn + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + + View + categoryTag:Java + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + View + categoryTag:Git + + + + + + View + categoryTag:Terminal + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Java + + + + + View + categoryTag:Ant + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Data Management + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + Draggable + + + toolbarSeparator + + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + toolbarSeparator + + + + Draggable + + + + Draggable + + + Draggable + + + toolbarSeparator + + + + toolbarSeparator + + + + Draggable + + + stretch + SHOW_RESTORE_MENU + + + Draggable + HIDEABLE + SHOW_RESTORE_MENU + + + + + stretch + + + Draggable + + + Draggable + + + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + + + + + + + + + + + + + + + + + + + platform:win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + platform:win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor + removeOnHide + + + + + View + categoryTag:Ant + + + + + View + categoryTag:Gradle + + + + + View + categoryTag:Gradle + + + + + View + categoryTag:Data Management + + + + + View + categoryTag:Data Management + + + + + View + categoryTag:Data Management + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Java + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + NoRestore + + + + + View + categoryTag:Git + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:JPA + + + + + View + categoryTag:JPA + + + + + View + categoryTag:JavaServer Faces + + + + + View + categoryTag:JavaServer Faces + + + + + View + categoryTag:Web Services + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Oomph + + + + + View + categoryTag:API Tools + + + + + View + categoryTag:Plug-in Development + + + + + View + categoryTag:Plug-in Development + + + + + View + categoryTag:Plug-in Development + + + + + View + categoryTag:Plug-in Development + + + + + View + categoryTag:Plug-in Development + + + + + View + categoryTag:Plug-in Development + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Version Control (Team) + + + + + View + categoryTag:Version Control (Team) + + + View + categoryTag:Help + + + + + View + categoryTag:Terminal + + + + + View + categoryTag:Other + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Other + + + + + View + categoryTag:Other + + + + + View + categoryTag:Other + + + + + View + categoryTag:Server + + + + + View + categoryTag:XML + + + + + View + categoryTag:XML + + + + + View + categoryTag:XML + + + + + View + categoryTag:XML + + + + + View + categoryTag:XML + + + + glue + move_after:PerspectiveSpacer + SHOW_RESTORE_MENU + + + move_after:Spacer Glue + HIDEABLE + SHOW_RESTORE_MENU + + + glue + move_after:SearchField + SHOW_RESTORE_MENU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1033149260.index b/.metadata/.plugins/org.eclipse.jdt.core/1033149260.index new file mode 100644 index 0000000..a5eb458 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1033149260.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1045781273.index b/.metadata/.plugins/org.eclipse.jdt.core/1045781273.index new file mode 100644 index 0000000..754c7ca Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1045781273.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1129749041.index b/.metadata/.plugins/org.eclipse.jdt.core/1129749041.index new file mode 100644 index 0000000..70965d8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1129749041.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1148937498.index b/.metadata/.plugins/org.eclipse.jdt.core/1148937498.index new file mode 100644 index 0000000..f551ad2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1148937498.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1169044391.index b/.metadata/.plugins/org.eclipse.jdt.core/1169044391.index new file mode 100644 index 0000000..0e4631c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1169044391.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/119770048.index b/.metadata/.plugins/org.eclipse.jdt.core/119770048.index new file mode 100644 index 0000000..0ea57e1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/119770048.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/12703767.index b/.metadata/.plugins/org.eclipse.jdt.core/12703767.index new file mode 100644 index 0000000..d1eb0b6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/12703767.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1315988683.index b/.metadata/.plugins/org.eclipse.jdt.core/1315988683.index new file mode 100644 index 0000000..51d151c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1315988683.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1361357789.index b/.metadata/.plugins/org.eclipse.jdt.core/1361357789.index new file mode 100644 index 0000000..4dd0d9d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1361357789.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1391692745.index b/.metadata/.plugins/org.eclipse.jdt.core/1391692745.index new file mode 100644 index 0000000..5741b9e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1391692745.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1542774334.index b/.metadata/.plugins/org.eclipse.jdt.core/1542774334.index new file mode 100644 index 0000000..392014d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1542774334.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/162355792.index b/.metadata/.plugins/org.eclipse.jdt.core/162355792.index new file mode 100644 index 0000000..4ec9c07 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/162355792.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1708237293.index b/.metadata/.plugins/org.eclipse.jdt.core/1708237293.index new file mode 100644 index 0000000..2b8ffd8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1708237293.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1741647643.index b/.metadata/.plugins/org.eclipse.jdt.core/1741647643.index new file mode 100644 index 0000000..8608fae Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1741647643.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1747079554.index b/.metadata/.plugins/org.eclipse.jdt.core/1747079554.index new file mode 100644 index 0000000..a5eb458 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1747079554.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1751380090.index b/.metadata/.plugins/org.eclipse.jdt.core/1751380090.index new file mode 100644 index 0000000..4085e2f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1751380090.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1764277464.index b/.metadata/.plugins/org.eclipse.jdt.core/1764277464.index new file mode 100644 index 0000000..0fea6f2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1764277464.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1887361675.index b/.metadata/.plugins/org.eclipse.jdt.core/1887361675.index new file mode 100644 index 0000000..84843ea Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1887361675.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1936075732.index b/.metadata/.plugins/org.eclipse.jdt.core/1936075732.index new file mode 100644 index 0000000..e077961 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1936075732.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1974196992.index b/.metadata/.plugins/org.eclipse.jdt.core/1974196992.index new file mode 100644 index 0000000..3758c62 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1974196992.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2019305918.index b/.metadata/.plugins/org.eclipse.jdt.core/2019305918.index new file mode 100644 index 0000000..524abd8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2019305918.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2107478018.index b/.metadata/.plugins/org.eclipse.jdt.core/2107478018.index new file mode 100644 index 0000000..2754c67 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2107478018.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2143688562.index b/.metadata/.plugins/org.eclipse.jdt.core/2143688562.index new file mode 100644 index 0000000..570f4dd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2143688562.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2200875372.index b/.metadata/.plugins/org.eclipse.jdt.core/2200875372.index new file mode 100644 index 0000000..60989e0 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2200875372.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2259403217.index b/.metadata/.plugins/org.eclipse.jdt.core/2259403217.index new file mode 100644 index 0000000..1e4bc4c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2259403217.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2300728607.index b/.metadata/.plugins/org.eclipse.jdt.core/2300728607.index new file mode 100644 index 0000000..21b4c19 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2300728607.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2323259943.index b/.metadata/.plugins/org.eclipse.jdt.core/2323259943.index new file mode 100644 index 0000000..77d787a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2323259943.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/240611728.index b/.metadata/.plugins/org.eclipse.jdt.core/240611728.index new file mode 100644 index 0000000..a5eb458 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/240611728.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2438078356.index b/.metadata/.plugins/org.eclipse.jdt.core/2438078356.index new file mode 100644 index 0000000..6e1d043 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2438078356.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2538946849.index b/.metadata/.plugins/org.eclipse.jdt.core/2538946849.index new file mode 100644 index 0000000..5afb348 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2538946849.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2583372910.index b/.metadata/.plugins/org.eclipse.jdt.core/2583372910.index new file mode 100644 index 0000000..1da65bc Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2583372910.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2609714019.index b/.metadata/.plugins/org.eclipse.jdt.core/2609714019.index new file mode 100644 index 0000000..6578a25 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2609714019.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2650571527.index b/.metadata/.plugins/org.eclipse.jdt.core/2650571527.index new file mode 100644 index 0000000..661cbc2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2650571527.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2681979876.index b/.metadata/.plugins/org.eclipse.jdt.core/2681979876.index new file mode 100644 index 0000000..4fc2254 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2681979876.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2867191265.index b/.metadata/.plugins/org.eclipse.jdt.core/2867191265.index new file mode 100644 index 0000000..cc81a0c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2867191265.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2965530040.index b/.metadata/.plugins/org.eclipse.jdt.core/2965530040.index new file mode 100644 index 0000000..c179806 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2965530040.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2973695523.index b/.metadata/.plugins/org.eclipse.jdt.core/2973695523.index new file mode 100644 index 0000000..bb37666 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2973695523.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2978256318.index b/.metadata/.plugins/org.eclipse.jdt.core/2978256318.index new file mode 100644 index 0000000..b87ff33 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2978256318.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3005873205.index b/.metadata/.plugins/org.eclipse.jdt.core/3005873205.index new file mode 100644 index 0000000..715b445 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3005873205.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3054294075.index b/.metadata/.plugins/org.eclipse.jdt.core/3054294075.index new file mode 100644 index 0000000..b30d036 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3054294075.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3057300974.index b/.metadata/.plugins/org.eclipse.jdt.core/3057300974.index new file mode 100644 index 0000000..bdbbadc Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3057300974.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3068939992.index b/.metadata/.plugins/org.eclipse.jdt.core/3068939992.index new file mode 100644 index 0000000..859ad92 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3068939992.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3116278645.index b/.metadata/.plugins/org.eclipse.jdt.core/3116278645.index new file mode 100644 index 0000000..1bade52 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3116278645.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3140846345.index b/.metadata/.plugins/org.eclipse.jdt.core/3140846345.index new file mode 100644 index 0000000..8224d48 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3140846345.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3166927587.index b/.metadata/.plugins/org.eclipse.jdt.core/3166927587.index new file mode 100644 index 0000000..586555a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3166927587.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3177765073.index b/.metadata/.plugins/org.eclipse.jdt.core/3177765073.index new file mode 100644 index 0000000..7f99c15 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3177765073.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3195611511.index b/.metadata/.plugins/org.eclipse.jdt.core/3195611511.index new file mode 100644 index 0000000..1d027a9 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3195611511.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3214045241.index b/.metadata/.plugins/org.eclipse.jdt.core/3214045241.index new file mode 100644 index 0000000..524abd8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3214045241.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3216779411.index b/.metadata/.plugins/org.eclipse.jdt.core/3216779411.index new file mode 100644 index 0000000..e02fd84 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3216779411.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3298669441.index b/.metadata/.plugins/org.eclipse.jdt.core/3298669441.index new file mode 100644 index 0000000..524c18a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3298669441.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3326599540.index b/.metadata/.plugins/org.eclipse.jdt.core/3326599540.index new file mode 100644 index 0000000..e3bed54 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3326599540.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3450831843.index b/.metadata/.plugins/org.eclipse.jdt.core/3450831843.index new file mode 100644 index 0000000..9d5fbaf Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3450831843.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3578157164.index b/.metadata/.plugins/org.eclipse.jdt.core/3578157164.index new file mode 100644 index 0000000..6d1f7d8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3578157164.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3676174531.index b/.metadata/.plugins/org.eclipse.jdt.core/3676174531.index new file mode 100644 index 0000000..7f99c15 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3676174531.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3720716507.index b/.metadata/.plugins/org.eclipse.jdt.core/3720716507.index new file mode 100644 index 0000000..d036a7e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3720716507.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/373859136.index b/.metadata/.plugins/org.eclipse.jdt.core/373859136.index new file mode 100644 index 0000000..7e0dde2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/373859136.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3768216373.index b/.metadata/.plugins/org.eclipse.jdt.core/3768216373.index new file mode 100644 index 0000000..ba27449 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3768216373.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3839578677.index b/.metadata/.plugins/org.eclipse.jdt.core/3839578677.index new file mode 100644 index 0000000..e69ef1a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3839578677.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3899116099.index b/.metadata/.plugins/org.eclipse.jdt.core/3899116099.index new file mode 100644 index 0000000..ec42719 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3899116099.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3906867743.index b/.metadata/.plugins/org.eclipse.jdt.core/3906867743.index new file mode 100644 index 0000000..7f99c15 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3906867743.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3931442490.index b/.metadata/.plugins/org.eclipse.jdt.core/3931442490.index new file mode 100644 index 0000000..507459e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3931442490.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3954683424.index b/.metadata/.plugins/org.eclipse.jdt.core/3954683424.index new file mode 100644 index 0000000..dfd3473 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3954683424.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3993276655.index b/.metadata/.plugins/org.eclipse.jdt.core/3993276655.index new file mode 100644 index 0000000..6a3ba7a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3993276655.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4014383386.index b/.metadata/.plugins/org.eclipse.jdt.core/4014383386.index new file mode 100644 index 0000000..84843ea Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4014383386.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4032157952.index b/.metadata/.plugins/org.eclipse.jdt.core/4032157952.index new file mode 100644 index 0000000..eacc250 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4032157952.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4073173062.index b/.metadata/.plugins/org.eclipse.jdt.core/4073173062.index new file mode 100644 index 0000000..524abd8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4073173062.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4075415788.index b/.metadata/.plugins/org.eclipse.jdt.core/4075415788.index new file mode 100644 index 0000000..e02fd84 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4075415788.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4086025153.index b/.metadata/.plugins/org.eclipse.jdt.core/4086025153.index new file mode 100644 index 0000000..4085e2f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4086025153.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4093528999.index b/.metadata/.plugins/org.eclipse.jdt.core/4093528999.index new file mode 100644 index 0000000..10237e7 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4093528999.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4110137968.index b/.metadata/.plugins/org.eclipse.jdt.core/4110137968.index new file mode 100644 index 0000000..84843ea Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4110137968.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4137515924.index b/.metadata/.plugins/org.eclipse.jdt.core/4137515924.index new file mode 100644 index 0000000..5adf77e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4137515924.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4141162951.index b/.metadata/.plugins/org.eclipse.jdt.core/4141162951.index new file mode 100644 index 0000000..9d546f7 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4141162951.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4149139292.index b/.metadata/.plugins/org.eclipse.jdt.core/4149139292.index new file mode 100644 index 0000000..9f12d8d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4149139292.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4159017284.index b/.metadata/.plugins/org.eclipse.jdt.core/4159017284.index new file mode 100644 index 0000000..15c0969 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4159017284.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4206142690.index b/.metadata/.plugins/org.eclipse.jdt.core/4206142690.index new file mode 100644 index 0000000..97d73c0 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4206142690.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4224972657.index b/.metadata/.plugins/org.eclipse.jdt.core/4224972657.index new file mode 100644 index 0000000..d8ab14e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4224972657.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4258721816.index b/.metadata/.plugins/org.eclipse.jdt.core/4258721816.index new file mode 100644 index 0000000..8b5dc1c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4258721816.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/446698966.index b/.metadata/.plugins/org.eclipse.jdt.core/446698966.index new file mode 100644 index 0000000..ec2f5d7 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/446698966.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/468708626.index b/.metadata/.plugins/org.eclipse.jdt.core/468708626.index new file mode 100644 index 0000000..91969be Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/468708626.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/561689436.index b/.metadata/.plugins/org.eclipse.jdt.core/561689436.index new file mode 100644 index 0000000..0be248b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/561689436.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/578787319.index b/.metadata/.plugins/org.eclipse.jdt.core/578787319.index new file mode 100644 index 0000000..bbbf930 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/578787319.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/601485618.index b/.metadata/.plugins/org.eclipse.jdt.core/601485618.index new file mode 100644 index 0000000..7a55829 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/601485618.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/608004496.index b/.metadata/.plugins/org.eclipse.jdt.core/608004496.index new file mode 100644 index 0000000..e3b59b4 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/608004496.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/609299637.index b/.metadata/.plugins/org.eclipse.jdt.core/609299637.index new file mode 100644 index 0000000..c77060e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/609299637.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/615226062.index b/.metadata/.plugins/org.eclipse.jdt.core/615226062.index new file mode 100644 index 0000000..5aee856 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/615226062.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/62733713.index b/.metadata/.plugins/org.eclipse.jdt.core/62733713.index new file mode 100644 index 0000000..2ae87cc Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/62733713.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/686889833.index b/.metadata/.plugins/org.eclipse.jdt.core/686889833.index new file mode 100644 index 0000000..ca53310 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/686889833.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/693608451.index b/.metadata/.plugins/org.eclipse.jdt.core/693608451.index new file mode 100644 index 0000000..4085e2f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/693608451.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/699020011.index b/.metadata/.plugins/org.eclipse.jdt.core/699020011.index new file mode 100644 index 0000000..e27786d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/699020011.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/711050520.index b/.metadata/.plugins/org.eclipse.jdt.core/711050520.index new file mode 100644 index 0000000..07136ec Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/711050520.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/760714027.index b/.metadata/.plugins/org.eclipse.jdt.core/760714027.index new file mode 100644 index 0000000..36be204 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/760714027.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/851544856.index b/.metadata/.plugins/org.eclipse.jdt.core/851544856.index new file mode 100644 index 0000000..5712aba Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/851544856.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/858989570.index b/.metadata/.plugins/org.eclipse.jdt.core/858989570.index new file mode 100644 index 0000000..04dc336 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/858989570.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/891793771.index b/.metadata/.plugins/org.eclipse.jdt.core/891793771.index new file mode 100644 index 0000000..e02fd84 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/891793771.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/8944736.index b/.metadata/.plugins/org.eclipse.jdt.core/8944736.index new file mode 100644 index 0000000..67d636f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/8944736.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/934030048.index b/.metadata/.plugins/org.eclipse.jdt.core/934030048.index new file mode 100644 index 0000000..4d3457e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/934030048.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/96814854.index b/.metadata/.plugins/org.eclipse.jdt.core/96814854.index new file mode 100644 index 0000000..5e413ad Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/96814854.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/978179035.index b/.metadata/.plugins/org.eclipse.jdt.core/978179035.index new file mode 100644 index 0000000..5dc45e3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/978179035.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache b/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache b/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache new file mode 100644 index 0000000..4f37871 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps b/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps new file mode 100644 index 0000000..5f29769 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt b/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt new file mode 100644 index 0000000..cfc6fb9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt @@ -0,0 +1 @@ +INDEX VERSION 1.131 diff --git a/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt b/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt new file mode 100644 index 0000000..8586397 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt @@ -0,0 +1 @@ +java \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache new file mode 100644 index 0000000..8dc6dbf Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/participantsIndexNames.txt b/.metadata/.plugins/org.eclipse.jdt.core/participantsIndexNames.txt new file mode 100644 index 0000000..d723092 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.core/participantsIndexNames.txt @@ -0,0 +1,3 @@ +INDEX VERSION 1.131 +E:\1_CODING\LearnJava\Java-Pre\.metadata\.plugins\org.eclipse.jst.jsp.core\jspsearch\3071318588.index +\SoapWebServiceExampleClient\src\main\java diff --git a/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt b/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt new file mode 100644 index 0000000..68d593e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt @@ -0,0 +1,37 @@ +INDEX VERSION 1.131+E:\1_CODING\LearnJava\Java-Pre\.metadata\.plugins\org.eclipse.jdt.core +3676174531.index +4110137968.index +3195611511.index +1033149260.index +1361357789.index +3216779411.index +3214045241.index +2259403217.index +4086025153.index +1974196992.index +2965530040.index +2867191265.index +2650571527.index +3298669441.index +4075415788.index +1751380090.index +4014383386.index +693608451.index +1747079554.index +4141162951.index +891793771.index +2019305918.index +4073173062.index +2978256318.index +4137515924.index +2300728607.index +3906867743.index +1129749041.index +1887361675.index +446698966.index +4206142690.index +2107478018.index +3057300974.index +4032157952.index +240611728.index +3177765073.index diff --git a/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat new file mode 100644 index 0000000..a8d3b1a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat differ diff --git a/.metadata/.plugins/org.eclipse.jdt.debug.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jdt.debug.ui/dialog_settings.xml new file mode 100644 index 0000000..91afe4d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.debug.ui/dialog_settings.xml @@ -0,0 +1,9 @@ + +
+ + + + +
+
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml b/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml new file mode 100644 index 0000000..ee6aabe --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml b/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml new file mode 100644 index 0000000..7b7f0d5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml new file mode 100644 index 0000000..cf84ad1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml new file mode 100644 index 0000000..7beef5b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml new file mode 100644 index 0000000..83ced89 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml @@ -0,0 +1,133 @@ + +
+ + + + +
+
+
+ +
+
+ + +
+
+
+
+
+
+ + +
+
+ + + + + +
+
+ + + + + + + + + + +
+
+ + +
+
+ + + + + +
+
+ + + + + +
+
+ +
+
+ + + +
+
+ + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + +
+
+ +
+
+ + + + + +
+
+ + +
+ + + + + +
+
+
diff --git a/.metadata/.plugins/org.eclipse.jst.j2ee.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jst.j2ee.ui/dialog_settings.xml new file mode 100644 index 0000000..6e3286f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jst.j2ee.ui/dialog_settings.xml @@ -0,0 +1,6 @@ + +
+ + + +
diff --git a/.metadata/.plugins/org.eclipse.jst.j2ee.web/webLibrariesCache.index b/.metadata/.plugins/org.eclipse.jst.j2ee.web/webLibrariesCache.index new file mode 100644 index 0000000..9eca72d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jst.j2ee.web/webLibrariesCache.index differ diff --git a/.metadata/.plugins/org.eclipse.jst.j2ee/earLibrariesCache.index b/.metadata/.plugins/org.eclipse.jst.j2ee/earLibrariesCache.index new file mode 100644 index 0000000..1494657 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jst.j2ee/earLibrariesCache.index differ diff --git a/.metadata/.plugins/org.eclipse.jst.jsp.core/jspsearch/3071318588.index b/.metadata/.plugins/org.eclipse.jst.jsp.core/jspsearch/3071318588.index new file mode 100644 index 0000000..8f6fa75 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jst.jsp.core/jspsearch/3071318588.index differ diff --git a/.metadata/.plugins/org.eclipse.jst.ws.axis.creation.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jst.ws.axis.creation.ui/dialog_settings.xml new file mode 100644 index 0000000..2f133ee --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jst.ws.axis.creation.ui/dialog_settings.xml @@ -0,0 +1,6 @@ + +
+ + + +
diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2021/11/47/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2021/11/47/refactorings.history new file mode 100644 index 0000000..3b8a21e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2021/11/47/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2021/11/47/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2021/11/47/refactorings.index new file mode 100644 index 0000000..1813fe5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2021/11/47/refactorings.index @@ -0,0 +1,3 @@ +1637049572843 Delete resource 'SoapWebServiceExample' +1637057606323 Delete resource 'SoapWebServiceExample2' +1637234925207 Delete resource 'RestfulWebServiceExample' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Currency-Converter/2021/11/46/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Currency-Converter/2021/11/46/refactorings.history new file mode 100644 index 0000000..40cd791 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Currency-Converter/2021/11/46/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Currency-Converter/2021/11/46/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Currency-Converter/2021/11/46/refactorings.index new file mode 100644 index 0000000..d5cedae --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Currency-Converter/2021/11/46/refactorings.index @@ -0,0 +1 @@ +1636627936740 Rename resource 'data-money' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-DOM/2021/11/46/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-DOM/2021/11/46/refactorings.history new file mode 100644 index 0000000..0064df4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-DOM/2021/11/46/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-DOM/2021/11/46/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-DOM/2021/11/46/refactorings.index new file mode 100644 index 0000000..1f295ca --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-DOM/2021/11/46/refactorings.index @@ -0,0 +1,2 @@ +1636617886548 Move file +1636617926568 Move file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-IoC/2021/11/47/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-IoC/2021/11/47/refactorings.history new file mode 100644 index 0000000..57cc92b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-IoC/2021/11/47/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-IoC/2021/11/47/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-IoC/2021/11/47/refactorings.index new file mode 100644 index 0000000..5a9f688 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-IoC/2021/11/47/refactorings.index @@ -0,0 +1 @@ +1636963753257 Delete element diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-String/2021/11/46/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-String/2021/11/46/refactorings.history new file mode 100644 index 0000000..12a8399 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-String/2021/11/46/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-String/2021/11/46/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-String/2021/11/46/refactorings.index new file mode 100644 index 0000000..1feda85 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-String/2021/11/46/refactorings.index @@ -0,0 +1 @@ +1636591311008 Rename compilation unit 'StringBuffer.java' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-Tight-Coupling/2021/11/47/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-Tight-Coupling/2021/11/47/refactorings.history new file mode 100644 index 0000000..610d6f0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-Tight-Coupling/2021/11/47/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-Tight-Coupling/2021/11/47/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-Tight-Coupling/2021/11/47/refactorings.index new file mode 100644 index 0000000..66e0c04 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Java-Tight-Coupling/2021/11/47/refactorings.index @@ -0,0 +1 @@ +1636960265307 Move compilation unit diff --git a/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml new file mode 100644 index 0000000..87ba093 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml @@ -0,0 +1,11 @@ + +
+
+ + +
+
+ + +
+
diff --git a/.metadata/.plugins/org.eclipse.m2e.core.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.m2e.core.ui/dialog_settings.xml new file mode 100644 index 0000000..0f79985 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.core.ui/dialog_settings.xml @@ -0,0 +1,97 @@ + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.m2e.core/RestfulWebServiceExample.lifecyclemapping b/.metadata/.plugins/org.eclipse.m2e.core/RestfulWebServiceExample.lifecyclemapping new file mode 100644 index 0000000..eeac217 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/RestfulWebServiceExample.lifecyclemapping differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser b/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser new file mode 100644 index 0000000..a52c9d4 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/workspacestate.properties b/.metadata/.plugins/org.eclipse.m2e.core/workspacestate.properties new file mode 100644 index 0000000..2d6424d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.core/workspacestate.properties @@ -0,0 +1,4 @@ +#Thu Nov 18 18:30:10 ICT 2021 +RestfulWebServiceExample\:RestfulWebServiceExample\:pom\:\:0.0.1-SNAPSHOT=E\:\\1_CODING\\LearnJava\\Java-Tutorial\\RestfulWebServiceExample\\pom.xml +RestfulWebServiceExample\:RestfulWebServiceExample\:jar\:tests\:0.0.1-SNAPSHOT=E\:\\1_CODING\\LearnJava\\Java-Tutorial\\RestfulWebServiceExample\\target\\test-classes +RestfulWebServiceExample\:RestfulWebServiceExample\:war\:\:0.0.1-SNAPSHOT=E\:\\1_CODING\\LearnJava\\Java-Tutorial\\RestfulWebServiceExample\\target\\classes diff --git a/.metadata/.plugins/org.eclipse.m2e.jdt/RestfulWebServiceExample.container b/.metadata/.plugins/org.eclipse.m2e.jdt/RestfulWebServiceExample.container new file mode 100644 index 0000000..8bca0d2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.jdt/RestfulWebServiceExample.container differ diff --git a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.16.1.20210603-1006.xml b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.16.1.20210603-1006.xml new file mode 100644 index 0000000..e33758c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.16.1.20210603-1006.xml @@ -0,0 +1,43 @@ + + + + %date [%thread] %-5level %logger{35} - %msg%n + + + OFF + + + + + ${org.eclipse.m2e.log.dir}/0.log + + ${org.eclipse.m2e.log.dir}/%i.log + 1 + 10 + + + 100MB + + + %date [%thread] %-5level %logger{35} - %msg%n + + + + + + WARN + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup b/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup new file mode 100644 index 0000000..1f73e14 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup @@ -0,0 +1,6 @@ + + diff --git a/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties b/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties new file mode 100644 index 0000000..5b90b98 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties @@ -0,0 +1,2 @@ +#Cached timestamps +#Thu Nov 18 18:30:54 ICT 2021 diff --git a/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml new file mode 100644 index 0000000..5ca0b77 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml @@ -0,0 +1,3 @@ + +
+
diff --git a/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/.executables/data.properties b/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/.executables/data.properties new file mode 100644 index 0000000..46a5f0b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/.executables/data.properties @@ -0,0 +1,98 @@ +#Thu Nov 11 07:37:00 ICT 2021 +1.Name=Copyright (c) Microsoft Corporation. All rights reserved. (WSL) +0.Icon=C\:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico +8.Path=C\:\\WINDOWS\\System32\\wsl.exe +16.Translate=true +5.Translate=true +5.Args=--distribution Install Windows Subsystem for Linux features. If no options are specified, +11.Path=C\:\\WINDOWS\\System32\\wsl.exe +7.Path=C\:\\WINDOWS\\System32\\wsl.exe +4.Args=--distribution --install +2.Name=Usage\: wsl.exe [Argument] (WSL) +15.Name=wsl --install -d Ubuntu (WSL) +22.Args=--distribution --help +10.Path=C\:\\WINDOWS\\System32\\wsl.exe +9.Path=C\:\\WINDOWS\\System32\\wsl.exe +20.Args=--distribution --online, -o +18.Args=--distribution Lists distributions. +23.Args=--distribution Display usage information. +4.Translate=true +6.Path=C\:\\WINDOWS\\System32\\wsl.exe +16.Name=wsl --install --distribution Debian (WSL) +3.Name=Arguments\: (WSL) +13.Name=A valid distribution name (not case sensitive). (WSL) +0.Name=Git Bash +5.Path=C\:\\WINDOWS\\System32\\wsl.exe +12.Name=Arguments\: (WSL) +19.Path=C\:\\WINDOWS\\System32\\wsl.exe +18.Translate=true +14.Path=C\:\\WINDOWS\\System32\\wsl.exe +4.Name=--install (WSL) +17.Args=--distribution --list, -l [Options] +13.Path=C\:\\WINDOWS\\System32\\wsl.exe +10.Translate=true +15.Translate=true +11.Args=--distribution Specifies the distribution to be downloaded and installed by name. +18.Name=Lists distributions. (WSL) +2.Translate=true +23.Translate=true +0.Args=--login -i +22.Name=--help (WSL) +21.Args=--distribution Displays a list of available distributions for install with 'wsl --install'. +3.Args=--distribution Arguments\: +6.Args=--distribution the recommended features will be installed along with the default distribution. +9.Args=--distribution Options\: +20.Path=C\:\\WINDOWS\\System32\\wsl.exe +23.Path=C\:\\WINDOWS\\System32\\wsl.exe +2.Path=C\:\\WINDOWS\\System32\\wsl.exe +7.Name=To view the default distribution as well as a list of other valid distributions, (WSL) +20.Translate=true +16.Path=C\:\\WINDOWS\\System32\\wsl.exe +23.Name=Display usage information. (WSL) +8.Translate=true +17.Path=C\:\\WINDOWS\\System32\\wsl.exe +3.Path=C\:\\WINDOWS\\System32\\wsl.exe +13.Translate=true +1.Translate=true +14.Args=--distribution Examples\: +8.Name=use 'wsl --list --online'. (WSL) +12.Args=--distribution Arguments\: +1.Path=C\:\\WINDOWS\\System32\\wsl.exe +15.Args=--distribution wsl --install -d Ubuntu +7.Translate=true +6.Name=the recommended features will be installed along with the default distribution. (WSL) +9.Name=Options\: (WSL) +12.Translate=true +19.Name=Options\: (WSL) +0.Translate=true +21.Name=Displays a list of available distributions for install with 'wsl --install'. (WSL) +19.Translate=true +10.Name=--distribution, -d [Argument] (WSL) +2.Args=--distribution Usage\: wsl.exe [Argument] +22.Translate=true +22.Path=C\:\\WINDOWS\\System32\\wsl.exe +8.Args=--distribution use 'wsl --list --online'. +3.Translate=true +11.Translate=true +10.Args=--distribution --distribution, -d [Argument] +0.Path=C\:\\Program Files\\Git\\bin\\sh.exe +4.Path=C\:\\WINDOWS\\System32\\wsl.exe +6.Translate=true +7.Args=--distribution To view the default distribution as well as a list of other valid distributions, +20.Name=--online, -o (WSL) +21.Path=C\:\\WINDOWS\\System32\\wsl.exe +5.Name=Install Windows Subsystem for Linux features. If no options are specified, (WSL) +1.Args=--distribution Copyright (c) Microsoft Corporation. All rights reserved. +11.Name=Specifies the distribution to be downloaded and installed by name. (WSL) +18.Path=C\:\\WINDOWS\\System32\\wsl.exe +21.Translate=true +12.Path=C\:\\WINDOWS\\System32\\wsl.exe +9.Translate=true +17.Name=--list, -l [Options] (WSL) +14.Name=Examples\: (WSL) +17.Translate=true +13.Args=--distribution A valid distribution name (not case sensitive). +16.Args=--distribution wsl --install --distribution Debian +14.Translate=true +19.Args=--distribution Options\: +15.Path=C\:\\WINDOWS\\System32\\wsl.exe diff --git a/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/dialog_settings.xml new file mode 100644 index 0000000..cad2da0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/dialog_settings.xml @@ -0,0 +1,13 @@ + +
+
+ +
+
+
+
+ +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml new file mode 100644 index 0000000..50f1edb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.intro/introstate b/.metadata/.plugins/org.eclipse.ui.intro/introstate new file mode 100644 index 0000000..02f134f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.intro/introstate @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml new file mode 100644 index 0000000..17d1b68 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml @@ -0,0 +1,22 @@ + +
+
+ + + + + + + + + + +
+
+ + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml new file mode 100644 index 0000000..e107ceb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml @@ -0,0 +1,22 @@ + +
+
+ + + + + +
+
+ + + + + + + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml new file mode 100644 index 0000000..3f8905e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.wildwebdeveloper.xml/system-catalog.xml b/.metadata/.plugins/org.eclipse.wildwebdeveloper.xml/system-catalog.xml new file mode 100644 index 0000000..1bb5695 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wildwebdeveloper.xml/system-catalog.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.wst.common.project.facet.core/prefs.xml b/.metadata/.plugins/org.eclipse.wst.common.project.facet.core/prefs.xml new file mode 100644 index 0000000..9a2f39d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.common.project.facet.core/prefs.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.wst.internet.cache/1945877196.cache b/.metadata/.plugins/org.eclipse.wst.internet.cache/1945877196.cache new file mode 100644 index 0000000..0a1a564 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.internet.cache/1945877196.cache @@ -0,0 +1,2437 @@ + + + + + + This document contains the test assertions for the WS-I Attachments Profile 1.0 + combined with the test assertions for the WS-I Simple Soap Binding Profile 1.0 and WS-I Basic Profile 1.1. + These test assertions are used by the analyzer testing tool to determine if + a Web service is conformant to the Attachments Profile 1.0 in conjunction with the Simple Soap Binding Profile 1.0 and the Basic Profile 1.1. + + + + + + + + David Lauzon + Shrikant Wagh + + + Simeon Greene (Oracle Corporation), + Narendra Patil (Optimyz Software, Inc.), + Keith Stobie (Microsoft Corporation) + + + + + + + + + + + The Basic Profile requires support for UDDI V2.0. + + + For a candidate uddi:tModel + The uddi:tModel element uses WSDL as the description language and +the uddi:tModel contains a reference to a WSDL binding. +The uddi:overviewDoc/uddi:overviewURL element contains a reference to a WSDL definition, +which uses a namespace of http://schemas.xmlsoap.org/wsdl/. The uddi:overviewURL may +use the fragment notation to resolve to a specific wsdl:binding. + The uddi:tModel does not reference a WSDL based Web service +definition or the uddi:tModel does not reference a wsdl:binding. + {tModel key}{uddi:overviewDoc} + + definitions + + + + R3002 + R3010 + R3011 + + + + + For a candidate uddi:bindingTemplate + The uddi:bindingTemplate element contains a uddi:accessPoint element, with a non-empty value. + The uddi:bindingTemplate does not contain an uddi:accessPoint element, or it is empty. + bindingTemplate key + + + + R3100 + + + + + For a candidate uddi:tModel + The uddi:tModel is categorized using the uddi:types taxonomy, as "wsdlSpec": the uddi:keyedReference element has a tModelKey attribute value equal to "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4" and a keyValue attribute value equal to "wsdlSpec". + + The uddi:tModel is not categorized using the uddi:types taxonomy with a categorization of "wsdlSpec". + {tModel key}{categoryBag} + + + + R3003 + + + + + Driver testable. + Driver testable. + Driver testable. + + + + + All of these profile requirements are testable only by using a driver test program, since a test assertion would +require application-level knowledge of the message exchange. + + + + + + + + + + + + The Basic Profile requires support for XML Schema 1.0 and WSDL 1.1. + + + For a candidate Web service definition within a WSDL document with a XML declaration statement. + The XML declaration statement uses UTF-8 or UTF-16 for the encoding. + XML declaration statement within WSDL document does not use expected encoding (UTF-8 or UTF-16). + XML declaration statement. + + + + R4003 + + checks WSDL encoding. + + + For a candidate wsdl:types element within a WSDL document which imports an XML schema directly or indirectly. + The imported schema uses UTF-8 or UTF-16 for the encoding. + The XML declaration statement within the imported XML Schema does not +use expected encoding (UTF-8 or UTF-16). + XML declaration statement. + + + + R2010 + + + + + For a candidate wsdl:definitions element within a WSDL document. + The wsdl:definitions is a well-formed XML 1.0 document. + The wsdl:definitions is not a well-formed XML 1.0 document. + Error message from the XML parser + + + + R4004 + R0001 + + 1st step in a 3-phase verification process: XML+namespace+schemavalid. + + + For a candidate wsdl:types element, with XML schema import elements + Each XML schema import statement (xsd:import) is only used to directly reference an XML schema definition, which has "schema" from XML namespace "http://www.w3.org/2001/XMLSchema" as root element. It does not contain a reference to another document embedding the XML schema definition (e.g. WSDL). + An XML schema import element references something other than an XML schema definition: the referenced element does not have "schema" from XML namespace "http://www.w3.org/2001/XMLSchema" as root element. + Defective XML schema import element. + + + + R2002 + R2004 + + NOTE: XML schema definitions within a WSDL document must adhere to the same rules as XML schema definitions which appear in separate XSD files. For example, two WSDL definitions can not contain the same complex type definition for the same targetNamespace. + + + For a candidate wsdl:types element within a WSDL document, which imports an XML schema directly or indirectly + The imported XML schema is a well-formed XML 1.0 document and if it contains an +XML declaration, it is version 1.0. + The imported XML schema is not a well-formed XML 1.0 document. + {Error message from the XML parser}{imported XML schema} + + + BP2102 + + + R2011 + + + + + For a candidate wsdl:definitions element within a WSDL document. + The wsdl:definitions namespace has value: http://schemas.xmlsoap.org/wsdl/. + The wsdl:definitions namespace is not: http://schemas.xmlsoap.org/wsdl/. + + + + + R0001 + + 2nd step in a 3-phase verification process: XML+namespace+schemavalid. + + + For a candidate description within a WSDL document + If it uses the WSDL namespace, then it conforms to the schema located at http://ws-i.org/profiles/basic/1.1/wsdl-2004-08-24.xsd, and if it uses the WSDL-SOAP binding namespace then it conforms to the schema located at http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd. + WSDL definition does not conform to the schema located at http://ws-i.org/profiles/basic/1.1/wsdl-2004-08-24.xsd for some element using the WSDL-SOAP binding namespace, or does not conform to the schema located at http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd for some element using the WSDL namespace. + Error message from the XML parser. + + + + R2029 + R2028 + R0001 + + A description using WSDL-SOAP namespace is prefixed soapbind: in this doc as well as in the profile def. This verification is 3rd step in a 3-phase verification process: XML+namespace+schemavalid. + + + For a candidate description within a WSDL document + The candidate description does not contain the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + The candidate description contains the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + + + + BP2703 + + + R1034 + R4005 + + + + + For a candidate Web service definition with wsdl:types elements + The wsdl:types elements occur either as first children in the WSDL namespace of the wsdl:definitions element, or they are only preceded by wsdl:documentation element(s) and/or wsdl:import(s) element(s). + wsdl:types element(s) in the WSDL namespace of the wsdl:definitions element were preceded by child elements other than wsdl:documentation or wsdl:import elements. + + + + BP2703 + + + R2023 + R2030 + + + + + For a candidate wsdl:operation in a wsdl:portType definition + The wsdl:operation element is either a WSDL request/response or a one-way operation (no Notification or Sollicit-Response). + wsdl:operation was not a request/response or one-way operation. + Operation. + + + BP2703 + + + R2303 + + + + + For a candidate wsdl:portType definition + name attributes of Operations are unique in the wsdl:portType definition + name attributes are not unique within the portType definition. + list of duplicate name(s) and of elements that use them. + + + BP2703 + + + R2304 + + + + + For a candidate wsdl:binding element, if the style attribute of the contained soapbind:binding is "rpc" +and the use attribute is "literal". + The namespace attribute is specified on all soapbind:body elements and the value of the +namespace attribute is an absolute URI. + A rpc-literal binding contains soapbind:body element(s) that either does not have a namespace attribute, or has a namespace attribute value that is not an absolute URI. + soapbind:body elements that failed the assertion + + + BP2404 + BP2406 + + + R2717 + + + + + For a candidate wsdl:binding element + The wsdl:input element and wsdl:output element of each operation uses the attribute name "part" with a Schema type of "NMTOKEN" and does not use "parts", for both soapbind:header elements and soapbind:headerfault elements. + The wsdl:input element or wsdl:output element of an operation does not use the attribute name "part" with a Schema type of "NMTOKEN" for soapbind:header elements or soapbind:headerfault elements, or it uses "parts". + wsdl:input element or wsdl:output element of the defective operation. + + + BP2703 + + + R2720 + R2749 + + Generally BP2703 will fail as a pre-req first because this will not pass a specialized schema check. + + + For a candidate wsdl:binding element + The wsdl:binding element has a soapbind:binding child element. + The wsdl:binding element does not use a soapbind:binding element as defined in section "3 SOAP Binding." of the WSDL 1.1 specification. + wsdl:binding. + + + BP2703 + + + R2401 + + + + + For a candidate wsdl:binding element + the name attribute is specified on the soapbind:fault element. + Defective soapbind:fault element: the name attribute is not specified on the soapbind:fault element. + Defective soapbind:fault element + + + + R2721 + + + + + For a candidate wsdl:binding element + the name attribute that is specified on the soapbind:fault element matches the value specified on the parent element wsdl:fault. + Defective soapbind:fault element: the "name" attribute value does not match the value of the "name" attribute on the parent element wsdl:fault. + Defective soapbind:fault element + + + + R2754 + + + + + For a candidate wsdl:binding element + The contained soap:binding element has a "transport" attribute, which has value: http://schemas.xmlsoap.org/soap/http. + Transport attribute of the soap:binding does not contain http://schemas.xmlsoap.org/soap/http. + soap:binding element. + + + BP2703 + BP2402 + + + R2701 + R2702 + + + + + For a candidate wsdl:binding element, if the style attribute of the binding is "document" and use is "literal" + The binding (in soapbind:body elements) only refers to part elements that have been defined using the "element" attribute. + A document-literal binding contains soapbind:body element(s) that refer to message part element(s) that do not have the element attribute. + soapbind:body element(s) that have non "element" parts attributes. + + + BP2404 + BP2406 + + + R2204 + + + + + For a candidate wsdl:binding element, if the use attribute is specified on the soapbind:body, soapbind:fault, soapbind:header, or soapbind:headerfault elements. + The use attribute has a value of "literal". + The use attribute of a soapbind:body, soapbind:fault, soapbind:header and soapbind:headerfault does not have value of "literal". + Defective soapbind:body, soapbind:fault, soapbind:header, or soapbind:headerfault elements. + + + BP2703 + + + R2706 + R2723 + R2707 + + R2707 is not the verified Req, but an assumed Req for this verification. + + + For a candidate wsdl:binding element, if the "style" attribute of the contained soap:binding is "document" and use attribute is "literal" + The "namespace" attribute is not specified in any contained soapbind:body, soapbind:header, soapbind::headerfault, soapbind:fault elements. + A document-literal binding has the "namespace" attribute specified in some soapbind:body, soapbind:header, soapbind::headerfault, soapbind:fault element. + Contained element with namespace attribute. + + + BP2404 + BP2406 + + + R2716 + + + + + For a candidate wsdl:binding element, if the "style" attribute of the contained soap:binding is "rpc" and use attribute is "literal" + The binding (in soapbind:body elements) only refers to part elements that have been defined using the "type" attribute. + A rpc-literal binding contains soapbind:body element(s) that refer to message part element(s) that do not have the type attribute. + {binding}{message with failed part} + + + BP2404 + BP2406 + + + R2203 + + + + + For a candidate wsdl:operation with a parameterOrder attribute, if referred to by a candidate rpc-literal wsdl:binding element + The parameterOrder attribute omits at most 1 part from an output wsdl:message. + An operation associated with an rpc-literal binding has a parameterOrder attribute that omits more than 1 part. + {defective portType}{output wsdl:message} + + + + R2305 + + + + + For a candidate wsdl:binding + The "style" attribute of each operation in the contained soap:binding has the same value of "document" or "rpc", for all operations of the wsdl:binding. + The "style" attribute of an operation in soap:binding, does not have the same value of "document" or "rpc", as other operations of the binding. + defective soap:binding element. + + + BP2404 + + + R2705 + R2706 + + + + + For a candidate wsdl:definition, if it contains wsdl:import statements + Each wsdl:import statement is only used to import another WSDL description. + A wsdl:import element does not contain a reference to another WSDL description. + wsdl:import element(s) that does not reference a WSDL description. + + + BP2703 + + + R2001 + + + + + For a candidate wsdl:import element + The "location" attribute is specified for the wsdl:import element, and has a non-empty value. + A wsdl:import element does not have a "location" attribute, or has an empty value for the location attribute. + Defective wsdl:import element. + + + + R2007 + + + + + For a candidate wsdl:import element + The "namespace" attribute's value is not a relative URI. + The wsdl:import element's "namespace" attribute value is a relative URI. + Defective wsdl:import element. + + + BP2703 + + + R2803 + + + + + + For each a candidate wsdl:definitions + For the referenced definitions as well as all imported descriptions, The XML schema import statement is only used within an xsd:schema element. + A XML schema import element was found outside of an xsd:schema element. + Defective XML schema import element. + + + + R2003 + + This assertion is processed once for each WSDL description which fulfills the context criteria. The target for this assertion is the definitions element, because the XML schema import element might be specified anywhere within a WSDL document. + + + For a candidate wsdl:import + The targetNamespace attribute on the wsdl:definitions element for the imported WSDL description has the same value as the namespace attribute on the wsdl:import element that imported the WSDL description. + The targetNamespace attribute on the wsdl:definitions element for an imported WSDL description does not have the same value as the namespace attribute on the wsdl:import element that imported the WSDL description. + wsdl:import element. + + + BP2101 + + + R2005 + + + + + For a candidate wsdl:definitions with wsdl:import elements + wsdl:import elements occur either as first children elements in the WSDL namespace of the wsdl:defintitions element, or they are only preceded by wsdl:documentation elements. + A wsdl:import element in the WSDL namespace under the wsdl:definitions element, is preceded by child elements other than wsdl:documentation elements. + Display the WSDL import element(s) that failed the assertion. + + + + R2022 + R2030 + + + + + For a candidate wsdl:definitions + Every QName in the WSDL document that is not referring to a schema component, is either using the target namespace of this WSDL or the target namespace of a directly imported WSDL component. + A QName reference that does not refer to a schema component, is using neither the target namespace of this WSDL nor the target namespace of a directly imported WSDL component. + Defective QName(s). + + + + R2101 + + This assertion is processed once for each WSDL description which fulfills the context criteria. Only direct WSDL imports are considered for QName resolution. Note that this test does not require resolving the qualified element itself in the imported namespace: only the namespace is verified. Some sub cases of R2101 related to schema target namespaces, are not handled here and are covered by another TA covering R2102 (BP2417). + + + For a candidate wsdl:definitions + Every QName in the WSDL document and its imports, that is referring to a schema component, uses the namespace defined in the targetNamespace attribute on the xs:schema element, or a namespace defined in the namespace attribute on an xs:import element within the xs:schema element. + A QName reference that is referring to a schema component, uses a namespace not defined in the targetNamespace attribute on the xs:schema element, or in the namespace attribute on an xs:import element within the xs:schema element. + Defective QName(s). + + + + R2102 + R2101 + + This assertion is processed once for each WSDL description which fulfills the context criteria. Only the subcases of R2101 that are related to schema imports are covered by this test, as these overlap with R2102 requirements. + + + For a candidate wsdl:types element containing an xsd:schema element + The xsd:schema element contains a targetNamespace attribute with a valid and non-null value unless the xsd:schema element has xsd:import and/or xsd:annotation as its only child element(s). + A xsd:schema element contained in a wsdl:types element does not have a targetNamespace attribute with a valid and non-null value, while having child element(s) other than xsd:import or xsd:annotation. + Defective xsd:schema element(s). + + + + R2105 + + + + + For a candidate wsdl:types + The type soapenc:Array does not appear in these declarations, and the wsdl:arrayType attribute is not used in the type declaration. + An Array declaration uses - restricts or extends - the soapenc:Array type, or the wsdl:arrayType attribute is used in the type declaration. + Defective declaration(s). + + + + R2110 + R2111 + + R2110 and R2111 have been interpreted as applying to any declaration, as we cannot assume the intent of declaring arrays, which is untestable. + + + For a candidate wsdl:types that is used by an rpc-literal binding + The declaration does not use the naming convention ArrayOfXXX. + A declaration is using the convention ArrayOfXXX. + Defective declaration(s). + + + + R2112 + + R2112 has been interpreted as applying to any declaration, as we cannot assume the intent of declaring arrays, which is untestable. However, R2112 should only concern "wrapper elements", i.e. RPC-lit cases. The narrowing of the context here, is not sufficient to restrict properly the application of this TA. + + + For a candidate wsdl:binding, which contains a document-literal soap:binding + If the "parts" attribute is present, then the soapbind:body element(s) have at most one part listed in the parts attribute. + One or more soapbind:body element(s) in a document-literal soap:binding does not have at most one part listed in the parts attribute. + Defective soapbind:body element(s). + + + + R2201 + + + + + For a candidate wsdl:binding, with a style "rpc" attribute and containing at least a soapbind:body element + No wsdl:part referred by such a soapbind:body element is defined using the "element" attribute. + The referred wsdl:part element uses the "element" attribute in an rpc-literal soapbind:body. + {soapbind:body}{wsdl:part element(s)} + + + + R2207 + + + + + For a candidate wsdl:binding element + When they contain references to message parts, the soapbind:header, soapbind:headerfault and soapbind:fault elements only refer to wsdl:part element(s) that have been defined using the "element" attribute. + The soapbind:header, soapbind:headerfault or soapbind:fault elements refer to wsd:part element(s) that are not defined using only the "element" attribute. + Defective wsdl:binding and wsdl:part elements. + + + + R2205 + + + + + For a candidate wsdl:message + An "element" attribute on any wsdl:part element refers to a global element declaration. + A wsdl:message element containing a wsdl:part element that uses the "element" attribute does not refer, via that attribute, to a global element declaration. + Defective wsdl:message element. + + + + R2206 + + + + + For a candidate wsdl:message element + The wsdl:message element does not contain part elements that use both "type" and "element" attributes. + A wsdl:message element has at least one wsdl:part element that contains both type and element attributes. + Defective wsdl:message element. + + + + R2306 + + + + + For a candidate wsdl:binding element, referred to by an rpc-literal soap:binding + The rpc-literal binding does not have a namespace attribute specified on a contained soapbind:header, soapbind:headerfault, and soapbind:fault element. + An rpc-literal binding has the namespace attribute specified on contained soapbind:header, soapbind:headerfault and soapbind:fault elements. + {Defective wsdl:binding}{defective soapbind:header, soapbind:headerfault, or soapbind:fault element} + + + BP2017 + BP2406 + + + R2726 + + + + + For a candidate wsdl:binding element + The list (or set) of wsdl:operation elements for the contained wsdl:binding is the same as the list of wsdl:operations for the referred wsdl:portType. + A wsdl:binding does not have the same list of wsdl:operations as the wsdl:portType to which it refers. + {unmatching wsdl:binding element}{unmatching portType element} + + + + R2718 + + + + + For a candidate wsdl:binding element + Every wsdl:part from each wsdl:message in the associated wsdl:portType is referenced either by the soapbind:body, soapbind:header, soapbind:fault, or soapbind:headerfault. + A wsdl:binding does not bind every wsdl:part of a wsdl:message in the wsdl:portType to which it refers to one of soapbind:body, soapbind:header, soapbind:fault or soapbind:headerfault. + {Defective wsdl:binding element}{message with part(s) unbound} + + + BP2118 + + + R2209 + + + + + For a candidate wsdl:binding, which is of type document-literal + If it does not specify the parts attribute on a soapbind:body element, the corresponding abstract wsdl:message defines zero or one wsdl:part. + A document-literal binding which does not specify the parts attribute, has more than one wsdl:part in the associated wsdl:message element. + Defective wsdl:binding element. + + + BP2404 + + + R2210 + + + + + For a candidate wsdl:binding + Each operation referenced by the binding results in a unique wire signature. + A binding has operations that are not unique. + Defective wsdl:operation element(s). + + + + R2710 + + + + + For a candidate wsdl:types element + The data type definition if any within the wsdl:types element is an XML schema definition defined in the XML Schema 1.0 Recommendation with the namespace URI "http://www.w3.org/2001/XMLSchema". + A wsdl:types element contained a data type definition that is not an XML schema definition. + Defective data type definition. + + + + R2801 + + + Validating the data type definitions includes any imported XML schema definitions. + + + + For a candidate wsdl:definitions, if it contains a wsdl:port, wsdl:binding, wsdl:portType, wsdl:operation, +or wsdl:message that claims conformance to the Profile. + Contained WSDL extension elements do not use the wsdl:required attribute value of "true". + An extension element within a WSDL element that claims conformance to the Basic Profile has a wsdl:required attribute with a value of "true". + Display the extension element that failed the assertion. + + + + R2026 + + + + + For a candidate wsdl:definitions element containing an extension element or attribute from a namespace other than "http://schemas.xmlsoap.org/wsdl/soap/" or "http://schemas.xmlsoap.org/wsdl/mime/". + The WSDL contains an extension element or attribute that does not belong to the "http://schemas.xmlsoap.org/wsdl/soap/" or "http://schemas.xmlsoap.org/wsdl/mime/" namespace. + The use of a WSDL extension element or attribute from a namespace other than "http://schemas.xmlsoap.org/wsdl/soap/" or "http://schemas.xmlsoap.org/wsdl/mime/" may require out of band negotiation. + The use of a WSDL extension element or attribute from a namespace other than "http://schemas.xmlsoap.org/wsdl/soap/" or "http://schemas.xmlsoap.org/wsdl/mime/" may require out of band negotiation. + + + + E0013 + + Extension elements other than those belonging to one of the following namespaces (...) are considered extensibility points. + + + + For a candidate wsdl:import element, where the location attribute or the namespace attribute has a value that is a relative URI, or a for soap:address element where the location attribute is a relative URI. + The use of a relative URI as the value for a wsdl:import location or namespace attribute, or for a soap:address location attribute may require out of band coordination. + A wsdl:import location or namespace attribute, or a soap:address location attribute is a relative URI. + The element(s) in question. + + + + E0016 + + + + + + For an XML schema definition defined in the wsdl:types element, or imported directly or indirectly by a schema definition defined in the wsdl:types element, which contains any schema annotation elements. + An XML schema definition defined in the wsdl:types element, or imported directly or indirectly by a schema definition defined in the wsdl:types element, may use schema annotation elements as an extensibility mechanism. + An XML schema defined in the wsdl:types element, or imported directly or indirectly by a schema defined in the wsdl:types element, contains annotation elements. + The annotation elements included in the schema. + + + BP2202 + BP2011 + + + E0017 + + Schema annotations are an extensibility point. + + + + Driver testable. + Driver testable. + Driver testable. + + + + R2709 + + All of these profile requirements are testable only by using a driver test program, since a test assertion would +require application-level knowledge of the message exchange. + + + Not testable. + Not testable. + Not testable. + + + + R2025 + R2027 + R2008 + R4002 + R2200 + R2202 + R2208 + R2302 + R2750 + R2707 + R2711 + R2727 + R2719 + R2722 + R2724 + R2725 + R2741 + R2742 + R2743 + R2747 + R2748 + R2751 + R2752 + R2800 + R2009 + R2114 + R2030 + E0014 + E0015 + + All of these profile requirements are NOT testable, or NOT testable using the + current test tools. For example, some of these test assertions represent + capabilities which can not be validated. + Note, BP2200 is NOT testable using the current test tools because any + BOM detected within a WSDL document is pre-processed by the WSDL + reader/parser and hence becomes inaccessible. + Note, R2724 could be tested. If a request is inconsistent with the WSDL for the request, + we could flag returning a non-error response. We currently do not check the status of a + request when we are processing the response. However this is within the scope of the test-tools + and we are tracking this omission defect/feature in bugzilla RE: bug#: 8. + + + + For a candidate wsdl:binding element + The wsdl:binding binds every wsdl:part of a wsdl:message in the wsdl:portType to which it refers to one of soapbind:body, soapbind:header, soapbind:fault or soapbind:headerfault. + A wsdl:part of a wsdl:message in the wsdl:portType to which it refers does not bind to one of soapbind:body, soapbind:header, soapbind:fault or soapbind:headerfault in the wsdl:binding. + wsdl:binding. + + + BP2703 + + + R2209 + + The essence of this assertion is captured in AP2941 but also allows binding to mime:content.. As such, we have disabled this assertion. + + + + For a candidate wsdl:binding element + Descendant elements and attributes in the wsdl:binding are not from the namespaces of WSDL MIME, HTTP GET/POST or DIME binding extensions. + A descendant element or attribute in the wsdl:binding is from a namespace of WSDL MIME, HTTP GET/POST or DIME binding extensions. + Defective descendant element or attribute + + + BP2402 + + + R9801 + + + Note this assertion, which originates from the SSBP TAD, is disabled in this document + since it treats the detection of a namespace for a WSDL MIME extension as a failure. + + The namespace for the WSDL MIME, HTTP GET/POST and DIME binding extensions respectively are assumed to be: + http://schemas.xmlsoap.org/wsdl/mime/ + http://schemas.xmlsoap.org/wsdl/http/ + http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/ + + + + + Not testable. + Not testable. + Not testable. + + + + R4001 + R9800 + R9802 + + All of these profile requirements are NOT testable, or NOT testable using the current test tools. For example, some of these test assertions represent capabilities which can not be validated. + + + + For a candidate wsdl:binding element + A description uses either the WSDL MIME Binding as described in WSDL 1.1 Section 5 or WSDL SOAP binding as described in WSDL 1.1 Section 3 on each of the wsdl:input or wsdl:output elements of a wsdl:binding. + A description uses neither the WSDL MIME Binding as described in WSDL 1.1 Section 5 nor WSDL SOAP binding as described in WSDL 1.1 Section 3 on each of the wsdl:input or wsdl:output elements of a wsdl:binding. + Defective wsdl:input or wsdl:output element + + + + R2901 + + + + + + For a candidate wsdl:binding with at least one mime:content element + The part attribute of each mime:content element in a wsdl:binding references + a wsdl:part element of a wsdl:message that is present in the respective wsdl:input or wsdl:output of the + corresponding wsdl:operation of the corresponding wsdl:portType. + A part attribute of a mime:content element in a wsdl:binding + does not reference a wsdl:part element of a wsdl:message that is present in the respective wsdl:input or + wsdl:output of the corresponding wsdl:operation of the corresponding wsdl:portType. + Defective wsdl:input or wsdl:output element + + + + R2903 + + + + + + For a candidate wsdl:binding with at least one mime:content element + The part attribute of each mime:content element in a wsdl:binding + does not reference a sub-component of a wsdl:part of the wsdl:message that is present in the + respective wsdl:input or wsdl:output of the corresponding wsdl:operation of the corresponding + wsdl:portType. + The part attribute of a mime:content element in a wsdl:binding references + a sub-component of a wsdl:part of a wsdl:message that is present in the respective + wsdl:input or wsdl:output of the corresponding wsdl:operation of the corresponding + wsdl:portType. + Defective wsdl:input or wsdl:output element + + + AP2903 + + + R2904 + + + + + + For a candidate wsdl:binding containing a mime:multipartRelated element + A non-root MIME part in a wsdl:binding does not contain a soapbind:header element. + A non-root MIME part in a wsdl:binding contains a soapbind:header element. + The defective mime:part + + + AP2911 + + + R2906 + R2905 + + + + + + For a candidate wsdl:binding containing a mime:multipartRelated element + Each MIME part in a description is defined using an element with a local name of part in the namespace of the WSDL MIME Binding extension. + A MIME part in a description is not defined using an element with a local name of part in the namespace of the WSDL MIME Binding extension. + Defective MIME part(s) + + + + R2907 + + + + + + For a candidate wsdl:binding containing a mime:multipartRelated element + The mime:part element in a DESCRIPTION does not have a name attribute. + The mime:part element in a DESCRIPTION has a name attribute. + Defective MIME part(s) + + + + R2908 + + + + + + For a candidate wsdl:binding with at least one mime:content element + Multiple mime:content child elements of a mime:part element in a desciption reference the same wsdl:part. + Multiple mime:content child elements of a mime:part element in a desciption do not reference the same wsdl:part. + Defective mime:content element of mime:part + + + + R2909 + + + + + + For a candidate wsdl:binding with at least one mime:content element + A mime:content in a DESCRIPTION references a wsdl:part that is defined using either the type attribute or the element attribute. + A mime:content in a DESCRIPTION does not reference a wsdl:part that is defined using either the type attribute or the element attribute. + Defective mime:content element of mime:part + + + + R2910 + + + + + + For a candidate wsdl:binding containing a mime:multipartRelated element + The mime:multipartRelated elements in wsdl:input and wsdl:ouput elements of operations in a wsdl:binding, contain exactly one mime:part child element that contains a soapbind:body child element. + + A mime:multipartRelated element in a wsdl:input or wsdl:output element of an operation in a wsdl:binding, contains greater or less than one mime:part child element that contains a soapbind:body child element. + + The defective mime:multipartRelated element + + + + R2911 + + + + + + For a candidate wsdl:binding containing a mime:multipartRelated element + A wsdl:fault element in a description does not have mime:multipartRelated element as its child element. + A wsdl:fault element in a description has mime:multipartRelated element as its child element. + Defective wsdl:fault element + + + + R2930 + + + + + + For a candidate wsdl:binding containing a mime:multipartRelated element + In a description, a wsdl:part defined with the ref:swaRef schema type is bound to a soapbind:body, or a soapbind:header in a MIME binding. + In a description, a wsdl:part defined with the ref:swaRef schema type is not bound to a soapbind:body, or a soapbind:header in a MIME binding. + Defective MIME binding + + + + R2940 + R2905 + + + + + + For a candidate wsdl:binding + A wsdl:binding in a description binds every wsdl:part of a wsdl:message in the wsdl:portType to which it refers to one of soapbind:body, soapbind:header, soapbind:fault , soapbind:headerfault, or mime:content. + A wsdl:binding in a description does not bind every wsdl:part of a wsdl:message in the wsdl:portType to which it refers to one of soapbind:body, soapbind:header, soapbind:fault , soapbind:headerfault, or mime:content. + Defective wsdl:binding element + + + + R2941 + R2905 + + + + + + For a candidate wsdl:binding with at least one mime:content element + In a DESCRIPTION, if a wsdl:part element refers to a global element declaration (via the element attribute of the wsdl:part element) then the value of the type attribute of a mime:content element that binds that part is a content type suitable for carrying an XML serialization. + The value of the type attribute of a mime:content element that binds that part is not a content type suitable for carrying an XML serialization. + Defective mime:content element + + + + R2944 + + + + + + For a candidate wsdl:binding with at least one mime:content element + In a DESCRIPTION, a mime:content element includes the part attribute. + A mime:content element does not include the part attribute. + Defective mime:content element + + + + R2946 + + + + + + Driver testable. + Driver testable. + Driver testable. + + + + R2905 + R2943 + + All of these profile requirements are testable only by using a driver test program, since a test assertion would +require application-level knowledge of the message exchange. + + + For a candidate wsdl:binding + Not testable. + Not testable. + + + + R2947 + + All of these profile requirements are NOT testable, or NOT testable using the test tools. For example, some of these test assertions represent capabilities which can not be validated. + + + + + + + + + + + + + + + + + + + + + + + + The Basic Profile requires support for SOAP 1.1 and HTTP 1.0 or 1.1. + + + For a candidate request message in the message log file + The request message is a POST message, without any use of framework extension. + The message is not an HTTP POST message, or makes use of HTTP framework extension. + All HTTP headers. + + + + R1132 + R1108 + + + + + For a candidate request message in the message log file, when a SOAPAction header is present + The SOAPAction header contains a quoted string of any value, including "". + SOAPAction HTTP header does not contain a quoted string. + All HTTP headers. + + + + R1109 + + + + + For a candidate request message in the message log file, when a SOAPAction header is present + The SOAPAction header contains a quoted string that has same value as the value of the soapbind:operation/@soapAction attribute, and an empty string ("") if there is no such attribute. + SOAPAction header does not contain the correct string value. + {All HTTP headers}{soapAction value from the soap:binding}. + + binding + + + BP1006 + + + R2744 + R2745 + + + + + For a candidate message in the log file, that is either a POST HTTP request, or a response to a POST HTTP request + If it is a request, the arg #2 of POST is <HTTP/1.1>. If absent, first line of the body is: HTTP-Version = HTTP/1.1. If it is a response, it starts with <HTTP/1.1> + The message is not sent using HTTP/1.1. + All HTTP headers. + + + BP1002 + + + R1140 + + + + + For a candidate message in the log file, that is either a POST HTTP request, or a response to a POST HTTP request + If it is a request, the arg #2 of POST is <HTTP/1.1> or <HTTP/1.0>. If absent, first line of the body is: HTTP-Version = HTTP/1.1. (or HTTP/1.0). If it is a response, it starts with <HTTP/1.1> or <HTTP/1.0> + The message is not sent using HTTP/1.1 or HTTP/1.0. + All HTTP headers. + + + + R1141 + + + + + For a candidate response message in the message log file, which is bound to a One-Way wsdl:operation + It does not contain a soap:Envelope: the HTTP entity-body is empty + One-Way operation response contains a soap:Envelope (HTTP entity-body must be empty) + + + requestMessage + operation + + + + R2714 + + Need the request to determine if it is a One-Way. +We could have targeted the request as well (as primary entry), and correlate with the response. + + + For a candidate response message in the log file, that does not contain a SOAP message and that does not contain an HTTP 4xx status code + The response message, if successfully processed at HTTP level, is sent using either a "200 OK" or "202 Accepted" HTTP status code. + A response message without a SOAP message, is not using either a "200 OK" or +"202 Accepted" HTTP status code, though successful at HTTP level. + Complete message. + + requestMessage + + + + R1112 + + This test assertion is targeted at one-way operations. + + + For a candidate response message in the message log file, associated with a request message that does not contain an HTTP POST method + The response contains a "405 Method not Allowed" HTTP status code. + The response message to a request that was not a POST message, did not contain an 405 HTTP status code. + Both the request and response message. + + requestMessage + + + + R1114 + + + + + For a candidate message in the message log file containing an HTTP Authentication header field with an authentication mechanism other than "Basic" or "Digest" + The message contains an HTTP Authentication header field with an authentication mechanism other than "Basic" or "Digest". + HTTP authentication allows for extension schemes, arbitrary digest hash algorithms and parameters. + + + + E0007 + + HTTP Authentication is an extensibility point for HTTP 1.1. + + + + For a candidate message in the message log file containing an HTTP Header field that is not from the following list of specified header fields: (http://www.mnot.net/drafts/draft-nottingham-http-header-reg-00.txt) + The message contains an HTTP Header field that is not from the following list of specified header fields: (http://www.mnot.net/drafts/draft-nottingham-http-header-reg-00.txt) + The message contains an HTTP Header field that is not from the following list of specified header fields: (http://www.mnot.net/drafts/draft-nottingham-http-header-reg-00.txt) + HTTP allows arbitrary headers to occur in messages. + + + + E0008 + + If all HTTP headers in a message are in the standardized list of draft-nottingham-http-header-reg-00 it will cause the informationalassertion 4104 to be notApplicable; otherwise 4101 will pass and headers not in the draft-nottingham-http-header-reg-00 will be listed. + + + + For a candidate message in the message log file containing a Content-encoding HTTP header field with a value other than "gzip", "compress" or "deflate" + The contained Content-encoding HTTP header field has a value other than "gzip", "compress" or "deflate". + The Content-encoding HTTP header field has a value other than "gzip", "compress" or "deflate". + The set of content-codings allowed by HTTP is open-ended. + + + + E0010 + + Any Content-encoding header field with a value other than the specified list is considered to be an extensibility point. + + + + For a candidate response message in the message log file containing a transfer-encoding HTTP header field with a value other than "chunked" + The contained transfer-encoding HTTP header field has a value other than "chunked". + The contained transfer-encoding HTTP header field has a value other than "chunked". + Any Transfer-encoding header field with a value other than chunked is considered to be an extensibility point. + + + + E0011 + + Any Transfer-encoding header field with a value other than chunked is considered to be an extensibility point. + + + + For a request message containing an Upgrade header field in the HTTP Headers. + The request message contains an Upgrade header field in the HTTP Headers. + The message contains an Upgrade header field in its HTTP Headers. + The Upgrade header field is considered an HTTP Extensibility point. + + + + E0012 + + The Upgrade header field is considered an HTTP Extensibility point. + + + + Driver testable. + Driver testable. + Driver testable. + + + + + All of these profile requirements are testable only by using a driver test program, since a test assertion would +require application-level knowledge of the message exchange. + + + Not testable. + Not testable. + Not testable. + + + + R1115 + R1122 + R1113 + R1119 + R1120 + R1121 + R1123 + R1124 + R1125 + R1127 + R1130 + R1131 + R1127 + R5000 + R5001 + R5010 + E0009 + E0019 + E0020 + E0021 + E0022 + E0023 + + All of these profile requirements are NOT testable. Some of these test assertions represent capabilities which +can not be validated. + + + For a candidate non-multipart/related message in the log file, which has a non-empty entity-body + + The logged SOAP envelope is a UTF-8 transcript of an envelope originally encoded as UTF-8 or UTF-16. + The HTTP Content-Type header's charset value is either UTF-8 or UTF-16. Looking at the messageContent + element of the logged message, either + (1) it has a BOM attribute which maps the charset value in the Content-Type header, or + (2) it has it has an XML declaration which matches the charset value in the Content-Type header, or + (3) there is no BOM attribute and no XML declaration, and the charset value is UTF-8. + + + Either + (1a) the message contains a Content-Type header but no charset value, or + (1b) the charset value is neither UTF-8 nor UTF-16, or + (2) there is a BOM attribute in the messageContent element, but its value does not match the charset value, or + (3) there is an XML declaration, and the charset value does not match its value, or + (4) there is no BOM attribute, no XML declaration, and the charset value in Content-Type header is not UTF-8. + Complete message. + + + + R1012 + R1018 + + + Note the context for this assertion which originated from the SSBP TAD, is more specific in + this document to ensure that it does not apply to multipart/related messages. + + The optional BOM attribute of the messagContent element is added by the Monitor into the log file, based on the original value in the HTTP payload. + + + + + For a candidate non-multipart/related message in the log file, with an HTTP entity-body. + The SOAP envelope is the exclusive payload of the HTTP entity-body. + The SOAP envelope is not the exclusive payload of the message HTTP entity-body. + The message in question. + + + + R9700 + + Note the context for this assertion which originated from the SSBP TAD, is more specific in this document to ensure that it does not apply to multipart/related messages. + + + + + For a non-multipart/related candidate message in the log file. + A message must have a "Content-Type" HTTP header field. The "Content-Type" HTTP header field must have a field-value whose media type is "text/xml". + The message either (1) did not have a "Content-Type" HTTP header field, or (2) the "Content-Type" HTTP header field had a field-value whose media type was something other than "text/xml" + The value of the media-type field, if any. + + + + R9702 + R9703 + + Note the context for this assertion which originated from the SSBP TAD, is more specific in this document to ensure that it does not apply to multipart/related messages. + + + + + Not testable. + Not testable. + Not testable. + + + + R1010 + R1019 + + All of these profile requirements are NOT testable. Some of these test assertions represent capabilities which can not be validated. + + + + For a candidate message + In a description, if the wsdl:input or wsdl:output element in the wsdl:binding specifies WSDL MIME binding, then the message can contain SOAP attachments. + The message cannot contain SOAP attachments because in a description the wsdl:output or wsdl:input element in wsdl:binding does not describe WSDL MIME binding. + SOAP message. + + operation + + + + R2902 + + + + + + For a candidate root-part of a multipart/related message + The entity body of the root-part of a multipart/related message is serialized using either UTF-8 or UTF-16 character encoding. + The entity body of the root-part of a multipart/related message is not serialized using either UTF-8 or UTF-16 character encoding. + root-part of a multipart/related message + + + + R2915 + + + + + + For a candidate message containing zero attachment parts + A message containing zero attachment parts is sent using a content-type of either "text/xml" as though a SOAP HTTP binding were used or "multipart/related" when the WSDL description for the message specifies the mime:multipartRelated element on the corresponding wsdl:input or wsdl:output element in its wsdl:binding. + A message containing zero attachment parts is not sent using a content-type of either "text/xml" as though a SOAP HTTP binding were used or "multipart/related" when the WSDL description for the message specifies the mime:multipartRelated element on the corresponding wsdl:input or wsdl:output element in its wsdl:binding. + SOAP message. + + operation + + + + R2917 + + + + + + For a candidate message + If the WSDL description lists at least one non-root MIME part, then the corresponding message has a Content-Type HTTP header field-value with a media-type of "multipart/related". + The WSDL description lists at least one non-root MIME part and the corresponding message does not have a Content-Type HTTP header field-value with a media-type of "multipart/related". + Incorrect Content-Type value in HTTP header + + operation + + + + R2925 + + + + + + For a candidate message + A message includes all of the MIME parts described by its WSDL MIME binding. + A message does not include all of the MIME parts described by its WSDL MIME binding. + SOAP message. + + operation + + + + R2926 + + + + + + For a candidate root-part of a multipart/related message + The entity body of the root-part of multipart/related message is a soap:Envelope. + The entity body of the root-part of multipart/related message is NOT a soap:Envelope. + root-part of a multipart/related message + + + + R2931 + + + + + + For a candidate message containing a Content-Type HTTP header field-value with a media type of "multipart/related" + In a message, the Content-Type HTTP header field-value has a "type" parameter with a value of "text/xml" when it has a media type of "multipart/related". + In a message, the Content-Type HTTP header field-value does not have a "type" parameter with a value of "text/xml" when it has a media type of "multipart/related". + SOAP message. + + + + R2932 + + + + + + For a candidate message + If a description binds a wsdl:message part to a mime:content element, then the corresponding MIME part's content-id field-value in a message must conform to the content-id part encoding. + A description binds a wsdl:message part to a mime:content element and the corresponding MIME part's content-id field-value in a message does not conform to the content-id part encoding. + SOAP message. + + operation + + + + R2933 + + + + + + For a candidate part of a multipart/related message + The Content-Transfer-Encoding field of a part in a multipart/related message has a value of "7bit", "8bit", "binary", "quoted-printable" or "base64". + The Content-Transfer-Encoding field of a part in a multipart/related message does not have a value of "7bit", "8bit", "binary", "quoted-printable" or "base64". + a part of a multipart/related message + + + + R2934 + + + + + + For a candidate part of a multipart/related message + The encoding of the body of a part in a multipart/related message conforms to the encoding indicated by the Content-Transfer-Encoding field-value, as specified by RFC2045. + The encoding of the body of a part in a multipart/related message does not conform to the encoding indicated by the Content-Transfer-Encoding field-value, as specified by RFC2045. + a part of a multipart/related message + + + + R2935 + + + + + + For a candidate multipart/related message + In a message, all MIME encapsulation boundary strings are preceded with the ascii characters CR (13) and LF (10) in that sequence. + In a message, all MIME encapsulation boundary strings are not preceded with the ascii characters CR (13) and LF (10) in that sequence. + SOAP message. + + + + R2936 + + + + + + For a candidate part of a multipart/related message that is bound to a mime:content that refers to global element declaration (via the element attribute of the wsdl:part element) + The bound message part is serialized within the MIME part as a serialization of an XML infoset whose root element is described by the referenced element. + The bound message part is not serialized within the MIME part as a serialization of an XML infoset whose root element is described by the referenced element. + a part of a multipart/related message + + operation + + + + R2942 + + + + + + For a candidate message + The Content-Type HTTP header field-value in a message is either "multipart/related" or "text/xml". + The Content-Type HTTP header field-value in a message is neither "multipart/related" nor "text/xml". + SOAP message. + + + + R2945 + + + + + + For a candidate multipart/related message containing non-root parts + The candidate multipart/related message contains non-root parts. + The candidate multipart/related message contains non-root parts. + There is no restriction on the type of any non-root part in a multipart/related message. + + + + E0001 + + + + + + For a candidate message + Not testable. + Not testable. + + + + R2912 + R2913 + R2916 + R2919 + R2921 + R2922 + R2923 + R2929 + + All of these profile requirements are NOT testable, or NOT testable using the test tools. For example, some of these test assertions represent capabilities which can not be validated. + + + + + + + +SOAP 1.1 defines a structure for transmitting messages, the envelope. The profile mandates the use of that structure.SOAP 1.1 defines a structure for transmitting messages, the envelope. The profile mandates the use of that structure. + + For a candidate response envelope containing a soap:Fault element + The contained soap:Fault element is defined in the wsdl:binding. + The response envelope contained soap:Fault element(s), but they +were not defined in the WSDL description. + Undefined soap:Fault element(s). + + binding + + + + R2740 + R2927 + + + + + For a candidate envelope containing a soap:Body element + No child element of soap:Body has a soap:encodingStyle attribute. + A child of the soap:Body element has a soap:encodingStyle attribute. + SOAP message + + + BP1701 + + + R1006 + R2927 + + + + + For a candidate envelope in a request message + The content of the envelope matches the definition in the WSDL document. In case of a doc-lit binding, the child element of soap:body is an instance of the global element declaration referenced by the corresponding wsdl:part bound to the envelope's soapbind:body element. If the message has "parts", the order of the part elements in the soap:body of the wired message, is same as that of the wsdl:partS, in the wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. + The content of the envelope does not match the wsdl:message definition. The order of parts in soap:body does not match the order of wsdl:partS in wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. Or the child element of soap:body is not an instance of the global element declaration referenced by the corresponding wsdl:part bound to the envelope's corresponding soapbind:body element. + Non-matching WSDL operation and envelope. + + operation + 1 + + BP1701 + BP1308 + + + R2301 + R2712 + R2927 + R2710 + R2742 + R2743 + R2748 + + R2710, R2742 R2743 and R2748 used as "assumed" reqts, not reqts to verify. The soap:encodingStyle verification done by pre-req BP1308 on children, is not done for grand-children (BP1318 could not be a pre-req) + + + For a candidate envelope in a response message, if it does not contain a soap:Fault + The content of the envelope matches the definition in the WSDL document. In case of an rpc-lit binding, the body contains a wrapper element that matches the operation name. In case of a doc-lit binding, the child element of soap:body is an instance of the global element declaration referenced by the corresponding wsdl:part bound to the envelope's soapbind:body element. If the message has "parts", the order of the part elements in the soap:body of the envelope, is same as that of the wsdl:partS, in the wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. + The content of the envelope does not match the wsdl:message definition. The order of parts in soap:body does not match the order of wsdl:partS in wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. Or it has a doc-lit binding but the child element of soap:body is not an instance of the global element declaration referenced by the corresponding wsdl:part bound to the envelope's corresponding soapbind:body element. Or it has an rpc-lit binding but no wrapper element. + Non-matching WSDL operation and envelope. + + requestEnvelope + operation + + + BP1701 + + + R2301 + R2712 + R2927 + R2710 + R2742 + R2743 + R2748 + + R2710, R2742 R2743 and R2748 used as "assumed" reqts, not reqts to verify. The test assertion also verifies the wrapper element in case of an rpc-binding (in a same way as BP1005 which could not be a pre-requisite due to a narrower context) + + + For a candidate envelope + The soap:body of the envelope does not contain the soapenc:arrayType attribute. + The soap:body of an envelope contains the soapenc:arrayType attribute. + SOAP envelope. + + + BP1701 + + + R2113 + R2927 + + R2113 has been interpreted as applying to any message body, as it is unclear how to narrow to serialized array declarations. The narrowing of the context here,may not be sufficient to restrict properly the application of this TA. + + + For a candidate envelope containing a "mustUnderstand" attribute + The "mustUnderstand" attribute in the envelope has one of two values: 1, 0. + The "mustUnderstand" attribute in an envelope has a value different from: 1, 0. + SOAP envelope, plus envelope of a request message if it is a response. + + + BP1701 + + + R1013 + R2927 + + + + + For a candidate envelope in a response message containing a soap:Fault element + The soap:Fault element is contained in an HTTP 500 message with "Server" Error code. + The soap:Fault message is not returned in an HTTP 500 message. + SOAP envelope. + + responseMessage + + + BP1701 + + + R1126 + R2927 + + + + + For a candidate envelope in a response message containing a soap:Fault element + The soap:Fault element does not have children other than soap:faultcode, soap:faultstring, soap:faultactor or soap:detail. + One or more soap:Fault child elements are not standard, i.e. is neither soap:faultcode, soap:faultstring, soap:faultactor nor soap:detail. + SOAP envelope + + + BP1701 + + + R1000 + R2927 + + + + + For a candidate envelope in a response message containing a soap:Fault element + The content of the soap:Fault element does not make use of the SOAP 1.1 dot notation, i.e. is a string without a dot character in it. + A soap:Fault element makes use of the SOAP 1.1 dot notation. + SOAP envelope + + + BP1701 + + + R1031 + R2927 + + + + + For a candidate envelope + The soap:Envelope, soap:Header, and soap:Body elements do not have any attributes in the namespace "http://schemas.xmlsoap.org/soap/envelope/" + A soap:Envelope, soap:Header, or soap:Body element has an attribute in the namespace "http://schemas.xmlsoap.org/soap/envelope/". + SOAP envelope + + + BP1701 + + + R1032 + R2927 + + + + + + For a candidate envelope + The SOAP envelope does not contain the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + The SOAP envelope contains the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + SOAP envelope + + + BP1701 + + + R1033 + R2927 + + + + + For a candidate envelope in a response message containing a soap:Fault element + The soap:Fault element children (soap:faultcode, soap:faultstring, soap:faultactor or soap:detail) are unqualified. + One or more soap:Fault child elements are qualified. + SOAP envelope + + + BP1701 + + + R1001 + R2927 + + + + + For a candidate envelope containing elements with namespace "http://schemas.xmlsoap.org/soap/envelope/" + The envelope contains elements in the namespaced "http://schemas.xmlsoap.org/soap/envelope/" namespace that do not have a soap:encodingStyle attribute. + The envelope contains one or more elements in the "http://schemas.xmlsoap.org/soap/envelope/" namespace that have asoap:encodingStyle attribute. + SOAP envelope + + + BP1701 + + + R1005 + R2927 + + + + + For a candidate non-fault envelope containing a soap:body with at least one grandchild, and is referred by an rpc-literal binding + The grandchild elements of soap:Body referred by an rpc-literal binding do not have a soap:encodingStyle attribute. + At least one grandchild of the soap:Body element referred by an rpc-literal binding has a soap:encodingStyle attribute. + SOAP envelope + + operation + + + BP1701 + BP1202 + + + R1007 + R2927 + + + + + For a candidate non-fault envelope containing a soap:body with at least one element, and that is referred by a binding style rpc-literal + The envelope has part accessor elements for parameters and return value, in no namespaces, but the descendants of these are namespace qualified as defined by the schema in which their types are defined. + The envelope has part accessor elements for parameters and return value, within namespaces, or the descendants of these elements are not namespace qualified as defined by the schema in which their types are defined. + + + binding + + + BP1701 + + + R2735 + R2737 + R2927 + + + + + For a candidate non-fault envelope containing a soap:body with at least one element, and that is referred by a binding style rpc-literal + Part accessor elements in the envelope do not have an xsi:nil attribute with a value of "1" or "true". + Envelope referenced by an rpc-literal binding has part accessor elements with an xsi:nil attribute with a value of "1" or "true". + + + binding + + + BP1701 + + + R2211 + R2927 + + + + + For a candidate non-fault envelope containing a soap:body with at least one element + The envelope contains exactly one part accessor element for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. + The content of the soap:Body element is inconsistent with its description. The envelope does not contain exactly one part accessor element for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. + + + binding + + + BP1701 + + + R2212 + R2927 + + + + + + For a candidate non-fault envelope containing a soap:Body element, and is referred by a doc-literal binding + The envelope has no element content in the soap:Body element if the value of the parts attribute of the soapbind:body is an empty string in the corresponding doc-literal description. + The soap:Body element must be empty when, in the corresponding doc-literal description, the value of the parts attribute of soapbind:body is an empty string. + SOAP envelope + + binding + + + BP1701 + + + R2213 + R2927 + + + + + + For a candidate non-fault envelope containing a soap:Body element, and is referred by a rpc-literal binding + The envelope does not contain any part accessor elements if the value of the parts attribute of the soapbind:body is an empty string in the corresponding rpc-literal description. + The content of the soap:Body element is inconsistent with its description. The envelope must not have any part accessor elements when, in the corresponding rpc-literal description, the value of the parts attribute of soapbind:body is an empty string. + SOAP envelope + + binding + + + BP1701 + + + R2214 + R2927 + + + + + + For a candidate non-fault envelope containing a soap:body with at least one element, and that is referred by a binding style rpc-literal + Each part accessor element in the envelope has a local name of the same value as the name attribute of the corresponding wsdl:part element. + The envelope referenced by an rpc-literal binding has a part accessor element with a local name that is not the same value as the name attribute of the corresponding wsdl:part element. + + + binding + + + BP1701 + + + R2755 + R2927 + + + + + + For a candidate non-fault envelope in a response message, that has a soap:body with at least a child element, and is +referenced by a rpc-literal binding to a WSDL request-response operation + The envelope has a wrapper element with a name equal to the name attribute on the wsdl:operation element suffixed with string "Response". + Wrapper element in the envelope does not have a value equal to the name attribute on the wsdl:operation element suffixed with string "Response". + + + requestEnvelope + binding + + + BP1601 + BP1202 + + + R2729 + R2927 + + Assume a correlation with WSDL binding entry is needed. + + + For an envelope in a response message containing a soap:Fault element with a faultcode child element + The soap:faultcode value in the soap:Fault element of the envelope is either one of: VersionMismatch, MustUnderstand, Client, Server, or is qualified by a namespace. + The soap:faultcode value in the soap:Fault element of the envelope is not one of: VersionMismatch, MustUnderstand, Client, Server, or is not qualified by a namespace. + SOAP envelope in a response message. + + + BP1701 + + + R1004 + R2927 + + If namespace qualified, the namespace is other than http://schemas.xmlsoap.org/soap/envelope/, per (assumed) conformance to SOAP. + + + For an envelope in a response message containing a soap:Fault element, if there is any qualified attribute for the detail element + The namespace of a qualified attribute appearing on the detail element in the soap:Fault +is a foreign namespace, different from "http://schemas.xmlsoap.org/soap/envelope/". + The soap:Fault message contains detail element with attributes qualified with a non-foreign namespace. + SOAP message. + + + BP1701 + + + R1003 + R2927 + + this is a narrowing of the schema, which allows any namespace. + + + For a candidate non-fault envelope in a response message + The message uses a "200 OK" HTTP status code. + The envelope of the response message does not contain a soap:Fault and the message does not use a "200 OK" HTTP status code. + Complete message. + + responseMessage + + + BP1701 + + + R1111 + R2927 + + + + + For a candidate envelope + The envelope conforms to the structure specified in SOAP 1.1 Section 4. + The envelope does not conform to the structure specified in SOAP 1.1 Section 4 + SOAP envelope. + + + + R9980 + R2927 + + + + + + For a candidate non-empty envelope + The soap:envelope and soap:body are well-formed XML 1.0 documents. + The soap:Envelope or soap:Body does not conform to XML 1.0. + {SOAP envelope}{any XML parser error messages} + + + + + R2927 + + Assumed in underlying spec, though no formal Rxxxx for it. 1st step in a 3-phase verification process: XMLvalid + namespace check + schemavalid. + + + For a candidate envelope + The envelope has a document element named "Envelope" with namespace http://schemas.xmlsoap.org/soap/envelope/. + The envelope does not use SOAP 1.1, i.e. does not have a document element named "Envelope" or a namespace value of http://schemas.xmlsoap.org/soap/envelope/. + SOAP envelope. + + + BP1601 + + + + R2927 + + Assumed in underlying spec, though no formal Rxxxx for it (run-time version of R2700). 2nd step in a 3-phase verification process: XMLvalid + namespace check + schemavalid. + + + For a candidate envelope containing a soap:body with at least one child element + Each child element (if any) of the soap:Body element is namespace qualified (not the grandchildren). + A child element of the soap:Body element is not namespace qualified. + SOAP envelope. + + + BP1701 + + + R1014 + R2927 + + + + + For a candidate envelope + The envelope conforms to the SOAP schema located at http://schemas.xmlsoap.org/soap/envelope/ + The envelope does not conform to the SOAP schema located at http://schemas.xmlsoap.org/soap/envelope/. + SOAP message. + + + BP1201 + + + + R2927 + + Assumed in underlying spec, though no formal Rxxxx for it. 3rd step in a 3-phase verification process: XMLvalid + namespace check + schemavalid. + + + For a candidate envelope in a response message, that is a part of a Request-Response operation where the request contains a soap:Envelope with a document element with name: "Envelope" and a namespace different than "http://schemas.xmlsoap.org/soap/envelope/". + A soap:Fault is generated as response. + A soap:Fault is not generated for a document element named "Envelope" that had namespace +different from: "http://schemas.xmlsoap.org/soap/envelope/" + + + requestEnvelope + operation + + + BP1701 + + + R1015 + R2927 + + + + + For a candidate envelope + DTDs relating to soap:header or soap:body documents, are not present in the envelope: no DOCTYPE element is present. + The soap:header or soap:body elements in the envelope, were described with an included DTD. + SOAP envelope. + + + BP1701 + + + R1008 + R2927 + + + + + For a candidate envelope + The SOAP envelope does not include XML processing instructions. + a SOAP envelope contains XML processing instructions. + SOAP envelope. + + + BP1701 + + + R1009 + R2927 + + + + + For a candidate non-fault envelope containing a soap:body with at least a child element, and that is not a response message to a one-way WSDL operation + The Envelope includes all soapbind:headers specified in the wsdl:input (if request) or wsdl:output (if response) of the operation referred to by its wsdl:binding, and may also include headers that were not specified. + Envelope does not include all soapbind:headers specified in the wsdl:input (if request) or wsdl:output (if response) of its bound operation. + + + binding + + + BP1601 + BP1202 + + + R2738 + R2739 + R2927 + R2747 + R2748 + + + + + For a candidate envelope containing a soap:Body element + The soap:Envelope does not have direct children after the soap:Body element + The soap:Envelope has a direct child after the soap:Body element. + + + + BP1701 + + + R1011 + R2927 + + + + + For a candidate envelope containing a header block that is either mandatory or is not described in the wsdl:binding. + An envelope contains a header block that is either mandatory or is not described in the wsdl:binding. + A header block in the envelope is either mandatory or is not described in the appropriate wsdl:binding. + Header blocks are the fundamental extensibility mechanism in SOAP. + + binding + + + + E0001 + R2927 + + This assertion is for the header blocks extensibility element. + + + + For a candidate envelope containing a soap:actor attribute with a value other than the special uri "http://schemas.xmlsoap.org/soap/actor/next". + A header element in the envelope contains a soap:actor attribute with a value other than the special uri "http://schemas.xmlsoap.org/soap/actor/next". + A header element in the envelope contains a soap:actor attribute with a value other than the special uri "http://schemas.xmlsoap.org/soap/actor/next". + Values of the soap:actor attribute, other than the special uri "http://schemas.xmlsoap.org/soap/actor/next", represent a private agreement between parties of the web service. + + + + E0004 + R2927 + + The soap:actor attribute is an extensibility point. + + + + For a candidate envelope containing a fault with a non-empty detail element. + A Fault element in an envelope contains a non-empty detail element. + A Fault element in an envelope contains a non-empty detail element. + The contents of a Fault's detail element are not prescribed by SOAP 1.1. + + + + E0005 + R2927 + + + + + + For a candidate envelope containing a soap:Body element with local or namespaced attributes. + An envelope contains a soap:Body element with local or namespaced attributes. + A namespaced or local attribute on a soap:Body element is considered an extensibility point because it is not constrained by SOAP 1.1. + + + + E0025 + R2927 + + Note that a namespace declaration on a soap:Body element is not considered an extensibility point. + + + + Driver testable. + Driver testable. + Driver testable. + + + + R1002 + R1016 + R2927 + + All of these profile requirements are testable only by using a driver test program, since a test assertion would +require application-level knowledge of the message exchange. + + + Not testable. + Not testable. + Not testable. + + + + R1017 + R1025 + R1027 + R1028 + R1029 + R1030 + R1107 + R2753 + E0002 + E0003 + E0006 + E0024 + + All of these profile requirements are NOT testable. + Some of these test assertions represent capabilities which + can not be validated. + + Note: That E0024 as stated, is really not worth testing because + it is always true since there is always at least one namespace declaration + (i.e., the SOAP namespace) defined on the Envelope element. + + + + For a candidate message in the message log file, which is not an empty response message + The soap:envelope in the message is a well-formed XML 1.0 document. + The soap:Envelope does not conform to XML 1.0. + {SOAP message}{any XML parser error messages} + + + + R9701 + + + + + + For a candidate envelope + The ENVELOPE does not contain the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + An ENVELOPE contains the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + SOAP envelope. + + + + R9704 + + + + + For an envelope in a response message containing a soap:Fault element with attachments + In a description, if and only if, the wsdl:output element is described using WSDL MIME binding, then the envelope in the response message can contain faults with attachments. + The envelope in a response message contains a fault with attachments and the corresponding wsdl:output element in the description is not described using the WSDL MIME binding. + SOAP message. + + operation + + + + R2920 + + + + + + For a candidate envelope containing a URI reference that is typed using the ref:swaRef schema type + In an envelope, a URI reference that is typed using the ref:swaRef schema type resolves to a MIME part in the same message as the envelope. + In an envelope, a URI reference that is typed using the ref:swaRef schema type does not resolve to a MIME part in the same message as the envelope. + SOAP message. + + anyMessage + + + + R2928 + + + + + + Not testable. + Not testable. + Not testable. + + + + R2918 + + All of these profile requirements are NOT testable. Some of these test assertions represent capabilities which +can not be validated. + + + diff --git a/.metadata/.plugins/org.eclipse.wst.internet.cache/911606457.cache b/.metadata/.plugins/org.eclipse.wst.internet.cache/911606457.cache new file mode 100644 index 0000000..6bec2a4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.internet.cache/911606457.cache @@ -0,0 +1,1894 @@ + + + + + + This document contains the test assertions for the WS-I Simple SOAP Binding Profile 1.0 + combined with the test assertions for the WS-I Basic Profile definition. + These test assertions are used by the analyzer testing tool to determine if + a Web service is conformant to the Simple Soap Binding Profile 1.0 in conjunction with the Basic Profile 1.1. + + + + + + + + Simeon Greene + David Lauzon + Keith Stobie + Ed Johns + Shrikant Wagh + + + Ajay Honnur (BEA), + Rami Jaamour (Parasoft), + Narendra Patil (Optimyz Software, Inc.) + + + + + + + + + + The Basic Profile requires support for UDDI V2.0. + + + For a candidate uddi:tModel + The uddi:tModel element uses WSDL as the description language and +the uddi:tModel contains a reference to a WSDL binding. +The uddi:overviewDoc/uddi:overviewURL element contains a reference to a WSDL definition, +which uses a namespace of http://schemas.xmlsoap.org/wsdl/. The uddi:overviewURL may +use the fragment notation to resolve to a specific wsdl:binding. + The uddi:tModel does not reference a WSDL based Web service +definition or the uddi:tModel does not reference a wsdl:binding. + {tModel key}{uddi:overviewDoc} + + definitions + + + + R3002 + R3010 + R3011 + + + + + For a candidate uddi:bindingTemplate + The uddi:bindingTemplate element contains a uddi:accessPoint element, with a non-empty value. + The uddi:bindingTemplate does not contain an uddi:accessPoint element, or it is empty. + bindingTemplate key + + + + R3100 + + + + + For a candidate uddi:tModel + The uddi:tModel is categorized using the uddi:types taxonomy, as "wsdlSpec": the uddi:keyedReference element has a tModelKey attribute value equal to "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4" and a keyValue attribute value equal to "wsdlSpec". + + The uddi:tModel is not categorized using the uddi:types taxonomy with a categorization of "wsdlSpec". + {tModel key}{categoryBag} + + + + R3003 + + + + + Driver testable. + Driver testable. + Driver testable. + + + + + All of these profile requirements are testable only by using a driver test program, since a test assertion would +require application-level knowledge of the message exchange. + + + + + + + + + + The Basic Profile requires support for XML Schema 1.0 and WSDL 1.1. + The Simple SOAP Binding Profile requires support for XML Schema 1.0 and WSDL 1.1. + + For a candidate Web service definition within a WSDL document with a XML declaration statement. + The XML declaration statement uses UTF-8 or UTF-16 for the encoding. + XML declaration statement within WSDL document does not use expected encoding (UTF-8 or UTF-16). + XML declaration statement. + + + + R4003 + + checks WSDL encoding. + + + For a candidate wsdl:types element within a WSDL document which imports an XML schema directly or indirectly. + The imported schema uses UTF-8 or UTF-16 for the encoding. + The XML declaration statement within the imported XML Schema does not +use expected encoding (UTF-8 or UTF-16). + XML declaration statement. + + + + R2010 + + + + + For a candidate wsdl:definitions element within a WSDL document. + The wsdl:definitions is a well-formed XML 1.0 document. + The wsdl:definitions is not a well-formed XML 1.0 document. + Error message from the XML parser + + + + R4004 + R0001 + + 1st step in a 3-phase verification process: XML+namespace+schemavalid. + + + For a candidate wsdl:types element, with XML schema import elements + Each XML schema import statement (xsd:import) is only used to directly reference an XML schema definition, which has "schema" from XML namespace "http://www.w3.org/2001/XMLSchema" as root element. It does not contain a reference to another document embedding the XML schema definition (e.g. WSDL). + An XML schema import element references something other than an XML schema definition: the referenced element does not have "schema" from XML namespace "http://www.w3.org/2001/XMLSchema" as root element. + Defective XML schema import element. + + + + R2002 + R2004 + + NOTE: XML schema definitions within a WSDL document must adhere to the same rules as XML schema definitions which appear in separate XSD files. For example, two WSDL definitions can not contain the same complex type definition for the same targetNamespace. + + + For a candidate wsdl:types element within a WSDL document, which imports an XML schema directly or indirectly + The imported XML schema is a well-formed XML 1.0 document and if it contains an +XML declaration, it is version 1.0. + The imported XML schema is not a well-formed XML 1.0 document. + {Error message from the XML parser}{imported XML schema} + + + BP2102 + + + R2011 + + + + + For a candidate wsdl:definitions element within a WSDL document. + The wsdl:definitions namespace has value: http://schemas.xmlsoap.org/wsdl/. + The wsdl:definitions namespace is not: http://schemas.xmlsoap.org/wsdl/. + + + + + R0001 + + 2nd step in a 3-phase verification process: XML+namespace+schemavalid. + + + For a candidate description within a WSDL document + If it uses the WSDL namespace, then it conforms to the schema located at http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd, and if it uses the WSDL-SOAP binding namespace then it conforms to the schema located at http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd. + WSDL definition does not conform to the schema located at http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd for some element using the WSDL-SOAP binding namespace, or does not conform to the schema located at http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd for some element using the WSDL namespace. + Error message from the XML parser. + + + + R2029 + R2028 + R0001 + + A description using WSDL-SOAP namespace is prefixed soapbind: in this doc as well as in the profile def. This verification is 3rd step in a 3-phase verification process: XML+namespace+schemavalid. + + + For a candidate description within a WSDL document + The candidate description does not contain the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + The candidate description contains the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + + + + BP2703 + + + R1034 + R4005 + + + + + For a candidate Web service definition with wsdl:types elements + The wsdl:types elements occur either as first children in the WSDL namespace of the wsdl:definitions element, or they are only preceded by wsdl:documentation element(s) and/or wsdl:import(s) element(s). + wsdl:types element(s) in the WSDL namespace of the wsdl:definitions element were preceded by child elements other than wsdl:documentation or wsdl:import elements. + + + + BP2703 + + + R2023 + R2030 + + + + + For a candidate wsdl:operation in a wsdl:portType definition + The wsdl:operation element is either a WSDL request/response or a one-way operation (no Notification or Sollicit-Response). + wsdl:operation was not a request/response or one-way operation. + Operation. + + + BP2703 + + + R2303 + + + + + For a candidate wsdl:portType definition + name attributes of Operations are unique in the wsdl:portType definition + name attributes are not unique within the portType definition. + list of duplicate name(s) and of elements that use them. + + + BP2703 + + + R2304 + + + + + For a candidate wsdl:binding element, if the style attribute of the contained soapbind:binding is "rpc" +and the use attribute is "literal". + The namespace attribute is specified on all soapbind:body elements and the value of the +namespace attribute is an absolute URI. + A soapbind:body element does not have a namespace attribute, or the namespace attribute +value is not an absolute URI. + soapbind:body elements that failed the assertion + + + + R2717 + + + + + For a candidate wsdl:binding element + The wsdl:input element and wsdl:output element of each operation uses the attribute name "part" with a Schema type of "NMTOKEN" and does not use "parts", for both soapbind:header elements and soapbind:headerfault elements. + The wsdl:input element or wsdl:output element of an operation does not use the attribute name "part" with a Schema type of "NMTOKEN" for soapbind:header elements or soapbind:headerfault elements, or it uses "parts". + wsdl:input element or wsdl:output element of the defective operation. + + + BP2703 + + + R2720 + R2749 + + Generally BP2703 will fail as a pre-req first because this will not pass a specialized schema check. + + + For a candidate wsdl:binding element + The wsdl:binding element has a soapbind:binding child element. + The wsdl:binding element does not use a soapbind:binding element as defined in section "3 SOAP Binding." of the WSDL 1.1 specification. + wsdl:binding. + + + BP2703 + + + R2401 + + + + + For a candidate wsdl:binding element + the name attribute is specified on the soapbind:fault element. + Defective soapbind:fault element: the name attribute is not specified on the soapbind:fault element. + Defective soapbind:fault element + + + + R2721 + + + + + For a candidate wsdl:binding element + the name attribute that is specified on the soapbind:fault element matches the value specified on the parent element wsdl:fault. + Defective soapbind:fault element: the "name" attribute value does not match the value of the "name" attribute on the parent element wsdl:fault. + Defective soapbind:fault element + + + + R2754 + + + + + For a candidate wsdl:binding element + The contained soap:binding element has a "transport" attribute, which has value: http://schemas.xmlsoap.org/soap/http. + Transport attribute of the soap:binding does not contain http://schemas.xmlsoap.org/soap/http. + soap:binding element. + + + BP2703 + BP2402 + + + R2701 + R2702 + + + + + For a candidate wsdl:binding element, if the style attribute of the binding is "document" and use is "literal" + The binding (in soapbind:body elements) only refers to part elements that have been defined using the "element" attribute. + The binding (in soapbind:body elements) refers to part(s) of a soap:body element that do not have the "element" attribute. + soapbind:body element(s) that have non "element" parts attributes. + + + BP2404 + + + R2204 + + + + + For a candidate wsdl:binding element, if the use attribute is specified on the soapbind:body, soapbind:fault, soapbind:header, or soapbind:headerfault elements. + The use attribute has a value of "literal". + The use attribute of a soapbind:body, soapbind:fault, soapbind:header and soapbind:headerfault does not have value of "literal". + Defective soapbind:body, soapbind:fault, soapbind:header, or soapbind:headerfault elements. + + + BP2703 + + + R2706 + R2723 + R2707 + + R2707 is not the verified Req, but an assumed Req for this verification. + + + For a candidate wsdl:binding element, if the "style" attribute of the contained soap:binding is "document" and use attribute is "literal" + The "namespace" attribute is not specified in any contained soapbind:body, soapbind:header, soapbind::headerfault, soapbind:fault elements + The binding is of style "document" and use "literal", and the "namespace" attribute is specified in some soapbind:body, soapbind:header, soapbind::headerfault, soapbind:fault element + Contained element with namespace attribute. + + + BP2406 + + + R2716 + + + + + For a candidate wsdl:binding element, if the "style" attribute of the contained soap:binding is "rpc" and use attribute is "literal" + The binding (in soapbind:body elements) only refers to part elements that have been defined using the "type" attribute + soap:binding (in soapbind:body elements) refers to part(s) that do not have the "type" attribute. + {binding}{message with failed part} + + + + R2203 + + + + + For a candidate wsdl:operation with a parameterOrder attribute, if referred to by a candidate rpc-literal wsdl:binding element + The parameterOrder attribute omits at most 1 part from an output wsdl:message. + An operation associated with an rpc-literal binding has a parameterOrder attribute that omits more than 1 part. + {defective portType}{output wsdl:message} + + + + R2305 + + + + + For a candidate wsdl:binding + The "style" attribute of each operation in the contained soap:binding has the same value of "document" or "rpc", for all operations of the wsdl:binding. + The "style" attribute of an operation in soap:binding, does not have the same value of "document" or "rpc", as other operations of the binding. + defective soap:binding element. + + + BP2404 + + + R2705 + R2706 + + + + + For a candidate wsdl:definition, if it contains wsdl:import statements + Each wsdl:import statement is only used to import another WSDL description. + A wsdl:import element does not contain a reference to another WSDL description. + wsdl:import element(s) that does not reference a WSDL description. + + + BP2703 + + + R2001 + + + + + For a candidate wsdl:import element + The "location" attribute is specified for the wsdl:import element, and has a non-empty value. + A wsdl:import element does not have a "location" attribute, or has an empty value for the location attribute. + Defective wsdl:import element. + + + + R2007 + + + + + For a candidate wsdl:import element + The "namespace" attribute's value is not a relative URI. + The wsdl:import element's "namespace" attribute value is a relative URI. + Defective wsdl:import element. + + + BP2703 + + + R2803 + + + + + + For each a candidate wsdl:definitions + For the referenced definitions as well as all imported descriptions, The XML schema import statement is only used within an xsd:schema element. + A XML schema import element was found outside of an xsd:schema element. + Defective XML schema import element. + + + + R2003 + + This assertion is processed once for each WSDL description which fulfills the context criteria. The target for this assertion is the definitions element, because the XML schema import element might be specified anywhere within a WSDL document. + + + For a candidate wsdl:import + The targetNamespace attribute on the wsdl:definitions element for the imported WSDL description has the same value as the namespace attribute on the wsdl:import element that imported the WSDL description. + The targetNamespace attribute on the wsdl:definitions element for an imported WSDL description does not have the same value as the namespace attribute on the wsdl:import element that imported the WSDL description. + wsdl:import element. + + + BP2101 + + + R2005 + + + + + For a candidate wsdl:definitions with wsdl:import elements + wsdl:import elements occur either as first children elements in the WSDL namespace of the wsdl:defintitions element, or they are only preceded by wsdl:documentation elements. + A wsdl:import element in the WSDL namespace under the wsdl:definitions element, is preceded by child elements other than wsdl:documentation elements. + Display the WSDL import element(s) that failed the assertion. + + + + R2022 + R2030 + + + + + For a candidate wsdl:definitions + Every QName in the WSDL document that is not referring to a schema component, is either using the target namespace of this WSDL or the target namespace of a directly imported WSDL component. + A QName reference that does not refer to a schema component, is using neither the target namespace of this WSDL nor the target namespace of a directly imported WSDL component. + Defective QName(s). + + + + R2101 + + This assertion is processed once for each WSDL description which fulfills the context criteria. Only direct WSDL imports are considered for QName resolution. Note that this test does not require resolving the qualified element itself in the imported namespace: only the namespace is verified. Some sub cases of R2101 related to schema target namespaces, are not handled here and are covered by another TA covering R2102 (BP2417). + + + For a candidate wsdl:definitions + Every QName in the WSDL document and its imports, that is referring to a schema component, uses the namespace defined in the targetNamespace attribute on the xs:schema element, or a namespace defined in the namespace attribute on an xs:import element within the xs:schema element. + A QName reference that is referring to a schema component, uses a namespace not defined in the targetNamespace attribute on the xs:schema element, or in the namespace attribute on an xs:import element within the xs:schema element. + Defective QName(s). + + + + R2102 + R2101 + + This assertion is processed once for each WSDL description which fulfills the context criteria. Only the subcases of R2101 that are related to schema imports are covered by this test, as these overlap with R2102 requirements. + + + For a candidate wsdl:types element containing an xsd:schema element + The xsd:schema element contains a targetNamespace attribute with a valid and non-null value unless the xsd:schema element has xsd:import and/or xsd:annotation as its only child element(s). + A xsd:schema element contained in a wsdl:types element does not have a targetNamespace attribute with a valid and non-null value, while having child element(s) other than xsd:import or xsd:annotation. + Defective xsd:schema element(s). + + + + R2105 + + + + + For a candidate wsdl:types + The type soapenc:Array does not appear in these declarations, and the wsdl:arrayType attribute is not used in the type declaration. + An Array declaration uses - restricts or extends - the soapenc:Array type, or the wsdl:arrayType attribute is used in the type declaration. + Defective declaration(s). + + + + R2110 + R2111 + + R2110 and R2111 have been interpreted as applying to any declaration, as we cannot assume the intent of declaring arrays, which is untestable. + + + For a candidate wsdl:types that is used by an rpc-literal binding + The declaration does not use the naming convention ArrayOfXXX. + A declaration is using the convention ArrayOfXXX. + Defective declaration(s). + + + + R2112 + + R2112 has been interpreted as applying to any declaration, as we cannot assume the intent of declaring arrays, which is untestable. However, R2112 should only concern "wrapper elements", i.e. RPC-lit cases. The narrowing of the context here, is not sufficient to restrict properly the application of this TA. + + + For a candidate wsdl:binding, which contains a document-literal soap:binding + If the "parts" attribute is present, then the soapbind:body element(s) have at most one part listed in the parts attribute. + One or more soapbind:body element(s) in a document-literal soap:binding does not have at most one part listed in the parts attribute. + Defective soapbind:body element(s). + + + + R2201 + + + + + For a candidate wsdl:binding, with a style "rpc" attribute and containing at least a soapbind:body element + No wsdl:part referred by such a soapbind:body element is defined using the "element" attribute. + The referred wsdl:part element uses the "element" attribute in an rpc-literal soapbind:body. + {soapbind:body}{wsdl:part element(s)} + + + + R2207 + + + + + For a candidate wsdl:binding element + When they contain references to message parts, the soapbind:header, soapbind:headerfault and soapbind:fault elements only refer to wsdl:part element(s) that have been defined using the "element" attribute. + The soapbind:header, soapbind:headerfault or soapbind:fault elements refer to wsd:part element(s) that are not defined using only the "element" attribute. + Defective wsdl:binding and wsdl:part elements. + + + + R2205 + + + + + For a candidate wsdl:message + An "element" attribute on any wsdl:part element refers to a global element declaration. + A wsdl:message element containing a wsdl:part element that uses the "element" attribute does not refer, via that attribute, to a global element declaration. + Defective wsdl:message element. + + + + R2206 + + + + + For a candidate wsdl:message element + The wsdl:message element does not contain part elements that use both "type" and "element" attributes. + A wsdl:message element has at least one wsdl:part element that contains both type and element attributes. + Defective wsdl:message element. + + + + R2306 + + + + + For a candidate wsdl:binding element, referred to by an rpc-literal soap:binding + The rpc-literal binding does not have a namespace attribute specified on a contained soapbind:header, soapbind:headerfault, and soapbind:fault element. + An rpc-literal binding has the namespace attribute specified on contained soapbind:header, soapbind:headerfault and soapbind:fault elements. + {Defective wsdl:binding}{defective soapbind:header, soapbind:headerfault, or soapbind:fault element} + + + BP2017 + BP2406 + + + R2726 + + + + + For a candidate wsdl:binding element + The list (or set) of wsdl:operation elements for the contained wsdl:binding is the same as the list of wsdl:operations for the referred wsdl:portType. + A wsdl:binding does not have the same list of wsdl:operations as the wsdl:portType to which it refers. + {unmatching wsdl:binding element}{unmatching portType element} + + + + R2718 + + + + + For a candidate wsdl:binding element + Every wsdl:part from each wsdl:message in the associated wsdl:portType is referenced either by the soapbind:body, soapbind:header, soapbind:fault, or soapbind:headerfault. + A wsdl:binding does not bind every wsdl:part of a wsdl:message in the wsdl:portType to which it refers to one of soapbind:body, soapbind:header, soapbind:fault or soapbind:headerfault. + {Defective wsdl:binding element}{message with part(s) unbound} + + + BP2118 + + + R2209 + + + + + For a candidate wsdl:binding, which is of type document-literal + If it does not specify the parts attribute on a soapbind:body element, the corresponding abstract wsdl:message defines zero or one wsdl:part. + A document-literal binding which does not specify the parts attribute, has more than one wsdl:part in the associated wsdl:message element. + Defective wsdl:binding element. + + + BP2404 + + + R2210 + + + + + For a candidate wsdl:binding + Each operation referenced by the binding results in a unique wire signature. + A binding has operations that are not unique. + Defective wsdl:operation element(s). + + + + R2710 + + + + + For a candidate wsdl:types element + The data type definition if any within the wsdl:types element is an XML schema definition defined in the XML Schema 1.0 Recommendation with the namespace URI "http://www.w3.org/2001/XMLSchema". + A wsdl:types element contained a data type definition that is not an XML schema definition. + Defective data type definition. + + + + R2801 + + + Validating the data type definitions includes any imported XML schema definitions. + + + + For a candidate wsdl:definitions, if it contains a wsdl:port, wsdl:binding, wsdl:portType, wsdl:operation, +or wsdl:message that claims conformance to the Profile. + Contained WSDL extension elements do not use the wsdl:required attribute value of "true". + An extension element within a WSDL element that claims conformance to the Basic Profile has a wsdl:required attribute with a value of "true". + Display the extension element that failed the assertion. + + + + R2026 + + + + + For a candidate wsdl:definitions element containing an extension element or attribute from a namespace other than "http://schemas.xmlsoap.org/wsdl/soap/". + The WSDL contains an extension element or attribute that does not belong to the "http://schemas.xmlsoap.org/wsdl/soap/". + The use of a WSDL extension element or attribute from a namespace other than "http://schemas.xmlsoap.org/wsdl/soap/" may require out of band negotiation. + The use of a WSDL extension element or attribute from a namespace other than "http://schemas.xmlsoap.org/wsdl/soap/" may require out of band negotiation. + + + + E0013 + + Extension elements other than those belonging to one of the following namespaces (...) are considered extensibility points. + + + + For a candidate wsdl:import element, where the location attribute or the namespace attribute has a value that is a relative URI, or a for soap:address element where the location attribute is a relative URI. + The use of a relative URI as the value for a wsdl:import location or namespace attribute, or for a soap:address location attribute may require out of band coordination. + A wsdl:import location or namespace attribute, or a soap:address location attribute is a relative URI. + The element(s) in question. + + + + E0016 + + + + + + For an XML schema definition defined in the wsdl:types element, or imported directly or indirectly by a schema definition defined in the wsdl:types element, which contains any schema annotation elements. + An XML schema definition defined in the wsdl:types element, or imported directly or indirectly by a schema definition defined in the wsdl:types element, may use schema annotation elements as an extensibility mechanism. + An XML schema defined in the wsdl:types element, or imported directly or indirectly by a schema defined in the wsdl:types element, contains annotation elements. + The annotation elements included in the schema. + + + BP2202 + BP2011 + + + E0017 + + Schema annotations are an extensibility point. + + + + Driver testable. + Driver testable. + Driver testable. + + + + R2709 + + All of these profile requirements are testable only by using a driver test program, since a test assertion would +require application-level knowledge of the message exchange. + + + Not testable. + Not testable. + Not testable. + + + + R2025 + R2027 + R2008 + R4002 + R2200 + R2202 + R2208 + R2302 + R2750 + R2707 + R2711 + R2727 + R2719 + R2722 + R2724 + R2725 + R2741 + R2742 + R2743 + R2747 + R2748 + R2751 + R2752 + R2800 + R2009 + R2114 + R2030 + E0014 + E0015 + + All of these profile requirements are NOT testable, or NOT testable using the + current test tools. For example, some of these test assertions represent + capabilities which can not be validated. + Note, BP2200 is NOT testable using the current test tools because any + BOM detected within a WSDL document is pre-processed by the WSDL + reader/parser and hence becomes inaccessible. + Note, R2724 could be tested. If a request is inconsistent with the WSDL for the request, + we could flag returning a non-error response. We currently do not check the status of a + request when we are processing the response. However this is within the scope of the test-tools + and we are tracking this omission defect/feature in bugzilla RE: bug#: 8. + + + + For a candidate wsdl:binding element + The wsdl:binding binds every wsdl:part of a wsdl:message in the wsdl:portType to which it refers to one of soapbind:body, soapbind:header, soapbind:fault or soapbind:headerfault. + A wsdl:part of a wsdl:message in the wsdl:portType to which it refers does not bind to one of soapbind:body, soapbind:header, soapbind:fault or soapbind:headerfault in the wsdl:binding. + wsdl:binding. + + + BP2703 + + + R2209 + + + + + + For a candidate wsdl:binding element + Descendant elements and attributes in the wsdl:binding are not from the namespaces of WSDL MIME, HTTP GET/POST or DIME binding extensions. + A descendant element or attribute in the wsdl:binding is from a namespace of WSDL MIME, HTTP GET/POST or DIME binding extensions. + Defective descendant element or attribute + + + BP2402 + + + R9801 + + + The namespace for the WSDL MIME, HTTP GET/POST and DIME binding extensions respectively are assumed to be: + http://schemas.xmlsoap.org/wsdl/mime/ + http://schemas.xmlsoap.org/wsdl/http/ + http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/ + + + + + Not testable. + Not testable. + Not testable. + + + + R4001 + R9800 + R9802 + + All of these profile requirements are NOT testable, or NOT testable using the current test tools. For example, some of these test assertions represent capabilities which can not be validated. + + + + + + + + + + + + + + + + The Basic Profile requires support for SOAP 1.1 and HTTP 1.0 or 1.1. + The Simple SOAP Binding Profile requires support for SOAP 1.1 and HTTP 1.0 or 1.1. + + For a candidate request message in the message log file + The request message is a POST message, without any use of framework extension. + The message is not an HTTP POST message, or makes use of HTTP framework extension. + All HTTP headers. + + + + R1132 + R1108 + + + + + For a candidate request message in the message log file, when a SOAPAction header is present + The SOAPAction header contains a quoted string of any value, including "". + SOAPAction HTTP header does not contain a quoted string. + All HTTP headers. + + + + R1109 + + + + + For a candidate request message in the message log file, when a SOAPAction header is present + The SOAPAction header contains a quoted string that has same value as the value of the soapbind:operation/@soapAction attribute, and an empty string ("") if there is no such attribute. + SOAPAction header does not contain the correct string value. + {All HTTP headers}{soapAction value from the soap:binding}. + + binding + + + BP1006 + + + R2744 + R2745 + + + + + For a candidate message in the log file, that is either a POST HTTP request, or a response to a POST HTTP request + If it is a request, the arg #2 of POST is <HTTP/1.1>. If absent, first line of the body is: HTTP-Version = HTTP/1.1. If it is a response, it starts with <HTTP/1.1> + The message is not sent using HTTP/1.1. + All HTTP headers. + + + BP1002 + + + R1140 + + + + + For a candidate message in the log file, that is either a POST HTTP request, or a response to a POST HTTP request + If it is a request, the arg #2 of POST is <HTTP/1.1> or <HTTP/1.0>. If absent, first line of the body is: HTTP-Version = HTTP/1.1. (or HTTP/1.0). If it is a response, it starts with <HTTP/1.1> or <HTTP/1.0> + The message is not sent using HTTP/1.1 or HTTP/1.0. + All HTTP headers. + + + + R1141 + + + + + For a candidate response message in the message log file, which is bound to a One-Way wsdl:operation + It does not contain a soap:Envelope: the HTTP entity-body is empty + One-Way operation response contains a soap:Envelope (HTTP entity-body must be empty) + + + requestMessage + operation + + + + R2714 + + Need the request to determine if it is a One-Way. +We could have targeted the request as well (as primary entry), and correlate with the response. + + + For a candidate response message in the log file, that does not contain a SOAP message and that does not contain an HTTP 4xx status code + The response message, if successfully processed at HTTP level, is sent using either a "200 OK" or "202 Accepted" HTTP status code. + A response message without a SOAP message, is not using either a "200 OK" or +"202 Accepted" HTTP status code, though successful at HTTP level. + Complete message. + + requestMessage + + + + R1112 + + This test assertion is targeted at one-way operations. + + + For a candidate response message in the message log file, associated with a request message that does not contain an HTTP POST method + The response contains a "405 Method not Allowed" HTTP status code. + The response message to a request that was not a POST message, did not contain an 405 HTTP status code. + Both the request and response message. + + requestMessage + + + + R1114 + + + + + For a candidate message in the message log file containing an HTTP Authentication header field with an authentication mechanism other than "Basic" or "Digest" + The message contains an HTTP Authentication header field with an authentication mechanism other than "Basic" or "Digest". + HTTP authentication allows for extension schemes, arbitrary digest hash algorithms and parameters. + + + + E0007 + + HTTP Authentication is an extensibility point for HTTP 1.1. + + + + For a candidate message in the message log file containing an HTTP Header field that is not from the following list of specified header fields: (http://www.mnot.net/drafts/draft-nottingham-http-header-reg-00.txt) + The message contains an HTTP Header field that is not from the following list of specified header fields: (http://www.mnot.net/drafts/draft-nottingham-http-header-reg-00.txt) + The message contains an HTTP Header field that is not from the following list of specified header fields: (http://www.mnot.net/drafts/draft-nottingham-http-header-reg-00.txt) + HTTP allows arbitrary headers to occur in messages. + + + + E0008 + + If all HTTP headers in a message are in the standardized list of draft-nottingham-http-header-reg-00 it will cause the informationalassertion 4104 to be notApplicable; otherwise 4101 will pass and headers not in the draft-nottingham-http-header-reg-00 will be listed. + + + + For a candidate message in the message log file containing a Content-encoding HTTP header field with a value other than "gzip", "compress" or "deflate" + The contained Content-encoding HTTP header field has a value other than "gzip", "compress" or "deflate". + The Content-encoding HTTP header field has a value other than "gzip", "compress" or "deflate". + The set of content-codings allowed by HTTP is open-ended. + + + + E0010 + + Any Content-encoding header field with a value other than the specified list is considered to be an extensibility point. + + + + For a candidate response message in the message log file containing a transfer-encoding HTTP header field with a value other than "chunked" + The contained transfer-encoding HTTP header field has a value other than "chunked". + The contained transfer-encoding HTTP header field has a value other than "chunked". + Any Transfer-encoding header field with a value other than chunked is considered to be an extensibility point. + + + + E0011 + + Any Transfer-encoding header field with a value other than chunked is considered to be an extensibility point. + + + + For a request message containing an Upgrade header field in the HTTP Headers. + The request message contains an Upgrade header field in the HTTP Headers. + The message contains an Upgrade header field in its HTTP Headers. + The Upgrade header field is considered an HTTP Extensibility point. + + + + E0012 + + The Upgrade header field is considered an HTTP Extensibility point. + + + + Driver testable. + Driver testable. + Driver testable. + + + + + All of these profile requirements are testable only by using a driver test program, since a test assertion would +require application-level knowledge of the message exchange. + + + Not testable. + Not testable. + Not testable. + + + + R1115 + R1122 + R1113 + R1119 + R1120 + R1121 + R1123 + R1124 + R1125 + R1127 + R1130 + R1131 + R1127 + R5000 + R5001 + R5010 + E0009 + E0019 + E0020 + E0021 + E0022 + E0023 + + All of these profile requirements are NOT testable. Some of these test assertions represent capabilities which +can not be validated. + + + For a candidate message in the log file, which has a non-empty entity-body + + The logged SOAP envelope is a UTF-8 transcript of an envelope originally encoded as UTF-8 or UTF-16. + The HTTP Content-Type header's charset value is either UTF-8 or UTF-16. Looking at the messageContent + element of the logged message, either + (1) it has a BOM attribute which maps the charset value in the Content-Type header, or + (2) it has it has an XML declaration which matches the charset value in the Content-Type header, or + (3) there is no BOM attribute and no XML declaration, and the charset value is UTF-8. + + + Either + (1a) the message contains a Content-Type header but no charset value, or + (1b) the charset value is neither UTF-8 nor UTF-16, or + (2) there is a BOM attribute in the messageContent element, but its value does not match the charset value, or + (3) there is an XML declaration, and the charset value does not match its value, or + (4) there is no BOM attribute, no XML declaration, and the charset value in Content-Type header is not UTF-8. + Complete message. + + + + R1012 + R1018 + + The optional BOM attribute of the messagContent element is added by the Monitor into the log file, based on the original value in the HTTP payload. + + + + For a candidate message in the log file, with an HTTP entity-body. + The SOAP envelope is the exclusive payload of the HTTP entity-body. + The SOAP envelope is not the exclusive payload of the message HTTP entity-body. + The message in question. + + + + R9700 + + + + + + For a candidate message in the log file. + A message must have a "Content-Type" HTTP header field. The "Content-Type" HTTP header field must have a field-value whose media type is "text/xml". + The message either (1) did not have a "Content-Type" HTTP header field, or (2) the "Content-Type" HTTP header field had a field-value whose media type was something other than "text/xml" + The value of the media-type field, if any. + + + + R9702 + R9703 + + + + + + Not testable. + Not testable. + Not testable. + + + + R1010 + R1019 + + All of these profile requirements are NOT testable. Some of these test assertions represent capabilities which can not be validated. + + + + + + + +SOAP 1.1 defines a structure for transmitting messages, the envelope. The profile mandates the use of that structure.SOAP 1.1 defines a structure for transmitting messages, the envelope. The profile mandates the use of that structure. + + For a candidate response envelope containing a soap:Fault element + The contained soap:Fault element is defined in the wsdl:binding. + The response envelope contained soap:Fault element(s), but they +were not defined in the WSDL description. + Undefined soap:Fault element(s). + + binding + + + + R2740 + + + + + For a candidate envelope containing a soap:Body element + No child element of soap:Body has a soap:encodingStyle attribute. + A child of the soap:Body element has a soap:encodingStyle attribute. + SOAP message + + + BP1701 + + + R1006 + + + + + For a candidate envelope in a request message + The content of the envelope matches the definition in the WSDL document. In case of a doc-lit binding, the child element of soap:body is an instance of the global element declaration referenced by the corresponding wsdl:part. If the message has "parts", the order of the part elements in the soap:body of the wired message, is same as that of the wsdl:partS, in the wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. + The content of the envelope does not match the wsdl:message definition. The order of parts in soap:body does not match the order of wsdl:partS in wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element; or the child element of soap:body is not an instance of the global element declaration referenced by the corresponding wsdl:part. + Non-matching WSDL operation and envelope. + + operation + + + BP1701 + BP1308 + + + R2301 + R2712 + R2710 + R2742 + R2743 + R2748 + + R2710, R2742 R2743 and R2748 used as "assumed" reqts, not reqts to verify. The soap:encodingStyle verification done by pre-req BP1308 on children, is not done for grand-children (BP1318 coul dnot be a pre-req) + + + For a candidate envelope in a response message, if it does not contain a soap:Fault + The content of the envelope matches the definition in the WSDL document. In case of an rpc-lit binding, the body contains a wrapper element that matches theoperation name. In case of a doc-lit binding, the child element of soap:body is an instance of the global element declaration referenced by the corresponding wsdl:part. If the message has "parts", the order of the part elements in the soap:body of the wired message, is same as that of the wsdl:partS, in the wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. + The content of the envelope does not match the wsdl:message definition. The order of parts in soap:body does not match the order of wsdl:partS in wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element; or it has a doc-lit binding but the child element of soap:body is not an instance of the global element declaration referenced by the corresponding wsdl:part; or it has an rpc-lit binding but no wrapper element. + Non-matching WSDL operation and envelope. + + requestEnvelope + operation + + + BP1701 + + + R2301 + R2712 + R2710 + R2742 + R2743 + R2748 + + R2710, R2742 R2743 and R2748 used as "assumed" reqts, not reqts to verify. The test assertion also verifies the wrapper element in case of an rpc-binding (in a same way as BP1005 which could not be a pre-requisite due to a narrower context) + + + For a candidate envelope + The soap:body of the envelope does not contain the soapenc:arrayType attribute. + The soap:body of an envelope contains the soapenc:arrayType attribute. + SOAP envelope. + + + BP1701 + + + R2113 + + R2113 has been interpreted as applying to any message body, as it is unclear how to narrow to serialized array declarations. The narrowing of the context here,may not be sufficient to restrict properly the application of this TA. + + + For a candidate envelope containing a "mustUnderstand" attribute + The "mustUnderstand" attribute in the envelope has one of two values: 1, 0. + The "mustUnderstand" attribute in an envelope has a value different from: 1, 0. + SOAP envelope, plus envelope of a request message if it is a response. + + + BP1701 + + + R1013 + + + + + For a candidate envelope in a response message containing a soap:Fault element + The soap:Fault element is contained in an HTTP 500 message with "Server" Error code. + The soap:Fault message is not returned in an HTTP 500 message. + SOAP envelope. + + responseMessage + + + BP1701 + + + R1126 + + + + + For a candidate envelope in a response message containing a soap:Fault element + The soap:Fault element does not have children other than soap:faultcode, soap:faultstring, soap:faultactor or soap:detail. + One or more soap:Fault child elements are not standard, i.e. is neither soap:faultcode, soap:faultstring, soap:faultactor nor soap:detail. + SOAP envelope + + + BP1701 + + + R1000 + + + + + For a candidate envelope in a response message containing a soap:Fault element + The content of the soap:Fault element does not make use of the SOAP 1.1 dot notation, i.e. is a string without a dot character in it. + A soap:Fault element makes use of the SOAP 1.1 dot notation. + SOAP envelope + + + BP1701 + + + R1031 + + + + + For a candidate envelope + The soap:Envelope, soap:Header, and soap:Body elements do not have any attributes in the namespace "http://schemas.xmlsoap.org/soap/envelope/" + A soap:Envelope, soap:Header, or soap:Body element has an attribute in the namespace "http://schemas.xmlsoap.org/soap/envelope/". + SOAP envelope + + + BP1701 + + + R1032 + + + + + + For a candidate envelope + The SOAP envelope does not contain the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + The SOAP envelope contains the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + SOAP envelope + + + BP1701 + + + R1033 + + + + + For a candidate envelope in a response message containing a soap:Fault element + The soap:Fault element children (soap:faultcode, soap:faultstring, soap:faultactor or soap:detail) are unqualified. + One or more soap:Fault child elements are qualified. + SOAP envelope + + + BP1701 + + + R1001 + + + + + For a candidate envelope containing elements with namespace "http://schemas.xmlsoap.org/soap/envelope/" + The envelope contains elements that are namespaced "http://schemas.xmlsoap.org/soap/envelope/" do not have a soap:encodingStyle attribute. + The envelope contains one or elements namespaced "http://schemas.xmlsoap.org/soap/envelope/" having a soap:encodingStyle attribute. + SOAP envelope + + + BP1701 + + + R1005 + + + + + For a candidate non-fault envelope containing a soap:body with at least one grandchild, and is referred by an rpc-literal binding + The grandchild elements of soap:Body referred by an rpc-literal binding do not have a soap:encodingStyle attribute. + At least one grandchild of the soap:Body element referred by an rpc-literal binding has a soap:encodingStyle attribute. + SOAP envelope + + operation + + + BP1701 + BP1202 + + + R1007 + + + + + For a candidate non-fault envelope containing a soap:body with at least one element, and that is referred by a binding style rpc-literal + The envelope has part accessor elements for parameters and return value, in no namespaces, but the descendants of these are namespace qualified as defined by the schema in which their types are defined. + The envelope has part accessor elements for parameters and return value, within namespaces, or the descendants of these elements are not namespace qualified as defined by the schema in which their types are defined. + + + binding + + + BP1701 + + + R2735 + R2737 + + + + + For a candidate non-fault envelope containing a soap:body with at least one element, and that is referred by a binding style rpc-literal + Part accessor elements in the envelope do not have an xsi:nil attribute with a value of "1" or "true". + Envelope referenced by an rpc-literal binding has part accessor elements with an xsi:nil attribute with a value of "1" or "true". + + + binding + + + BP1701 + + + R2211 + + + + + For a candidate non-fault envelope containing a soap:body with at least one element + The envelope contains exactly one part accessor element for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. + The content of the soap:Body element is inconsistent with its description. The envelope does not contain exactly one part accessor element for each of the wsdl:part elements bound to the envelope's corresponding soapbind:body element. + + + binding + + + BP1701 + + + R2212 + + + + + + For a candidate non-fault envelope containing a soap:Body element, and is referred by a doc-literal binding + The envelope has no element content in the soap:Body element if the value of the parts attribute of the soapbind:body is an empty string in the corresponding doc-literal description. + The soap:Body element must be empty when, in the corresponding doc-literal description, the value of the parts attribute of soapbind:body is an empty string. + SOAP envelope + + binding + + + BP1701 + + + R2213 + + + + + + For a candidate non-fault envelope containing a soap:Body element, and is referred by a rpc-literal binding + The envelope does not contain any part accessor elements if the value of the parts attribute of the soapbind:body is an empty string in the corresponding rpc-literal description. + The content of the soap:Body element is inconsistent with its description. The envelope must not have any part accessor elements when, in the corresponding rpc-literal description, the value of the parts attribute of soapbind:body is an empty string. + SOAP envelope + + binding + + + BP1701 + + + R2214 + + + + + + For a candidate non-fault envelope containing a soap:body with at least one element, and that is referred by a binding style rpc-literal + Each part accessor element in the envelope has a local name of the same value as the name attribute of the corresponding wsdl:part element. + The envelope referenced by an rpc-literal binding has a part accessor element with a local name that is not the same value as the name attribute of the corresponding wsdl:part element. + + + binding + + + BP1701 + + + R2755 + + + + + + For a candidate non-fault envelope in a response message, that has a soap:body with at least a child element, and is +referenced by a rpc-literal binding to a WSDL request-response operation + The envelope has a wrapper element with a name equal to the name attribute on the wsdl:operation element suffixed with string "Response". + Wrapper element in the envelope does not have a value equal to the name attribute on the wsdl:operation element suffixed with string "Response". + + + requestEnvelope + binding + + + BP1601 + BP1202 + + + R2729 + + Assume a correlation with WSDL binding entry is needed. + + + For an envelope in a response message containing a soap:Fault element with a faultcode child element + The soap:faultcode value in the soap:Fault element of the envelope is either one of: VersionMismatch, MustUnderstand, Client, Server, or is qualified by a namespace. + The soap:faultcode value in the soap:Fault element of the envelope is not one of: VersionMismatch, MustUnderstand, Client, Server, or is not qualified by a namespace. + SOAP envelope in a response message. + + + BP1701 + + + R1004 + + If namespace qualified, the namespace is other than http://schemas.xmlsoap.org/soap/envelope/, per (assumed) conformance to SOAP. + + + For an envelope in a response message containing a soap:Fault element, if there is any qualified attribute for the detail element + The namespace of a qualified attribute appearing on the detail element in the soap:Fault +is a foreign namespace, different from "http://schemas.xmlsoap.org/soap/envelope/". + The soap:Fault message contains detail element with attributes qualified with a non-foreign namespace. + SOAP message. + + + BP1701 + + + R1003 + + this is a narrowing of the schema, which allows any namespace. + + + For a candidate non-fault envelope in a response message + The message uses a "200 OK" HTTP status code. + The envelope of the response message does not contain a soap:Fault and the message does not use a "200 OK" HTTP status code. + Complete message. + + responseMessage + + + BP1701 + + + R1111 + + + + + For a candidate envelope + The envelope conforms to the structure specified in SOAP 1.1 Section 4. + The envelope does not conform to the structure specified in SOAP 1.1 Section 4 + SOAP envelope. + + + + R9980 + + + + + + For a candidate non-empty envelope + The soap:envelope and soap:body are well-formed XML 1.0 documents. + The soap:Envelope or soap:Body does not conform to XML 1.0. + {SOAP envelope}{any XML parser error messages} + + + + + + Assumed in underlying spec, though no formal Rxxxx for it. 1st step in a 3-phase verification process: XMLvalid + namespace check + schemavalid. + + + For a candidate envelope + The envelope has a document element named "Envelope" with namespace http://schemas.xmlsoap.org/soap/envelope/. + The envelope does not use SOAP 1.1, i.e. does not have a document element named "Envelope" or a namespace value of http://schemas.xmlsoap.org/soap/envelope/. + SOAP envelope. + + + BP1601 + + + + + Assumed in underlying spec, though no formal Rxxxx for it (run-time version of R2700). 2nd step in a 3-phase verification process: XMLvalid + namespace check + schemavalid. + + + For a candidate envelope containing a soap:body with at least one child element + Each child element (if any) of the soap:Body element is namespace qualified (not the grandchildren). + A child element of the soap:Body element is not namespace qualified. + SOAP envelope. + + + BP1701 + + + R1014 + + + + + For a candidate envelope + The envelope conforms to the SOAP schema located at http://schemas.xmlsoap.org/soap/envelope/ + The envelope does not conform to the SOAP schema located at http://schemas.xmlsoap.org/soap/envelope/. + SOAP message. + + + BP1201 + + + + + Assumed in underlying spec, though no formal Rxxxx for it. 3rd step in a 3-phase verification process: XMLvalid + namespace check + schemavalid. + + + For a candidate envelope in a response message, that is a part of a Request-Response operation where the request contains a soap:Envelope with a document element with name: "Envelope" and a namespace different than "http://schemas.xmlsoap.org/soap/envelope/". + A soap:Fault is generated as response. + A soap:Fault is not generated for a document element named "Envelope" that had namespace +different from: "http://schemas.xmlsoap.org/soap/envelope/" + + + requestEnvelope + operation + + + BP1701 + + + R1015 + + + + + For a candidate envelope + DTDs relating to soap:header or soap:body documents, are not present in the envelope: no DOCTYPE element is present. + The soap:header or soap:body elements in the envelope, were described with an included DTD. + SOAP envelope. + + + BP1701 + + + R1008 + + + + + For a candidate envelope + The SOAP envelope does not include XML processing instructions. + a SOAP envelope contains XML processing instructions. + SOAP envelope. + + + BP1701 + + + R1009 + + + + + For a candidate non-fault envelope containing a soap:body with at least a child element, and that is not a response message to a one-way WSDL operation + The Envelope includes all soapbind:headers specified in the wsdl:input (if request) or wsdl:output (if response) of the operation referred to by its wsdl:binding, and may also include headers that were not specified. + Envelope does not include all soapbind:headers specified in the wsdl:input (if request) or wsdl:output (if response) of its bound operation. + + + binding + + + BP1601 + BP1202 + + + R2738 + R2739 + R2747 + R2748 + + + + + For a candidate envelope containing a soap:Body element + The soap:Envelope does not have direct children after the soap:Body element + The soap:Envelope has a direct child after the soap:Body element. + + + + BP1701 + + + R1011 + + + + + For a candidate envelope containing a header block that is either mandatory or is not described in the wsdl:binding. + An envelope contains a header block that is either mandatory or is not described in the wsdl:binding. + A header block in the envelope is either mandatory or is not described in the appropriate wsdl:binding. + Header blocks are the fundamental extensibility mechanism in SOAP. + + binding + + + + E0001 + + This assertion is for the header blocks extensibility element. + + + + For a candidate envelope containing a soap:actor attribute with a value other than the special uri "http://schemas.xmlsoap.org/soap/actor/next". + A header element in the envelope contains a soap:actor attribute with a value other than the special uri "http://schemas.xmlsoap.org/soap/actor/next". + A header element in the envelope contains a soap:actor attribute with a value other than the special uri "http://schemas.xmlsoap.org/soap/actor/next". + Values of the soap:actor attribute, other than the special uri "http://schemas.xmlsoap.org/soap/actor/next", represent a private agreement between parties of the web service. + + + + E0004 + + The soap:actor attribute is an extensibility point. + + + + For a candidate envelope containing a fault with a non-empty detail element. + A Fault element in an envelope contains a non-empty detail element. + A Fault element in an envelope contains a non-empty detail element. + The contents of a Fault's detail element are not prescribed by SOAP 1.1. + + + + E0005 + + + + + + For a candidate envelope containing a soap:Body element with local or namespaced attributes. + An envelope contains a soap:Body element with local or namespaced attributes. + A namespaced or local attribute on a soap:Body element is considered an extensibility point because it is not constrained by SOAP 1.1. + + + + E0025 + + Note that a namespace declaration on a soap:Body element is not considered an extensibility point. + + + + Driver testable. + Driver testable. + Driver testable. + + + + R1002 + R1016 + + All of these profile requirements are testable only by using a driver test program, since a test assertion would +require application-level knowledge of the message exchange. + + + Not testable. + Not testable. + Not testable. + + + + R1017 + R1025 + R1027 + R1028 + R1029 + R1030 + R1107 + R2753 + E0002 + E0003 + E0006 + E0024 + + All of these profile requirements are NOT testable. + Some of these test assertions represent capabilities which + can not be validated. + + Note: That E0024 as stated, is really not worth testing because + it is always true since there is always at least one namespace declaration + (i.e., the SOAP namespace) defined on the Envelope element. + + + + For a candidate message in the message log file, which is not an empty response message + The soap:envelope in the message is a well-formed XML 1.0 document. + The soap:Envelope does not conform to XML 1.0. + {SOAP message}{any XML parser error messages} + + + + R9701 + + + + + + For a candidate envelope + The ENVELOPE does not contain the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + An ENVELOPE contains the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". + SOAP envelope. + + + + R9704 + + + + + diff --git a/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml b/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml new file mode 100644 index 0000000..e416195 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/externalLibsTimeStamps b/.metadata/.plugins/org.eclipse.wst.jsdt.core/externalLibsTimeStamps new file mode 100644 index 0000000..f5a2da8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/externalLibsTimeStamps differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/1974196992.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/1974196992.index new file mode 100644 index 0000000..620173a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/1974196992.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/2259403217.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/2259403217.index new file mode 100644 index 0000000..620173a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/2259403217.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/3007451115.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/3007451115.index new file mode 100644 index 0000000..6538d00 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/3007451115.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/3670542250.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/3670542250.index new file mode 100644 index 0000000..bc35486 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/3670542250.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/4032157952.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/4032157952.index new file mode 100644 index 0000000..620173a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/4032157952.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/405089343.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/405089343.index new file mode 100644 index 0000000..ede7ae5 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/405089343.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/4137515924.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/4137515924.index new file mode 100644 index 0000000..620173a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/4137515924.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/446698966.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/446698966.index new file mode 100644 index 0000000..620173a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/446698966.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/717302498.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/717302498.index new file mode 100644 index 0000000..c60507f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/717302498.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/772543098.index b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/772543098.index new file mode 100644 index 0000000..bf25777 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/772543098.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/savedIndexNames.txt b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/savedIndexNames.txt new file mode 100644 index 0000000..f18e24e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/indexes/savedIndexNames.txt @@ -0,0 +1,6 @@ +INDEX VERSION 1.4+E:\1_CODING\LearnJava\Java-Pre\.metadata\.plugins\org.eclipse.wst.jsdt.core\indexes +446698966.index +4032157952.index +2259403217.index +1974196992.index +4137515924.index diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/baseBrowserLibrary.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/baseBrowserLibrary.js new file mode 100644 index 0000000..5dba6ab --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/baseBrowserLibrary.js @@ -0,0 +1,5393 @@ +/******************************************************************************* + * Copyright (c) 2008, 2013 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +/** + * Object DOMException() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Object + */ +function DOMException(){}; +DOMException.prototype = new Object(); +/** + * Constant DOMException.INDEX_SIZE_ERR=1 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INDEX_SIZE_ERR=1; +/** + * Constant DOMException.DOMSTRING_SIZE_ERR=2 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.DOMSTRING_SIZE_ERR=2; +/** + * Constant DOMException.HIERARCHY_REQUEST_ERR=3 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.HIERARCHY_REQUEST_ERR=3; +/** + * Constant DOMException.WRONG_DOCUMENT_ERR=4 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.WRONG_DOCUMENT_ERR=4; +/** + * Constant DOMException.INVALID_CHARACTER_ERR=5 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INVALID_CHARACTER_ERR=5; +/** + * Constant DOMException.NO_DATA_ALLOWED_ER=6 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NO_DATA_ALLOWED_ER=6; +/** + * Constant DOMException.NO_MODIFICATION_ALLOWED_ERR=7 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NO_MODIFICATION_ALLOWED_ERR=7; +/** + * Constant DOMException.NOT_FOUND_ERR=8 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NOT_FOUND_ERR=8; +/** + * Constant DOMException.NOT_SUPPORTED_ERR=9 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NOT_SUPPORTED_ERR=9; +/** + * Constant DOMException.INUSE_ATTRIBUTE_ERR=10 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INUSE_ATTRIBUTE_ERR=10; +/** + * Constant DOMException.INVALID_STATE_ERR=11 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INVALID_STATE_ERR=11; +/** + * Constant DOMException.SYNTAX_ERR=12 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.SYNTAX_ERR=12; +/** + * Constant DOMException.INVALID_MODIFICATION_ER=13 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INVALID_MODIFICATION_ER=13; +/** + * Constant DOMException.NAMESPACE_ERR=14 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NAMESPACE_ERR=14; +/** + * Constant DOMException.NVALID_ACCESS_ERR=15 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INVALID_ACCESS_ERR=15; +/** + * Property code + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.prototype.code=0; + +/** + * Object DOMImplementation() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Object + */ +function DOMImplementation(){}; +DOMImplementation.prototype = new Object(); +/** + * function hasFeature(feature, version) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} feature + * @param {String} version + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMImplementation.prototype.hasFeature = function(feature, version){return false;}; +/** + * function createDocumentType(qualifiedName, publicId, systemId) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} qualifiedName + * @param {String} publicId + * @param {String} systemId + * @returns {DocumentType} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see DocumentType + */ +DOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId){return new DocumentType();}; +/** + * function createDocument(namespaceURI, qualifiedName, doctype) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} qualifiedName + * @param {DocumentType} doctype + * @returns {Document} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Document + */ +DOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype){return new HTMLDocument();}; + +/** + * Object DocumentFragment() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function DocumentFragment(){}; +DocumentFragment.prototype=new Node(); + +/** + * Object Document() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Document(){}; +Document.prototype = new Node(); +/** + * Property defaultView + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Window + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Window + */ +Document.prototype.defaultView = new Window(); +/** + * Property doctype + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type DocumentType + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see DocumentType + */ +Document.prototype.doctype = new DocumentType(); +/** + * Property implementation + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type DOMImplementation + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see DOMImplementation + */ +Document.prototype.implementation = new DOMImplementation(); +/** + * Property documentElement + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Element + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.documentElement= new HTMLElement(); +/** + * Property styleSheets + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Document.prototype.styleSheets= new Array(); +/** + * function createElement(tagName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} tagName + * @returns {Element} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.createElement=function(tagName){return new HTMLElement();}; +/** + * function createDocumentFragment() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @returns {DocumentFragment} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see DocumentFragment + */ +Document.prototype.createDocumentFragment=function(){return new DocumentFragment();}; +/** + * function createTextNode(data) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} data + * @returns {Text} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Text + */ +Document.prototype.createTextNode=function(data){return new Text();}; +/** + * function createComment(data) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} data + * @returns {Comment} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Comment + */ +Document.prototype.createComment=function(data){return new Comment();}; +/** + * function createCDATASection(data) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} data + * @returns {CDATASection} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see CDATASection + */ +Document.prototype.createCDATASection=function(data){}; +/** + * function createProcessingInstruction(target, data) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type ProcessingInstruction + * @param {String} target + * @param {String} data + * @returns {ProcessingInstruction} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see ProcessingInstruction +*/ +Document.prototype.createProcessingInstruction=function(target, data){return new ProcessingInstruction();}; +/** + * function createAttribute(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Attr + */ +Document.prototype.createAttribute=function(name){return new Attr();}; +/** + * function createEntityReference(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {EntityReference} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see EntityReference + */ +Document.prototype.createEntityReference=function(name){return new EntityReference();}; +/** + * function getElementsByTagName(tagname) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} tagname + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see NodeList + */ +Document.prototype.getElementsByTagName=function(tagname){return new NodeList();}; +/** + * function importNode(importedNode, deep) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} importedNode + * @param {Boolean} deep + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Document.prototype.importNode=function(importedNode, deep){return new Node();}; +/** + * function createElementNS(namespaceURI, qualifiedName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} qualifiedName + * @returns {Element} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.createElementNS=function(namespaceURI, qualifiedName){return new HTMLElement();}; +/** + * function createEvent(String eventType) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} eventType + * @returns {Object} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.createEvent=function(eventType){return new Object();}; +/** + * function createAttributeNS(namespaceURI, qualifiedName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} qualifiedName + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Attr + */ +Document.prototype.createAttributeNS=function(namespaceURI, qualifiedName){return new Attr();}; +/** + * function getElementsByTagNameNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see NodeList + */ +Document.prototype.getElementsByTagNameNS=function(namespaceURI, localName){return new NodeList();}; +/** + * function getElementById(elementId) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} elementId + * @returns {Element} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.getElementById=function(elementId){return new HTMLElement();}; + +/** + * Object Node() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @memberOf Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see EventTarget + */ +function Node(){}; +Node.prototype=new EventTarget(); +/** + * Constant Node.ELEMENT_NODE=1 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.ELEMENT_NODE=1; +/** + * Constant Node.ATTRIBUTE_NODE=2 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.ATTRIBUTE_NODE=2; +/** + * Constant Node.TEXT_NODE=3 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.TEXT_NODE=3; +/** + * Constant Node.CDATA_SECTION_NODE=4 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.CDATA_SECTION_NODE=4; +/** + * Constant Node.ENTITY_REFERENCE_NODE=5 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.ENTITY_REFERENCE_NODE=5; +/** + * Constant Node.ENTITY_NODE=6 + * @type Number + * @memberOf Node + * @see Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html +*/ +Node.ENTITY_NODE=6; +/** + * Constant Node.PROCESSING_INSTRUCTION_NODE=7 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.PROCESSING_INSTRUCTION_NODE=7; +/** + * Constant Node.COMMENT_NODE=8 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.COMMENT_NODE=8; +/** + * Constant Node.DOCUMENT_NODE=9 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.DOCUMENT_NODE=9; +/** + * Constant Node.DOCUMENT_TYPE_NODE=10 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.DOCUMENT_TYPE_NODE=10; +/** + * Constant Node.DOCUMENT_FRAGMENT_NODE=11 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.DOCUMENT_FRAGMENT_NODE=11; +/** + * Constant Node.NOTATION_NODE=12 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.NOTATION_NODE=12; +/** + * Property nodeName + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.nodeName = ""; +/** + * Property nodeValue + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.nodeValue = ""; +/** + * Property nodeType + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.nodeType = 0; +/** + * Property parentNode + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.parentNode=new Node(); +/** + * Property childNodes + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type NodeList + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see NodeList +*/ +Node.prototype.childNodes=new NodeList(); +/** + * Property firstChild + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.firstChild=new Node(); +/** + * Property lastChild + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.lastChild=new Node(); +/** + * Property previousSibling + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.previousSibling=new Node(); +/** + * Property nextSibling + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.nextSibling=new Node(); +/** + * Property attributes + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type NamedNodeMap + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see NamedNodeMap + */ +Node.prototype.attributes=new NamedNodeMap(); +/** + * Property ownerDocument + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Document + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Document + */ +Node.prototype.ownerDocument = new HTMLDocument(); +/** + * Property namespaceURI + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.namespaceURI=""; +/** + * Property prefix + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.prefix = ""; +/** + * Property localName + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.localName= ""; +/** + * function insertBefore(newChild, refChild) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} newChild + * @param {Node} refChild + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.insertBefore = function(newChild, refChild){return new Node();}; +/** + * function replaceChild(newChild, oldChild) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} newChild + * @param {Node} oldChild + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.replaceChild = function(newChild, oldChild){return new Node();}; +/** + * function removeChild(oldChild) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} oldChild + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.removeChild = function(oldChild){return new Node();}; +/** + * function appendChild(newChild) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} newChild + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.appendChild = function(newChild){return new Node();}; +/** + * function hasChildNodes() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.hasChildNodes=function(){return false;}; +/** + * function cloneNode(deep) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Boolean} deep + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.cloneNode=function(deep){return new Node();}; +/** + * function normalize() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.normalize = function(){}; +/** + * function isSupported(feature, version) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} feature + * @param {String} version + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.isSupported=function(feature, version){return false;}; +/** + * function hasAttributes() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.hasAttributes=function(){return false;}; + +/** + * Object NodeList() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Object + */ +function NodeList(){}; +NodeList.prototype = new Object(); +/** + * Property length + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +NodeList.prototype.length=0; +/** + * function item(index) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * Note: This object can also be dereferenced using square bracket notation (e.g. obj[1]). Dereferencing with an integer index is equivalent to invoking the item method with that index + * + * @param {Number} index + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node +*/ +NodeList.prototype.item = function(index){return new Node();}; + +/** + * Object NamedNodeMap() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Object + */ +function NamedNodeMap(){}; +NamedNodeMap.prototype = new Object(); +/** + * Property length + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +NamedNodeMap.prototype.length=0; +/** + * function getNamedItem(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.getNamedItem=function(name){return new Node();}; +/** + * function setNamedItem(arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} arg + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.setNamedItem=function(arg){return new Node();}; +/** + * function removeNamedItem(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.removeNamedItem=function(name){return new Node();}; +/** + * function item(index) + * Note: This object can also be dereferenced using square bracket notation (e.g. obj[1]). Dereferencing with an integer index is equivalent to invoking the item method with that index. + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} index + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.item=function(index){return new Node();}; +/** + * function getNamedItemNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.getNamedItemNS=function(namespaceURI, localName){return new Node();}; +/** + * function setNamedItemNS(arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} arg + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.setNamedItemNS=function(arg){return new Node();}; +/** + * function removeNamedItemNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.removeNamedItemNS=function(namespaceURI, localName){return new Node();}; + +/** + * Object CharacterData() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function CharacterData(){}; +CharacterData.prototype=new Node(); +/** + * Property data + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.data=""; +/** + * Property length + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.length=0; +/** + * function substringData(offset, count) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @param {Number} count + * @returns {String} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.substringData=function(offset, count){return "";}; +/** + * function appendData(arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} arg + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.appendData=function(arg){}; +/** + * function insertData(offset, arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @param {String} arg + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.insertData=function(offset, arg){}; +/** + * function deleteData(offset, count) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @param {Number} count + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.deleteData=function(offset, count){}; +/** + * function replaceData(offset, count, arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @param {Number} count + * @param {String} arg + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.replaceData=function(offset, count, arg){}; + +/** + * Object Attr() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Attr(){}; +Attr.prototype = new Node(); +/** + * Property name + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Attr.prototype.name = ""; +/** + * Property specified + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Attr.prototype.specified = false; +/** + * Property value + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Attr.prototype.value = ""; +/** + * Property ownerElement + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Element + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Attr.prototype.ownerElement = new Element(); + +/** + * Object Element() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Element(){}; +Element.prototype=new Node(); +/** + * Property tagName + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.tagName=""; +/** + * function addEventListener(Stirng type, Function listener, Boolean useCapture) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} type + * @param {Function} listener + * @param {Boolean} useCapture + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.addEventListener=function(type, listener, useCapture){}; +/** + * function attachEvent(String type, Function listener) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} type + * @param {Function} listener + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.attachEvent=function(type, listener){}; +/** + * function detachEvent(String type, Function listener) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} type + * @param {Function} listener + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.detachEvent=function(type, listener){}; +/** + * function dispatchEvent(Object event) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Object} event + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.dispatchEvent=function(event){return false;}; +/** + * function getAttribute(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getAttribute=function(name){return "";}; +/** + * function setAttribute(name, value) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @param {String} value + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.setAttribute=function(name, value){}; +/** + * function removeAttribute(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.removeAttribute=function(name){}; +/** + * function getAttributeNode(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Attr} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getAttributeNode=function(name){return new Attr();}; +/** + * function setAttributeNode(newAttr) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Attr} newAttr + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.setAttributeNode=function(newAttr){return new Attr();}; +/** + * function removeAttributeNode(oldAttr) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Attr} oldAttr + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.removeAttributeNode=function(oldAttr){return new Attr();}; +/** + * function getElementsByTagName(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getElementsByTagName=function(name){return new NodeList();}; +/** + * function getAttributeNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {String} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getAttributeNS=function(namespaceURI, localName){return "";}; +/** + * function setAttributeNS(namespaceURI, qualifiedName, value) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} qualifiedName + * @param {String} value + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.setAttributeNS=function(namespaceURI, qualifiedName, value){}; +/** + * function removeAttributeNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.removeAttributeNS=function(namespaceURI, localName){}; +/** + * function getAttributeNodeNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {Attr} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getAttributeNodeNS=function(namespaceURI, localName){return new Attr();}; +/** + * function setAttributeNodeNS(newAttr) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Attr} newAttr + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.setAttributeNodeNS=function(newAttr){return new Attr();}; +/** + * function getElementsByTagNameNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getElementsByTagNameNS=function(namespaceURI, localName){return new NodeList();}; +/** + * function hasAttribute(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.hasAttribute=function(name){return false;}; +/** + * function hasAttributeNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.hasAttributeNS=function(namespaceURI, localName){return false;}; + +/** + * Object Text() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments CharacterData + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see CharacterData + */ +function Text(){}; +Text.prototype = new CharacterData(); +/** + * function splitText(offset) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @returns {Text} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Text + */ +Text.prototype.splitText = function(offset) {return new Text();}; + +/** + * Object Comment() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments CharacterData + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see CharacterData + */ +function Comment(){}; +Comment.prototype = new CharacterData(); + +/** + * Object CDATASection() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Text + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Text + */ +function CDATASection(){}; +CDATASection.prototype = new Text(); + +/** + * Object DocumentType() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function DocumentType(){}; +DocumentType.prototype = new Node(); +/** + * Property name + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.name=""; +/** + * Property entities + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type NamedNodeMap + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.entities = new NamedNodeMap(); +/** + * Property notations + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type NamedNodeMap + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.notations=new NamedNodeMap(); +/** + * Property publicId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.publicId=""; +/** + * Property systemId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.systemId=""; +/** + * Property internalSubset + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.internalSubset=""; + +/** + * Object Notation() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Notation(){}; +Notation.prototype=new Node(); +/** + * Property publicId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Notation.prototype.publicId=""; +/** + * Property systemId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Notation.prototype.systemId=""; + +/** + * Object Entity() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Entity(){}; +Entity.prototype=new Node(); +/** + * Property publicId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Entity.prototype.publicId=""; +/** + * Property systemId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Entity.prototype.systemId=""; +/** + * Property notationName + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Entity.prototype.notationName=""; + +/** + * Object EntityReference() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function EntityReference(){}; +EntityReference.prototype=new Node(); + +/** + * Object ProcessingInstruction() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function ProcessingInstruction(){}; +ProcessingInstruction.prototype=new Node(); +/** + * Property target + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +ProcessingInstruction.prototype.target=""; +/** + * Property target + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +ProcessingInstruction.prototype.data=""; + + +/*HTML DOM Below this line*/ + +/** + * Object HTMLCollection() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +function HTMLCollection(){}; +HTMLCollection.prototype = new Object(); +/** + * Property length + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLCollection.prototype.length=0; +/** + * function item(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLCollection.prototype.item = function(index){return new Node();}; +/** + * function namedItem(name) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} name + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLCollection.prototype.namedItem = function(index){return new Node();}; + +/** + * Object HTMLOptionsCollection() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +function HTMLOptionsCollection(){}; +HTMLOptionsCollection.prototype = new Object(); +/** + * Property length + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionsCollection.prototype.length=0; +/** + * function item(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionsCollection.prototype.item = function(index){return new Node();}; +/** + * function namedItem(name) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} name + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionsCollection.prototype.namedItem = function(index){return new Node();}; + +/** + * Object HTMLDocument() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments Document + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see Document + */ +function HTMLDocument(){}; +HTMLDocument.prototype = new Document(); +/** + * Property title + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.title=""; +/** + * Property referrer + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.referrer=""; +/** + * Property domain + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.domain=""; +/** + * Property URL + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.URL=""; +/** + * Property body + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.body=new HTMLElement(); +/** + * Property images + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.images=new HTMLCollection(); +/** + * Property applets + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.applets=new HTMLCollection(); +/** + * Property links + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.links=new HTMLCollection(); +/** + * Property forms + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.forms=new HTMLCollection(); +/** + * Property anchors + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.anchors=new HTMLCollection(); +/** + * Property cookie + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.cookie=""; +/** + * Property lastModified + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.lastModified=""; +/** + * function open() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.open = function(){}; +/** + * function close() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.close = function(){}; +/** + * function write(text) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} text + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.write = function(text){}; +/** + * function writeln(text) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} text + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.writeln = function(text){}; +/** + * function getElementsByName(elementName) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} elementName + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.getElementsByName = function(elementName){return new NodeList();}; + +/** + * Object HTMLElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments Element + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see Element + */ +function HTMLElement(){}; +HTMLElement.prototype = new Element(); +/** + * Property id + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.id=""; +/** + * Property title + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.title=""; +/** + * Property lang + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.lang=""; +/** + * Property dir + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.dir=""; +/** + * Property className + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.className=""; +/** + * Property innerHTML + * + * @type String + */ +HTMLElement.prototype.innerHTML=""; +/** + * Property offsetHeight + * + * @type Number + */ +HTMLElement.prototype.offsetHeight=0; +/** + * Property offsetWidth + * + * @type Number + */ +HTMLElement.prototype.offsetWidth=0; +/** + * Property offsetLeft + * + * @type Number + */ +HTMLElement.prototype.offsetLeft=0; +/** + * Property offsetTop + * + * @type Number + */ +HTMLElement.prototype.offsetTop=0; +/** + * Property offsetParent + * + * @type HTMLElement + */ +HTMLElement.prototype.offsetParent = new HTMLElement(); +/** + * Property scrollHeight + * + * @type Number + */ +HTMLElement.prototype.scrollHeight=0; +/** + * Property scrollWidth + * + * @type Number + */ +HTMLElement.prototype.scrollWidth=0; +/** + * Property scrollLeft + * + * @type Number + */ +HTMLElement.prototype.scrollLeft=0; +/** + * Property scrollTop + * + * @type Number + */ +HTMLElement.prototype.scrollTop=0; +/** + * Property style + * + * @type CSS2Properties + */ +HTMLElement.prototype.style = new CSS2Properties(); + +/** + * Object HTMLHtmlElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLHtmlElement(){}; +HTMLHtmlElement.prototype = new HTMLElement(); +/** + * Property version + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHtmlElement.prototype.version=""; + +/** + * Object HTMLHeadElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLHeadElement(){}; +HTMLHeadElement.prototype = new HTMLElement(); +/** + * Property profile + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHeadElement.prototype.profile=""; + +/** + * Object HTMLLinkElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLLinkElement(){}; +HTMLLinkElement.prototype = new HTMLElement(); +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.disabled=false; +/** + * Property charset + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.charset=""; +/** + * Property href + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.href=""; +/** + * Property hreflang + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.hreflang=""; +/** + * Property media + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.media=""; +/** + * Property rel + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.rel=""; +/** + * Property rev + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.rev=""; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.target=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.type=""; + +/** + * Object HTMLTitleElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTitleElement(){}; +HTMLTitleElement.prototype = new HTMLElement(); +/** + * Property text + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTitleElement.prototype.text=""; + +/** + * Object HTMLMetaElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLMetaElement(){}; +HTMLMetaElement.prototype = new HTMLElement(); +/** + * Property content + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMetaElement.prototype.content=""; +/** + * Property httpEquiv + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMetaElement.prototype.httpEquiv=""; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMetaElement.prototype.name=""; +/** + * Property scheme + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMetaElement.prototype.scheme=""; + +/** + * Object HTMLBaseElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLBaseElement(){}; +HTMLBaseElement.prototype = new HTMLElement(); +/** + * Property href + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseElement.prototype.href=""; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseElement.prototype.target=""; + +/** + * Object HTMLIsIndexElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLIsIndexElement(){}; +HTMLIsIndexElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIsIndexElement.prototype.form=new HTMLFormElement(); +/** + * Property prompt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIsIndexElement.prototype.prompt=""; + +/** + * Object HTMLStyleElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLStyleElement(){}; +HTMLStyleElement.prototype = new HTMLElement(); +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLStyleElement.prototype.disabled=false; +/** + * Property media + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLStyleElement.prototype.media=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLStyleElement.prototype.type=""; + +/** + * Object HTMLBodyElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLBodyElement(){}; +HTMLBodyElement.prototype = new HTMLElement(); +/** + * Property aLink + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.aLink=""; +/** + * Property background + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.background=""; +/** + * Property bgColor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.bgColor=""; +/** + * Property link + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.link=""; +/** + * Property text + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.text=""; +/** + * Property vLink + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.vLink=""; + +/** + * Object HTMLFormElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFormElement(){}; +HTMLFormElement.prototype = new HTMLElement(); +/** + * Property elements + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.elements=new HTMLCollection(); +/** + * Property length + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.length=0; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.name=""; +/** + * Property acceptCharset + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.acceptCharset=""; +/** + * Property action + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.action=""; +/** + * Property enctype + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.enctype=""; +/** + * Property method + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.method=""; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.target=""; +/** + * function submit() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.submit = function(){}; +/** + * function reset() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.reset = function(){}; + +/** + * Object HTMLSelectElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLSelectElement(){}; +HTMLSelectElement.prototype = new HTMLElement(); +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.type=""; +/** + * Property selectedIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.selectedIndex=0; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.value=""; +/** + * Property length + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.length=0; +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.form = new HTMLFormElement(); +/** + * Property options + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLOptionsCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.options= new HTMLOptionsCollection(); +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.disabled=false; +/** + * Property multiple + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.multiple=false; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.name=""; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.size=0; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.tabIndex=0; +/** + * function add(element, before) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {HTMLElement} element + * @param {HTMLElement} before + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.add = function(element, before){}; +/** + * function remove(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.remove = function(index){}; +/** + * function blur() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.blur = function(){}; +/** + * function focus() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.focus = function(){}; + +/** + * Object HTMLOptGroupElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLOptGroupElement(){}; +HTMLOptGroupElement.prototype = new HTMLElement(); +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptGroupElement.prototype.disabled=false; +/** + * Property label + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptGroupElement.prototype.label=""; + +/** + * Object Option() + * @constructor + * @param {String} text + * @param {String} value + * @param {Boolean} defaultSelected + * @param {Boolean} selected + */ +function Option(text, value, defaultSelected, selected){}; +Option.prototype = new HTMLOptionElement(); +/** + * Object HTMLOptionElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLOptionElement(){}; +HTMLOptionElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.form = new HTMLFormElement(); +/** + * Property defaultSelected + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.defaultSelected=false; +/** + * Property text + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.text=""; +/** + * Property index + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.index=0; +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.disabled=false; +/** + * Property label + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.label=""; +/** + * Property selected + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.selected=false; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.value=""; + +/** + * Object HTMLInputElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLInputElement(){}; +HTMLInputElement.prototype = new HTMLElement(); +/** + * Property defaultValue + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.defaultValue=""; +/** + * Property defaultChecked + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.defaultChecked=false; +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.form = new HTMLFormElement(); +/** + * Property accept + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.accept=""; +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.accessKey=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.align=""; +/** + * Property alt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.alt=""; +/** + * Property checked + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.checked=false; +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.disabled=false; +/** + * Property masLength + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.maxLenght=0; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.name=""; +/** + * Property readOnly + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.readOnly=false; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.size=0; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.src=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.tabIndex=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.type=""; +/** + * Property useMap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.useMap=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.value=""; +/** + * function blur() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.blur = function(){}; +/** + * function focus() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.focus = function(){}; +/** + * function select() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.select = function(){}; +/** + * function click() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.click = function(){}; + +/** + * Object HTMLTextAreaElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTextAreaElement(){}; +HTMLTextAreaElement.prototype = new HTMLElement(); +/** + * Property defaultValue + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.defaultValue=""; +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.form= new HTMLFormElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.accessKey=""; +/** + * Property cols + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.cols=0; +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.disabled=false; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.name=""; +/** + * Property readOnly + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.readOnly=false; +/** + * Property rows + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.rows=0; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.tabIndex=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.type=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.value=""; +/** + * function blur() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.blur = function(){}; +/** + * function focus() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.focus = function(){}; +/** + * function select() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.select = function(){}; + +/** + * Object HTMLButtonElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLButtonElement(){}; +HTMLButtonElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.form = new HTMLFormElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.accessKey = ""; +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.disabled=false; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.name=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.tabIndex=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.type=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.value=""; + +/** + * Object HTMLLabelElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLLabelElement(){}; +HTMLLabelElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLabelElement.prototype.form = new HTMLFormElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLabelElement.prototype.accessKey=""; +/** + * Property htmlFor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLabelElement.prototype.htmlFor=""; + +/** + * Object HTMLFieldSetElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFieldSetElement(){}; +HTMLFieldSetElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFieldSetElement.prototype.form = new HTMLFormElement(); + +/** + * Object HTMLLegendElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLLegendElement(){}; +HTMLLegendElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLegendElement.prototype.form = new HTMLFormElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLegendElement.prototype.accessKey=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLegendElement.prototype.align=""; + +/** + * Object HTMLUListElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLUListElement(){}; +HTMLUListElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLUListElement.prototype.compact=false; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLUListElement.prototype.type=""; + +/** + * Object HTMLOListElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLOListElement(){}; +HTMLOListElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOListElement.prototype.compact=false; +/** + * Property start + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOListElement.prototype.start=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOListElement.prototype.type=""; + +/** + * Object HTMLDListElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLDListElement(){}; +HTMLDListElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDListElement.prototype.compact=false; + +/** + * Object HTMLDirectoryElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLDirectoryElement(){}; +HTMLDirectoryElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDirectoryElement.prototype.compact=false; + +/** + * Object HTMLMenuElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLMenuElement(){}; +HTMLMenuElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMenuElement.prototype.compact=false; + +/** + * Object HTMLLIElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLLIElement(){}; +HTMLLIElement.prototype = new HTMLElement(); +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLIElement.prototype.type=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLIElement.prototype.value=0; + +/** + * Object HTMLDivElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLDivElement(){}; +HTMLDivElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDivElement.prototype.align=""; + +/** + * Object HTMLParagraphElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLParagraphElement(){}; +HTMLParagraphElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParagraphElement.prototype.align=""; + +/** + * Object HTMLHeadingElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLHeadingElement(){}; +HTMLHeadingElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHeadingElement.prototype.align=""; + +/** + * Object HTMLQuoteElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLQuoteElement(){}; +HTMLQuoteElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLQuoteElement.prototype.align=""; + +/** + * Object HTMLPreElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLPreElement(){}; +HTMLPreElement.prototype = new HTMLElement(); +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLPreElement.prototype.width=0; + +/** + * Object HTMLBRElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLBRElement(){}; +HTMLBRElement.prototype = new HTMLElement(); +/** + * Property clear + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBRElement.prototype.clear=""; + +/** + * Object HTMLBaseFontElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLBaseFontElement(){}; +HTMLBaseFontElement.prototype = new HTMLElement(); +/** + * Property color + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseFontElement.prototype.color=""; +/** + * Property face + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseFontElement.prototype.face=""; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseFontElement.prototype.size=0; + +/** + * Object HTMLBaseFontElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFontElement(){}; +HTMLFontElement.prototype = new HTMLElement(); +/** + * Property color + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFontElement.prototype.color=""; +/** + * Property face + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFontElement.prototype.face=""; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFontElement.prototype.size=0; + +/** + * Object HTMLHRElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLHRElement(){}; +HTMLHRElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHRElement.prototype.align=""; +/** + * Property noShade + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHRElement.prototype.noShade=false; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHRElement.prototype.size=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHRElement.prototype.width=""; + +/** + * Object HTMLModElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLModElement(){}; +HTMLModElement.prototype = new HTMLElement(); +/** + * Property cite + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLModElement.prototype.cite=""; +/** + * Property dateTime + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLModElement.prototype.dateTime=""; + +/** + * Object HTMLAnchorElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLAnchorElement(){}; +HTMLAnchorElement.prototype = new HTMLElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.accessKey=""; +/** + * Property charset + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.charset=""; +/** + * Property coords + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.coords=""; +/** + * Property href + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.href=""; +/** + * Property hreflang + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.hreflang=""; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.name=""; +/** + * Property rel + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.rel=""; +/** + * Property rev + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.rev=""; +/** + * Property shape + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.shape=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.tabIndex=0; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.target=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.type=""; +/** + * function blur() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.blur = function(){}; +/** + * function focus() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.focus = function(){}; + +/** + * Object Image() + * @constructor + * @param {Number} width + * @param {Number} height + */ +function Image(width, height){}; +Image.prototype = new HTMLImageElement(); +/** + * Object HTMLImageElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLImageElement(){}; +HTMLImageElement.prototype = new HTMLElement(); +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.name=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.align=""; +/** + * Property alt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.alt=""; +/** + * Property border + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.border=""; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.height=0; +/** + * Property hspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.hspace=0; +/** + * Property isMap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.isMap=false; +/** + * Property longDesc + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.longDesc=""; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.src=""; +/** + * Property useMap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.useMap=""; +/** + * Property vspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.vspace=0; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.width=0; + +/** + * Object HTMLObjectElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLObjectElement(){}; +HTMLObjectElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.form = new HTMLFormElement(); +/** + * Property code + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.code=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.align=""; +/** + * Property archive + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.archive=""; +/** + * Property border + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.border=""; +/** + * Property codeBase + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.codeBase=""; +/** + * Property codeType + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.codeType=""; +/** + * Property data + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.data=""; +/** + * Property declare + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.declare=false; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.height=""; +/** + * Property hspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.hspace=0; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.name=""; +/** + * Property standby + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.standby=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.tabIndex=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.type=""; +/** + * Property useMap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.useMap=""; +/** + * Property vspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.vspace=0; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.width=""; +/** + * Property contentDocument + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Document + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.contentDocument= new HTMLDocument(); + +/** + * Object HTMLParamElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLParamElement(){}; +HTMLParamElement.prototype = new HTMLElement(); +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParamElement.prototype.name=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParamElement.prototype.type=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParamElement.prototype.value=""; +/** + * Property valueType + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParamElement.prototype.valueType=""; + +/** + * Object HTMLAppletElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLAppletElement(){}; +HTMLAppletElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.align=""; +/** + * Property alt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.alt=""; +/** + * Property archive + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.archive=""; +/** + * Property code + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.code=""; +/** + * Property codeBase + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.codeBase=""; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.hight=""; +/** + * Property hspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.hspace=0; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.name=""; +/** + * Property object + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.object=""; +/** + * Property vspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.vspace=0; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.width=""; + +/** + * Object HTMLMapElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLMapElement(){}; +HTMLMapElement.prototype = new HTMLElement(); +/** + * Property areas + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMapElement.prototype.areas = new HTMLCollection(); +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMapElement.prototype.name=""; + +/** + * Object HTMLAreaElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLAreaElement(){}; +HTMLAreaElement.prototype = new HTMLElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.accessKey=""; +/** + * Property alt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.alt=""; +/** + * Property coords + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.coords=""; +/** + * Property href + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.href=""; +/** + * Property noHref + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.noHref=false; +/** + * Property shape + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.shape=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.tabIndex=0; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.target=""; + +/** + * Object HTMLScriptElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLScriptElement(){}; +HTMLScriptElement.prototype = new HTMLElement(); +/** + * Property text + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.text=""; +/** + * Property htmlFor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.htmlFor=""; +/** + * Property event + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.event=""; +/** + * Property charset + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.charset=""; +/** + * Property defer + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.defer=""; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.src=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.type=""; + +/** + * Object HTMLTableElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableElement(){}; +HTMLTableElement.prototype = new HTMLElement(); +/** + * Property caption + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLTableCaptionElement + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.caption = new HTMLTableCaptionElement(); +/** + * Property tHead + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLTableSectionElement + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.tHead = new HTMLTableSelectionElement(); +/** + * Property tFoot + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLTableSectionElement + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.tFoot = new HTMLTableSelectionElement(); +/** + * Property rows + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.rows = new HTMLCollection(); +/** + * Property tBodies + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.tBodies = new HTMLCollection(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.align=""; +/** + * Property bgColor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.bgColor=""; +/** + * Property border + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.border=""; +/** + * Property cellPadding + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.cellPadding=""; +/** + * Property cellSpacing + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.cellSpacing=""; +/** + * Property frame + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.frame=""; +/** + * Property rules + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.rules=""; +/** + * Property summary + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.summary=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.width=""; +/** + * function createTHead(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @returns {HTMLElement} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.createTHead = function(){return new HTMLElement();}; +/** + * function deleteTHead(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.deleteTHead = function(){}; +/** + * function createTFoot(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @returns {HTMLElement} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.createTFoot = function(){return new HTMLElement();}; +/** + * function deleteTFoot(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.deleteTFoot = function(){}; +/** + * function createCaption(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @returns {HTMLElement} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.createCaption = function(){return new HTMLElement();}; +/** + * function deleteCaption(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.deleteCaption = function(){}; +/** + * function insertRow(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {HTMLElement} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.insertRow = function(index){return new HTMLElement();}; +/** + * function deleteRow(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.deleteRow = function(index){}; + +/** + * Object HTMLTableCaptionElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableCaptionElement(){}; +HTMLTableCaptionElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCaptionElement.prototype.align=""; + +/** + * Object HTMLTableColElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableColElement(){}; +HTMLTableColElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.align=""; +/** + * Property ch + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.ch=""; +/** + * Property chOff + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.chOff=""; +/** + * Property span + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.span=0; +/** + * Property vAlign + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.vAlign=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.width=""; + +/** + * Object HTMLTableSelectionElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableSelectionElement(){}; +HTMLTableSelectionElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.align=""; +/** + * Property ch + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.ch=""; +/** + * Property chOff + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.chOff=""; +/** + * Property vAlign + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.vAlign=""; +/** + * Property rows + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.rows=""; +/** + * function insertRow(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {HTMLElement} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.insertRow = function(index){return new HTMLElement();}; +/** + * function deleteRow(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.deleteRow = function(index){}; + +/** + * Object HTMLTableRowElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableRowElement(){}; +HTMLTableRowElement.prototype = new HTMLElement(); +/** + * Property rowIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.rowIndex=0; +/** + * Property sectionRowIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.sectionRowIndex=0; +/** + * Property cells + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.cells = new HTMLCollection(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.align=""; +/** + * Property bgColor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.bgColor=""; +/** + * Property ch + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.ch=""; +/** + * Property chOff + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.chOff=""; +/** + * Property vAlign + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.vAlign=""; +/** + * function insertCell(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {HTMLElement} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.insertCell = function(index){return new HTMLElement();}; +/** + * function insertCell(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.deleteCell = function(index){}; + +/** + * Object HTMLTableRowElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableCellElement(){}; +HTMLTableCellElement.prototype = new HTMLElement(); +/** + * Property cellIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.cellIndex=0; +/** + * Property abbr + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.abbr=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.align=""; +/** + * Property axis + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.axis=""; +/** + * Property bgColor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.bgColor=""; +/** + * Property ch + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.ch=""; +/** + * Property chOff + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.chOff=""; +/** + * Property colSpan + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.colSpan=0; +/** + * Property headers + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.headers=""; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.height=""; +/** + * Property noWrap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.noWrap=false; +/** + * Property rowSpan + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.rowSpan=0; +/** + * Property scope + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.scope=""; +/** + * Property vAlign + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.vAlign=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.width=""; + +/** + * Object HTMLFrameSetElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFrameSetElement(){}; +HTMLFrameSetElement.prototype = new HTMLElement(); +/** + * Property cols + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameSetElement.prototype.cols=""; +/** + * Property rows + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameSetElement.prototype.rows=""; + +/** + * Object HTMLFrameElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFrameElement(){}; +HTMLFrameElement.prototype = new HTMLElement(); +/** + * Property frameBorder + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.frameBorder=""; +/** + * Property longDesc + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.longDesc=""; +/** + * Property marginHeight + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.marginHeight=""; +/** + * Property marginWidth + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.marginWidth=""; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.name=""; +/** + * Property noResize + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.noResize=false; +/** + * Property scrolling + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.scrolling=""; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.src=""; +/** + * Property contentDocument + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Document + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.contentDocument= new HTMLDocument(); + +/** + * Object HTMLIFrameElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLIFrameElement(){}; +HTMLIFrameElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.align=""; +/** + * Property frameBorder + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.frameBorder=""; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.height=""; +/** + * Property longDesc + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.longDesc=""; +/** + * Property marginHeight + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.marginHeight=""; +/** + * Property marginWidth + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.marginWidth=""; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.name=""; +/** + * Property scrolling + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.scrolling=""; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.src=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.width=""; +/** + * Property contentDocument + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Document + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.contentDocument= new HTMLDocument(); + +/* Stylesheets */ +/** + * Object CSS2Properties() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Style Specification. + */ +function CSS2Properties(){}; +CSS2Properties.prototype = new Object(); \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/browserWindow.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/browserWindow.js new file mode 100644 index 0000000..e93adf8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/browserWindow.js @@ -0,0 +1,618 @@ +/******************************************************************************* + * Copyright (c) 2008, 2013 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +function BarProp(){}; +BarProp.prototype = new Array(); + +/** + * Object Window() + * @super Global + * @constructor + * @since Common Usage, no standard +*/ +function Window(){}; +Window.prototype = new EventTarget(); +Window.prototype.self = new Window(); +Window.prototype.window = new Window(); +Window.prototype.frames = new Array(); +/** + * Property closed + * @type Boolean + * @memberOf Window + */ +Window.prototype.closed = new Boolean(); +/** + * Property defaultStatus + * @type String + * @memberOf Window + */ +Window.prototype.defaultStatus = ""; +/** + * Property document + * @type Document + * @memberOf Window + */ +Window.prototype.document= new HTMLDocument(); +/** + * Property history + * @type History + * @memberOf Window + */ +Window.prototype.history= new History(); +/** + * Property location + * @type Location + * @memberOf Window + */ +Window.prototype.location=new Location(); +/** + * Property name + * @type String + * @memberOf Window + */ +Window.prototype.name = ""; +/** + * Property navigator + * @type Navigator + * @memberOf Window + */ +Window.prototype.navigator = new Navigator(); +/** + * Property opener + * @type Window + * @memberOf Window + */ +Window.prototype.opener = new Window(); +/** + * Property outerWidth + * @type Number + * @memberOf Window + */ +Window.prototype.outerWidth = 0; +/** + * Property outerHeight + * @type Number + * @memberOf Window + */ +Window.prototype.outerHeight = 0; +/** + * Property pageXOffset + * @type Number + * @memberOf Window + */ +Window.prototype.pageXOffset = 0; +/** + * Property pageYOffset + * @type Number + * @memberOf Window + */ +Window.prototype.pageYOffset = 0; +/** + * Property parent + * @type Window + * @memberOf Window + */ +Window.prototype.parent = new Window(); +/** + * Property screen + * @type Screen + * @memberOf Window + */ +Window.prototype.screen = new Screen(); +/** + * Property status + * @type String + * @memberOf Window + */ +Window.prototype.status = ""; +/** + * Property top + * @type Window + * @memberOf Window + */ +Window.prototype.top = new Window(); + + +/* + * These properties may need to be moved into a browswer specific library. + */ + + /** + * Property innerWidth + * @type Number + * @memberOf Window + */ +Window.prototype.innerWidth = 0; +/** + * Property innerHeight + * @type Number + * @memberOf Window + */ +Window.prototype.innerHeight = 0; +/** + * Property screenX + * @type Number + * @memberOf Window + */ +Window.prototype.screenX = 0; +/** + * Property screenY + * @type Number + * @memberOf Window + */ +Window.prototype.screenY = 0; +/** + * Property screenLeft + * @type Number + * @memberOf Window + */ +Window.prototype.screenLeft = 0; +/** + * Property screenTop + * @type Number + * @memberOf Window + */ +Window.prototype.screenTop = 0; +//Window.prototype.event = new Event(); +Window.prototype.length = 0; +Window.prototype.scrollbars= new BarProp(); +Window.prototype.scrollX=0; +Window.prototype.scrollY=0; +Window.prototype.content= new Window(); +Window.prototype.menubar= new BarProp(); +Window.prototype.toolbar= new BarProp(); +Window.prototype.locationbar= new BarProp(); +Window.prototype.personalbar= new BarProp(); +Window.prototype.statusbar= new BarProp(); +Window.prototype.directories= new BarProp(); +Window.prototype.scrollMaxX=0; +Window.prototype.scrollMaxY=0; +Window.prototype.fullScreen=""; +Window.prototype.frameElement=""; +/* End properites */ + +/** + * function alert() + * @param {String} message + * @memberOf Window + */ +Window.prototype.alert = function(message){}; +/** + * function blur() + * @memberOf Window + */ +Window.prototype.blur = function(){}; +/** + * function clearInterval(intervalID) + * @param intervalID + * @memberOf Window + */ +Window.prototype.clearInterval = function(intervalID){}; +/** + * function clearTimeout(intervalID) + * @param intervalID + * @memberOf Window + */ +Window.prototype.clearTimeout = function(intervalID){}; +/** + * function close() + * @memberOf Window + */ +Window.prototype.close = function(){}; +/** + * function confirm() + * @param {String} arg + * @memberOf Window + * @returns {Boolean} + */ +Window.prototype.confirm = function(arg){return false;}; +/** + * function focus() + * @memberOf Window + */ +Window.prototype.focus = function(){}; +/** + * function getComputedStyle(element, pseudoElt ) + * @param {Element} element + * @param {String} pseudoElt + * @memberOf Window + * @returns {Object} + */ +Window.prototype.getComputedStyle = function(element,pseudoElt ){return new Object();}; +/** + * function moveTo(x, y) + * @param {Number} x + * @param {Number} y + * @memberOf Window + */ +Window.prototype.moveTo = function(x,y){}; +/** + * function moveBy(deltaX, deltaY) + * @param {Number} deltaX + * @param {Number} deltaY + * @memberOf Window + */ +Window.prototype.moveBy = function(deltaX,deltaY){}; +/** + * function open(optionalArg1, optionalArg2, optionalArg3, optionalArg4) + * @param {String} url + * @param {String} windowName + * @param {String} windowFeatures + * @param {Boolean} optionalArg4 + * @memberOf Window + * @returns {Window} + */ +Window.prototype.open = function(url, windowName, windowFeatures, optionalArg4){return new Window();}; +/** + * function print() + * @memberOf Window + */ +Window.prototype.print = function(){}; +/** + * function prompt(text, value) + * @param {String} text + * @param {String} value + * @memberOf Window + * @returns {String} + */ +Window.prototype.prompt = function(text, value){return "";}; +/** + * function resizeTo(newOuterWidth,newOuterHeight) + * @param {Number} newOuterWidth + * @param {Number} newOuterHeighr + * @memberOf Window + */ +Window.prototype.resizeTo=function(newOuterWidth,newOuterHeight){}; +/** + * function resizeBy(deltaX, deltaY) + * @param {Number} deltaX + * @param {Number} deltaY + * @memberOf Window + */ +Window.prototype.resizeBy=function(deltaX,deltaY){}; +/** + * function scrollTo(x,y) + * @param {Number} x + * @param {Number} y + * @memberOf Window + */ +Window.prototype.scrollTo=function(x,y){}; +/** + * function scrollBy(pixelX,pixelY) + * @param {Number} pixelX + * @param {Number} pixelY + * @memberOf Window + */ +Window.prototype.scrollBy=function(pixelX,pixelY){}; +/** + * function setInterval(arg1, arg2) + * @param {Function} callback + * @param {Number} delay + * @memberOf Window + * @returns {Number} + */ +Window.prototype.setInterval=function(callback, delay){return 0;}; +/** + * function setTimeout(callback, delay) + * @param {Function} callback + * @param {Number} delay + * @memberOf Window + * @returns {Number} + */ +Window.prototype.setTimeout=function(callback, delay){ return 0;}; +/** + * function atob(encodedData) + * @param {String} encodedData + * @memberOf Window + * @returns {String} + */ +Window.prototype.atob=function(encodedData){return "";}; +/** + * function btoa(arg) + * @param {String} stringToEncode + * @memberOf Window + * @returns {String} + */ +Window.prototype.btoa=function(stringToEncode){return "";}; +/** + * function setResizable(resizable) + * @param {Boolean} resizable + * @memberOf Window + */ +Window.prototype.setResizable=function(resizable){}; + +Window.prototype.captureEvents=function(eventType){}; +Window.prototype.releaseEvents=function(eventType){}; +Window.prototype.routeEvent=function(eventType){}; +Window.prototype.enableExternalCapture=function(){}; +Window.prototype.disableExternalCapture=function(){}; +Window.prototype.find=function(){}; +Window.prototype.back=function(){}; +Window.prototype.forward=function(){}; +Window.prototype.home=function(){}; +Window.prototype.stop=function(){}; +/** + * @param {Number} pixelX + * @param {Number} pixelY + */ +Window.prototype.scroll=function(pixelX,pixelY){}; +/* End functions */ + +/** + * Object History() + * @super Object + * @constructor + * @since Common Usage, no standard + */ +function History(){}; +History.prototype=new Object(); +History.prototype.history = new History(); +/** + * Property length + * @type Number + * @memberOf History + */ +History.prototype.length = 0; +/** + * function back() + * @memberOf History + */ +History.prototype.back = function(){}; +/** + * function forward() + * @memberOf History + */ +History.prototype.forward = function(){}; +/** + * function back() + * @param arg + * @memberOf History + */ +History.prototype.go = function(arg){}; + +/** + * Object Location() + * @super Object + * @constructor + * @since Common Usage, no standard + */ +function Location(){}; +Location.prototype = new Object(); +Location.prototype.location = new Location(); +/** + * Property hash + * @type String + * @memberOf Location + */ +Location.prototype.hash = ""; +/** + * Property host + * @type String + * @memberOf Location + */ +Location.prototype.host = ""; +/** + * Property hostname + * @type String + * @memberOf Location + */ +Location.prototype.hostname = ""; +/** + * Property href + * @type String + * @memberOf Location + */ +Location.prototype.href = ""; +/** + * Property pathname + * @type String + * @memberOf Location + */ +Location.prototype.pathname = ""; +/** + * Property port + * @type String + * @memberOf Location + */ +Location.prototype.port = ""; +/** + * Property protocol + * @type String + * @memberOf Location + */ +Location.prototype.protocol = ""; +/** + * Property search + * @type String + * @memberOf Location + */ +Location.prototype.search = ""; +/** + * function assign(arg) + * @param {String} arg + * @memberOf Location + */ +Location.prototype.assign = function(arg){}; +/** + * function reload(optionalArg) + * @param {Boolean} optionalArg + * @memberOf Location + */ +Location.prototype.reload = function(optionalArg){}; +/** + * function replace(arg) + * @param {String} arg + * @memberOf Location + */ +Location.prototype.replace = function(arg){}; + +/** + * Object Navigator() + * @super Object + * @constructor + * @since Common Usage, no standard +*/ +function Navigator(){}; +Navigator.prototype = new Object(); +Navigator.prototype.navigator = new Navigator(); +/** + * Property appCodeName + * @type String + * @memberOf Navigator + */ +Navigator.prototype.appCodeName = ""; +/** + * Property appName + * @type String + * @memberOf Navigator + */ +Navigator.prototype.appName = ""; +/** + * Property appVersion + * @type String + * @memberOf Navigator + */ +Navigator.prototype.appVersion = ""; +/** + * Property cookieEnabled + * @type Boolean + * @memberOf Navigator + */ +Navigator.prototype.cookieEnabled = new Boolean(); +/** + * Property mimeTypes + * @type Array + * @memberOf Navigator + */ +Navigator.prototype.mimeTypes = new Array(); +/** + * Property platform + * @type String + * @memberOf Navigator + */ +Navigator.prototype.platform = ""; +/** + * Property plugins + * @type Array + * @memberOf Navigator + */ +Navigator.prototype.plugins = new Array(); +/** + * Property userAgent + * @type String + * @memberOf Navigator + */ +Navigator.prototype.userAgent = ""; +/** + * function javaEnabled() + * @returns {Boolean} + * @memberOf Navigator + */ +Navigator.prototype.javaEnabled = function(){return false;}; + +/** + * Object Screen() + * @super Object + * @constructor + * @since Common Usage, no standard +*/ +function Screen(){}; +Screen.prototype = new Object(); +Screen.prototype.screen = new Screen(); +/** + * Property availHeight + * @type Number + * @memberOf Screen + */ +Navigator.prototype.availHeight = 0; +/** + * Property availWidth + * @type Number + * @memberOf Screen + */ +Navigator.prototype.availWidth = 0; +/** + * Property colorDepth + * @type Number + * @memberOf Screen + */ +Navigator.prototype.colorDepth = 0; +/** + * Property height + * @type Number + * @memberOf Screen + */ +Navigator.prototype.height = 0; +/** + * Property width + * @type Number + * @memberOf Screen + */ +Navigator.prototype.width = 0; + +Event.prototype=new Object(); +// PhaseType +Event.prototype.CAPTURING_PHASE = 1; +Event.prototype.AT_TARGET = 2; +Event.prototype.BUBBLING_PHASE = 3; + +Event.prototype.type=""; +Event.prototype.target=new EventTarget(); +Event.prototype.currentTarget=new EventTarget(); +Event.prototype.eventPhase=0; +Event.prototype.bubbles=false; +Event.prototype.cancelable=false; +Event.prototype.timeStamp=0; +Event.prototype.stopPropagation=function(){}; +Event.prototype.preventDefault=function(){}; +/** + * @param {String} eventTypeArg + * @param {Boolean} canBubbleArg + * @param {Boolean} cancelableArg + */ +Event.prototype.initEvent=function(eventTypeArg, + canBubbleArg, + cancelableArg){}; +function EventListener(){}; +EventListener.prototype=new Object(); +/** + * @param {Event} event + * @memberOf EventListener + */ +EventListener.prototype.handleEvent=function(event){}; + +function EventTarget(){}; +EventTarget.prototype=new Object(); +/* + * These functions may need to be moved into a browser specific library. + */ +/** + * @memberOf Window + * @param event {Event} + * @throws {EventException} + */ +EventTarget.prototype.dispatchEvent=function(event){}; + +// https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener +/** + * @memberOf Window + * @param {String} type + * @param {EventListener} listener + * @param {Boolean} useCapture + */ +EventTarget.prototype.addEventListener=function(type, listener, useCapture){}; +// https://developer.mozilla.org/en-US/docs/DOM/element.removeEventListener +/** + * @memberOf Window + * @param {String} type + * @param {EventListener} listener + * @param {Boolean} useCapture + */ +EventTarget.prototype.removeEventListener=function(type, listener, useCapture){}; diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/dom5.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/dom5.js new file mode 100644 index 0000000..30be91a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/dom5.js @@ -0,0 +1,922 @@ +/******************************************************************************* + * Copyright (c) 2013 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * IBM Corporation - initial API and implementation + ******************************************************************************/ + +/** + * function querySelector(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf Document + * @returns {Element} + */ +Document.prototype.querySelector=function(selectors){return new Element();}; + +/** + * function querySelectorAll(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf Document + * @returns {NodeList} + */ +Document.prototype.querySelectorAll=function(selectors){return new NodeList();}; + +/** + * function querySelector(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf DocumentFragment + * @returns {Element} + */ +DocumentFragment.prototype.querySelector=function(selectors){return new Element();}; + +/** + * function querySelectorAll(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf DocumentFragment + * @returns {NodeList} + */ +DocumentFragment.prototype.querySelectorAll=function(selectors){return new NodeList();}; + +/** + * function querySelector(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf Element + * @returns {Element} + */ +Element.prototype.querySelector=function(selectors){return new Element();}; + +/** + * function querySelectorAll(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf Element + * @returns {NodeList} + */ +Element.prototype.querySelectorAll=function(selectors){return new NodeList();}; + +/** + * Property state + * @type Object + * @memberOf History + */ +History.prototype.state=new Object(); + +/** + * function pushState(data,title,url) + * http://www.w3.org/TR/2012/CR-html5-20121217/browsers.html#history + * @param {Object} data + * @param {String} title + * @param {String} url - optional + * @memberOf History + */ +History.prototype.pushState=function(data,title,url){}; + +/** + * function replaceState(data,title,url) + * http://www.w3.org/TR/2012/CR-html5-20121217/browsers.html#history + * @param {Object} data + * @param {String} title + * @param {String} url - optional + * @memberOf History + */ +History.prototype.replaceState=function(data,title,url){}; + +/** + * Property sessionStorage + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @type Storage + * @memberOf Window + */ +Window.prototype.sessionStorage=new Storage(); + +/** + * Property localStorage + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @type Storage + * @memberOf Window + */ +Window.prototype.localStorage=new Storage(); + +/** + * Object Storage + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + */ +function Storage(){}; +Storage.prototype=new Object(); + +/** + * Property length + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @type Number + * @memberOf Storage + */ +Storage.prototype.length=new Number(); + +/** + * function key(index) + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @param {Number} index + * @memberOf Storage + * @returns String + */ +Storage.prototype.key=function(index){return new String();}; + +/** + * function getItem(key) + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @param {String} key + * @memberOf Storage + * @returns String + */ +Storage.prototype.getItem=function(key){return new String();}; + +/** + * function setItem(key,value) + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @param {String} key + * @param {String} value + * @memberOf Storage + */ +Storage.prototype.setItem=function(key,value){}; + +/** + * function removeItem(key) + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @param {String} key + * @memberOf Storage + */ +Storage.prototype.removeItem=function(key){}; + +/** + * function clear() + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @memberOf Storage + */ +Storage.prototype.clear=function(){}; + +/** + * Object WebSocket + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constructor + * @param {String} url + */ +function WebSocket(url){}; +WebSocket.prototype=new Object(); + +/** + * Constant WebSocket.CONNECTING=0 + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constant + * @type Number + */ +WebSocket.prototype.CONNECTING=0; + +/** + * Constant WebSocket.OPEN=1 + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constant + * @type Number + */ +WebSocket.prototype.OPEN=1; + +/** + * Constant WebSocket.CLOSING=2 + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constant + * @type Number + */ +WebSocket.prototype.CLOSING=2; + +/** + * Constant WebSocket.CLOSED=3 + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constant + * @type Number + */ +WebSocket.prototype.CLOSED=3; + +/** + * Property url + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type String + * @memberOf WebSocket + */ +WebSocket.prototype.url=new String(); + +/** + * Property readyState + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type Number + * @memberOf WebSocket + */ +WebSocket.prototype.readyState=new Number(); + +/** + * Property bufferedAmount + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type Number + * @memberOf WebSocket + */ +WebSocket.prototype.bufferedAmount=new Number(); + +/** + * Property extensions + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type String + * @memberOf WebSocket + */ +WebSocket.prototype.extensions=new String(); + +/** + * Property protocol + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type String + * @memberOf WebSocket + */ +WebSocket.prototype.protocol=new String(); + +/** + * Property binaryType + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type String + * @memberOf WebSocket + */ +WebSocket.prototype.binaryType=new String(); + +/** + * function close(code,reason) + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @param {Number} code - optional + * @param {String} reason - optional + * @memberOf WebSocket + */ +WebSocket.prototype.close=function(code,reason){}; + +/** + * function send(data) + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @param {Object} data - may be a String, Blob, ArrayBuffer, or ArrayBufferView + * @memberOf WebSocket + */ +WebSocket.prototype.send=function(data){}; + +/** + * Property geolocation + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Geolocation + * @memberOf Navigator + */ +Navigator.prototype.geolocation=new Geolocation(); + +/** + * Object Geolocation + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function Geolocation(){}; +Geolocation.prototype=new Object(); + +/** + * function getCurrentPosition(successCallback,errorCallback,options) + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510/ + * @param {Function} successCallback (Position pos) + * @param {Function} errorCallback (PositionError error) - optional + * @param {PositionOptions} options - optional + * @memberOf Geolocation + */ +Geolocation.prototype.getCurrentPosition=function(successCallback,errorCallback,options){}; + +/** + * function watchPosition(successCallback,errorCallback,options) + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510/ + * @param {Function} successCallback (Position pos) + * @param {Function} errorCallback (PositionError error) - optional + * @param {PositionOptions} options - optional + * @memberOf Geolocation + * @returns {Number} + */ +Geolocation.prototype.watchPosition=function(successCallback,errorCallback,options){return new Number();}; + +/** + * function clearWatch(watchId) + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @param {Number} watchId + * @memberOf Geolocation + */ +Geolocation.prototype.clearWatch=function(watchId){}; + +/** + * Object Coordinates + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function Coordinates(){}; +Coordinates.prototype=new Object(); + +/** + * Property latitude + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.latitude=new Number();; + +/** + * Property longitude + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.longitude=new Number();; + +/** + * Property altitude + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.altitude=new Number();; + +/** + * Property accuracy + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.accuracy=new Number();; + +/** + * Property altitudeAccuracy + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.altitudeAccuracy=new Number();; + +/** + * Property heading + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.heading=new Number();; + +/** + * Property speed + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.speed=new Number(); + +/** + * Object Position + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function Position(){}; +Position.prototype=new Object(); + +/** + * Property coords + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Coordinates + * @memberOf Position + */ +Position.prototype.coords=new Coordinates(); + +/** + * Property timestamp + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Position + */ +Position.prototype.timestamp=new Number; + +/** + * Object PositionError + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function PositionError(){}; +PositionError.prototype=new Object(); + +/** + * Constant PositionError.PERMISSION_DENIED=1 + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @constant + * @type Number + */ +PositionError.prototype.PERMISSION_DENIED=1; + +/** + * Constant PositionError.POSITION_UNAVAILABLE=2 + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @constant + * @type Number + */ +PositionError.prototype.POSITION_UNAVAILABLE=2; + +/** + * Constant PositionError.TIMEOUT=3 + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @constant + * @type Number + */ +PositionError.prototype.TIMEOUT=3; + +/** + * Property code + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf PositionError + */ +PositionError.prototype.code=new Number(); + +/** + * Property message + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type String + * @memberOf PositionError + */ +PositionError.prototype.message=new String(); + +/** + * Object PositionOptions + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function PositionOptions(){}; +PositionOptions.prototype=new Object(); + +/** + * Property enableHighAccuracy + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Boolean + * @memberOf PositionOptions + */ +PositionOptions.prototype.enableHighAccuracy=new Boolean(); + +/** + * Property timeout + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf PositionOptions + */ +PositionOptions.prototype.timeout=new Number(); + +/** + * Property maximumAge + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf PositionOptions + */ +PositionOptions.prototype.maximumAge=new Number(); + +/** + * Object TimeRanges + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + */ +function TimeRanges(){}; +TimeRanges.prototype=new Object(); + +/** + * Property length + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf TimeRanges + */ +TimeRanges.prototype.length=new Number(); + +/** + * function start(index) + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @param {Number} index + * @memberOf TimeRanges + * @returns {Number} + */ +function start(index) {return new Number();}; + +/** + * function end(index) + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @param {Number} index + * @memberOf TimeRanges + * @returns {Number} + */ +function end(index) {return new Number();}; + +/** + * Object MediaError + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + */ +function MediaError(){}; +MediaError.prototype=new Object(); + +/** + * Constant MediaError.MEDIA_ERR_ABORTED=1 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +MediaError.prototype.MEDIA_ERR_ABORTED=1; + +/** + * Constant MediaError.MEDIA_ERR_NETWORK=2 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +MediaError.prototype.MEDIA_ERR_NETWORK=2; + +/** + * Constant MediaError.MEDIA_ERR_DECODED=3 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +MediaError.prototype.MEDIA_ERR_DECODE=3; + +/** + * Constant MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED=4 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +MediaError.prototype.MEDIA_ERR_SRC_NOT_SUPPORTED=4; + +/** + * Property code + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf MediaError + */ +MediaError.prototype.code=new Number(); + +/** + * Object HTMLMediaElement + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @augments HTMLElement + * @see HTMLElement + */ +function HTMLMediaElement(){}; +HTMLMediaElement.prototype = new HTMLElement(); + +/** + * Property src + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.src=new String(); + +/** + * Property currentSrc + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.currentSrc=new String(); + +/** + * Property crossOrigin + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.crossOrigin=new String(); + +/** + * Constant HTMLMediaElement.NETWORK_EMPTY=0 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.NETWORK_EMPTY=0; + +/** + * Constant HTMLMediaElement.NETWORK_IDLE=1 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.NETWORK_IDLE=1; + +/** + * Constant HTMLMediaElement.NETWORK_LOADING=2 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.NETWORK_LOADING=2; + +/** + * Constant HTMLMediaElement.NETWORK_NO_SOURCE=3 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.NETWORK_NO_SOURCE=3; + +/** + * Property networkState + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.networkState=new Number(); + +/** + * Property preload + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.preload=new String(); + +/** + * Property buffered + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type TimeRanges + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.buffered=new TimeRanges(); + +/** + * function load() + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.load=function(){}; + +/** + * function canPlayType(type) + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @param {String} type + * @memberOf HTMLMediaElement + * @returns {String} + */ +HTMLMediaElement.prototype.canPlayType=function(type){new String();}; + +/** + * Constant HTMLMediaElement.HAVE_NOTHING=0 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_NOTHING=0; + +/** + * Constant HTMLMediaElement.HAVE_METADATA=1 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_METADATA=1; + +/** + * Constant HTMLMediaElement.HAVE_CURRENT_DATA=2 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_CURRENT_DATA=2; + +/** + * Constant HTMLMediaElement.HAVE_FUTURE_DATA=3 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_FUTURE_DATA=3; + +/** + * Constant HTMLMediaElement.HAVE_ENOUGH_DATA=4 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_ENOUGH_DATA=4; + +/** + * Property readyState + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.readyState=new Number(); + +/** + * Property seeking + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.seeking=new Boolean(); + +/** + * Property currentTime + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.currentTime=new Number(); + +/** + * Property initialTime + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.initialTime=new Number(); + +/** + * Property duration + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.duration=new Number(); + +/** + * Property startOffsetTime + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Date + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.startOffsetTime=new Date(); + +/** + * Property paused + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.paused=new Boolean(); + +/** + * Property defaultPlaybackRate + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.defaultPlaybackRate=new Number(); + +/** + * Property playbackRate + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.playbackRate=new Number(); + +/** + * Property played + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type TimeRanges + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.played=new TimeRanges(); + +/** + * Property seekable + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type TimeRanges + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.seekable=new TimeRanges(); + +/** + * Property ended + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.ended=new Boolean(); + +/** + * Property autoplay + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.autoplay=new Boolean(); + +/** + * Property loop + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.loop=new Boolean(); + +/** + * function play() + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.play=function(){}; + +/** + * function pause() + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.pause=function(){}; + +/** + * Property controls + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.controls=new Boolean(); + +/** + * Property volume + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.volume=new Number(); + +/** + * Property muted + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.muted=new Boolean(); + +/** + * Property defaultMuted + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.defaultMuted=new Boolean(); + +/** + * Object HTMLAudioElement + * http://www.w3.org/TR/2012/WD-html5-20120329/the-audio-element.html + * @augments HTMLMediaElement + * @constructor + * @param {String} src + * @see HTMLMediaElement + */ +function HTMLAudioElement(src){}; +HTMLAudioElement.prototype = new HTMLMediaElement(); + +/** + * Object HTMLVideoElement + * http://www.w3.org/TR/2012/WD-html5-20120329/the-audio-element.html + * @augments HTMLMediaElement + * @see HTMLMediaElement + */ +function HTMLVideoElement(){}; +HTMLVideoElement.prototype = new HTMLMediaElement(); + +/** + * Property width + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.width=new Number(); + +/** + * Property height + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.height=new Number(); + +/** + * Property videoWidth + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.videoWidth=new Number(); + +/** + * Property videoHeight + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.videoHeight=new Number(); + +/** + * Property poster + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.poster=new String(); + diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/system.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/system.js new file mode 100644 index 0000000..1ca5a60 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/system.js @@ -0,0 +1,1458 @@ +/******************************************************************************* + * Copyright (c) 2008, 2010 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * IBM Corporation - initial API and implementation + ****************************************************************************** +* Please see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html +*/ + +/** + * Object Object() + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Object(){}; + /** + * function toString() + * @memberOf Object + * @returns {String} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.toString = function(){return "";}; + /** + * function toLocaleString() + * @memberOf Object + * @returns {String} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.toLocaleString = function(){return "";}; + /** + * function valueOf() + * @memberOf Object + * @returns {Object} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.valueOf = function(){return new Object();}; + /** + * function hasOwnProperty(name) + * @memberOf Object + * @param {String} name + * @returns {Boolean} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.hasOwnProperty = function(name){return true;}; + /** + * function isPrototypeOf(o) + * @memberOf Object + * @param {Object} o + * @returns {Boolean} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.isPrototypeOf = function(o){return true;}; + /** + * function propertyIsEnumerable(name) + * @memberOf Object + * @param {Object} name + * @returns {Boolean} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.propertyIsEnumerable = function(name){return true;}; +/** + * Property constructor + * @type Function + * @memberOf Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.constructor = new Function(); + +/** + * Object String() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function String(){} +String.prototype = new Object(); +/** + * static function fromCharCode(charCode1, ...) + * @memberOf String + * @param {Number} charCode + * @returns {String} + * @static + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.fromCharCode = function(charCode){return "";}; +/** + * Property length + * @type Number + * @memberOf String + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.length = 1; + /** + * function charAt(position) + * @memberOf String + * @param {Number} position + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.charAt = function(position){return "";}; + /** + * function charCodeAt(position) + * @memberOf String + * @param {Number} position + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.charCodeAt = function(position){return 0;}; + /** + * function concat(value1, ...) + * @memberOf String + * @param {String} value + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.concat = function(value){return "";}; + /** + * function indexOf(searchString, startPosition) + * @memberOf String + * @param {String} searchString + * @param {Number} startPosition + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.indexOf = function(searchString, startPosition){return 1;}; + /** + * function lastIndexOf(searchString, startPosition) + * @memberOf String + * @param {String} searchString + * @param {Number} startPosition + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.lastIndexOf = function(searchString, startPosition){return 1;}; + /** + * function localeCompare(otherString) + * @memberOf String + * @param {String} otherString + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.localeCompare = function(otherString){return 0;}; + /** + * function match(regexp) + * @memberOf String + * @param {RegExp} regexp + * @returns {Array} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.match = function(regexp){return [];}; + /** + * function replace(regexp, replaceValue) + * @memberOf String + * @param {RegExp} regexp + * @param {String} replaceValue + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.replace = function(regexp, replaceValue){return "";}; + /** + * function search(regexp) + * @memberOf String + * @param {RegExp} regexp + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.search = function(regexp){return 1;}; + /** + * function slice(start, end) + * @memberOf String + * @param {Number} start + * @param {Number} end + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.slice = function(start, end){return "";}; + /** + * function split(separator, limit) + * @memberOf String + * @param {String} separator + * @param {Number} limit + * @returns {Array} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.split = function(separator, limit){return [];}; + /** + * function substring(start, end) + * @memberOf String + * @param {Number} start + * @param {Number} end + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.substring = function(start, end){return "";}; + /** + * function toLowerCase() + * @memberOf String + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.toLowerCase = function(){return "";}; + /** + * function toLocaleLowerCase() + * @memberOf String + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.toLocaleLowerCase = function(){return "";}; + /** + * function toUpperCase() + * @memberOf String + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.toUpperCase= function (){return "";}; + /** + * function toLocaleUpperCase() + * @memberOf String + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.toLocaleUpperCase = function(){return "";}; + +/** + * Object Number() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Number(){} +Number.prototype = new Object(); +/** + * property MIN_VALUE + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.MIN_VALUE = 0; +/** + * property MAX_VALUE + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.MAX_VALUE = 0 ; +/** + * property NaN + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.NaN = 0; +/** + * property NEGATIVE_INFINITY + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.NEGATIVE_INFINITY = 0; +/** + * property POSITIVE_INFINITY + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.POSITIVE_INFINITY = 0; +/** + * function toFixed(fractionDigits) + * @memberOf Number + * @param {Number} fractionDigits + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.prototype.toFixed = function(fractionDigits){return "";}; +/** + * function toExponential(fractionDigits) + * @memberOf Number + * @param {Number} fractionDigits + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +Number.prototype.toExponential = function(fractionDigits){return "";}; +/** + * function toPrecision(precision) + * @memberOf Number + * @param {Number} fractionDigits + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +Number.prototype.toPrecision = function(fractionDigits){return "";}; + +/** + * Object Boolean() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function Boolean(){}; +Boolean.prototype = new Object(); + +/** + * Object Array() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Array(){}; +Array.prototype = new Object(); +/** + * Property length + * @type Number + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.length = 1; +/** + * function concat(args) + * @param {Array} args + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.concat = function(args){return [];}; +/** + * function join(seperator) + * @param {String} seperator + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.join = function(seperator){return [];}; +/** + * function pop() + * @returns {Object} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.pop = function(){return new Object();}; +/** + * function push(args) + * @param {Array} args + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.push = function(args){}; +/** + * function reverse() + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.reverse = function(){return [];}; +/** + * function shift() + * @returns {Object} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.shift = function(){return new Object();}; +/** + * function slice(start, end) + * @param {Number} start + * @param {Number} end + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.slice = function(start, end){return [];}; +/** + * function sort(funct) + * @param {Function} funct + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.sort = function(funct){return [];}; +/** + * function splice(start, deletecount, items) + * @param {Number} start + * @param {Number} deletecount + * @param {Array} items + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.splice = function(start, deletecount, items){return [];}; +/** + * function unshift(items) + * @param {Object} values + * @returns {Number} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.unshift = function(values){return 1;}; + +/** + * Object Function() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Function(){}; +Function.prototype = new Object(); +/** + * function apply (thisObject, argArray) + * @param {Object} thisObject + * @param {Array} argArray + * @returns {Object} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Function.prototype.apply = function(thisArg, argArray){return new Object();}; +/** + * function call (thisObject, args) + * @param {Object} thisObject + * @param {Object} args + * @returns {Object} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Function.prototype.call = function(thisObject, args){return new Object();}; +/** + * property length + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Function.prototype.length = 0; + +/** + * Object Date(s) + * @constructor + * @param {String} s + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Date(s){}; +Date.prototype = new Object(); +/** + * function UTC(hour, min, sec, ms) + * @memberOf Date + * @param {Number} hour + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @returns {Number} + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +Date.UTC = function(hour, min, sec, ms){return 0;}; +/** + * function parse(string) + * @memberOf Date + * @param {String} string + * @returns {Number} + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.parse = function(string){return 0;}; +/** + * function toDateString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toDateString = function(){return "";}; +/** + * function toTimeString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toTimeString = function(){return "";}; +/** + * function toLocaleString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toLocaleString = function(){return "";}; +/** + * function toLocaleDateString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toLocaleDateString = function(){return "";}; +/** + * function toLocaleTimeString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toLocaleTimeString = function(){return "";}; +/** + * function valueOf() + * @memberOf Date + * @returns {Object} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.valueOf = function(){return new Object();}; +/** + * function getFullYear() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getFullYear = function(){return 0;}; +/** + * function getTime() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getTime = function(){return 0;}; +/** + * function getUTCFullYear() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCFullYear = function(){return 0;}; +/** + * function getMonth() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getMonth = function(){return 0;}; +/** + * function getUTCMonth() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCMonth = function(){return 0;}; +/** + * function getDate() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getDate = function(){return 0;}; +/** + * function getUTCDate() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCDate = function(){return 0;}; +/** + * function getDay() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getDay = function(){return 0;}; +/** + * function getUTCDay() + * @memberOf Date + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + + */ +Date.prototype.getUTCDay=function(){return 0;}; +/** + * function getHours() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getHours = function(){return 0;}; +/** + * function getUTCHours() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCHours = function(){return 0;}; +/** + * function getMinutes() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getMinutes = function(){return 0;}; +/** + * function getUTCMinutes() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCMinutes = function(){return 0;}; +/** + * function getSeconds() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getSeconds = function(){return 0;}; +/** + * function getUTCSeconds() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCSeconds = function(){return 0;}; +/** + * function getMilliseconds() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getMilliseconds = function(){return 0;}; +/** + * function getUTCMilliseconds() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCMilliseconds = function(){return 0;}; +/** + * function getTimezoneOffset() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getTimezoneOffset = function(){return 0;}; +/** + * function setTime(value) + * @memberOf Date + * @returns {Number} + * @param {Number} value + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setTime = function(value){return 0;}; + +/** + * function setMilliseconds(value) + * @memberOf Date + * @returns {Number} + * @param {Number} value + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setMilliseconds = function(value){return 0;}; +/** + * function setUTCMilliseconds(ms) + * @memberOf Date + * @returns {Number} + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCMilliseconds = function(ms){return 0;}; +/** + * function setSeconds(sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setSeconds = function(sec,ms){return 0;}; +/** + * function setUTCSeconds(sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCSeconds=function(sec,ms){return 0;}; +/** + * function setMinutes(min,sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setMinutes=function(min,sec,ms){return 0;}; +/** + * function setUTCMinute(min,sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCMinute = function(min,sec,ms){return 0;}; +/** + * function setHours(hour, min,sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} hour + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setHours = function(hour,min,sec,ms){return 0;}; +/** + * function setUTCHours(hour, min,sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} hour + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCHours = function(hour,min,sec,ms){return 0;}; + +/** + * function setDate(date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setDate = function(date){return 0;}; + +/** + * function setUTCDate(date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCDate = function(date){return 0;}; + +/** + * function setMonth(month,date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @param {Number} month + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setMonth = function(month,date){return 1;}; +/** + * function setUTCMonth(month,date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @param {Number} month + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCMonth = function(month,date){return 1;}; +/** + * function setFullYear(month,date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @param {Number} month + * @param {Number} year + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setFullYear = function(year, month,date){return 0;}; +/** + * function setUTCFullYear(month,date) + * @memberOf Date + * @returns {Date} + * @param {Number} date + * @param {Number} month + * @param {Number} year + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCFullYear = function(year, month,date){}; +/** + * function toUTCString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +Date.prototype.toUTCString = function(){return "";}; + +/** + * Property NaN + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +var NaN=0; +/** + * Property Infinity + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +var Infinity=0; +/** + * function eval(s) + * @param {String} s + * @type Object + * @returns {Object} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function eval(s){return new Object();}; + +//@GINO: Bug 197987 (Temp Fix) +/** + * Property debugger + * @description Debugger keyword + */ +var debugger=null; + +/** + * Property undefined + * @description undefined +*/ +var undefined=null; + +/** + * function parseInt(s,radix) + * @param {String} s + * @param {Number} radix + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function parseInt(s,radix){return 0;}; +/** + * function parseFloat(s) + * @param {String} s + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function parseFloat(s){return 0;}; +/** + * function escape(s) + * @param {String} s + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function escape(s){return "";}; +/** + * function unescape(s) + * @param {String} s + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function unescape(s){return "";}; +/** + * function isNaN(number) + * @param {String} number + * @type Boolean + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function isNaN(number){return false;}; +/** + * function isFinite(number) + * @param {String} number + * @type Boolean + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function isFinite(number){return false;}; +/** + * function decodeURI(encodedURI) + * @param {String} encodedURI + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function decodeURI(encodedURI){return "";}; +/** + * @param {String} uriComponent + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function decodeURIComponent(uriComponent){return "";}; +/** + * function encodeURIComponent(uriComponent) + * @param {String} uriComponent + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function encodeURIComponent(uriComponent){return "";}; + +/** + * function encodeURIComponent(URI) + * @param {String} URI + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function encodeURI(URI){return "";}; + +/** + * Object Math(\s) + * @super Object + * @constructor + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + + */ +function Math(){}; +Math.prototype=new Object(); +/** + * Property E + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.E=0; +/** + * Property LN10 + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.LN10=0; +/** + * Property LN2 + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.LN2=0; +/** + * Property LOG2E + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.LOG2E=0; +/** + * Property LOG10E + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.LOG10E=0; +/** + * Property PI + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.PI=0; +/** + * Property SQRT1_2 + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.SQRT1_2=0; +/** + * Property SQRT2 + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.SQRT2=0; +/** + * function abs(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.abs=function(x){return 0;}; +/** + * function acos(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.acos=function(x){return 0;}; +/** + * function asin(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.asin=function(x){return 0;}; +/** + * function atan(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.atan=function(x){return 0;}; +/** + * function atan2(x,y) + * @memberOf Math + * @param {Number} x + * @param {Number} y + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.atan2=function(x,y){return 0;}; +/** + * function ceil(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.ceil=function(x){return 0;}; +/** + * function cos(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.cos=function(x){return 0;}; +/** + * function exp(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.exp=function(x){return 0;}; +/** + * function floor(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.floor=function(x){return 0;}; +/** + * function log(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.log=function(x){return 0;}; +/** + * function max(arg) + * @memberOf Math + * @param {Number} args + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.max=function(args){return 0;}; +/** + * function min(arg) + * @memberOf Math + * @param {Number} args + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.min=function(args){return 0;}; +/** + * function pow(x,y) + * @memberOf Math + * @param {Number} x + * @param {Number} y + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.pow=function(x,y){return 0;}; +/** + * function pow() + * @memberOf Math + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.random=function(){return 0;}; +/** + * function round(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.round=function(x){return 0;}; +/** + * function sin(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.sin=function(x){return 0;}; +/** + * function sqrt(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.sqrt=function(x){return 0;}; +/** + * function tan(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.tan=function(x){return 0;}; +/** + * Object RegExp() + * @super Object + * @constructor + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function RegExp(){}; +RegExp.prototype=new Object(); +/** + * function exec(string) + * @param {String} string + * @returns {Array} + * @type Array + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.exec=function(string){return [];}; +/** + * function test(string) + * @param {String} string + * @returns {Boolean} + * @type Boolean + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.test=function(string){return false;}; +/** + * property source + * @type String + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.source=""; +/** + * property global + * @type Boolean + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.global=false; + +/** + * property ignoreCase + * @type Boolean + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.ignoreCase=false; +/** + * property multiline + * @type Boolean + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.multiline=false; +/** + * property lastIndex + * @type Number + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.lastIndex=0; +/** + * Object Error(message) + * @super Object + * @constructor + * @param {String} message + * @memberOf Error + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Error(message){}; +Error.prototype=new Object(); +/** + * property name + * @type String + * @memberOf Error + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Error.prototype.name=""; +/** + * property message + * @type String + * @memberOf Error + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Error.prototype.message=""; +/** + * Object EvalError() + * @super Error + * @constructor + * + * @memberOf EvalError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function EvalError(){}; +EvalError.prototype=new Error(""); +/** + * Object RangeError() + * @super Error + * @constructor + * + * @memberOf RangeError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function RangeError(){}; +RangeError.prototype=new Error(""); +/** + * Object ReferenceError() + * @super Error + * @constructor + * + * @memberOf ReferenceError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function ReferenceError(){}; +ReferenceError.prototype=new Error(""); +/** + * Object SyntaxError() + * @super Error + * @constructor + * + * @memberOf SyntaxError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function SyntaxError(){}; +SyntaxError.prototype=new Error(""); +/** + * Object TypeError() + * @super Error + * @constructor + * + * @memberOf TypeError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function TypeError(){}; +TypeError.prototype=new Error(""); +/** + * Object URIError() + * @super Error + * @constructor + * + * @memberOf URIError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function URIError(){}; +URIError.prototype=new Error(""); + +//support for debugger keyword +var debugger = null; \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/xhr.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/xhr.js new file mode 100644 index 0000000..8b680ca --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/xhr.js @@ -0,0 +1,104 @@ +/******************************************************************************* + * Copyright (c) 2009, 2011 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * Contributors: + * IBM Corporation - initial API and implementation + ****************************************************************************** + * + * Based on information from https://developer.mozilla.org/En/XMLHttpRequest + * and http://msdn2.microsoft.com/en-us/library/ms533062.aspx + **/ + +/** +* function createRequest +* @type XMLHttpRequest +* @memberOf Window +*/ +Window.prototype.createRequest= function(){return new XMLHttpRequest();}; +/** +* Object XMLHttpRequest +* @type constructor +*/ +XMLHttpRequest.prototype=new Object(); +function XMLHttpRequest(){}; + +/** + * function onreadystatechange + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.onreadystatechange=function(){}; +/** + * property readyState + * @type Number + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.readyState=0; +/** + * property responseText + * @type String + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.responseText=""; +/** + * property responseXML + * @type Document + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.responseXML=new Document(); +/** + * property status + * @type Number + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.status=0; +/** + * property statusText + * @type String + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.statusText=""; +/** + * function abort() + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.abort=function(){}; +/** +* function getAllResponseHeaders() +* @type String +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.getAllResponseHeaders=function(){return "";}; +/** +* function open(method, url, async, username, password) +* @param {String} method +* @param {String} url +* @param {Boolean} optional async +* @param {String} optional username +* @param {String} optional password +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.open=function(method, url, async, username, password){}; +/** +* function send(body) +* @param {Object} body +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.send=function(body){}; +/** +* function setRequestHeader(header,value) +* @param {String} header +* @param {String} value +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.setRequestHeader=function(header,value){}; +/** +* function getAllResponseHeaders() +* @param {String} header +* @type String +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.getResponseHeader=function(header){return "";}; diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/variablesAndContainers.dat b/.metadata/.plugins/org.eclipse.wst.jsdt.core/variablesAndContainers.dat new file mode 100644 index 0000000..c2bf12d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/variablesAndContainers.dat differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.ui/OpenTypeHistory.xml b/.metadata/.plugins/org.eclipse.wst.jsdt.ui/OpenTypeHistory.xml new file mode 100644 index 0000000..a4ee3cb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.ui/OpenTypeHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.wst.jsdt.ui/QualifiedTypeNameHistory.xml new file mode 100644 index 0000000..9e390f5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.ui/QualifiedTypeNameHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.wst.server.core/monitors.xml b/.metadata/.plugins/org.eclipse.wst.server.core/monitors.xml new file mode 100644 index 0000000..0bd2033 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.server.core/monitors.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.wst.server.core/publish.xml b/.metadata/.plugins/org.eclipse.wst.server.core/publish.xml new file mode 100644 index 0000000..bc7bbe8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.server.core/publish.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.wst.server.core/servers.xml b/.metadata/.plugins/org.eclipse.wst.server.core/servers.xml new file mode 100644 index 0000000..da845cd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.server.core/servers.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.wst.server.core/tmp-data.xml b/.metadata/.plugins/org.eclipse.wst.server.core/tmp-data.xml new file mode 100644 index 0000000..3d2b475 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.server.core/tmp-data.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties b/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties new file mode 100644 index 0000000..51a3ff1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties @@ -0,0 +1,3 @@ +# +#Thu Nov 18 18:28:45 ICT 2021 +task-tag-projects-already-scanned=Jar-Project,Java-String,SoapWebServiceExampleClient,Java-IoC,SoapWebServiceExample,Java-DOM,Servers,Java-Service,SoapWebServiceExample2,Currency-Converter,Java-Tight-Coupling,SoapWebServiceExample2Client,Using-Jar,Book-Price diff --git a/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml new file mode 100644 index 0000000..63fae25 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.wst.validation/dep.index b/.metadata/.plugins/org.eclipse.wst.validation/dep.index new file mode 100644 index 0000000..419b970 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.validation/dep.index differ diff --git a/.metadata/.plugins/org.eclipse.wst.ws.explorer/favorites.wsil b/.metadata/.plugins/org.eclipse.wst.ws.explorer/favorites.wsil new file mode 100644 index 0000000..30427e5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.ws.explorer/favorites.wsil @@ -0,0 +1,7 @@ + + + + diff --git a/.metadata/.plugins/org.eclipse.wst.ws.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.wst.ws.ui/dialog_settings.xml new file mode 100644 index 0000000..64f7bfd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.ws.ui/dialog_settings.xml @@ -0,0 +1,7 @@ + +
+ + + + +
diff --git a/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml b/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml new file mode 100644 index 0000000..37faa16 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml b/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml new file mode 100644 index 0000000..eafcecf --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/version.ini b/.metadata/version.ini new file mode 100644 index 0000000..e1bcf31 --- /dev/null +++ b/.metadata/version.ini @@ -0,0 +1,3 @@ +#Thu Nov 18 08:42:11 ICT 2021 +org.eclipse.core.runtime=2 +org.eclipse.platform=4.20.0.v20210611-1600 diff --git a/Java 1.mmap b/Java 1.mmap new file mode 100644 index 0000000..8a032c6 Binary files /dev/null and b/Java 1.mmap differ diff --git a/Java 2.1.mmap b/Java 2.1.mmap new file mode 100644 index 0000000..8a677b8 Binary files /dev/null and b/Java 2.1.mmap differ diff --git a/Java 2.mmap b/Java 2.mmap new file mode 100644 index 0000000..c7a4c00 Binary files /dev/null and b/Java 2.mmap differ diff --git a/Java 3.mmap b/Java 3.mmap new file mode 100644 index 0000000..ded25cd Binary files /dev/null and b/Java 3.mmap differ diff --git a/Java 5-v1.0.docx b/Java 5-v1.0.docx new file mode 100644 index 0000000..2480eac Binary files /dev/null and b/Java 5-v1.0.docx differ diff --git a/Java 8-v1.0.txt b/Java 8-v1.0.txt new file mode 100644 index 0000000..710a093 --- /dev/null +++ b/Java 8-v1.0.txt @@ -0,0 +1,26 @@ +Function Interface + + https://caodang.fpt.edu.vn/tin-tuc-poly/java-8-ban-da-biet-het-ve-lambdas-streams-and-functional-style-programming-phan-1.html + +Java Lambda Expressions + +Method Reference + +Java Stream +Thymeleaf: + Spring Boot và ViewResolver + Thymeleaf + Standard Expressions + Thymeleaf Attributes + Thymeleaf Utilities + +Web Browser +Handler Mapping +Controller +View Resolver +View Engine + + + +sonpeter.github.io/teaching/ + diff --git a/Java 8.mmap b/Java 8.mmap new file mode 100644 index 0000000..8003a24 Binary files /dev/null and b/Java 8.mmap differ diff --git "a/Java-Advance/documents/T\303\240i li\341\273\207u Java Advance v1.0.docx" "b/Java-Advance/documents/T\303\240i li\341\273\207u Java Advance v1.0.docx" new file mode 100644 index 0000000..80f5fb8 Binary files /dev/null and "b/Java-Advance/documents/T\303\240i li\341\273\207u Java Advance v1.0.docx" differ diff --git a/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/JsonName.class b/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/JsonName.class new file mode 100644 index 0000000..6030678 Binary files /dev/null and b/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/JsonName.class differ diff --git a/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/JsonNameProcessor.class b/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/JsonNameProcessor.class new file mode 100644 index 0000000..2524aaf Binary files /dev/null and b/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/JsonNameProcessor.class differ diff --git a/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/Person.class b/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/Person.class new file mode 100644 index 0000000..fe75cd7 Binary files /dev/null and b/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/Person.class differ diff --git a/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/SuperMan.class b/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/SuperMan.class new file mode 100644 index 0000000..4dee0ba Binary files /dev/null and b/Java-Annotation/java-annotation/out/production/java-annotation/com/core/anno/SuperMan.class differ diff --git a/Java-Annotation/java-annotation/readme.md b/Java-Annotation/java-annotation/readme.md new file mode 100644 index 0000000..af20b9d --- /dev/null +++ b/Java-Annotation/java-annotation/readme.md @@ -0,0 +1,54 @@ +# Java Annotations + +Có 2 kiểu Java Annotation: + +1. Các Annotation được tích hợp sẵn trong Java: Override, Overload... + +2. Annotation tùy chỉnh - do người dùng định nghĩa. + + +## Các Annotation được tính hợp trong Java + +@Override, @SuppressWarnings, @Deprecated + +@Target, @Retention, @Inherited, @Documented + +Giải thích ý nghĩa của các Annotation phía sau: + +## Tùy chỉnh Annotation trong Java: + +### Mục đích: + +Được người dùng định nghĩa rất dễ dàng để tạo và sử dụng ?? -> Chưa rõ phần này. Phần tử @interface được sử dung để khai báo một Annotation. + +### Các kiểu của Annotation: + +1. Marker Annotation + + +2. Single-Value Annotation + + +3. Multi-Value Annotation + +### Sử dụng Annotation tích hợp trong Annotation tùy chỉnh trong Java + +@Target + + +@Retention + + +@Inherited + + +@Documented + + + + +## Reference Document + +[Annotation trong Java](https://viettuts.vn/java-new-features/annotation-trong-java) + +[Tùy chỉnh Annotation trong Java](https://viettuts.vn/java-new-features/tuy-chinh-annotation-trong-java) \ No newline at end of file diff --git a/Java-Annotation/java-annotation/src/com/core/anno/JsonName.java b/Java-Annotation/java-annotation/src/com/core/anno/JsonName.java new file mode 100644 index 0000000..6db5ba3 --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/anno/JsonName.java @@ -0,0 +1,21 @@ +package com.core.anno; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Hướng dẫn tạo Annotation JsonName + * @author ManhKM on 4/23/2022 + * @project java-annotation + */ +@Retention(RetentionPolicy.RUNTIME) // Tồn tại trong lúc chạy chương trình +@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) // Được sử dụng trên class, interface, method, biến +public @interface JsonName { + /** + * Các giá trị trong @interface đều dạng hàm abstract, không có tham số + * @return + */ + String value(); +} diff --git a/Java-Annotation/java-annotation/src/com/core/anno/JsonNameProcessor.java b/Java-Annotation/java-annotation/src/com/core/anno/JsonNameProcessor.java new file mode 100644 index 0000000..456fcea --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/anno/JsonNameProcessor.java @@ -0,0 +1,56 @@ +package com.core.anno; + +import java.lang.reflect.Field; +import java.time.LocalDateTime; +import java.util.Optional; + +/** + * @author ManhKM on 4/23/2022 + * @project java-annotation + */ +public class JsonNameProcessor { + public static String toJson(Object object) throws IllegalAccessException { + StringBuilder sb = new StringBuilder(); // Dùng StringBuilder de tao json tu class + + Class clazz = object.getClass(); + JsonName jsonClassName = clazz.getDeclaredAnnotation(JsonName.class); // Lay ra annotation @JsonName tren Class + + sb.append("{\n") + .append("\t\"") + // Lay gia tri cua Annotation, neu annotation la null thi lay ten Class de thay the + .append(Optional.ofNullable(jsonClassName).map(JsonName::value).orElse(clazz.getSimpleName())) + .append("\": {\n"); // + + + Field fields[] = clazz.getDeclaredFields(); + for (int i = 0; i < fields.length; i++) { + fields[i].setAccessible(true); // Set setAccessible = true. De co the truy cap vao private field + JsonName jsonFieldName = fields[i].getDeclaredAnnotation(JsonName.class); // get annotation tren field + sb.append("\t\t\"") + // Lay gia tri cua Annotation, neu annotation la null thi lay ten field thay the + .append(Optional.ofNullable(jsonFieldName).map(JsonName::value).orElse(fields[i].getName())) // L + .append("\": ") + // Neu field la String hoac Object. thi append dau ngoac kep vao + .append(fields[i].getType() == String.class || !fields[i].getType().isPrimitive() ? "\"" : "") + // Lay gia tri cua field + .append(fields[i].get(object)) + // Neu field la String hoac Object. thi append dau ngoac kep vao + .append(fields[i].getType() == String.class || !fields[i].getType().isPrimitive()? "\"" : "") + // Nếu là field cuối cùng, thì không append dấu "," + .append(i != fields.length -1 ? ",\n" : "\n"); + } + sb.append("\t}\n"); + sb.append("}"); + + return sb.toString(); + } + + public static void main(String[] args) throws IllegalAccessException { + SuperMan superMan = new SuperMan(); // Tao doi tuong super man + superMan.setDateOfBirth(LocalDateTime.now()); + superMan.setName("loda"); + + String json =JsonNameProcessor.toJson(superMan); + System.out.println(json); + } +} diff --git a/Java-Annotation/java-annotation/src/com/core/anno/MarkerAnnotation.java b/Java-Annotation/java-annotation/src/com/core/anno/MarkerAnnotation.java new file mode 100644 index 0000000..50a99d6 --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/anno/MarkerAnnotation.java @@ -0,0 +1,10 @@ +package com.core.anno; + +/** + * @author ManhKM on 8/24/2022 + * @project java-annotation + * ----- + * Marker Annotation + * Một Annotation không có phương thức thì sẽ được gọi là Marker Annotation + */ +@interface MarkerAnnotation {} diff --git a/Java-Annotation/java-annotation/src/com/core/anno/MultiValueAnnotation.java b/Java-Annotation/java-annotation/src/com/core/anno/MultiValueAnnotation.java new file mode 100644 index 0000000..7f95ae6 --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/anno/MultiValueAnnotation.java @@ -0,0 +1,15 @@ +package com.core.anno; + +/** + * @author ManhKM on 8/24/2022 + * @project java-annotation + */ +@interface MultiValueAnnotation { + int value(); + + String value2(); + + float value3(); + + char value4(); +} diff --git a/Java-Annotation/java-annotation/src/com/core/anno/Person.java b/Java-Annotation/java-annotation/src/com/core/anno/Person.java new file mode 100644 index 0000000..61677e4 --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/anno/Person.java @@ -0,0 +1,9 @@ +package com.core.anno; + +/** + * @author ManhKM on 4/23/2022 + * @project java-annotation + */ +public class Person { + +} diff --git a/Java-Annotation/java-annotation/src/com/core/anno/SingleValueAnnotation.java b/Java-Annotation/java-annotation/src/com/core/anno/SingleValueAnnotation.java new file mode 100644 index 0000000..a922ffe --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/anno/SingleValueAnnotation.java @@ -0,0 +1,19 @@ +package com.core.anno; + +/** + * @author ManhKM on 8/24/2022 + * @project java-annotation + * ----- + * Single-Value Annotation + * Một Annotation mà có một phương thwusc được gọi là single-value Annotation + */ +@interface SingleValueAnnotation { +// int value(); + + int value() default 0; + /** + * Áp dụng Single-Value Annotation + * @SingleValueAnnotation(value=10) + * Những giá trị value có thể là những giá trị khác nhau + */ +} diff --git a/Java-Annotation/java-annotation/src/com/core/anno/SuperMan.java b/Java-Annotation/java-annotation/src/com/core/anno/SuperMan.java new file mode 100644 index 0000000..34a2316 --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/anno/SuperMan.java @@ -0,0 +1,29 @@ +package com.core.anno; + +import java.time.LocalDateTime; + +/** + * @author ManhKM on 4/23/2022 + * @project java-annotation + */ +@JsonName(value = "super_man") +public class SuperMan extends Person{ + private String name; + + private LocalDateTime dateOfBirth; + public String getName(){ + return name; + } + + public void setName(String name){ + this.name = name; + } + + public LocalDateTime getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(LocalDateTime dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } +} diff --git a/Java-Annotation/java-annotation/src/com/core/optional/DemoOptional.java b/Java-Annotation/java-annotation/src/com/core/optional/DemoOptional.java new file mode 100644 index 0000000..21d5362 --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/optional/DemoOptional.java @@ -0,0 +1,33 @@ +package com.core.optional; + +import java.util.Optional; + +/** + * @author ManhKM on 4/23/2022 + * @project java-annotation + */ +public class DemoOptional { + + public static void main(String[] args) { + String str = null; + Optional optional = Optional.ofNullable(str); + + if(optional.isPresent()){ + System.out.println(optional.get()); + } + + optional.ifPresent(s -> System.out.println(s)); + + String b = optional.orElse("Giá trị mặc định"); + b = optional.orElseGet(() -> { + StringBuilder sb = new StringBuilder(); + return sb.toString(); + }); + + /** + * Method map() -> biến đổi đối tượng bên trong Optional + */ + + + } +} diff --git a/Java-Annotation/java-annotation/src/com/core/optional/Girl.java b/Java-Annotation/java-annotation/src/com/core/optional/Girl.java new file mode 100644 index 0000000..a6a23a9 --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/optional/Girl.java @@ -0,0 +1,22 @@ +package com.core.optional; + +import java.util.Optional; + +/** + * @author ManhKM on 4/23/2022 + * @project java-annotation + */ +public class Girl { + private Outfit outfit; + public Outfit getOutfit(){ + return outfit; + } + + public String getOutfitType(Girl girl){ + return Optional.ofNullable(girl) + .map(Girl::getOutfit) + .map(Outfit::getType) + .filter(s -> s.contains("bikini")) + .orElse("Nothing"); + } +} diff --git a/Java-Annotation/java-annotation/src/com/core/optional/Outfit.java b/Java-Annotation/java-annotation/src/com/core/optional/Outfit.java new file mode 100644 index 0000000..79f76b0 --- /dev/null +++ b/Java-Annotation/java-annotation/src/com/core/optional/Outfit.java @@ -0,0 +1,12 @@ +package com.core.optional; + +/** + * @author ManhKM on 4/23/2022 + * @project java-annotation + */ +public class Outfit { + public String type; + public String getType(){ + return type; + } +} diff --git a/Java-Apache-POI/jxls b/Java-Apache-POI/jxls new file mode 160000 index 0000000..ef1fdac --- /dev/null +++ b/Java-Apache-POI/jxls @@ -0,0 +1 @@ +Subproject commit ef1fdacc996ca359dfd026763bccda7835559435 diff --git a/Java-ApachePOI/pom.xml b/Java-ApachePOI/pom.xml new file mode 100644 index 0000000..065ddff --- /dev/null +++ b/Java-ApachePOI/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + Java-ApachePOI + 1.0-SNAPSHOT + + + 8 + 8 + 3.17 + + + + + org.apache.poi + poi-ooxml + ${org.apache.poi} + + + + + \ No newline at end of file diff --git a/Java-ApachePOI/readme.md b/Java-ApachePOI/readme.md new file mode 100644 index 0000000..6484df5 --- /dev/null +++ b/Java-ApachePOI/readme.md @@ -0,0 +1,12 @@ +## Hướng dẫn đọc file excel trong Java - ApachePOI + + +## 1. Apache POI What is this? + 1.1. Xử lý file Excel với Apache POI + +## 2. Download thư viện Apache POI + + +## 3. Đọc/Ghi file Excel bằng Apache POI + 3.1. Ghi file Excel + 3.2. Đọc file Excel diff --git a/Java-ApachePOI/src/main/java/com/core/poi/WriteFileExcel.java b/Java-ApachePOI/src/main/java/com/core/poi/WriteFileExcel.java new file mode 100644 index 0000000..e0e0ef1 --- /dev/null +++ b/Java-ApachePOI/src/main/java/com/core/poi/WriteFileExcel.java @@ -0,0 +1,52 @@ +package com.core.poi; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 4/19/2022 + * @project Java-ApachePOI + */ +public class WriteFileExcel { + public static void main(String[] args) { + System.out.println("Create file Excel: "); + XSSFWorkbook workbook = new XSSFWorkbook(); + XSSFSheet sheet = workbook.createSheet("customer_info"); + int rowNum = 0; + Row firstRow = sheet.createRow(rowNum++); + Cell firstCell = firstRow.createCell(0); + firstCell.setCellValue("List of customer"); + + List listOfCustomer = new ArrayList(); +// listOfCustomer.add(new Customer(1, "Sylvester Stallone", "abc@gmail.com")); +// listOfCustomer.add(new Customer(2, "Tom Cruise", "xyz@yahoo.com")); +// listOfCustomer.add(new Customer(3, "Vin Diesel", "abc@hotmail.com")); + for (Customer customer : listOfCustomer) { + Row row = sheet.createRow(rowNum++); + Cell cell1 = row.createCell(0); + cell1.setCellValue(customer.getId()); + Cell cell2 = row.createCell(1); + cell2.setCellValue(customer.getName()); + Cell cell3 = row.createCell(2); + cell3.setCellValue(customer.getEmail()); + } + try { + FileOutputStream outputStream = new FileOutputStream("Demo-ApachePOI-Excel.xlsx"); + workbook.write(outputStream); + workbook.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println("Done"); + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/readme.md b/Java-Basic/core-java-volume-1-fundamentals/readme.md new file mode 100644 index 0000000..ff9cf7e --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/readme.md @@ -0,0 +1,3 @@ +## Core Java - Volume I Fundamentals + +## Mục tiêu: Dựng base để thi chứng chỉ OCA Java 8 \ No newline at end of file diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/autoboxing/TestAutoboxing.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/autoboxing/TestAutoboxing.java new file mode 100644 index 0000000..cdfa90c --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/autoboxing/TestAutoboxing.java @@ -0,0 +1,25 @@ +package com.jindo.core.autoboxing; + +import java.util.ArrayList; + +/** + * @author ManhKM on 5/21/2022 + * @project core-java-volume-1-fundamentals + * ----- + * Autoboxing: list.add(Integer.valueOf(3)) + * list.get(i).intValue(); + * int x = Integer.parseInt(s) + * + */ +public class TestAutoboxing { + public static void main(String[] args) { + ArrayList list = new ArrayList<>(); + list.add(10); + list.add(15); + list.add(Integer.valueOf(19)); + + for (int a: list) { + System.out.println(a); + } + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Employee.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Employee.java new file mode 100644 index 0000000..12074ba --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Employee.java @@ -0,0 +1,126 @@ +package com.jindo.core.entity; + +import com.jindo.core.entity.Person; +import com.jindo.core.interfacex.ComparableT; + +import java.time.LocalDate; +import java.util.Objects; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + */ +public class Employee extends Person implements Comparable, ComparableT { + private String name; + private double salary; + private LocalDate hireDay; + + public Employee(String name){ + super(name); + } + + public Employee(String name, double salary){ + super(name); + this.salary = salary; + } + + public Employee(String name, double salary, int year, int month, int day){ + super(name); + this.salary = salary; + hireDay = LocalDate.of(year, month, day); + } + + + + /** + * method getName -> trả về name của Employee + * B1: Lúc khởi tạo Construct -> call supper -> Person + * B2: Lúc lấy ra thì cũng phải lấy từ supper -> Person + */ + public String getName() { + return super.getName(); + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String getDescription() { + return "an employee with a salary of " + getSalary(); + } + + public double getSalary() { + return salary; + } + + public void setSalary(double salary) { + this.salary = salary; + } + + public LocalDate getHireDay() { + return hireDay; + } + + public void setHireDay(LocalDate hireDay) { + this.hireDay = hireDay; + } + + /** + * Tăng lương + * @param byPercent -> tỷ lệ nâng lương + */ + public void raiseSalary(double byPercent){ + double raise = this.salary * byPercent / 100; + this.salary += raise; + } + + /** + * Bổ sung phương thức so sánh giữa các Object + * @param otherObject + * @return + */ + public boolean equals(Object otherObject){ + if(this == otherObject){ + return true; + } + + if(otherObject == null){ + return false; + } + + if(getClass() != otherObject.getClass()){ + return false; + } + + Employee other = (Employee) otherObject; + + return Objects.equals(name, other.name) + && salary == other.salary + && Objects.equals(hireDay, other.hireDay); + } + + public int hashCode(){ + return Objects.hash(name, salary, hireDay); + } + + @Override + public String toString() { + return getClass().getName() + "{" + + "name='" + name + '\'' + + ", salary=" + salary + + ", hireDay=" + hireDay + + '}'; + } + + @Override + public int compareTo(Object otherObject) { + Employee other = (Employee) otherObject; + return Double.compare(salary, other.salary); + } + + @Override + public int compareToT(Employee other) { + return Double.compare(salary, other.salary); + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Executive.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Executive.java new file mode 100644 index 0000000..aade1e7 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Executive.java @@ -0,0 +1,14 @@ +package com.jindo.core.entity; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + * ----- + * Giám đốc: + * + Từ khóa final: Đánh dấu class này không thể kế thừa từ một sub-class nào nữa + */ +public final class Executive extends Manager{ + public Executive(String name, double salary, int year, int month, int day) { + super(name, salary, year, month, day); + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Manager.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Manager.java new file mode 100644 index 0000000..097b543 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Manager.java @@ -0,0 +1,45 @@ +package com.jindo.core.entity; + +import java.util.Objects; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + */ +public class Manager extends Employee { + private double bonus; + + public Manager(String name, double salary, int year, int month, int day) { + super(name, salary, year, month, day); + this.bonus = 0; + } + + public void setBonus(double bonus) { + this.bonus = bonus; + } + + @Override + public double getSalary() { + double baseSalary = super.getSalary(); + return baseSalary + bonus; + } + + @Override + public boolean equals(Object otherObject) { + if(!super.equals(otherObject)) return false; + Manager other = (Manager) otherObject; + return(bonus == other.bonus); + } + + @Override + public int hashCode() { + return super.hashCode() + 17 * new Double(bonus).hashCode(); + } + + @Override + public String toString() { + return super.toString() + "{" + + "bonus=" + bonus + + '}'; + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Person.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Person.java new file mode 100644 index 0000000..553d2c6 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Person.java @@ -0,0 +1,24 @@ +package com.jindo.core.entity; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + */ +public abstract class Person extends Object{ + + private String name; + + public Person(String name){ + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public abstract String getDescription(); +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Programmer.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Programmer.java new file mode 100644 index 0000000..0357463 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Programmer.java @@ -0,0 +1,13 @@ +package com.jindo.core.entity; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + * ----- + * Programmer có lương OT công việc + */ +public class Programmer extends Employee { + public Programmer(String name, double salary, int year, int month, int day) { + super(name, salary, year, month, day); + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Secretary.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Secretary.java new file mode 100644 index 0000000..04aa99f --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Secretary.java @@ -0,0 +1,15 @@ +package com.jindo.core.entity; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + * Khai báo đối tượng thư kí: + * Làm các công việc liên quan đến quản lý thời gian. + * Hỗ trợ các báo cáo... + * + */ +public class Secretary extends Employee { + public Secretary(String name, double salary, int year, int month, int day) { + super(name, salary, year, month, day); + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Student.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Student.java new file mode 100644 index 0000000..5d68eb2 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/Student.java @@ -0,0 +1,33 @@ +package com.jindo.core.entity; + +import com.jindo.core.interfacex.ComparableT; +import kotlin.reflect.jvm.internal.impl.descriptors.Named; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + */ +public class Student extends Person{ + + private String major; + + public String getMajor() { + return major; + } + + public void setMajor(String major) { + this.major = major; + } + + public Student(String name, String major){ + super(name); + this.major = major; + } + + @Override + public String getDescription() { + return "a student majoring in " + getMajor(); + } + + +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/SupperExecutive.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/SupperExecutive.java new file mode 100644 index 0000000..b21cef4 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/SupperExecutive.java @@ -0,0 +1,8 @@ +package com.jindo.core.entity; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + */ +public class SupperExecutive { +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/TestCompany.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/TestCompany.java new file mode 100644 index 0000000..0b40564 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/TestCompany.java @@ -0,0 +1,33 @@ +package com.jindo.core.entity; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + */ +public class TestCompany { + public static void main(String[] args) { + Manager boss = new Manager("ManhKM", 8000, 1996, 4, 30); + boss.setBonus(500); + + Employee[] staff = new Employee[3]; + staff[0] = boss; + // staff[0].setBonus(1000); + staff[1] = new Employee("Harry Hacker", 5000, 1997, 10, 1); + Manager subBoss; +// subBoss.setBonus(100); +// staff[1] = subBoss; + + if(staff[1] instanceof Manager){ + subBoss = (Manager) staff[1]; + subBoss.setBonus(100); + } + + staff[2] = new Employee("Tony Tester", 4000, 1998, 3, 15); + + System.out.println("1. Member of company: "); + for (Employee e : staff){ + System.out.println(e.getName() + " - " +e.getSalary()); + } + + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/TestInheritance.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/TestInheritance.java new file mode 100644 index 0000000..4989769 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/entity/TestInheritance.java @@ -0,0 +1,24 @@ +package com.jindo.core.entity; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + * ----- + * + Không thể khởi tạo instance từ một Abstract Class + * + Có thể khởi tạo thông qua một Subclass của nó + * + Tại sao Employee.getName lại là null + */ +public class TestInheritance { + public static void main(String[] args) { + Person person = new Student("Vince Vu", "Economics"); + + Person[] people = new Person[3]; + people[0] = new Employee("TrangTT", 1000, 1999, 12, 18); + people[1] = new Student("TrangKT", "Information Technology"); + people[2] = person; + + for (Person p: people) { + System.out.println(p.getName() + ", " + p.getDescription()); + } + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/hashcode/TestHashCode.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/hashcode/TestHashCode.java new file mode 100644 index 0000000..52d4b01 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/hashcode/TestHashCode.java @@ -0,0 +1,17 @@ +package com.jindo.core.hashcode; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + */ +public class TestHashCode { + public static void main(String[] args) { + String s = "OK"; + StringBuilder sb = new StringBuilder(s); + System.out.println(s.hashCode() + " " + sb.hashCode()); + + String t = new String("OK"); + StringBuilder tb = new StringBuilder(t); + System.out.println(t.hashCode() + " " + tb.hashCode()); + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/Comparable.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/Comparable.java new file mode 100644 index 0000000..307e635 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/Comparable.java @@ -0,0 +1,11 @@ +package com.jindo.core.interfacex; + +/** + * @author ManhKM on 5/25/2022 + * @project core-java-volume-1-fundamentals + * ----- + * Sử dụng để thực hiện so sánh giữa các Object + */ +public interface Comparable { + int compareTo(Object otherObject); +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/ComparableT.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/ComparableT.java new file mode 100644 index 0000000..d4ad97e --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/ComparableT.java @@ -0,0 +1,9 @@ +package com.jindo.core.interfacex; + +/** + * @author ManhKM on 5/25/2022 + * @project core-java-volume-1-fundamentals + */ +public interface ComparableT { + int compareToT(T other); +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/Comparator.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/Comparator.java new file mode 100644 index 0000000..d3e67c7 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/Comparator.java @@ -0,0 +1,9 @@ +package com.jindo.core.interfacex; + +/** + * @author ManhKM on 5/25/2022 + * @project core-java-volume-1-fundamentals + */ +public interface Comparator { + int compare(T first, T second); +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/EmployeeSortTest.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/EmployeeSortTest.java new file mode 100644 index 0000000..ffb7c97 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/EmployeeSortTest.java @@ -0,0 +1,24 @@ +package com.jindo.core.interfacex; + +import com.jindo.core.entity.Employee; + +import java.util.Arrays; + +/** + * @author ManhKM on 5/25/2022 + * @project core-java-volume-1-fundamentals + */ +public class EmployeeSortTest { + public static void main(String[] args) { + Employee[] staff = new Employee[3]; + staff[0] = new Employee("ManhKM", 35000); + staff[1] = new Employee("AAA", 33000); + staff[2] = new Employee("BBBB", 37000); + + Arrays.sort(staff); + + for (Employee e : staff){ + System.out.println("name=" + e.getName() + ", salary=" + e.getSalary()); + } + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/LengthComparator.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/LengthComparator.java new file mode 100644 index 0000000..9631763 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/LengthComparator.java @@ -0,0 +1,14 @@ +package com.jindo.core.interfacex; + +/** + * @author ManhKM on 5/25/2022 + * @project core-java-volume-1-fundamentals + */ +public class LengthComparator implements Comparator, java.util.Comparator { + + @Override + public int compare(String first, String second) { + return first.length() - second.length(); + } + +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/MainLengthComparator.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/MainLengthComparator.java new file mode 100644 index 0000000..870bc34 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/MainLengthComparator.java @@ -0,0 +1,22 @@ +package com.jindo.core.interfacex; + +import java.util.Arrays; + +/** + * @author ManhKM on 5/25/2022 + * @project core-java-volume-1-fundamentals + */ +public class MainLengthComparator { + public static void main(String[] args) { + Comparator comp = new LengthComparator(); + if(comp.compare("ManhKM", "TB") > 0){ + System.out.println("-----> length -----> OK"); + } + + String[] friends = {"Peter", "Paul", "Mary"}; + Arrays.sort(friends, new LengthComparator()); + for (String item: friends) { + System.out.print(item + ", "); + } + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/Named.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/Named.java new file mode 100644 index 0000000..228dd79 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/interfacex/Named.java @@ -0,0 +1,11 @@ +package com.jindo.core.interfacex; + +/** + * @author ManhKM on 5/25/2022 + * @project core-java-volume-1-fundamentals + */ +interface Named { + default String getName(){ + return getClass().getName() + " - " + hashCode(); + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/testfinal/FinalVariable.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/testfinal/FinalVariable.java new file mode 100644 index 0000000..d56456e --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/testfinal/FinalVariable.java @@ -0,0 +1,17 @@ +package com.jindo.core.testfinal; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + */ +public class FinalVariable { + final static String name = "ManhKM"; + + public static void main(String[] args) { + /** + * Cannot assign a value to final variable 'name' + * name = name + " NEO"; + */ + + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/testfinal/finalmethod/BaseClass.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/testfinal/finalmethod/BaseClass.java new file mode 100644 index 0000000..be7450d --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/testfinal/finalmethod/BaseClass.java @@ -0,0 +1,11 @@ +package com.jindo.core.testfinal.finalmethod; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + */ +public class BaseClass { + final public void makeNoise(){ + System.out.println("Make Noise"); + } +} diff --git a/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/testfinal/finalmethod/SubClass.java b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/testfinal/finalmethod/SubClass.java new file mode 100644 index 0000000..4ab7743 --- /dev/null +++ b/Java-Basic/core-java-volume-1-fundamentals/src/com/jindo/core/testfinal/finalmethod/SubClass.java @@ -0,0 +1,17 @@ +package com.jindo.core.testfinal.finalmethod; + +/** + * @author ManhKM on 5/20/2022 + * @project core-java-volume-1-fundamentals + * Cannot inherit from final 'com.jindo.core.testfinal.finalmethod.BaseClass' + */ +public class SubClass extends BaseClass{ + /** + * 'makeNoise()' cannot override 'makeNoise()' in 'com.jindo.core.testfinal.finalmethod.BaseClass'; + * overridden method is final + */ +// @Override + public void makeNoise(String value){ + System.out.println("SubClass MakeNoise"); + } +} diff --git "a/Java-Basic/document/T\303\240i li\341\273\207u Java Basic v1.0.docx" "b/Java-Basic/document/T\303\240i li\341\273\207u Java Basic v1.0.docx" new file mode 100644 index 0000000..5fe5ef4 Binary files /dev/null and "b/Java-Basic/document/T\303\240i li\341\273\207u Java Basic v1.0.docx" differ diff --git "a/Java-Basic/document/~$i li\341\273\207u Java Basic v1.0.docx" "b/Java-Basic/document/~$i li\341\273\207u Java Basic v1.0.docx" new file mode 100644 index 0000000..8590d4f Binary files /dev/null and "b/Java-Basic/document/~$i li\341\273\207u Java Basic v1.0.docx" differ diff --git a/Java-Basic/document/~WRL0423.tmp b/Java-Basic/document/~WRL0423.tmp new file mode 100644 index 0000000..9cdaaba Binary files /dev/null and b/Java-Basic/document/~WRL0423.tmp differ diff --git a/Java-Basic/document/~WRL3580.tmp b/Java-Basic/document/~WRL3580.tmp new file mode 100644 index 0000000..18fd06b Binary files /dev/null and b/Java-Basic/document/~WRL3580.tmp differ diff --git a/Java-Caching/redis-demo/libs/jedis-3.1.0.jar b/Java-Caching/redis-demo/libs/jedis-3.1.0.jar new file mode 100644 index 0000000..3b25493 Binary files /dev/null and b/Java-Caching/redis-demo/libs/jedis-3.1.0.jar differ diff --git a/Java-Caching/redis-demo/libs/log4j-api-2.7.jar b/Java-Caching/redis-demo/libs/log4j-api-2.7.jar new file mode 100644 index 0000000..b921631 Binary files /dev/null and b/Java-Caching/redis-demo/libs/log4j-api-2.7.jar differ diff --git a/Java-Caching/redis-demo/libs/log4j-core-2.7.jar b/Java-Caching/redis-demo/libs/log4j-core-2.7.jar new file mode 100644 index 0000000..c0feb23 Binary files /dev/null and b/Java-Caching/redis-demo/libs/log4j-core-2.7.jar differ diff --git a/Java-Caching/redis-demo/libs/ojdbc8.jar b/Java-Caching/redis-demo/libs/ojdbc8.jar new file mode 100644 index 0000000..bf41243 Binary files /dev/null and b/Java-Caching/redis-demo/libs/ojdbc8.jar differ diff --git a/Java-Caching/redis-demo/src/com/manhkm/redis/Main.java b/Java-Caching/redis-demo/src/com/manhkm/redis/Main.java new file mode 100644 index 0000000..32255bb --- /dev/null +++ b/Java-Caching/redis-demo/src/com/manhkm/redis/Main.java @@ -0,0 +1,30 @@ +package com.manhkm.redis; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import redis.clients.jedis.Jedis; + +/** + * @author ManhKM on 2/15/2022 + * @project redis-demo + */ +public class Main { + static Logger logger = LogManager.getLogger(Main.class); + + public static void main(String[] args) { + Jedis jedis = new Jedis(String[] args); + logger.info("Connected"); + logger.info("PING to server: " + jedis.ping()); + + // Set/Get String value + jedis.set("MY_NAME_2", "Tung Huynh, set from Java Application"); + logger.info("MY_NAME_2's value: " + jedis.get("MY_NAME_2")); + + // Set/Get List value + jedis.lpush("packages", "logging"); + jedis.lpush("packages", "reflect"); + jedis.lpush("packages", "shallowcopy"); + jedis.lpush("packages", "listcollection"); + logger.info("Items of packages: " + jedis.lrange("packages", 0, 4)); + } +} diff --git a/Java-Collection/concurrent-hashmap/readme.md b/Java-Collection/concurrent-hashmap/readme.md new file mode 100644 index 0000000..d0037a7 --- /dev/null +++ b/Java-Collection/concurrent-hashmap/readme.md @@ -0,0 +1,46 @@ + +## ConcurrentHashMap + +### 1. Khi nào thì lên sử dụng ConcurrentHashMap + +|STT|Vấn đề| +|---|---| +|1|Bạn nên sử dụng ConcurrentHashMap khi bạn cần tính đồng bộ trong dự án của bạn| +|2|Thread safe mà không cần đồng bộ hóa toàn bộ map.| +|3|Đọc có thể xảy ra rất nhanh trong khi ghi được thực hiện với một khóa.| +|4|Không có khóa ở cấp độ object.| +|5|ConcurrentHashMap không ném ra một ConcurrentModificationException nếu một luồng cố gắng sửa đổi nó trong khi một luồng khác đang lặp qua nó.| +|6|ConcurrentHashMap sử dụng vô số khóa.| + + +### 2. Vấn đề về SynchronizedHashMap + +|STT|Vấn đề| +|---|---| +|1|Đồng bộ hóa ở mức độ Object.| +|2|Mọi hoạt động đọc / ghi cần phải có khóa.| +|3|Khóa toàn bộ thực thể collection là vấn đề đau đầu về hiệu suất.| +|4|Về cơ bản, điều này cho phép chỉ một luồng truy cập toàn bộ map và chặn tất cả các luồng khác.| +|5|Nó có thể gây ra việc tranh chấp tài nguyên.| +|6|SynchronizedHashMap trả về Iterator, nó có thể thất bại trong việc sửa đổi đồng thời.| + + + +## Bài toán + +Yêu cầu bài toán + +|STT|Yêu cầu| +|---|---| +|1|Tạo class ConcurrentHashMapVsSynchronizedHashMap.java| +|2|Tạo object HashTable, SynchronizedMap và ConcurrentHashMap| +|3|Thêm mới và truy xuất 1 triệu entries với Map| +|4|Đo lường thời gian bắt đầu và kết thúc => milliseconds| +|5|Sử dụng ExecutorService để chạy 10 luồng(threads) song song| + +Qua ví dụ Testing hiệu năng có thể thấy ConcurrentHashMap là có hiệu suất tốt nhất, thời gian sử lý nhất, hoàn thiện các yêu cầu. + + +## Reference document: + +[HashMap, ConcurrentHashMap, SynchronizedMap, Làm thế nào để một Hashmap có thể đồng bộ hóa trong Java](https://viblo.asia/p/hashmap-concurrenthashmap-synchronizedmap-lam-the-nao-mot-hashmap-co-the-duoc-dong-bo-hoa-trong-java-924lJD8zKPM) \ No newline at end of file diff --git a/Java-Collection/concurrent-hashmap/src/com/core/ClientMap.java b/Java-Collection/concurrent-hashmap/src/com/core/ClientMap.java new file mode 100644 index 0000000..e4c6b89 --- /dev/null +++ b/Java-Collection/concurrent-hashmap/src/com/core/ClientMap.java @@ -0,0 +1,28 @@ +package com.core; + +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author ManhKM on 9/19/2022 + * @project concurrent-hashmap + */ +public class ClientMap { + + public static void main(String[] args) { + + // Hashtable: + Map normalMap = new Hashtable(); + + // synchronizedMap: + Map synchronizedHashMap = Collections.synchronizedMap(new HashMap()); + + // ConcurrentHashMap: + ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap(); + + } +} diff --git a/Java-Collection/concurrent-hashmap/src/com/core/ConcurrentHashMapVsSynchronizedMap.java b/Java-Collection/concurrent-hashmap/src/com/core/ConcurrentHashMapVsSynchronizedMap.java new file mode 100644 index 0000000..94d2311 --- /dev/null +++ b/Java-Collection/concurrent-hashmap/src/com/core/ConcurrentHashMapVsSynchronizedMap.java @@ -0,0 +1,85 @@ +package com.core; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 9/19/2022 + * @project concurrent-hashmap + * ----- + * Khởi 3 trường hợp liên quan của Map + * + hashTable + * + synchronizedMap + * + concurrentHashMap + */ +public class ConcurrentHashMapVsSynchronizedMap { + public final static int THREAD_POOL_SIZE = 10; + public final static int DATA_SIZE = 1_000_000; + + public static Map hashTable = null; + public static Map synchronizedMap = null; + public static Map concurrentHashMap = null; + + public static void main(String[] args) { + System.out.println("---> Start of test"); + + hashTable = new Hashtable<>(); + performTest(hashTable); + + synchronizedMap = Collections.synchronizedMap(new HashMap<>()); + performTest(synchronizedMap); + + concurrentHashMap = new ConcurrentHashMap<>(); + performTest(concurrentHashMap); + + System.out.println("---> End of test"); + } + + private static void performTest(Map testMap) { + System.out.println("Test started for: " + testMap.getClass()); + long averageTime = 0; + + for(int i = 0; i < 10; i++){ + long startTime = System.nanoTime(); + + ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE); + + for(int j = 0; j < THREAD_POOL_SIZE; j++){ + executorService.execute(new Runnable() { + @SuppressWarnings("unused") + @Override + public void run() { + for (int k = 0; k < DATA_SIZE; k++){ + Integer randomNumber = (int)Math.ceil(Math.random() + 100000); + Integer value = testMap.get(String.valueOf(randomNumber)); + testMap.put(String.valueOf(randomNumber), randomNumber); + } + } + }); + } + + executorService.shutdown(); + try { + executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + long endTime = System.nanoTime(); + long totalTime = (endTime - startTime) / 1000000L; + averageTime += totalTime; + + System.out.println("1M entries added/retrieved in " + totalTime + " ms"); + + + } + + System.out.println("For " + testMap.getClass() + " the average time is " + averageTime / 10 + " ms\n"); + } + +} diff --git a/Java-Collection/concurrent-modification-exception/readme.md b/Java-Collection/concurrent-modification-exception/readme.md new file mode 100644 index 0000000..496aee4 --- /dev/null +++ b/Java-Collection/concurrent-modification-exception/readme.md @@ -0,0 +1,13 @@ + + +## java.util.ConcurrentModificationException + +Java Collection classes - fail-fast + +iterator.next() + + +## Tài liệu tham khảo: + +[1. ConcurrentModificationException](https://www.digitalocean.com/community/tutorials/java-util-concurrentmodificationexception) + diff --git a/Java-Collection/concurrent-modification-exception/src/com/msoft/core/ConcurrentModificationExceptionExample.java b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/ConcurrentModificationExceptionExample.java new file mode 100644 index 0000000..84e23d8 --- /dev/null +++ b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/ConcurrentModificationExceptionExample.java @@ -0,0 +1,40 @@ +package com.msoft.core; + +import java.util.ArrayList; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.List; + +/** + * @author ManhKM on 11/25/2022 + * @project concurrent-modification-exception + */ +public class ConcurrentModificationExceptionExample { + + public static void main(String[] args) { + List myList = new ArrayList<>(); + + // Thêm phần tử cho collection: + for (int i = 0; i < 20; i++){ + myList.add(String.valueOf(i)); + } + + // Duyệt Collection và xóa theo điều kiện: + Iterator it = myList.iterator(); + while (it.hasNext()){ + String value = null; + try{ + value = it.next(); + } catch (ConcurrentModificationException e){ + System.out.println(e); + } + System.out.println("List value: " + value); + if (value.equals("3")){ + myList.remove(value); + } + } + + + + } +} diff --git a/Java-Collection/concurrent-modification-exception/src/com/msoft/core/MapExceptionExample.java b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/MapExceptionExample.java new file mode 100644 index 0000000..05ff840 --- /dev/null +++ b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/MapExceptionExample.java @@ -0,0 +1,30 @@ +package com.msoft.core; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * @author ManhKM on 11/25/2022 + * @project concurrent-modification-exception + */ +public class MapExceptionExample { + + public static void main(String[] args) { + + Map myMap = new HashMap(); + myMap.put("1", "1"); + myMap.put("2", "2"); + myMap.put("3", "3"); + + Iterator it1 = myMap.keySet().iterator(); + while (it1.hasNext()) { + String key = it1.next(); + System.out.println("Map Value:" + myMap.get(key)); + if (key.equals("2")) { + myMap.put("1", "4"); + // myMap.put("4", "4"); + } + } + } +} diff --git a/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationException.java b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationException.java new file mode 100644 index 0000000..0a7e0ee --- /dev/null +++ b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationException.java @@ -0,0 +1,33 @@ +package com.msoft.core.singlethread; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import sun.awt.image.ImageWatched.Link; + +/** + * @author ManhKM on 11/25/2022 + * @project concurrent-modification-exception + */ +public class AvoidConcurrentModificationException { + + public static void main(String[] args) { + + List myList = new CopyOnWriteArrayList<>(); +// List myList = new LinkedList<>(); + + for (int i = 1; i <= 5; i++){ + myList.add(String.valueOf(i)); + } + + for (int i = 0; i < myList.size(); i++){ + System.out.println(myList.get(i)); + if (myList.get(i).equals("3")){ + myList.remove(i); + i--; + myList.add("6"); + } + } + } +} diff --git a/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationExceptionArrayListSubList.java b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationExceptionArrayListSubList.java new file mode 100644 index 0000000..b0d0a18 --- /dev/null +++ b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationExceptionArrayListSubList.java @@ -0,0 +1,33 @@ +package com.msoft.core.singlethread; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * @author ManhKM on 11/25/2022 + * @project concurrent-modification-exception + */ +public class AvoidConcurrentModificationExceptionArrayListSubList { + + public static void main(String[] args) { +// List names = new ArrayList<>(); + List names = new CopyOnWriteArrayList<>(); + + names.add("Java"); + names.add("PHP"); + names.add("SQL"); + names.add("Angular 12"); + + List first2Names = names.subList(0, 2); + + System.out.println(names + ", " + first2Names); + + names.set(1, "JavaScript"); + + System.out.println(names + ", " + first2Names); + + names.add("NodeJS"); + System.out.println(names + ", " + first2Names); + } +} diff --git a/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationExceptionList.java b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationExceptionList.java new file mode 100644 index 0000000..b2091f7 --- /dev/null +++ b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationExceptionList.java @@ -0,0 +1,35 @@ +package com.msoft.core.singlethread; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * @author ManhKM on 11/25/2022 + * @project concurrent-modification-exception + */ +public class AvoidConcurrentModificationExceptionList { + + public static void main(String[] args) { + List myList = new CopyOnWriteArrayList<>(); + + for (int i = 1; i <= 5; i++){ + myList.add(String.valueOf(i)); + } + + Iterator it = myList.iterator(); + while (it.hasNext()){ + String value = it.next(); + System.out.println("List Value: " + value); + if(value.equals("3")){ + myList.remove("4"); + myList.add("6"); + myList.add("7"); + } + } + + System.out.println("List size: " + myList.size()); + } +} diff --git a/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationExceptionMap.java b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationExceptionMap.java new file mode 100644 index 0000000..641ac1d --- /dev/null +++ b/Java-Collection/concurrent-modification-exception/src/com/msoft/core/singlethread/AvoidConcurrentModificationExceptionMap.java @@ -0,0 +1,32 @@ +package com.msoft.core.singlethread; + +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author ManhKM on 11/25/2022 + * @project concurrent-modification-exception + */ +public class AvoidConcurrentModificationExceptionMap { + + public static void main(String[] args) { + + Map myMap = new ConcurrentHashMap(); + for (int i = 1; i <= 3; i++){ + myMap.put(String.valueOf(i), String.valueOf(i)); + } + + Iterator it1 = myMap.keySet().iterator(); + while (it1.hasNext()){ + String key = it1.next(); + System.out.println("Map Value: " + myMap.get(key)); + if (key.equals("1")){ + myMap.remove("3"); + myMap.put("4", "4"); + myMap.put("5", "5"); + } + } + System.out.println("Map Size: " + myMap.size()); + } +} diff --git a/Java-Collection/java-LinkedBlockingQueue/readme.md b/Java-Collection/java-LinkedBlockingQueue/readme.md new file mode 100644 index 0000000..ab08aa1 --- /dev/null +++ b/Java-Collection/java-LinkedBlockingQueue/readme.md @@ -0,0 +1,4 @@ + +## Tài liệu tham khảo: + +[LinkedBlockingQueue Class in Java](https://www.geeksforgeeks.org/linkedblockingqueue-class-in-java/#:~:text=The%20LinkedBlockingQueue%20is%20an%20optionally,the%20LinkedBlockingQueue%20will%20be%20unbounded.) diff --git a/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueCollection.java b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueCollection.java new file mode 100644 index 0000000..536d38d --- /dev/null +++ b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueCollection.java @@ -0,0 +1,30 @@ +package com.core.queue; + +import java.util.Vector; +import java.util.concurrent.LinkedBlockingQueue; + +/** + * @author ManhKM on 11/25/2022 + * @project java-LinkedBlockingQueue + * ----- + * LinkedBlockingQueueCollection + */ +public class LinkedBlockingQueueCollection { + + public static void main(String[] args) { + + Vector vector = new Vector<>(); + + vector.addElement(1); + vector.addElement(2); + vector.addElement(3); + vector.addElement(4); + vector.addElement(5); + vector.addElement(6); + + LinkedBlockingQueue linkedBlockingQueue + = new LinkedBlockingQueue<>(vector); + + System.out.println("LinkedBlockingQueue: " + linkedBlockingQueue); + } +} diff --git a/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueDemo.java b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueDemo.java new file mode 100644 index 0000000..09e9ab0 --- /dev/null +++ b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueDemo.java @@ -0,0 +1,22 @@ +package com.core.queue; + +import java.util.concurrent.LinkedBlockingQueue; + +/** + * @author ManhKM on 11/25/2022 + * @project java-LinkedBlockingQueue + */ +public class LinkedBlockingQueueDemo { + + public static void main(String[] args) { + + LinkedBlockingQueue linkedBlockingQueue = new LinkedBlockingQueue<>(); + linkedBlockingQueue.add(1); + linkedBlockingQueue.add(2); + linkedBlockingQueue.add(3); + linkedBlockingQueue.add(4); + linkedBlockingQueue.add(5); + + System.out.println("LinkedBlockingQueue: " + linkedBlockingQueue); + } +} diff --git a/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueDemoWithCapacity.java b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueDemoWithCapacity.java new file mode 100644 index 0000000..185d000 --- /dev/null +++ b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueDemoWithCapacity.java @@ -0,0 +1,24 @@ +package com.core.queue; + +import java.util.concurrent.LinkedBlockingQueue; + +/** + * @author ManhKM on 11/25/2022 + * @project java-LinkedBlockingQueue + */ +public class LinkedBlockingQueueDemoWithCapacity { + + public static void main(String[] args) { + int capacity = 15; + LinkedBlockingQueue linkedBlockingQueue = new LinkedBlockingQueue<>(capacity); + + // Add value: + for (int i = 0; i < 15; i++){ + linkedBlockingQueue.add(i); + } + + // print queue: + System.out.println("LinkedBlockingQueue: " + linkedBlockingQueue); + } + +} diff --git a/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueObject.java b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueObject.java new file mode 100644 index 0000000..aa148e2 --- /dev/null +++ b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/LinkedBlockingQueueObject.java @@ -0,0 +1,26 @@ +package com.core.queue; + +import com.core.queue.entity.Employee; +import java.util.concurrent.LinkedBlockingQueue; + +/** + * @author ManhKM on 11/25/2022 + * @project java-LinkedBlockingQueue + */ +public class LinkedBlockingQueueObject { + + public static void main(String[] args) { + + int capacity = 100; + + LinkedBlockingQueue linkedBlockingQueue + = new LinkedBlockingQueue<>(capacity); + + for (int i = 0; i < capacity; i++){ + Employee employee = new Employee(i, "Name-" + i, "Address-" + i, i); + linkedBlockingQueue.add(employee); + } + + System.out.println(linkedBlockingQueue); + } +} diff --git a/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/entity/Employee.java b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/entity/Employee.java new file mode 100644 index 0000000..6e384f1 --- /dev/null +++ b/Java-Collection/java-LinkedBlockingQueue/src/com/core/queue/entity/Employee.java @@ -0,0 +1,65 @@ +package com.core.queue.entity; + +/** + * @author ManhKM on 11/25/2022 + * @project java-LinkedBlockingQueue + */ +public class Employee { + + private int id; + private String name; + private String address; + private int age; + + public Employee() { + } + + public Employee(int id, String name, String address, int age) { + this.id = id; + this.name = name; + this.address = address; + this.age = age; + } + + 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 getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public String toString() { + return "Employee{" + + "id=" + id + + ", name='" + name + '\'' + + ", address='" + address + '\'' + + ", age=" + age + + '}'; + } +} diff --git a/Java-Collection/java-collection-codejavanet-v1.0.txt b/Java-Collection/java-collection-codejavanet-v1.0.txt new file mode 100644 index 0000000..08ddfa6 --- /dev/null +++ b/Java-Collection/java-collection-codejavanet-v1.0.txt @@ -0,0 +1,71 @@ +Java Collections and Generics Tutorials +Written by Nam Ha Minh +Last Updated on 11 November 2019 | Print Email + +https://www.codejava.net/java-core/collections/what-is-java-collections-framework + + + +Java Collections framework provides a set of reusable data structures and algorithms that make programmer's jobs easier. + +Getting started with Java Collections & Generics for beginners: +What is Java Collections Framework? +Java Collections Framework summary table +What are Generics in Java +How to write generic classes and methods in Java + +Java List Tutorials: +Java List Collection Tutorial and Examples +Sorting List Collections Examples +Sorting a list by multiple attributes example +Java Collections Utility Examples for Changing Order and Content of a List + +Java Set Tutorials: +Java Set Collection Tutorial and Examples +Java SortedSet and TreeSet Tutorial and Examples +Java NavigableSet and TreeSet Tutorial and Examples + +Java Map Tutorials: +Java Map Collection Tutorial and Examples +Java NavigableMap and TreeMap Tutorial and Examples +Java SortedMap and TreeMap Tutorial and Examples + +Java Queue Tutorials: +Java Queue Collection Tutorial and Examples +Java Producer - Consumer Examples Using BlockingQueue + +Java Arrays Tutorials: +Comparing Arrays in Java Examples +Copying and Filling Arrays in Java +Java Arrays Utility Class Examples for List view, Sorting and Searching +Sorting Arrays Examples (with Comparable and Comparator) + +Java Collection Iteration Tutorials: +Java Collections Looping Example +Using Java Lambda expressions for collections internal iteration +The 4 Methods for Iterating Collections in Java + +Java Streams Tutorials: +Understanding Java Stream API +Java Stream Aggregate Functions Examples (Intermediate Operations) +Java Stream Terminal Operations Examples + + + +Advanced Java Collections Tutorials: +Understanding equals() and hashCode() in Java +Understanding Object Ordering in Java with Comparable and Comparator +Understanding Collections and Thread Safety in Java +18 Java Collections and Generics Best Practices + +Advanced Java Generics Tutorials: +Generics with extends and super Wildcards and the Get and Put Principle +Generics with Subtyping and the Substitution Principle + +Miscellaneous Java Collection Tutorials: +Java Collections Factory Method Examples +Java Collections Wrapper Methods Examples +Java Collections Utility Examples for Searching in a Collection + +References: +Trail: Collections from The Java Tutorials (Oracle) \ No newline at end of file diff --git a/Java-Collection/java-collection/collection/.gitignore b/Java-Collection/java-collection/collection/.gitignore new file mode 100644 index 0000000..b2f18b2 --- /dev/null +++ b/Java-Collection/java-collection/collection/.gitignore @@ -0,0 +1,45 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ + +# Compiled class file +*.class +**/target/ +design/ +uml/ +api/file_upload/ +api/file_impact_data/ +api/tmp/ + + +# Log file +*.log +*.log.gz \ No newline at end of file diff --git a/Java-Collection/java-collection/collection/pom.xml b/Java-Collection/java-collection/collection/pom.xml new file mode 100644 index 0000000..0b395df --- /dev/null +++ b/Java-Collection/java-collection/collection/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.example + collection + 1.0 + + + 8 + 8 + + + + + log4j + log4j + 1.2.17 + + + + \ No newline at end of file diff --git a/Java-Collection/java-collection/collection/src/main/java/com/collectiondemo/MainArrayListVsLinkedListPerformance.java b/Java-Collection/java-collection/collection/src/main/java/com/collectiondemo/MainArrayListVsLinkedListPerformance.java new file mode 100644 index 0000000..ffdfd87 --- /dev/null +++ b/Java-Collection/java-collection/collection/src/main/java/com/collectiondemo/MainArrayListVsLinkedListPerformance.java @@ -0,0 +1,89 @@ +package com.collectiondemo; + +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +/** + * logger.info() --> System.out.println() + * @author ManhKM on 2/14/2022 + * @project Java-Collection + */ +public class MainArrayListVsLinkedListPerformance { + static Logger logger = Logger.getLogger(MainArrayListVsLinkedListPerformance.class); + static int n = 100000; + public static void main(String[] args) { + arrayListVsLinkedList(); + } + + private static void arrayListVsLinkedList() { + Integer[] array = new Integer[n]; + List arrayList = new ArrayList(); + List linkedList = new LinkedList(); + + System.out.println("==== Add ===="); + long start = System.nanoTime(); + for (int i = 0; i < n; i++) { + array[i] = i; + } + System.out.println("Array : " + (System.nanoTime() - start)/1000000.0 + " ms"); + + start = System.nanoTime(); + for (int i = 0; i < n; i++) { + arrayList.add(i); + } + System.out.println("ArrayList : " + (System.nanoTime() - start)/1000000.0 + " ms"); + + start = System.nanoTime(); + for (int i = 0; i < n; i++) { + linkedList.add(i); + } + System.out.println("LinkedList: " + (System.nanoTime() - start)/1000000.0 + " ms"); + + System.out.println("==== Get ===="); + start = System.nanoTime(); + for (int i = 0; i < n; i++) { + Integer x = array[i]; + } + System.out.println("Array loop index : " + (System.nanoTime() - start)/1000000.0 + " ms"); + + start = System.nanoTime(); + for (int i = 0; i < n; i++) { + arrayList.get(i); + } + System.out.println("ArrayList loop index : " + (System.nanoTime() - start)/1000000.0 + " ms"); + + start = System.nanoTime(); + for (int i = 0; i < n; i++) { + linkedList.get(i); + } + System.out.println("LinkedList loop index : " + (System.nanoTime() - start)/1000000.0 + " ms"); + + start = System.nanoTime(); + for (Object item : arrayList) { + Object x = item; + } + System.out.println("ArrayList loop interator : " + (System.nanoTime() - start)/1000000.0 + " ms"); + + start = System.nanoTime(); + for (Object item : linkedList) { + Object x = item; + } + System.out.println("LinkedList loop interator: " + (System.nanoTime() - start)/1000000.0 + " ms"); + + System.out.println("==== Remove ===="); + start = System.nanoTime(); + for (int i = 9999; i >=0; i--) { + arrayList.remove(i); + } + System.out.println("ArrayList : " + (System.nanoTime() - start)/1000000.0 + " ms"); + + start = System.nanoTime(); + for (int i = 9999; i >=0; i--) { + linkedList.remove(i); + } + System.out.println("LinkedList: " + (System.nanoTime() - start)/1000000.0 + " ms"); + } +} diff --git a/Java-Collection/java-collection/collection/src/main/java/com/collectiondemo/MainArrayListVsVectorPerformance.java b/Java-Collection/java-collection/collection/src/main/java/com/collectiondemo/MainArrayListVsVectorPerformance.java new file mode 100644 index 0000000..925695d --- /dev/null +++ b/Java-Collection/java-collection/collection/src/main/java/com/collectiondemo/MainArrayListVsVectorPerformance.java @@ -0,0 +1,48 @@ +package com.collectiondemo; + +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; + +/** + * @author ManhKM on 2/14/2022 + * @project Java-Collection + */ +public class MainArrayListVsVectorPerformance { + static Logger logger = Logger.getLogger(MainArrayListVsVectorPerformance.class); + static int n = 100000; + public static void main(String[] args) { + arrayListVsVectorSingle(); + } + public static void arrayListVsVectorSingle(){ + List arrayList = new ArrayList(); + Vector vector = new Vector(); + System.out.println("==== Add ===="); + long start = System.nanoTime(); + for (int i = 0; i < n; i++) { + arrayList.add(i); + } + System.out.println("ArrayList: " + (System.nanoTime() - start)/1000000.0 + " ms"); + + start = System.nanoTime(); + for (int i = 0; i < n; i++) { + vector.add(i); + } + System.out.println("Vector : " + (System.nanoTime() - start)/1000000.0 + " ms"); + + System.out.println("==== Get ===="); + start = System.nanoTime(); + for (int i = 0; i < n; i++) { + arrayList.get(i); + } + System.out.println("ArrayList: " + (System.nanoTime() - start)/1000000.0 + " ms"); + + start = System.nanoTime(); + for (int i = 0; i < n; i++) { + vector.get(i); + } + System.out.println("Vector : " + (System.nanoTime() - start)/1000000.0 + " ms"); + } +} diff --git a/Java-Collection/java-collection/collection/src/main/java/com/multithread/MultiThread.java b/Java-Collection/java-collection/collection/src/main/java/com/multithread/MultiThread.java new file mode 100644 index 0000000..54afa5a --- /dev/null +++ b/Java-Collection/java-collection/collection/src/main/java/com/multithread/MultiThread.java @@ -0,0 +1,65 @@ +package com.multithread; + +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 2/14/2022 + * @project Java-Collection + */ +public class MultiThread { + static Logger logger = Logger.getLogger(MultiThread.class); + + public static void main(String[] args) { + List arrayList = new ArrayList(); + List vector = new Vector(); + + ThreadPoolExecutor executorService = (ThreadPoolExecutor) Executors.newFixedThreadPool(10); + for (int i = 0; i < 10; i++) { + executorService.execute(new CalRunnable(arrayList)); + } + shutdownAndAwaitTermination(executorService); + System.out.println("ArrayList: " + CalRunnable.time/1000000.0 + " ms"); + + executorService = (ThreadPoolExecutor) Executors.newFixedThreadPool(10); + CalRunnable.time = 0; + for (int i = 0; i < 10; i++) { + executorService.execute(new CalRunnable(vector)); + } + shutdownAndAwaitTermination(executorService); + System.out.println("Vector : " + CalRunnable.time/1000000.0 + " ms"); + } + + static void shutdownAndAwaitTermination(ThreadPoolExecutor pool) { + pool.shutdown(); + try { + if (!pool.awaitTermination(60, TimeUnit.SECONDS)) { + pool.shutdownNow(); + if (!pool.awaitTermination(60, TimeUnit.SECONDS)) + System.err.println("Pool did not terminate"); + } + } catch (Exception e) { + } + } +} +class CalRunnable implements Runnable { + static long time = 0; + List lst; + public CalRunnable(List lst){ + this.lst = lst; + } + @Override + public void run() { + long time = System.nanoTime(); + for (int i = 0; i < 100000; i++) { + lst.add(i); + } + CalRunnable.time += (System.nanoTime() - time); + } +} \ No newline at end of file diff --git a/Java-Collection/java-collection/complex-collection/src/com/complex/collection/TestComplexCollection.java b/Java-Collection/java-collection/complex-collection/src/com/complex/collection/TestComplexCollection.java new file mode 100644 index 0000000..115fd0b --- /dev/null +++ b/Java-Collection/java-collection/complex-collection/src/com/complex/collection/TestComplexCollection.java @@ -0,0 +1,16 @@ +package com.complex.collection; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Collection + */ +public class TestComplexCollection { + public static void main(String[] args) { + List> result = new ArrayList<>(); + + } +} diff --git a/Java-Collection/java-collection/for-each/readme.md b/Java-Collection/java-collection/for-each/readme.md new file mode 100644 index 0000000..4c54e91 --- /dev/null +++ b/Java-Collection/java-collection/for-each/readme.md @@ -0,0 +1,11 @@ +### ForEach + + Default Method -> Interable và Stream + + Collection extend Interface Iterable -> forEach() + +###1. Ví dụ sử dụng ForEach với Map + +###2. Sử dụng ForEach với List + +###3. Sử dụng ForEachOrdered() + + diff --git a/Java-Collection/java-collection/for-each/src/core/forEach/ForEachListExample.java b/Java-Collection/java-collection/for-each/src/core/forEach/ForEachListExample.java new file mode 100644 index 0000000..07c3977 --- /dev/null +++ b/Java-Collection/java-collection/for-each/src/core/forEach/ForEachListExample.java @@ -0,0 +1,20 @@ +package core.forEach; + +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Collection + */ +public class ForEachListExample { + public static void main(String[] args) { + List languages = Arrays.asList("Java","JavaScript","PHP"); + + System.out.println("Iterating by passing lambda Expression: "); + languages.forEach(lang -> System.out.println(lang)); + + System.out.println("Iterating by passing method reference: "); + languages.forEach(System.out::println); + } +} diff --git a/Java-Collection/java-collection/for-each/src/core/forEach/ForEachMapExample.java b/Java-Collection/java-collection/for-each/src/core/forEach/ForEachMapExample.java new file mode 100644 index 0000000..ab96143 --- /dev/null +++ b/Java-Collection/java-collection/for-each/src/core/forEach/ForEachMapExample.java @@ -0,0 +1,27 @@ +package core.forEach; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Collection + */ +public class ForEachMapExample { + public static void main(String[] args){ + Map hmap = new HashMap(); + hmap.put(1, "Java"); + hmap.put(2, "JavaScript"); + hmap.put(3, "PHP"); + hmap.put(4, "C#"); + hmap.put(5, "C++"); + + /** + * ForEach to iterate and display each key + * and value pair of HashMap + */ + hmap.forEach( + (key, value) -> System.out.println(key + " - " + value) + ); + } +} diff --git a/Java-Collection/java-collection/for-each/src/core/forEach/ForEachOrderedExample.java b/Java-Collection/java-collection/for-each/src/core/forEach/ForEachOrderedExample.java new file mode 100644 index 0000000..a298e90 --- /dev/null +++ b/Java-Collection/java-collection/for-each/src/core/forEach/ForEachOrderedExample.java @@ -0,0 +1,20 @@ +package core.forEach; + +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Collection + */ +public class ForEachOrderedExample { + public static void main(String[] args) { + List languages = Arrays.asList("Java","JavaScript","PHP"); + + System.out.println("Iterating by passing lambda expression: "); + languages.stream().forEachOrdered(lang -> System.out.println(lang)); + + System.out.println("Iterating by passing method reference: "); + languages.stream().forEachOrdered(System.out::println); + } +} diff --git a/Java-Collection/java-collection/img/a-list-collection.png b/Java-Collection/java-collection/img/a-list-collection.png new file mode 100644 index 0000000..591f474 Binary files /dev/null and b/Java-Collection/java-collection/img/a-list-collection.png differ diff --git a/Java-Collection/java-collection/img/interface-list.png b/Java-Collection/java-collection/img/interface-list.png new file mode 100644 index 0000000..6052dfe Binary files /dev/null and b/Java-Collection/java-collection/img/interface-list.png differ diff --git a/Java-Collection/java-collection/img/relation-collection-java.png b/Java-Collection/java-collection/img/relation-collection-java.png new file mode 100644 index 0000000..0ebdc86 Binary files /dev/null and b/Java-Collection/java-collection/img/relation-collection-java.png differ diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/changing/readme.md b/Java-Collection/java-collection/java-list-tutorial/src/com/core/changing/readme.md new file mode 100644 index 0000000..49184f6 --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/changing/readme.md @@ -0,0 +1,41 @@ + +# Content + +## 1. Changing the order of list elements + +## Reverse element in a List: Đảo ngược lại chuỗi + + +## Rotate element in a List: Xoay các phần từ + + +## Permute element in a List: Hoán vị các vị trí phần tử + + +## Sort element in a list: Sắp xếp các phần từ trong List + + +## Swap element in a list: Đảo vị trí các phần tử trong List + + + + + +## 2. Changing the content of List + + +### Copy element from one list to another list + + +### Replace all elements in list with specified element + + +### Replace all occurrence of an element with anther + + +### + + +## Reference document: + +[Java Collections Utility Example for Changing Order and Content of a List](https://www.codejava.net/java-core/collections/java-collections-utility-examples-for-changing-order-and-content-of-a-list) \ No newline at end of file diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/Employee.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/Employee.java new file mode 100644 index 0000000..607c2fe --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/Employee.java @@ -0,0 +1,66 @@ +package com.core.sort; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class Employee implements Comparable{ + private String name; + private int age; + private int salary; + + public Employee(String name, int age, int salary){ + this.name = name; + this.age = age; + this.salary = salary; + } + + public Employee() { + + } + + 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 int getSalary() { + return salary; + } + + public void setSalary(int salary) { + this.salary = salary; + } + + @Override + public String toString() { + return "Employee{" + + "name='" + name + '\'' + + ", age=" + age + + ", salary=" + salary + + '}'; + } + + /** + * So sánh với trường giá trị của salary. + * nếu thay bằng giá trị nào khác thì chỉ cần compare giá trị đó với nhau là được + * @param o + * @return + */ + @Override + public int compareTo(Employee o) { + int result = o.salary - this.salary; + return result; + } +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListEmployee.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListEmployee.java new file mode 100644 index 0000000..d54f8ca --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListEmployee.java @@ -0,0 +1,36 @@ +package com.core.sort; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class SortingListEmployee { + + public static void main(String[] args) { + List employeeList = new ArrayList(); + + employeeList.add(new Employee("ManhKM", 18, 9000)); + employeeList.add(new Employee("ManhKM1", 15, 9001)); + employeeList.add(new Employee("ManhKM2", 18, 9002)); + employeeList.add(new Employee("ManhKM3", 16, 9003)); + employeeList.add(new Employee("ManhKM4", 12, 9004)); + + System.out.println("ListData Before Sorting: "); + + for (Employee item: employeeList) { + System.out.println(item.toString()); + } + + Collections.sort(employeeList); + + System.out.println("ListData After Sorting: "); + + for (Employee item: employeeList) { + System.out.println(item.toString()); + } + } +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListOfDate.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListOfDate.java new file mode 100644 index 0000000..d9d0266 --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListOfDate.java @@ -0,0 +1,38 @@ +package com.core.sort; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +/** + * @author ManhKM on 8/24/2022 + * @project java-collection + */ +public class SortingListOfDate { + + public static void main(String[] args) { + List listDates = new ArrayList<>(); + + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + + try { + listDates.add(dateFormat.parse("1996-04-30")); + listDates.add(dateFormat.parse("1993-04-30")); + listDates.add(dateFormat.parse("1995-04-30")); + listDates.add(dateFormat.parse("1996-04-20")); + } catch (ParseException e) { + e.printStackTrace(); + } + + System.out.println("Before sorting: " + listDates); + + Collections.sort(listDates); + + System.out.println("After sorting: " + listDates); + } +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListOfInteger.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListOfInteger.java new file mode 100644 index 0000000..1eb490e --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListOfInteger.java @@ -0,0 +1,28 @@ +package com.core.sort; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class SortingListOfInteger { + + public static void main(String[] args) { + List integerList = Arrays.asList(1,2,3,4,5,6,4,5,6,7,8,5,9); + + System.out.println("Before sorting: " + integerList); + + Collections.sort(integerList); + + System.out.println("After sorting: " + integerList); + + Collections.reverse(integerList); + + System.out.println("After reversing: " + integerList); + + } + +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListOfString.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListOfString.java new file mode 100644 index 0000000..fc6c869 --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListOfString.java @@ -0,0 +1,22 @@ +package com.core.sort; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * @author ManhKM on 8/24/2022 + * @project java-collection + */ +public class SortingListOfString { + + public static void main(String[] args) { + List listStrings = Arrays.asList("Khong", "Minh", "Manh", "Hà Nội", "Thái Bình", "A", "W"); + + System.out.println("Before sorting: " + listStrings); + + Collections.sort(listStrings); + + System.out.println("After sorting: " + listStrings); + } +} \ No newline at end of file diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListStudent.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListStudent.java new file mode 100644 index 0000000..56e0ce2 --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingListStudent.java @@ -0,0 +1,31 @@ +package com.core.sort; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class SortingListStudent { + + public static void main(String[] args){ + List studentList = new ArrayList<>(); + + studentList.add(new Student("Hoa", 11, 100)); + studentList.add(new Student("Manh", 12, 100)); + studentList.add(new Student("Yen", 19, 100)); + studentList.add(new Student("Duong", 21, 100)); + studentList.add(new Student("Hau", 10, 100)); + + System.out.println("Before sorting: " + studentList); + + Collections.sort(studentList, new StudentAgeComparator()); + + System.out.println("After sorting: " + studentList); + + + } + +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingMultipleAttributeExample.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingMultipleAttributeExample.java new file mode 100644 index 0000000..566bd42 --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/SortingMultipleAttributeExample.java @@ -0,0 +1,49 @@ +package com.core.sort; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class SortingMultipleAttributeExample { + + public static void main(String[] args) { + System.out.println("========== SORTING BY MULTIPLE ATTRIBUTES ========="); + + List studentList = new ArrayList<>(); + + studentList.add(new Student("Tom", "School1", 11, 100)); + studentList.add(new Student("Sam", "School4", 15, 100)); + studentList.add(new Student("Peter", "School4", 11, 100)); + studentList.add(new Student("Tim", "School5", 11, 100)); + studentList.add(new Student("Anne", "School1", 11, 100)); + studentList.add(new Student("John", "School1", 11, 100)); + studentList.add(new Student("Bill", "School1", 11, 100)); + studentList.add(new Student("Jane", "School1", 11, 100)); + studentList.add(new Student("Alice", "School1", 11, 100)); + studentList.add(new Student("David", "School1", 11, 100)); + studentList.add(new Student("Jane", "School1", 11, 100)); + studentList.add(new Student("Antony", "School1", 11, 100)); + studentList.add(new Student("JKen", "School1", 11, 100)); + studentList.add(new Student("Black", "School1", 11, 100)); + + System.out.println("***** Before Sorting *****"); + for (Student item: studentList) { + System.out.println(item); + } + + Collections.sort(studentList, new StudentChainedComparator( + new StudentAgeComparator(), + new StudentSalaryComparator(), + new StudentSchoolComparator())); + + System.out.println("***** After Sorting *****"); + for (Student item: studentList) { + System.out.println(item); + } + } + +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/Student.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/Student.java new file mode 100644 index 0000000..17c9f65 --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/Student.java @@ -0,0 +1,37 @@ +package com.core.sort; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class Student extends Employee{ + + private String schoolName; + + public Student(String name, int age, int salary) { + super(name, age, salary); + } + + public Student(String name, String schoolName, int age, int salary){ + super(name, age, salary); + this.schoolName = schoolName; + } + + public String getSchoolName() { + return schoolName; + } + + public void setSchoolName(String schoolName) { + this.schoolName = schoolName; + } + + @Override + public String toString() { + return "Student{" + + "schoolName='" + this.schoolName + '\'' + + " name="+ super.getName() + + " age="+ super.getAge() + + " salary="+ super.getSalary() + + '}'; + } +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentAgeComparator.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentAgeComparator.java new file mode 100644 index 0000000..7e86cd2 --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentAgeComparator.java @@ -0,0 +1,16 @@ +package com.core.sort; + +import java.util.Comparator; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class StudentAgeComparator implements Comparator { + + @Override + public int compare(Student o1, Student o2) { + int result = o1.getAge() - o2.getAge(); + return result; + } +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentChainedComparator.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentChainedComparator.java new file mode 100644 index 0000000..cd36fa9 --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentChainedComparator.java @@ -0,0 +1,29 @@ +package com.core.sort; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class StudentChainedComparator implements Comparator { + + private List> listComparator; + + public StudentChainedComparator(Comparator... comparators) { + this.listComparator = Arrays.asList(comparators); + } + + @Override + public int compare(Student o1, Student o2) { + for(Comparator comparator : listComparator){ + int result = comparator.compare(o1, o2); + if(result != 0){ + return result; + } + } + return 0; + } +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentSalaryComparator.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentSalaryComparator.java new file mode 100644 index 0000000..c6f133d --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentSalaryComparator.java @@ -0,0 +1,15 @@ +package com.core.sort; + +import java.util.Comparator; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class StudentSalaryComparator implements Comparator { + + @Override + public int compare(Student o1, Student o2) { + return o1.getSalary() - o2.getSalary(); + } +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentSchoolComparator.java b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentSchoolComparator.java new file mode 100644 index 0000000..a50685e --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/StudentSchoolComparator.java @@ -0,0 +1,15 @@ +package com.core.sort; + +import java.util.Comparator; + +/** + * @author ManhKM on 8/25/2022 + * @project java-collection + */ +public class StudentSchoolComparator implements Comparator { + + @Override + public int compare(Student o1, Student o2) { + return o1.getSchoolName().compareTo(o2.getSchoolName()); + } +} diff --git a/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/readme.md b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/readme.md new file mode 100644 index 0000000..de033db --- /dev/null +++ b/Java-Collection/java-collection/java-list-tutorial/src/com/core/sort/readme.md @@ -0,0 +1,2 @@ +# Reversing Sort Order + diff --git a/Java-Collection/out/production/Java-Collection/com/listdemo/ListDemo.class b/Java-Collection/java-collection/out/production/Java-Collection/com/listdemo/ListDemo.class similarity index 100% rename from Java-Collection/out/production/Java-Collection/com/listdemo/ListDemo.class rename to Java-Collection/java-collection/out/production/Java-Collection/com/listdemo/ListDemo.class diff --git a/Java-Collection/out/production/Java-Collection/com/listdemo/listmap/ListMapDemo.class b/Java-Collection/java-collection/out/production/Java-Collection/com/listdemo/listmap/ListMapDemo.class similarity index 100% rename from Java-Collection/out/production/Java-Collection/com/listdemo/listmap/ListMapDemo.class rename to Java-Collection/java-collection/out/production/Java-Collection/com/listdemo/listmap/ListMapDemo.class diff --git a/Java-Collection/out/production/Java-Collection/com/mapdemo/MapDemo.class b/Java-Collection/java-collection/out/production/Java-Collection/com/mapdemo/MapDemo.class similarity index 100% rename from Java-Collection/out/production/Java-Collection/com/mapdemo/MapDemo.class rename to Java-Collection/java-collection/out/production/Java-Collection/com/mapdemo/MapDemo.class diff --git a/Java-Collection/java-collection/out/production/for-each/core/forEach/ForEachListExample.class b/Java-Collection/java-collection/out/production/for-each/core/forEach/ForEachListExample.class new file mode 100644 index 0000000..4731bdb Binary files /dev/null and b/Java-Collection/java-collection/out/production/for-each/core/forEach/ForEachListExample.class differ diff --git a/Java-Collection/java-collection/out/production/for-each/core/forEach/ForEachMapExample.class b/Java-Collection/java-collection/out/production/for-each/core/forEach/ForEachMapExample.class new file mode 100644 index 0000000..91b588e Binary files /dev/null and b/Java-Collection/java-collection/out/production/for-each/core/forEach/ForEachMapExample.class differ diff --git a/Java-Collection/java-collection/out/production/for-each/core/forEach/ForEachOrderedExample.class b/Java-Collection/java-collection/out/production/for-each/core/forEach/ForEachOrderedExample.class new file mode 100644 index 0000000..ebfe4ea Binary files /dev/null and b/Java-Collection/java-collection/out/production/for-each/core/forEach/ForEachOrderedExample.class differ diff --git a/Java-Collection/java-collection/out/production/java-list-tutorial/com/core/sort/readme.md b/Java-Collection/java-collection/out/production/java-list-tutorial/com/core/sort/readme.md new file mode 100644 index 0000000..de033db --- /dev/null +++ b/Java-Collection/java-collection/out/production/java-list-tutorial/com/core/sort/readme.md @@ -0,0 +1,2 @@ +# Reversing Sort Order + diff --git a/Java-Collection/java-collection/out/production/queue-demo/com/queue/demo/BlockingQueueDemo.class b/Java-Collection/java-collection/out/production/queue-demo/com/queue/demo/BlockingQueueDemo.class new file mode 100644 index 0000000..6ad55f5 Binary files /dev/null and b/Java-Collection/java-collection/out/production/queue-demo/com/queue/demo/BlockingQueueDemo.class differ diff --git a/Java-Collection/java-collection/out/production/stream-api/com/core/stream/convert/ConvertToStreamExample.class b/Java-Collection/java-collection/out/production/stream-api/com/core/stream/convert/ConvertToStreamExample.class new file mode 100644 index 0000000..6649ffb Binary files /dev/null and b/Java-Collection/java-collection/out/production/stream-api/com/core/stream/convert/ConvertToStreamExample.class differ diff --git a/Java-Collection/java-collection/out/production/stream-api/com/core/stream/intro/PrimitiveStreamExample.class b/Java-Collection/java-collection/out/production/stream-api/com/core/stream/intro/PrimitiveStreamExample.class new file mode 100644 index 0000000..80188d8 Binary files /dev/null and b/Java-Collection/java-collection/out/production/stream-api/com/core/stream/intro/PrimitiveStreamExample.class differ diff --git a/Java-Collection/java-collection/out/production/stream-api/com/core/stream/intro/StreamExample.class b/Java-Collection/java-collection/out/production/stream-api/com/core/stream/intro/StreamExample.class new file mode 100644 index 0000000..761f150 Binary files /dev/null and b/Java-Collection/java-collection/out/production/stream-api/com/core/stream/intro/StreamExample.class differ diff --git a/Java-Collection/java-collection/out/production/stream-api/com/core/stream/intro/StreamMain.class b/Java-Collection/java-collection/out/production/stream-api/com/core/stream/intro/StreamMain.class new file mode 100644 index 0000000..d14f4f8 Binary files /dev/null and b/Java-Collection/java-collection/out/production/stream-api/com/core/stream/intro/StreamMain.class differ diff --git a/Java-Collection/java-collection/queue-demo/src/com/queue/demo/BlockingQueueDemo.java b/Java-Collection/java-collection/queue-demo/src/com/queue/demo/BlockingQueueDemo.java new file mode 100644 index 0000000..540a0ce --- /dev/null +++ b/Java-Collection/java-collection/queue-demo/src/com/queue/demo/BlockingQueueDemo.java @@ -0,0 +1,53 @@ +package com.queue.demo; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Collection + */ +public class BlockingQueueDemo { + public static void main(String[] args) { + + // ArrayBlockingQueue + BlockingQueue animal1 = new ArrayBlockingQueue<>(10); + + // LinkedBlockingQueue + BlockingQueue animal2 = new LinkedBlockingQueue<>(); + + + // add() -> chèn một phần tử vao BlockingQueue ở cuối queue + // FIFO + animal1.add("Chó"); + animal1.add("Mèo"); + animal1.add("Gà"); + animal1.add("Heo"); + + // element() -> trả về phần từ ở đầu của Queue. + System.out.println(animal1.element()); + + // remove() -> loại bỏ một phần tử khỏi BlockingQueue + animal1.remove(); + System.out.println("After remove: " + animal1); + + // offer() -> chèn phần từ được chỉ địn vào BlockingQueue ở cuối + animal1.offer("Dragon"); + System.out.println("After Offer: " + animal1); + + // peek() -> trả về phần từ đầu của BlockingQuee + System.out.println("method peek(): " + animal1.peek()); + + // poll() -> loại bỏ một phần tử khỏi BlockingQueue: + animal1.poll(); + System.out.println("After poll(): " + animal1); + + // offer() - poll() + // Chèn theo khoảng thời gian + + //put() + //take() + + } +} diff --git a/Java-Collection/java-collection/readme.md b/Java-Collection/java-collection/readme.md new file mode 100644 index 0000000..7326b13 --- /dev/null +++ b/Java-Collection/java-collection/readme.md @@ -0,0 +1,89 @@ +# Java-Collection + + +## 1. Overview of List Collection + +![img.png](img/a-list-collection.png) + + +![interface-list](img/interface-list.png) + + +![relation-collection](img/relation-collection-java.png) + + +## 2. Creating a new List + + + +## 3. Basic List Operations: adding, retrieving, updating, removing elements. + +add(Object) + +add(index, Object) + +addAll() + +remove(Object) + +clear() + + + +## 4. Iterating over elements in a List + +Loop - forEach + +Using Iterator + +forEach + Lambda + + +## 5. Searching for an element in a List + +contains + +indexOf + +lastIndexOf + + +## 6. Sorting a List + +implement Interface compareTo() + + +## 7. Copying Elements from one list into another + + + +## 8. Shuffling elements in a list + + + +## 9. Reversing elements in a List + + + +## 10. Extracting a portion of a List + + + +## 11. Converting between Lists and Arrays + + + +## 12. List to Stream + + + +## 13. Concurrent Lists + + + +## Reference Document + +[So sánh ArrayList, Array, LinkedList, Vector](https://tunghuynh.net/programer/java/2164/java-phan-10-so-sanh-array-vs-arraylist-vs-linkedlist-vs-vector/) + +[Java List Collection Tutorial and Example](https://www.codejava.net/java-core/collections/java-list-collection-tutorial-and-examples) + diff --git a/Java-Collection/src/com/listdemo/ListDemo.java b/Java-Collection/java-collection/src/com/listdemo/ListDemo.java similarity index 100% rename from Java-Collection/src/com/listdemo/ListDemo.java rename to Java-Collection/java-collection/src/com/listdemo/ListDemo.java diff --git a/Java-Collection/src/com/listdemo/listmap/ListMapDemo.java b/Java-Collection/java-collection/src/com/listdemo/listmap/ListMapDemo.java similarity index 100% rename from Java-Collection/src/com/listdemo/listmap/ListMapDemo.java rename to Java-Collection/java-collection/src/com/listdemo/listmap/ListMapDemo.java diff --git a/Java-Collection/src/com/mapdemo/MapDemo.java b/Java-Collection/java-collection/src/com/mapdemo/MapDemo.java similarity index 100% rename from Java-Collection/src/com/mapdemo/MapDemo.java rename to Java-Collection/java-collection/src/com/mapdemo/MapDemo.java diff --git a/Java-Collection/java-collection/stream-api/readme.md b/Java-Collection/java-collection/stream-api/readme.md new file mode 100644 index 0000000..ea1671f --- /dev/null +++ b/Java-Collection/java-collection/stream-api/readme.md @@ -0,0 +1,31 @@ +### Giới thiệu về Stream API trong Java 8 + + +### Nội dung: + 1. Giới thiệu về Stream trong Java 8 + java.util.stream -> gói thư viện chuẩn. + 1.1. Ví dụ về sử dụng Stream + Sử dụng Stream sẽ nhanh và hiệu xuất hơn + + 1.2. Một số phương thức của Stream + + stream() + + parallelStream() + + 1.3. Các đặc điểm của Java Stream + + 1.4. So sánh Streams với Collections + + 1.5. Cách làm việc với Stream trong Java + + 2. Một vài ví dụ về Stream + 2.1. Tạo Stream + 2.1.1. Tạo Stream cho những kiểu Primitive + 2.1.2. Tạo Stream từ các cấu trúc dữ liệu khác + 2.1.3. Tạo Stream sang các cấu trúc dữ liệu khác. + + 2.2. Ví dụ Intermediate operation + 2.3. Ví dụ Terminal Operations + + 3. Stream API với I/O + 4. Luồng song song - Parallel Streams + 5. Hạn chế của Stream diff --git a/Java-Collection/java-collection/stream-api/src/com/core/stream/convert/ConvertToStreamExample.java b/Java-Collection/java-collection/stream-api/src/com/core/stream/convert/ConvertToStreamExample.java new file mode 100644 index 0000000..9b0d6d7 --- /dev/null +++ b/Java-Collection/java-collection/stream-api/src/com/core/stream/convert/ConvertToStreamExample.java @@ -0,0 +1,43 @@ +package com.core.stream.convert; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Collection + */ +public class ConvertToStreamExample { + public static void streamFromArray(){ + String[] languages = {"Java", "JavaScript", "PHP"}; + + /** + * Tạo Stream sử dụng Arrays.stream + */ + Stream testStream1 = Arrays.stream(languages); + testStream1.forEach(x -> System.out.println(x)); + + Stream testStream2 = Stream.of(languages); + testStream2.forEach(x -> System.out.println(x)); + } + + public static void streamFromCollection(){ + List items = new ArrayList<>(); + items.add("Java"); + items.add("C++"); + items.add("C#"); + items.add("JavaScript"); + items.stream().forEach(item -> System.out.println(item)); + + } + + public static void streamUsingGenerate(){ +// Stream stream = Stream.generate(); + } + + public static void main(String[] args) { + streamFromCollection(); + } +} diff --git a/Java-Collection/java-collection/stream-api/src/com/core/stream/intro/PrimitiveStreamExample.java b/Java-Collection/java-collection/stream-api/src/com/core/stream/intro/PrimitiveStreamExample.java new file mode 100644 index 0000000..a56f215 --- /dev/null +++ b/Java-Collection/java-collection/stream-api/src/com/core/stream/intro/PrimitiveStreamExample.java @@ -0,0 +1,29 @@ +package com.core.stream.intro; + +import java.util.stream.DoubleStream; +import java.util.stream.IntStream; +import java.util.stream.LongStream; + +/** + * Thực hiện code với các Primitive Data trong Java + * + IntStream + * + DoubleStream + * + LongStream + * Các method hỗ trợ: range, of... + * @author ManhKM on 4/12/2022 + * @project Java-Collection + */ +public class PrimitiveStreamExample { + + public static void main(String[] args) { + IntStream.range(1,4).forEach(System.out::print); + + IntStream.of(1,2,3,4).forEach(System.out::print); + + DoubleStream.of(1,2,3,4,5).forEach(System.out::print); + + LongStream.range(1,4).forEach(System.out::print); + + LongStream.of(1,2,3,4,5,6).forEach(System.out::print); + } +} diff --git a/Java-Collection/java-collection/stream-api/src/com/core/stream/intro/StreamExample.java b/Java-Collection/java-collection/stream-api/src/com/core/stream/intro/StreamExample.java new file mode 100644 index 0000000..98c7b67 --- /dev/null +++ b/Java-Collection/java-collection/stream-api/src/com/core/stream/intro/StreamExample.java @@ -0,0 +1,38 @@ +package com.core.stream.intro; + +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Collection + */ +public class StreamExample { + List numbers = Arrays.asList(2,3,4,1,2,4,5,3); + + /** + * Bài toán liệt kê tổng số chẵn trong mảng cho trước: + * count + * Thực hiện code normal. + */ + public void withoutStream(){ + long count = 0; + for(Integer number : numbers){ + if(number % 2 == 0){ + count++; + } + } + System.out.printf("There are %d elements that are even", count); + } + + /** + * Triển khai với dạng Lambda + * chuyển về stream -> count(). + */ + public void withStream(){ + long count = numbers.stream() + .filter(num -> num % 2 == 0) + .count(); + System.out.printf("There are %d elements that are even", count); + } +} diff --git a/Java-Collection/java-collection/stream-api/src/com/core/stream/intro/StreamMain.java b/Java-Collection/java-collection/stream-api/src/com/core/stream/intro/StreamMain.java new file mode 100644 index 0000000..c871d65 --- /dev/null +++ b/Java-Collection/java-collection/stream-api/src/com/core/stream/intro/StreamMain.java @@ -0,0 +1,14 @@ +package com.core.stream.intro; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Collection + */ +public class StreamMain { + public static void main(String[] args) { + StreamExample streamExample = new StreamExample(); + streamExample.withoutStream(); + System.out.println(); + streamExample.withStream(); + } +} diff --git a/Java-Collection/java-deque/pom.xml b/Java-Collection/java-deque/pom.xml new file mode 100644 index 0000000..4200a0d --- /dev/null +++ b/Java-Collection/java-deque/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + com.core + java-deque + 1.0-SNAPSHOT + + + 8 + 8 + + + \ No newline at end of file diff --git a/Java-Collection/java-deque/src/main/java/com/core/QueueExample.java b/Java-Collection/java-deque/src/main/java/com/core/QueueExample.java new file mode 100644 index 0000000..aa07eb8 --- /dev/null +++ b/Java-Collection/java-deque/src/main/java/com/core/QueueExample.java @@ -0,0 +1,36 @@ +package com.core; + +import java.util.ArrayDeque; + +/** + * Lưu ý rằng: ArrayQueue không phải là một thread-safe. + * Nếu sử dụng trong môi trường đa luồng, hãy đảm bảo rằng đã đồng bộ hóa truy cập đến nó. + */ +public class QueueExample { + public static void main(String[] args) { + ArrayDeque queue = new ArrayDeque<>(); + + // Thêm phần từ vào hàng đợi: + queue.addLast("First"); + queue.addLast(1); + queue.addLast(2); + queue.addLast(3); + queue.addLast(3.14); + queue.addLast("The End"); + + // Lấy và in ra phần từ đầu hàng đợi: + System.out.println("First element: " + queue.getFirst()); + + // Xóa phần từ đầu hàng đợi: + System.out.println("Delete success first element: " + queue.removeFirst()); + + // IN ra số lượng phần tử trong hàng đợi: + System.out.println("Size of queue: " + queue.size()); + + // In ra số lượng các phần từ còn lại: + System.out.println("List data of queue: "); + for (Object element : queue){ + System.out.print(element + ", "); + } + } +} diff --git a/Java-Collection/java-generics/out/production/java-generics/com/geek/note.md b/Java-Collection/java-generics/out/production/java-generics/com/geek/note.md new file mode 100644 index 0000000..f2fe266 --- /dev/null +++ b/Java-Collection/java-generics/out/production/java-generics/com/geek/note.md @@ -0,0 +1 @@ +https://www.geeksforgeeks.org/generics-in-java \ No newline at end of file diff --git a/Java-Collection/java-generics/readme.md b/Java-Collection/java-generics/readme.md new file mode 100644 index 0000000..240d5bf --- /dev/null +++ b/Java-Collection/java-generics/readme.md @@ -0,0 +1,44 @@ +# Generics trong Java + +## Mục đích: + +Là một cách để xác định kiểu cụ thể cho lớp và phương thức trong ngữ cảnh khác nhau. + +## Lớp Generic trong Java + +Quy ước đặt tên tham số: + +T - Type + +E - Element + +K - Key + +N - Number + +V - Value + +## Multiple Type Parameters in Generic Classes + + + +## Phương thức Generic trong Java + + +## Ký tự đại diện (?) trong Java Generics + +## Sử dụng Generics trong các đối tượng Collection + +## Lợi thế của Generic trong Java + +1. Kiểu đối tượng an toàn + +Nó không cho phép lưu trữ 2 đối tượng có kiểu khác nhau + +2. Không cần phải ép kiểu -> vì đã xác định kiểu của nó ngay lúc sử dụng + +3. Kiểm tra lúc biên dịch + +Kiểm tra lỗi khi biên dịch nên sẽ không bị lỗi lúc runtime. + + diff --git a/Java-Collection/java-generics/src/com/core/DemoGenerics.java b/Java-Collection/java-generics/src/com/core/DemoGenerics.java new file mode 100644 index 0000000..f382c6c --- /dev/null +++ b/Java-Collection/java-generics/src/com/core/DemoGenerics.java @@ -0,0 +1,22 @@ +package com.core; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 8/23/2022 + * @project java-generics + */ +public class DemoGenerics { + + public static void main(String[] args) { + List listNames = new ArrayList(); + listNames.add("Tom"); + listNames.add("ManhKm"); + listNames.add("Peter"); + + String name = listNames.get(1); + System.out.println(name); + } + +} diff --git a/Java-Collection/java-generics/src/com/core/DemoWithoutGenerics.java b/Java-Collection/java-generics/src/com/core/DemoWithoutGenerics.java new file mode 100644 index 0000000..8065158 --- /dev/null +++ b/Java-Collection/java-generics/src/com/core/DemoWithoutGenerics.java @@ -0,0 +1,24 @@ +package com.core; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 8/23/2022 + * @project java-generics + */ +public class DemoWithoutGenerics { + + public static void main(String[] args) { + List listNames = new ArrayList(); // code without generics: + listNames.add("Tom"); + listNames.add("ManhKM1"); + listNames.add("Peter"); + + String name2 = (String) listNames.get(1); // casting object into String + System.out.println(name2); + + + } + +} diff --git a/Java-Collection/java-generics/src/com/core/EliminationOfCasts.java b/Java-Collection/java-generics/src/com/core/EliminationOfCasts.java new file mode 100644 index 0000000..4026253 --- /dev/null +++ b/Java-Collection/java-generics/src/com/core/EliminationOfCasts.java @@ -0,0 +1,48 @@ +package com.core; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * @author ManhKM on 8/23/2022 + * @project java-generics + */ +public class EliminationOfCasts { + + public static void main(String[] args) { + + //demoWithoutGenerics(); + demoWithGenerics(); + } + + private static void demoWithGenerics() { + List bookTitles = new ArrayList(); + bookTitles.add("Effective Java"); + bookTitles.add("Thinking in Java"); + bookTitles.add("Head First Java"); + + Iterator it = bookTitles.iterator(); + + while (it.hasNext()){ + System.out.println(it.next()); // different it.next() method + } + } + + private static void demoWithoutGenerics() { + List bookTitles = new ArrayList(); + + bookTitles.add("Effective Java"); + bookTitles.add("Thinking in Java"); + bookTitles.add("Head First Java"); + + Iterator it = bookTitles.iterator(); + + System.out.println("---Data of BookTitles---"); + while (it.hasNext()){ + String nextTitle = (String) it.next(); + System.out.println(nextTitle); + } + } + +} diff --git a/Java-Collection/java-generics/src/com/core/MethodGeneric.java b/Java-Collection/java-generics/src/com/core/MethodGeneric.java new file mode 100644 index 0000000..b578366 --- /dev/null +++ b/Java-Collection/java-generics/src/com/core/MethodGeneric.java @@ -0,0 +1,41 @@ +package com.core; + +/** + * @author ManhKM on 8/23/2022 + * @project java-generics + * ----- + * Thực hành việc Generic với một Object + */ +public class MethodGeneric { + + /** + * In ra toàn bộ dữ liệu của mảng với kiểu là Element do người dùng truyền vào. + * @param elements - Tên của mảng + * @param - kiểu của dữ liệu mảng + */ + public static void printArray(E[] elements){ + for (E element : elements){ + System.out.print(element + " "); + } + System.out.println(); + } + + public static void main(String[] args) { + Integer[] intArray = {10, 11, 12, 13, 14, 15, 16, 17}; + + Character[] charArray = {'A', 'B', 'C', 'D', 'E', 'F'}; + + String[] stringArray = {"Khong Minh Manh", "Hà Nội", "Thái Bình", "Trời mưa to", "Trời nắng to"}; + + + + System.out.println("In mảng các số nguyên: "); + printArray(intArray); + + System.out.println("In mảng các ký tự: "); + printArray(charArray); + + System.out.println("In mảng có chuỗi: "); + printArray(stringArray); + } +} diff --git a/Java-Collection/java-generics/src/com/core/MyGeneric.java b/Java-Collection/java-generics/src/com/core/MyGeneric.java new file mode 100644 index 0000000..350562c --- /dev/null +++ b/Java-Collection/java-generics/src/com/core/MyGeneric.java @@ -0,0 +1,21 @@ +package com.core; + +/** + * @author ManhKM on 8/23/2022 + * @project java-generics + * ----- + * Thực hiện có các chức năng: CRUD + */ +public class MyGeneric { + T obj; + + void add(T obj){ + this.obj = obj; + } + + T get(){ + return this.obj; + } + + +} diff --git a/Java-Collection/java-generics/src/com/core/MyGenericDemo.java b/Java-Collection/java-generics/src/com/core/MyGenericDemo.java new file mode 100644 index 0000000..70bcf09 --- /dev/null +++ b/Java-Collection/java-generics/src/com/core/MyGenericDemo.java @@ -0,0 +1,21 @@ +package com.core; + +/** + * @author ManhKM on 8/23/2022 + * @project java-generics + */ +public class MyGenericDemo { + + public static void main(String[] args) { + + // using Integer: + MyGeneric m1 = new MyGeneric(); + m1.add(2); + System.out.println("Value of Generic "+m1.get().getClass() +": "+m1.get()); + + // using String: + MyGeneric m2 = new MyGeneric(); + m2.add("Khong Minh Manh"); + System.out.println("Value of Generic " +m2.get().getClass() +": "+m2.get()); + } +} diff --git a/Java-Collection/java-generics/src/com/core/Student.java b/Java-Collection/java-generics/src/com/core/Student.java new file mode 100644 index 0000000..1c72b5c --- /dev/null +++ b/Java-Collection/java-generics/src/com/core/Student.java @@ -0,0 +1,53 @@ +package com.core; + +/** + * @author ManhKM on 8/23/2022 + * @project java-generics + */ +public class Student { + private String name; + private String address; + private int age; + + public Student() { + } + + public Student(String name, String address, int age) { + this.name = name; + this.address = address; + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public String toString() { + return "Student{" + + "name='" + name + '\'' + + ", address='" + address + '\'' + + ", age=" + age + + '}'; + } +} diff --git a/Java-Collection/java-generics/src/com/geek/func/Test.java b/Java-Collection/java-generics/src/com/geek/func/Test.java new file mode 100644 index 0000000..1ba76a1 --- /dev/null +++ b/Java-Collection/java-generics/src/com/geek/func/Test.java @@ -0,0 +1,26 @@ +package com.geek.func; + +/** + * @author ManhKM on 8/24/2022 + * @project java-generics + */ +public class Test { + static void genericDisplay(T element){ + + // Hiển thị thông tin của lớp T -> trừ tượng truyền vào" + System.out.println(element.getClass().getName() + " = " + element); + } + + public static void main(String[] args) { + + // Calling generic method with Integer argument: + genericDisplay(11); + + // Calling generic method with String argument: + genericDisplay("Khổng Minh Mạnh"); + + // Calling generic method with Double argument: + genericDisplay(3.14); + + } +} diff --git a/Java-Collection/java-generics/src/com/geek/multiple/MainTest.java b/Java-Collection/java-generics/src/com/geek/multiple/MainTest.java new file mode 100644 index 0000000..1c6936d --- /dev/null +++ b/Java-Collection/java-generics/src/com/geek/multiple/MainTest.java @@ -0,0 +1,15 @@ +package com.geek.multiple; + +/** + * @author ManhKM on 8/24/2022 + * @project java-generics + */ +public class MainTest { + + public static void main(String[] args) { + Test obj = new Test("ManhKM", 19); + + obj.print(); // show data + } + +} diff --git a/Java-Collection/java-generics/src/com/geek/multiple/Test.java b/Java-Collection/java-generics/src/com/geek/multiple/Test.java new file mode 100644 index 0000000..aad6597 --- /dev/null +++ b/Java-Collection/java-generics/src/com/geek/multiple/Test.java @@ -0,0 +1,22 @@ +package com.geek.multiple; + +/** + * @author ManhKM on 8/24/2022 + * @project java-generics + */ +public class Test { + T obj1; // một object có kiểu T + U obj2; // một object có kiểu U + + // Constructor: + Test(T obj1, U obj2){ + this.obj1 = obj1; + this.obj2 = obj2; + } + + // To print Object of T and U + public void print(){ + System.out.println(this.obj1); + System.out.println(this.obj2); + } +} diff --git a/Java-Collection/java-generics/src/com/geek/note.md b/Java-Collection/java-generics/src/com/geek/note.md new file mode 100644 index 0000000..f2fe266 --- /dev/null +++ b/Java-Collection/java-generics/src/com/geek/note.md @@ -0,0 +1 @@ +https://www.geeksforgeeks.org/generics-in-java \ No newline at end of file diff --git a/Java-Collection/java-generics/src/com/geek/runtime/GenericsSolve.java b/Java-Collection/java-generics/src/com/geek/runtime/GenericsSolve.java new file mode 100644 index 0000000..9fac94e --- /dev/null +++ b/Java-Collection/java-generics/src/com/geek/runtime/GenericsSolve.java @@ -0,0 +1,31 @@ +package com.geek.runtime; + +import java.util.ArrayList; + +/** + * @author ManhKM on 8/24/2022 + * @project java-generics + */ +public class GenericsSolve { + + public static void main(String[] args) { + + // Creating a an ArrayList with String specified: + ArrayList arrayList = new ArrayList<>(); + + arrayList.add("Khổng"); + arrayList.add("Minh"); + arrayList.add("Mạnh"); + + arrayList.add(String.valueOf(100)); + arrayList.add(String.valueOf(3.14)); + arrayList.add(String.valueOf(10L)); + + arrayList.get(0); + arrayList.get(1); + arrayList.get(2); + arrayList.get(3); + arrayList.get(4); + arrayList.get(5); + } +} diff --git a/Java-Collection/java-generics/src/com/geek/runtime/TestNormalCollection.java b/Java-Collection/java-generics/src/com/geek/runtime/TestNormalCollection.java new file mode 100644 index 0000000..6fbb29e --- /dev/null +++ b/Java-Collection/java-generics/src/com/geek/runtime/TestNormalCollection.java @@ -0,0 +1,28 @@ +package com.geek.runtime; + +import java.util.ArrayList; + +/** + * @author ManhKM on 8/24/2022 + * @project java-generics + */ +public class TestNormalCollection { + + public static void main(String[] args) { + + ArrayList arrayList = new ArrayList(); + + arrayList.add("Minh"); + arrayList.add("Mạnh"); + arrayList.add("Thái Bình"); + arrayList.add("Hà Nội"); + arrayList.add("Việt Nam"); + arrayList.add(100); + arrayList.add(String.valueOf(200)); + + String s1 = (String) arrayList.get(0); + String s2 = (String) arrayList.get(1); + String s5 = (String) arrayList.get(5); + } + +} diff --git a/Java-Collection/java-generics/src/com/geek/single/MainTest.java b/Java-Collection/java-generics/src/com/geek/single/MainTest.java new file mode 100644 index 0000000..8eea646 --- /dev/null +++ b/Java-Collection/java-generics/src/com/geek/single/MainTest.java @@ -0,0 +1,44 @@ +package com.geek.single; + +import com.core.Student; +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 8/24/2022 + * @project java-generics + */ +public class MainTest { + + public static void main(String[] args) { + + // instance of Integer type: + Test iObj = new Test(100); + + System.out.println(iObj.getObject()); + + // instance of String type: + Test sObj = new Test("Khong Minh Manh"); + + System.out.println(sObj.getObject()); + + // instance of Student type: + Test studentObj = new Test(new Student("ManhKM","Thái Bình", 18)); + System.out.println(studentObj.getObject().toString()); + + // instance of List type: + Test studentObj1 = new Test(new Student("TrangKT","Thái Bình", 18)); + Test studentObj2 = new Test(new Student("ManhKM","Thái Bình", 18)); + Test studentObj3 = new Test(new Student("TrangTT","Hà Nam", 18)); + List> listStudentObj = new ArrayList>(10); + listStudentObj.add(studentObj1); + listStudentObj.add(studentObj2); + listStudentObj.add(studentObj3); + listStudentObj.add(studentObj1); + + System.out.println("List of Student: "); + for (Test item : listStudentObj){ + System.out.println(item.getObject().toString()); + } + } +} diff --git a/Java-Collection/java-generics/src/com/geek/single/Test.java b/Java-Collection/java-generics/src/com/geek/single/Test.java new file mode 100644 index 0000000..9f774ab --- /dev/null +++ b/Java-Collection/java-generics/src/com/geek/single/Test.java @@ -0,0 +1,22 @@ +package com.geek.single; + +/** + * @author ManhKM on 8/24/2022 + * @project java-generics + */ +public class Test { + + T obj; + + /** + * Định nghĩa một Constructor + * @param obj + */ + Test(T obj){ + this.obj = obj; + } + + public T getObject(){ + return this.obj; + } +} diff --git a/Java-Collection/java-list/pom.xml b/Java-Collection/java-list/pom.xml new file mode 100644 index 0000000..6cd1428 --- /dev/null +++ b/Java-Collection/java-list/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + com.core + java-list + 1.0-SNAPSHOT + + + 8 + 8 + + + diff --git a/Java-Collection/java-list/src/main/java/com/core/ListString.java b/Java-Collection/java-list/src/main/java/com/core/ListString.java new file mode 100644 index 0000000..0a4861a --- /dev/null +++ b/Java-Collection/java-list/src/main/java/com/core/ListString.java @@ -0,0 +1,25 @@ +package com.core; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 10/7/2022 + * @project java-list + */ +public class ListString { + + public static void main(String[] args) { + List listContent = new ArrayList<>(); + String listData = "khong;minh;manh;neo;vn;hanoi;thaibinh;vietnam;dongxuan;donghung"; + String arr[] = listData.split(";"); + for (String string : arr){ + listContent.add(string); + } + + System.out.println("Data of listContent: "); + for (String item: listContent) { + System.out.println(item); + } + } +} diff --git a/Java-Collection/java-queue/readme.md b/Java-Collection/java-queue/readme.md new file mode 100644 index 0000000..f8758ea --- /dev/null +++ b/Java-Collection/java-queue/readme.md @@ -0,0 +1,37 @@ +# Java Queue Collection Tutorial and Examples + +## Part I: Understanding Queue Concepts + +### 1. What is Queue? + +This process is call FIFO: First In First Out. + +Main Interface: Queue +Sub Interface: Deque, BlockingDequeue, BlockingQueue, TransferQueue + + +## 2. Characteristics of Queue + + +## 3. Behaviors of Queue + +Queue implementations core operation of collection: + +add(), contains(), remove(), clear(), isEmpty() + +## 4. Queue's Interfaces + +Supper Interface: Queue + +Sub Interface: Deque, + + +## Part II: Understanding Queue API Structure + +## Part III: Performing Operations on Queue Collection + + + +## Reference document: +[Java Queue Collection Tutorial and Examples](https://www.codejava.net/java-core/collections/java-queue-collection-tutorial-and-examples?fbclid=IwAR1mdJvWZr6NFUZD9fIceMBBs6cW464uE7grCWm8GpUL1dkO3iGYIeFzeXI) + diff --git a/Java-Collection/java-queue/src/com/core/QueueDemo.java b/Java-Collection/java-queue/src/com/core/QueueDemo.java new file mode 100644 index 0000000..430e8ac --- /dev/null +++ b/Java-Collection/java-queue/src/com/core/QueueDemo.java @@ -0,0 +1,36 @@ +package com.core; + +import java.util.*; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; + +/** + * @author ManhKM on 7/21/2022 + * @project java-queue + */ +public class QueueDemo { + public static void main(String[] args) { + Queue namesQueue = new LinkedList<>(); + Deque numbersDeque = new ArrayDeque<>(); + BlockingQueue waitingCustomers = new ArrayBlockingQueue<>(100); + Queue queueNumbers = new ArrayBlockingQueue<>(3); + Deque queueNamesCustomer = new ArrayDeque<>(); + + List listNames = Arrays.asList("Alice", "Bob", "Cole", "Dale"); + Queue queueNames = new LinkedList<>(listNames); + System.out.println("Step 1: " + queueNames); + + queueNames.add("Marry"); + queueNames.add("John"); + queueNames.add("Bob"); + System.out.println("Step 2: " + queueNames); + + System.out.println("-----Queue Name Customers-----"); + queueNamesCustomer.offer("Katherine"); + queueNamesCustomer.offer("Bob"); + queueNamesCustomer.addFirst("Jim"); + queueNamesCustomer.addLast("Tom"); + System.out.println(queueNamesCustomer); + + } +} diff --git a/Java-Collection/map-interface/docs/map-hierarchy-in-java.png b/Java-Collection/map-interface/docs/map-hierarchy-in-java.png new file mode 100644 index 0000000..b0679ee Binary files /dev/null and b/Java-Collection/map-interface/docs/map-hierarchy-in-java.png differ diff --git a/Java-Collection/map-interface/readme.md b/Java-Collection/map-interface/readme.md new file mode 100644 index 0000000..fc49294 --- /dev/null +++ b/Java-Collection/map-interface/readme.md @@ -0,0 +1,43 @@ + +# Map Interface in Java + +## Method in Map Interface + +| Method | Action Performed | Example | +| :--- | :--- | :--- | +|clear() | This method is used to clear and remove all of the elements or mappings from a specified Map collection.|| +|containsKey() | +|containsValue()| +|entrySet()| +|equals(Object)| +|get(Object)| +|hashCode()| +|isEmpty()| +|keySet()| +|put(Object, Object)| + + +## Map Hierarchy in Java + +![img.png](docs/map-hierarchy-in-java.png) + + + +## Performing Various Operations using Map Interface and HashMap Class: + +1. Adding Elements + +2. Changing Elements + +3. Removing Elements + +4. Iterating through the Map + +5. Copy Elements + +6. Clone a Map + +7. Sort element of Map + +8. Concat of many Map + diff --git a/Java-Collection/map-interface/src/com/core/CheckOutOfMemHashMap.java b/Java-Collection/map-interface/src/com/core/CheckOutOfMemHashMap.java new file mode 100644 index 0000000..66443de --- /dev/null +++ b/Java-Collection/map-interface/src/com/core/CheckOutOfMemHashMap.java @@ -0,0 +1,29 @@ +package com.core; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ManhKM on 8/13/2022 + * @project map-interface + */ +public class CheckOutOfMemHashMap { + + public static void main(String[] args) { + Map> serviceCmds = new HashMap<>(); + String data = "If you encode the integers as String, and we're talking maybe 6 digit numbers, that is likely 24 bytes for the underlying "; + Map item = new HashMap<>(); + long key = 1; + while (1 < 2){ + key = key * 2; + System.out.println(key); + +// item.put(String.valueOf(key), data); +// System.out.println(item); +// +// serviceCmds.put(String.valueOf(key), item); +// System.out.println(serviceCmds); + } + } + +} diff --git a/Java-Collection/map-interface/src/com/core/LinkedHashMapDemo.java b/Java-Collection/map-interface/src/com/core/LinkedHashMapDemo.java new file mode 100644 index 0000000..fe599c2 --- /dev/null +++ b/Java-Collection/map-interface/src/com/core/LinkedHashMapDemo.java @@ -0,0 +1,32 @@ +package com.core; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @author ManhKM on 8/13/2022 + * @project map-interface + * ----- + * Additional Feature: + * quick insertion, search, deletion. + * -LinkedHashMap- + * cung cấp một nơi mà các key-value sẽ được truyền vào theo thứ tự + * Nếu xuất dữ liệu trong file, hoặc dùng Map để lưu giá trị Query từ Database. + * Dùng Linked sẽ lưu được vị trí của các phần từ trong file. + */ +public class LinkedHashMapDemo { + + public static void main(String[] args) { + Map map = new LinkedHashMap<>(); + + map.put("value1", 100); + map.put("value2", 200); + map.put("value3", 300); + map.put("value4", 400); + + for (Map.Entry e : map.entrySet()){ + System.out.println(e.getKey() + " " + e.getValue()); + } + } + +} diff --git a/Java-Collection/map-interface/src/com/core/MapInterfaceDemo.java b/Java-Collection/map-interface/src/com/core/MapInterfaceDemo.java new file mode 100644 index 0000000..a3461a0 --- /dev/null +++ b/Java-Collection/map-interface/src/com/core/MapInterfaceDemo.java @@ -0,0 +1,25 @@ +package com.core; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ManhKM on 8/13/2022 + * @project map-interface + */ +public class MapInterfaceDemo { + + public static void main(String[] args) { + Map hm = new HashMap(); + + hm.put("a", new Integer(100)); + hm.put("b", new Integer(100)); + hm.put("c", new Integer(100)); + hm.put("d", new Integer(100)); + + for(Map.Entry me : hm.entrySet()){ + System.out.print(me.getKey() + ": "); + System.out.println(me.getValue()); + } + } +} diff --git a/Java-Collection/map-interface/src/com/core/MapInterfaceDemo1.java b/Java-Collection/map-interface/src/com/core/MapInterfaceDemo1.java new file mode 100644 index 0000000..a7662bd --- /dev/null +++ b/Java-Collection/map-interface/src/com/core/MapInterfaceDemo1.java @@ -0,0 +1,25 @@ +package com.core; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ManhKM on 8/13/2022 + * @project map-interface + */ +public class MapInterfaceDemo1 { + + public static void main(String[] args) { + Map map = new HashMap<>(); //no String, Integer + + map.put("key1", 10); + map.put("key2", 20); + map.put("key3", 30); + map.put("key4", 40); + + for (Map.Entry e : map.entrySet()){ + System.out.println(e.getKey() + " " + e.getValue()); + } + } + +} diff --git a/Java-Collection/map-interface/src/com/core/TreeMapDemo.java b/Java-Collection/map-interface/src/com/core/TreeMapDemo.java new file mode 100644 index 0000000..b5ad78d --- /dev/null +++ b/Java-Collection/map-interface/src/com/core/TreeMapDemo.java @@ -0,0 +1,24 @@ +package com.core; + +import java.util.Map; +import java.util.TreeMap; + +/** + * @author ManhKM on 8/13/2022 + * @project map-interface + */ +public class TreeMapDemo { + + public static void main(String[] args) { + Map map = new TreeMap<>(); + + map.put("key1", 1000); + map.put("key2", 9000); + map.put("key3", 1000); + map.put("key4", 5000); + + for (Map.Entry e : map.entrySet()) { + System.out.println(e.getKey() + " " + e.getValue()); + } + } +} diff --git a/Java-Collection/map-interface/src/com/core/opera/OperationOfMap.java b/Java-Collection/map-interface/src/com/core/opera/OperationOfMap.java new file mode 100644 index 0000000..34c0f40 --- /dev/null +++ b/Java-Collection/map-interface/src/com/core/opera/OperationOfMap.java @@ -0,0 +1,41 @@ +package com.core.opera; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ManhKM on 8/13/2022 + * @project map-interface + * ----- + * Operation 1: Adding element + * Operation 2: Update element of Map + * Operation 3: Delete element of Map + * Operation 4: Iterating through the Map + */ +public class OperationOfMap { + + public static void main(String[] args) { + Map hm1 = new HashMap<>(); + hm1.put(new Integer(1), "Geeks"); + hm1.put(new Integer(2), "Geeks"); + hm1.put(new Integer(3), "Geeks"); + + System.out.println("Initial Map: " + hm1); + + hm1.put(2, "For"); + + System.out.println("Updated Map: " + hm1); + + hm1.remove(3); + + System.out.println("After delete element of Map: " + hm1); + + for (Map.Entry item : hm1.entrySet()){ + int key = (int) item.getKey(); + String value = (String) item.getValue(); + + System.out.println(key + ": " + value); + } + } + +} diff --git a/Java-Collection/readme.md b/Java-Collection/readme.md new file mode 100644 index 0000000..22940ae --- /dev/null +++ b/Java-Collection/readme.md @@ -0,0 +1,91 @@ +``` + Java Collections and Generics Tutorials + Written by Nam Ha Minh + Last Updated on 11 November 2019 | Print Email +``` + + +# Java Collections framework provides a set of reusable data structures and algorithms that make programmer's jobs easier. + +## Getting started with Java Collections & Generics for beginners: + +What is Java Collections Framework? + + +Java Collections Framework summary table + + +What are Generics in Java + + +How to write generic classes and methods in Java + + Có thể viết Generics cho một Object hay không? Nếu có thì viết Collection cho một Object sẽ như thế nào? + + Đã giải quyết được vấn đề dùng với Generics một Object + + + +## Java List Tutorials: + +Java List Collection Tutorial and Examples + + +Sorting List Collections Examples + + +Sorting a list by multiple attributes example + + +Java Collections Utility Examples for Changing Order and Content of a List + + +## Java Set Tutorials: +Java Set Collection Tutorial and Examples +Java SortedSet and TreeSet Tutorial and Examples +Java NavigableSet and TreeSet Tutorial and Examples + +## Java Map Tutorials: +Java Map Collection Tutorial and Examples +Java NavigableMap and TreeMap Tutorial and Examples +Java SortedMap and TreeMap Tutorial and Examples + +## Java Queue Tutorials: +Java Queue Collection Tutorial and Examples +Java Producer - Consumer Examples Using BlockingQueue + +## Java Arrays Tutorials: +Comparing Arrays in Java Examples +Copying and Filling Arrays in Java +Java Arrays Utility Class Examples for List view, Sorting and Searching +Sorting Arrays Examples (with Comparable and Comparator) + +## Java Collection Iteration Tutorials: +Java Collections Looping Example +Using Java Lambda expressions for collections internal iteration +The 4 Methods for Iterating Collections in Java + +## Java Streams Tutorials: +Understanding Java Stream API +Java Stream Aggregate Functions Examples (Intermediate Operations) +Java Stream Terminal Operations Examples + + + +## Advanced Java Collections Tutorials: +Understanding equals() and hashCode() in Java +Understanding Object Ordering in Java with Comparable and Comparator +Understanding Collections and Thread Safety in Java +18 Java Collections and Generics Best Practices + +## Advanced Java Generics Tutorials: +Generics with extends and super Wildcards and the Get and Put Principle +Generics with Subtyping and the Substitution Principle + +## Miscellaneous Java Collection Tutorials: +Java Collections Factory Method Examples +Java Collections Wrapper Methods Examples +Java Collections Utility Examples for Searching in a Collection + +## References: +Trail: Collections from The Java Tutorials (Oracle) \ No newline at end of file diff --git a/Java-Concurrence/1-java-concurrency-1.0.md b/Java-Concurrence/1-java-concurrency-1.0.md new file mode 100644 index 0000000..19c648a --- /dev/null +++ b/Java-Concurrence/1-java-concurrency-1.0.md @@ -0,0 +1,56 @@ +## nội dung quan trọng trong Java Core là gì? Java Core nâng cao thì sẽ có những nội dung gì? + +Java Core là phần quan trọng nhất của ngôn ngữ lập trình Java, bao gồm các thành phần cơ bản của ngôn ngữ như cú pháp, kiểu dữ liệu, biến, hàm, điều kiện, vòng lặp, exception handling, I/O, collections, threads, etc. + +Java Core nâng cao thường bao gồm các chủ đề sau: + +Concurrency: Đây là một chủ đề quan trọng trong Java Core nâng cao, đảm bảo rằng các ứng dụng có thể chạy đồng thời và tận dụng tối đa các CPU core. Nó bao gồm các lớp và interface như Thread, Runnable, Executor, ThreadPoolExecutor, Semaphore, CountdownLatch, etc. + +Networking: Bao gồm các thành phần liên quan đến mạng như socket programming, URL, HttpURLConnection, SSL, etc. + +Reflection: Cho phép ứng dụng xem và thay đổi các thuộc tính và phương thức của các đối tượng tại thời điểm chạy. Bao gồm các lớp như Class, Method, Field, Constructor, etc. + +Collections Framework: Là một tập hợp các interface, abstract class và lớp cung cấp các cấu trúc dữ liệu và các thuật toán để xử lý các đối tượng. Bao gồm các interface như List, Set, Map, Queue, Deque, etc. + +Stream API: Là một API mới được giới thiệu trong Java 8, cung cấp một cách mới để xử lý dữ liệu. Stream API cho phép các phép xử lý dữ liệu trở nên linh hoạt và dễ dàng hơn bằng cách sử dụng các phương thức như filter, map, reduce, etc. + +Date and Time API: Cung cấp các lớp và interface để xử lý thời gian và ngày tháng. API này được giới thiệu từ Java 8 và cung cấp các lớp như LocalDate, LocalDateTime, ZonedDateTime, etc. + +Generics: Là một tính năng trong Java cho phép các lớp, interface và phương thức được thiết kế để làm việc với nhiều kiểu dữ liệu khác nhau một cách an toàn. + +Lambda expressions: Là một tính năng trong Java 8, cho phép các đoạn mã được truyền như một đối số cho phương thức hoặc biểu thức được gán cho một biến. Điều này làm cho mã ngắn gọn hơn và dễ đọc hơn. + +Optional: Là một lớp giúp xử lý null trong Java. Nó cung cấp một cách an toàn để tránh xảy ra NullPointerException và giúp mã trở nên rõ r + + +## còn nữa không? + +Ngoài những nội dung cơ bản về Java Core như cú pháp, kiểu dữ liệu, cấu trúc điều khiển, exception, I/O, multi-threading, OOP, generic, collection, reflection, serialization,... thì Java Core nâng cao còn bao gồm những nội dung sau: + +Annotation: cung cấp cách để thêm metadata cho các đối tượng Java như class, method, field,... +Lambda expression: cung cấp cách thức viết code gọn hơn và giúp tăng hiệu năng ứng dụng. +Stream API: cung cấp cách thức thao tác dữ liệu trong bộ nhớ hoặc từ các nguồn dữ liệu khác nhau. +Date and Time API: cung cấp các lớp để làm việc với thời gian và ngày tháng. +Optional class: cung cấp cách để xử lý các giá trị null trong ứng dụng. +Nashorn: một trình thông dịch JavaScript được tích hợp vào Java, cho phép chạy mã JavaScript trực tiếp trong ứng dụng Java. +Modular programming: cung cấp cách thức phân tách các thành phần của ứng dụng thành các module riêng biệt, giúp quản lý và triển khai ứng dụng dễ dàng hơn. +Ngoài ra, Java Core nâng cao còn bao gồm các nội dung như reflection API, concurrency API, networking, JDBC, JNDI,... + + +## còn nữa không? + +Ngoài các nội dung trên, Java Core nâng cao còn bao gồm: + +Xử lý ngoại lệ (Exception Handling): Trong Java Core nâng cao, bạn sẽ học cách xử lý các ngoại lệ (exception) trong chương trình của mình, cách sử dụng các từ khóa try-catch-finally và các loại ngoại lệ phổ biến. + +Lambda Expression: Lambda Expression là một tính năng mới được giới thiệu từ Java 8, giúp cho việc xử lý dữ liệu trở nên đơn giản và tiện lợi hơn. Java Core nâng cao sẽ hướng dẫn bạn sử dụng Lambda Expression để viết code ngắn gọn hơn và hiệu quả hơn. + +Stream API: Stream API cũng là một tính năng mới được giới thiệu từ Java 8, giúp cho việc xử lý dữ liệu trở nên dễ dàng và nhanh chóng hơn. Java Core nâng cao sẽ giúp bạn tìm hiểu và sử dụng Stream API để xử lý dữ liệu hiệu quả hơn. + +Generic: Generic là một tính năng của Java Core cho phép bạn tạo ra các lớp, phương thức hoặc interface có thể áp dụng cho nhiều kiểu dữ liệu khác nhau một cách linh hoạt và tiện lợi. + +Annotation: Annotation là một cách để thêm các thông tin bổ sung cho các phần tử trong chương trình Java. Java Core nâng cao sẽ giúp bạn hiểu rõ hơn về Annotation và cách sử dụng chúng. + +Java IO: Java IO cung cấp các lớp để đọc và ghi các loại tập tin khác nhau như văn bản, hình ảnh, âm thanh... Java Core nâng cao sẽ giúp bạn tìm hiểu và sử dụng Java IO để xử lý dữ liệu trong chương trình của mình. + +Java Networking: Java Networking cung cấp các lớp để làm việc với mạng như kết nối và truyền thông qua Internet hoặc các giao thức mạng khác. Java Core nâng cao sẽ giúp bạn tìm hiểu và sử dụng Java Networking để xử lý kết nối mạng trong chương trình của mình. \ No newline at end of file diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/hashdemo/ConcurrentHashMapVsSynchronizedMap$1.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/hashdemo/ConcurrentHashMapVsSynchronizedMap$1.class new file mode 100644 index 0000000..5e9a2b5 Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/hashdemo/ConcurrentHashMapVsSynchronizedMap$1.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/hashdemo/ConcurrentHashMapVsSynchronizedMap.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/hashdemo/ConcurrentHashMapVsSynchronizedMap.class new file mode 100644 index 0000000..859ac50 Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/hashdemo/ConcurrentHashMapVsSynchronizedMap.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/hashdemo/InitConcurrentHashMap.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/hashdemo/InitConcurrentHashMap.class new file mode 100644 index 0000000..a959c3e Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/hashdemo/InitConcurrentHashMap.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/threadpool/Run.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/threadpool/Run.class new file mode 100644 index 0000000..0d11191 Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/threadpool/Run.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/threadpool/TestThreadPool.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/threadpool/TestThreadPool.class new file mode 100644 index 0000000..8feaed2 Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/threadpool/TestThreadPool.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/threadpool/TestThreadPoolExecutorService.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/threadpool/TestThreadPoolExecutorService.class new file mode 100644 index 0000000..0da4ac5 Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/threadpool/TestThreadPoolExecutorService.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd1/Access.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd1/Access.class new file mode 100644 index 0000000..54a846a Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd1/Access.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd1/TestThread.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd1/TestThread.class new file mode 100644 index 0000000..68518ca Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd1/TestThread.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd1/count.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd1/count.class new file mode 100644 index 0000000..35c9926 Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd1/count.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd2/MyThread.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd2/MyThread.class new file mode 100644 index 0000000..f63cee4 Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd2/MyThread.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd2/Table.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd2/Table.class new file mode 100644 index 0000000..7d9596d Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd2/Table.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd2/TestThread.class b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd2/TestThread.class new file mode 100644 index 0000000..dcb6605 Binary files /dev/null and b/Java-Concurrence/Banking-synch-unsynch/out/production/Banking-synch-unsynch/com/jindo/core/vd2/TestThread.class differ diff --git a/Java-Concurrence/Banking-synch-unsynch/readme.md b/Java-Concurrence/Banking-synch-unsynch/readme.md new file mode 100644 index 0000000..cf8aa31 --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/readme.md @@ -0,0 +1,45 @@ + +# Đồng bộ và bất đồng bộ trong Java + +## Nội dung chính + +## Sử dụng với HashMap +* Có 2 cách để chúng ta có thể đồng bộ hóa một HashMap + * Sử dụng Java Collection .synchronizedMap() + * Sử dụng ConcurrentHashMap + +## Sử dụng ThreadPool trong Java +* Mục đích: + * Thread sinh ra để thực hiện một nhiệm vụ cụ thể, nhiều Thread cùng xử lý công việc giúp chúng ta giải quyết được bài toán + thời gian và hiệu năng khi xử lý một tác vụ nào đó. + * ?? Bài toàn đặt ra ở đây là có phải cứ sinh ra nhiều Thread thì tác vụ của chúng ta sẽ nhanh hơn mượt mà hơn ??? + * TL: Là không... + + +## ThreadPoolExecutor: + + +## Cách hoạt động của ThreadPoolExecutor + + +## ExecutorService: + + +## Cách tạo ExecutorService + + +## Cách sử dụng ExecutorService + + +## Cách kết thúc ExecutorService + + + +## Reference document +* [Đồng bộ và bất đồng bộ](https://codelearn.io/sharing/dong-bo-va-bat-dong-bo-trong-java) +* [HashMap có thể đồng bộ hóa trong Java](https://viblo.asia/p/hashmap-concurrenthashmap-synchronizedmap-lam-the-nao-mot-hashmap-co-the-duoc-dong-bo-hoa-trong-java-924lJD8zKPM) +* [Tìm hiểu về Thread-Pool trong Java](https://viblo.asia/p/tim-hieu-ve-thread-pool-trong-java-OeVKBDQMlkW) +* [Java ExecutorService](https://jenkov.com/tutorials/java-util-concurrent/executorservice.html) +* [Writing your own ThreadPool from scratch in Java](https://blog.caffinc.com/2016/03/simple-threadpool/) +* [Java Bài 41: Thread Tập 1 – Thread Và Các Khái Niệm](https://yellowcodebooks.com/2018/08/10/java-bai-41-thread-tap-1-thread-va-cac-khai-niem/#.YnoPFOjP3Dc) + diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/hashdemo/ConcurrentHashMapVsSynchronizedHashMap.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/hashdemo/ConcurrentHashMapVsSynchronizedHashMap.java new file mode 100644 index 0000000..8998c80 --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/hashdemo/ConcurrentHashMapVsSynchronizedHashMap.java @@ -0,0 +1,86 @@ +package com.jindo.core.hashdemo; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + */ +import java.util.Collections; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +class ConcurrentHashMapVsSynchronizedMap { + + public final static int THREAD_POOL_SIZE = 10; + + public static Map hashTable = null; + public static Map synchronizedMap = null; + public static Map concurrentHashMap = null; + + public static void main(String[] args) throws InterruptedException { + System.out.println("Đây là kết quả trung bình (10 lần) sau khi đọc ghi 1 triệu entries đối với từng loại Map: "); + // Test with Hashtable Object + hashTable = new Hashtable(); + performTest(hashTable); + + // Test with synchronizedMap Object + synchronizedMap = Collections.synchronizedMap(new HashMap()); + performTest(synchronizedMap); + + // Test with ConcurrentHashMap Object + concurrentHashMap = new ConcurrentHashMap(); + performTest(concurrentHashMap); + + } + + /** + * ExecutorService + * + newFixedThreadPool + * + execute()... + * + shutdown()... + * + awaitTermination()... + */ + //final + public static void performTest(Map testMap) throws InterruptedException { + + System.out.println("Test started for: " + testMap.getClass()); + long averageTime = 0; + for (int i = 0; i < 10; i++) { + + long startTime = System.nanoTime(); + ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE); + + for (int j = 0; j < THREAD_POOL_SIZE; j++) { + executorService.execute(new Runnable() { + @SuppressWarnings("unused") + @Override + public void run() { + + for (int i = 0; i < 1000000; i++) { + Integer randomNumber = (int) Math.ceil(Math.random() * 100000); + + // Retrieve value. Only for test + Integer value = testMap.get(String.valueOf(randomNumber)); + + // Put value + testMap.put(String.valueOf(randomNumber), randomNumber); + } + } + }); + } + + executorService.shutdown(); + executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); + + long endTime = System.nanoTime(); + long totalTime = (endTime - startTime) / 1000000L; + averageTime += totalTime; + System.out.println("1M entried added/retrieved in " + totalTime + " ms"); + } + System.out.println("For " + testMap.getClass() + " the average time is " + averageTime / 10 + " ms\n"); + } +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/hashdemo/InitConcurrentHashMap.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/hashdemo/InitConcurrentHashMap.java new file mode 100644 index 0000000..891cfff --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/hashdemo/InitConcurrentHashMap.java @@ -0,0 +1,27 @@ +package com.jindo.core.hashdemo; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + * ----- + * Khởi tạo ConcurrentHashMap trong Java + */ +public class InitConcurrentHashMap { + public static void main(String[] args) { + // HashTable: + Map normalMap = new Hashtable(); + + // method .synchronizedMap + Map synchronizedHashMap = Collections.synchronizedMap(new HashMap()); + + // ConcurrentHashMap + Map concurrentHashMap = new ConcurrentHashMap(); + + } +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/threadpool/Run.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/threadpool/Run.java new file mode 100644 index 0000000..70a09dd --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/threadpool/Run.java @@ -0,0 +1,29 @@ +package com.jindo.core.threadpool; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + * ----- + * Khởi tạo một Object run + * + Chứa id: nơi định danh tiến trình có id nào đang được chạy + */ + +public class Run implements Runnable{ + + int id; + + public Run(int id){ + this.id = id; + } + + @Override + public void run() { + System.out.println("Tiến trình đang được thực thi " + id); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("Tiến trình đã được thực thi xong " + id); + } +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/threadpool/TestThreadPool.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/threadpool/TestThreadPool.java new file mode 100644 index 0000000..edd918c --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/threadpool/TestThreadPool.java @@ -0,0 +1,46 @@ +package com.jindo.core.threadpool; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + */ +public class TestThreadPool { + public static void main(String[] args) { + int corePoolSize = 5; + int maximumPoolSize = 10; + long keepAliveTime = 500; + TimeUnit unit = TimeUnit.SECONDS; + + ArrayBlockingQueue workQueue = new ArrayBlockingQueue<>(100); + RejectedExecutionHandler handler = new ThreadPoolExecutor.CallerRunsPolicy(); + /** + * Code khởi tạo ThreadPoolExecutor: + * + corePoolSize: là số lượng Thread tối thiếu trong ThreadPool. + * Khi khởi tạo, số lượng Thread có thể là 0. Khi nhiệm vụ được thêm vào thì Thread mới được tạo ra + * kể từ đây, nếu số lượng Thread ít hơn corePoolSize thì những Thread mới sẽ được tạo ra đến khi số + * Thread bằng giá trị của corePoolSize. + * + maximumPoolSize: là số lượng tối đa các Thread trong ThreadPool + * + keepAliveTime: khi số Thread lớn hơn corePoolSize thì keepAliveTime là thời gian tối đa mà một Thread "nhàn rỗi" + * chờ nhiệm vụ. Khi hết thời gian chờ mà Thread đó chưa có nhiệm vụ thì Thread đó sẽ bị hủy. + * + unit: là đơn vị thời gian của keepAliveTime. + * Trong ví dụ này thì unit là TimeUnit.SECONDS. + * + workQueue: là hàng đợi dùng để chứa các nhiệm vụ mà các Thread sẽ lấy chúng ra và thực thi lần lượt, + * Trong ví dụ này sử dụng: ArrayBlockingQueue. + * + handler: Hàng động khi một request (task) bị từ chối (rejected) + */ + ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(corePoolSize, + maximumPoolSize, keepAliveTime, unit, workQueue, handler); + for(int i = 0; i < 100; i++){ + /** + * Khởi tạo 1 Thread thực hiện logic nào đó. + */ + threadPoolExecutor.execute(new Run(i)); + } + threadPoolExecutor.shutdown(); + } +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/threadpool/TestThreadPoolExecutorService.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/threadpool/TestThreadPoolExecutorService.java new file mode 100644 index 0000000..bd78462 --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/threadpool/TestThreadPoolExecutorService.java @@ -0,0 +1,29 @@ +package com.jindo.core.threadpool; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + * + */ +public class TestThreadPoolExecutorService { + public static void main(String[] args) { + System.out.println("-----> Running TestThreadPoolExecutorService...."); + ExecutorService pool = Executors.newFixedThreadPool(5); + for(int i = 0; i < 100; i++){ + /** + * Thực hiện submit 100 task lên Queue/ExecutorService: + */ + pool.submit(new Run(i)); + } + try { + pool.awaitTermination(1, TimeUnit.SECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + pool.shutdown(); + } +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd1/Access.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd1/Access.java new file mode 100644 index 0000000..322b807 --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd1/Access.java @@ -0,0 +1,34 @@ +package com.jindo.core.vd1; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + */ +public class Access implements Runnable{ + + String name; + count c; + + public Access(String name, count c){ + this.name = name; + this.c = c; + } + + /** + * Tại mỗi index sẽ sảy ra 2 trường hợp: + * Th1: Giá trị ban đầu là đúng + * Th2: Giá trị tiếp theo trong cùng một index đó sẽ trừ đi 1 đơn vị. + * Thread-1 index 0 before: 10 + * Thread-1 index 0 before: 8 + * Lý do: Trong thời gian in ra giá trị ban đầu và in ra lệnh thì Thread 2 đã thực hiện giảm giá trị của value. + */ + @Override + public synchronized void run() { + for(int i = 0; i < 3; i++){ + System.out.println(name + " index " + i + " before: " + c.value); + c.value--; + System.out.println(name + " index " + i + " before: " + c.value); + + } + } +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd1/TestThread.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd1/TestThread.java new file mode 100644 index 0000000..8c2fda9 --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd1/TestThread.java @@ -0,0 +1,17 @@ +package com.jindo.core.vd1; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + */ +public class TestThread { + public static void main(String[] args) { + System.out.println("----> Running Test Thread"); + count c = new count(); + Thread t1 = new Thread(new Access("Thread-1", c)); + Thread t2 = new Thread(new Access("Thread-2", c)); + + t1.start(); + t2.start(); + } +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd1/count.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd1/count.java new file mode 100644 index 0000000..8d61276 --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd1/count.java @@ -0,0 +1,9 @@ +package com.jindo.core.vd1; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + */ +public class count { + int value = 10; +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd2/MyThread.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd2/MyThread.java new file mode 100644 index 0000000..519c042 --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd2/MyThread.java @@ -0,0 +1,20 @@ +package com.jindo.core.vd2; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + */ +public class MyThread extends Thread{ + private String name; + private int value; + + public MyThread(String name, int value){ + this.name = name; + this.value = value; + } + + @Override + public void run() { + Table.print(name, value); + } +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd2/Table.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd2/Table.java new file mode 100644 index 0000000..14feb68 --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd2/Table.java @@ -0,0 +1,14 @@ +package com.jindo.core.vd2; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + */ +public class Table { + //synchronized + synchronized static void print(String name, int n){ + for (int i = 1; i <= 5; i++){ + System.out.println(name + ": " + i * n); + } + } +} diff --git a/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd2/TestThread.java b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd2/TestThread.java new file mode 100644 index 0000000..d252ddd --- /dev/null +++ b/Java-Concurrence/Banking-synch-unsynch/src/com/jindo/core/vd2/TestThread.java @@ -0,0 +1,18 @@ +package com.jindo.core.vd2; + +/** + * @author ManhKM on 5/10/2022 + * @project Banking-synch-unsynch + */ +public class TestThread { + public static void main(String[] args) { + System.out.println("----> Running Test-Thread..."); + MyThread t1 = new MyThread("Thread 1_1", 1); + MyThread t2 = new MyThread("Thread 1_2", 10); + MyThread t3 = new MyThread("Thread 1_3", 100); + + t1.start(); + t2.start(); + t3.start(); + } +} diff --git a/Java-Concurrence/Java-Runnable/java-runnable/src/com/core/App.java b/Java-Concurrence/Java-Runnable/java-runnable/src/com/core/App.java new file mode 100644 index 0000000..1837a53 --- /dev/null +++ b/Java-Concurrence/Java-Runnable/java-runnable/src/com/core/App.java @@ -0,0 +1,28 @@ +package com.core; + +/** + * @author ManhKM on 8/10/2022 + * @project java-runnable + */ +public class App { + + public static void main(String[] args) { + Thread.currentThread().setName("Thread-main-of-java-runnable"); + System.out.println("Main thread is - " + + Thread.currentThread().getName() + "\n"); + + Runnable runnable1 = new RunnableImpl("A", 50); + Thread task = new Thread(runnable1); + task.setName("Thread-A"); + + Runnable runnable2 = new RunnableImpl("B", 100); + Thread task1 = new Thread(runnable2); + task1.setName("Thread-B"); + + task.start(); + + task1.start(); + + System.out.println("---THE END---"); + } +} diff --git a/Java-Concurrence/Java-Runnable/java-runnable/src/com/core/RunnableImpl.java b/Java-Concurrence/Java-Runnable/java-runnable/src/com/core/RunnableImpl.java new file mode 100644 index 0000000..5b9a787 --- /dev/null +++ b/Java-Concurrence/Java-Runnable/java-runnable/src/com/core/RunnableImpl.java @@ -0,0 +1,29 @@ +package com.core; + +/** + * @author ManhKM on 8/10/2022 + * @project java-runnable + */ +public class RunnableImpl implements Runnable { + + private String name; // name of Runnable + private int count; // count + + public RunnableImpl(String name, int count) { + this.name = name; + this.count = count; + } + + @Override + public void run() { + for (int i = 0; i < count; i++) { + System.out.print(name); + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + System.out.println("\n" + Thread.currentThread().getName() + ", executing run() method!"); + } +} diff --git a/Java-Concurrence/Java-Task/.gitignore b/Java-Concurrence/Java-Task/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/Java-Concurrence/Java-Task/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Java-Concurrence/Java-Task/.mvn/wrapper/maven-wrapper.jar b/Java-Concurrence/Java-Task/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..c1dd12f Binary files /dev/null and b/Java-Concurrence/Java-Task/.mvn/wrapper/maven-wrapper.jar differ diff --git a/Java-Concurrence/Java-Task/.mvn/wrapper/maven-wrapper.properties b/Java-Concurrence/Java-Task/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..b74bf7f --- /dev/null +++ b/Java-Concurrence/Java-Task/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/Java-Concurrence/Java-Task/docs/img/1-implement-runnable.png b/Java-Concurrence/Java-Task/docs/img/1-implement-runnable.png new file mode 100644 index 0000000..63fb497 Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/1-implement-runnable.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/2-extend-thread.png b/Java-Concurrence/Java-Task/docs/img/2-extend-thread.png new file mode 100644 index 0000000..47e2059 Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/2-extend-thread.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/3-su-dung-lop-Thread.png b/Java-Concurrence/Java-Task/docs/img/3-su-dung-lop-Thread.png new file mode 100644 index 0000000..1d0b96a Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/3-su-dung-lop-Thread.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/4-su-dung-join.png b/Java-Concurrence/Java-Task/docs/img/4-su-dung-join.png new file mode 100644 index 0000000..a7ba590 Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/4-su-dung-join.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/5-thread-pool.png b/Java-Concurrence/Java-Task/docs/img/5-thread-pool.png new file mode 100644 index 0000000..d430e54 Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/5-thread-pool.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/6-2-co-che-thread-pool-trong-java.png b/Java-Concurrence/Java-Task/docs/img/6-2-co-che-thread-pool-trong-java.png new file mode 100644 index 0000000..b043a47 Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/6-2-co-che-thread-pool-trong-java.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/7-thread-pool-new-cache-thread-pool.png b/Java-Concurrence/Java-Task/docs/img/7-thread-pool-new-cache-thread-pool.png new file mode 100644 index 0000000..08ce65e Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/7-thread-pool-new-cache-thread-pool.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/8-thread-synchronization.png b/Java-Concurrence/Java-Task/docs/img/8-thread-synchronization.png new file mode 100644 index 0000000..2adb3f0 Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/8-thread-synchronization.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/9-thread-synchronization.png b/Java-Concurrence/Java-Task/docs/img/9-thread-synchronization.png new file mode 100644 index 0000000..8ee2c78 Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/9-thread-synchronization.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/9-vi-du-acount-banking.png b/Java-Concurrence/Java-Task/docs/img/9-vi-du-acount-banking.png new file mode 100644 index 0000000..451c93d Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/9-vi-du-acount-banking.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/9-vi-du-acount-withdrawtask-banking.png b/Java-Concurrence/Java-Task/docs/img/9-vi-du-acount-withdrawtask-banking.png new file mode 100644 index 0000000..978bd02 Binary files /dev/null and b/Java-Concurrence/Java-Task/docs/img/9-vi-du-acount-withdrawtask-banking.png differ diff --git a/Java-Concurrence/Java-Task/docs/img/note-thread.md b/Java-Concurrence/Java-Task/docs/img/note-thread.md new file mode 100644 index 0000000..e8b82dd --- /dev/null +++ b/Java-Concurrence/Java-Task/docs/img/note-thread.md @@ -0,0 +1,53 @@ + +## Ưu điểm khi implement Runnable + +Khi implement Runnable thì có thể implement nhiều interface khác nữa. + +Còn khi Extend từ Thread thì chỉ có thể 1 thằng cha thôi, ngoài ra thì không thể extend thì những thằng khác. + +Khó mở rộng hơn Runnable. + +Java Đa luồng nghe có vẻ cao sang nhưng hiểu bản chất của nó thì rất là đơn giản thôi. + +## Sử dụng lớp Thread + +Các phương thức hay sử dụng + +Phương thức join(): Sử dụng để bắt thread đó phải dừng lại, cho thread khác thực thi. + +## Thread Pool + +Khi tạo Thread --> mỗi Task là một Thread. + +Nếu hệ thống lớn, mỗi Task vào một Thread thì hơi phí. + +ThreadPool là một cái cách để lưu tạm các Thread vào một cái Pool, bể chứa. + +Thread nào nó rảnh thì nó nhào vô chạy. + +ThreadPool tạo giải pháp khi số lượng Thread quá lớn. + +Nếu tạo sẵn 3 Thread --> tạo nó cứ chạy xoay vòng 3 thread đó. + +Ví dụ: Việc làm hồ sơ nhập học. + +Có 3 cái bàn làm việc(bàn tiếp nhận hồ sơ) -> tương ứng giống số Thread cấp phát tối đa. + +Khi có yêu cầu làm hồ sơ, task cứ xếp vào các thread đó, khi bàn nào trồng thì đẩy các task sang bàn đó. + +Khi xử lý giống bộ phận 1 cửa nó sẽ nhanh hơn. + +Nếu 3 bàn không đủ thì mở thêm một bàn nữa là bàn số 4. + +Căn bản Thread nó cũng giống MultiThread thôi, nhưng ưu điểm của nó là tận dụng lại được toàn bộ sự nhàn rỗi của Thread. + +Ví dụ nếu Thread 1 nó đã nhàn rỗi rồi mà cứ tạo mới thêm vào nó thì cũng lãng phí -> phải điều phối được chúng. + +Java cung cấp: + +Interface Executor: để thực thi các Task trong Thread Pool + +Interface ExecutorService: để quản lý và điều khiển các Task. + + + diff --git a/Java-Concurrence/Java-Task/java-job/.gitignore b/Java-Concurrence/Java-Task/java-job/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Java-Concurrence/Java-Task/java-job/.mvn/wrapper/maven-wrapper.jar b/Java-Concurrence/Java-Task/java-job/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..c1dd12f Binary files /dev/null and b/Java-Concurrence/Java-Task/java-job/.mvn/wrapper/maven-wrapper.jar differ diff --git a/Java-Concurrence/Java-Task/java-job/.mvn/wrapper/maven-wrapper.properties b/Java-Concurrence/Java-Task/java-job/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..b74bf7f --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/Java-Concurrence/Java-Task/java-job/config/application.yml b/Java-Concurrence/Java-Task/java-job/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/Java-Task/java-job/config/beans.xml b/Java-Concurrence/Java-Task/java-job/config/beans.xml new file mode 100644 index 0000000..74dfbb7 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/config/beans.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/Java-Concurrence/Java-Task/java-job/config/job.properties b/Java-Concurrence/Java-Task/java-job/config/job.properties new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/Java-Task/java-job/config/log4j2.xml b/Java-Concurrence/Java-Task/java-job/config/log4j2.xml new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/Java-Task/java-job/config/schedule-conf.xml b/Java-Concurrence/Java-Task/java-job/config/schedule-conf.xml new file mode 100644 index 0000000..2d1861a --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/config/schedule-conf.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/Java-Concurrence/Java-Task/java-job/mvnw b/Java-Concurrence/Java-Task/java-job/mvnw new file mode 100644 index 0000000..841f63a --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/mvnw @@ -0,0 +1,331 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /usr/local/etc/mavenrc ]; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$( + \unset -f command + \command -v java + )" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Java-Concurrence/Java-Task/java-job/mvnw.cmd b/Java-Concurrence/Java-Task/java-job/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Java-Concurrence/Java-Task/java-job/pom.xml b/Java-Concurrence/Java-Task/java-job/pom.xml new file mode 100644 index 0000000..3aedc2e --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.3 + + + com.msoft + java-job + 0.0.1-SNAPSHOT + java-job + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-web + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/JavaJobApplication.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/JavaJobApplication.java new file mode 100644 index 0000000..893d291 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/JavaJobApplication.java @@ -0,0 +1,29 @@ +package com.msoft.javajob; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; +import org.springframework.context.annotation.ImportResource; +import org.springframework.scheduling.annotation.EnableScheduling; + +@SpringBootApplication +@EnableScheduling +@EnableAutoConfiguration(exclude = HibernateJpaAutoConfiguration.class) +public class JavaJobApplication { + + private static final Logger logger = LoggerFactory.getLogger(JavaJobApplication.class); + + public static void main(String[] args) { + try { + SpringApplication.run(JavaJobApplication.class, args); + + System.out.println("SERVER_IS_READY"); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/ExecutorServiceClient.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/ExecutorServiceClient.java new file mode 100644 index 0000000..e0ace27 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/ExecutorServiceClient.java @@ -0,0 +1,26 @@ +package com.msoft.javajob.basic.multi; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author ManhKM on 8/29/2022 + * @project Java-Task + */ +public class ExecutorServiceClient { + + public static void main(String[] args) { + + // Tạo pool với 2 thread cố định: + ExecutorService executor = Executors.newFixedThreadPool(10); + + // Đặt các Task vào executor: + executor.execute(new MyTask("a", 10)); + executor.execute(new MyTask("b", 20)); + executor.execute(new MyTask("c", 30)); + + // Ngừng executor: + executor.shutdown(); + } + +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/MyMultiThread.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/MyMultiThread.java new file mode 100644 index 0000000..ae6acd7 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/MyMultiThread.java @@ -0,0 +1,25 @@ +package com.msoft.javajob.basic.multi; + +/** + * @author ManhKM on 8/29/2022 + * @project Java-Task + * ----- + * Để kiểu là kiểu của thằng Cha -> còn new là con + * Nếu số Task quá lớn thì việc thực hiện đơn luồng là không khả thi. + * Nó không có chờ nhau, cứ CPU nhàn rỗi thì nó tối ưu để chạy luôn. + * + */ +public class MyMultiThread { + + public static void main(String[] args) { + Runnable myTask1 = new MyTask("A", 50); + Thread thread1 = new Thread(myTask1); + + Runnable myTask2 = new MyTask("B", 50); + Thread thread2 = new Thread(myTask2); + + thread1.start(); // khi start() thì tự động Thread sẽ kích hoạt --> run() method + thread2.start(); + } + +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/MyTask.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/MyTask.java new file mode 100644 index 0000000..d903d12 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/MyTask.java @@ -0,0 +1,26 @@ +package com.msoft.javajob.basic.multi; + +/** + * @author ManhKM on 8/29/2022 + * @project Java-Task + * ----- + * Định nghĩa ra một Task có nhiệm vụ thực hiện in ra ngoài màn hình. + * Lúc này MyTask chính là tác vụ cần xử lý. + * MyTask cần được gắn vào một Thread để chạy. + */ +public class MyTask implements Runnable{ + private String name; + private int time; + + public MyTask(String name, int time){ + this.name = name; + this.time = time; + } + + @Override + public void run(){ + for(int i = 0; i < this.time; i++){ + System.out.print(this.name); + } + } +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/banking/Account.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/banking/Account.java new file mode 100644 index 0000000..325d11b --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/banking/Account.java @@ -0,0 +1,51 @@ +package com.msoft.javajob.basic.multi.banking; + +/** + * @author ManhKM on 8/29/2022 + * @project Java-Task + */ +public class Account { + + private String name; + private double amount; + + public Account(String name, double amount){ + this.name = name; + this.amount = amount; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getAmount() { + return amount; + } + + public void setAmount(double amount) { + this.amount = amount; + } + + /** + * Thực hiện phương thức rút tiền trong tài khoản ngân hàng. + * @param a + */ + public synchronized void withdraw(double a){ + System.out.println("Số tiền ban đầu trong tài khoản: " + this.amount); + if(this.getAmount() >= a){ + try { + Thread.sleep(1000); + this.setAmount(this.getAmount() - a); + System.out.println(" Số tiền sau khi rút còn lại: " + this.amount); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } else { + System.out.println("Rất tiếc số tiền không đủ"); + } + } +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/banking/AccountClient.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/banking/AccountClient.java new file mode 100644 index 0000000..d883190 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/banking/AccountClient.java @@ -0,0 +1,24 @@ +package com.msoft.javajob.basic.multi.banking; + +/** + * @author ManhKM on 8/29/2022 + * @project Java-Task + */ +public class AccountClient { + + public static void main(String[] args) { + Account a = new Account("manhkm", 15); + + // Số tiền thực hiện rút: + Long amount = 10L; + + Runnable task1 = new WithdrawTask(a, amount); + Thread t1 = new Thread(task1); + + Runnable task2 = new WithdrawTask(a, amount); + Thread t2 = new Thread(task2); + + t1.start(); + t2.start(); + } +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/banking/WithdrawTask.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/banking/WithdrawTask.java new file mode 100644 index 0000000..9309d00 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/multi/banking/WithdrawTask.java @@ -0,0 +1,25 @@ +package com.msoft.javajob.basic.multi.banking; + +/** + * @author ManhKM on 8/29/2022 + * @project Java-Task + */ +public class WithdrawTask implements Runnable{ + + private Account acct; + private long mount; + + public WithdrawTask(Account acct, long mount){ + this.acct = acct; + this.mount = mount; + } + + @Override + public void run() { + try { + this.acct.withdraw(this.mount); + } catch (Exception e){ + e.printStackTrace(); + } + } +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/nonthread/MyClient.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/nonthread/MyClient.java new file mode 100644 index 0000000..7d318b8 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/nonthread/MyClient.java @@ -0,0 +1,18 @@ +package com.msoft.javajob.basic.nonthread; + +/** + * @author ManhKM on 8/29/2022 + * @project Java-Task + */ +public class MyClient { + + public static void main(String[] args) { + MyTask task1 = new MyTask("A", 20); + MyTask task2 = new MyTask("B", 20); + + task1.run(); + task2.run(); + task1.run(); + + } +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/nonthread/MyTask.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/nonthread/MyTask.java new file mode 100644 index 0000000..a705e8f --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/basic/nonthread/MyTask.java @@ -0,0 +1,23 @@ +package com.msoft.javajob.basic.nonthread; + +/** + * @author ManhKM on 8/29/2022 + * @project Java-Task + * ----- + * Định nghĩa ra một Task có nhiệm vụ thực hiện in ra ngoài màn hình. + */ +public class MyTask { + private String name; + private int time; + + public MyTask(String name, int time){ + this.name = name; + this.time = time; + } + + public void run(){ + for(int i = 0; i < this.time; i++){ + System.out.print(this.name); + } + } +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/controller/MainController.java b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/controller/MainController.java new file mode 100644 index 0000000..c102570 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/java/com/msoft/javajob/controller/MainController.java @@ -0,0 +1,18 @@ +package com.msoft.javajob.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author ManhKM on 8/28/2022 + * @project Java-Task + */ +@RestController +public class MainController { + + @RequestMapping(value = "/", method = RequestMethod.GET) + public String sayHello(){ + return "Welcome to Java-Job"; + } +} diff --git a/Java-Concurrence/Java-Task/java-job/src/main/resources/application.properties b/Java-Concurrence/Java-Task/java-job/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/Java-Concurrence/Java-Task/java-job/src/test/java/com/msoft/javajob/JavaJobApplicationTests.java b/Java-Concurrence/Java-Task/java-job/src/test/java/com/msoft/javajob/JavaJobApplicationTests.java new file mode 100644 index 0000000..508f949 --- /dev/null +++ b/Java-Concurrence/Java-Task/java-job/src/test/java/com/msoft/javajob/JavaJobApplicationTests.java @@ -0,0 +1,13 @@ +package com.msoft.javajob; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class JavaJobApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/Java-Concurrence/Java-Task/msoft-core/.gitignore b/Java-Concurrence/Java-Task/msoft-core/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/Java-Concurrence/Java-Task/msoft-core/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Java-Concurrence/Java-Task/msoft-core/.mvn/wrapper/maven-wrapper.jar b/Java-Concurrence/Java-Task/msoft-core/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..c1dd12f Binary files /dev/null and b/Java-Concurrence/Java-Task/msoft-core/.mvn/wrapper/maven-wrapper.jar differ diff --git a/Java-Concurrence/Java-Task/msoft-core/.mvn/wrapper/maven-wrapper.properties b/Java-Concurrence/Java-Task/msoft-core/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..b74bf7f --- /dev/null +++ b/Java-Concurrence/Java-Task/msoft-core/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/Java-Concurrence/Java-Task/msoft-core/mvnw b/Java-Concurrence/Java-Task/msoft-core/mvnw new file mode 100644 index 0000000..841f63a --- /dev/null +++ b/Java-Concurrence/Java-Task/msoft-core/mvnw @@ -0,0 +1,331 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /usr/local/etc/mavenrc ]; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$( + \unset -f command + \command -v java + )" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Java-Concurrence/Java-Task/msoft-core/mvnw.cmd b/Java-Concurrence/Java-Task/msoft-core/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Java-Concurrence/Java-Task/msoft-core/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Java-Concurrence/Java-Task/msoft-core/pom.xml b/Java-Concurrence/Java-Task/msoft-core/pom.xml new file mode 100644 index 0000000..7b5e5bf --- /dev/null +++ b/Java-Concurrence/Java-Task/msoft-core/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.3 + + + com.msoft + msoft-core + 0.0.1-SNAPSHOT + msoft-core + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/Java-Concurrence/Java-Task/msoft-core/src/main/java/com/msoft/core/MsoftCoreApplication.java b/Java-Concurrence/Java-Task/msoft-core/src/main/java/com/msoft/core/MsoftCoreApplication.java new file mode 100644 index 0000000..8cea5b2 --- /dev/null +++ b/Java-Concurrence/Java-Task/msoft-core/src/main/java/com/msoft/core/MsoftCoreApplication.java @@ -0,0 +1,13 @@ +package com.msoft.core; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class MsoftCoreApplication { + + public static void main(String[] args) { + SpringApplication.run(MsoftCoreApplication.class, args); + } + +} diff --git a/Java-Concurrence/Java-Task/msoft-core/src/main/resources/application.properties b/Java-Concurrence/Java-Task/msoft-core/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Java-Concurrence/Java-Task/msoft-core/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/Java-Concurrence/Java-Task/msoft-core/src/test/java/com/msoft/core/MsoftCoreApplicationTests.java b/Java-Concurrence/Java-Task/msoft-core/src/test/java/com/msoft/core/MsoftCoreApplicationTests.java new file mode 100644 index 0000000..7f015c9 --- /dev/null +++ b/Java-Concurrence/Java-Task/msoft-core/src/test/java/com/msoft/core/MsoftCoreApplicationTests.java @@ -0,0 +1,13 @@ +package com.msoft.core; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class MsoftCoreApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/Java-Concurrence/Java-Task/mvnw b/Java-Concurrence/Java-Task/mvnw new file mode 100644 index 0000000..841f63a --- /dev/null +++ b/Java-Concurrence/Java-Task/mvnw @@ -0,0 +1,331 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /usr/local/etc/mavenrc ]; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$( + \unset -f command + \command -v java + )" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Java-Concurrence/Java-Task/mvnw.cmd b/Java-Concurrence/Java-Task/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Java-Concurrence/Java-Task/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Java-Concurrence/Java-Task/pom.xml b/Java-Concurrence/Java-Task/pom.xml new file mode 100644 index 0000000..6981549 --- /dev/null +++ b/Java-Concurrence/Java-Task/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.3 + + + com.msoft + Java-Task + 0.0.1-SNAPSHOT + Java-Task + Demo project for Spring Boot + + + java-job + msoft-core + + + + 1.8 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git "a/Java-Concurrence/Java-Thread-Pool/docs/Kha\314\201i nie\314\243\314\202m ThreadPool va\314\200 Executor trong Java.docx" "b/Java-Concurrence/Java-Thread-Pool/docs/Kha\314\201i nie\314\243\314\202m ThreadPool va\314\200 Executor trong Java.docx" new file mode 100644 index 0000000..d8fa3f5 Binary files /dev/null and "b/Java-Concurrence/Java-Thread-Pool/docs/Kha\314\201i nie\314\243\314\202m ThreadPool va\314\200 Executor trong Java.docx" differ diff --git "a/Java-Concurrence/Java-Thread-Pool/docs/ThreadPoolExecutor va\314\200 nguye\314\202n ta\314\206\314\201c qua\314\211n ly\314\201 pool size.docx" "b/Java-Concurrence/Java-Thread-Pool/docs/ThreadPoolExecutor va\314\200 nguye\314\202n ta\314\206\314\201c qua\314\211n ly\314\201 pool size.docx" new file mode 100644 index 0000000..737d53a Binary files /dev/null and "b/Java-Concurrence/Java-Thread-Pool/docs/ThreadPoolExecutor va\314\200 nguye\314\202n ta\314\206\314\201c qua\314\211n ly\314\201 pool size.docx" differ diff --git "a/Java-Concurrence/Java-Thread-Pool/docs/T\303\254m hi\341\273\203u v\341\273\201 Thread Pool trong java.docx" "b/Java-Concurrence/Java-Thread-Pool/docs/T\303\254m hi\341\273\203u v\341\273\201 Thread Pool trong java.docx" new file mode 100644 index 0000000..c6dbee4 Binary files /dev/null and "b/Java-Concurrence/Java-Thread-Pool/docs/T\303\254m hi\341\273\203u v\341\273\201 Thread Pool trong java.docx" differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/AppServer.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/AppServer.class new file mode 100644 index 0000000..5cf2f56 Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/AppServer.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/Server$1.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/Server$1.class new file mode 100644 index 0000000..63a4a88 Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/Server$1.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/Server.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/Server.class new file mode 100644 index 0000000..81a8fd5 Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/Server.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/CachedThreadPoolExample.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/CachedThreadPoolExample.class new file mode 100644 index 0000000..0177ed1 Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/CachedThreadPoolExample.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/FixedThreadPoolExample.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/FixedThreadPoolExample.class new file mode 100644 index 0000000..16e1409 Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/FixedThreadPoolExample.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/JavaExecutorServiceExample$1.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/JavaExecutorServiceExample$1.class new file mode 100644 index 0000000..e6e4c9d Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/JavaExecutorServiceExample$1.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/JavaExecutorServiceExample.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/JavaExecutorServiceExample.class new file mode 100644 index 0000000..04876ee Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/JavaExecutorServiceExample.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/MainRequestHandler.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/MainRequestHandler.class new file mode 100644 index 0000000..896cf73 Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/MainRequestHandler.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/RequestHandler.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/RequestHandler.class new file mode 100644 index 0000000..14c9526 Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/RequestHandler.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/SingleThreadPoolExample.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/SingleThreadPoolExample.class new file mode 100644 index 0000000..76da83f Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/SingleThreadPoolExample.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/ThreadPoolExecutorExample.class b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/ThreadPoolExecutorExample.class new file mode 100644 index 0000000..bf4f0f5 Binary files /dev/null and b/Java-Concurrence/Java-Thread-Pool/out/production/Java-Thread-Pool/com/core/thread/loda/ThreadPoolExecutorExample.class differ diff --git a/Java-Concurrence/Java-Thread-Pool/readme.md b/Java-Concurrence/Java-Thread-Pool/readme.md new file mode 100644 index 0000000..cffb66f --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/readme.md @@ -0,0 +1,56 @@ +# Tìm hiểu về Thread Pool trong Java + +Flow: + + TaskScheduleExecute + |_ ScheduledThreadPoolExecutor + |_ ThreadPoolExecutor + |_ AbstractExecutorService + |_ ExecutorService + |_ Executor + |_ ScheduledExecutorService + |_ ExecutorService + |_ Executor + + + +## ThreadPool và Executor trong Java + +## Cách tạo ThreadPool trong Java + Java Concurrency API -> Thread Pool + 1. Cached thread pool + 2. Fixed thread pool (**) + 3. Single-threaded pool + 4. Fork/Join pool + +## Executor + 1. newSingleThreadExecutor() + 2. newCachedThreadPool() + 3. newFixedThreadPool(int n) (**) + 4. newScheduledThreadPool(int corePoolSize) + 5. newSingleThreadScheduledExecutor() + +## ThreadPoolExecutor và nguyên tắc quản lý pool size: + ThreadPoolExecutor + +## ThreadPoolExecutor vs ThreadPoolTaskExecutor -> Executor + corePoolSize : Số lương Thread mặc định trong Pool + maxPoolSize : Số lượng tối đa Thread trong Pool + queueCapacity : Số lượng tối đa của BlockingQueu + +## Nguyên tắc vận hành: + Ví dụ: + corePoolSize: 5 + maxPoolSize: 15 + queueCapacity: 100 + K + +## Reference Document + +[Khái niệm ThreadPool và Executor trong Java | Loda](https://loda.me/articles/khai-niem-threadpool-va-executor-trong-java) + + +[Tìm hiểu về Thread Pool trong Java - viblo](https://viblo.asia/p/tim-hieu-ve-thread-pool-trong-java-OeVKBDQMlkW) + + +[Java ExecutorService | jenkov.com](https://jenkov.com/tutorials/java-util-concurrent/executorservice.html) \ No newline at end of file diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/AppServer.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/AppServer.java new file mode 100644 index 0000000..e914437 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/AppServer.java @@ -0,0 +1,9 @@ +package com.core.thread; + +/** + * @author ManhKM on 4/1/2022 + * @project Java-Thread-Pool + */ +public class AppServer { + +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/Server.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/Server.java new file mode 100644 index 0000000..aad6af1 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/Server.java @@ -0,0 +1,33 @@ +package com.core.thread; + +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + +/** + * @author ManhKM on 4/1/2022 + * @project Java-Thread-Pool + */ +public class Server { + static Executor pool = Executors.newFixedThreadPool(5); + + public static void main(String[] args) throws IOException { + ServerSocket socket = new ServerSocket(9000); + while (true){ + final Socket s = socket.accept(); + Runnable r = new Runnable() { + @Override + public void run() { + doWork(s); + } + }; + pool.execute(r); + } + } + + static void doWork(Socket socket){ + System.out.println("-----> HelloWorld - method doWork"); + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/CachedThreadPoolExample.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/CachedThreadPoolExample.java new file mode 100644 index 0000000..d7d8f6f --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/CachedThreadPoolExample.java @@ -0,0 +1,23 @@ +package com.core.thread.loda; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author ManhKM on 4/23/2022 + * @project Java-Thread-Pool + */ +public class CachedThreadPoolExample { + public static void main(String[] args) { + ExecutorService executor = Executors.newCachedThreadPool(); + + for(int i = 0; i < 100; i++){ + executor.execute(new RequestHandler("request-" + i)); + } + executor.shutdown(); + + while (!executor.isTerminated()){ + // + } + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/FixedThreadPoolExample.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/FixedThreadPoolExample.java new file mode 100644 index 0000000..d67c095 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/FixedThreadPoolExample.java @@ -0,0 +1,28 @@ +package com.core.thread.loda; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Thực hành việc: FixedThreadPoolExample + * size: 5 + * @author ManhKM on 4/23/2022 + * @project Java-Thread-Pool + */ +public class FixedThreadPoolExample { + public static void main(String[] args) { + ExecutorService executor = Executors.newFixedThreadPool(5); + + /** + * Khởi tạo một 100 request tới cùng một lúc + */ + for(int i = 0; i < 100; i++){ + executor.execute(new RequestHandler("request-" + i)); + } + executor.shutdown(); // Không cho threadPool nhận thêm request vào nữa + + while(!executor.isTerminated()){ + // + } + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/JavaExecutorServiceExample.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/JavaExecutorServiceExample.java new file mode 100644 index 0000000..70127db --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/JavaExecutorServiceExample.java @@ -0,0 +1,24 @@ +package com.core.thread.loda; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author ManhKM on 5/9/2022 + * @project Java-Thread-Pool + * + * https://jenkov.com/tutorials/java-util-concurrent/executorservice.html#task-delegation + * + */ +public class JavaExecutorServiceExample { + public static void main(String[] args) { + ExecutorService executorService = Executors.newFixedThreadPool(10); + executorService.execute(new Runnable() { + @Override + public void run() { + System.out.println("Không đồng bộ task"); + } + }); + executorService.shutdown(); + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/MainRequestHandler.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/MainRequestHandler.java new file mode 100644 index 0000000..226498e --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/MainRequestHandler.java @@ -0,0 +1,12 @@ +package com.core.thread.loda; + +/** + * @author ManhKM on 4/23/2022 + * @project Java-Thread-Pool + */ +public class MainRequestHandler { + public static void main(String[] args) { + Thread t1 = new Thread(new RequestHandler("request-handler")); + t1.start(); + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/RequestHandler.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/RequestHandler.java new file mode 100644 index 0000000..a56d605 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/RequestHandler.java @@ -0,0 +1,25 @@ +package com.core.thread.loda; + +/** + * @author ManhKM on 4/23/2022 + * @project Java-Thread-Pool + */ +public class RequestHandler implements Runnable{ + String name; + public RequestHandler(String name){ + this.name = name; + } + + @Override + public void run() { + try { + System.out.println(Thread.currentThread().getName()+ " Starting process " + name); + Thread.sleep(500); + System.out.println(Thread.currentThread().getName() + " Finished process " + name); + + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/SingleThreadPoolExample.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/SingleThreadPoolExample.java new file mode 100644 index 0000000..e9bc397 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/SingleThreadPoolExample.java @@ -0,0 +1,27 @@ +package com.core.thread.loda; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author ManhKM on 4/23/2022 + * @project Java-Thread-Pool + */ +public class SingleThreadPoolExample { + public static void main(String[] args) { + ExecutorService executor = Executors.newSingleThreadExecutor(); + + /** + * Giả sử có 100 request tới cùng một lúc + * Mỗi name-request -> format: request-1,... + */ + for (int i = 0; i < 100; i++){ + executor.execute(new RequestHandler("request-"+i)); + } + executor.shutdown(); + + while (!executor.isTerminated()){ + // Chờ xử lý hết các request còn chờ trong QUEUE + } + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/ThreadPoolExecutorExample.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/ThreadPoolExecutorExample.java new file mode 100644 index 0000000..833e488 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/loda/ThreadPoolExecutorExample.java @@ -0,0 +1,39 @@ +package com.core.thread.loda; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 4/23/2022 + * @project Java-Thread-Pool + */ +public class ThreadPoolExecutorExample { + + public static void main(String[] args) { + int corePoolSize = 5; + int maximumPoolSize = 10; + int queueCapacity = 100; + + ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, + maximumPoolSize, + 10, //Thời gian một thread được sống nếu không làm gì + TimeUnit.SECONDS, + new ArrayBlockingQueue<>(queueCapacity)); // Blocking queue để cho request đợi + + // 1000 request đến dồn dập, liền 1 phát, không nghỉ. + for (int i = 0; i < 1000; i++) { + executor.execute(new RequestHandler("request-" + i)); + try { + Thread.sleep(50); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + executor.shutdown(); // Không cho threadpool nhận thêm nhiệm vụ vào nữa + + while (!executor.isTerminated()) { + // + } + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/unikgate/ThreadMain.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/unikgate/ThreadMain.java new file mode 100644 index 0000000..54d2777 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/unikgate/ThreadMain.java @@ -0,0 +1,47 @@ +package com.core.thread.unikgate; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +/** + * @author ManhKM on 1/3/2023 + * @project Java-Thread-Pool ---- Test tốc độ chạy của ThreadPool so với Thread thông thường + */ +public class ThreadMain { + + static long N = 1_000_000_000_000_000L; + + public static void main(String[] args) throws InterruptedException { + ExecutorService executorService = Executors.newFixedThreadPool(50); + long start = System.currentTimeMillis(); + + System.out.println("SERVER IS READY!"); + Future sumFuture1 = executorService.submit(() -> { + long sum = 0; + for (int i = 0; i < N; i++) { + sum += i; + } + return sum; + }); + + Future sumFuture2 = executorService.submit(() -> { + long sum = 0; + for (int i = 0; i < N; i++) { + sum += i; + } + return sum; + }); + + int countWaiting = 0; + while (!sumFuture1.isDone() || !sumFuture2.isDone()) { + Thread.sleep(1); + countWaiting++; + System.out.println(" [" + countWaiting + "]waiting..."); + } + + System.out.println("Total time execute: " + (System.currentTimeMillis() - start) + " milis"); + + executorService.shutdown(); + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/Task.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/Task.java new file mode 100644 index 0000000..45342ce --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/Task.java @@ -0,0 +1,29 @@ +package com.core.thread.viblo.executorservice; + +/** + * @author ManhKM on 8/11/2022 + * @project Java-Thread-Pool + * ----- + * Định nghĩa các các Task, job cần phải làm, thực hiện trong module. + */ +public class Task implements Runnable{ + + int id; + + public Task(int id) { + this.id = id; + } + + @Override + public void run() { + System.out.println("Tiến trình đang được thưc thi " + id); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + System.out.println(" Tiến trình đã được thực thi " + id); + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/TestExecutorService.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/TestExecutorService.java new file mode 100644 index 0000000..dc80198 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/TestExecutorService.java @@ -0,0 +1,63 @@ +package com.core.thread.viblo.executorservice; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +/** + * @author ManhKM on 8/11/2022 + * @project Java-Thread-Pool + */ +public class TestExecutorService { + + public static void main(String[] args) { + ExecutorService executorService = Executors.newSingleThreadExecutor(); + + Set> callables = new HashSet>(); + + callables.add(new Callable() { + @Override + public String call() throws Exception { + return "Task1"; + } + }); + + callables.add(new Callable() { + @Override + public String call() throws Exception { + return "Task2"; + } + }); + + callables.add(new Callable() { + @Override + public String call() throws Exception { + return "Task3"; + } + }); + + callables.add(new Callable() { + @Override + public String call() throws Exception { + return "Task3"; + } + }); + + try { + List> futureList = executorService.invokeAll(callables); + for (Future future : futureList){ + System.out.println("Future.get = " + future.get()); + } + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + + executorService.shutdown(); + + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/TestFuture.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/TestFuture.java new file mode 100644 index 0000000..ace0002 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/TestFuture.java @@ -0,0 +1,30 @@ +package com.core.thread.viblo.executorservice; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +/** + * @author ManhKM on 8/11/2022 + * @project Java-Thread-Pool + */ +public class TestFuture { + public static ExecutorService executorService = Executors.newFixedThreadPool(5); + + public static void main(String[] args) { + Future future = (Future) executorService.submit(new Runnable() { + public void run() { + System.out.println("Asynchronous task"); + } + }); + + try { + future.get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/TestThreadPool.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/TestThreadPool.java new file mode 100644 index 0000000..f3888ac --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/executorservice/TestThreadPool.java @@ -0,0 +1,46 @@ +package com.core.thread.viblo.executorservice; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 8/11/2022 + * @project Java-Thread-Pool + */ +public class TestThreadPool { + + public static void main(String[] args) { + ExecutorService pool = Executors.newFixedThreadPool(5); + +// for (int i = 0; i < 100; i++){ +//// pool.submit(new Task(i)); +// pool.execute(new Task(i)); +// +// } +// +// try { +// pool.awaitTermination(1, TimeUnit.DAYS); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } + for (int i = 0; i < 10; i++){ + int finalI = i; + pool.execute(new Runnable() { + @Override + public void run() { + System.out.println("Asynchronous task starting!!! " + finalI); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println(" Asynchronous task DONE... " + finalI); + + } + }); + } + + pool.shutdown(); + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/threadpoolexecutor/Task.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/threadpoolexecutor/Task.java new file mode 100644 index 0000000..a557762 --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/threadpoolexecutor/Task.java @@ -0,0 +1,27 @@ +package com.core.thread.viblo.threadpoolexecutor; + +/** + * @author ManhKM on 8/11/2022 + * @project Java-Thread-Pool + */ +public class Task implements Runnable{ + + int id; + + public Task(int id) { + this.id = id; + } + + @Override + public void run() { + System.out.println("Tiến trình đang được thực thi " + id); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + System.out.println("Tiến trình đã được thực thi " + id); + } +} diff --git a/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/threadpoolexecutor/TestThreadPool.java b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/threadpoolexecutor/TestThreadPool.java new file mode 100644 index 0000000..dbb990e --- /dev/null +++ b/Java-Concurrence/Java-Thread-Pool/src/com/core/thread/viblo/threadpoolexecutor/TestThreadPool.java @@ -0,0 +1,33 @@ +package com.core.thread.viblo.threadpoolexecutor; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 8/11/2022 + * @project Java-Thread-Pool + * ----- + * Tham khảo: ThreadPool trong Java + */ +public class TestThreadPool { + + public static void main(String[] args) { + int corePoolSize = 50; // Số lượng Thread tối thiếu trong ThreadPool + int maximumPoolSize = 100; + long keepAliveTime = 500; + + TimeUnit timeUnit = TimeUnit.SECONDS; + + ArrayBlockingQueue workQueue = new ArrayBlockingQueue<>(100); + + RejectedExecutionHandler handler = new ThreadPoolExecutor.CallerRunsPolicy(); + + ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, timeUnit, workQueue, handler); + + for (int i = 0; i < 1000; i++){ + threadPoolExecutor.execute(new Task(i)); + } + } +} diff --git a/Java-Concurrence/Java-Thread/docs/Java-Thread-v1.0.drawio b/Java-Concurrence/Java-Thread/docs/Java-Thread-v1.0.drawio new file mode 100644 index 0000000..bd0ab11 --- /dev/null +++ b/Java-Concurrence/Java-Thread/docs/Java-Thread-v1.0.drawio @@ -0,0 +1 @@ +7VrbcqM4EP0aqmYfnOJi7OQx4Ex2qzyzqXGqZvdRARm0ETQjybGdr18JhB0MZEhinEwNT0atloT69OW4bcPxk801Q1n8BUJMDdsMN4YzM2zbMi9s+aEk20LimuNCEDESaqW9YEEecblSS1ckxLyiKACoIFlVGECa4kBUZIgxWFfVlkCrp2YowjXBIkC0Lv1OQhFrqTW52E/8iUkU66PP7WkxkaBSWd+ExyiE9RORc2U4PgMQxVOy8TFVxivtUqz73DK7ezGGU9FlgXfzdf1jTsMf/t+YX4/O7avF1UjfgotteWEGqzTEao1pOB4wEUMEKaJzgEwKLSn8Dwux1VChlQApikVC9Wz9vfSrclixAD/zMiW+iEVYPKPnFno4rECnb32NIcGCbaUCwxQJ8lBFEmmHiHZ6e5vJB222F5iw9NQHRFf6KMOeoERay6MiN8jTEUkyihNpG76TRxUtPTqARV12ju5kdFWMjSiJUvkcyA0xk4IHzASR7nupJxIShmoPj2FOHtFdvp9CNgOi3kFu7nqGO2sE7jmXUQfhjdEQg/qQiptXcNGrzDPbmuho0dlhpLNFZ+T05jfqMvudR2XMlds61R1gueTSww6R373iG5yh5gs+RVwee2n4tnFpfgd2T9LoNmYYhTWQ+ZokFKUKriWkYqFnOgEtVHh6QUxoOEdbWCkIuUDBfTnyYmDkUW6LSueR00zoOLYnFY2FWqk9JfccfFP6hXUg+oI2FcU54kILAqAUZZzc7a6RyNgmqQdCQKKVWvNFzcNaPWlchXts6vH6ScaeaFn8JFlbjtlTUrAbcoKn6g/BqgBdqjS3zXDNA+SFRY4Mg3vsAwUJ9SyFwiUIpQei0isoXopWn+AZCqTPzXOd2Xgv+aYtoUQg1y5pXp9imTJwqvAEgURryvCk7XzzzFXJw/bl2NqP83ySyeLhQyrvgkgOLZaescZcdM813T1BQy/duBPypd7RgXcagD/AmJIcuwLjklRYrwJ4l901ord5jR5ZNdSdOupOA8JUVZgb4EQQUPuzQrehWLwHuK7dDdzznrAdtwR1xiDAnC/UMbG08Kc/igh/AFLP8UOEv80JJh1z+7Sv1O7WvOAvVZKXSHFbXea/rdI0N+tQ4Y9T4Z3JQYm3u+aCvhL9ZKjwx4h/t7MnfJQKPx0qfG/gvneFP28JarZKh6LeI+5di3pvQW25NUxVx6Wszxq3N/fGpNnY9h+1XhpcD//V2+WD2aYy2v6sgv68p9a1qab1PkpTram8tjfVYvSAR+gXbahZbeHyio6aNXX1t5TXttBO3zJ7pmdmm18hnSGcQFq0zG5VHhpI9XFI9UGX1G5om+1kJ+HU1tA2O86X6mP0zRqh768AD42zHuFt4NXNkd0Xum2ts0Qa4dNCMGlebSH1s23EB7Ldozc0sO3TBvuOvfbLtt/Amqe/JGsuc+bvwJpb6c6LWfPIPHOcsVXhQiX9fS2LPgFtrvehqj81D7T5NLR5Mn532tzWthpo88sq6bSzK3wY2nzRAP1Am48E73vT5jLTDLT5IwR7j7RZDvd/BC0Ywv7vtM7V/w==5V1bd5u4Fv41rJV5SBeIm/1oO22nZ5JpV9J1Tue8dBFbMZpg5ArRxP31I4G4SnFIxiBo+9AiIcmw9/72TRvVsFe7x/ck2IdXeAMjA5ibR8O+MACwzDlg//CeQ97jmk7esSVoIwZVHTfoByxmit4UbWDSGEgxjijaNzvXOI7hmjb6AkLwQ3PYHY6av7oPtlDquFkHkdz7P7Shoei1vHl143eItqH46Rnw8xu7oBgs3iQJgw1+qHXZbw17RTCm+dXucQUjTryCLrMfV98t3720vq4vD5G3JP//+OM8X+zdS6aUr0BgTF+99M3N4a/Vhxu8+8/1+Tq6WVxv3WKK+T2IUkGvzyGBwcbgb+hF7NeWt4RdbfnVWZLenu8JXsMkYQOi1HhrGculMbfj7W+CRvRQEJ7gNN5A/uMWm/sQIgpv9sGa331gosb6QrqLxG3xGJBQ+Nji2zMvbZWcYCIM8Q5ScmDzxCoz8YJCeB3RfKhJQsHesCYEnugLhPBty4UrArMLQeMX0BtIZIIbJq6iiQkN8RbHQfS26l1WhDRZqxpzifFekO9vSOlBYC9IKW4SlxGQHL7w+W/covlX/d7Fo1g8bx1EK39W/oCvYAl7SZySNTxCjEIdBGQL6XNCKrOYwCig6Hvz4U7OMUtCyFXKtNc5FTiRQGKsHGNuBtMECDB1I8SW6G29Ye2rgpRzykUGZc2FsXwX8yYxVraxWMUhb4Ri6NJa84dGojnz+dC4altpm0dc63HuWc2+csX5BZK4yPhBm6xKKMH3cIUjTFhPjGMO4jsURa2uIELbmDXXjH+Q9S85dxGzXAtxY4c2m0wDqGSjqRX6Eg/LacqHpdKgrkI+7L7kw9WqQa26/qypU00a1OmoQZ9g8jAa1JEQfZlyvC4dDsh1dmlzh6sB8TYwrwKUDQ8xR2l+azHPbm2KpsubY9Sy41Oz8yOEei1IHhH9UruuQYS1KoTwxqEOly/1xjiA5XUElq/VNTElJtZ1oTAzJ3QfX8aj18jDWPg608lXT1KYlU9Z81/8ncL7zJxTGiT3aCoupz1zNOtCX6L3RelCBpV7uYgr/3DlGQsrfsYTPROxMuODeV7Mzbh4dFbGQjF1vFyU2Ah0m7TZC9jY9i7O8rSHzClp4FVKUT54OrxxtOc9rOOJj5Obqhf66YWpMkdkqqyu6RGttsqS8yNZvL7KsGZmmHku5mYimam/TICFK3/Bx2WhwUURJIjV9mHp/fP4ngpNurD24wSjC9o5SAUYPQUYnd7A6IwajL0Dy54EsOREGODA+kyCzE1Yh4Xgu0zwzdsyeM4AV7QYMVeGOqvVmFGG0O847ioXM/0ZAOdqB5z3awPOnQTgXAlwdg64zPhYGerapqtE4fIdT1qdbZhfeB7h9f1vxwYvLP5au9yosav7UOTDtoXVW7C7wNwWdnEKMHP127XZrw0zvyPMctOiDWeKcJuh5pKB5uyPHAh20IJWEZfdM08SmOCZCLph7RY2yixiwE1ZiIUjWXmdpjxlZrfAytXAHw2gf0uLu9nYegNIy2VObwPjtwHPYm8LOzvnPu594wfyp1su1uMEv+91iDBV4O8vwpxLYvWpKFUYIwXb6rOM2fXVJsjFIK1U1Dgp6bcpqT3bAexhDdHINk9A18wFADoNEZBTFzLbogjtE9jawDeAbWZ/ntrt70vUW3k915cl3VYIem+b8eD4bvzpBb1ZwGTqFnTQVdAdrYIOJEGP4YPEuSES02ZLgD2FqrYUEuz2JcEFNEYqwerEtK83Mw26lp0Ardvj9tBW+A14HW/FPMFeaxq8tbXabnvgUH9shqczl/QiUI7JeGkCj5jxbh9BCuXgjBPtMriFUZMT3YslCUzQj+A2W4/zYo9RTLM3c5eGe5GJBWUvj+MGsxTGTnySINYyyg8B6mw8Ip1PWsFz84098+2GJRQmujNfxOKf+MtVKxc7O0W1pt1cAN/dJUxc2mwtn/Bf1PgNrmtfpWrHVIrUGcOO1vp3Z3AX/3VWtMnaqXhImnkrV5qhJGGXwPzwMXuKbylMqA4dfXqlnAvyMaVszgqCCP1ZlC7/S61cRMmFqh9MKwO59JqkcZzRbgTRn6dKeQ4a/QEZAHuCtyTYZcQJCOUfutEQZn/nH/y06PZzf/9Rkr5gmS2zbD5oxmlox7+ZWgWdK8maQZ2p1xx13RnUnKeSdwYfAkRVGw8DaKvWl08z1a7CsMpKjqZiTNHdQS4Dz/sXfM1n1dUprTYHUpJj6iWasGtAdtrsuW/LheeqLcvedJktb0BweZ8Gz/piktWyOL7nSlxyFFwCvXFpoGrJ0nCMx27YYBJ2o3jMepoJ7RgzmNDosx9tb1e/AbHlCrdc35hJBKFczTlKvVOzFcDv9dPnWTND5yuiFX9QRaSI1jkbWJtrgcc9QTyfqji4g7kDd4jyd8uupukZzHuNc1o1JL5iZ90yB3UOZGeYMWGH4oBCOQodQJ/Z3tj0mWNJdBiy3vMFsaA/HptecK1/m55NXRASHGoDhGZ4MlfmtXNEc7slJ/mKp929kCvfbnkRtx6guUUd83iAJjtYwfpbigjPi3FC8QW4jSDpnsrmJ8slP73j90sbHrcd7qg+Vhm0psuRk8Y5GxjTDvE6JDhm5JSRMUo29sU2p+0vOB0/Yj+Fd+jR+/Pf7x7vPn/970fv6/vr6z+T8MhJbu+un8r5j6J8t5WVscwhy3eVpJTTMkma7GG8OZvI995zVVmdioSn+BRHSULZYDCIpzs4FQp2l8LeSCh//5lQvJ8MAUtiaSOgbMc2kNuNw2RoCEyeDdRLRTlnhBJmv79PB8qdv6zpjYZy4uYAUTQZc2LZ2u2JnAzJUpZnEZ7MISxW51NYeqOifELO38zRnowYutpNirwDu4X0z2C8fk07l6DfMywSF3Uoj5yGYHS+oeLUHSaIH0ZrUSQS6vcOixOpmiS8oQGdjiAC09JNRTlKWaeEv2WefZgOKbU7iZYcrzCB/EQQJtne3STIqN9TVBzjknAy4j17+8MZiulURFK/v1gc1fHzH6iifn3FabFHZG6A8pejj1mT+PflySKWOIGPn1i6NPmo6nAvfppX7aSShbH0abNLnA6WT+anmFBUnaGZH8X9WV0W3RQKXall6fR6RfnywLllOQZDyUUAd3i0cZikmPTHYYrDXpiSF2S8xTiCQTwVanpdz4LvL1kvh2Tlbu5khFL5McmwZJSDMpR8GDshpSzLCORRDs1KeYSjDSlkQvYokaxZ/cdjeRlM9d+32W//AQ==7Vtbc9o4GP01PDbjO/DYBNLsbtJlhp3ZZt+ELbAaYTGyKLi/fiUs2diyDQHMJe1LIn2WFfuco+8iKx37Yb7+QsEifCEBxB3LCNYde9CxLNPoW/yXsCSpxTWc1DCjKJCDcsMY/YTqTmldogDGhYGMEMzQomj0SRRBnxVsgFKyKg6bElz8qwswg5ph7AOsW/9FAQul1fT6+YUniGah/NM9q5temAM1WL5JHIKArLZM9rBjP1BCWNqarx8gFuApXFjy9WvQHT49/ReT3pe/pus/R/hTOtnje27JXoHCiJ12aknuD4CXEq/hmsEo4LZ/QgqBaDxi/tYpAixRsMYrNMcg4r37kM0xN5q86YcIB88gIUvxnDED/pvq3VMYc3GM1EuYJdMLEJIzxHyEop8kYgBLA5+HMqksqzhiLP6EHCZfBVIG1yXudwBnZmzyZQDJHDKa8PvkLD3Jv1wAjuyucjV5aki4JSRHGYFU8CybOWeJNyRR7yDN1kh7ASjilhElMwrme5LVAOvRiFqNiFoVEHoVEJpWWxA6GoQaaDDgfkR2CWUhmZEI4GFuvadkGQUwkGDlY54JWUiMv0PGEokxWDJSZIBjSJNv8v5N51V07lzVHay3Lw6SAi/iAd/HihROTJbUhw3jXOmnAZ3Bpvm8apYpxIChH8WHq6JQ3joiiD92po6MdbngvJII0seSN5V0kD3F4dJw95AGxjx8CQmsQsTgeAE2cK54BC0SfPgCshsXkLPTJTlVHqmt1eTVOSQVQ8r+KAQL0VxQ4sM43o3jhHv52Wa5/b1kGAlP1iq+pl0E2NYBzlS6jXBZqidDuKshPJLYWcZY+HENY44IK4IIMJpFvO1zZCDlBoEb4pnSZ3lhjoIgdWwiLoPJZirhbxZirW1eyb3vuAMxF/dlcerW0lBCyRt8IJjweQcR2YSaKcK4ZGqNL7dAV0+nq1/BVmvRpaexNV5OxHIA8Rv/Zd5MgE5KWr9cwO5rmN1c9O3tGX1NVSbtCr9mDYl7x9+jGFEF3pbK40pPJJB6BhNeV7bmjmrXgawq5c2dTNg7yeo3ro9Pxp3VLfocVaUdmvyoIWQ6jWEriY3SVdkteVgEignlrZloqaisXcgqwgoHdvmI3mv2aN6VRXRTL72f+A9jALhaAU8uayEGFGAMcVrqcbogRfyRxBIqXhvlF3axMUVrqPZu2mTBca+NBb2WLoRqPfe/8lBduT1x3lBtXktxHXwW+4cixGAQx8hPjY8IF8uz90dysyYbPbLwtUtcuiWG0syhtcJXJdE1NMkU/ubSLnPfXQ+zu2/eVePkzpR36dX2B8q7UhE2JV52VzmY28m89PL9wMyrIh5dPvOqc4dXm3rp9flHSL120OA410ZDX6PhEUUoDnl0ubGsy/YunnVZejn+0bKumpr82KzLa866Wv7cYOlVuc5b+98b6sCV07j9apAu9cXhUuI+LHWFa8S+5SN571XNyNv5TaJzbLqrgNmV7coscneyW/Nx/DzJrmU38nyrNcnJSeqewjVyxw2SrQEy36/1nNkZnyyjMEqEpzOe1l86Z1ZELoLXggYuowi1bbhTEtax6/YgSXilD6dm7xySOPfGxZVJondTkjiPl/B+x42rVUQ5bjj2ORSh78GUDqkYPpkvMK/a9fLzJrfSrJrjWXJ6487yVBqtiOhc+Uaape/c/BEh1qk9afTBTsE0H1Qtf5K2DL1K657zHIyl7/D8pquWruzzz6XosvUtpPyU2TD6xenySt+unb5OV9U58APo4t383wpS35n/c4Y9/B8= \ No newline at end of file diff --git a/Java-Concurrence/Java-Thread/docs/Thread-Dong-bo-luong-trong-Java.docx b/Java-Concurrence/Java-Thread/docs/Thread-Dong-bo-luong-trong-Java.docx new file mode 100644 index 0000000..38539a3 Binary files /dev/null and b/Java-Concurrence/Java-Thread/docs/Thread-Dong-bo-luong-trong-Java.docx differ diff --git a/Java-Concurrence/Java-Thread/docs/bai1.md b/Java-Concurrence/Java-Thread/docs/bai1.md new file mode 100644 index 0000000..2d81c17 --- /dev/null +++ b/Java-Concurrence/Java-Thread/docs/bai1.md @@ -0,0 +1,13 @@ +## Bài 1 +## https://gokisoft.com/1103 +Cho một danh sách là họ tên các sinh viên +Ví dụ: {“Nguyen Ngoc Lan”,”Duong Tien Nam”,”Ngo Anh Quan”,”Pham Van Duc”,”Tran Thi Ha”} + +Một danh sách khác là quê tương ứng của các sinh viên trên: +Ví dụ: {“Hải Phòng”,”Hà Nội”,”Thái Nguyên”,”Hà Tĩnh”,”Quảng Ninh”} + +Viết một ứng dụng Java sử dụng Thread để thực hiện công việc +- Thread thứ nhát sau mỗi giây sẽ hiển thị 1 tên người tương ứng trong danh sách tên +- Thread thứ 2 ngay sau đó sẽ hiển thị quê tương ứng của người đó +- Hai thread thực hiện mỗi thread 5 lần sẽ dừng lại +Phải đảm bảo rằng Thread1 luôn chạy trước rồi mới đến Thread2 \ No newline at end of file diff --git "a/Java-Concurrence/Java-Thread/docs/gpcode/\304\220\341\273\223ng b\341\273\231 h\303\263a c\303\241c lu\341\273\223ng trong Java - GP Coder (L\341\272\255p tr\303\254nh Java).pdf" "b/Java-Concurrence/Java-Thread/docs/gpcode/\304\220\341\273\223ng b\341\273\231 h\303\263a c\303\241c lu\341\273\223ng trong Java - GP Coder (L\341\272\255p tr\303\254nh Java).pdf" new file mode 100644 index 0000000..d2b950e Binary files /dev/null and "b/Java-Concurrence/Java-Thread/docs/gpcode/\304\220\341\273\223ng b\341\273\231 h\303\263a c\303\241c lu\341\273\223ng trong Java - GP Coder (L\341\272\255p tr\303\254nh Java).pdf" differ diff --git a/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/baitap2/baitap1.md b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/baitap2/baitap1.md new file mode 100644 index 0000000..c975d45 --- /dev/null +++ b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/baitap2/baitap1.md @@ -0,0 +1,25 @@ + +# Synchronized 2 Thread - Bài tập mảng tên + địa chỉ - Java nâng cao + +# Bài 1: + +Cho một danh sách là họ tên các sinh viên + +Ví dụ: {“Nguyen Ngoc Lan”,”Duong Tien Nam”,”Ngo Anh Quan”,”Pham Van Duc”,”Tran Thi Ha”} + +Một danh sách khác là quê tương ứng của các sinh viên trên: + +Ví dụ: {“Hải Phòng”,”Hà Nội”,”Thái Nguyên”,”Hà Tĩnh”,”Quảng Ninh”} + +Viết 1 ứng dụng Java sử dụng Thread để thực hiện công việc: + +- Thread thứ nhất sau mỗi giây sẽ hiển thị tên 1 người tương ứng trong danh sách tên + +- Thread thứ hai ngay sau đó sẽ hiển thị quê tương ứng của người đó + +- Hai Thread thực hiện mỗi thread 5 lần sẽ dừng lại + +Phải đảm bảo rằng Thread1 luôn được chạy trước rồi mới đến Thread2 + +# Reference document +* [Bài tập mảng tên + địa chỉ](https://gokisoft.com/bai-tap-on-luyen-tong-hop-file-multithread-trong-java.html) diff --git a/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/baitap2/baitap2.md b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/baitap2/baitap2.md new file mode 100644 index 0000000..55fb328 --- /dev/null +++ b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/baitap2/baitap2.md @@ -0,0 +1,9 @@ +## Bài tập + Tạo lớp Thread1 kế thừa Thread gồm các thuộc tính ArrayList list 1 + - Thread này thực hiện sau 1s sinh ngẫu nhiên các số tự nhiên chạy từ 0-100 -> lưu kết quả vào mảng list 1 + Tạo lớp Thread2 kế thừa Thread gồm các thuộc tính ArrayList list2 . + - Thread này thực hiện sau 2s thì sinh ngẫu nhiên các ký tự từ a-z và lưu vào mảng list2 + Trong phương thức main của lớp Test tạo ra 2 thread t1 và t2 lần lượt từ Thread1 và Thread2 + Khi t1 đã sinh 10 lần -> thực hiện dừng t1 + Khi t2 đã sinh được 10 kí tự thì stop t2 + Sau khi 2 thread 1 và 2 kết thúc. Thực hiện in kết quả của các thread trên thread main. \ No newline at end of file diff --git a/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/java-advanced.txt b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/java-advanced.txt new file mode 100644 index 0000000..289b704 --- /dev/null +++ b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/java-advanced.txt @@ -0,0 +1,84 @@ +https://gokisoft.com/java-advanced.htm + ++ Tài liệu học + + ++ Exception & Collection + Overview Exception + Exception + ArrayIndexOutofBoundsException + + Debug sẽ kiểm soát mọi lỗi của chương trình này. + 11102002 + + Luồng, đa luồng thì dễ + Đồng bộ luồng và deal lock thì khá khó. + + StringBuilder và StringBuffer + StringBuiler -> bản chất -> nó sẽ tạo ra mảng và add phần tử vào. + -> append giá trị mới vào. + ??? Phân biệt String, StringBuiler, StringBuffer + + + Sử dụng Reguler Pattern + Pattern.compile + + + + ++ File + + ++ Thread + Phân tích quản lý ứng dụng trong HDH - Phân tích Game đa luồng Java + Phần 13: Phân tích quản lý ứng dụng HDH (Window, Mac, Linux) - Phân tích game đa luồng Java + + CPU 4x4 là gì? + Tại một thời điểm xử lý được 4 dòng lệnh. + 1s CPU thực hiện hàng triệu lệnh -> tốc độ quá nhanh -> tạo cảm giác nhanh -> đa luồng. + Giải thuật: Round Robin + + Xây dựng một dự án đa luồng. + + 3 cách tạo ra luồng -> bản chất sẽ có một luồng main class. + + Các hàm trong một Thread -> để biết cách làm việc rõ hơn. + Các trạng thái khác nhau của một luồng. + Tham khảo: + https://viblo.asia/p/vong-doi-va-trang-thai-cua-thread-bJzKmVWwZ9N + https://gokisoft.com/share-code-thread-trong-java--thread-sleep--join-trong-java.html + + Thread.sleep + getName -> lấy tên của luồng. + + Bài toán về sử lý đồng bộ + đặt logic trong khối synchronized + + + + + + Tìm hiểu Thread - Đồng bộ Thread - lập trình java nâng cao - Bổ sung thêm lớp mới + + Luồng nó hoàn toàn chạy độc lập -> không phụ thuộc vào luồng trước hay sau nó. + + Nếu có cả Thread1, Thread2 -> nó sẽ in cả kết quả của 1,2 song song với nhau. + + Vòng tròn RR -> in đến luồng nào thì in cái đó ra. + + Làm thế nào để nối các luồng với nhau + Thread1 -> sau khi chạy đến điểm nào đó -> nối vào Thread2 -> join + Nếu không nối thì chúng vẫn chạy với nhau một cách song song. + + + Đặt thread vào trong Thread khác. + Nối thread1 vào thread2 + Nếu không xử lý luồng thì có thể thực hiện các thao tác khác dẫn đến chương trình bị lỗi, treo. + + + wait, notify, notifyAll + + + Giải thích Synchronized + lập trình java nâng cao + Thread thực hiện in ngẫu nhiên các số nguyên và ký tự - phần 1 + Thread thực hiện in ngẫu nhiên các số nguyên và ký tự + Đồng bộ thread + wait notify + synchronized + Java nâng cao - phần 2 + Synchronized 2 Thread - Bài tập mảng tên + địa chỉ - Java nâng cao + Bài tập ôn luyện tổng hợp file, OOP, Thread trong Java + Sử dụng MultiThreading sinh ký tự a-zA-Z trong Java + + ++ CSDL + + ++ Ôn tập Tổng quát & Exmination + diff --git a/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/java2/thread/readmd.md b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/java2/thread/readmd.md new file mode 100644 index 0000000..cf7f63a --- /dev/null +++ b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/java2/thread/readmd.md @@ -0,0 +1,40 @@ + +## Đa luồng + - Khái niệm đa luồng là gì + - Triển khai code đa luồng + - Đồng bộ Thread + - Tại sao chúng ta cần đồng bộ luồng + -> An toàn dữ liệu + - Synchronized + -> Đồng bộ lên chính một phương thức nào đó + + - wait/notify + + - Deadlock + +## Synchronized + - wait, notify, notifyAll + - Dùng kết hợp với 3 cái trên: + wait -> đưa luồng về trạng thái dừng + notify, notifyAll -> đánh thức chúng dậy và cho chúng chạy. + + Bài tập + - T1 >> sinh ngẫu nhiên 1 số tự nhiên từ 1 - 100 + - T2 >> hiển thị bình phương số đã được sinh từ T1 + 1. Tạo 2 thread thực hiện yêu cầu trên + 2. Đồng bộ luồng + T1 Thực hiện > rad > T1 đợi T2 > hiển thị bình phương số rad > in ra màn hình + > T2 wait > T1 chạy > vòng tròn như trên + 3. Sinh ngẫu nhiên 10 số > stop 2 luồng + + Phân tích: + T1 > sinh ra số và phải có nơi lưu trữ + T2 > lấy rad => thực hiện logic hiển thị. + + Nên tạo ra một phần data để quản lý dữ liệu của DataMrg của T1 và T2 + + +## Reference Document: +[Java Concurrency - Java 8](https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html) + +[Java Advanced - Java 8](https://gokisoft.com/java-advanced.htm) \ No newline at end of file diff --git a/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/threadNumber/readme.md b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/threadNumber/readme.md new file mode 100644 index 0000000..653f0e6 --- /dev/null +++ b/Java-Concurrence/Java-Thread/out/production/Java-Thread/com/goki/threadNumber/readme.md @@ -0,0 +1,16 @@ +##Bài tập + Thread1 -> sinh ngẫu nhiên 1 số tự nhiên từ 1-100 + Thread2 -> hiển thị bình phương số đã được sinh ra từ Thread1 + Yêu cầu: + 1. Tạo 2 thread thực hiện yêu cầu trên + 2. Đồng bộ luồng + Thread1 thực hiện -> random T1 đợi T2 -> hiển thị bình phương số random -> in ra màn hình -> T2 wait -> T1 chạy -> vòng tròn lặp lại như trên. + + 3. Sinh ngẫu nhiên 10 số -> stop 2 luồng. + +##Phân tích code + + + +##Giải thích + diff --git a/Java-Concurrence/Java-Thread/readme.md b/Java-Concurrence/Java-Thread/readme.md new file mode 100644 index 0000000..c134c2d --- /dev/null +++ b/Java-Concurrence/Java-Thread/readme.md @@ -0,0 +1,273 @@ +## Local Project: + +[Local project](E:\1_CODING\LearnJava\Java-Pre\Java-Concurrence\Java-Thread) + +## Reference Document: + +[1] [Multi-Thread:](https://gpcoder.com/category/java-core/multi-thread/page/2/) + + +## Nội dung bài học: + + +### Lập trình đa luồng trong Java (Java Multi-threading) + +1 Giới thiệu + +1.1 Thread là gì? Multi-thread là gì? + +1.2 Đa nhiệm (multitasking) + +1.3 Ưu điểm của đa luồng + +1.4 Nhược điểm của đa luồng + +2 Vòng đời (các trạng thái) của một Thread trong java + +3 Cách tạo luồng trong Java + +3.1 Tạo luồng bằng cách extend từ lớp Thread + +3.2 Tạo luồng bằng cách implement từ Interface Runnable + +3.3 Khi nào implements từ interface Runnable? + +3.4 Ví dụ minh họa sử dụng đa luồng + +3.4.1 Ví dụ Tạo luồng bằng cách extend từ class Thread + +3.4.2 Ví dụ Tạo luồng bằng cách implement từ Interface Runnable + +4 Các phương thức của lớp Thread thường hay sử dụng + ++ suspend() + + ++ resume() + + ++ stop() + ++ destroy() + ++ isAlive() + ++ yeild() + ++ sleep(long) + ++ join() + ++ join(long) + ++ getName(); + ++ setName(String threadName): Thay đổi tên của Thread + ++ getId(): Trả về id của thread + ++ getState(): Trả về trạng thái của thread + ++ currentThread(): trả về tham chiếu của Thread đang được thi hành. + ++ getPriority(): Trả về mức độ ưu tiên của Thread + ++ setPriority(int): Thay đổi mức độ ưu tiên của Thread + ++ isDaemon(): Kiểm tra nếu thread là một luồng Daemon + ++ setDaemon(boolean): xác định thread là một luồng Deamon hay không? + ++ interrupt():làm gián đoạn một luồng trong java. + ++ isInterrupted(): kiểm tra nếu thread đã bị ngắt + ++ isterrupted(): kiểm tra nếu thread hiện tại đã bị ngắt. + + +5 Một số thông tin liên quan đến luồng + +5.1 Định danh của luồng (ThreadId) + +5.2 Tên của luồng (ThreadName) + +5.3 Độ ưu tiên của luồng (Priority) + ++ Cách đặt độ ưu tiên: setPriority(int newPriority) + +MIN_PRIORITY + +NORM_PRIORITY + +MAX_PRIORITY + ++ Cách lấy độ ưu tiên: + +5.4 Ví dụ minh họa + +6 Sử dụng phương thức sleep() + +Mục đích chính: Để tạm ngừng một thread cho một khoảng thời gian nhất định. + + +7 Sử dụng join() và join(long) + +join() + + +8 Xử lý ngoại lệ cho Thread + +### Luồng Daemon (Daemon Thread) trong Java + +1 Luồng Daemon (Daemon Thread) là gì? + +Normal Thread, Daemon Thread + +-> Khác nhau ở cách thức ngừng hoạt động. + +2 Luồng Daemon thường dùng làm gì? + +3 Ví dụ minh họa + +3.1 Tạo một luồng WorkingThread + +3.2 Chương trình Non-Daemon Thread + +3.3 Chương trình Daemon Thread + +### Đồng bộ hóa các luồng trong Java + +1 Đối tượng khóa + +2 Đồng bộ là gì? Tại sao lại cần đồng bộ? + +2.1 Tại sao cần đồng bộ? + +2.2 Đồng bộ hóa là gì? + +synchronized -> việc sắp xếp thứ tự các luồng khi truy xuất vào + +cùng đối tượng sao cho không có xung đột dữ liệu. + +3 Java monitor là gì? Cách hoạt động của java monitor? + +3.1 Java monitor là gì ? + +JVM Monitor -> Java Virtual Machine. + +Công cụ giám sát hỗ trợ cho việc đồng bộ hóa các luồng. + + +3.2 Cách hoạt động của java monitor + ++ Dành được monitor - accquiring the monitor + ++ Chiếm giữ monitor - owning the monitor + ++ trả monitor - releasing the monitor + ++ luồng thoát khỏi monitor - exiting the monitor + +Monitor Region + ++ FIFO: First In First Out + ++ LIFO: Last In First Out + + +4 Các cách để đồng bộ trong Java + +4.1 Synchronized methods + +Đặt từ khóa: synchronized với method + + +4.2 Synchronized statements/ Synchronized Block + + +4.3 Static synchronized method + + +5 So sánh các cách synchronized + +6 Phương thức wait(), notify(), notifyall() + +6.1 wait() + +6.2 notify() và notifyall() + +6.3 Ví dụ minh họa + +7 Deadlock (Khoá chết) là gì? + +hay khóa chết, xảy ra khi 2 tiến trình đợi nhau hoàn thành, trước khi chạ. + + + +8 Tại sao không nên dùng phương thức Thread.stop() + + +9 Tại sao không nên dùng phương thức Thread.suspend(), Thread.resume() + + +10 Tại sao không nên dùng phương thức Thread.Destroy()? + +### Hướng dẫn tạo và sử dụng ThreadPool trong Java + +1 Giới thiệu ThreadPool + +BlockingQueue -> một hàng đợi + Mục đích: chờ đợi một Thread có sẵn. + + java.util.concurrent. + + 2 Executor là gì? + Java Concurrency API + Executor: + ExecutorService: + SecheduledExecutorService + schedule(), scheduleAtFixedRate(), scheduleWithFixedDelay(). + + 3 Các ví dụ minh họa tạo và sử dụng ThreadPool + 3.1 Tạo WorkerThread + 3.2 Ví dụ sử dụng newSingleThreadExecutor() + 3.3 Ví dụ sử dụng newFixedThreadPool() + 3.4 Sử dụng newCachedThreadPool() + 3.5 Sử dụng newScheduledThreadPool() + 4 Custom Thread Pool Executor + 4.1 Ví dụ minh họa + 5 Một vài lưu ý về sử dụng ExecutorService + +### Lập trình đa luồng với Callable và Future trong Java + 1 Callable + 2 Future + 3 Ví dụ sử dụng Callable và Future + 3.1 Sử dụng phương thức submit(Callable) của ExecutorService với kiểu trả về là 1 Future + 3.2 Sử dụng phương thức get() của Future với Timeout + 3.3 Sử dụng phương thức invokeAny(Collection extends Callable tasks) + 3.4 Sử dụng phương thức invokeAll(Collection extends Callable tasks) + 3.5 Hủy bỏ một Future + + +### + 1 CompletableFuture là gì? + 2 So sánh Future vs CompletableFuture + 3 CompletionStage là gì? + 4 Khởi tạo CompletableFuture + 4.1 Khởi tạo CompletableFuture + 4.2 Chạy bất đồng bộ với runAsync() và không cần kết quả trả về + 4.3 Chạy bất đồng bộ với supplyAsync() và cần nhận kết quả trả về + 5 Chuyển đổi và thao tác trên một CompletableFuture + 5.1 Sử dụng thenApply() + 5.2 Sử dụng thenAccept() và thenRun() + 6 Kết hợp hai CompletableFutures với nhau + 6.1 Kết hợp hai Future phụ thuộc sử dụng thenCompose() + 6.2 Kết hợp hai Future độc lập bằng cách sử dụng thenCombine() + 7 Kết hợp nhiều CompletableFutures với nhau + 7.1 Sử dụng CompletableFuture.allOf() + 7.2 Sử dụng CompletableFuture.anyOf() + 8 Hủy bỏ CompletableFuture như thế nào? + 9 Sử dụng Executor với CompletableFuture + 10 Xử lý ngoại lệ CompletableFuture + 10.1 Sử dụng phương thức callback exceptionally() + 10.2 Sử dụng phương thức xử lý ngoại lệ chung handle() + 10.3 Sử dụng phương thức xử lý ngoại lệ chung whenComplete() \ No newline at end of file diff --git a/Java-Concurrence/Java-Thread/src/com/goki/MainThread.java b/Java-Concurrence/Java-Thread/src/com/goki/MainThread.java new file mode 100644 index 0000000..75c2e8e --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/MainThread.java @@ -0,0 +1,46 @@ +package com.goki; + +/** + * Khi này các thread đang chạy một cách lung tung, không theo thứ tự + * Khả năng nên cần một kiểu đồng bộ luồng trong Java + * @author ManhKM on 4/11/2022 + * @project Java-Thread + */ +public class MainThread { + public static void main(String[] args) { + + /** + * Thread 1: + * Cách 1: Tạo bằng cách new Từ chính Runnable() + */ + Thread thread1 = new Thread(new Runnable() { + private String threadName = "Thread-1"; + @Override + public void run() { + for (int i = 0; i < 10; i++){ + System.out.println(this.threadName + " >>> " + i); + } + } + }); + thread1.start(); + + /** + * Thread 2: + * Tạo bằng cách Extend từ chính Thread. + */ + Thread thread2 = new Thread2("Thread-2"); + thread2.start(); + + /** + * Thread 3: + * Bằng cách triển khai rõ ràng hơn với việc so với cách 1. + */ + Thread3 r = new Thread3("Thread-3"); + Thread thread3 = new Thread(r); + thread3.start(); + + for (int i = 0; i < 10; i++){ + System.out.println("Thread main >>> " + i); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/Thread2.java b/Java-Concurrence/Java-Thread/src/com/goki/Thread2.java new file mode 100644 index 0000000..452110c --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/Thread2.java @@ -0,0 +1,21 @@ +package com.goki; + +/** + * @author ManhKM on 4/11/2022 + * @project Java-Thread + */ +public class Thread2 extends Thread{ + + private String threadName; + + public Thread2(String threadName){ + this.threadName = threadName; + } + + @Override + public void run() { + for (int i = 0; i < 10; i++){ + System.out.println(this.threadName + " >>> " + i); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/Thread3.java b/Java-Concurrence/Java-Thread/src/com/goki/Thread3.java new file mode 100644 index 0000000..610939e --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/Thread3.java @@ -0,0 +1,22 @@ +package com.goki; + +/** + * @author ManhKM on 4/11/2022 + * @project Java-Thread + */ +public class Thread3 implements Runnable{ + + private String threadName; + + public Thread3(String threadName){ + this.threadName = threadName; + } + + + @Override + public void run() { + for (int i = 0; i < 10; i++){ + System.out.println(this.threadName + " >>> " + i); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/baitap2/baitap1.md b/Java-Concurrence/Java-Thread/src/com/goki/baitap2/baitap1.md new file mode 100644 index 0000000..c975d45 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/baitap2/baitap1.md @@ -0,0 +1,25 @@ + +# Synchronized 2 Thread - Bài tập mảng tên + địa chỉ - Java nâng cao + +# Bài 1: + +Cho một danh sách là họ tên các sinh viên + +Ví dụ: {“Nguyen Ngoc Lan”,”Duong Tien Nam”,”Ngo Anh Quan”,”Pham Van Duc”,”Tran Thi Ha”} + +Một danh sách khác là quê tương ứng của các sinh viên trên: + +Ví dụ: {“Hải Phòng”,”Hà Nội”,”Thái Nguyên”,”Hà Tĩnh”,”Quảng Ninh”} + +Viết 1 ứng dụng Java sử dụng Thread để thực hiện công việc: + +- Thread thứ nhất sau mỗi giây sẽ hiển thị tên 1 người tương ứng trong danh sách tên + +- Thread thứ hai ngay sau đó sẽ hiển thị quê tương ứng của người đó + +- Hai Thread thực hiện mỗi thread 5 lần sẽ dừng lại + +Phải đảm bảo rằng Thread1 luôn được chạy trước rồi mới đến Thread2 + +# Reference document +* [Bài tập mảng tên + địa chỉ](https://gokisoft.com/bai-tap-on-luyen-tong-hop-file-multithread-trong-java.html) diff --git a/Java-Concurrence/Java-Thread/src/com/goki/baitap2/baitap2.md b/Java-Concurrence/Java-Thread/src/com/goki/baitap2/baitap2.md new file mode 100644 index 0000000..55fb328 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/baitap2/baitap2.md @@ -0,0 +1,9 @@ +## Bài tập + Tạo lớp Thread1 kế thừa Thread gồm các thuộc tính ArrayList list 1 + - Thread này thực hiện sau 1s sinh ngẫu nhiên các số tự nhiên chạy từ 0-100 -> lưu kết quả vào mảng list 1 + Tạo lớp Thread2 kế thừa Thread gồm các thuộc tính ArrayList list2 . + - Thread này thực hiện sau 2s thì sinh ngẫu nhiên các ký tự từ a-z và lưu vào mảng list2 + Trong phương thức main của lớp Test tạo ra 2 thread t1 và t2 lần lượt từ Thread1 và Thread2 + Khi t1 đã sinh 10 lần -> thực hiện dừng t1 + Khi t2 đã sinh được 10 kí tự thì stop t2 + Sau khi 2 thread 1 và 2 kết thúc. Thực hiện in kết quả của các thread trên thread main. \ No newline at end of file diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java-advanced.txt b/Java-Concurrence/Java-Thread/src/com/goki/java-advanced.txt new file mode 100644 index 0000000..289b704 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java-advanced.txt @@ -0,0 +1,84 @@ +https://gokisoft.com/java-advanced.htm + ++ Tài liệu học + + ++ Exception & Collection + Overview Exception + Exception + ArrayIndexOutofBoundsException + + Debug sẽ kiểm soát mọi lỗi của chương trình này. + 11102002 + + Luồng, đa luồng thì dễ + Đồng bộ luồng và deal lock thì khá khó. + + StringBuilder và StringBuffer + StringBuiler -> bản chất -> nó sẽ tạo ra mảng và add phần tử vào. + -> append giá trị mới vào. + ??? Phân biệt String, StringBuiler, StringBuffer + + + Sử dụng Reguler Pattern + Pattern.compile + + + + ++ File + + ++ Thread + Phân tích quản lý ứng dụng trong HDH - Phân tích Game đa luồng Java + Phần 13: Phân tích quản lý ứng dụng HDH (Window, Mac, Linux) - Phân tích game đa luồng Java + + CPU 4x4 là gì? + Tại một thời điểm xử lý được 4 dòng lệnh. + 1s CPU thực hiện hàng triệu lệnh -> tốc độ quá nhanh -> tạo cảm giác nhanh -> đa luồng. + Giải thuật: Round Robin + + Xây dựng một dự án đa luồng. + + 3 cách tạo ra luồng -> bản chất sẽ có một luồng main class. + + Các hàm trong một Thread -> để biết cách làm việc rõ hơn. + Các trạng thái khác nhau của một luồng. + Tham khảo: + https://viblo.asia/p/vong-doi-va-trang-thai-cua-thread-bJzKmVWwZ9N + https://gokisoft.com/share-code-thread-trong-java--thread-sleep--join-trong-java.html + + Thread.sleep + getName -> lấy tên của luồng. + + Bài toán về sử lý đồng bộ + đặt logic trong khối synchronized + + + + + + Tìm hiểu Thread - Đồng bộ Thread - lập trình java nâng cao - Bổ sung thêm lớp mới + + Luồng nó hoàn toàn chạy độc lập -> không phụ thuộc vào luồng trước hay sau nó. + + Nếu có cả Thread1, Thread2 -> nó sẽ in cả kết quả của 1,2 song song với nhau. + + Vòng tròn RR -> in đến luồng nào thì in cái đó ra. + + Làm thế nào để nối các luồng với nhau + Thread1 -> sau khi chạy đến điểm nào đó -> nối vào Thread2 -> join + Nếu không nối thì chúng vẫn chạy với nhau một cách song song. + + + Đặt thread vào trong Thread khác. + Nối thread1 vào thread2 + Nếu không xử lý luồng thì có thể thực hiện các thao tác khác dẫn đến chương trình bị lỗi, treo. + + + wait, notify, notifyAll + + + Giải thích Synchronized + lập trình java nâng cao + Thread thực hiện in ngẫu nhiên các số nguyên và ký tự - phần 1 + Thread thực hiện in ngẫu nhiên các số nguyên và ký tự + Đồng bộ thread + wait notify + synchronized + Java nâng cao - phần 2 + Synchronized 2 Thread - Bài tập mảng tên + địa chỉ - Java nâng cao + Bài tập ôn luyện tổng hợp file, OOP, Thread trong Java + Sử dụng MultiThreading sinh ký tự a-zA-Z trong Java + + ++ CSDL + + ++ Ôn tập Tổng quát & Exmination + diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/Main.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/Main.java new file mode 100644 index 0000000..5bfad1c --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/Main.java @@ -0,0 +1,76 @@ +package com.goki.java2.thread.lession4; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + * ----- + * Thực hiện khởi tạo Thread thông qua việc new trực tiếp một Thread + */ +public class Main { + /** + * Thread main => luồng chính => khởi tạo đầu tiên khi app chạy + */ + public static void main(String[] args) { + + Thread t1 = new Thread(new Runnable() { + @Override + public void run() { + for (int i = 0; i < 10; i++){ + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, e); + } + System.out.println("T1 >> " + i); + } + } + }); + + t1.start(); + /** + * Tại thời điểm này có 2 thread đang chạy: + * Thread t1 và Thread main + */ + + /** + * Tạo Thread theo cách 2: + * Sử dụng sự kế thừa của các class: ThreadTwo >> Thread + */ + Thread t2 = new ThreadTwo("T2"); + t2.start(); + + try { + t2.join(); + /** + * Tại thời điểm này có 3 thread >> T1, T2 và main thread + */ + } catch (InterruptedException e) { + Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, e); + } + + /** + * Tạo Thread theo cách 3: + * Tạo trực tiếp thông qua Object Thread3, sau đó đưa vào trong constructor của Thread. + * Runnable >> ThreadThree + */ + ThreadThree r = new ThreadThree("T3"); + Thread t3 = new Thread(r); + t3.start(); + + for (int i = 0; i < 15; i++){ + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, e); + } + System.out.println("T1 >> isAlive >> " + t1.isAlive()); + System.out.println("T2 >> isAlive >> " + t2.isAlive()); + System.out.println("T3 >> isAlive >> " + t3.isAlive()); + System.out.println("Main thread >> " + i); + } + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/MainBank.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/MainBank.java new file mode 100644 index 0000000..660f607 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/MainBank.java @@ -0,0 +1,22 @@ +package com.goki.java2.thread.lession4; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + */ +public class MainBank { + public static MyBank tpBank = new MyBank(2000); + + public static void main(String[] args) { + + WithDrawThread t1 = new WithDrawThread(tpBank, "Rut lan 1"); + t1.start(); + + WithDrawThread t2 = new WithDrawThread(tpBank, "Rut lan 2"); + t2.start(); + + WithDrawThread t3 = new WithDrawThread(tpBank, "Rut lan 3"); + t3.start(); + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/MyBank.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/MyBank.java new file mode 100644 index 0000000..daf8787 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/MyBank.java @@ -0,0 +1,45 @@ +package com.goki.java2.thread.lession4; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + * ----- + * Thực hiện khởi tạo đối tượng MyBank và phương thức withDraw (rút tiền) + * Với số tiền truyền vào + tên của tiến trình thực hiện rút tiền. + */ +public class MyBank { + private int money; + + public MyBank(int money) { + this.money = money; + } + + public MyBank() { + } + + public int getMoney() { + return money; + } + + public void setMoney(int money) { + this.money = money; + } + + @Override + public String toString() { + return "MyBank{" + + "money=" + money + + '}'; + } + + // synchronized + public synchronized void withDraw(int money, String threadName){ + if(money <= this.money){ + System.out.println("So tien rut: " + money + ", Thread: " + threadName); + this.money -= money; + } else { + System.out.println("So tien rut vuot qua so tien hien tai," + ", Thread: " + threadName); + } + System.out.println("So tien hien tai: " + this.money); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/SharedData.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/SharedData.java new file mode 100644 index 0000000..5b92c4a --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/SharedData.java @@ -0,0 +1,21 @@ +package com.goki.java2.thread.lession4; + +/** + * @author ManhKM on 7/3/2022 + * @project Java-Thread + * ----- + * Thực hiện việc lưu trữ dữ liệu chia sẻ giữa các luồng trong chương trình. + */ +public class SharedData { + int rad; + + public SharedData(){} + + public int getRad() { + return rad; + } + + public void setRad(int rad) { + this.rad = rad; + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/Test2.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/Test2.java new file mode 100644 index 0000000..ff967f6 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/Test2.java @@ -0,0 +1,31 @@ +package com.goki.java2.thread.lession4; + +/** + * @author ManhKM on 7/3/2022 + * @project Java-Thread + * ----- + * Thực hiện yêu cầu tạo một Thread sinh số ngẫu nhiên > hiển thị ra ngoài màn hình + * Thực hiện yêu cầu bình phương của số ngẫu nhiên đó lên và hiển thị ra ngoài màn hình + * Thực hiện khởi chạy 2 luồng này. + * + * ----- + * Tại sao khi chạy xong 10 lần mà chương trình vẫn chưa dừng lại, nó đang pending ở đâu + * + */ +public class Test2 { + public static void main(String[] args) { + SharedData sharedData = new SharedData(); + System.out.println("Thực hiện khởi tạo một vùng chia sẻ dữ liệu: " + sharedData); + + ThreadRandom threadRandom = new ThreadRandom(sharedData); + System.out.println("Thực hiện khởi tạo ThreadRandom: " + threadRandom); + + ThreadSquare threadSquare = new ThreadSquare(sharedData); + System.out.println("Thực hiện khởi tạo ThreadSquare: " + threadSquare); + + System.out.println("Thực hiện khởi chạy 2 threadRandom và threadSquare: "); + threadRandom.start(); + threadSquare.start(); + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadRandom.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadRandom.java new file mode 100644 index 0000000..1458a08 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadRandom.java @@ -0,0 +1,57 @@ +package com.goki.java2.thread.lession4; + + +import java.util.Random; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * @author ManhKM on 7/3/2022 + * @project Java-Thread + * ----- + * Thực hiện khai báo một luồng sinh ngẫu nhiên + */ +public class ThreadRandom extends Thread{ + SharedData sharedData; + + public ThreadRandom(SharedData sharedData){ + this.sharedData = sharedData; + } + + @Override + public void run() { + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + Random random = new Random(); + /** + * Sinh dữ liệu sau 10 lần thì dừng lại + * Từ khóa: synchronized đặt cho biến chia sẻ. + * Đánh thức dựa vào biến chung + * Syncho trên chính Object đó + */ + for (int i = 0; i < 10; i++){ + System.out.println(">> T1: " + i); + synchronized (sharedData){ + int rad = random.nextInt(100) + 1; // random: 1 -> 99 + sharedData.setRad(rad); + System.out.println(" >> Random value: " + sharedData.getRad()); + /** + * Triển khai thêm, sau khi sinh xong thì đưa về trạng thái wait và đánh thức T2 để cho nó chạy + */ + sharedData.notifyAll(); // Đánh thức nó dậy + try { + sharedData.wait(); + } catch (InterruptedException e) { + Logger.getLogger(ThreadRandom.class.getName()).log(Level.SEVERE, null, e); + } + } + } + // stop: + synchronized (sharedData){ + sharedData.notifyAll(); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadSquare.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadSquare.java new file mode 100644 index 0000000..5583fd7 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadSquare.java @@ -0,0 +1,45 @@ +package com.goki.java2.thread.lession4; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * @author ManhKM on 7/3/2022 + * @project Java-Thread + * ----- + * Hàm sinh số bình phương + */ +public class ThreadSquare extends Thread{ + SharedData sharedData; + + public ThreadSquare(SharedData sharedData) { + this.sharedData = sharedData; + } + + @Override + public void run() { + /** + * Cũng phải loop 10 lần + * ---- Đồng bộ luồng với biến được chia sẻ + */ + for (int i = 0; i < 10; i++){ + System.out.println(">> T2: " + i); + synchronized (sharedData){ + try { + sharedData.notifyAll(); // Đánh thức các tiến trình khác + sharedData.wait(); // Đợi cho đến khi đánh thức + + } catch (InterruptedException e) { + Logger.getLogger(ThreadSquare.class.getName()).log(Level.SEVERE, null, e); + } + int rad = sharedData.getRad(); + rad *= rad; + System.out.println(" >> PT: " + rad); + } + } + // stop: + synchronized (sharedData){ + sharedData.notifyAll(); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadThree.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadThree.java new file mode 100644 index 0000000..cb4ce44 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadThree.java @@ -0,0 +1,34 @@ +package com.goki.java2.thread.lession4; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + * ----- + * Thực hiện logic in ra màn hình giá trị từ 0 đến 9 + * Mỗi lần in cách nhau 1s + * + * Cách 1: khởi tạo Thread thông qua việc implement Interface Runnable + */ +public class ThreadThree implements Runnable{ + + private String name; + + @Override + public void run() { + for (int i = 0; i < 10; i++){ + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + Logger.getLogger(ThreadThree.class.getName()).log(Level.SEVERE, null, e); + } + System.out.println(this.name + " >> " + i); + } + } + + public ThreadThree(String name){ + this.name = name; + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadTwo.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadTwo.java new file mode 100644 index 0000000..a30d464 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/ThreadTwo.java @@ -0,0 +1,30 @@ +package com.goki.java2.thread.lession4; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + * ----- + * + */ +public class ThreadTwo extends Thread{ + private String name; + + public ThreadTwo(String name){ + this.name = name; + } + + @Override + public void run() { + for (int i = 0; i < 10; i++){ + System.out.println(this.name + " >> " + i + " >> " + isAlive()); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + Logger.getLogger(ThreadTwo.class.getName()).log(Level.SEVERE, null, e); + } + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/WithDrawThread.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/WithDrawThread.java new file mode 100644 index 0000000..e8b38ae --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession4/WithDrawThread.java @@ -0,0 +1,21 @@ +package com.goki.java2.thread.lession4; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + */ +public class WithDrawThread extends Thread{ + private String name; + + private MyBank myBank; + + public WithDrawThread(MyBank myBank, String name){ + this.myBank = myBank; + this.name = name; + } + + @Override + public void run() { + this.myBank.withDraw(800, this.name); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession5/CustomThread.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession5/CustomThread.java new file mode 100644 index 0000000..259bf2a --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession5/CustomThread.java @@ -0,0 +1,39 @@ +package com.goki.java2.thread.lession5; + +import java.util.Random; + +/** + * @author ManhKM on 7/2/2022 + * @project Java-Thread + */ +public class CustomThread extends Thread{ + SharedData data; + String nameThread; + + public CustomThread(SharedData sharedData, String nameThread){ + this.data = sharedData; + this.nameThread = nameThread; + } + + /** + * Thực hiện mỗi lần chạy sẽ tự động thêm vào dữ liêu của ShareData một giá trị nhất định. + * Giá trị này được sinh ngẫu nhiên theo hàm Random + */ + @Override + public void run() { + Random random = new Random(); + + for (int i = 0; i < 10; i++){ + int rad = random.nextInt(5) + 1; + data.add(rad); + } + } + + @Override + public String toString() { + return "CustomThread{" + + "data=" + data + + ", nameThread='" + nameThread + '\'' + + '}'; + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession5/Main.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession5/Main.java new file mode 100644 index 0000000..f19a4b4 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession5/Main.java @@ -0,0 +1,22 @@ +package com.goki.java2.thread.lession5; + +/** + * @author ManhKM on 7/2/2022 + * @project Java-Thread + */ +public class Main { + public static void main(String[] args) { + SharedData sharedData = new SharedData(); + CustomThread t1 = new CustomThread(sharedData, "Thread1"); + CustomThread t2 = new CustomThread(sharedData, "Thread2"); + CustomThread t3 = new CustomThread(sharedData, "Thread3"); + CustomThread t4 = new CustomThread(sharedData, "Thread4"); + CustomThread t5 = new CustomThread(sharedData, "Thread5"); + + t1.start(); + t2.start(); + t3.start(); + t4.start(); + t5.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession5/SharedData.java b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession5/SharedData.java new file mode 100644 index 0000000..f1005bc --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/lession5/SharedData.java @@ -0,0 +1,21 @@ +package com.goki.java2.thread.lession5; + +/** + * @author ManhKM on 7/2/2022 + * @project Java-Thread + */ +public class SharedData { + public int x = 0; + + /** + * Logic in ra toàn bộ các số từ giá trị 0 cho đến x. + * Dải số được in ra ngoài màn hình + */ + public synchronized void add(int data){ + x += data; + System.out.println("\nday so x: " + x); + for (int i = 0; i < x; i++){ + System.out.print(" " + i); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/readmd.md b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/readmd.md new file mode 100644 index 0000000..cf7f63a --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/java2/thread/readmd.md @@ -0,0 +1,40 @@ + +## Đa luồng + - Khái niệm đa luồng là gì + - Triển khai code đa luồng + - Đồng bộ Thread + - Tại sao chúng ta cần đồng bộ luồng + -> An toàn dữ liệu + - Synchronized + -> Đồng bộ lên chính một phương thức nào đó + + - wait/notify + + - Deadlock + +## Synchronized + - wait, notify, notifyAll + - Dùng kết hợp với 3 cái trên: + wait -> đưa luồng về trạng thái dừng + notify, notifyAll -> đánh thức chúng dậy và cho chúng chạy. + + Bài tập + - T1 >> sinh ngẫu nhiên 1 số tự nhiên từ 1 - 100 + - T2 >> hiển thị bình phương số đã được sinh từ T1 + 1. Tạo 2 thread thực hiện yêu cầu trên + 2. Đồng bộ luồng + T1 Thực hiện > rad > T1 đợi T2 > hiển thị bình phương số rad > in ra màn hình + > T2 wait > T1 chạy > vòng tròn như trên + 3. Sinh ngẫu nhiên 10 số > stop 2 luồng + + Phân tích: + T1 > sinh ra số và phải có nơi lưu trữ + T2 > lấy rad => thực hiện logic hiển thị. + + Nên tạo ra một phần data để quản lý dữ liệu của DataMrg của T1 và T2 + + +## Reference Document: +[Java Concurrency - Java 8](https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html) + +[Java Advanced - Java 8](https://gokisoft.com/java-advanced.htm) \ No newline at end of file diff --git a/Java-Concurrence/Java-Thread/src/com/goki/mainthread/ChildThread.java b/Java-Concurrence/Java-Thread/src/com/goki/mainthread/ChildThread.java new file mode 100644 index 0000000..f16d688 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/mainthread/ChildThread.java @@ -0,0 +1,14 @@ +package com.goki.mainthread; + +/** + * @author ManhKM on 5/16/2022 + * @project Java-Thread + */ +public class ChildThread extends Thread{ + @Override + public void run() { + for (int i = 0; i < 5; i++) { + System.out.println("Child thread"); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/mainthread/MainThreadDemo.java b/Java-Concurrence/Java-Thread/src/com/goki/mainthread/MainThreadDemo.java new file mode 100644 index 0000000..eedd69c --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/mainthread/MainThreadDemo.java @@ -0,0 +1,33 @@ +package com.goki.mainthread; + +/** + * @author ManhKM on 5/16/2022 + * @project Java-Thread + */ +public class MainThreadDemo extends Thread{ + public static void main(String[] args) { + // getting reference to Main thread + Thread t = Thread.currentThread(); + // getting name of Main thread + System.out.println("Current thread: " + t.getName()); + // doi ten thread + t.setName("Shareprogramming.net"); + System.out.println("After name change: " + t.getName()); + // Kiem tra do uu tien cua main thread + System.out.println("Main thread priority: "+ t.getPriority()); + + // thay doi gia tri do uu tien cua main thread + t.setPriority(MAX_PRIORITY); + System.out.println("Main thread new priority: "+ t.getPriority()); + for (int i = 0; i < 5; i++) { + System.out.println("Main thread"); + } + + // Khoi tao childthread con cua main thread + ChildThread ct = new ChildThread(); + System.out.println("Child thread priority: "+ ct.getPriority()); + ct.setPriority(MIN_PRIORITY); + System.out.println("Child thread new priority: "+ ct.getPriority()); + ct.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ShareData.java b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ShareData.java new file mode 100644 index 0000000..91d11ea --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ShareData.java @@ -0,0 +1,21 @@ +package com.goki.threadNumber; + +/** + * @author ManhKM on 4/11/2022 + * @project Java-Thread + */ +public class ShareData { + int rad; + + public ShareData(){ + + } + + public int getRan(){ + return this.rad; + } + + public void setRad(int rad){ + this.rad = rad; + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ThreadRandom.java b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ThreadRandom.java new file mode 100644 index 0000000..5d0e49b --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ThreadRandom.java @@ -0,0 +1,48 @@ +package com.goki.threadNumber; + +import java.util.Random; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Hàm thực hiện sinh giá trị ngẫu nhiên trong khoảng nào đó. + * @author ManhKM on 4/11/2022 + * @project Java-Thread + */ +public class ThreadRandom extends Thread{ + ShareData shareData; + + public ThreadRandom(ShareData shareData){ + this.shareData = shareData; + } + + /** + * Hàm run() -> thực hiện sinh các số random. + */ + @Override + public void run() { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + Logger.getLogger(ThreadRandom.class.getName()).log(Level.SEVERE, null, e); + } + + Random random = new Random(); + for (int i = 0; i < 10; i++){ + synchronized (shareData){ + int rad = random.nextInt(100) + 1; + shareData.setRad(rad); + System.out.println("Rad : " + rad); + shareData.notifyAll(); + try { + shareData.wait(); + } catch (InterruptedException e) { + Logger.getLogger(ThreadRandom.class.getName()).log(Level.SEVERE, null, e); + } + } + } + + System.out.println("T1 Stop"); + shareData.notifyAll(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ThreadSquare.java b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ThreadSquare.java new file mode 100644 index 0000000..bc43c0b --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ThreadSquare.java @@ -0,0 +1,46 @@ +package com.goki.threadNumber; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Thread thực hiện việc bình phương dữ liệu trả về từ Random. + * @author ManhKM on 4/11/2022 + * @project Java-Thread + */ +public class ThreadSquare extends Thread{ + ShareData shareData; + + public ThreadSquare(ShareData shareData){ + this.shareData = shareData; + } + + /** + * Thực hiện bình phương số đã trả về từ Random. + */ + @Override + public void run() { + for (int i = 0; i < 100; i++){ + synchronized (shareData){ + try { + shareData.notifyAll(); + shareData.wait(); + } catch (InterruptedException e) { + Logger.getLogger(ThreadSquare.class.getName()).log(Level.SEVERE, null, e); + } + int rad = shareData.getRan(); + rad *= rad; + System.out.println("PT: " + rad); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + Logger.getLogger(ThreadRandom.class.getName()).log(Level.SEVERE, null, e); + } + } + } + System.out.println("T2 Stop"); + synchronized (shareData){ + shareData.notifyAll(); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ThreadTest2.java b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ThreadTest2.java new file mode 100644 index 0000000..82b33b2 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/ThreadTest2.java @@ -0,0 +1,17 @@ +package com.goki.threadNumber; + +/** + * @author ManhKM on 4/11/2022 + * @project Java-Thread + */ +public class ThreadTest2 { + public static void main(String[] args) { + ShareData shareData = new ShareData(); + + ThreadRandom threadRandom = new ThreadRandom(shareData); + ThreadSquare threadSquare = new ThreadSquare(shareData); + + threadSquare.start(); + threadRandom.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/readme.md b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/readme.md new file mode 100644 index 0000000..653f0e6 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/goki/threadNumber/readme.md @@ -0,0 +1,16 @@ +##Bài tập + Thread1 -> sinh ngẫu nhiên 1 số tự nhiên từ 1-100 + Thread2 -> hiển thị bình phương số đã được sinh ra từ Thread1 + Yêu cầu: + 1. Tạo 2 thread thực hiện yêu cầu trên + 2. Đồng bộ luồng + Thread1 thực hiện -> random T1 đợi T2 -> hiển thị bình phương số random -> in ra màn hình -> T2 wait -> T1 chạy -> vòng tròn lặp lại như trên. + + 3. Sinh ngẫu nhiên 10 số -> stop 2 luồng. + +##Phân tích code + + + +##Giải thích + diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/ImplementRunable/RunnableSimple.java b/Java-Concurrence/Java-Thread/src/com/gpcode/ImplementRunable/RunnableSimple.java new file mode 100644 index 0000000..e4f2a07 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/ImplementRunable/RunnableSimple.java @@ -0,0 +1,12 @@ +package com.gpcode.ImplementRunable; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class RunnableSimple implements Runnable{ + @Override + public void run() { + System.out.println("Thread is running..... by ManhKM"); + } +} diff --git a/Java-ThreadPool/Java-Thread/test/RunnableSimpleMain.java b/Java-Concurrence/Java-Thread/src/com/gpcode/ImplementRunable/TestRunnableSimple.java similarity index 53% rename from Java-ThreadPool/Java-Thread/test/RunnableSimpleMain.java rename to Java-Concurrence/Java-Thread/src/com/gpcode/ImplementRunable/TestRunnableSimple.java index 5e97716..ed748d5 100644 --- a/Java-ThreadPool/Java-Thread/test/RunnableSimpleMain.java +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/ImplementRunable/TestRunnableSimple.java @@ -1,13 +1,16 @@ -import com.manhkm.simple.RunnableSimple; -import com.manhkm.simple.ThreadSimple; +package com.gpcode.ImplementRunable; /** - * @author ManhKM on 1/19/2022 + * @author ManhKM on 4/5/2022 * @project Java-Thread */ -public class RunnableSimpleMain { +public class TestRunnableSimple { public static void main(String[] args) { + + // Khởi tạo đối tượng RunnableSimple: RunnableSimple runnableSimple = new RunnableSimple(); + + // Khởi tạo thread: Thread t1 = new Thread(runnableSimple); t1.start(); } diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/completable_future/ConcurrencyWithCompletableFuture3.java b/Java-Concurrence/Java-Thread/src/com/gpcode/completable_future/ConcurrencyWithCompletableFuture3.java new file mode 100644 index 0000000..3c315c0 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/completable_future/ConcurrencyWithCompletableFuture3.java @@ -0,0 +1,81 @@ +package com.gpcode.completable_future; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * @author ManhKM on 4/9/2022 + * @project Java-Thread + */ +public class ConcurrencyWithCompletableFuture3 { + public static void main(String[] args) { + List works = new ArrayList<>(); + works.add("A"); + works.add("B"); + works.add("C"); + works.add("D"); + works.add("E"); + runMultipleAsync(works); + } + + private static void runMultipleAsync(List works) { + List>> allOfWork1Futures = new ArrayList<>(); + works.stream().forEach(work -> { + allOfWork1Futures.add(createWork1(work).thenCompose(work1Results -> { + List> allOfWork2Futures = work1Results.stream() + .map(work1Result -> createWork2(work1Result)).collect(Collectors.toList()); + CompletableFuture done = CompletableFuture + .allOf(allOfWork2Futures.toArray(new CompletableFuture[allOfWork2Futures.size()])); + return done.thenApplyAsync(v -> allOfWork2Futures.stream().map(CompletionStage::toCompletableFuture) + .map(CompletableFuture::join) // Returns the result value when complete + .collect(Collectors.toList())); + }).whenCompleteAsync((result, th) -> { + // Do something when complete + }).toCompletableFuture()); + }); + CompletableFuture done = CompletableFuture + .allOf(allOfWork1Futures.toArray(new CompletableFuture[allOfWork1Futures.size()])) + .whenComplete((result, th) -> { + // Do something when complete + }); + done.join(); // Returns the result value when complete + } + + private static CompletionStage> createWork1(String str) { + return CompletableFuture.completedFuture(str).thenApplyAsync(s -> executeWork1(s)); + } + + private static CompletionStage createWork2(String str) { + return CompletableFuture.completedFuture(str).thenAcceptAsync(s -> executeWork2(s)); + } + + private static List executeWork1(String _item) { + waitingForComplete(); + System.out.println("Work" + _item + " -> work1"); + return Arrays.asList(_item + "_item" + 1, _item + "_item" + 2); + } + + private static void executeWork2(String data) { + waitingForComplete(); + System.out.println("Work" + data + " -> work2"); + } + + private static void waitingForComplete() { + try { + TimeUnit.SECONDS.sleep(random(0, 3)); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + private static int random(int min, int max) { + Random r = new Random(); + return r.nextInt((max - min) + 1) + min; + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/daemonthread/DaemonThreadTest.java b/Java-Concurrence/Java-Thread/src/com/gpcode/daemonthread/DaemonThreadTest.java new file mode 100644 index 0000000..66842c5 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/daemonthread/DaemonThreadTest.java @@ -0,0 +1,21 @@ +package com.gpcode.daemonthread; + +/** + * Trong class: DaemonThreadTest -> MainThread + * -> Thread dt -> create MainThread. + * @author ManhKM on 4/7/2022 + * @project Java-Thread + */ +public class DaemonThreadTest { + public static void main(String[] args) throws InterruptedException { + Thread dt = new Thread(new WorkingThread(), "My Daemon Thread"); + dt.setDaemon(true); + dt.start(); + + /** + * Coding something + */ + Thread.sleep(3000); + System.out.println("-----> Finishing main program...."); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/daemonthread/NonDaemonThreadTest.java b/Java-Concurrence/Java-Thread/src/com/gpcode/daemonthread/NonDaemonThreadTest.java new file mode 100644 index 0000000..989a5a2 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/daemonthread/NonDaemonThreadTest.java @@ -0,0 +1,23 @@ +package com.gpcode.daemonthread; + +/** + * Object new WorkingThread() -> trong package daemonthread + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class NonDaemonThreadTest { + public static void main(String[] args) { + Thread dt = null; + try { + dt = new Thread(new WorkingThread(), "My Non-Daemon Thread"); + dt.start(); + + // continue program: + Thread.sleep(3000); + System.out.println("-----> Finishing main program"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/daemonthread/WorkingThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/daemonthread/WorkingThread.java new file mode 100644 index 0000000..eab20e0 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/daemonthread/WorkingThread.java @@ -0,0 +1,28 @@ +package com.gpcode.daemonthread; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class WorkingThread implements Runnable{ + + @Override + public void run() { + while(true){ + processSomething(); + } + } + + /** + * Thực hiện logic trong khi chạy tiến trình + * Sleep() -> dùng cho việc tạm dừng thread trong một khoảng thời gian. + */ + private void processSomething() { + try { + System.out.println("Processing working thread"); + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/demo/MainMonitor.java b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/MainMonitor.java new file mode 100644 index 0000000..f127bb7 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/MainMonitor.java @@ -0,0 +1,12 @@ +package com.gpcode.demo; + +/** + * @author ManhKM on 3/7/2022 + * @project Java-Thread + */ +public class MainMonitor { + public static void main(String[] args) { + MonitorConfig monitorConfig = new MonitorConfig(); + monitorConfig.run(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/demo/ManagedConfig.java b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/ManagedConfig.java new file mode 100644 index 0000000..7e8cf50 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/ManagedConfig.java @@ -0,0 +1,11 @@ +package com.gpcode.demo; + +import com.gpcode.demo.exception.ORMException; + +/** + * @author ManhKM on 3/7/2022 + * @project Java-Thread + */ +public interface ManagedConfig { + void init() throws ORMException; +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/demo/MonitorConfig.java b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/MonitorConfig.java new file mode 100644 index 0000000..0bb3eae --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/MonitorConfig.java @@ -0,0 +1,18 @@ +package com.gpcode.demo; + +/** + * @author ManhKM on 3/7/2022 + * @project Java-Thread + */ +public class MonitorConfig implements Runnable { + @Override + public void run() { + while (true) { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + } + System.out.println("## Running..."); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/demo/MonitorConfigImpl.java b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/MonitorConfigImpl.java new file mode 100644 index 0000000..2b306d4 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/MonitorConfigImpl.java @@ -0,0 +1,18 @@ +package com.gpcode.demo; + +import com.gpcode.demo.exception.ORMException; + +/** + * @author ManhKM on 3/7/2022 + * @project Java-Thread + */ +public class MonitorConfigImpl implements ManagedConfig{ + + private MonitorConfig monitorConfig; + @Override + public void init() throws ORMException { + Thread thread = new Thread(monitorConfig); + thread.setName("Thread-MonitorConfig"); + thread.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/demo/StringMain.java b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/StringMain.java new file mode 100644 index 0000000..3b419cc --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/StringMain.java @@ -0,0 +1,16 @@ +package com.gpcode.demo; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class StringMain { + public static void main(String[] args) { + showResult(9); + } + + private static void showResult(int i) { + System.out.println(Integer.toString((int) (Math.pow(10, i) - 1))); + } + +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/demo/exception/ORMException.java b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/exception/ORMException.java new file mode 100644 index 0000000..c2eb680 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/demo/exception/ORMException.java @@ -0,0 +1,26 @@ +package com.gpcode.demo.exception; + +/** + * @author ManhKM on 3/7/2022 + * @project Java-Thread + */ +public class ORMException extends Exception{ + private static final long serialVersionUID = 1L; + + public ORMException() { + super(); + } + + public ORMException(String message) { + super(message); + } + + public ORMException(String message, Throwable cause) { + super(message, cause); + } + + @Override + public String toString() { + return super.toString(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/exception/WorkingThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/exception/WorkingThread.java new file mode 100644 index 0000000..c9da5fb --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/exception/WorkingThread.java @@ -0,0 +1,33 @@ +package com.gpcode.exception; + +import java.util.Random; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class WorkingThread implements Runnable{ + + @Override + public void run() { + while (true){ + processSomething(); + } + } + + private void processSomething() { + try { + System.out.println("-----> Processing working thread"); + Thread.sleep(500); + + } catch (InterruptedException e) { + e.printStackTrace(); + } + + Random r = new Random(); + int i = r.nextInt(100); + if(i > 70){ + throw new RuntimeException("-----> Xử lý ngoại lệ trong thread"); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/exception/WorkingThreadTest.java b/Java-Concurrence/Java-Thread/src/com/gpcode/exception/WorkingThreadTest.java new file mode 100644 index 0000000..98cab9a --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/exception/WorkingThreadTest.java @@ -0,0 +1,22 @@ +package com.gpcode.exception; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class WorkingThreadTest { + public static void main(String[] args) { + System.out.println("-----> Main thread running..."); + Thread thread = new Thread(new WorkingThread()); + Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { + @Override + public void uncaughtException(Thread t, Throwable e) { + System.out.println("##Thread: " + t); + System.out.println("##Thread exception message: " + e.getMessage()); + } + }); + + thread.start(); + System.out.println("-----> Main thread end!!!"); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/executorservice/Run.java b/Java-Concurrence/Java-Thread/src/com/gpcode/executorservice/Run.java new file mode 100644 index 0000000..560ed5e --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/executorservice/Run.java @@ -0,0 +1,26 @@ +package com.gpcode.executorservice; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class Run implements Runnable{ + int id; + + public Run(int id){ + this.id = id; + } + + @Override + public void run() { + System.out.println("Tiến trình đang thực thi: " + id); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + System.out.println("Tiến trình đã được thực thi: " + id); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/executorservice/TestThreadPool.java b/Java-Concurrence/Java-Thread/src/com/gpcode/executorservice/TestThreadPool.java new file mode 100644 index 0000000..10a170a --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/executorservice/TestThreadPool.java @@ -0,0 +1,27 @@ +package com.gpcode.executorservice; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class TestThreadPool { + public static void main(String[] args) { + ExecutorService pool = Executors.newFixedThreadPool(5); + for (int i = 0; i < 10; i++){ + pool.submit(new Run(i)); + } + + + try { + pool.awaitTermination(1, TimeUnit.DAYS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + pool.shutdown(); + } +} diff --git a/Java-ThreadPool/Java-Thread/src/com/manhkm/simple/RunnableSimple.java b/Java-Concurrence/Java-Thread/src/com/gpcode/extendthread/RunnableSimple.java similarity index 86% rename from Java-ThreadPool/Java-Thread/src/com/manhkm/simple/RunnableSimple.java rename to Java-Concurrence/Java-Thread/src/com/gpcode/extendthread/RunnableSimple.java index c0e20a6..e947525 100644 --- a/Java-ThreadPool/Java-Thread/src/com/manhkm/simple/RunnableSimple.java +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/extendthread/RunnableSimple.java @@ -1,4 +1,4 @@ -package com.manhkm.simple; +package com.gpcode.extendthread; /** * @author ManhKM on 1/19/2022 diff --git a/Java-ThreadPool/Java-Thread/src/com/manhkm/simple/ThreadSimple.java b/Java-Concurrence/Java-Thread/src/com/gpcode/extendthread/ThreadSimple.java similarity index 86% rename from Java-ThreadPool/Java-Thread/src/com/manhkm/simple/ThreadSimple.java rename to Java-Concurrence/Java-Thread/src/com/gpcode/extendthread/ThreadSimple.java index 58ef622..f399be4 100644 --- a/Java-ThreadPool/Java-Thread/src/com/manhkm/simple/ThreadSimple.java +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/extendthread/ThreadSimple.java @@ -1,4 +1,4 @@ -package com.manhkm.simple; +package com.gpcode.extendthread; /** * @author ManhKM on 1/19/2022 diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/flow/RunnableDemo.java b/Java-Concurrence/Java-Thread/src/com/gpcode/flow/RunnableDemo.java new file mode 100644 index 0000000..d12a399 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/flow/RunnableDemo.java @@ -0,0 +1,45 @@ +package com.gpcode.flow; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + * ----- + * Flow của phần gọi qua Runnable cũng tương tự như với Thread thôi, không có gì cả + * Thay vì gọi qua lớp triển khai của Runnable -> thì gọi thẳng luôn vào Runnable + * Thread thì cũng từ Rannable mà ra + * Dùng Runnable -> dễ để đưa vào ThreadPool hơn nhiều -> core + */ +public class RunnableDemo implements Runnable{ + private Thread t; + private String threadName; + + RunnableDemo(String threadName){ + this.threadName = threadName; + System.out.println("Creating " + threadName); + } + + @Override + public void run() { + System.out.println("Running " + threadName); + try { + for(int i = 4; i > 0; i--){ + System.out.println("Thread: " + threadName + ", " + i); + t.sleep(50); + } + } catch (InterruptedException e) { + System.out.println("Thread " + threadName + " interrupted."); + } + System.out.println("Thread " + threadName + " exiting."); + } + + /** + * Hàm thực hiện call start(). + */ + public void start(){ + System.out.println("Starting " + threadName); + if(t == null){ + t = new Thread(this, threadName); + t.start(); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/flow/RunnableDemoTest.java b/Java-Concurrence/Java-Thread/src/com/gpcode/flow/RunnableDemoTest.java new file mode 100644 index 0000000..3d38a27 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/flow/RunnableDemoTest.java @@ -0,0 +1,20 @@ +package com.gpcode.flow; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class RunnableDemoTest { + public static void main(String[] args) { + System.out.println("Main thread running..."); + + RunnableDemo R1 = new RunnableDemo("Thread-1-HR-Database"); + R1.start(); + + RunnableDemo R2 = new RunnableDemo("Thread-2-Send-Email"); + R2.start(); + + System.out.println("Main thread stopped!!!"); + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/flow/ThreadDemo.java b/Java-Concurrence/Java-Thread/src/com/gpcode/flow/ThreadDemo.java new file mode 100644 index 0000000..58b3e03 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/flow/ThreadDemo.java @@ -0,0 +1,46 @@ +package com.gpcode.flow; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class ThreadDemo extends Thread{ + private Thread t; + private String threadName; + + public ThreadDemo(String threadName){ + this.threadName = threadName; + } + + /** + * Method run() + * Thực hiện chạy từ 4 -> 0 -> giữa mỗi lần nghỉ 50 milis giây. + */ + @Override + public void run() { + System.out.println("Running " + threadName); + try { + for (int i = 4; i > 0; i--){ + System.out.println("Thread: " + threadName + ", " + i); + t.sleep(50); + } + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("Thread " + threadName + " interrupted"); + } + System.out.println("Thread " + threadName + " exiting."); + } + + /** + * Method start() + * Nếu thread -> chưa khởi tạo | null + * + */ + public void start(){ + System.out.println("Starting " + threadName); + if(t == null){ + t = new Thread(this, threadName); + t.start(); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/flow/ThreadDemoTest.java b/Java-Concurrence/Java-Thread/src/com/gpcode/flow/ThreadDemoTest.java new file mode 100644 index 0000000..6d0f377 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/flow/ThreadDemoTest.java @@ -0,0 +1,21 @@ +package com.gpcode.flow; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class ThreadDemoTest { + public static void main(String[] args) { + System.out.println("-----> Main thread running..."); + + ThreadDemo T1 = new ThreadDemo("Thread-1-HR-Database"); + T1.start(); + + ThreadDemo T2 = new ThreadDemo("Thread-2-Send-Email"); + T2.start(); + System.out.println("-----> Main thread stopped!!!"); + + + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/info/MainWorkingThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/info/MainWorkingThread.java new file mode 100644 index 0000000..4b43501 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/info/MainWorkingThread.java @@ -0,0 +1,12 @@ +package com.gpcode.info; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class MainWorkingThread { + public static void main(String[] args) { + WorkingThread workingThread = new WorkingThread("Alarm Sync File"); + workingThread.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/info/ThreadInfoExample.java b/Java-Concurrence/Java-Thread/src/com/gpcode/info/ThreadInfoExample.java new file mode 100644 index 0000000..6999307 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/info/ThreadInfoExample.java @@ -0,0 +1,36 @@ +package com.gpcode.info; + +/** + * ThreadInfoExample: + * + QH: Kế thừa + * + QH: Đa hình -> Thread -> WorkingThread. + * Tại sao không call luôn vào run() -> mà phải thông qua start(). + * + Nó không chỉ là call mà còn phải cấp phát vùng nhớ cho thread + nhiều thứ khác... + * Phương thức Sleep(mili-second) + * + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class ThreadInfoExample { + public static void main(String[] args) { + Thread t1 = new WorkingThread("Luồng 1"); + Thread t2 = new WorkingThread("Luồng 2"); + Thread t3 = new WorkingThread("Luồng 3"); + + System.out.println("ID luồng 1: " + t1.getId()); + System.out.println("ID luồng 2: " + t2.getId()); + System.out.println("ID luồng 3: " + t3.getId()); + + t1.setPriority(Thread.MIN_PRIORITY); + t2.setPriority(Thread.NORM_PRIORITY); + t3.setPriority(Thread.MAX_PRIORITY); + + System.out.println(t1.isDaemon()); + + t1.start(); + t2.start(); + t3.start(); + + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/info/WorkingThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/info/WorkingThread.java new file mode 100644 index 0000000..dd88c1e --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/info/WorkingThread.java @@ -0,0 +1,18 @@ +package com.gpcode.info; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class WorkingThread extends Thread{ + public WorkingThread(String name){ + super(name); + } + + @Override + public void run() { + for(int i = 0; i < 5; i++){ + System.out.printf("Luồng: %s có độ ưu tiên là %d \n", getName(), getPriority()); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/join/UsingJoinMethod.java b/Java-Concurrence/Java-Thread/src/com/gpcode/join/UsingJoinMethod.java new file mode 100644 index 0000000..0e89514 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/join/UsingJoinMethod.java @@ -0,0 +1,47 @@ +package com.gpcode.join; + +/** + * Cách sử dụng của join: + * + để thông báo rằng chờ thread này hoàn thành + * rồi thread cha mới được tiếp tục chạy + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class UsingJoinMethod extends Thread{ + + public UsingJoinMethod(String name){ + super(name); + } + + /** + * Thực hiện lặp thông tin trong một Thread + */ + @Override + public void run() { + System.out.println(getName()); + for (int i = 0; i < 10; i++){ + try { + System.out.print(i + " "); + Thread.sleep(300); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + System.out.println(); + } + + public static void main(String[] args) { + UsingJoinMethod t1 = new UsingJoinMethod("Thread 1"); + UsingJoinMethod t2 = new UsingJoinMethod("Thread 2"); + + t1.start(); + try { + t1.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + t2.start(); + System.out.println("-----> Main Thread Finished"); + } + +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/join/UsingJoinMethod2.java b/Java-Concurrence/Java-Thread/src/com/gpcode/join/UsingJoinMethod2.java new file mode 100644 index 0000000..0e78182 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/join/UsingJoinMethod2.java @@ -0,0 +1,42 @@ +package com.gpcode.join; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class UsingJoinMethod2 extends Thread{ + public UsingJoinMethod2(String name){ + super(name); + } + + @Override + public void run() { + System.out.println(getName()); + for (int i = 0; i < 5; i++){ + try { + System.out.print(i + " "); + Thread.sleep(300); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + System.out.println(); + } + + public static void main(String[] args) { + UsingJoinMethod2 t1 = null; + UsingJoinMethod2 t2 = null; + + try { + t1 = new UsingJoinMethod2("Thread 1"); + t2 = new UsingJoinMethod2("Thread 2"); + t1.start(); + t1.join(450); + + t2.start(); + System.out.println("Main Thread Finished"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/random/MainRandom.java b/Java-Concurrence/Java-Thread/src/com/gpcode/random/MainRandom.java new file mode 100644 index 0000000..ced7917 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/random/MainRandom.java @@ -0,0 +1,14 @@ +package com.gpcode.random; + +import java.util.UUID; + +/** + * Kiểm tra hàm trả về ramdom .... + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class MainRandom { + public static void main(String[] args) { + System.out.println(UUID.randomUUID()); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sleep/SleepMethodExample.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sleep/SleepMethodExample.java new file mode 100644 index 0000000..a58ec9a --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sleep/SleepMethodExample.java @@ -0,0 +1,24 @@ +package com.gpcode.sleep; + +/** + * @author ManhKM on 4/5/2022 + * @project Java-Thread + */ +public class SleepMethodExample extends Thread{ + @Override + public void run() { + for(int i = 0; i < 5; i++){ + System.out.println(i); + try { + Thread.sleep(500); + } catch (InterruptedException e){ + e.printStackTrace(); + } + } + } + + public static void main(String[] args) { + SleepMethodExample t1 = new SleepMethodExample(); + t1.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/ShareMemory.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/ShareMemory.java new file mode 100644 index 0000000..efab694 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/ShareMemory.java @@ -0,0 +1,13 @@ +package com.gpcode.sync; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class ShareMemory { + public synchronized void printData(String threadName){ + for (int i = 1; i <= 5; i++){ + System.out.println(threadName + ": " + i); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/SharedMemoryTest.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/SharedMemoryTest.java new file mode 100644 index 0000000..2c4b826 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/SharedMemoryTest.java @@ -0,0 +1,21 @@ +package com.gpcode.sync; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class SharedMemoryTest { + public static void main(String[] args) { + ShareMemory sm = new ShareMemory(); + + WorkingThread thread1 = new WorkingThread(sm, "Thread1"); + WorkingThread thread2 = new WorkingThread(sm, "Thread2"); + WorkingThread thread3 = new WorkingThread(sm, "Thread3"); + WorkingThread thread4 = new WorkingThread(sm, "Thread4"); + + thread1.start(); + thread2.start(); + thread3.start(); + thread4.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/SynchronizationExample.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/SynchronizationExample.java new file mode 100644 index 0000000..1348984 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/SynchronizationExample.java @@ -0,0 +1,37 @@ +package com.gpcode.sync; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class SynchronizationExample { + private static SynchronizationExample instance; + + /** + * Synchronized Method: None-static method + */ + public synchronized void lockedByThis(){ + System.out.println(" This synchronized method is locked by current, " + + "instance of object, i.e..this"); + } + + public static synchronized SynchronizationExample lockedByClassLock(){ + System.out.println("This static synchronized method is locked by class level lock"); + if(instance == null){ + instance = new SynchronizationExample(); + } + return instance; + } + + public static synchronized SynchronizationExample lockedBySynchronizedBlock(){ + System.out.println("This line is executed without locking"); + if (instance == null){ + synchronized (instance){ + if(instance == null){ + instance = new SynchronizationExample(); + } + } + } + return instance; + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/WorkingThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/WorkingThread.java new file mode 100644 index 0000000..888d1a6 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/WorkingThread.java @@ -0,0 +1,21 @@ +package com.gpcode.sync; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class WorkingThread extends Thread{ + private ShareMemory mShareMemory; + private String mThreadName; + + // Constructor: + public WorkingThread(ShareMemory sm, String threadName){ + this.mShareMemory = sm; + this.mThreadName = threadName; + } + + @Override + public void run() { + mShareMemory.printData(mThreadName); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/atm/Customer.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/atm/Customer.java new file mode 100644 index 0000000..63ce630 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/atm/Customer.java @@ -0,0 +1,46 @@ +package com.gpcode.sync.atm; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class Customer { + private int balance = 1000; + + public Customer(){ + System.out.println("Tài khoản của bạn là: " + balance); + } + + /** + * Phương thức thực hiện hành vi rút tiền. + * Nếu số tiền trong tài khoản không đủ thì sẽ không được rút. + * nó sẽ bị waiting -> cho đến khi thỏa mãn điều kiện rút. + * @param amount + */ + public synchronized void withdraw(int amount){ + System.out.println("Đang thực hiện giao dịch rút tiền" + amount + "..."); + while (balance < amount){ + System.out.println("Không đủ tiền rút!!!"); + try { + wait(); + } catch (InterruptedException e){ + System.out.println(e.toString()); + } + } + balance = balance - amount; + System.out.println("Rút tiền thành công. Tài khoản của bạn hiện tại là: " + balance); + } + + /** + * Thực hiện method nạp tiền vào trong tài khoản hiện tại. + * Khi đã nạp tiền -> nó sẽ thông báo đến cho toàn bộ các tiến trình + * Đang trong trường hợp đợi để thực hiên logic + * @param amount + */ + public synchronized void deposit(int amount){ + System.out.println("Đang thực hiện giao dịch nạp tiền: " + amount +"..."); + balance = balance + amount; + System.out.println("Nạp tiền thành công. Tài khoản của bạn hiện tại là: " + balance); + notify(); //Thông báo đã nạp tiền + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/atm/CustomerOperationExample.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/atm/CustomerOperationExample.java new file mode 100644 index 0000000..6e163c0 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/atm/CustomerOperationExample.java @@ -0,0 +1,40 @@ +package com.gpcode.sync.atm; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class CustomerOperationExample { + public static void main(String[] args) { + final Customer c = new Customer(); + + /** + * Tiến trình 1: Thực hiện thao tác rút tiền + * với số tiền > số tiền hiện tại trong tài khoản + */ + Thread t1 = new Thread(){ + public void run(){ + c.withdraw(2000); + } + }; + t1.start(); + + /** + * Tiến trình 2: Thực hiện thao tác nộp tiền vào trong tài khoản + * TH1 -> chưa đủ so với số tiền rút. + * TH2 -> số tiền >= số tiền hiện tại. + */ + Thread t2 = new Thread(){ + public void run(){ + c.deposit(500); + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + c.deposit(3000); + } + }; + t2.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/block/ShareMemory.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/block/ShareMemory.java new file mode 100644 index 0000000..edb4b27 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/block/ShareMemory.java @@ -0,0 +1,15 @@ +package com.gpcode.sync.block; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class ShareMemory { + public void printData(String threadName){ + synchronized (this){ + for(int i = 0; i <= 5; i++){ + System.out.println(threadName + ": " + i); + } + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/deadlock/DeadLockTest.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/deadlock/DeadLockTest.java new file mode 100644 index 0000000..aed13f2 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/deadlock/DeadLockTest.java @@ -0,0 +1,25 @@ +package com.gpcode.sync.deadlock; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class DeadLockTest { + public static void main(String[] args) throws InterruptedException { + Object obj1 = new String("obj1"); + Object obj2 = new String("obj2"); + Object obj3 = new String("obj3"); + + Thread t1 = new Thread(new DeadlockThread(obj1, obj2), "t1"); + Thread t2 = new Thread(new DeadlockThread(obj2, obj3), "t2"); + Thread t3 = new Thread(new DeadlockThread(obj3, obj1), "t3"); + + t1.start(); + Thread.sleep(1000); + + t2.start(); + Thread.sleep(1000); + + t3.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/deadlock/DeadlockThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/deadlock/DeadlockThread.java new file mode 100644 index 0000000..d20b744 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/deadlock/DeadlockThread.java @@ -0,0 +1,43 @@ +package com.gpcode.sync.deadlock; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class DeadlockThread implements Runnable{ + + private Object obj1; + private Object obj2; + + public DeadlockThread(Object o1, Object o2){ + this.obj1 = o1; + this.obj2 = o2; + } + @Override + public void run() { + String name = Thread.currentThread().getName(); + System.out.println(name + " acquiring lock on " + obj1); + + synchronized (obj1){ + System.out.println(name + " acquired lock on " + obj1); + work(); + + System.out.println(name + " acquiring lock on " + obj2); + synchronized (obj2){ + System.out.println(name + " released lock on " + obj2); + work(); + } + System.out.println(name + " released lock on " + obj2); + } + System.out.println(name + " released lock on " + obj1); + System.out.println(name + " finished execution."); + } + + private void work() { + try { + Thread.sleep(6000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/staticmethod/ShareMemory.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/staticmethod/ShareMemory.java new file mode 100644 index 0000000..2ba6769 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/staticmethod/ShareMemory.java @@ -0,0 +1,13 @@ +package com.gpcode.sync.staticmethod; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class ShareMemory { + public static synchronized void printData(String threadName){ + for (int i = 1; i <=5; i++){ + System.out.println(threadName + ": " + i); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/staticmethod/ShareMemoryTest.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/staticmethod/ShareMemoryTest.java new file mode 100644 index 0000000..d11d688 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/staticmethod/ShareMemoryTest.java @@ -0,0 +1,19 @@ +package com.gpcode.sync.staticmethod; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class ShareMemoryTest { + public static void main(String[] args) { + WorkingThread thread1 = new WorkingThread("Thread1"); + WorkingThread thread2 = new WorkingThread("Thread2"); + WorkingThread thread3 = new WorkingThread("Thread3"); + WorkingThread thread4 = new WorkingThread("Thread4"); + + thread1.start(); + thread2.start(); + thread3.start(); + thread4.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/sync/staticmethod/WorkingThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/staticmethod/WorkingThread.java new file mode 100644 index 0000000..2839c20 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/sync/staticmethod/WorkingThread.java @@ -0,0 +1,18 @@ +package com.gpcode.sync.staticmethod; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class WorkingThread extends Thread{ + private String mThreadName; + + public WorkingThread(String mThreadName){ + this.mThreadName = mThreadName; + } + + @Override + public void run() { + ShareMemory.printData(mThreadName); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo/Access.java b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo/Access.java new file mode 100644 index 0000000..f51bf36 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo/Access.java @@ -0,0 +1,25 @@ +package com.gpcode.syncdemo; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class Access implements Runnable{ + String name; + Count c; + + // khởi tạo + public Access(String name, Count c){ + this.name = name; + this.c = c; + } + + @Override + public synchronized void run() { + for (int i = 0; i < 3; i++){ + System.out.println(name + " index " + i + " before " + c.value); + c.value--; + System.out.println(name + " index " + i + " after " + c.value); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo/Count.java b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo/Count.java new file mode 100644 index 0000000..3d16154 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo/Count.java @@ -0,0 +1,9 @@ +package com.gpcode.syncdemo; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class Count { + int value = 10; +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo/TestThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo/TestThread.java new file mode 100644 index 0000000..5a9dc9d --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo/TestThread.java @@ -0,0 +1,18 @@ +package com.gpcode.syncdemo; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + * Tham khảo: https://codelearn.io/sharing/dong-bo-va-bat-dong-bo-trong-java + */ +public class TestThread { + public static void main(String[] args) { + Count c = new Count(); + + // tạo 2 thread try cập vào cùng tài nguyên trong một đối tượng. + Thread t1 = new Thread(new Access("Thread 1", c)); + Thread t2 = new Thread(new Access("Thread 2", c)); + t1.start(); + t2.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo2/MyThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo2/MyThread.java new file mode 100644 index 0000000..bd284f0 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo2/MyThread.java @@ -0,0 +1,19 @@ +package com.gpcode.syncdemo2; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class MyThread extends Thread{ + private String name; + private int value; + + public MyThread(String name, int value){ + this.name = name; + this.value = value; + } + + public void run(){ + Table.print(name, value); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo2/Table.java b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo2/Table.java new file mode 100644 index 0000000..6429b82 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo2/Table.java @@ -0,0 +1,13 @@ +package com.gpcode.syncdemo2; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class Table { + synchronized static void print(String name, int n){ + for (int i = 1; i <= 5; i++){ + System.out.println(name + ": " + i * n); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo2/TestThread2.java b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo2/TestThread2.java new file mode 100644 index 0000000..33c73f5 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/syncdemo2/TestThread2.java @@ -0,0 +1,19 @@ +package com.gpcode.syncdemo2; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + * Tham khảo: https://codelearn.io/sharing/dong-bo-va-bat-dong-bo-trong-java + * + */ +public class TestThread2 { + public static void main(String[] args) { + MyThread t1 = new MyThread("Thread 1_1", 1); + MyThread t2 = new MyThread("Thread 1_2", 10); + MyThread t3 = new MyThread("Thread 1_3", 100); + + t1.start(); + t2.start(); + t3.start(); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/CachedThreadPoolExample.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/CachedThreadPoolExample.java new file mode 100644 index 0000000..0c896a2 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/CachedThreadPoolExample.java @@ -0,0 +1,36 @@ +package com.gpcode.threadpool; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Tạo ra ThreadPool có kích thước cố định là 2. + * Sau đó tạo 5 task vào ThreadPool. + * Vì kích thước ThreadPool là 2 -> nên nó sẽ bắt đầu thực thi với 5 task. + * và các task khác sẽ ở trạng thái waiting, ngay khi một task hoàn thành, + * một task khác từ hàng đợi sẽ được chọn và thực thi... + * + Runnable + * + initialDeplay + * + delay()... + * + TimeUnit()... + * + awaitTermination()... + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class CachedThreadPoolExample { + public static void main(String[] args) throws InterruptedException { + ExecutorService executor = Executors.newCachedThreadPool(); + + for(int i = 1; i <= 10; i++){ + Runnable worker = new WorkerThread(""+i); + executor.execute(worker); + Thread.sleep(400); + } + + executor.shutdown(); + while (!executor.isTerminated()){ + // Running... + } + System.out.println("Finished all threads"); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/FixedThreadPoolExample.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/FixedThreadPoolExample.java new file mode 100644 index 0000000..3c7a784 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/FixedThreadPoolExample.java @@ -0,0 +1,31 @@ +package com.gpcode.threadpool; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Thực hiện khởi tạo NewFixedThread. + * Thực hiện tạo ThreadPool có kích thước 5 + * Trong đó tạo ra 10 task công việc vào ThreadPool. + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class FixedThreadPoolExample { + public static final int NUM_OF_THREAD = 5; + public static void main(String[] args){ + ExecutorService executor = Executors.newFixedThreadPool(NUM_OF_THREAD); + + for(int i = 1; i <= 10; i++){ + Runnable worker = new WorkerThread(""+i); + executor.execute(worker); + } + executor.shutdown(); + + while (!executor.isTerminated()){ + //Running something... + } + System.out.println("Finished all threads"); + + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/ScheduledThreadPoolExample.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/ScheduledThreadPoolExample.java new file mode 100644 index 0000000..c655972 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/ScheduledThreadPoolExample.java @@ -0,0 +1,27 @@ +package com.gpcode.threadpool; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class ScheduledThreadPoolExample { + public static final int NUM_OF_THREAD = 2; + public static final int INITIAL_DELAY = 1; //second + public static final int DELAY = 3; //second + + public static void main(String[] args) { + ScheduledExecutorService executor = Executors.newScheduledThreadPool(NUM_OF_THREAD); + + for (int i = 1; i <= 5; i++){ + Runnable worker = new WorkerThread("" + i); + executor.scheduleWithFixedDelay(worker, INITIAL_DELAY, DELAY, TimeUnit.SECONDS); + + // waits for + } + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/SingleThreadExecutorExample.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/SingleThreadExecutorExample.java new file mode 100644 index 0000000..90f17ed --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/SingleThreadExecutorExample.java @@ -0,0 +1,28 @@ +package com.gpcode.threadpool; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class SingleThreadExecutorExample { + public static void main(String[] args) { + /** + * Tạo ra ThreadPool + */ + ExecutorService executor = Executors.newSingleThreadExecutor(); + + for (int i = 1; i <= 10; i++){ + Runnable worker = new WorkerThread(i+""); + executor.execute(worker); + } + + executor.shutdown(); + while(!executor.isTerminated()){ +// System.out.println("Running..."); + } + System.out.println("Finished all threads"); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/WorkerThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/WorkerThread.java new file mode 100644 index 0000000..57d2f43 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/WorkerThread.java @@ -0,0 +1,32 @@ +package com.gpcode.threadpool; + +/** + * Class khởi tạo thread + * @author ManhKM on 4/8/2022 + * @project Java-Thread + */ +public class WorkerThread implements Runnable{ + + private String task; + public WorkerThread(String s){ + this.task = s; + } + + @Override + public void run() { + System.out.println(Thread.currentThread().getName() + " Stating. Task = " + task); + processCommand(); + System.out.println(Thread.currentThread().getName() + " Finished."); + } + + /** + * Thực hiện logic -> dừng khoảng 2s mỗi lần chạy + */ + private void processCommand() { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/callable/CallableExample.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/callable/CallableExample.java new file mode 100644 index 0000000..ba57373 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/callable/CallableExample.java @@ -0,0 +1,48 @@ +package com.gpcode.threadpool.callable; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.*; + +/** + * @author ManhKM on 4/9/2022 + * @project Java-Thread + */ +public class CallableExample { + public static void main(String[] args) { + List> list = new ArrayList<>(); + + ExecutorService executor = Executors.newFixedThreadPool(5); + Callable callable; + Future future; + for (int i = 1; i <= 10; i++) { + callable = new CallableWorker(i); + + // submit Callable tasks to be executed by thread pool + future = executor.submit(callable); + + // add Future to the list, we can get return value using Future + list.add(future); + } + + // shut down the executor service now + executor.shutdown(); + + // Wait until all threads are finish + while (!executor.isTerminated()) { + // Running ... + } + + int sum = 0; + for (Future f : list) { + try { + sum += f.get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + } + + System.out.println("Finished all threads: "); + System.out.println("Sum all = " + sum); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/callable/CallableExample2.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/callable/CallableExample2.java new file mode 100644 index 0000000..d5f5646 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/callable/CallableExample2.java @@ -0,0 +1,64 @@ +package com.gpcode.threadpool.callable; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.*; + +/** + * @author ManhKM on 4/9/2022 + * @project Java-Thread + */ +public class CallableExample2 { + public static final int GET_TIME_OUT = 5; + public static final int NUM_OF_TASK = 10; + + public static void main(String[] args) throws TimeoutException, InterruptedException { + // create a list to hold the Future object associated with Callable + List> list = new ArrayList<>(); + + // Get ExecutorService from Executors utility class, thread pool size is 5 + ExecutorService executor = Executors.newFixedThreadPool(5); + + Callable callable; + Future future; + for (int i = 1; i <= NUM_OF_TASK; i++) { + callable = new CallableWorker(i); + + // submit Callable tasks to be executed by thread pool + future = executor.submit(callable); + + // add Future to the list, we can get return value using Future + list.add(future); + } + + int sum = 0; + for (Future f : list) { + try { + // print the return value of Future, notice the output delay in console + // because Future.get() waits for task to get completed + int result = f.get(GET_TIME_OUT, TimeUnit.SECONDS); + // Throw TimeoutException if the task execute over 7s + sum += result; + System.out.println("Result: " + result); + System.out.println("Is completed? : " + f.isDone()); + System.out.println("Is canceled? : " + f.isCancelled()); + } catch (TimeoutException | CancellationException | InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + System.out.println("---"); + } + + // shut down the executor service now + executor.shutdownNow(); + + // Blocks until all tasks have completed execution after a shutdown request, or + // the timeout occurs, or the current thread is interrupted, whichever happens + // first. + while (!executor.awaitTermination(GET_TIME_OUT * NUM_OF_TASK * 1000, TimeUnit.SECONDS)) { + // Running ... + } + + System.out.println("Finished all threads: "); + System.out.println("Sum all = " + sum); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/callable/CallableWorker.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/callable/CallableWorker.java new file mode 100644 index 0000000..07570e6 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/callable/CallableWorker.java @@ -0,0 +1,26 @@ +package com.gpcode.threadpool.callable; + +import java.util.Random; +import java.util.concurrent.Callable; + +/** + * @author ManhKM on 4/9/2022 + * @project Java-Thread + */ +public class CallableWorker implements Callable { + + private int num; + private Random ran; + + public CallableWorker(int num){ + this.num = num; + this.ran = new Random(); + } + @Override + public Integer call() throws Exception { + Thread.sleep(ran.nextInt(10)*1000); + int result = num * num; + System.out.println("Complete " + num); + return result; + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/custom/MonitorThread.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/custom/MonitorThread.java new file mode 100644 index 0000000..5eb1fde --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/custom/MonitorThread.java @@ -0,0 +1,12 @@ +package com.gpcode.threadpool.custom; + +/** + * @author ManhKM on 4/9/2022 + * @project Java-Thread + */ +public class MonitorThread implements Runnable{ + @Override + public void run() { + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/custom/RejectedExecutionHandlerImpl.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/custom/RejectedExecutionHandlerImpl.java new file mode 100644 index 0000000..0e5f13e --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/custom/RejectedExecutionHandlerImpl.java @@ -0,0 +1,15 @@ +package com.gpcode.threadpool.custom; + +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * @author ManhKM on 4/9/2022 + * @project Java-Thread + */ +public class RejectedExecutionHandlerImpl implements RejectedExecutionHandler { + @Override + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { + System.out.println(r.toString() + " is rejected"); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/custom/ThreadFactoryBuilder.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/custom/ThreadFactoryBuilder.java new file mode 100644 index 0000000..664214c --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool/custom/ThreadFactoryBuilder.java @@ -0,0 +1,77 @@ +package com.gpcode.threadpool.custom; + +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicLong; + +/** + * @author ManhKM on 4/9/2022 + * @project Java-Thread + */ +public class ThreadFactoryBuilder { + private String namePrefix = null; + private boolean daemon = false; + private int priority = Thread.NORM_PRIORITY; + private ThreadFactory backingThreadFactory = null; + private Thread.UncaughtExceptionHandler uncaughtExceptionHandler = null; + + public ThreadFactoryBuilder(){ + + } + + public ThreadFactoryBuilder setNamePrefix(String namePrefix){ + if(namePrefix == null){ + throw new NullPointerException(); + } + this.namePrefix = namePrefix; + return this; + } + + public ThreadFactoryBuilder setDaemon(boolean daemon){ + this.daemon = daemon; + return this; + } + + public ThreadFactoryBuilder setPriority(int priority){ + if(priority < Thread.MIN_PRIORITY){ + throw new IllegalArgumentException( String.format("Thread priority (%s) must be >= %s", priority, Thread.MIN_PRIORITY)); + } + this.backingThreadFactory = backingThreadFactory; + return this; + + } + + public ThreadFactory build(){ + return build(this); + } + + private static ThreadFactory build(ThreadFactoryBuilder builder){ + final String namePrefix = builder.namePrefix; + final Boolean daemon = builder.daemon; + final Integer priority = builder.priority; + final Thread.UncaughtExceptionHandler uncaughtExceptionHandler = builder.uncaughtExceptionHandler; + final ThreadFactory backingThreadFactory = (builder.backingThreadFactory != null) ? builder.backingThreadFactory + : Executors.defaultThreadFactory(); + final AtomicLong count = new AtomicLong(0); + return new ThreadFactory() { + @Override + public Thread newThread(Runnable runnable) { + Thread thread = backingThreadFactory.newThread(runnable); + if (namePrefix != null) { + thread.setName(namePrefix + "-" + count.getAndIncrement()); + } + if (daemon != null) { + thread.setDaemon(daemon); + } + if (priority != null) { + thread.setPriority(priority); + } + if (uncaughtExceptionHandler != null) { + thread.setUncaughtExceptionHandler(uncaughtExceptionHandler); + } + return thread; + } + }; + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool2/Run.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool2/Run.java new file mode 100644 index 0000000..b114d59 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool2/Run.java @@ -0,0 +1,24 @@ +package com.gpcode.threadpool2; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class Run implements Runnable{ + + int id; + + public Run(int id){ + this.id = id; + } + @Override + public void run() { + System.out.println("Tiến trình đang được thực thi " + id); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("Tiến trình đã được thực thi " + id); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool2/TestThreadPool.java b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool2/TestThreadPool.java new file mode 100644 index 0000000..f170969 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/gpcode/threadpool2/TestThreadPool.java @@ -0,0 +1,60 @@ +package com.gpcode.threadpool2; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 3/8/2022 + * @project Java-Thread + */ +public class TestThreadPool { + public static void main(String[] args) { + + /** + * số lượng Thread tối thiểu trong ThreadPool + * Khi khởi tạo, số lượng Thread có thể là 0. + * Khi nhiệm vụ được thêm vào thì Thread mới được tạo ra và kể từ đây. + * Nếu số lượng Thread ít hơn corePoolSize thì những Thread mới sẽ được tạo ra đến khi số Thread bằng corePoolSize. + */ + int corePoolSize = 5; + + /** + * maximumPoolSize + * Là số lượng tối đa các Thread trong ThreadPool + */ + int maximumPoolSize = 10; + + /** + * Khi số Thread lớn hơn corePoolSize thì keepAliveTime là thời gian tối đa + * mà một Thread nhàn rỗi -> chờ nhiệm vụ. + * Khi hết thời gian chờ mà Thread chưa có task thì nó sẽ tự hủy. + */ + int keepAliveTime = 500; + + /** + * Đơn vị thời gian của keepAliveTime. + * Trong ví dụ: TimeUnit.SECONDS + */ + TimeUnit unit = TimeUnit.SECONDS; + + /** + * workQueue là hàng đợi dùng để chứa các nhiệm vụ mà các Thread + * sẽ lấy chúng ra và thực thi khi đến lượt -> ArrayBlockingQueue. + */ + ArrayBlockingQueue workQueue = new ArrayBlockingQueue<>(100); + + /** + * Handle -> hành động khi một request task bị từ chối -> rejected. + */ + RejectedExecutionHandler handler = new ThreadPoolExecutor.CallerRunsPolicy(); + + ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(corePoolSize, + maximumPoolSize, keepAliveTime, unit, workQueue, handler); + int maxLength = 10; + for (int i = 0; i < maxLength; i++){ + threadPoolExecutor.execute(new Run(i)); + } + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/o7p/HelloMain.java b/Java-Concurrence/Java-Thread/src/com/o7p/HelloMain.java new file mode 100644 index 0000000..c3f30aa --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/o7p/HelloMain.java @@ -0,0 +1,35 @@ +package com.o7p; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + */ +public class HelloMain { + public static void main(String[] args) { + int idx = 1; + + for (int i = 0; i < 2; i++){ + System.out.println("Main thread running " + idx++); + try { + Thread.sleep(2101); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + HelloThread helloThread = new HelloThread(); + + helloThread.start(); + + for (int i = 0; i < 3; i++){ + System.out.println("Main thread running " + idx++); + try { + Thread.sleep(2101); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + System.out.println(" ---> Main Thread stopped!"); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/o7p/HelloThread.java b/Java-Concurrence/Java-Thread/src/com/o7p/HelloThread.java new file mode 100644 index 0000000..993aac1 --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/o7p/HelloThread.java @@ -0,0 +1,24 @@ +package com.o7p; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + */ +public class HelloThread extends Thread{ + @Override + public void run() { + int index = 1; + + for (int i = 0; i < 10; i++){ + System.out.println(" - HelloThread running - " + index + " - "+ i); + } + + try { + Thread.sleep(1030); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + System.out.println(" ----> HelloThread stopped!"); + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/o7p/runnable/RunnableDemo.java b/Java-Concurrence/Java-Thread/src/com/o7p/runnable/RunnableDemo.java new file mode 100644 index 0000000..e5fa31c --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/o7p/runnable/RunnableDemo.java @@ -0,0 +1,25 @@ +package com.o7p.runnable; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + */ +public class RunnableDemo implements Runnable{ + + @Override + public void run() { + int idx = 1; + for (int i = 0; i < 5; i++){ + System.out.println(" - Hello from RunnableDemo: - " + idx + " - " + i); + + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + System.out.println(" - RunnableDemo stopped!..."); + + } +} diff --git a/Java-Concurrence/Java-Thread/src/com/o7p/runnable/RunnableTest.java b/Java-Concurrence/Java-Thread/src/com/o7p/runnable/RunnableTest.java new file mode 100644 index 0000000..ca26f2b --- /dev/null +++ b/Java-Concurrence/Java-Thread/src/com/o7p/runnable/RunnableTest.java @@ -0,0 +1,22 @@ +package com.o7p.runnable; + +/** + * @author ManhKM on 6/30/2022 + * @project Java-Thread + */ +public class RunnableTest { + public static void main(String[] args) { + System.out.println("Main Thread running..."); + + Thread thread = new Thread(new RunnableDemo()); + + thread.start(); + + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("Main thread stopped..."); + } +} diff --git a/Java-Concurrence/docs/1-lap-trinh-da-luong-trong-java-multi-threading-v1.0.docx b/Java-Concurrence/docs/1-lap-trinh-da-luong-trong-java-multi-threading-v1.0.docx new file mode 100644 index 0000000..78cec9d Binary files /dev/null and b/Java-Concurrence/docs/1-lap-trinh-da-luong-trong-java-multi-threading-v1.0.docx differ diff --git a/Java-Concurrence/docs/10-thuc-thi-nhieu-tac-vu-cung-1-luc-java-v1.0.docx b/Java-Concurrence/docs/10-thuc-thi-nhieu-tac-vu-cung-1-luc-java-v1.0.docx new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/docs/11-semaphore-trong-java-v1.0.docx b/Java-Concurrence/docs/11-semaphore-trong-java-v1.0.docx new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/docs/12-producer-consumer-dong-bo-hoa-luong-trong-java-v1.0.docx b/Java-Concurrence/docs/12-producer-consumer-dong-bo-hoa-luong-trong-java-v1.0.docx new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/docs/2-luong-daemon-thread-trong-java-1.0.docx b/Java-Concurrence/docs/2-luong-daemon-thread-trong-java-1.0.docx new file mode 100644 index 0000000..34491b5 Binary files /dev/null and b/Java-Concurrence/docs/2-luong-daemon-thread-trong-java-1.0.docx differ diff --git a/Java-Concurrence/docs/3-dong-bo-hoa-cac-luong-trong-java-v1.0.docx b/Java-Concurrence/docs/3-dong-bo-hoa-cac-luong-trong-java-v1.0.docx new file mode 100644 index 0000000..2e0b15d Binary files /dev/null and b/Java-Concurrence/docs/3-dong-bo-hoa-cac-luong-trong-java-v1.0.docx differ diff --git a/Java-Concurrence/docs/4-huong-dan-tao-va-su-dung-threadpool-trong-java-1.0.docx b/Java-Concurrence/docs/4-huong-dan-tao-va-su-dung-threadpool-trong-java-1.0.docx new file mode 100644 index 0000000..a3a9b1a Binary files /dev/null and b/Java-Concurrence/docs/4-huong-dan-tao-va-su-dung-threadpool-trong-java-1.0.docx differ diff --git a/Java-Concurrence/docs/5-da-luong-callable-future-trong-java-v1.0.docx b/Java-Concurrence/docs/5-da-luong-callable-future-trong-java-v1.0.docx new file mode 100644 index 0000000..7435d66 Binary files /dev/null and b/Java-Concurrence/docs/5-da-luong-callable-future-trong-java-v1.0.docx differ diff --git a/Java-Concurrence/docs/6-fork-join-frameowork-forkjoinpool-trong-java-v1.0.docx b/Java-Concurrence/docs/6-fork-join-frameowork-forkjoinpool-trong-java-v1.0.docx new file mode 100644 index 0000000..eda72ac Binary files /dev/null and b/Java-Concurrence/docs/6-fork-join-frameowork-forkjoinpool-trong-java-v1.0.docx differ diff --git a/Java-Concurrence/docs/7-countdownlatch-trong-java-v1.0.docx b/Java-Concurrence/docs/7-countdownlatch-trong-java-v1.0.docx new file mode 100644 index 0000000..a6e7a00 Binary files /dev/null and b/Java-Concurrence/docs/7-countdownlatch-trong-java-v1.0.docx differ diff --git a/Java-Concurrence/docs/8-su-dung-cyclicbarrier-trong-java-v1.0.docx b/Java-Concurrence/docs/8-su-dung-cyclicbarrier-trong-java-v1.0.docx new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/docs/9-lap-trinh-da-luong-completablefuture-trong-java-8-v1.0.docx b/Java-Concurrence/docs/9-lap-trinh-da-luong-completablefuture-trong-java-8-v1.0.docx new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/docs/readme.md b/Java-Concurrence/docs/readme.md new file mode 100644 index 0000000..446276c --- /dev/null +++ b/Java-Concurrence/docs/readme.md @@ -0,0 +1,3 @@ +Thời gian: + +10/03/2023: Tạo mới tài liệu về Thread \ No newline at end of file diff --git a/Java-Concurrence/java-concurrency-in-practice.pdf b/Java-Concurrence/java-concurrency-in-practice.pdf new file mode 100644 index 0000000..334771b Binary files /dev/null and b/Java-Concurrence/java-concurrency-in-practice.pdf differ diff --git a/Java-Concurrence/java-task-thread/.gitignore b/Java-Concurrence/java-task-thread/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/Java-Concurrence/java-task-thread/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Java-Concurrence/java-task-thread/.mvn/wrapper/maven-wrapper.jar b/Java-Concurrence/java-task-thread/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..c1dd12f Binary files /dev/null and b/Java-Concurrence/java-task-thread/.mvn/wrapper/maven-wrapper.jar differ diff --git a/Java-Concurrence/java-task-thread/.mvn/wrapper/maven-wrapper.properties b/Java-Concurrence/java-task-thread/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..b74bf7f --- /dev/null +++ b/Java-Concurrence/java-task-thread/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/Java-Concurrence/java-task-thread/config/application.yml b/Java-Concurrence/java-task-thread/config/application.yml new file mode 100644 index 0000000..54b155f --- /dev/null +++ b/Java-Concurrence/java-task-thread/config/application.yml @@ -0,0 +1,2 @@ +server: + port: 8081 \ No newline at end of file diff --git a/Java-Concurrence/java-task-thread/config/beans.xml b/Java-Concurrence/java-task-thread/config/beans.xml new file mode 100644 index 0000000..6b23699 --- /dev/null +++ b/Java-Concurrence/java-task-thread/config/beans.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/Java-Concurrence/java-task-thread/config/job.properties b/Java-Concurrence/java-task-thread/config/job.properties new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/java-task-thread/config/log4j2.xml b/Java-Concurrence/java-task-thread/config/log4j2.xml new file mode 100644 index 0000000..e69de29 diff --git a/Java-Concurrence/java-task-thread/config/schedule-conf.xml b/Java-Concurrence/java-task-thread/config/schedule-conf.xml new file mode 100644 index 0000000..594fa0a --- /dev/null +++ b/Java-Concurrence/java-task-thread/config/schedule-conf.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Java-Concurrence/java-task-thread/mvnw b/Java-Concurrence/java-task-thread/mvnw new file mode 100644 index 0000000..841f63a --- /dev/null +++ b/Java-Concurrence/java-task-thread/mvnw @@ -0,0 +1,331 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /usr/local/etc/mavenrc ]; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$( + \unset -f command + \command -v java + )" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Java-Concurrence/java-task-thread/mvnw.cmd b/Java-Concurrence/java-task-thread/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Java-Concurrence/java-task-thread/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Java-Concurrence/java-task-thread/pom.xml b/Java-Concurrence/java-task-thread/pom.xml new file mode 100644 index 0000000..691bd0a --- /dev/null +++ b/Java-Concurrence/java-task-thread/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.3 + + + com.msoft + java-task-thread + 0.0.1-SNAPSHOT + java-task-thread + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-web + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/JavaTaskThreadApplication.java b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/JavaTaskThreadApplication.java new file mode 100644 index 0000000..24932ec --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/JavaTaskThreadApplication.java @@ -0,0 +1,20 @@ +package com.msoft.core; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; +import org.springframework.context.annotation.ImportResource; +import org.springframework.scheduling.annotation.EnableScheduling; + +@SpringBootApplication +@EnableScheduling +@ImportResource({ "file:config/beans.xml", "file:config/schedule-conf.xml" }) +@EnableAutoConfiguration(exclude = HibernateJpaAutoConfiguration.class) +public class JavaTaskThreadApplication { + + public static void main(String[] args) { + SpringApplication.run(JavaTaskThreadApplication.class, args); + } + +} diff --git a/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/controller/HomeController.java b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/controller/HomeController.java new file mode 100644 index 0000000..7b5ce42 --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/controller/HomeController.java @@ -0,0 +1,18 @@ +package com.msoft.core.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author ManhKM on 8/28/2022 + * @project java-task-thread + */ +@RestController +public class HomeController { + + @RequestMapping(value = "/", method = RequestMethod.GET) + public String sayHello(){ + return "Welcome to Java-Task-Thread"; + } +} diff --git a/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/obj/MyTask.java b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/obj/MyTask.java new file mode 100644 index 0000000..9863035 --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/obj/MyTask.java @@ -0,0 +1,47 @@ +package com.msoft.core.obj; + +import com.msoft.core.scheduler.AbsTask; +import java.util.Date; + +/** + * @author ManhKM on 8/28/2022 + * @project java-task-thread + */ +public class MyTask extends AbsTask { + + String taskName; + + public MyTask(String taskName){ + this.taskName = taskName; + } + + @Override + public void run() { + try { + execute(); + } catch (Exception e){ + e.printStackTrace(); + } + } + + private void execute() { + System.out.println("Running My Task" + this.taskName); + } + + /** + * Lấy ra ngày bắt đầu gia hạn + * @return + */ + @Override + public Date getStartDate() { + return null; + } + + /** + * Sau khi hết hạn + */ + @Override + public void afterExpire() { + + } +} diff --git a/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/AbsTask.java b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/AbsTask.java new file mode 100644 index 0000000..50933ae --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/AbsTask.java @@ -0,0 +1,31 @@ +package com.msoft.core.scheduler; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 8/28/2022 + * @project java-task-thread + */ +public abstract class AbsTask implements Task{ + + private Date d = null; + + public AbsTask(){ + + } + + @Override + public long getDelay() { + if(this.d == null){ + this.d = this.getStartDate(); + } + + return this.d != null ? this.getStartDate().getTime() - System.currentTimeMillis() : 0L; + } + + @Override + public TimeUnit getTimeUnit(){ + return TimeUnit.MILLISECONDS; + } +} diff --git a/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/ExecutionListTask.java b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/ExecutionListTask.java new file mode 100644 index 0000000..4709e2e --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/ExecutionListTask.java @@ -0,0 +1,18 @@ +package com.msoft.core.scheduler; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author ManhKM on 8/28/2022 + * @project java-task-thread + */ +@Component +public class ExecutionListTask { + private final Logger logger = LogManager.getLogger(ExecutionListTask.class); + + @Autowired + private TaskScheduleExecute taskSchedule; +} diff --git a/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/Task.java b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/Task.java new file mode 100644 index 0000000..a43efc6 --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/Task.java @@ -0,0 +1,19 @@ +package com.msoft.core.scheduler; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 8/28/2022 + * @project java-task-thread + */ +public interface Task extends Runnable{ + + long getDelay(); + + TimeUnit getTimeUnit(); + + Date getStartDate(); + + void afterExpire(); +} diff --git a/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/TaskExpireMng.java b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/TaskExpireMng.java new file mode 100644 index 0000000..9a5fd96 --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/TaskExpireMng.java @@ -0,0 +1,91 @@ +package com.msoft.core.scheduler; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author ManhKM on 8/28/2022 + * @project java-task-thread + * ----- + * Quản lý các Task hết hạn. + */ +public class TaskExpireMng { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + private List listTask = null; + private Object lock = new Object(); + private long delay = 1000L; + private Thread thread; + private long expireTime; + private ScheduledThreadPoolExecutor scheduledThreadPool; + + public TaskExpireMng(long timeKeepAlive, TimeUnit unit, ScheduledThreadPoolExecutor scheduledThreadPool) { + this.logger.debug("Init check task expire"); + this.listTask = new ArrayList(); + TimeUnit time = TimeUnit.MILLISECONDS; + this.expireTime = time.convert(timeKeepAlive, unit); + this.scheduledThreadPool = scheduledThreadPool; + this.init(); + } + + private void init() { + this.thread = new Thread(new TaskExpireMng.MonitoringTask()); + this.thread.start(); + } + + public void addTaskMonitor(ScheduledFuture t, Task task) { + addTaskMonitor(new TaskInfo(this.expireTime + System.currentTimeMillis(), t, task)); + } + + public void addTaskMonitor(TaskInfo taskInfo) { + this.listTask.add(taskInfo); + } + + private void removeTaskExpire(List listId) { + synchronized(this.lock) { + Iterator var3 = listId.iterator(); + + while(var3.hasNext()) { + TaskInfo task = (TaskInfo)var3.next(); + this.listTask.remove(task); + } + + } + } + + private class MonitoringTask implements Runnable { + private MonitoringTask() { + } + + public void run() { + while(!TaskExpireMng.this.scheduledThreadPool.isTerminated()) { + long currentTime = System.currentTimeMillis(); + List listTaskRemove = new ArrayList(); + + for(int i = 0; i < TaskExpireMng.this.listTask.size(); ++i) { + TaskInfo taskInfo = (TaskInfo)TaskExpireMng.this.listTask.get(i); + if (taskInfo.getExpireTime() < currentTime) { + listTaskRemove.add(taskInfo); + if (!taskInfo.getT().isDone()) { + taskInfo.getT().cancel(false); + taskInfo.getTask().afterExpire(); + } + } + } + + TaskExpireMng.this.removeTaskExpire(listTaskRemove); + + try { + Thread.sleep(TaskExpireMng.this.delay); + } catch (InterruptedException var6) { + } + } + + } + } +} diff --git a/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/TaskInfo.java b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/TaskInfo.java new file mode 100644 index 0000000..0bf840f --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/TaskInfo.java @@ -0,0 +1,43 @@ +package com.msoft.core.scheduler; + +import java.util.concurrent.ScheduledFuture; + +/** + * @author ManhKM on 8/28/2022 + * @project java-task-thread + */ +public class TaskInfo { + private long expireTime; + private ScheduledFuture t; + private Task task; + + public TaskInfo(long expireTime, ScheduledFuture t, Task task){ + this.expireTime = expireTime; + this.t = t; + this.task = task; + } + + public long getExpireTime() { + return expireTime; + } + + public void setExpireTime(long expireTime) { + this.expireTime = expireTime; + } + + public ScheduledFuture getT() { + return t; + } + + public void setT(ScheduledFuture t) { + this.t = t; + } + + public Task getTask() { + return task; + } + + public void setTask(Task task) { + this.task = task; + } +} diff --git a/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/TaskScheduleExecute.java b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/TaskScheduleExecute.java new file mode 100644 index 0000000..f5459f8 --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/java/com/msoft/core/scheduler/TaskScheduleExecute.java @@ -0,0 +1,45 @@ +package com.msoft.core.scheduler; + +import java.io.Closeable; +import java.io.IOException; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author ManhKM on 8/28/2022 + * @project java-task-thread + */ +public class TaskScheduleExecute implements Closeable { + + private final Logger logger; + private static final long TIME_KEEP_ALIVE_DEFAULT = 8L; + private static final TimeUnit TIME_UNIT_DEFAULT; + private ScheduledThreadPoolExecutor scheduledThreadPool; + + static { + TIME_UNIT_DEFAULT = TimeUnit.HOURS; + } + + public TaskScheduleExecute(int corePoolSize, int maximumPoolSize, boolean continueTaskAfterShutdown, long timeKeepAlive, TimeUnit unit, boolean removeOnCancelPolicy){ + this.logger = LoggerFactory.getLogger(this.getClass()); + this.scheduledThreadPool = new ScheduledThreadPoolExecutor(corePoolSize); + this.scheduledThreadPool.setMaximumPoolSize(maximumPoolSize); + this.scheduledThreadPool.setContinueExistingPeriodicTasksAfterShutdownPolicy(continueTaskAfterShutdown); + this.scheduledThreadPool.setKeepAliveTime(timeKeepAlive, unit); + this.scheduledThreadPool.setRemoveOnCancelPolicy(removeOnCancelPolicy); + this.scheduledThreadPool.setThreadFactory(new ThreadFactory() { + public Thread newThread(Runnable r) { + return new Thread(r, "TaskSchedule-"); + } + }); + this.taskExpire = new TaskExpireMng(timeKeepAlive, unit, this.scheduledThreadPool); + } + + @Override + public void close() throws IOException { + + } +} diff --git a/Java-Concurrence/java-task-thread/src/main/resources/application.properties b/Java-Concurrence/java-task-thread/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/Java-Concurrence/java-task-thread/src/test/java/com/msoft/core/JavaTaskThreadApplicationTests.java b/Java-Concurrence/java-task-thread/src/test/java/com/msoft/core/JavaTaskThreadApplicationTests.java new file mode 100644 index 0000000..eeba78c --- /dev/null +++ b/Java-Concurrence/java-task-thread/src/test/java/com/msoft/core/JavaTaskThreadApplicationTests.java @@ -0,0 +1,13 @@ +package com.msoft.core; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class JavaTaskThreadApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/Java-Concurrence/multi-thread-tutorial/draw/session1/sesssion1.drawio b/Java-Concurrence/multi-thread-tutorial/draw/session1/sesssion1.drawio new file mode 100644 index 0000000..2c489e5 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/draw/session1/sesssion1.drawio @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Java-Concurrence/multi-thread-tutorial/out/production/multi-thread-tutorial/com/jindo/core/session3/notification/readme.md b/Java-Concurrence/multi-thread-tutorial/out/production/multi-thread-tutorial/com/jindo/core/session3/notification/readme.md new file mode 100644 index 0000000..e112f66 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/out/production/multi-thread-tutorial/com/jindo/core/session3/notification/readme.md @@ -0,0 +1,10 @@ +## Sử dụng với bài toán Notification trong bài toán đa luồng. + +### Bài toán + +Nếu trong quá trình luồng 1 khóa đối tượng Resource b, sau khi thực hiện được 1 đoạn công việc, luồng 1 cần luồng 2 làm việc số việc gì đó trên resource B này. + +Sau khi đó mới có điều kiện để luồng 1 thực hiện tiếp logic -> lúc này mới có đủ dữ liệu để làm tiếp. + +wait(), notify(), notifyall() + diff --git a/Java-Concurrence/multi-thread-tutorial/out/production/multi-thread-tutorial/com/jindo/core/session3/readme.md b/Java-Concurrence/multi-thread-tutorial/out/production/multi-thread-tutorial/com/jindo/core/session3/readme.md new file mode 100644 index 0000000..2e1eccf --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/out/production/multi-thread-tutorial/com/jindo/core/session3/readme.md @@ -0,0 +1,6 @@ +## Đồng bộ luồng trong Java + +Đồng bộ hóa (synchronized) chính là việc xắp xếp thứ tự các luồng khi truy xuất vào cùng đối tượng sao cho nó không có sự xung đột dữ liệu. + +Đồng bộ hóa = thứ tự hóa + diff --git a/Java-Concurrence/multi-thread-tutorial/readme.md b/Java-Concurrence/multi-thread-tutorial/readme.md new file mode 100644 index 0000000..92abbfb --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/readme.md @@ -0,0 +1,14 @@ +## Tổ chức package trong dự án + +session1: Thực hiện tạo một Thread từ Runnable, khi đó sử dụng Thread này trong việc Random số liệu + + + + +## Multithreading + +[Multi-Thread](https://gpcoder.com/category/java-core/multi-thread/) + +## Reference Document + +[Viblo - Multithreading](https://viblo.asia/p/multithreading-race-conditions-critical-sections-va-thread-safety-OEqGj6LlG9bL) diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/Application.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/Application.java new file mode 100644 index 0000000..17d4a56 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/Application.java @@ -0,0 +1,12 @@ +package com.jindo.core; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class Application { + + public static void main(String[] args) { + System.out.println("Multi-thread Tutorial v1.0"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/MyInterface.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/MyInterface.java new file mode 100644 index 0000000..21684bd --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/MyInterface.java @@ -0,0 +1,16 @@ +package com.jindo.core.session1; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public interface MyInterface { + + void sayHello(); + + void run(); + + void go(); + + void speak(); +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/MyRunnable.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/MyRunnable.java new file mode 100644 index 0000000..ee8fbac --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/MyRunnable.java @@ -0,0 +1,34 @@ +package com.jindo.core.session1; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class MyRunnable implements Runnable, MyInterface{ + + @Override + public void sayHello() { + + } + + @Override + public void run() { + System.out.println("Method run() in MyRunnable"); + } + + @Override + public void go() { + + } + + @Override + public void speak() { + + } + + public static void main(String[] args) { + MyRunnable myRunnable = new MyRunnable(); + Thread thread = new Thread(myRunnable); + thread.start(); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/MyThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/MyThread.java new file mode 100644 index 0000000..0f80cdc --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/MyThread.java @@ -0,0 +1,34 @@ +package com.jindo.core.session1; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class MyThread extends Thread implements MyInterface{ + + @Override + public void sayHello() { + + } + + @Override + public void run() { + super.run(); + System.out.println("Method run() in MyThread"); + } + + @Override + public void go() { + + } + + @Override + public void speak() { + + } + + public static void main(String[] args) { + MyThread myThread = new MyThread(); + myThread.start(); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/basic/BasicThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/basic/BasicThread.java new file mode 100644 index 0000000..b4a5286 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/basic/BasicThread.java @@ -0,0 +1,30 @@ +package com.jindo.core.session1.basic; + +/** + * @author ManhKM as [ADMIN] + * @project multi-thread-tutorial on 7/26/2023-11:09 AM (>_<)/ + * @note + */ +public class BasicThread extends Thread { + + private String name; + + public BasicThread(String name) { + this.name = name; + } + + /** + * Định nghĩa sự kiện thực thi của Thread + */ + @Override + public void run() { + for (int i = 10; i > 0; i--) { + System.out.println(name + '-' + i); + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/basic/BasicThreadApp.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/basic/BasicThreadApp.java new file mode 100644 index 0000000..6379a66 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/basic/BasicThreadApp.java @@ -0,0 +1,20 @@ +package com.jindo.core.session1.basic; + +/** + * @author ManhKM as [ADMIN] + * @project multi-thread-tutorial on 7/26/2023-11:12 AM (>_<)/ + * @note + */ +public class BasicThreadApp { + public static void main(String[] args) { + + BasicThread basicThreadA = new BasicThread("thread-a"); + BasicThread basicThreadB = new BasicThread("thread-b"); + BasicThread basicThreadC = new BasicThread("thread-c"); + BasicThread basicThreadD = new BasicThread("thread-d"); + + basicThreadA.start(); + basicThreadB.start(); + + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/exception/ThreadExceptionDemo.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/exception/ThreadExceptionDemo.java new file mode 100644 index 0000000..fedffeb --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/exception/ThreadExceptionDemo.java @@ -0,0 +1,28 @@ +package com.jindo.core.session1.exception; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class ThreadExceptionDemo { + + public static void main(String[] args) { + System.out.println("Main Thread Running..."); + + Thread thread = new Thread(new WorkingThread()); + + thread.setDaemon(false); + + Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { + + @Override + public void uncaughtException(Thread t, Throwable e) { + System.out.println("#Thread: " + t); + System.out.println("#Thread exception message" + e.getMessage()); + } + }); + + thread.start(); + System.out.println("Main Thread End!!!"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/exception/WorkingThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/exception/WorkingThread.java new file mode 100644 index 0000000..388f24c --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/exception/WorkingThread.java @@ -0,0 +1,40 @@ +package com.jindo.core.session1.exception; + +import java.util.Random; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + * @note Thực hành tạo một Thread implement Runnable + */ +public class WorkingThread implements Runnable { + + @Override + public void run() { + while (true) { + processSomething(); + } + } + + /** + * Thực hiện nghiệm vụ chính trong hệ thống + * Thực hiện random một số trong khoảng + * Nếu nó rơi vào một case chỉ định thì dừng chương trình + * Nếu có exception sảy ra trong quá trình chạy thì quit + */ + private void processSomething() { + + Random random = new Random(); + int i = random.nextInt(9_000); + try { + System.out.println("[" + i + "] Processing working thread"); + Thread.sleep(10); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + if (i == 70) { + throw new RuntimeException("Giá trị này = 70, không xử lý trong Thread"); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/join/UsingJoinMethod.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/join/UsingJoinMethod.java new file mode 100644 index 0000000..cbb35b6 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/join/UsingJoinMethod.java @@ -0,0 +1,49 @@ +package com.jindo.core.session1.join; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class UsingJoinMethod extends Thread{ + + UsingJoinMethod(String name){ + super(name); + } + + @Override + public void run() { + System.out.println("RUNNING " + getName()); + for (int i = 1; i <= 10; i++){ + System.out.print(i + " "); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + System.out.println(); + } + + public static void main(String[] args) throws InterruptedException { + UsingJoinMethod thread1 = new UsingJoinMethod("Thread-01"); + UsingJoinMethod thread2 = new UsingJoinMethod("Thread-02"); + UsingJoinMethod thread3 = new UsingJoinMethod("Thread-03"); + UsingJoinMethod thread4 = new UsingJoinMethod("Thread-04"); + + + + thread1.start(); + thread1.join(); + + thread2.start(); + thread2.join(); + + thread3.start(); + thread3.join(); + + thread4.start(); + thread4.join(); + + System.out.println("Main Thread Finished"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/join/UsingJoinThreadApplication.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/join/UsingJoinThreadApplication.java new file mode 100644 index 0000000..94534fc --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/join/UsingJoinThreadApplication.java @@ -0,0 +1,18 @@ +package com.jindo.core.session1.join; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class UsingJoinThreadApplication { + + public static void main(String[] args) throws InterruptedException { + UsingJoinThreadDemo threadDemo1 = new UsingJoinThreadDemo("Thread-01"); + UsingJoinThreadDemo threadDemo2 = new UsingJoinThreadDemo("Thread-02"); + + threadDemo1.start(); + threadDemo1.join(); + threadDemo2.start(); + System.out.println("Main Thread Finished"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/join/UsingJoinThreadDemo.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/join/UsingJoinThreadDemo.java new file mode 100644 index 0000000..364e0ca --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/join/UsingJoinThreadDemo.java @@ -0,0 +1,38 @@ +package com.jindo.core.session1.join; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class UsingJoinThreadDemo extends Thread { + + Thread t; + private String name; + + UsingJoinThreadDemo(String name) { + this.name = name; + System.out.println("CREATING " + name); + } + + @Override + public void run() { + System.out.println("RUNNING " + name); + for (int i = 1; i <= 10; i++) { + System.out.print(i + " "); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + System.out.println(); + } + + public void start() { + System.out.println("STARTING " + name); + if (t == null) { + t = new Thread(this, name); + t.start(); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/joinlong/UsingJoinLongMethod.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/joinlong/UsingJoinLongMethod.java new file mode 100644 index 0000000..7d6b4db --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/joinlong/UsingJoinLongMethod.java @@ -0,0 +1,60 @@ +package com.jindo.core.session1.joinlong; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class UsingJoinLongMethod extends Thread { + + + UsingJoinLongMethod(String name) { + super(name); + } + + @Override + public void run() { + System.out.println("RUNNING " + getName()); + for (int i = 1; i <= 10; i++) { + try { + System.out.print(i + "[" + getId() + "]" + " "); + Thread.sleep(300); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + System.out.println(); + } + + public static void main(String[] args) throws InterruptedException { + System.out.println("Main Thread Running"); + + UsingJoinLongMethod thread1 = new UsingJoinLongMethod("Thread-01"); + UsingJoinLongMethod thread2 = new UsingJoinLongMethod("Thread-02"); + UsingJoinLongMethod thread3 = new UsingJoinLongMethod("Thread-03"); + UsingJoinLongMethod thread4 = new UsingJoinLongMethod("Thread-04"); + + thread1.start(); + + /** + * Main Thread phải chờ 450ms mới được chạy tiếp + * Không nhất thiết phải chờ Thread1 kết thúc + */ + thread1.join(450); + + thread2.start(); + + thread2.join(450); + + thread3.start(); + + thread3.join(450); + + thread4.start(); + + thread4.join(450); + + System.out.println("Main Thread Finished"); + + + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/priority/ThreadInfoPriorityExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/priority/ThreadInfoPriorityExample.java new file mode 100644 index 0000000..b81c4b5 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/priority/ThreadInfoPriorityExample.java @@ -0,0 +1,32 @@ +package com.jindo.core.session1.priority; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class ThreadInfoPriorityExample { + + public static void main(String[] args) { + System.out.println("Thread Main Running"); + + Thread thread1 = new WorkingThread("Luồng 1"); + Thread thread2 = new WorkingThread("Luồng 2"); + Thread thread3 = new WorkingThread("Luồng 3"); + + System.out.println("ID luồng 1" + thread1.getId()); + System.out.println("ID luồng 2" + thread2.getId()); + System.out.println("ID luồng 3" + thread3.getId()); + + // set Priority: + thread1.setPriority(1); + thread2.setPriority(5); + thread3.setPriority(10); + + thread1.start(); + thread2.start(); + thread3.start(); + + System.out.println("Thread Main Stopped"); + + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/priority/WorkingThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/priority/WorkingThread.java new file mode 100644 index 0000000..2190d6d --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/priority/WorkingThread.java @@ -0,0 +1,32 @@ +package com.jindo.core.session1.priority; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class WorkingThread extends Thread{ + + private Thread t; + private String name; + + WorkingThread(String name){ + super(name); + this.name = name; + } + + @Override + public void run() { + System.out.println("Running " + name); + for (int i = 0; i < 10; i++){ + System.out.printf("Luồng: %s có độ ưu tiên là %d \n", this.getName(), this.getPriority()); + } + } + + public void start(){ + System.out.println("Starting " + name); + if(t == null){ + t = new Thread(this, this.name); + t.start(); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/runnable/RunnableDemo.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/runnable/RunnableDemo.java new file mode 100644 index 0000000..7f95f2d --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/runnable/RunnableDemo.java @@ -0,0 +1,38 @@ +package com.jindo.core.session1.runnable; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class RunnableDemo implements Runnable { + + private Thread t; + private String threadName; + + RunnableDemo(String threadName) { + this.threadName = threadName; + System.out.println("Creating " + threadName); + } + + @Override + public void run() { + + System.out.println("Creating " + threadName + " ..."); + try { + for (int i = 1000; i > 0; i--) { + System.out.println("Thread: " + threadName + ", " + i); + Thread.sleep(100); + } + } catch (InterruptedException e) { + System.err.println("Thread " + threadName + " exiting."); + } + } + + public void start() { + System.out.println("Starting " + threadName); + if (t == null) { + t = new Thread(this, threadName); + t.start(); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/runnable/RunnableDemoTest.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/runnable/RunnableDemoTest.java new file mode 100644 index 0000000..4a5ee55 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/runnable/RunnableDemoTest.java @@ -0,0 +1,20 @@ +package com.jindo.core.session1.runnable; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class RunnableDemoTest { + + public static void main(String[] args) { + System.out.println("Main thread running..."); + + RunnableDemo runnableDemo1 = new RunnableDemo("Thread-1-HR-Database"); + runnableDemo1.start(); + + RunnableDemo runnableDemo2 = new RunnableDemo("Thread-2-Send-Email"); + runnableDemo2.start(); + + System.out.println("Main Thread stopped!"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/sleep/SleepMethodRunnableExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/sleep/SleepMethodRunnableExample.java new file mode 100644 index 0000000..777ebf1 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/sleep/SleepMethodRunnableExample.java @@ -0,0 +1,26 @@ +package com.jindo.core.session1.sleep; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class SleepMethodRunnableExample implements Runnable{ + + @Override + public void run() { + for (int i = 1; i <= 10; i++){ + System.out.println(i); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + public static void main(String[] args) { + SleepMethodRunnableExample runnable1 = new SleepMethodRunnableExample(); + Thread thread = new Thread(runnable1); + thread.start(); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/sleep/SleepMethodThreadExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/sleep/SleepMethodThreadExample.java new file mode 100644 index 0000000..3a32e73 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/sleep/SleepMethodThreadExample.java @@ -0,0 +1,25 @@ +package com.jindo.core.session1.sleep; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class SleepMethodThreadExample extends Thread{ + + @Override + public void run() { + for (int i = 1; i <= 10; i++){ + System.out.println(i); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + public static void main(String[] args) { + SleepMethodThreadExample thread1 = new SleepMethodThreadExample(); + thread1.start(); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/thread/ActionInThreadDemo.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/thread/ActionInThreadDemo.java new file mode 100644 index 0000000..23156e5 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/thread/ActionInThreadDemo.java @@ -0,0 +1,18 @@ +package com.jindo.core.session1.thread; + +/** + * @author ManhKM as [ADMIN] + * @project multi-thread-tutorial on 7/26/2023-11:04 AM (>_<)/ + * @note + */ +public class ActionInThreadDemo { + public static void main(String[] args) { + + // Khởi tạo một Thread: + ThreadDemo threadDemo1 = new ThreadDemo("new-thread-01"); // NEW +// threadDemo1.start(); // RUNNABLE + threadDemo1.stop(); + threadDemo1.interrupt(); + threadDemo1.resume(); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/thread/ThreadDemo.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/thread/ThreadDemo.java new file mode 100644 index 0000000..e34dc60 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/thread/ThreadDemo.java @@ -0,0 +1,64 @@ +package com.jindo.core.session1.thread; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + * @note: Tạo một Thread cơ bản từ việc kế thừa Thread + */ +public class ThreadDemo extends Thread { + + private Thread t; + private String threadName; + + /** + * Vừa setting tên và thực hiện gán cho nó một Thread + * @param t + * @param name + */ + ThreadDemo(Thread t, String name){ + this.t = t; + this.threadName = name; + System.out.println("Creating " + threadName + ", Thread " + t.getName()); + } + + /** + * Constructor thực hiện khởi tọa đối tượng ThreadDemo + * và setting giá trị name cho nó + * @param name + */ + ThreadDemo(String name) { + this.threadName = name; + System.out.println("Creating " + threadName); + } + + /** + * Nơi định nghĩa các kịch bản chạy của Thread này + * Thực hiện chạy thread với N lần quy định, mỗi lần chạy nghỉ M giây + */ + @Override + public void run() { + System.out.println("Running " + threadName); + try { + for (int i = 10; i > 0; i--) { + System.out.println("Thread " + threadName + ", " + i); + Thread.sleep(2000); + } + } catch (InterruptedException e) { + System.err.println("Thread: " + threadName + " interrupted."); + } + System.out.println("Thread " + threadName + " exiting..."); + } + + /** + * Hàm bắt đầu custom của chương trình + * Client sẽ gọi hàm này -> nó sẽ gọi hàm start của thread + * Từ đó cấp phát tài nguyên và bắt đầu -> run() của thread + */ + public void start() { + System.out.println("Starting " + threadName); + if (t == null) { + t = new Thread(this, threadName); // Not this.threadName + t.start(); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/thread/ThreadDemoTest.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/thread/ThreadDemoTest.java new file mode 100644 index 0000000..c9287db --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session1/thread/ThreadDemoTest.java @@ -0,0 +1,21 @@ +package com.jindo.core.session1.thread; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class ThreadDemoTest { + + public static void main(String[] args) { + + System.out.println("Main thread running..."); + + ThreadDemo threadDemo1 = new ThreadDemo("Thread-1-HR-Database"); + threadDemo1.start(); + + ThreadDemo threadDemo2 = new ThreadDemo("Thread-2-Send-Email"); + threadDemo2.start(); + + System.out.println("Main thread stopped!"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/DaemonThreadTest.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/DaemonThreadTest.java new file mode 100644 index 0000000..cfb0157 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/DaemonThreadTest.java @@ -0,0 +1,18 @@ +package com.jindo.core.session2; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class DaemonThreadTest { + + public static void main(String[] args) throws InterruptedException { + WorkingThread runnableWorkingThread = new WorkingThread("Thread-01"); + runnableWorkingThread.start(); + + // continue program: + Thread.sleep(3000); + System.out.println(Thread.currentThread().getName()); + System.out.println(">>><<< Finishing Main Program"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/NonDaemonThreadTest.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/NonDaemonThreadTest.java new file mode 100644 index 0000000..bf94059 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/NonDaemonThreadTest.java @@ -0,0 +1,19 @@ +package com.jindo.core.session2; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class NonDaemonThreadTest { + + public static void main(String[] args) throws InterruptedException { + WorkingThread runnableWorkingThread = new WorkingThread("Thread-01"); + Thread thread1 = new Thread(runnableWorkingThread); + + thread1.start(); + + // continue program: + Thread.sleep(3000); + System.out.println(">>><<< Finishing Main Program"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/NonDaemonThreadTest2.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/NonDaemonThreadTest2.java new file mode 100644 index 0000000..bbe7e8a --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/NonDaemonThreadTest2.java @@ -0,0 +1,34 @@ +package com.jindo.core.session2; + +/** + * @author ManhKM as [ADMIN] + * @project multi-thread-tutorial on 7/26/2023-11:36 AM (>_<)/ + * @note + */ +public class NonDaemonThreadTest2 { + public static void main(String[] args) { + Thread dt = new Thread(new WorkingThread2(), "My Non-Daemon Thread 2"); + + dt.setDaemon(false); + dt.start(); + + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + Thread dt2 = new Thread(new WorkingThread2(), "My Daemon Thread 2"); + + dt2.setDaemon(true); + dt2.start(); + + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + System.out.println(">><< Finishing main program"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/WorkingThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/WorkingThread.java new file mode 100644 index 0000000..866d742 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/WorkingThread.java @@ -0,0 +1,58 @@ +package com.jindo.core.session2; + +import java.util.Random; + +/** + * @author ManhKM on 3/8/2023 + * @project multi-thread-tutorial + */ +public class WorkingThread implements Runnable { + + private String name; + private Thread t; + + WorkingThread() { + System.out.println("CREATING..."); + } + + WorkingThread(String name) { + this.name = name; + System.out.println("CREATING..." + name); + } + + @Override + public void run() { + int count = 0; + while (true) { + count++; + processSomething(count); + } + } + + public void start(){ + System.out.println("STARTING..." + name); + if(t == null){ + t = new Thread(this, name); + t.setDaemon(true); + t.start(); + System.out.println(t.getName()); + } + } + + private void processSomething(int count) { + Random random = new Random(); + int i = random.nextInt(999999999); + + try { + System.out.println( + "[" + i + "]" + "Processing working thread " + this.name + "[" + count + "]"); + Thread.sleep(0); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + if (i == 45678) { + throw new RuntimeException("Giá trị này = 100, không xủ lý trong Thread"); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/WorkingThread2.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/WorkingThread2.java new file mode 100644 index 0000000..3d1f081 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session2/WorkingThread2.java @@ -0,0 +1,24 @@ +package com.jindo.core.session2; + +/** + * @author ManhKM as [ADMIN] + * @project multi-thread-tutorial on 7/26/2023-11:34 AM (>_<)/ + * @note Thực hiện một luồng cơ bản + */ +public class WorkingThread2 implements Runnable { + @Override + public void run() { + while (true) { + processSomething(); + } + } + + private void processSomething() { + try { + System.out.println("Processing working thread"); + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/block/ShareMemory.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/block/ShareMemory.java new file mode 100644 index 0000000..3bd89f5 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/block/ShareMemory.java @@ -0,0 +1,21 @@ +package com.jindo.core.session3.block; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class ShareMemory { + + //synchronized + public synchronized void printData(String threadName) { + synchronized (this) { + for (int i = 1; i <= 20; i++) { + System.out.println(threadName + ": " + i); + } + } + +// for (int i = 1; i <= 20; i++) { +// System.out.println(threadName + ": " + i); +// } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/block/ShareMemoryTest.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/block/ShareMemoryTest.java new file mode 100644 index 0000000..1c63fbf --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/block/ShareMemoryTest.java @@ -0,0 +1,24 @@ +package com.jindo.core.session3.block; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class ShareMemoryTest { + + public static void main(String[] args) { + System.out.println("Share Memory - Synchronized Block"); + + ShareMemory shareMemory = new ShareMemory(); + + WorkingThread thread1 = new WorkingThread(shareMemory, "Thread-01"); + WorkingThread thread2 = new WorkingThread(shareMemory, "Thread-02"); + WorkingThread thread3 = new WorkingThread(shareMemory, "Thread-03"); + WorkingThread thread4 = new WorkingThread(shareMemory, "Thread-04"); + + thread1.start(); + thread2.start(); + thread3.start(); + thread4.start(); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/block/WorkingThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/block/WorkingThread.java new file mode 100644 index 0000000..c61fa6d --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/block/WorkingThread.java @@ -0,0 +1,31 @@ +package com.jindo.core.session3.block; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class WorkingThread extends Thread { + + private ShareMemory shareMemory; + private String threadName; + + public WorkingThread(ShareMemory shareMemory, String threadName) { + this.shareMemory = shareMemory; + this.threadName = threadName; + System.out.println("CREATING...[" + this.threadName + "]" + " - " + shareMemory); + } + + @Override + public void run() { + System.out.println("RUNNING...[" + this.threadName + "]"); + this.shareMemory.printData(this.threadName); + } + +// public void start() { +// System.out.println("STARTING...[" + this.threadName + "]"); +// if (thread == null) { +// thread = new Thread(this, threadName); +// thread.start(); +// } +// } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/deadlock/DeadLockTest.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/deadlock/DeadLockTest.java new file mode 100644 index 0000000..f93e5be --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/deadlock/DeadLockTest.java @@ -0,0 +1,30 @@ +package com.jindo.core.session3.deadlock; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class DeadLockTest { + + public static void main(String[] args) throws InterruptedException { + + Object obj1 = new String("object1"); + Object obj2 = new String("object2"); + Object obj3 = new String("object3"); + + DeadlockThread thread1 = new DeadlockThread("Thread-01", obj1, obj2); + DeadlockThread thread2 = new DeadlockThread("Thread-02", obj2, obj3); + DeadlockThread thread3 = new DeadlockThread("Thread-03", obj3, obj1); + + thread1.start(); + Thread.sleep(1000); + + thread2.start(); + Thread.sleep(1000); + + thread3.start(); + Thread.sleep(1000); + + System.out.println("Ending Main Thread"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/deadlock/DeadlockThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/deadlock/DeadlockThread.java new file mode 100644 index 0000000..84e420c --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/deadlock/DeadlockThread.java @@ -0,0 +1,57 @@ +package com.jindo.core.session3.deadlock; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class DeadlockThread implements Runnable { + + private Thread thread; + private String threadName; + private Object object1; + private Object object2; + + public DeadlockThread(String threadName, Object object1, Object object2) { + this.threadName = threadName; + this.object1 = object1; + this.object2 = object2; + System.out.println("CREATING... " + threadName + " " + object1 + " " + object2); + } + + @Override + public void run() { + System.out.println("RUNNING... " + threadName); + System.out.println(threadName + " mở khóa " + object1); + + synchronized (object1){ + System.out.println(threadName + " được khóa trên " + object1); + work(); + + System.out.println(threadName + " mở khóa " + object2); + synchronized (object2){ + System.out.println(threadName + " được khóa trên " + object2); + work(); + } + System.out.println(threadName + " phát hành khóa trên " + object2); + } + System.out.println(threadName + " phát hành khóa trên " + object1); + System.out.println(threadName + " finished execution...."); + } + + private void work() { + try { + System.out.println("SLEEPING... " + threadName); + Thread.sleep(6000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public void start(){ + System.out.println("STARTING... " + threadName); + if(thread == null){ + thread = new Thread(this, threadName); + thread.start(); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/method/ShareMemory.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/method/ShareMemory.java new file mode 100644 index 0000000..7a2d663 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/method/ShareMemory.java @@ -0,0 +1,24 @@ +package com.jindo.core.session3.method; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class ShareMemory { + + // Xác định index in ra ngoài màn hình + volatile int count = 0; + + /** + * synchronized + * Cơ chế: Phương thức này sẽ được cấp duy nhất 1 java monitor + * Chỉ có luồng nào nắm giữ monitor mới có quyền gọi phương thức này + * @param threadName + */ + public synchronized void printData(String threadName){ + for (int i = 1; i <= 20; i++){ + count++; + System.out.println(threadName + ": " + i + "\t - [count]: " + count); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/method/ShareMemoryTest.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/method/ShareMemoryTest.java new file mode 100644 index 0000000..fdbd2fc --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/method/ShareMemoryTest.java @@ -0,0 +1,35 @@ +package com.jindo.core.session3.method; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class ShareMemoryTest { + + public static void main(String[] args) { + + System.out.println("Synchronized methods: "); + + ShareMemory shareMemory = new ShareMemory(); + + WorkingThread thread1 = new WorkingThread(shareMemory, "Thread-01"); + WorkingThread thread2 = new WorkingThread(shareMemory, "Thread-02"); + WorkingThread thread3 = new WorkingThread(shareMemory, "Thread-03"); + WorkingThread thread4 = new WorkingThread(shareMemory, "Thread-04"); + WorkingThread thread5 = new WorkingThread(shareMemory, "Thread-05"); + WorkingThread thread6 = new WorkingThread(shareMemory, "Thread-06"); + WorkingThread thread7 = new WorkingThread(shareMemory, "Thread-07"); + WorkingThread thread8 = new WorkingThread(shareMemory, "Thread-08"); + + thread1.start(); + thread2.start(); + thread3.start(); + thread4.start(); + thread5.start(); + thread6.start(); + thread7.start(); + thread8.start(); + + System.out.println("THE END APPLICATION...."); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/method/WorkingThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/method/WorkingThread.java new file mode 100644 index 0000000..85c7578 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/method/WorkingThread.java @@ -0,0 +1,31 @@ +package com.jindo.core.session3.method; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class WorkingThread extends Thread { + + private ShareMemory shareMemory; + private String threadName; + + public WorkingThread(ShareMemory shareMemory, String threadName) { + this.shareMemory = shareMemory; + this.threadName = threadName; + System.out.println("CREATING...[" + this.threadName + "]" + " - " + shareMemory); + } + + @Override + public void run() { + System.out.println("RUNNING...[" + this.threadName + "]"); + this.shareMemory.printData(this.threadName); + } + +// public void start() { +// System.out.println("STARTING...[" + this.threadName + "]"); +// if (thread == null) { +// thread = new Thread(this, threadName); +// thread.start(); +// } +// } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/Customer.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/Customer.java new file mode 100644 index 0000000..03afd8b --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/Customer.java @@ -0,0 +1,41 @@ +package com.jindo.core.session3.notification; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class Customer { + + private int balance = 1000; + + public Customer() { + System.out.println("Tài khoản của bạn là: " + balance); + } + + /** + * Thực hiện giao dịch rút tiền + * + * @param amount + */ + public synchronized void withdraw(int amount) { + System.out.println("Đang thực hiện giao dịch rút tiền " + amount + " ..."); + while (balance < amount) { + System.out.println("Không đủ số tiền trong tài khoản để rút, số dư hiện tại là: " + this.balance); + try { + wait(); // Chờ đến khi nạp đủ tiền + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + balance -= amount; + System.out.println("Rút tiền thành công. Tài khoản hiện tại là: " + balance); + } + + public synchronized void deposit(int amount) { + System.out.println("Đang thực hiện giao dịch nạp tiền " + amount + " ..."); + balance += amount; + System.out.println("Nạp tiền thành công. Tài khoản hiện tại của bạn là: " + balance); + notify(); // Thông báo random thread khac + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/CustomerDepositThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/CustomerDepositThread.java new file mode 100644 index 0000000..d264b00 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/CustomerDepositThread.java @@ -0,0 +1,39 @@ +package com.jindo.core.session3.notification; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class CustomerDepositThread implements Runnable{ + + private Thread thread; + private String threadName; + private Customer customer; + private int money; + + CustomerDepositThread(String threadName, Customer customer, int money){ + this.threadName = threadName; + this.customer = customer; + this.money = money; + System.out.println("CREATING... " + threadName + " " + customer + " " + money); + } + + @Override + public void run() { + System.out.println("RUNNING... " + threadName); + try { + Thread.sleep(20000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + this.customer.deposit(this.money); + } + + public void start(){ + System.out.println("STARTING... " + threadName); + if(thread == null){ + thread = new Thread(this, threadName); + thread.start(); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/CustomerOperationExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/CustomerOperationExample.java new file mode 100644 index 0000000..2515c5f --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/CustomerOperationExample.java @@ -0,0 +1,29 @@ +package com.jindo.core.session3.notification; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class CustomerOperationExample { + + public static void main(String[] args) { + System.out.println("Starting Main Thread"); + + Customer customer = new Customer(); + + CustomerWithDrawThread thread1 = new CustomerWithDrawThread("Thread-01-WithDraw", customer, 2000); + thread1.start(); + + CustomerDepositThread thread2 = new CustomerDepositThread("Thread-02-Deposit", customer, 500); + thread2.start(); + + CustomerDepositThread thread3 = new CustomerDepositThread("Thread-03-Deposit", customer, 10000); + thread3.start(); + + CustomerWithDrawThread thread4 = new CustomerWithDrawThread("Thread-04-WithDraw", customer, 9000); + thread4.start(); + + System.out.println("End Main Thread"); + + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/CustomerWithDrawThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/CustomerWithDrawThread.java new file mode 100644 index 0000000..6bfbb7b --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/CustomerWithDrawThread.java @@ -0,0 +1,39 @@ +package com.jindo.core.session3.notification; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class CustomerWithDrawThread implements Runnable{ + + private Thread thread; + private String threadName; + private Customer customer; + private int money; + + CustomerWithDrawThread(String threadName, Customer customer, int money){ + this.threadName = threadName; + this.customer = customer; + this.money = money; + System.out.println("CREATING... " + threadName + " " + customer + " " + money); + } + + @Override + public void run() { + System.out.println("RUNNING... " + threadName); + try { + Thread.sleep(20000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + this.customer.withdraw(this.money); + } + + public void start(){ + System.out.println("STARTING... " + threadName); + if(thread == null){ + thread = new Thread(this, threadName); + thread.start(); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/readme.md b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/readme.md new file mode 100644 index 0000000..e112f66 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/notification/readme.md @@ -0,0 +1,10 @@ +## Sử dụng với bài toán Notification trong bài toán đa luồng. + +### Bài toán + +Nếu trong quá trình luồng 1 khóa đối tượng Resource b, sau khi thực hiện được 1 đoạn công việc, luồng 1 cần luồng 2 làm việc số việc gì đó trên resource B này. + +Sau khi đó mới có điều kiện để luồng 1 thực hiện tiếp logic -> lúc này mới có đủ dữ liệu để làm tiếp. + +wait(), notify(), notifyall() + diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/readme.md b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/readme.md new file mode 100644 index 0000000..2e1eccf --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/readme.md @@ -0,0 +1,6 @@ +## Đồng bộ luồng trong Java + +Đồng bộ hóa (synchronized) chính là việc xắp xếp thứ tự các luồng khi truy xuất vào cùng đối tượng sao cho nó không có sự xung đột dữ liệu. + +Đồng bộ hóa = thứ tự hóa + diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/staticmethod/ShareMemory.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/staticmethod/ShareMemory.java new file mode 100644 index 0000000..39b756f --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/staticmethod/ShareMemory.java @@ -0,0 +1,15 @@ +package com.jindo.core.session3.staticmethod; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class ShareMemory { + + //synchronized + public static synchronized void printData(String threadName){ + for (int i = 1; i <= 20; i++){ + System.out.println(threadName + ": " + i); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/staticmethod/ShareMemoryTest.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/staticmethod/ShareMemoryTest.java new file mode 100644 index 0000000..6d7024e --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/staticmethod/ShareMemoryTest.java @@ -0,0 +1,23 @@ +package com.jindo.core.session3.staticmethod; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class ShareMemoryTest { + + public static void main(String[] args) { + + ShareMemory shareMemory = new ShareMemory(); + + WorkingThread thread1 = new WorkingThread(shareMemory, "Thread-01"); + WorkingThread thread2 = new WorkingThread(shareMemory, "Thread-02"); + WorkingThread thread3 = new WorkingThread(shareMemory, "Thread-03"); + WorkingThread thread4 = new WorkingThread(shareMemory, "Thread-04"); + + thread1.start(); + thread2.start(); + thread3.start(); + thread4.start(); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/staticmethod/WorkingThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/staticmethod/WorkingThread.java new file mode 100644 index 0000000..0ef6204 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/staticmethod/WorkingThread.java @@ -0,0 +1,32 @@ +package com.jindo.core.session3.staticmethod; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class WorkingThread extends Thread { + + private Thread thread; + private ShareMemory shareMemory; + private String threadName; + + public WorkingThread(ShareMemory shareMemory, String threadName) { + this.shareMemory = shareMemory; + this.threadName = threadName; + System.out.println("CREATING...[" + this.threadName + "]" + " - " + shareMemory); + } + + @Override + public void run() { + System.out.println("RUNNING...[" + this.threadName + "]"); + this.shareMemory.printData(this.threadName); + } + +// public void start() { +// System.out.println("STARTING...[" + this.threadName + "]"); +// if (thread == null) { +// thread = new Thread(this, threadName); +// thread.start(); +// } +// } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/summary/SynchronizationExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/summary/SynchronizationExample.java new file mode 100644 index 0000000..8baf36b --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session3/summary/SynchronizationExample.java @@ -0,0 +1,38 @@ +package com.jindo.core.session3.summary; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class SynchronizationExample { + + private static SynchronizationExample instance; + + public synchronized void lockedByThis() { + System.out + .println("This synchronized method is locked by current instance of Object. This"); + } + + public static synchronized SynchronizationExample lockedByClassLock() { + System.out.println( + "This static synchronized method is locked by class level lock of this class"); + if (instance == null) { + instance = new SynchronizationExample(); + } + return instance; + } + + public static synchronized SynchronizationExample lockedBySynchronizedBlock() { + System.out.println("This line is executed without locking"); + if (instance == null) { + synchronized (instance) { // synchronized (SynchronizationExample.class) + // Thread Safe. Might be costly operation in some case + if (instance == null) { + instance = new SynchronizationExample(); + } + } + } + return instance; + } + +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/MonitorThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/MonitorThread.java new file mode 100644 index 0000000..95e46ed --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/MonitorThread.java @@ -0,0 +1,44 @@ +package com.jindo.core.session4.customthreadpool; + +import java.util.concurrent.ThreadPoolExecutor; + +/** + * @author ManhKM on 3/10/2023 + * @project multi-thread-tutorial + */ +public class MonitorThread implements Runnable { + + private ThreadPoolExecutor executor; + private int second; + private boolean run = true; + + public MonitorThread(ThreadPoolExecutor executor, int delay) { + this.executor = executor; + this.second = delay; + } + + public void shutdown() { + this.run = false; + } + + @Override + public void run() { + while (run) { + System.out.println(String.format( + "[monitor] [%d/%d] Active: %d, Completed: %d, Task: %d, isShutdown: %s, isTerminated: %s", + this.executor.getPoolSize(), + this.executor.getCorePoolSize(), + this.executor.getActiveCount(), + this.executor.getCompletedTaskCount(), + this.executor.getTaskCount(), + this.executor.isShutdown(), + this.executor.isTerminated())); + + try { + Thread.sleep(second * 1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/RejectedExecutionHandlerImpl.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/RejectedExecutionHandlerImpl.java new file mode 100644 index 0000000..3f4fe4e --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/RejectedExecutionHandlerImpl.java @@ -0,0 +1,17 @@ +package com.jindo.core.session4.customthreadpool; + +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * @author ManhKM on 3/10/2023 + * @project multi-thread-tutorial + */ +public class RejectedExecutionHandlerImpl implements RejectedExecutionHandler { + + @Override + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { + + System.out.println(r.toString() + " is rejected"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/ThreadFactoryBuilder.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/ThreadFactoryBuilder.java new file mode 100644 index 0000000..786241d --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/ThreadFactoryBuilder.java @@ -0,0 +1,109 @@ +package com.jindo.core.session4.customthreadpool; + +import java.lang.Thread.UncaughtExceptionHandler; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicLong; + +/** + * @author ManhKM on 3/10/2023 + * @project multi-thread-tutorial + */ +public class ThreadFactoryBuilder { + + private String namePrefix = null; + private boolean daemon = false; + private int priority = Thread.NORM_PRIORITY; + private ThreadFactory backingThreadFactory = null; + private UncaughtExceptionHandler uncaughtExceptionHandler = null; + + public ThreadFactoryBuilder() { + + } + + public ThreadFactoryBuilder setNamePrefix(String namePrefix) { + if (namePrefix == null) { + throw new NullPointerException(); + } + this.namePrefix = namePrefix; + return this; + } + + public ThreadFactoryBuilder setDaemon(boolean daemon) { + this.daemon = daemon; + return this; + } + + public ThreadFactoryBuilder setPriority(int priority) { + if (priority < Thread.MIN_PRIORITY) { + throw new IllegalArgumentException( + String.format("Thread priority (%s) must be >= %s", priority, + Thread.MIN_PRIORITY)); + } + + if (priority > Thread.MAX_PRIORITY) { + throw new IllegalArgumentException( + String.format("Thread priority (%s) must be <= %s", priority, + Thread.MAX_PRIORITY)); + } + + this.priority = priority; + return this; + + } + + public ThreadFactoryBuilder setUncaughtExceptionHandler( + UncaughtExceptionHandler uncaughtExceptionHandler) { + if (null == uncaughtExceptionHandler) { + throw new NullPointerException("UncaughtExceptionHandler cannot be null"); + } + this.uncaughtExceptionHandler = uncaughtExceptionHandler; + return this; + } + + public ThreadFactoryBuilder setThreadFactory(ThreadFactory backingThreadFactory) { + if (null == uncaughtExceptionHandler) { + throw new NullPointerException("BackingThreadFactory cannot be null"); + } + this.backingThreadFactory = backingThreadFactory; + return this; + } + + public ThreadFactory build() { + return build(this); + } + + private static ThreadFactory build(ThreadFactoryBuilder builder) { + final String namePrefix = builder.namePrefix; + final Boolean daemon = builder.daemon; + final Integer priority = builder.priority; + final UncaughtExceptionHandler uncaughtExceptionHandler = builder.uncaughtExceptionHandler; + final ThreadFactory backingThreadFactory = + (builder.backingThreadFactory != null) ? builder.backingThreadFactory + : Executors.defaultThreadFactory(); + + final AtomicLong count = new AtomicLong(0); + + return new ThreadFactory() { + @Override + public Thread newThread(Runnable runnable) { + Thread thread = backingThreadFactory.newThread(runnable); + if (namePrefix != null) { + thread.setName(namePrefix + "-" + count.getAndIncrement()); + } + if (daemon != null) { + thread.setDaemon(daemon); + } + if (priority != null) { + thread.setPriority(priority); + } + if (uncaughtExceptionHandler != null) { + thread.setUncaughtExceptionHandler(uncaughtExceptionHandler); + } + return thread; + } + }; + } + + +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/ThreadPoolExecutorExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/ThreadPoolExecutorExample.java new file mode 100644 index 0000000..503981e --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/ThreadPoolExecutorExample.java @@ -0,0 +1,61 @@ +package com.jindo.core.session4.customthreadpool; + +import java.lang.Thread.UncaughtExceptionHandler; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 3/10/2023 + * @project multi-thread-tutorial + */ +public class ThreadPoolExecutorExample { + + public static void main(String[] args) throws InterruptedException { + + final int CORE_POOL_SIZE = 2; + final int MAX_POOL_SIZE = 4; + final long KEEP_ALIVE_TIME = 10; + + BlockingQueue workQueue = new ArrayBlockingQueue(2); + + RejectedExecutionHandlerImpl rejectionHandler = new RejectedExecutionHandlerImpl(); + + ThreadFactory threadFactory = new ThreadFactoryBuilder() + .setNamePrefix("ManhKM-ThreadPool") + .setDaemon(false) + .setPriority(Thread.MAX_PRIORITY) + .setUncaughtExceptionHandler(new UncaughtExceptionHandler() { + @Override + public void uncaughtException(Thread t, Throwable e) { + System.err.println(String.format("Custom Exception: Thread %s threw exception - %s", + t.getName(), e.getMessage())); + } + }).build(); + + // Creating the ThreadPoolExecutor: + ThreadPoolExecutor executorPool = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS, workQueue, threadFactory, rejectionHandler); + + // start the monitoring thread + MonitorThread monitor = new MonitorThread(executorPool, 3); + Thread monitorThread = new Thread(monitor); + monitorThread.start(); + + // submit work to the thread pool + for (int i = 1; i <= 10; i++) { + executorPool.execute(new WorkerTempThread("cmd" + i)); + } + + Thread.sleep(30000); + + // shut down the pool + executorPool.shutdown(); + + // shut down the monitor thread + Thread.sleep(5000); + monitor.shutdown(); + + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/WorkerTempThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/WorkerTempThread.java new file mode 100644 index 0000000..577e6c8 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/customthreadpool/WorkerTempThread.java @@ -0,0 +1,38 @@ +package com.jindo.core.session4.customthreadpool; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class WorkerTempThread implements Runnable{ + + private String task; + + public WorkerTempThread(String task){ + this.task = task; + } + + @Override + public void run() { +// System.out.println("RUNNING... " + Thread.currentThread().getName()); + + System.out.println(Thread.currentThread().getName() + " Starting. Task = " + task); + processCommand(); + System.out.println(Thread.currentThread().getName() + " Finished."); + + } + + private void processCommand() { + try { +// System.out.println(" ... PROCESSING... " + Thread.currentThread().getName() + " Starting. Task = " + task); + Thread.sleep(50); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + @Override + public String toString() { + return "Task = " + task; + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/CachedThreadPoolExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/CachedThreadPoolExample.java new file mode 100644 index 0000000..025c64f --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/CachedThreadPoolExample.java @@ -0,0 +1,31 @@ +package com.jindo.core.session4.threadpool; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class CachedThreadPoolExample { + + public static void main(String[] args) throws InterruptedException { + ExecutorService executor = Executors.newCachedThreadPool(); + + for (int i = 0; i <= 100; i++){ + Runnable worker = new WorkerTempThread(String.valueOf(i)); + executor.execute(worker); + Thread.sleep(400); + } + + + executor.shutdown(); + + while (!executor.isTerminated()){ + // Running... + System.out.println("Executor is not Terminated"); + } + + System.out.println("Finished all threads"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/FixedThreadPoolExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/FixedThreadPoolExample.java new file mode 100644 index 0000000..7cfca43 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/FixedThreadPoolExample.java @@ -0,0 +1,29 @@ +package com.jindo.core.session4.threadpool; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class FixedThreadPoolExample { + + public static final int NUM_OF_THREAD = 10; + + public static void main(String[] args) { + ExecutorService executor = Executors.newFixedThreadPool(NUM_OF_THREAD); + for (int i = 1; i <= 100; i++) { + Runnable worker = new WorkerTempThread(String.valueOf(i)); + executor.execute(worker); + } + + executor.shutdown(); + + while (!executor.isTerminated()) { + // Running... + } + + System.out.println("Finished all threads"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/ScheduledThreadPoolExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/ScheduledThreadPoolExample.java new file mode 100644 index 0000000..385cac1 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/ScheduledThreadPoolExample.java @@ -0,0 +1,38 @@ +package com.jindo.core.session4.threadpool; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 3/10/2023 + * @project multi-thread-tutorial + */ +public class ScheduledThreadPoolExample { + + public static final int NUM_OF_THREAD = 10; + public static final int INITIAL_DELAY = 1; // second + public static final int DELAY = 3; //second + + public static void main(String[] args) throws InterruptedException { + + ScheduledExecutorService executor = Executors.newScheduledThreadPool(NUM_OF_THREAD); + + for (int i = 1; i <= 500; i++){ + Runnable worker = new WorkerTempThread(String.valueOf(i)); + executor.scheduleWithFixedDelay(worker, INITIAL_DELAY, DELAY, TimeUnit.SECONDS); + } + + // wait for termination for 10 seconds only: + executor.awaitTermination(10, TimeUnit.SECONDS); + + executor.shutdown(); + + while (!executor.isTerminated()){ + // Running something + + } + + System.out.println("Finished all threads"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/SingleThreadExecutorExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/SingleThreadExecutorExample.java new file mode 100644 index 0000000..18faac6 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/SingleThreadExecutorExample.java @@ -0,0 +1,33 @@ +package com.jindo.core.session4.threadpool; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class SingleThreadExecutorExample { + + public static void main(String[] args) { + + /** + * Khi này nên hiểu rằng hệ thống tự động tạo một SingleThread thôi + * Còn Runnable ở đây coi như Task cần thực hiện + * Một Runnable tương đương với 1 task + */ + ExecutorService executor = Executors.newSingleThreadExecutor(); + + for (int i = 1; i <= 10; i++) { + Runnable worker = new WorkerTempThread(String.valueOf(i)); + executor.execute(worker); + } + + executor.shutdown(); + + while (!executor.isTerminated()) { + //Running... + } + System.out.println("Finished all threads"); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/WorkerTempThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/WorkerTempThread.java new file mode 100644 index 0000000..bdd0778 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/WorkerTempThread.java @@ -0,0 +1,33 @@ +package com.jindo.core.session4.threadpool; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class WorkerTempThread implements Runnable{ + + private String task; + + public WorkerTempThread(String task){ + this.task = task; + } + + @Override + public void run() { +// System.out.println("RUNNING... " + Thread.currentThread().getName()); + + System.out.println(Thread.currentThread().getName() + " Starting. Task = " + task); + processCommand(); + System.out.println(Thread.currentThread().getName() + " Finished."); + + } + + private void processCommand() { + try { +// System.out.println(" ... PROCESSING... " + Thread.currentThread().getName() + " Starting. Task = " + task); + Thread.sleep(50); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/WorkerThread.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/WorkerThread.java new file mode 100644 index 0000000..45c3ca5 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session4/threadpool/WorkerThread.java @@ -0,0 +1,45 @@ +package com.jindo.core.session4.threadpool; + +/** + * @author ManhKM on 3/9/2023 + * @project multi-thread-tutorial + */ +public class WorkerThread implements Runnable{ + + private String task; + private String threadName; + private Thread thread; + + public WorkerThread(String threadName, String task){ + this.task = task; + this.threadName = threadName; + System.out.println("CREATING... " + this.threadName + " " + this.task); + } + + @Override + public void run() { + System.out.println("RUNNING... " + this.threadName + " " + this.task); + processCommand(); + System.out.println("FINISHED... " + this.threadName + " " + this.task); + + } + + private void processCommand() { + try { + System.out.println(" ...PROCESSING... "); + Thread.sleep(10); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public void start(){ + System.out.println("STARTING... " + this.threadName + " " + this.task); + if(thread == null){ + thread = new Thread(this, this.threadName); + thread.start(); + } + } + + +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session5/CallableExample.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session5/CallableExample.java new file mode 100644 index 0000000..dca8330 --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session5/CallableExample.java @@ -0,0 +1,54 @@ +package com.jindo.core.session5; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +/** + * @author ManhKM on 3/10/2023 + * @project multi-thread-tutorial + */ +public class CallableExample { + + public static void main(String[] args) { + + // create a list to hold the Future object associated with callable + List> list = new ArrayList<>(); + + ExecutorService executor = Executors.newFixedThreadPool(10); + + Callable callable; + + Future future; + + for (int i = 0; i <= 999999; i++) { + callable = new CallableWorker(i); + future = executor.submit(callable); + list.add(future); + } + + executor.shutdown(); + + while (!executor.isTerminated()){ + //Running something + } + + int sum = 0; + for (Future f : list){ + try { + sum += f.get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + } + + System.out.println("Finished all threads: "); + System.out.println("Sum all = " + sum); + } +} diff --git a/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session5/CallableWorker.java b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session5/CallableWorker.java new file mode 100644 index 0000000..d6a2e2e --- /dev/null +++ b/Java-Concurrence/multi-thread-tutorial/src/com/jindo/core/session5/CallableWorker.java @@ -0,0 +1,27 @@ +package com.jindo.core.session5; + +import java.util.Random; +import java.util.concurrent.Callable; + +/** + * @author ManhKM on 3/10/2023 + * @project multi-thread-tutorial + */ +public class CallableWorker implements Callable { + + private int num; // Truyền vào 1 số cần tính + private Random ran; // Số bất kỳ để sleep + + public CallableWorker(int num){ + this.num = num; + this.ran = new Random(); + } + + @Override + public Integer call() throws Exception { + Thread.sleep(ran.nextInt(10)); + int result = num * num; + System.out.println("Complete " + num); + return result; + } +} diff --git a/Java-ThreadPool/readme.md b/Java-Concurrence/readme.md similarity index 89% rename from Java-ThreadPool/readme.md rename to Java-Concurrence/readme.md index 479dca5..5763de3 100644 --- a/Java-ThreadPool/readme.md +++ b/Java-Concurrence/readme.md @@ -100,4 +100,9 @@ https://gpcoder.com/category/java-core/multi-thread/ -2. \ No newline at end of file +2. Java Concurrency and Multithreading + https://www.youtube.com/playlist?list=PLL8woMHwr36EDxjUoCzboZjedsnhLP1j4 + +3. Java ExecutorService + https://jenkov.com/tutorials/java-util-concurrent/executorservice.html#task-delegation + \ No newline at end of file diff --git a/Java-Concurrence/synch-unsynch-v1.0.drawio b/Java-Concurrence/synch-unsynch-v1.0.drawio new file mode 100644 index 0000000..c1a6228 --- /dev/null +++ b/Java-Concurrence/synch-unsynch-v1.0.drawio @@ -0,0 +1 @@ +5Vpbc+MmFP41muk+OKO7rEfLTrLbbraZcTrdPCIJSzSycBFK7P76AgJdguI4s7lo2zzEcDiA+M4HnHMkw1lu95cE7PIrnMLCsM10bzgrw7Yt37fZD5ccGsnckYKMoFQqdYI1+gdKoSmlNUphNVCkGBcU7YbCBJclTOhABgjBD0O1DS6Gs+5ABjXBOgGFLv0TpTSXUssPu4bPEGW5nHpuB03DFihluZIqByl+6Imcc8NZEoxpU9rul7Dg4Clcmn4XT7S2D0ZgSU/p8OX29/rXL1YSrVfh9+w8uXEugpkc5R4UtVywsXSN0DTOLSOKjNApM9YcqypbtF+w2aKYsFLGS7+sD2WSE1wy06Wf9PYMyc6LC26mHHOjImPpGAuLG5PI5nnEm5VuAERNaCVcTRRNxIplVh9EbVFyXvFiFIrHTPJa/N7lQugOnl2MXwE+QqFEQZJL29CDMjjBdZlCjpnJnv4hRxSudyDhrQ+M4kyW023BahYrblBRLHGBiejrXIg/Jtdto4CGhMJ9TyRtdQnxFlJyYCqydS5pcxhWHzoS2qaU5T3++VIGJO+zduCOGqwg2fECptgaUyIB48JYeJQ1CN5YL+DNH2V1nDlXcvwo4Ay4a40mLG0sfSMy+f+FJeZiROKkWJY5rwgGLFbcvszcgjtbTrxGp9NYDtonSgXHnhgXHI0LVzU7kmc0JxCkk8Xx8Z7yfB1Iy35PIF0NyK/1YAtpu+ZGQPxpshhPDmJPg7iBcHbN3IifBcZ2e38YjL4G42dQ5VcMkqlC6D9/g74vhIEG4RKXSU34GqcO5tydGJhzDcy+HzplKC3TnBiWoYblHTw8YML6LDiGPWD1G+m3xtl2QOtYM4/QQsd89iYI2DUeWMgsZfJIoBjefGalYoGVcPNlxWucvcFE29bNpI1nJ6sr1PqlKgiZO9wNnLGHB1tucrEEETKgZ6bcY/Gjd/2bLU0ObpWdI9z4p3IIJ2nCk1bT6XDANIfkB9mKS7qWfUfiwpfv9hOuH9t9T4qqdECPo+d7mNQUkzUk94gBM9X9Pr273NKj/sYn4i6RgnWyeLrTw1OPjTX0qhzseBFtRcIp4utFCSi+ghgW17hCFOGStceYUrxlCgVviEBylwnge2BuxF9vjEWBMt6XYm4FUO2aRNgG7bm5IjHlQklNJWHlnFKeRlvw5dsXQlqd3aO4wGegQuxEv7DTwIKBZ83MGMYzNwnN2dxyzVlswdhPNjBIN8nZjp2Mr+OyPfIy3BHTemOmtTz7rWyrx7r/GdvGMfBD1505m9SbuXCTzOa26c3seRCH1sZzPOi+nW39U21rh9Zb2VYPv7tz8AZUd5M/Cx/HOKNnofeuZ2H4DFiY0BxnuGTbA3NOC4j+gpQeZPIfMMSHAMI9ot959zNP1m57Lau9HFlUDqpSstX0OvHqbb+t6yZqqt+TRqlwTRJ4bOUy00ABySA9pigDQZgOXj3oRiawABTdD99EvL7F9AyJyOZRtgFGElDN+wHu7Zd561UH258mI9UmUz/OXdBzKTfjWH/rI8x7tCEJf9Z+QrwLeppseKICpKAUSPTiGpHujlbTNdj0LNa+wuvA4ptXhVwlLvm1/+Pn3PufWcGJZ5Y7rSNLT6VdE5zAqhrZRN0ecmqjfdujpQ2OvlKa7mZ5tFdc96P3iqVn5sR1snvSQN2NInWmi/b04LZPiE94lLE7ffXtxxQgViOYR1Gx1H5UqISuhoo/Bor/VqDoCQ5LQ4Utmg6JU1GC76CijjzV+2ySIiBjsoRBCclIsLZFacqnGWXqkMu6WY6b+XmqPgO682ZM1LMg3/43oCtXxT+J+G9nAz2iVQdubqkD9xIp59BBxvBbiUaVTd1pK2GK7tsPM2oVHYykwyv11cbKkF/wRM4wWLDq7qjvTdmbYGxOdVkHqN/7yAzqY4QTJ9Avpqe6vhqlK8ZRxPMrK6+r3Qhnkbuc40zGjI2bQnxIljPGw/IEdr88x+qe4IKHY4k4++XUZtXuKzjR1vuW0Dn/Fw== \ No newline at end of file diff --git a/Java-Core-Tutorial/10-java-core-best-practices/docs/10 Java Core Best Practice Every Java Programmer Should Know.docx b/Java-Core-Tutorial/10-java-core-best-practices/docs/10 Java Core Best Practice Every Java Programmer Should Know.docx new file mode 100644 index 0000000..4963f7e Binary files /dev/null and b/Java-Core-Tutorial/10-java-core-best-practices/docs/10 Java Core Best Practice Every Java Programmer Should Know.docx differ diff --git a/Java-Core-Tutorial/10-java-core-best-practices/pom.xml b/Java-Core-Tutorial/10-java-core-best-practices/pom.xml new file mode 100644 index 0000000..c2d87e6 --- /dev/null +++ b/Java-Core-Tutorial/10-java-core-best-practices/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + org.example + 10-java-core-best-practices + 1.0-SNAPSHOT + + + 8 + 8 + + + diff --git a/Java-CoreTutorial/documents/Java Core Tutorial v1.0.docx b/Java-Core-Tutorial/documents/Java Core Tutorial v1.0.docx similarity index 99% rename from Java-CoreTutorial/documents/Java Core Tutorial v1.0.docx rename to Java-Core-Tutorial/documents/Java Core Tutorial v1.0.docx index ae5565e..d0f2c1b 100644 Binary files a/Java-CoreTutorial/documents/Java Core Tutorial v1.0.docx and b/Java-Core-Tutorial/documents/Java Core Tutorial v1.0.docx differ diff --git a/Java-CoreTutorial/documents/java-core-tutorial-v1.bk.docx b/Java-Core-Tutorial/documents/java-core-tutorial-v1.bk.docx similarity index 100% rename from Java-CoreTutorial/documents/java-core-tutorial-v1.bk.docx rename to Java-Core-Tutorial/documents/java-core-tutorial-v1.bk.docx diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/data/IMG_20210211_131445_452.jpg b/Java-Core-Tutorial/introduction-java-variable-function-main/data/IMG_20210211_131445_452.jpg similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/data/IMG_20210211_131445_452.jpg rename to Java-Core-Tutorial/introduction-java-variable-function-main/data/IMG_20210211_131445_452.jpg diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/data/IMG_20210211_131454_229.jpg b/Java-Core-Tutorial/introduction-java-variable-function-main/data/IMG_20210211_131454_229.jpg similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/data/IMG_20210211_131454_229.jpg rename to Java-Core-Tutorial/introduction-java-variable-function-main/data/IMG_20210211_131454_229.jpg diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/data/IMG_20210211_131459_098.jpg b/Java-Core-Tutorial/introduction-java-variable-function-main/data/IMG_20210211_131459_098.jpg similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/data/IMG_20210211_131459_098.jpg rename to Java-Core-Tutorial/introduction-java-variable-function-main/data/IMG_20210211_131459_098.jpg diff --git "a/Java-CoreTutorial/introduction-java-variable-function-main/data/Khong Minh M\341\272\241nhhhdhdhd.docx" "b/Java-Core-Tutorial/introduction-java-variable-function-main/data/Khong Minh M\341\272\241nhhhdhdhd.docx" similarity index 100% rename from "Java-CoreTutorial/introduction-java-variable-function-main/data/Khong Minh M\341\272\241nhhhdhdhd.docx" rename to "Java-Core-Tutorial/introduction-java-variable-function-main/data/Khong Minh M\341\272\241nhhhdhdhd.docx" diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/data/VID_20210211_181900_766.mp4 b/Java-Core-Tutorial/introduction-java-variable-function-main/data/VID_20210211_181900_766.mp4 similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/data/VID_20210211_181900_766.mp4 rename to Java-Core-Tutorial/introduction-java-variable-function-main/data/VID_20210211_181900_766.mp4 diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/data/Viettel Post-Hien Nguye.pdf b/Java-Core-Tutorial/introduction-java-variable-function-main/data/Viettel Post-Hien Nguye.pdf similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/data/Viettel Post-Hien Nguye.pdf rename to Java-Core-Tutorial/introduction-java-variable-function-main/data/Viettel Post-Hien Nguye.pdf diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/data/Viettel Post-Ho Thi Quy.pdf b/Java-Core-Tutorial/introduction-java-variable-function-main/data/Viettel Post-Ho Thi Quy.pdf similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/data/Viettel Post-Ho Thi Quy.pdf rename to Java-Core-Tutorial/introduction-java-variable-function-main/data/Viettel Post-Ho Thi Quy.pdf diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/data/dsdsdsdsdsdsdsdsdsdsdsd.pdf b/Java-Core-Tutorial/introduction-java-variable-function-main/data/dsdsdsdsdsdsdsdsdsdsdsd.pdf similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/data/dsdsdsdsdsdsdsdsdsdsdsd.pdf rename to Java-Core-Tutorial/introduction-java-variable-function-main/data/dsdsdsdsdsdsdsdsdsdsdsd.pdf diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/ExceptionExample.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/ExceptionExample.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/ExceptionExample.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/ExceptionExample.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/Person.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/Person.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/Person.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/Person.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/SwapDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/SwapDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/SwapDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/SwapDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/cash/Cash.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/cash/Cash.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/cash/Cash.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/cash/Cash.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/cash/CashDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/cash/CashDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/cash/CashDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit10/theory/cash/CashDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit11/readme.md b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit11/readme.md similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit11/readme.md rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit11/readme.md diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/HelloWorld.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/HelloWorld.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/HelloWorld.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/HelloWorld.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/JavaListSynchronized.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/JavaListSynchronized.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/JavaListSynchronized.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/JavaListSynchronized.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/JavaSynchronized.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/JavaSynchronized.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/JavaSynchronized.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/theory/JavaSynchronized.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Calculation.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Calculation.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Calculation.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Calculation.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/JavaSynchronized.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/JavaSynchronized.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/JavaSynchronized.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/JavaSynchronized.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Thread1.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Thread1.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Thread1.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Thread1.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Thread2.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Thread2.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Thread2.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/Thread2.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/ThreadDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/ThreadDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/ThreadDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadexample/ThreadDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadstring/StringBuilderStringBufferThread.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadstring/StringBuilderStringBufferThread.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadstring/StringBuilderStringBufferThread.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit12/threadstring/StringBuilderStringBufferThread.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/ForTest.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/ForTest.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/ForTest.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/ForTest.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/MainArray.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/MainArray.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/MainArray.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/MainArray.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/StringBuilderTest.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/StringBuilderTest.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/StringBuilderTest.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/StringBuilderTest.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/StringTest.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/StringTest.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/StringTest.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/StringTest.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/WhileTest.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/WhileTest.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/WhileTest.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/WhileTest.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit1.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit1.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit1.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit1.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit2.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit2.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit2.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit2.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit2ChuaBai.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit2ChuaBai.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit2ChuaBai.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit2ChuaBai.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit3.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit3.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit3.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit3.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit4.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit4.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit4.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit4.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit5.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit5.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit5.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit5.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit6.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit6.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit6.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit6.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit6_count_duplicate.JPG b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit6_count_duplicate.JPG similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit6_count_duplicate.JPG rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit2/exam/Unit6_count_duplicate.JPG diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/CollectionTest.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/CollectionTest.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/CollectionTest.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/CollectionTest.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/MapTest.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/MapTest.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/MapTest.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/MapTest.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/SetTest.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/SetTest.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/SetTest.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/SetTest.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit1.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit1.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit1.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit1.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit2.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit2.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit2.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit2.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit3.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit3.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit3.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit3.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit4.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit4.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit4.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit4.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit5.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit5.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit5.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit5.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit6.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit6.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit6.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit6.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit7.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit7.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit7.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit3/exam/Unit7.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/BaseFile.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/BaseFile.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/BaseFile.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/BaseFile.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileDoc.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileDoc.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileDoc.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileDoc.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileJPG.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileJPG.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileJPG.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileJPG.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileMain.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileMain.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileMain.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FileMain.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FilePDF.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FilePDF.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FilePDF.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/FilePDF.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/ShowInfo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/ShowInfo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/ShowInfo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/ShowInfo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/bai-tap-1.JPG b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/bai-tap-1.JPG similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/bai-tap-1.JPG rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/bai-tap-1.JPG diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/bai-tap-2.JPG b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/bai-tap-2.JPG similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/bai-tap-2.JPG rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/exam/bai-tap-2.JPG diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/Car.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/Car.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/Car.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/Car.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/CarMain.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/CarMain.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/CarMain.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/CarMain.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/ElectricCar.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/ElectricCar.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/ElectricCar.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/ElectricCar.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/CarMain.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/CarMain.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/CarMain.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/CarMain.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/UsingCar.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/UsingCar.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/UsingCar.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/UsingCar.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/sub/Car.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/sub/Car.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/sub/Car.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/modifierpackage/sub/Car.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book2.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book2.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book2.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book2.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book2Main.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book2Main.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book2Main.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/Book2Main.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/BookMain.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/BookMain.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/BookMain.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/singletonexample/BookMain.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/staticexample/Example1.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/staticexample/Example1.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/staticexample/Example1.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/staticexample/Example1.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/staticexample/Example2.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/staticexample/Example2.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/staticexample/Example2.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit5/theory/staticexample/Example2.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/BasicSort.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/BasicSort.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/BasicSort.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/BasicSort.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/Person.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/Person.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/Person.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/Person.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/SortObjectDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/SortObjectDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/SortObjectDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/SortObjectDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/SortObjectDemo2.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/SortObjectDemo2.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/SortObjectDemo2.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam/SortObjectDemo2.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/Order.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/Order.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/Order.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/Order.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/OrderManager.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/OrderManager.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/OrderManager.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/OrderManager.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/ParentOrder.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/ParentOrder.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/ParentOrder.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/ParentOrder.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/bai-tap-2.png b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/bai-tap-2.png similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/bai-tap-2.png rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/exam2/bai-tap-2.png diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/collectiondemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/collectiondemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/collectiondemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/collectiondemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/documents/Collection_architecture.txt b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/documents/Collection_architecture.txt similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/documents/Collection_architecture.txt rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/documents/Collection_architecture.txt diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/documents/Iterable_architecture.txt b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/documents/Iterable_architecture.txt similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/documents/Iterable_architecture.txt rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/documents/Iterable_architecture.txt diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/list/ListDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/list/ListDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/list/ListDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/list/ListDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/set/TreeSetDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/set/TreeSetDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/set/TreeSetDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/set/TreeSetDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/DistinctDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/DistinctDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/DistinctDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/DistinctDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/ElementSearch.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/ElementSearch.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/ElementSearch.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/ElementSearch.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/FilterDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/FilterDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/FilterDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/FilterDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/FlatMapDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/FlatMapDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/FlatMapDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/FlatMapDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/LambdaTest.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/LambdaTest.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/LambdaTest.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/LambdaTest.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/MaxMinDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/MaxMinDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/MaxMinDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/MaxMinDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/RemoveDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/RemoveDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/RemoveDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/RemoveDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/RemoveElementInList.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/RemoveElementInList.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/RemoveElementInList.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/RemoveElementInList.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/SortElementDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/SortElementDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/SortElementDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/SortElementDemo.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/SumDemo.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/SumDemo.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/SumDemo.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/SumDemo.class diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/LambdaString.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/LambdaString.class new file mode 100644 index 0000000..4848273 Binary files /dev/null and b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/LambdaString.class differ diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/ShowItem.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/ShowItem.class new file mode 100644 index 0000000..46f6e35 Binary files /dev/null and b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/ShowItem.class differ diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/SoNguyenToLambda.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/SoNguyenToLambda.class new file mode 100644 index 0000000..e647e0c Binary files /dev/null and b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/SoNguyenToLambda.class differ diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/StoreItem.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/StoreItem.class new file mode 100644 index 0000000..9d33b9f Binary files /dev/null and b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/StoreItem.class differ diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/StringFunction.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/StringFunction.class new file mode 100644 index 0000000..f1c57ef Binary files /dev/null and b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/streamlambda/demolambda/StringFunction.class differ diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/threaddemo/ExecutorServiceMain.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/threaddemo/ExecutorServiceMain.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/threaddemo/ExecutorServiceMain.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/threaddemo/ExecutorServiceMain.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/threaddemo/ThreadMain.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/threaddemo/ThreadMain.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/threaddemo/ThreadMain.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/main/practice/unit9/theory/threaddemo/ThreadMain.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/test/HelloWorld.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/test/HelloWorld.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/test/HelloWorld.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/test/HelloWorld.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/test/ScanInput.class b/Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/test/ScanInput.class similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/test/ScanInput.class rename to Java-Core-Tutorial/introduction-java-variable-function-main/out/production/introduction-java-variable-function-main/test/ScanInput.class diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/ExceptionExample.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/ExceptionExample.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/ExceptionExample.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/ExceptionExample.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/SwapDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/SwapDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/SwapDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/SwapDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/cash/CashDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/cash/CashDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/cash/CashDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit10/theory/cash/CashDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit11/readme.md b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit11/readme.md similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit11/readme.md rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit11/readme.md diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/HelloWorld.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/HelloWorld.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/HelloWorld.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/HelloWorld.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/JavaListSynchronized.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/JavaListSynchronized.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/JavaListSynchronized.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/JavaListSynchronized.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/JavaSynchronized.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/JavaSynchronized.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/JavaSynchronized.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/theory/JavaSynchronized.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadexample/JavaSynchronized.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadexample/JavaSynchronized.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadexample/JavaSynchronized.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadexample/JavaSynchronized.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadexample/ThreadDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadexample/ThreadDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadexample/ThreadDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadexample/ThreadDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadstring/StringBuilderStringBufferThread.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadstring/StringBuilderStringBufferThread.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadstring/StringBuilderStringBufferThread.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit12/threadstring/StringBuilderStringBufferThread.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit13/theory/readme.md b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit13/theory/readme.md similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit13/theory/readme.md rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit13/theory/readme.md diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/ForTest.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/ForTest.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/ForTest.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/ForTest.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/MainArray.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/MainArray.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/MainArray.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/MainArray.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/StringBuilderTest.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/StringBuilderTest.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/StringBuilderTest.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/StringBuilderTest.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/StringTest.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/StringTest.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/StringTest.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/StringTest.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/WhileTest.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/WhileTest.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/WhileTest.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/WhileTest.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit1.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit1.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit1.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit1.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit2.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit2.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit2.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit2.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit2ChuaBai.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit2ChuaBai.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit2ChuaBai.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit2ChuaBai.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit3.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit3.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit3.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit3.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit4.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit4.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit4.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit4.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit5.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit5.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit5.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit5.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit6.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit6.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit6.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit6.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit6_count_duplicate.JPG b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit6_count_duplicate.JPG similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit6_count_duplicate.JPG rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit2/exam/Unit6_count_duplicate.JPG diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/CollectionTest.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/CollectionTest.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/CollectionTest.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/CollectionTest.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/MapTest.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/MapTest.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/MapTest.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/MapTest.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/SetTest.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/SetTest.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/SetTest.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/SetTest.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit1.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit1.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit1.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit1.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit2.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit2.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit2.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit2.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit3.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit3.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit3.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit3.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit4.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit4.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit4.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit4.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit5.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit5.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit5.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit5.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit6.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit6.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit6.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit6.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit7.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit7.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit7.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit3/exam/Unit7.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/BaseFile.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/BaseFile.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/BaseFile.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/BaseFile.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileDoc.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileDoc.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileDoc.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileDoc.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileJPG.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileJPG.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileJPG.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileJPG.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileMain.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileMain.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileMain.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FileMain.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FilePDF.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FilePDF.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FilePDF.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/FilePDF.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/ShowInfo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/ShowInfo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/ShowInfo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/ShowInfo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/bai-tap-1.JPG b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/bai-tap-1.JPG similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/bai-tap-1.JPG rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/bai-tap-1.JPG diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/bai-tap-2.JPG b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/bai-tap-2.JPG similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/bai-tap-2.JPG rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/exam/bai-tap-2.JPG diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/Car.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/Car.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/Car.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/Car.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/CarMain.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/CarMain.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/CarMain.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/CarMain.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/ElectricCar.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/ElectricCar.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/ElectricCar.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/ElectricCar.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/CarMain.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/CarMain.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/CarMain.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/CarMain.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/UsingCar.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/UsingCar.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/UsingCar.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/UsingCar.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/sub/Car.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/sub/Car.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/sub/Car.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/modifierpackage/sub/Car.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book2.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book2.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book2.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book2.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book2Main.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book2Main.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book2Main.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/Book2Main.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/BookMain.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/BookMain.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/BookMain.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/singletonexample/BookMain.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/staticexample/Example1.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/staticexample/Example1.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/staticexample/Example1.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/staticexample/Example1.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/staticexample/Example2.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/staticexample/Example2.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/staticexample/Example2.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit5/theory/staticexample/Example2.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/BasicSort.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/BasicSort.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/BasicSort.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/BasicSort.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/Person.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/Person.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/Person.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/Person.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/SortObjectDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/SortObjectDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/SortObjectDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/SortObjectDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/SortObjectDemo2.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/SortObjectDemo2.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/SortObjectDemo2.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam/SortObjectDemo2.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/Order.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/Order.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/Order.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/Order.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/OrderManager.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/OrderManager.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/OrderManager.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/OrderManager.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/ParentOrder.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/ParentOrder.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/ParentOrder.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/ParentOrder.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/bai-tap-2.png b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/bai-tap-2.png similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/bai-tap-2.png rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/exam2/bai-tap-2.png diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/collectiondemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/collectiondemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/collectiondemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/collectiondemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/documents/Collection_architecture.txt b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/documents/Collection_architecture.txt similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/documents/Collection_architecture.txt rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/documents/Collection_architecture.txt diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/documents/Iterable_architecture.txt b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/documents/Iterable_architecture.txt similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/documents/Iterable_architecture.txt rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/documents/Iterable_architecture.txt diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/list/ListDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/list/ListDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/list/ListDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/list/ListDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/set/TreeSetDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/set/TreeSetDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/set/TreeSetDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/set/TreeSetDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/DistinctDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/DistinctDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/DistinctDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/DistinctDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/ElementSearch.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/ElementSearch.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/ElementSearch.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/ElementSearch.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/FilterDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/FilterDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/FilterDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/FilterDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/FlatMapDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/FlatMapDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/FlatMapDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/FlatMapDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/LambdaTest.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/LambdaTest.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/LambdaTest.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/LambdaTest.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/MaxMinDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/MaxMinDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/MaxMinDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/MaxMinDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/RemoveDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/RemoveDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/RemoveDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/RemoveDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/RemoveElementInList.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/RemoveElementInList.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/RemoveElementInList.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/RemoveElementInList.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/SortElementDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/SortElementDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/SortElementDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/SortElementDemo.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/SumDemo.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/SumDemo.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/SumDemo.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/SumDemo.java diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/LambdaString.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/LambdaString.java new file mode 100644 index 0000000..388ede7 --- /dev/null +++ b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/LambdaString.java @@ -0,0 +1,19 @@ +package main.practice.unit9.theory.streamlambda.demolambda; + +/** + * @author ManhKM on 2/24/2022 + * @project introduction-java-variable-function-main + */ +public class LambdaString { + public static void main(String[] args) { + StringFunction exclaim = (s) -> s + "!"; + StringFunction ask = (s) -> s + "?"; + printFormatted("Hello", exclaim); + printFormatted("Hello", ask); + } + + private static void printFormatted(String str, StringFunction format) { + String result = format.run(str); + System.out.println(result); + } +} diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/ShowItem.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/ShowItem.java new file mode 100644 index 0000000..9350b81 --- /dev/null +++ b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/ShowItem.java @@ -0,0 +1,26 @@ +package main.practice.unit9.theory.streamlambda.demolambda; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 2/24/2022 + * @project introduction-java-variable-function-main + */ +public class ShowItem { + public static void main(String[] args) { + List numbers = new ArrayList(); + numbers.add(5); + numbers.add(3); + numbers.add(4); + numbers.add(9); + numbers.add(7); + numbers.add(8); + + // list all item in list: + System.out.println("Giá trị trong List: "); + numbers.forEach((n) -> { + System.out.print(n +", "); + }); + } +} diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/SoNguyenToLambda.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/SoNguyenToLambda.java new file mode 100644 index 0000000..2a7fd71 --- /dev/null +++ b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/SoNguyenToLambda.java @@ -0,0 +1,20 @@ +package main.practice.unit9.theory.streamlambda.demolambda; + + +import java.util.stream.IntStream; + +/** + * @author ManhKM on 2/24/2022 + * @project introduction-java-variable-function-main + */ +public class SoNguyenToLambda { + public static void main(String[] args) { + System.out.println(isPrime(4)); + } + + private static boolean isPrime(int number){ + return number > 1 && IntStream.range(2, number).noneMatch( + index -> number % index == 0 + ); + } +} diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/StoreItem.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/StoreItem.java new file mode 100644 index 0000000..7bb31f8 --- /dev/null +++ b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/StoreItem.java @@ -0,0 +1,27 @@ +package main.practice.unit9.theory.streamlambda.demolambda; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +/** + * @author ManhKM on 2/24/2022 + * @project introduction-java-variable-function-main + */ +public class StoreItem { + public static void main(String[] args) { + List numbers = new ArrayList(); + numbers.add(12); + numbers.add(14); + numbers.add(19); + numbers.add(11); + numbers.add(92); + numbers.add(1); + + Consumer consumer = (n) -> { + System.out.print(n + ", "); + }; + + numbers.forEach(consumer); + } +} diff --git a/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/StringFunction.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/StringFunction.java new file mode 100644 index 0000000..f33322d --- /dev/null +++ b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/streamlambda/demolambda/StringFunction.java @@ -0,0 +1,9 @@ +package main.practice.unit9.theory.streamlambda.demolambda; + +/** + * @author ManhKM on 2/24/2022 + * @project introduction-java-variable-function-main + */ +public interface StringFunction { + String run(String str); +} diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/threaddemo/ExecutorServiceMain.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/threaddemo/ExecutorServiceMain.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/threaddemo/ExecutorServiceMain.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/threaddemo/ExecutorServiceMain.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/threaddemo/ThreadMain.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/threaddemo/ThreadMain.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/threaddemo/ThreadMain.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/main/practice/unit9/theory/threaddemo/ThreadMain.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/test/HelloWorld.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/test/HelloWorld.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/test/HelloWorld.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/test/HelloWorld.java diff --git a/Java-CoreTutorial/introduction-java-variable-function-main/src/test/ScanInput.java b/Java-Core-Tutorial/introduction-java-variable-function-main/src/test/ScanInput.java similarity index 100% rename from Java-CoreTutorial/introduction-java-variable-function-main/src/test/ScanInput.java rename to Java-Core-Tutorial/introduction-java-variable-function-main/src/test/ScanInput.java diff --git a/Java-CoreTutorial/documents/~$va Core Tutorial v1.0.docx b/Java-CoreTutorial/documents/~$va Core Tutorial v1.0.docx deleted file mode 100644 index 4c365a6..0000000 Binary files a/Java-CoreTutorial/documents/~$va Core Tutorial v1.0.docx and /dev/null differ diff --git a/Java-CoreTutorial/documents/~WRL3587.tmp b/Java-CoreTutorial/documents/~WRL3587.tmp deleted file mode 100644 index ea30dbc..0000000 Binary files a/Java-CoreTutorial/documents/~WRL3587.tmp and /dev/null differ diff --git a/Java-DateTime/pom.xml b/Java-DateTime/pom.xml new file mode 100644 index 0000000..c0d4e51 --- /dev/null +++ b/Java-DateTime/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + com.core + Java-DateTime + 1.0-SNAPSHOT + + + 8 + 8 + + + \ No newline at end of file diff --git a/Java-DateTime/src/main/java/com/core/DateDemo.java b/Java-DateTime/src/main/java/com/core/DateDemo.java new file mode 100644 index 0000000..4295698 --- /dev/null +++ b/Java-DateTime/src/main/java/com/core/DateDemo.java @@ -0,0 +1,14 @@ +package com.core; + +import java.util.Date; + +public class DateDemo { + public static void main(String[] args) { + Date date1 = new Date(); + + long millis = System.currentTimeMillis(); + Date date2 = new Date(millis); + + + } +} diff --git a/Java-DateTime/src/main/java/com/core/DateVsCalendarDemo.java b/Java-DateTime/src/main/java/com/core/DateVsCalendarDemo.java new file mode 100644 index 0000000..473a240 --- /dev/null +++ b/Java-DateTime/src/main/java/com/core/DateVsCalendarDemo.java @@ -0,0 +1,2 @@ +package com.core;public class DateVsCalendarDemo { +} diff --git a/Java-DateTime/src/main/java/com/core/JobTimeDemo.java b/Java-DateTime/src/main/java/com/core/JobTimeDemo.java new file mode 100644 index 0000000..005de20 --- /dev/null +++ b/Java-DateTime/src/main/java/com/core/JobTimeDemo.java @@ -0,0 +1,32 @@ +package com.core; + +public class JobTimeDemo { + + private static int sum() { + int sum = 0; + for (int i = 0; i <= 10_000; i++) { + sum += i; + System.out.print(" >>> execute sum[" + i + "]"); + } + return sum; + } + + private static void doJob(int count) { + for (int i = 0; i < count; i++) { + System.out.println(">>> execute doJob[" + i + "]"); + sum(); + } + } + + public static void main(String[] args) { + long millis1 = System.currentTimeMillis(); + doJob(100_000_000); + + long millis2 = System.currentTimeMillis(); + + long distance = millis2 - millis1; + + System.out.println("Distance time in milli second: " + distance); + } + +} diff --git a/Java-DateTime/src/main/java/com/core/TimeUnitDemo.java b/Java-DateTime/src/main/java/com/core/TimeUnitDemo.java new file mode 100644 index 0000000..5f344c5 --- /dev/null +++ b/Java-DateTime/src/main/java/com/core/TimeUnitDemo.java @@ -0,0 +1,23 @@ +package com.core; + +import java.util.concurrent.TimeUnit; + +public class TimeUnitDemo { + public static void main(String[] args) { + int minute = 5; + int millisecond = minute * 60 * 1_000; + + // Sử dụng TimeUnit; + long millisecond2 = TimeUnit.MINUTES.toMillis(minute); + + System.out.println("Case 1: " + millisecond); + System.out.println("Case 2: " + millisecond2); + + // Chuyển đổi nano giây: + long nanos = TimeUnit.MINUTES.toNanos(minute); + System.out.println("Nanos: " + nanos); + + long hours = TimeUnit.MINUTES.toHours(minute); + System.out.println("Hours: " + hours); + } +} diff --git a/Java-Enum/readme.md b/Java-Enum/readme.md new file mode 100644 index 0000000..e252ced --- /dev/null +++ b/Java-Enum/readme.md @@ -0,0 +1 @@ +## Enum trong Java diff --git a/Java-Enum/src/com/core/baeldung/Element.java b/Java-Enum/src/com/core/baeldung/Element.java new file mode 100644 index 0000000..16f13a8 --- /dev/null +++ b/Java-Enum/src/com/core/baeldung/Element.java @@ -0,0 +1,40 @@ +package com.core.baeldung; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ManhKM on 11/25/2022 + * @project Java-Enum + * ----- + * Element: Định nghĩa kiểu Enum chứa thông tin nhãn hóa học + * ??? Tại sao không có kiểu setter cho label này + * + * Tham khảo: https://www.baeldung.com/java-enum-values + */ +public enum Element { + H("Hydrogen"), HE("Helium"), LI("LI"), + BE("BE"), B("B"), C("C"); + + private static final Map BY_LABEL = new HashMap<>(); + + static { + for (Element e : values()){ + BY_LABEL.put(e.label, e); + } + } + + public final String label; + + Element(String label) { + this.label = label; + } + + public String getLabel() { + return label; + } + + public static Element valueOfLabel(String label){ + return BY_LABEL.get(label); + } +} diff --git a/Java-Enum/src/com/core/baeldung/MainEnumDemo.java b/Java-Enum/src/com/core/baeldung/MainEnumDemo.java new file mode 100644 index 0000000..6c35a7e --- /dev/null +++ b/Java-Enum/src/com/core/baeldung/MainEnumDemo.java @@ -0,0 +1,13 @@ +package com.core.baeldung; + +/** + * @author ManhKM on 11/25/2022 + * @project Java-Enum + */ +public class MainEnumDemo { + + public static void main(String[] args) { + System.out.println("Running Main EnumDemo: "); + System.out.println(Element.H.label); + } +} diff --git a/Java-Enum/src/com/core/demo/ApproveValueEnum.java b/Java-Enum/src/com/core/demo/ApproveValueEnum.java new file mode 100644 index 0000000..e6c5c10 --- /dev/null +++ b/Java-Enum/src/com/core/demo/ApproveValueEnum.java @@ -0,0 +1,13 @@ +package com.core.demo; + +/** + * @author ManhKM on 4/20/2022 + * @project Java-Enum + */ +public class ApproveValueEnum { + public static void main(String[] args) { + for (WeekDay d : WeekDay.values()) { + System.out.println(d); + } + } +} diff --git a/Java-Enum/src/com/core/demo/EnumExample.java b/Java-Enum/src/com/core/demo/EnumExample.java new file mode 100644 index 0000000..fe8804d --- /dev/null +++ b/Java-Enum/src/com/core/demo/EnumExample.java @@ -0,0 +1,16 @@ +package com.core.demo; + +/** + * @author ManhKM on 4/20/2022 + * @project Java-Enum + */ +public class EnumExample { + enum WeekDay { + MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; + } + + public static void main(String[] args) { + WeekDay d = WeekDay.MONDAY; + System.out.println("EnumExample: "+d); + } +} diff --git a/Java-Enum/src/com/core/demo/EnumExample3.java b/Java-Enum/src/com/core/demo/EnumExample3.java new file mode 100644 index 0000000..831ca58 --- /dev/null +++ b/Java-Enum/src/com/core/demo/EnumExample3.java @@ -0,0 +1,42 @@ +package com.core.demo; + +/** + * @author ManhKM on 4/20/2022 + * @project Java-Enum + */ +public class EnumExample3 { + enum WeekDay { + // Khởi tạo các phần tử từ construnctor + // Các phần tử này luôn là static final + MONDAY(2), TUESDAY(3), WEDNESDAY(4), THURSDAY(5), FRIDAY(7), SATURDAY(7), SUNDAY(1); + + private int value; + + // constructor này chỉ dùng trong nội bộ Enum + // Modifier của constructor enum luôn là private + // Nếu không khai báo private, java cũng sẽ hiểu là private. + WeekDay(int value) { + this.value = value; + } + + // Có thể viết một static method lấy ra WeekDay theo value. + public static WeekDay getWeekDayByValue(int value) { + for (WeekDay d : WeekDay.values()) { + if (d.value == value) { + return d; + } + } + return null; + } + } + + public static void main(String[] args) { + for (WeekDay d : WeekDay.values()) { + System.out.println(d + " = " + d.value); + } + + // Sử dụng static method của enum + WeekDay d = WeekDay.getWeekDayByValue(3); + System.out.println("value 3 is " + d); + } +} diff --git a/Java-Enum/src/com/core/demo/EnumExampleCallEnum.java b/Java-Enum/src/com/core/demo/EnumExampleCallEnum.java new file mode 100644 index 0000000..8c9d646 --- /dev/null +++ b/Java-Enum/src/com/core/demo/EnumExampleCallEnum.java @@ -0,0 +1,17 @@ +package com.core.demo; + +/** + * @author ManhKM on 4/20/2022 + * @project Java-Enum + * ----- + * WeekDay là một kiểu Enum lưu giá trị các ngày trong tuần + * Khi sử dụng lấy thông tin từ Enum ra ngoài: + * Enum_name.gia_tri + * + */ +public class EnumExampleCallEnum { + public static void main(String[] args) { + WeekDay d = WeekDay.MONDAY; + System.out.println("EnumExampleCallEnum: " + d); + } +} diff --git a/Java-Enum/src/com/core/demo/EnumExampleOuterClass.java b/Java-Enum/src/com/core/demo/EnumExampleOuterClass.java new file mode 100644 index 0000000..59ea863 --- /dev/null +++ b/Java-Enum/src/com/core/demo/EnumExampleOuterClass.java @@ -0,0 +1,13 @@ +///** +// * @author ManhKM on 4/20/2022 +// * @project Java-Enum +// */ +//enum WeekDay { // Không được khai báo access modifier (sử dụng default) +// MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; +//} +//public class EnumExampleOuterClass { +// public static void main(String[] args) { +// WeekDay d = WeekDay.MONDAY; +// System.out.println("EnumExampleOuterClass: "+d); +// } +//} diff --git a/Java-Enum/src/com/core/demo/WeekDay.java b/Java-Enum/src/com/core/demo/WeekDay.java new file mode 100644 index 0000000..4264e06 --- /dev/null +++ b/Java-Enum/src/com/core/demo/WeekDay.java @@ -0,0 +1,9 @@ +package com.core.demo; + +/** + * @author ManhKM on 4/20/2022 + * @project Java-Enum + */ +public enum WeekDay { + MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; +} diff --git a/Java-Exception/java-exception/out/production/java-exception/com/jindo/core/TestException.class b/Java-Exception/java-exception/out/production/java-exception/com/jindo/core/TestException.class new file mode 100644 index 0000000..ff10993 Binary files /dev/null and b/Java-Exception/java-exception/out/production/java-exception/com/jindo/core/TestException.class differ diff --git a/Java-Exception/java-exception/out/production/java-exception/com/jindo/core/customexception/IncorrectFileNameException.class b/Java-Exception/java-exception/out/production/java-exception/com/jindo/core/customexception/IncorrectFileNameException.class new file mode 100644 index 0000000..6984e30 Binary files /dev/null and b/Java-Exception/java-exception/out/production/java-exception/com/jindo/core/customexception/IncorrectFileNameException.class differ diff --git a/Java-Exception/java-exception/out/production/java-exception/com/jindo/core/customexception/TestCustomException.class b/Java-Exception/java-exception/out/production/java-exception/com/jindo/core/customexception/TestCustomException.class new file mode 100644 index 0000000..9f3c5ab Binary files /dev/null and b/Java-Exception/java-exception/out/production/java-exception/com/jindo/core/customexception/TestCustomException.class differ diff --git a/Java-Exception/java-exception/src/com/jindo/core/TestException.java b/Java-Exception/java-exception/src/com/jindo/core/TestException.java new file mode 100644 index 0000000..4ccea48 --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/TestException.java @@ -0,0 +1,18 @@ +package com.jindo.core; + +/** + * @author ManhKM on 5/15/2022 + * @project java-exception + */ +public class TestException { + public static void main(String[] args) { + int x = 10; + int y = 0; + try { + System.out.println(x/y); + } catch (ArithmeticException e){ + System.out.println("Không thể thực hiện phép chia cho 0"); + } + System.out.println("-----> Exception in Java"); + } +} diff --git a/Java-Exception/java-exception/src/com/jindo/core/checked/ExceptionChildExample.java b/Java-Exception/java-exception/src/com/jindo/core/checked/ExceptionChildExample.java new file mode 100644 index 0000000..636e833 --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/checked/ExceptionChildExample.java @@ -0,0 +1,7 @@ +package com.jindo.core.checked;/** + * Project: java-exception (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/20/2023-6:31 AM + * Note: + */public class ExceptionChildExample { +} diff --git a/Java-Exception/java-exception/src/com/jindo/core/checked/Parent.java b/Java-Exception/java-exception/src/com/jindo/core/checked/Parent.java new file mode 100644 index 0000000..4a272fb --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/checked/Parent.java @@ -0,0 +1,7 @@ +package com.jindo.core.checked;/** + * Project: java-exception (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/20/2023-6:29 AM + * Note: + */public class Parent { +} diff --git a/Java-Exception/java-exception/src/com/jindo/core/checked/TestCheckedExceptionPropagation.java b/Java-Exception/java-exception/src/com/jindo/core/checked/TestCheckedExceptionPropagation.java new file mode 100644 index 0000000..d7a7673 --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/checked/TestCheckedExceptionPropagation.java @@ -0,0 +1,35 @@ +package com.jindo.core.checked; + +import java.io.IOException; + +/** + * Project: java-exception (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/19/2023-3:22 PM + * Note: Nếu cứ throws mãi mà không ai bắt thì sẽ gây lỗi chương trình + */ +public class TestCheckedExceptionPropagation { + + void m() throws IOException { + // Nếu không bắt Exception mà trả về throws thì n() phải bắt + throw new IOException("Device error/method m()"); + } + + void n() throws IOException { + m(); + } + + void p() { + try { + n(); + } catch (Exception e){ + System.out.println("Exception when execute method m(): " + e.getMessage()); + } + } + + public static void main(String[] args) { + TestCheckedExceptionPropagation obj = new TestCheckedExceptionPropagation(); + obj.p(); + System.out.println("normal flow"); + } +} diff --git a/Java-Exception/java-exception/src/com/jindo/core/customexception/CustomExceptionApplication.java b/Java-Exception/java-exception/src/com/jindo/core/customexception/CustomExceptionApplication.java new file mode 100644 index 0000000..b73137e --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/customexception/CustomExceptionApplication.java @@ -0,0 +1,7 @@ +package com.jindo.core.customexception;/** + * Project: java-exception (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/20/2023-6:19 AM + * Note: + */public class CustomExceptionApplication { +} diff --git a/Java-Exception/java-exception/src/com/jindo/core/customexception/IncorrectFileNameException.java b/Java-Exception/java-exception/src/com/jindo/core/customexception/IncorrectFileNameException.java new file mode 100644 index 0000000..40a3d77 --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/customexception/IncorrectFileNameException.java @@ -0,0 +1,14 @@ +package com.jindo.core.customexception; + +/** + * @author ManhKM on 5/15/2022 + * @project java-exception + * ----- + * Khởi tạo một CustomException dùng cho mục đích xử lý các logic riêng + */ +public class IncorrectFileNameException extends Exception{ + + public IncorrectFileNameException(String errorMessage){ + super(errorMessage); + } +} diff --git a/Java-Exception/java-exception/src/com/jindo/core/customexception/InvalidAgeException.java b/Java-Exception/java-exception/src/com/jindo/core/customexception/InvalidAgeException.java new file mode 100644 index 0000000..16521b6 --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/customexception/InvalidAgeException.java @@ -0,0 +1,7 @@ +package com.jindo.core.customexception;/** + * Project: java-exception (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/20/2023-6:18 AM + * Note: + */public class InvalidAgeException { +} diff --git a/Java-Exception/java-exception/src/com/jindo/core/customexception/TestCustomException.java b/Java-Exception/java-exception/src/com/jindo/core/customexception/TestCustomException.java new file mode 100644 index 0000000..d7b2900 --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/customexception/TestCustomException.java @@ -0,0 +1,19 @@ +package com.jindo.core.customexception; + +/** + * @author ManhKM on 5/15/2022 + * @project java-exception + */ +public class TestCustomException { + public static void main(String[] args) { + System.out.println("-----> Running TestCustomException...."); + String name = "abc1.txt"; + if(name != "abc.txt"){ + try { + throw new IncorrectFileNameException("Tên không chính xác: " + name); + } catch (IncorrectFileNameException e) { + e.printStackTrace(); + } + } + } +} diff --git a/Java-Exception/java-exception/src/com/jindo/core/unchecked/TestExceptionPropagation.java b/Java-Exception/java-exception/src/com/jindo/core/unchecked/TestExceptionPropagation.java new file mode 100644 index 0000000..0b39865 --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/unchecked/TestExceptionPropagation.java @@ -0,0 +1,40 @@ +package com.jindo.core.unchecked; + +/** + * Project: java-exception (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/19/2023-3:17 PM + * Note: Nếu ngoại lệ trong m() không được xử lý, nó sẽ lan truyền đến method n() -> nếu nó cũng không được xử lý nữa thì sẽ lan truyền đến method p() + */ +public class TestExceptionPropagation { + + void m() { + try { + int data = 50 / 0; + } catch (Exception e){ + System.out.println("Exception Handled in m() method"); + } + } + + void n() { + try { + m(); + } catch (Exception e) { + System.out.println("Exception Handled in n() method"); + } + } + + void p() { + try { + n(); + } catch (Exception e) { + System.out.println("Exception Handled in p() method"); + } + } + + public static void main(String[] args) { + TestExceptionPropagation obj = new TestExceptionPropagation(); + obj.p(); + System.out.println("normal flow..."); + } +} diff --git a/Java-Exception/java-exception/src/com/jindo/core/unchecked/ThrowsExceptionExample.java b/Java-Exception/java-exception/src/com/jindo/core/unchecked/ThrowsExceptionExample.java new file mode 100644 index 0000000..2fc8a0e --- /dev/null +++ b/Java-Exception/java-exception/src/com/jindo/core/unchecked/ThrowsExceptionExample.java @@ -0,0 +1,7 @@ +package com.jindo.core.unchecked;/** + * Project: java-exception (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/19/2023-3:27 PM + * Note: + */public class ThrowsExceptionExample { +} diff --git a/Java-Exception/readme.md b/Java-Exception/readme.md new file mode 100644 index 0000000..39a03f4 --- /dev/null +++ b/Java-Exception/readme.md @@ -0,0 +1,8 @@ +## Java Exception + +* Tự custom Exception trong Java +* Các loại Exception thông dụng trong Java + + +## Reference Document + diff --git a/Java-Executor/java-executor-tutorial/.gitignore b/Java-Executor/java-executor-tutorial/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/Java-Executor/java-executor-tutorial/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Java-Executor/java-executor-tutorial/.mvn/wrapper/maven-wrapper.jar b/Java-Executor/java-executor-tutorial/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..bf82ff0 Binary files /dev/null and b/Java-Executor/java-executor-tutorial/.mvn/wrapper/maven-wrapper.jar differ diff --git a/Java-Executor/java-executor-tutorial/.mvn/wrapper/maven-wrapper.properties b/Java-Executor/java-executor-tutorial/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..ca5ab4b --- /dev/null +++ b/Java-Executor/java-executor-tutorial/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.7/apache-maven-3.8.7-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar diff --git a/Java-Executor/java-executor-tutorial/config/application.yml b/Java-Executor/java-executor-tutorial/config/application.yml new file mode 100644 index 0000000..c946730 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/config/application.yml @@ -0,0 +1,8 @@ +server: + port: 8081 +app: + executor: + core-pool-size: 10 + max-pool-size: 20 + queue-capacity: 100 + name-prefix: CustomerReader- diff --git a/Java-Executor/java-executor-tutorial/data/customer-data - Copy (2).txt b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (2).txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (2).txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/data/customer-data - Copy (3).txt b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (3).txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (3).txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/data/customer-data - Copy (4).txt b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (4).txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (4).txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/data/customer-data - Copy (5).txt b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (5).txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (5).txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/data/customer-data - Copy (6).txt b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (6).txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (6).txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/data/customer-data - Copy (7).txt b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (7).txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (7).txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/data/customer-data - Copy (8).txt b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (8).txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (8).txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/data/customer-data - Copy (9).txt b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (9).txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data - Copy (9).txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/data/customer-data - Copy.txt b/Java-Executor/java-executor-tutorial/data/customer-data - Copy.txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data - Copy.txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/data/customer-data.txt b/Java-Executor/java-executor-tutorial/data/customer-data.txt new file mode 100644 index 0000000..d36e8c7 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/data/customer-data.txt @@ -0,0 +1,5000 @@ +1,omnis,adipisci,1 +2,ullam,ratione,2 +3,iusto,laborum,3 +4,animi,porro,4 +5,est,quod,5 +6,nemo,consequatur,6 +7,inventore,harum,7 +8,quidem,sed,8 +9,nostrum,distinctio,9 +10,est,sint,10 +11,fugiat,facilis,11 +12,architecto,molestiae,12 +13,qui,perspiciatis,13 +14,rerum,omnis,14 +15,rerum,quia,15 +16,non,sunt,16 +17,beatae,illo,17 +18,modi,quia,18 +19,aut,harum,19 +20,ratione,est,20 +21,molestias,aliquid,21 +22,autem,qui,22 +23,consectetur,eos,23 +24,omnis,dolorem,24 +25,consequatur,nam,25 +26,quis,suscipit,26 +27,nihil,et,27 +28,rerum,qui,28 +29,occaecati,eligendi,29 +30,exercitationem,voluptas,30 +31,suscipit,quibusdam,31 +32,blanditiis,qui,32 +33,quo,reiciendis,33 +34,quo,nesciunt,34 +35,aut,aut,35 +36,harum,est,36 +37,voluptas,est,37 +38,beatae,animi,38 +39,aut,a,39 +40,ut,sint,40 +41,voluptatem,non,41 +42,et,in,42 +43,officiis,rerum,43 +44,doloremque,in,44 +45,officiis,corporis,45 +46,sed,quia,46 +47,consequatur,qui,47 +48,quia,voluptates,48 +49,minima,omnis,49 +50,quasi,qui,50 +51,suscipit,incidunt,51 +52,ad,doloribus,52 +53,voluptate,accusantium,53 +54,praesentium,eveniet,54 +55,accusamus,at,55 +56,nihil,sed,56 +57,qui,iusto,57 +58,consequuntur,dolores,58 +59,occaecati,reprehenderit,59 +60,totam,quia,60 +61,qui,facilis,61 +62,quia,delectus,62 +63,sit,ab,63 +64,quo,iure,64 +65,rem,quis,65 +66,unde,sint,66 +67,nulla,eligendi,67 +68,in,itaque,68 +69,et,sed,69 +70,ullam,quia,70 +71,dolores,similique,71 +72,praesentium,reprehenderit,72 +73,officiis,occaecati,73 +74,eos,enim,74 +75,odit,aliquam,75 +76,modi,et,76 +77,architecto,non,77 +78,hic,dolor,78 +79,rerum,rerum,79 +80,nihil,laudantium,80 +81,quidem,beatae,81 +82,sint,repellendus,82 +83,nobis,aut,83 +84,ut,beatae,84 +85,molestiae,at,85 +86,dolor,voluptatem,86 +87,voluptates,aut,87 +88,fuga,laborum,88 +89,voluptas,dicta,89 +90,cum,temporibus,90 +91,nesciunt,rerum,91 +92,est,tempora,92 +93,ratione,ducimus,93 +94,eum,aut,94 +95,neque,quae,95 +96,dolore,sunt,96 +97,voluptas,quibusdam,97 +98,omnis,temporibus,98 +99,ipsa,delectus,99 +100,non,illum,100 +101,consequuntur,et,101 +102,non,eum,102 +103,enim,unde,103 +104,itaque,provident,104 +105,quod,nesciunt,105 +106,sed,non,106 +107,commodi,qui,107 +108,odio,soluta,108 +109,inventore,assumenda,109 +110,officia,in,110 +111,quis,dolorem,111 +112,harum,sed,112 +113,autem,reprehenderit,113 +114,consequatur,aut,114 +115,ab,sed,115 +116,porro,aut,116 +117,ut,ratione,117 +118,asperiores,dicta,118 +119,illum,enim,119 +120,possimus,quae,120 +121,quidem,repudiandae,121 +122,porro,quis,122 +123,molestiae,et,123 +124,cupiditate,pariatur,124 +125,nemo,quos,125 +126,praesentium,aut,126 +127,vel,illo,127 +128,molestias,cupiditate,128 +129,quis,sequi,129 +130,autem,nesciunt,130 +131,non,voluptas,131 +132,architecto,odit,132 +133,eum,pariatur,133 +134,necessitatibus,reprehenderit,134 +135,ea,eos,135 +136,omnis,sed,136 +137,nostrum,tempore,137 +138,doloremque,placeat,138 +139,alias,dolorem,139 +140,recusandae,et,140 +141,earum,perspiciatis,141 +142,est,magnam,142 +143,deleniti,magnam,143 +144,aut,numquam,144 +145,rerum,nemo,145 +146,delectus,mollitia,146 +147,alias,porro,147 +148,occaecati,mollitia,148 +149,recusandae,quisquam,149 +150,molestias,laborum,150 +151,tenetur,amet,151 +152,consequatur,ipsum,152 +153,minima,rerum,153 +154,natus,ullam,154 +155,ex,est,155 +156,dignissimos,voluptatem,156 +157,et,doloribus,157 +158,adipisci,dolor,158 +159,qui,optio,159 +160,veniam,soluta,160 +161,saepe,nobis,161 +162,facere,voluptas,162 +163,accusantium,ea,163 +164,reiciendis,porro,164 +165,quos,libero,165 +166,facere,debitis,166 +167,ab,accusamus,167 +168,beatae,suscipit,168 +169,atque,atque,169 +170,quod,ipsa,170 +171,hic,aut,171 +172,quas,delectus,172 +173,illum,vel,173 +174,odit,quia,174 +175,et,eum,175 +176,sunt,ipsa,176 +177,atque,voluptate,177 +178,autem,porro,178 +179,quis,nostrum,179 +180,natus,sint,180 +181,corrupti,sed,181 +182,exercitationem,dolorum,182 +183,et,dolores,183 +184,nisi,esse,184 +185,accusamus,ut,185 +186,quae,ratione,186 +187,tempora,ut,187 +188,et,magnam,188 +189,doloremque,et,189 +190,vel,sit,190 +191,tempora,dolore,191 +192,tempore,suscipit,192 +193,exercitationem,alias,193 +194,magnam,similique,194 +195,ipsum,velit,195 +196,eos,consequatur,196 +197,vel,esse,197 +198,sed,placeat,198 +199,at,omnis,199 +200,amet,veritatis,200 +201,quod,cupiditate,201 +202,non,quo,202 +203,corporis,dignissimos,203 +204,autem,quis,204 +205,repellat,aut,205 +206,rerum,aut,206 +207,reiciendis,quia,207 +208,et,eligendi,208 +209,id,quia,209 +210,repudiandae,dolores,210 +211,fugit,similique,211 +212,placeat,iste,212 +213,delectus,commodi,213 +214,et,illum,214 +215,totam,in,215 +216,iure,qui,216 +217,dicta,voluptas,217 +218,qui,expedita,218 +219,facilis,ut,219 +220,omnis,consequatur,220 +221,praesentium,ea,221 +222,repellendus,rerum,222 +223,odit,voluptatum,223 +224,maiores,voluptas,224 +225,quo,ut,225 +226,voluptas,impedit,226 +227,explicabo,dolorem,227 +228,tempora,quidem,228 +229,id,a,229 +230,qui,suscipit,230 +231,officiis,omnis,231 +232,ipsam,odit,232 +233,totam,omnis,233 +234,molestiae,in,234 +235,blanditiis,dolorem,235 +236,a,pariatur,236 +237,doloribus,impedit,237 +238,non,ullam,238 +239,quis,error,239 +240,sapiente,omnis,240 +241,molestias,sit,241 +242,dolores,natus,242 +243,recusandae,cumque,243 +244,odit,est,244 +245,sed,voluptas,245 +246,molestiae,et,246 +247,molestiae,vero,247 +248,quo,laudantium,248 +249,similique,cum,249 +250,dolor,modi,250 +251,voluptas,officia,251 +252,amet,eum,252 +253,impedit,est,253 +254,culpa,eveniet,254 +255,quia,occaecati,255 +256,perferendis,animi,256 +257,ut,et,257 +258,atque,et,258 +259,et,voluptatum,259 +260,reprehenderit,unde,260 +261,facilis,qui,261 +262,sequi,hic,262 +263,natus,molestias,263 +264,et,blanditiis,264 +265,sed,dolor,265 +266,et,sint,266 +267,illo,consequuntur,267 +268,totam,eos,268 +269,magnam,ea,269 +270,facere,ut,270 +271,accusantium,et,271 +272,temporibus,rem,272 +273,debitis,rerum,273 +274,et,facilis,274 +275,quia,quia,275 +276,voluptatem,eum,276 +277,exercitationem,alias,277 +278,ullam,quod,278 +279,iusto,quis,279 +280,quis,quo,280 +281,fuga,modi,281 +282,placeat,fugiat,282 +283,quidem,sunt,283 +284,ut,veritatis,284 +285,nihil,et,285 +286,qui,enim,286 +287,et,sint,287 +288,repellat,dolorem,288 +289,quia,aut,289 +290,magnam,doloremque,290 +291,accusamus,explicabo,291 +292,aut,dolor,292 +293,harum,exercitationem,293 +294,earum,sed,294 +295,repellat,vel,295 +296,laudantium,molestiae,296 +297,deserunt,omnis,297 +298,nesciunt,dolor,298 +299,repudiandae,corrupti,299 +300,nesciunt,est,300 +301,delectus,voluptas,301 +302,ut,cum,302 +303,et,rem,303 +304,doloremque,illo,304 +305,dignissimos,omnis,305 +306,nisi,in,306 +307,facilis,quo,307 +308,enim,est,308 +309,veritatis,veniam,309 +310,modi,dolore,310 +311,amet,quasi,311 +312,quibusdam,et,312 +313,nulla,occaecati,313 +314,eum,doloribus,314 +315,doloribus,labore,315 +316,numquam,repudiandae,316 +317,porro,nobis,317 +318,quia,rem,318 +319,sit,eum,319 +320,aliquid,consequatur,320 +321,officia,qui,321 +322,consequuntur,itaque,322 +323,et,vel,323 +324,ea,et,324 +325,omnis,voluptatum,325 +326,quia,id,326 +327,quos,et,327 +328,nobis,ut,328 +329,voluptas,unde,329 +330,et,voluptate,330 +331,ratione,dolor,331 +332,sed,ducimus,332 +333,dolorem,nostrum,333 +334,sint,laboriosam,334 +335,aspernatur,at,335 +336,officia,sed,336 +337,et,molestias,337 +338,facilis,ad,338 +339,et,neque,339 +340,quas,provident,340 +341,animi,quos,341 +342,tenetur,repellat,342 +343,dolores,esse,343 +344,porro,dolorem,344 +345,voluptatum,minima,345 +346,reprehenderit,voluptatem,346 +347,et,ut,347 +348,id,et,348 +349,aliquid,animi,349 +350,odio,minima,350 +351,cum,quae,351 +352,adipisci,eligendi,352 +353,qui,modi,353 +354,autem,vel,354 +355,temporibus,recusandae,355 +356,aut,assumenda,356 +357,et,consequuntur,357 +358,quas,molestias,358 +359,voluptates,dolores,359 +360,deserunt,ut,360 +361,est,incidunt,361 +362,accusamus,sed,362 +363,ut,commodi,363 +364,qui,vitae,364 +365,rerum,beatae,365 +366,perspiciatis,ipsa,366 +367,dolorem,esse,367 +368,asperiores,aut,368 +369,unde,saepe,369 +370,qui,labore,370 +371,natus,corporis,371 +372,ipsum,consequatur,372 +373,est,quos,373 +374,mollitia,aperiam,374 +375,non,dolorum,375 +376,tenetur,est,376 +377,aut,ut,377 +378,aut,neque,378 +379,accusantium,ex,379 +380,vel,impedit,380 +381,blanditiis,ea,381 +382,sint,debitis,382 +383,earum,velit,383 +384,et,tenetur,384 +385,omnis,ipsa,385 +386,magnam,ipsum,386 +387,sint,ipsam,387 +388,sit,aut,388 +389,aliquam,consequuntur,389 +390,ut,hic,390 +391,dolorem,nihil,391 +392,minima,sint,392 +393,soluta,rerum,393 +394,adipisci,perspiciatis,394 +395,et,qui,395 +396,in,voluptas,396 +397,est,nobis,397 +398,dolore,eum,398 +399,veniam,dolores,399 +400,et,eos,400 +401,earum,dolorem,401 +402,repellendus,id,402 +403,dolor,esse,403 +404,inventore,doloremque,404 +405,quas,soluta,405 +406,fuga,consectetur,406 +407,dignissimos,in,407 +408,consectetur,dolores,408 +409,non,autem,409 +410,modi,cumque,410 +411,cum,totam,411 +412,quam,ipsam,412 +413,ipsum,soluta,413 +414,expedita,consectetur,414 +415,quo,voluptatibus,415 +416,autem,quas,416 +417,et,cum,417 +418,unde,et,418 +419,alias,perferendis,419 +420,qui,praesentium,420 +421,vel,dolor,421 +422,provident,pariatur,422 +423,est,omnis,423 +424,quaerat,adipisci,424 +425,quo,beatae,425 +426,dolor,omnis,426 +427,aut,velit,427 +428,possimus,animi,428 +429,quis,maiores,429 +430,libero,et,430 +431,in,quis,431 +432,id,dignissimos,432 +433,officiis,similique,433 +434,asperiores,est,434 +435,et,nulla,435 +436,autem,veritatis,436 +437,et,eum,437 +438,et,at,438 +439,ipsam,sed,439 +440,quis,aut,440 +441,est,non,441 +442,exercitationem,corrupti,442 +443,repellendus,et,443 +444,deserunt,quibusdam,444 +445,est,sit,445 +446,veritatis,ab,446 +447,impedit,illum,447 +448,eos,aut,448 +449,atque,sequi,449 +450,eaque,cum,450 +451,aut,minima,451 +452,nostrum,animi,452 +453,quos,dignissimos,453 +454,perspiciatis,nostrum,454 +455,in,dolor,455 +456,aut,aperiam,456 +457,quia,autem,457 +458,non,reprehenderit,458 +459,nisi,minus,459 +460,libero,ratione,460 +461,dicta,sequi,461 +462,dolorum,enim,462 +463,dicta,quia,463 +464,non,itaque,464 +465,eum,accusantium,465 +466,ut,atque,466 +467,quibusdam,sit,467 +468,quidem,quo,468 +469,animi,et,469 +470,mollitia,commodi,470 +471,repudiandae,tempore,471 +472,non,exercitationem,472 +473,cum,quia,473 +474,sed,reprehenderit,474 +475,ducimus,sunt,475 +476,dignissimos,neque,476 +477,doloribus,eos,477 +478,perferendis,itaque,478 +479,sit,blanditiis,479 +480,earum,repellendus,480 +481,aut,et,481 +482,qui,assumenda,482 +483,ut,sunt,483 +484,aut,id,484 +485,ut,qui,485 +486,provident,quas,486 +487,blanditiis,laudantium,487 +488,sit,fugit,488 +489,quo,molestias,489 +490,modi,suscipit,490 +491,ut,et,491 +492,corrupti,cumque,492 +493,neque,dolorem,493 +494,quod,est,494 +495,aut,ut,495 +496,rerum,impedit,496 +497,saepe,odio,497 +498,nihil,enim,498 +499,molestias,provident,499 +500,neque,maxime,500 +501,quisquam,possimus,501 +502,at,ut,502 +503,sed,esse,503 +504,ullam,dolorem,504 +505,nobis,quia,505 +506,quidem,incidunt,506 +507,harum,non,507 +508,voluptate,qui,508 +509,quod,expedita,509 +510,dolorum,qui,510 +511,neque,optio,511 +512,et,eos,512 +513,voluptatem,dolorum,513 +514,blanditiis,totam,514 +515,et,amet,515 +516,assumenda,repudiandae,516 +517,sit,ex,517 +518,id,omnis,518 +519,a,est,519 +520,deleniti,optio,520 +521,nemo,rerum,521 +522,minima,quae,522 +523,quis,mollitia,523 +524,a,doloremque,524 +525,tempora,consectetur,525 +526,tempora,incidunt,526 +527,aspernatur,facilis,527 +528,consequatur,numquam,528 +529,ipsam,qui,529 +530,pariatur,aperiam,530 +531,laudantium,aliquam,531 +532,qui,voluptas,532 +533,et,optio,533 +534,officia,sapiente,534 +535,corporis,quae,535 +536,quia,nobis,536 +537,magni,cum,537 +538,eos,vel,538 +539,possimus,necessitatibus,539 +540,qui,modi,540 +541,in,necessitatibus,541 +542,velit,iusto,542 +543,ipsa,excepturi,543 +544,quisquam,rem,544 +545,sunt,voluptatem,545 +546,nesciunt,nulla,546 +547,aut,reprehenderit,547 +548,ut,modi,548 +549,natus,officiis,549 +550,ducimus,aut,550 +551,id,nihil,551 +552,error,ducimus,552 +553,vel,rerum,553 +554,dolorum,distinctio,554 +555,dolorum,officia,555 +556,voluptas,expedita,556 +557,non,et,557 +558,porro,voluptas,558 +559,omnis,sit,559 +560,hic,rerum,560 +561,rerum,voluptas,561 +562,vel,aliquam,562 +563,delectus,inventore,563 +564,consequatur,commodi,564 +565,est,ex,565 +566,et,sed,566 +567,qui,quo,567 +568,voluptas,aut,568 +569,enim,similique,569 +570,qui,eos,570 +571,ut,repudiandae,571 +572,sint,dignissimos,572 +573,ea,est,573 +574,asperiores,voluptatem,574 +575,dolores,ut,575 +576,excepturi,molestiae,576 +577,tempora,et,577 +578,expedita,nulla,578 +579,odio,at,579 +580,perferendis,enim,580 +581,nisi,at,581 +582,earum,ex,582 +583,omnis,voluptate,583 +584,molestiae,rerum,584 +585,consequuntur,odio,585 +586,odio,nulla,586 +587,dolorem,autem,587 +588,necessitatibus,et,588 +589,et,consequatur,589 +590,dignissimos,nemo,590 +591,culpa,quia,591 +592,voluptatem,aspernatur,592 +593,quo,saepe,593 +594,vel,quod,594 +595,temporibus,dolor,595 +596,eum,aliquid,596 +597,enim,omnis,597 +598,omnis,veritatis,598 +599,quo,quae,599 +600,ex,ullam,600 +601,sed,atque,601 +602,esse,sit,602 +603,eligendi,non,603 +604,inventore,esse,604 +605,non,omnis,605 +606,error,nostrum,606 +607,porro,modi,607 +608,omnis,quia,608 +609,omnis,unde,609 +610,minus,eveniet,610 +611,pariatur,a,611 +612,a,recusandae,612 +613,tempora,nulla,613 +614,corporis,velit,614 +615,et,molestiae,615 +616,in,temporibus,616 +617,qui,placeat,617 +618,est,quia,618 +619,consequatur,sequi,619 +620,non,et,620 +621,animi,a,621 +622,quidem,molestiae,622 +623,deleniti,harum,623 +624,nemo,nam,624 +625,et,quos,625 +626,blanditiis,alias,626 +627,rem,optio,627 +628,similique,unde,628 +629,iusto,odit,629 +630,architecto,rem,630 +631,veniam,pariatur,631 +632,debitis,quis,632 +633,odit,nobis,633 +634,consequatur,ipsum,634 +635,neque,ad,635 +636,doloribus,sint,636 +637,beatae,reiciendis,637 +638,quos,sit,638 +639,vero,eos,639 +640,excepturi,autem,640 +641,est,omnis,641 +642,nobis,voluptatibus,642 +643,consectetur,eum,643 +644,ab,sed,644 +645,ea,in,645 +646,corporis,sapiente,646 +647,tempora,recusandae,647 +648,expedita,itaque,648 +649,quis,exercitationem,649 +650,ut,est,650 +651,eum,quo,651 +652,qui,odit,652 +653,velit,et,653 +654,modi,minus,654 +655,quisquam,quos,655 +656,ut,molestiae,656 +657,consequatur,occaecati,657 +658,architecto,aut,658 +659,impedit,error,659 +660,voluptatem,aliquid,660 +661,perspiciatis,unde,661 +662,corrupti,aut,662 +663,voluptatem,eaque,663 +664,ut,facilis,664 +665,perspiciatis,similique,665 +666,aut,sed,666 +667,ea,ut,667 +668,magnam,quia,668 +669,eius,et,669 +670,ad,rerum,670 +671,sunt,ut,671 +672,ab,nemo,672 +673,voluptatem,dolores,673 +674,unde,saepe,674 +675,blanditiis,quibusdam,675 +676,alias,est,676 +677,eum,consequatur,677 +678,aut,velit,678 +679,repellendus,architecto,679 +680,voluptas,corrupti,680 +681,quod,maiores,681 +682,sit,et,682 +683,odit,harum,683 +684,molestiae,ex,684 +685,modi,ut,685 +686,non,asperiores,686 +687,officiis,odio,687 +688,repudiandae,iure,688 +689,aliquid,quaerat,689 +690,cumque,rerum,690 +691,facilis,sed,691 +692,ipsam,nobis,692 +693,dolor,mollitia,693 +694,soluta,necessitatibus,694 +695,voluptatibus,possimus,695 +696,non,doloremque,696 +697,sed,odio,697 +698,incidunt,fugiat,698 +699,ducimus,quis,699 +700,et,consequatur,700 +701,unde,non,701 +702,placeat,ratione,702 +703,vel,odio,703 +704,qui,tenetur,704 +705,id,similique,705 +706,voluptatem,facilis,706 +707,fuga,a,707 +708,ex,deserunt,708 +709,mollitia,laborum,709 +710,natus,quibusdam,710 +711,beatae,et,711 +712,voluptatem,non,712 +713,vel,laboriosam,713 +714,suscipit,distinctio,714 +715,et,rerum,715 +716,debitis,facere,716 +717,voluptatibus,id,717 +718,voluptatum,vitae,718 +719,velit,odio,719 +720,aspernatur,est,720 +721,laudantium,id,721 +722,esse,et,722 +723,saepe,debitis,723 +724,esse,explicabo,724 +725,ut,dolore,725 +726,excepturi,quia,726 +727,voluptas,ut,727 +728,voluptas,debitis,728 +729,dolor,consectetur,729 +730,sapiente,ut,730 +731,alias,in,731 +732,dolorem,at,732 +733,laborum,sed,733 +734,voluptatibus,non,734 +735,minus,soluta,735 +736,dolores,vero,736 +737,nihil,aut,737 +738,facilis,adipisci,738 +739,qui,voluptatem,739 +740,autem,aut,740 +741,voluptatem,atque,741 +742,voluptatibus,aspernatur,742 +743,repellendus,dolorem,743 +744,voluptatum,fugit,744 +745,quod,ut,745 +746,reprehenderit,quo,746 +747,totam,ut,747 +748,ex,quisquam,748 +749,reprehenderit,blanditiis,749 +750,sed,labore,750 +751,ut,est,751 +752,repellendus,nam,752 +753,quia,voluptas,753 +754,sit,a,754 +755,perferendis,nostrum,755 +756,nihil,fuga,756 +757,doloribus,et,757 +758,ipsam,velit,758 +759,rem,veniam,759 +760,fuga,possimus,760 +761,incidunt,sint,761 +762,vero,rerum,762 +763,ad,assumenda,763 +764,praesentium,exercitationem,764 +765,ut,reprehenderit,765 +766,id,quia,766 +767,doloribus,iure,767 +768,deleniti,quia,768 +769,pariatur,sit,769 +770,molestias,unde,770 +771,sint,enim,771 +772,amet,beatae,772 +773,commodi,dolores,773 +774,omnis,consectetur,774 +775,dignissimos,perspiciatis,775 +776,deserunt,aut,776 +777,doloremque,ipsam,777 +778,aut,et,778 +779,a,quibusdam,779 +780,vero,quasi,780 +781,et,officia,781 +782,accusamus,et,782 +783,explicabo,voluptas,783 +784,autem,fugit,784 +785,non,cumque,785 +786,et,est,786 +787,laborum,facere,787 +788,et,facilis,788 +789,consequatur,aut,789 +790,voluptas,quisquam,790 +791,tempore,veritatis,791 +792,quos,deserunt,792 +793,modi,accusantium,793 +794,pariatur,ea,794 +795,ducimus,voluptas,795 +796,sed,et,796 +797,nostrum,nemo,797 +798,enim,vel,798 +799,eum,cupiditate,799 +800,et,ab,800 +801,aut,amet,801 +802,et,non,802 +803,eaque,blanditiis,803 +804,veniam,dolorum,804 +805,dolorum,necessitatibus,805 +806,delectus,sit,806 +807,et,nisi,807 +808,quasi,architecto,808 +809,ut,nisi,809 +810,minima,a,810 +811,quam,soluta,811 +812,ratione,rerum,812 +813,fugit,iure,813 +814,temporibus,distinctio,814 +815,quas,ea,815 +816,mollitia,harum,816 +817,temporibus,quis,817 +818,consequatur,ea,818 +819,beatae,laudantium,819 +820,adipisci,vero,820 +821,eum,consequuntur,821 +822,voluptatibus,perspiciatis,822 +823,quisquam,excepturi,823 +824,sequi,quia,824 +825,et,sequi,825 +826,ab,iste,826 +827,fugit,explicabo,827 +828,voluptatem,rerum,828 +829,aut,illum,829 +830,voluptas,consectetur,830 +831,omnis,sed,831 +832,est,asperiores,832 +833,sapiente,ipsum,833 +834,quam,eum,834 +835,ex,provident,835 +836,temporibus,dolorem,836 +837,labore,explicabo,837 +838,quas,nobis,838 +839,doloremque,sed,839 +840,consequatur,et,840 +841,et,distinctio,841 +842,sit,consectetur,842 +843,dolores,fugiat,843 +844,et,delectus,844 +845,sint,voluptatem,845 +846,voluptates,quod,846 +847,eos,iure,847 +848,blanditiis,vitae,848 +849,a,aut,849 +850,molestiae,incidunt,850 +851,maiores,corporis,851 +852,numquam,maiores,852 +853,dicta,quis,853 +854,porro,non,854 +855,corrupti,ut,855 +856,non,ducimus,856 +857,aliquam,autem,857 +858,non,exercitationem,858 +859,praesentium,dolorem,859 +860,possimus,provident,860 +861,rem,fuga,861 +862,ut,cupiditate,862 +863,ut,est,863 +864,voluptas,eius,864 +865,quia,labore,865 +866,voluptatem,officia,866 +867,alias,enim,867 +868,qui,adipisci,868 +869,molestiae,recusandae,869 +870,unde,dolorem,870 +871,cumque,est,871 +872,consequuntur,expedita,872 +873,autem,commodi,873 +874,dolorum,doloremque,874 +875,quos,animi,875 +876,qui,quos,876 +877,sunt,expedita,877 +878,voluptas,voluptatum,878 +879,magni,aut,879 +880,aspernatur,assumenda,880 +881,est,et,881 +882,ab,eius,882 +883,iusto,saepe,883 +884,asperiores,beatae,884 +885,nulla,et,885 +886,perferendis,labore,886 +887,laboriosam,sunt,887 +888,architecto,beatae,888 +889,aliquid,cumque,889 +890,libero,doloremque,890 +891,esse,et,891 +892,dolore,ipsa,892 +893,sint,ab,893 +894,ut,eos,894 +895,cumque,optio,895 +896,voluptatem,non,896 +897,velit,delectus,897 +898,beatae,temporibus,898 +899,sit,labore,899 +900,aut,et,900 +901,ipsam,ut,901 +902,et,in,902 +903,dolorem,dolorem,903 +904,ipsa,quidem,904 +905,ex,fugiat,905 +906,suscipit,quibusdam,906 +907,magni,aliquid,907 +908,itaque,laborum,908 +909,molestiae,id,909 +910,molestias,tempore,910 +911,ipsum,sed,911 +912,aut,possimus,912 +913,error,architecto,913 +914,eos,excepturi,914 +915,sed,ad,915 +916,blanditiis,sit,916 +917,odio,ipsam,917 +918,repellendus,sit,918 +919,ut,amet,919 +920,asperiores,incidunt,920 +921,voluptatem,dolore,921 +922,aspernatur,sed,922 +923,facere,et,923 +924,rerum,provident,924 +925,quos,eius,925 +926,voluptates,nisi,926 +927,aut,aut,927 +928,dolorem,sit,928 +929,et,qui,929 +930,temporibus,qui,930 +931,unde,labore,931 +932,nulla,beatae,932 +933,totam,velit,933 +934,blanditiis,et,934 +935,fugiat,exercitationem,935 +936,tempore,inventore,936 +937,molestiae,sed,937 +938,ipsum,delectus,938 +939,officiis,consectetur,939 +940,iusto,omnis,940 +941,enim,iure,941 +942,a,atque,942 +943,doloribus,impedit,943 +944,aut,velit,944 +945,dolore,amet,945 +946,qui,tempora,946 +947,sed,asperiores,947 +948,vitae,a,948 +949,corporis,omnis,949 +950,quos,nobis,950 +951,qui,quia,951 +952,architecto,doloremque,952 +953,dicta,ut,953 +954,accusantium,deleniti,954 +955,numquam,consequuntur,955 +956,cum,repellat,956 +957,fuga,tempore,957 +958,est,ut,958 +959,ipsum,in,959 +960,veniam,accusamus,960 +961,iusto,necessitatibus,961 +962,placeat,dolore,962 +963,dicta,atque,963 +964,fuga,quibusdam,964 +965,et,aut,965 +966,minus,autem,966 +967,minus,est,967 +968,odit,perspiciatis,968 +969,nam,dolorem,969 +970,qui,magnam,970 +971,qui,eos,971 +972,voluptas,molestias,972 +973,sed,odit,973 +974,et,tempora,974 +975,quo,placeat,975 +976,accusamus,ipsum,976 +977,rerum,consequatur,977 +978,et,dolor,978 +979,debitis,commodi,979 +980,qui,architecto,980 +981,repudiandae,ullam,981 +982,temporibus,magnam,982 +983,illum,aliquam,983 +984,inventore,ex,984 +985,corrupti,porro,985 +986,odit,magni,986 +987,facere,quasi,987 +988,sapiente,dignissimos,988 +989,temporibus,eum,989 +990,maiores,quo,990 +991,voluptatem,et,991 +992,expedita,quo,992 +993,nostrum,eum,993 +994,in,ut,994 +995,libero,quam,995 +996,eos,deleniti,996 +997,molestiae,nesciunt,997 +998,quisquam,voluptas,998 +999,laudantium,tempora,999 +1000,similique,sequi,1000 +1001,eius,neque,1001 +1002,deleniti,iste,1002 +1003,velit,nisi,1003 +1004,repellendus,quia,1004 +1005,est,aut,1005 +1006,voluptatem,et,1006 +1007,laudantium,consequatur,1007 +1008,atque,doloribus,1008 +1009,saepe,ullam,1009 +1010,cumque,optio,1010 +1011,molestias,beatae,1011 +1012,nihil,facilis,1012 +1013,corporis,consequatur,1013 +1014,atque,reprehenderit,1014 +1015,vero,aliquam,1015 +1016,eos,cupiditate,1016 +1017,autem,adipisci,1017 +1018,qui,fugit,1018 +1019,dolore,unde,1019 +1020,tempore,rerum,1020 +1021,et,iste,1021 +1022,eum,et,1022 +1023,quasi,placeat,1023 +1024,ullam,ipsam,1024 +1025,saepe,tempora,1025 +1026,velit,ut,1026 +1027,qui,delectus,1027 +1028,deserunt,aperiam,1028 +1029,quam,tempora,1029 +1030,reiciendis,id,1030 +1031,nihil,repellendus,1031 +1032,vel,aut,1032 +1033,pariatur,eum,1033 +1034,quidem,quos,1034 +1035,omnis,consequatur,1035 +1036,qui,aut,1036 +1037,esse,id,1037 +1038,rerum,possimus,1038 +1039,ut,molestiae,1039 +1040,rem,occaecati,1040 +1041,odit,eligendi,1041 +1042,ut,nobis,1042 +1043,inventore,similique,1043 +1044,sed,cum,1044 +1045,eligendi,facilis,1045 +1046,id,quidem,1046 +1047,placeat,id,1047 +1048,voluptas,rem,1048 +1049,sit,sed,1049 +1050,aspernatur,at,1050 +1051,beatae,fugiat,1051 +1052,reprehenderit,omnis,1052 +1053,ipsam,aperiam,1053 +1054,veniam,iusto,1054 +1055,harum,et,1055 +1056,inventore,sequi,1056 +1057,nesciunt,atque,1057 +1058,facere,et,1058 +1059,dolores,et,1059 +1060,perferendis,amet,1060 +1061,consequatur,sunt,1061 +1062,non,tempore,1062 +1063,error,eum,1063 +1064,sit,omnis,1064 +1065,sit,sit,1065 +1066,maiores,possimus,1066 +1067,quasi,autem,1067 +1068,repudiandae,similique,1068 +1069,tempora,non,1069 +1070,neque,assumenda,1070 +1071,rerum,itaque,1071 +1072,sunt,error,1072 +1073,veritatis,officia,1073 +1074,culpa,cum,1074 +1075,soluta,fugit,1075 +1076,voluptates,culpa,1076 +1077,dolorum,doloremque,1077 +1078,explicabo,qui,1078 +1079,a,magni,1079 +1080,aut,molestiae,1080 +1081,fugit,quos,1081 +1082,voluptas,officia,1082 +1083,eos,qui,1083 +1084,libero,reprehenderit,1084 +1085,qui,ea,1085 +1086,doloremque,corrupti,1086 +1087,totam,saepe,1087 +1088,laboriosam,enim,1088 +1089,aut,et,1089 +1090,et,vero,1090 +1091,et,tempore,1091 +1092,sit,atque,1092 +1093,suscipit,et,1093 +1094,perspiciatis,et,1094 +1095,qui,non,1095 +1096,molestias,consequuntur,1096 +1097,dicta,rerum,1097 +1098,dolore,ea,1098 +1099,quo,vero,1099 +1100,dolor,rem,1100 +1101,pariatur,possimus,1101 +1102,et,quo,1102 +1103,culpa,consequuntur,1103 +1104,temporibus,earum,1104 +1105,est,vel,1105 +1106,est,rerum,1106 +1107,iure,nostrum,1107 +1108,soluta,culpa,1108 +1109,eum,quo,1109 +1110,dolorem,magnam,1110 +1111,eum,adipisci,1111 +1112,perspiciatis,eligendi,1112 +1113,molestias,praesentium,1113 +1114,optio,odit,1114 +1115,aliquam,dolores,1115 +1116,natus,perferendis,1116 +1117,animi,esse,1117 +1118,tenetur,consectetur,1118 +1119,sit,consequatur,1119 +1120,ut,qui,1120 +1121,aut,ad,1121 +1122,vel,a,1122 +1123,eaque,sit,1123 +1124,aut,dolores,1124 +1125,delectus,unde,1125 +1126,veniam,minima,1126 +1127,ipsam,adipisci,1127 +1128,asperiores,vel,1128 +1129,in,voluptatem,1129 +1130,ab,natus,1130 +1131,dolorum,minima,1131 +1132,dolorum,alias,1132 +1133,et,ipsam,1133 +1134,incidunt,veritatis,1134 +1135,aut,consequatur,1135 +1136,hic,quia,1136 +1137,quo,dolor,1137 +1138,ut,optio,1138 +1139,sit,recusandae,1139 +1140,temporibus,assumenda,1140 +1141,voluptas,sint,1141 +1142,reiciendis,fugiat,1142 +1143,sed,aut,1143 +1144,voluptatem,aut,1144 +1145,accusantium,maiores,1145 +1146,facere,et,1146 +1147,voluptatum,ut,1147 +1148,nam,asperiores,1148 +1149,in,doloremque,1149 +1150,quisquam,incidunt,1150 +1151,harum,hic,1151 +1152,distinctio,est,1152 +1153,laboriosam,deleniti,1153 +1154,consectetur,eius,1154 +1155,quis,architecto,1155 +1156,occaecati,et,1156 +1157,sint,et,1157 +1158,dolorum,fugit,1158 +1159,incidunt,in,1159 +1160,minima,quisquam,1160 +1161,quas,nam,1161 +1162,sed,ut,1162 +1163,reiciendis,et,1163 +1164,odio,commodi,1164 +1165,sunt,non,1165 +1166,animi,ut,1166 +1167,consectetur,laboriosam,1167 +1168,eos,tempore,1168 +1169,rem,occaecati,1169 +1170,facilis,hic,1170 +1171,nobis,libero,1171 +1172,quod,optio,1172 +1173,illo,aut,1173 +1174,nobis,consequatur,1174 +1175,earum,ut,1175 +1176,ipsam,vel,1176 +1177,suscipit,soluta,1177 +1178,a,dolorem,1178 +1179,dicta,sed,1179 +1180,aspernatur,quibusdam,1180 +1181,temporibus,necessitatibus,1181 +1182,unde,perferendis,1182 +1183,quibusdam,praesentium,1183 +1184,similique,optio,1184 +1185,exercitationem,et,1185 +1186,qui,officiis,1186 +1187,eum,et,1187 +1188,omnis,aperiam,1188 +1189,recusandae,enim,1189 +1190,perferendis,voluptatum,1190 +1191,ut,eum,1191 +1192,consectetur,sapiente,1192 +1193,autem,qui,1193 +1194,quis,assumenda,1194 +1195,ut,cupiditate,1195 +1196,quia,dolorem,1196 +1197,excepturi,in,1197 +1198,officiis,numquam,1198 +1199,possimus,delectus,1199 +1200,veniam,recusandae,1200 +1201,quos,id,1201 +1202,ratione,corporis,1202 +1203,alias,voluptates,1203 +1204,quia,quasi,1204 +1205,animi,soluta,1205 +1206,autem,laboriosam,1206 +1207,impedit,velit,1207 +1208,est,voluptatem,1208 +1209,ut,beatae,1209 +1210,quis,tempora,1210 +1211,placeat,assumenda,1211 +1212,libero,porro,1212 +1213,minima,veniam,1213 +1214,explicabo,sed,1214 +1215,illo,consequatur,1215 +1216,necessitatibus,in,1216 +1217,recusandae,aut,1217 +1218,dicta,eos,1218 +1219,maiores,qui,1219 +1220,eum,temporibus,1220 +1221,sit,libero,1221 +1222,aperiam,quia,1222 +1223,ut,est,1223 +1224,quo,qui,1224 +1225,velit,suscipit,1225 +1226,aut,qui,1226 +1227,culpa,omnis,1227 +1228,omnis,non,1228 +1229,dolore,non,1229 +1230,dolorem,quam,1230 +1231,voluptates,odio,1231 +1232,deserunt,non,1232 +1233,qui,deserunt,1233 +1234,debitis,ea,1234 +1235,accusamus,sed,1235 +1236,maiores,earum,1236 +1237,eum,vitae,1237 +1238,dolorem,maxime,1238 +1239,atque,officia,1239 +1240,rerum,sunt,1240 +1241,inventore,et,1241 +1242,sed,labore,1242 +1243,nulla,et,1243 +1244,neque,consectetur,1244 +1245,deleniti,assumenda,1245 +1246,assumenda,possimus,1246 +1247,deserunt,qui,1247 +1248,hic,et,1248 +1249,et,incidunt,1249 +1250,soluta,quos,1250 +1251,reprehenderit,natus,1251 +1252,omnis,in,1252 +1253,qui,libero,1253 +1254,occaecati,dolorem,1254 +1255,odio,rem,1255 +1256,tempora,temporibus,1256 +1257,quia,ut,1257 +1258,odit,et,1258 +1259,sapiente,optio,1259 +1260,aliquam,voluptatem,1260 +1261,dolorem,corrupti,1261 +1262,modi,necessitatibus,1262 +1263,sequi,doloremque,1263 +1264,voluptatum,dolorum,1264 +1265,sequi,quo,1265 +1266,reprehenderit,similique,1266 +1267,mollitia,molestias,1267 +1268,ut,vel,1268 +1269,quis,dolores,1269 +1270,nesciunt,consequatur,1270 +1271,praesentium,magni,1271 +1272,nemo,facilis,1272 +1273,molestiae,sint,1273 +1274,natus,est,1274 +1275,a,quibusdam,1275 +1276,sapiente,dignissimos,1276 +1277,sit,eaque,1277 +1278,possimus,illum,1278 +1279,ratione,assumenda,1279 +1280,fuga,quod,1280 +1281,quis,nam,1281 +1282,et,ut,1282 +1283,qui,accusantium,1283 +1284,molestias,aliquam,1284 +1285,ut,fugit,1285 +1286,nesciunt,dolor,1286 +1287,voluptatem,qui,1287 +1288,explicabo,iure,1288 +1289,ratione,itaque,1289 +1290,aut,non,1290 +1291,dolores,rerum,1291 +1292,nihil,dolore,1292 +1293,blanditiis,omnis,1293 +1294,in,dolor,1294 +1295,in,enim,1295 +1296,sed,repudiandae,1296 +1297,libero,delectus,1297 +1298,modi,voluptatum,1298 +1299,explicabo,impedit,1299 +1300,eum,accusantium,1300 +1301,dicta,expedita,1301 +1302,assumenda,eaque,1302 +1303,officia,necessitatibus,1303 +1304,doloremque,corrupti,1304 +1305,aut,minus,1305 +1306,aspernatur,ducimus,1306 +1307,voluptatem,deserunt,1307 +1308,quo,eum,1308 +1309,hic,ex,1309 +1310,perspiciatis,non,1310 +1311,dolore,exercitationem,1311 +1312,eligendi,itaque,1312 +1313,iure,enim,1313 +1314,nesciunt,molestias,1314 +1315,et,minima,1315 +1316,quae,et,1316 +1317,impedit,officiis,1317 +1318,dolor,at,1318 +1319,iste,ut,1319 +1320,qui,repudiandae,1320 +1321,veritatis,voluptatem,1321 +1322,ut,quis,1322 +1323,vitae,autem,1323 +1324,aliquid,quia,1324 +1325,voluptas,molestiae,1325 +1326,ratione,et,1326 +1327,architecto,et,1327 +1328,ut,occaecati,1328 +1329,nesciunt,omnis,1329 +1330,non,nihil,1330 +1331,repudiandae,consequuntur,1331 +1332,unde,animi,1332 +1333,dolorem,quis,1333 +1334,perspiciatis,culpa,1334 +1335,ratione,pariatur,1335 +1336,illo,porro,1336 +1337,veritatis,est,1337 +1338,eos,voluptates,1338 +1339,aut,reprehenderit,1339 +1340,est,corrupti,1340 +1341,doloremque,nulla,1341 +1342,sit,similique,1342 +1343,autem,ea,1343 +1344,ut,ex,1344 +1345,voluptas,qui,1345 +1346,ut,architecto,1346 +1347,aut,quisquam,1347 +1348,et,exercitationem,1348 +1349,quibusdam,ex,1349 +1350,dolores,ipsum,1350 +1351,recusandae,odit,1351 +1352,dignissimos,unde,1352 +1353,dolores,est,1353 +1354,ipsam,quibusdam,1354 +1355,repellat,eligendi,1355 +1356,atque,culpa,1356 +1357,hic,ipsum,1357 +1358,reprehenderit,aperiam,1358 +1359,fugiat,impedit,1359 +1360,quis,quasi,1360 +1361,officia,sequi,1361 +1362,architecto,recusandae,1362 +1363,labore,magnam,1363 +1364,reiciendis,qui,1364 +1365,non,ut,1365 +1366,omnis,et,1366 +1367,facere,ut,1367 +1368,est,odit,1368 +1369,ut,voluptatem,1369 +1370,excepturi,rerum,1370 +1371,amet,vitae,1371 +1372,sit,possimus,1372 +1373,debitis,ut,1373 +1374,eius,quas,1374 +1375,cum,fuga,1375 +1376,accusantium,impedit,1376 +1377,voluptate,totam,1377 +1378,molestias,aperiam,1378 +1379,aut,quasi,1379 +1380,nobis,laudantium,1380 +1381,quam,accusamus,1381 +1382,numquam,qui,1382 +1383,fugit,dolorem,1383 +1384,autem,est,1384 +1385,perferendis,harum,1385 +1386,quia,ea,1386 +1387,necessitatibus,explicabo,1387 +1388,voluptates,fuga,1388 +1389,consequatur,beatae,1389 +1390,aut,sed,1390 +1391,non,voluptatem,1391 +1392,culpa,dicta,1392 +1393,et,quasi,1393 +1394,ad,fuga,1394 +1395,quae,voluptates,1395 +1396,optio,est,1396 +1397,vel,perspiciatis,1397 +1398,enim,qui,1398 +1399,quae,ab,1399 +1400,aut,ut,1400 +1401,debitis,molestias,1401 +1402,sed,necessitatibus,1402 +1403,quo,labore,1403 +1404,minus,sunt,1404 +1405,rerum,assumenda,1405 +1406,voluptas,enim,1406 +1407,perferendis,minus,1407 +1408,sed,veritatis,1408 +1409,atque,ratione,1409 +1410,aut,voluptas,1410 +1411,qui,quod,1411 +1412,sit,voluptatem,1412 +1413,quam,ipsa,1413 +1414,excepturi,tenetur,1414 +1415,dolor,excepturi,1415 +1416,voluptate,repellendus,1416 +1417,et,ipsum,1417 +1418,ab,est,1418 +1419,accusantium,quia,1419 +1420,harum,asperiores,1420 +1421,praesentium,quaerat,1421 +1422,odit,veritatis,1422 +1423,qui,modi,1423 +1424,perferendis,quis,1424 +1425,iste,sunt,1425 +1426,omnis,explicabo,1426 +1427,ex,dolor,1427 +1428,maiores,veritatis,1428 +1429,optio,itaque,1429 +1430,beatae,praesentium,1430 +1431,ut,odio,1431 +1432,in,porro,1432 +1433,quos,exercitationem,1433 +1434,nihil,et,1434 +1435,quos,molestiae,1435 +1436,illum,quaerat,1436 +1437,dicta,tenetur,1437 +1438,ducimus,tenetur,1438 +1439,repudiandae,laudantium,1439 +1440,at,provident,1440 +1441,tempora,animi,1441 +1442,aut,voluptas,1442 +1443,ab,id,1443 +1444,rerum,ipsa,1444 +1445,quis,et,1445 +1446,odio,eum,1446 +1447,iure,sed,1447 +1448,rerum,dignissimos,1448 +1449,in,asperiores,1449 +1450,ratione,nobis,1450 +1451,distinctio,ipsa,1451 +1452,est,numquam,1452 +1453,ad,soluta,1453 +1454,quisquam,dolorem,1454 +1455,praesentium,quam,1455 +1456,sit,illum,1456 +1457,consequuntur,culpa,1457 +1458,inventore,accusantium,1458 +1459,id,aut,1459 +1460,rem,aliquid,1460 +1461,suscipit,esse,1461 +1462,exercitationem,praesentium,1462 +1463,maxime,sit,1463 +1464,culpa,repellendus,1464 +1465,quidem,voluptas,1465 +1466,repellendus,est,1466 +1467,fuga,occaecati,1467 +1468,magnam,iste,1468 +1469,aut,ad,1469 +1470,ea,iste,1470 +1471,aliquam,expedita,1471 +1472,expedita,id,1472 +1473,harum,itaque,1473 +1474,eum,iure,1474 +1475,mollitia,fuga,1475 +1476,earum,mollitia,1476 +1477,possimus,ad,1477 +1478,non,sint,1478 +1479,dolorem,nesciunt,1479 +1480,ut,minima,1480 +1481,nam,iure,1481 +1482,qui,rem,1482 +1483,sit,aliquam,1483 +1484,placeat,ipsa,1484 +1485,non,exercitationem,1485 +1486,doloribus,ullam,1486 +1487,fugit,blanditiis,1487 +1488,sed,quos,1488 +1489,sunt,qui,1489 +1490,a,assumenda,1490 +1491,doloribus,sint,1491 +1492,molestias,animi,1492 +1493,repellat,cum,1493 +1494,dicta,illo,1494 +1495,aut,laborum,1495 +1496,ex,quibusdam,1496 +1497,aut,quidem,1497 +1498,id,quos,1498 +1499,dolores,neque,1499 +1500,quam,aut,1500 +1501,aut,sit,1501 +1502,pariatur,ipsa,1502 +1503,excepturi,natus,1503 +1504,tenetur,minus,1504 +1505,ea,quam,1505 +1506,unde,in,1506 +1507,quasi,laudantium,1507 +1508,eum,nesciunt,1508 +1509,quis,sint,1509 +1510,id,aspernatur,1510 +1511,sapiente,ducimus,1511 +1512,saepe,pariatur,1512 +1513,amet,rerum,1513 +1514,numquam,nobis,1514 +1515,voluptatum,numquam,1515 +1516,in,quia,1516 +1517,quia,perferendis,1517 +1518,necessitatibus,qui,1518 +1519,asperiores,et,1519 +1520,eaque,est,1520 +1521,assumenda,pariatur,1521 +1522,ipsam,id,1522 +1523,et,quia,1523 +1524,possimus,asperiores,1524 +1525,quo,quia,1525 +1526,quia,omnis,1526 +1527,assumenda,recusandae,1527 +1528,quia,ut,1528 +1529,exercitationem,est,1529 +1530,velit,exercitationem,1530 +1531,illum,nihil,1531 +1532,a,aspernatur,1532 +1533,exercitationem,labore,1533 +1534,officiis,doloribus,1534 +1535,et,eaque,1535 +1536,ut,inventore,1536 +1537,aliquam,fuga,1537 +1538,voluptate,numquam,1538 +1539,quis,delectus,1539 +1540,sint,assumenda,1540 +1541,quae,veritatis,1541 +1542,soluta,consectetur,1542 +1543,qui,voluptatem,1543 +1544,enim,consequuntur,1544 +1545,id,id,1545 +1546,labore,provident,1546 +1547,placeat,quia,1547 +1548,nobis,odit,1548 +1549,consequatur,velit,1549 +1550,voluptates,ut,1550 +1551,ipsam,nihil,1551 +1552,eius,eum,1552 +1553,unde,suscipit,1553 +1554,sequi,ipsa,1554 +1555,eligendi,molestias,1555 +1556,reprehenderit,dolorum,1556 +1557,dolorem,maxime,1557 +1558,distinctio,maiores,1558 +1559,labore,dicta,1559 +1560,et,aut,1560 +1561,fugiat,officia,1561 +1562,itaque,blanditiis,1562 +1563,minus,qui,1563 +1564,illo,reiciendis,1564 +1565,velit,sunt,1565 +1566,mollitia,nobis,1566 +1567,ut,perspiciatis,1567 +1568,a,numquam,1568 +1569,unde,sed,1569 +1570,aut,et,1570 +1571,veniam,quis,1571 +1572,ratione,maxime,1572 +1573,adipisci,molestiae,1573 +1574,nesciunt,adipisci,1574 +1575,enim,molestiae,1575 +1576,ut,consequatur,1576 +1577,voluptates,possimus,1577 +1578,ad,excepturi,1578 +1579,repellendus,qui,1579 +1580,incidunt,minus,1580 +1581,enim,adipisci,1581 +1582,commodi,doloremque,1582 +1583,est,architecto,1583 +1584,est,est,1584 +1585,dignissimos,commodi,1585 +1586,debitis,earum,1586 +1587,ipsa,omnis,1587 +1588,quia,sunt,1588 +1589,et,quo,1589 +1590,ea,inventore,1590 +1591,distinctio,consectetur,1591 +1592,provident,voluptates,1592 +1593,et,et,1593 +1594,eaque,quos,1594 +1595,est,eum,1595 +1596,et,quaerat,1596 +1597,doloremque,voluptatem,1597 +1598,omnis,quo,1598 +1599,et,labore,1599 +1600,voluptatibus,nisi,1600 +1601,inventore,asperiores,1601 +1602,possimus,repudiandae,1602 +1603,vitae,dolore,1603 +1604,qui,occaecati,1604 +1605,et,aut,1605 +1606,quaerat,aut,1606 +1607,similique,ut,1607 +1608,aspernatur,expedita,1608 +1609,nobis,dignissimos,1609 +1610,repellat,accusantium,1610 +1611,totam,corrupti,1611 +1612,reiciendis,quod,1612 +1613,minima,quaerat,1613 +1614,harum,et,1614 +1615,repudiandae,ipsam,1615 +1616,velit,et,1616 +1617,sit,suscipit,1617 +1618,ducimus,eveniet,1618 +1619,eum,eos,1619 +1620,expedita,aspernatur,1620 +1621,qui,quas,1621 +1622,voluptates,et,1622 +1623,nisi,consequatur,1623 +1624,voluptates,dolores,1624 +1625,quam,ea,1625 +1626,commodi,similique,1626 +1627,adipisci,modi,1627 +1628,reprehenderit,autem,1628 +1629,veniam,quam,1629 +1630,doloremque,quis,1630 +1631,dignissimos,aut,1631 +1632,dolorum,enim,1632 +1633,repellat,facilis,1633 +1634,quisquam,vero,1634 +1635,iure,sed,1635 +1636,consequuntur,reiciendis,1636 +1637,dolorem,qui,1637 +1638,nisi,qui,1638 +1639,modi,qui,1639 +1640,illo,at,1640 +1641,eligendi,ea,1641 +1642,ea,sit,1642 +1643,rem,laborum,1643 +1644,ut,voluptas,1644 +1645,fugit,repellendus,1645 +1646,reprehenderit,est,1646 +1647,laudantium,id,1647 +1648,omnis,ut,1648 +1649,temporibus,officia,1649 +1650,neque,ut,1650 +1651,praesentium,delectus,1651 +1652,voluptates,rerum,1652 +1653,et,tempora,1653 +1654,fugiat,aut,1654 +1655,autem,quibusdam,1655 +1656,voluptates,doloremque,1656 +1657,ducimus,voluptas,1657 +1658,ut,dicta,1658 +1659,quibusdam,tempora,1659 +1660,vel,omnis,1660 +1661,est,aut,1661 +1662,odit,aut,1662 +1663,qui,numquam,1663 +1664,dicta,quas,1664 +1665,fugiat,rerum,1665 +1666,quia,accusamus,1666 +1667,voluptatem,perferendis,1667 +1668,quia,nobis,1668 +1669,dolore,ut,1669 +1670,esse,quidem,1670 +1671,hic,molestiae,1671 +1672,perspiciatis,ut,1672 +1673,rerum,eaque,1673 +1674,ullam,commodi,1674 +1675,qui,ducimus,1675 +1676,ut,qui,1676 +1677,eos,est,1677 +1678,sed,tenetur,1678 +1679,inventore,numquam,1679 +1680,ut,et,1680 +1681,et,et,1681 +1682,omnis,quidem,1682 +1683,dolorem,quia,1683 +1684,dignissimos,et,1684 +1685,quas,ut,1685 +1686,aperiam,qui,1686 +1687,corporis,praesentium,1687 +1688,reiciendis,eveniet,1688 +1689,laboriosam,tempore,1689 +1690,omnis,architecto,1690 +1691,quia,tempore,1691 +1692,illo,cumque,1692 +1693,blanditiis,sapiente,1693 +1694,alias,explicabo,1694 +1695,eius,voluptatum,1695 +1696,qui,cupiditate,1696 +1697,vero,numquam,1697 +1698,quidem,iure,1698 +1699,modi,aut,1699 +1700,at,quos,1700 +1701,animi,maxime,1701 +1702,cumque,vitae,1702 +1703,vel,fugit,1703 +1704,soluta,maiores,1704 +1705,asperiores,ullam,1705 +1706,et,asperiores,1706 +1707,aut,atque,1707 +1708,quasi,asperiores,1708 +1709,autem,nemo,1709 +1710,facere,laborum,1710 +1711,molestias,sint,1711 +1712,dolorem,magni,1712 +1713,amet,sit,1713 +1714,id,iure,1714 +1715,fuga,totam,1715 +1716,vitae,labore,1716 +1717,omnis,voluptatem,1717 +1718,voluptas,commodi,1718 +1719,ea,ipsam,1719 +1720,incidunt,quos,1720 +1721,ut,fugit,1721 +1722,accusamus,odio,1722 +1723,ullam,accusamus,1723 +1724,distinctio,adipisci,1724 +1725,voluptatem,alias,1725 +1726,quos,quod,1726 +1727,doloremque,ut,1727 +1728,animi,quo,1728 +1729,sunt,dicta,1729 +1730,repudiandae,voluptatem,1730 +1731,sit,ratione,1731 +1732,accusamus,minus,1732 +1733,aut,fugiat,1733 +1734,sequi,dolorem,1734 +1735,aliquid,eum,1735 +1736,et,ea,1736 +1737,commodi,iure,1737 +1738,quis,eius,1738 +1739,nulla,quaerat,1739 +1740,sequi,ut,1740 +1741,inventore,dolores,1741 +1742,incidunt,asperiores,1742 +1743,iusto,quam,1743 +1744,labore,numquam,1744 +1745,libero,ex,1745 +1746,praesentium,eos,1746 +1747,perferendis,officia,1747 +1748,et,et,1748 +1749,nesciunt,recusandae,1749 +1750,praesentium,dolor,1750 +1751,fugiat,et,1751 +1752,odio,omnis,1752 +1753,vel,voluptate,1753 +1754,aperiam,ipsum,1754 +1755,temporibus,laborum,1755 +1756,dolores,nobis,1756 +1757,nostrum,aut,1757 +1758,architecto,voluptatibus,1758 +1759,asperiores,quia,1759 +1760,suscipit,magni,1760 +1761,quia,autem,1761 +1762,illum,id,1762 +1763,voluptatem,aut,1763 +1764,quia,numquam,1764 +1765,molestiae,sed,1765 +1766,possimus,perspiciatis,1766 +1767,eius,et,1767 +1768,labore,quia,1768 +1769,dolorum,commodi,1769 +1770,alias,eos,1770 +1771,voluptatem,a,1771 +1772,labore,sed,1772 +1773,quia,quidem,1773 +1774,perferendis,recusandae,1774 +1775,dolor,voluptas,1775 +1776,doloribus,soluta,1776 +1777,pariatur,qui,1777 +1778,rerum,non,1778 +1779,rerum,fuga,1779 +1780,in,minus,1780 +1781,dolor,animi,1781 +1782,voluptates,aliquam,1782 +1783,et,nihil,1783 +1784,nulla,quo,1784 +1785,tempore,asperiores,1785 +1786,consequuntur,vitae,1786 +1787,quia,sed,1787 +1788,et,dolorum,1788 +1789,modi,doloribus,1789 +1790,officia,et,1790 +1791,sequi,maiores,1791 +1792,et,incidunt,1792 +1793,quasi,possimus,1793 +1794,enim,ipsum,1794 +1795,rem,eius,1795 +1796,debitis,illum,1796 +1797,ratione,quos,1797 +1798,nostrum,animi,1798 +1799,id,voluptatum,1799 +1800,sapiente,soluta,1800 +1801,tempore,magnam,1801 +1802,est,dolorem,1802 +1803,nam,corporis,1803 +1804,architecto,distinctio,1804 +1805,nihil,labore,1805 +1806,saepe,incidunt,1806 +1807,magnam,numquam,1807 +1808,est,voluptatem,1808 +1809,excepturi,eligendi,1809 +1810,et,veniam,1810 +1811,ipsum,hic,1811 +1812,non,dignissimos,1812 +1813,voluptas,nihil,1813 +1814,mollitia,delectus,1814 +1815,voluptatem,dolore,1815 +1816,voluptatem,modi,1816 +1817,recusandae,nihil,1817 +1818,et,commodi,1818 +1819,ad,dolor,1819 +1820,magni,esse,1820 +1821,repellat,distinctio,1821 +1822,illo,sapiente,1822 +1823,illum,sit,1823 +1824,sit,natus,1824 +1825,voluptatem,commodi,1825 +1826,dolorum,perspiciatis,1826 +1827,ipsum,recusandae,1827 +1828,cum,aut,1828 +1829,quo,sunt,1829 +1830,voluptatem,facilis,1830 +1831,non,numquam,1831 +1832,molestias,est,1832 +1833,omnis,repellat,1833 +1834,aut,illum,1834 +1835,eum,nulla,1835 +1836,earum,rem,1836 +1837,aperiam,aut,1837 +1838,ut,placeat,1838 +1839,repellat,impedit,1839 +1840,et,harum,1840 +1841,voluptatibus,et,1841 +1842,excepturi,perspiciatis,1842 +1843,culpa,nihil,1843 +1844,accusantium,ratione,1844 +1845,ut,culpa,1845 +1846,debitis,et,1846 +1847,omnis,aut,1847 +1848,debitis,voluptatibus,1848 +1849,libero,omnis,1849 +1850,corporis,quis,1850 +1851,impedit,vel,1851 +1852,amet,animi,1852 +1853,ab,incidunt,1853 +1854,quis,odit,1854 +1855,possimus,soluta,1855 +1856,ex,rerum,1856 +1857,est,voluptatem,1857 +1858,laborum,quis,1858 +1859,quia,error,1859 +1860,fugiat,ex,1860 +1861,laborum,aut,1861 +1862,possimus,eveniet,1862 +1863,impedit,a,1863 +1864,ducimus,nihil,1864 +1865,quae,quo,1865 +1866,aut,quibusdam,1866 +1867,et,minima,1867 +1868,aut,in,1868 +1869,aut,qui,1869 +1870,incidunt,atque,1870 +1871,eum,consequatur,1871 +1872,voluptatem,aut,1872 +1873,nobis,rerum,1873 +1874,dolorem,itaque,1874 +1875,sed,nam,1875 +1876,ab,rerum,1876 +1877,hic,ut,1877 +1878,error,ipsam,1878 +1879,fugiat,esse,1879 +1880,dolores,tenetur,1880 +1881,saepe,quisquam,1881 +1882,vel,est,1882 +1883,nisi,ratione,1883 +1884,nemo,facilis,1884 +1885,sed,reprehenderit,1885 +1886,asperiores,aut,1886 +1887,ut,mollitia,1887 +1888,harum,ratione,1888 +1889,repudiandae,sit,1889 +1890,aut,sequi,1890 +1891,voluptates,libero,1891 +1892,aut,dolore,1892 +1893,reiciendis,in,1893 +1894,temporibus,natus,1894 +1895,quam,voluptatem,1895 +1896,quaerat,aut,1896 +1897,minima,enim,1897 +1898,est,quia,1898 +1899,minus,non,1899 +1900,maiores,ab,1900 +1901,ea,sint,1901 +1902,incidunt,necessitatibus,1902 +1903,autem,rerum,1903 +1904,doloremque,eveniet,1904 +1905,voluptates,quo,1905 +1906,non,earum,1906 +1907,ullam,qui,1907 +1908,ut,doloribus,1908 +1909,beatae,aliquam,1909 +1910,aut,nemo,1910 +1911,eaque,et,1911 +1912,quia,voluptatibus,1912 +1913,quia,ut,1913 +1914,expedita,nesciunt,1914 +1915,et,doloribus,1915 +1916,laborum,impedit,1916 +1917,velit,dolorem,1917 +1918,officiis,repellat,1918 +1919,eum,quos,1919 +1920,iure,porro,1920 +1921,sunt,perspiciatis,1921 +1922,dolorem,dolores,1922 +1923,illo,perferendis,1923 +1924,dicta,qui,1924 +1925,vel,sit,1925 +1926,dicta,maiores,1926 +1927,eveniet,doloribus,1927 +1928,quaerat,quo,1928 +1929,unde,voluptas,1929 +1930,qui,qui,1930 +1931,sed,illum,1931 +1932,eos,sed,1932 +1933,quidem,odio,1933 +1934,sapiente,asperiores,1934 +1935,voluptatem,alias,1935 +1936,ad,ipsa,1936 +1937,quia,dolorem,1937 +1938,et,repellat,1938 +1939,quod,esse,1939 +1940,eligendi,eligendi,1940 +1941,ea,sit,1941 +1942,sunt,officia,1942 +1943,doloribus,totam,1943 +1944,possimus,quas,1944 +1945,ipsum,inventore,1945 +1946,quae,tempora,1946 +1947,cumque,sed,1947 +1948,illum,ea,1948 +1949,consequuntur,velit,1949 +1950,repudiandae,numquam,1950 +1951,impedit,aut,1951 +1952,vero,eveniet,1952 +1953,non,qui,1953 +1954,aut,et,1954 +1955,voluptates,impedit,1955 +1956,omnis,quas,1956 +1957,error,et,1957 +1958,possimus,nihil,1958 +1959,debitis,sunt,1959 +1960,aut,quas,1960 +1961,sit,sit,1961 +1962,nesciunt,aut,1962 +1963,architecto,quis,1963 +1964,vel,magni,1964 +1965,odit,odio,1965 +1966,repellendus,voluptatem,1966 +1967,soluta,explicabo,1967 +1968,repellendus,soluta,1968 +1969,omnis,aut,1969 +1970,et,molestiae,1970 +1971,architecto,in,1971 +1972,quia,dignissimos,1972 +1973,dolor,suscipit,1973 +1974,laborum,ut,1974 +1975,nulla,corporis,1975 +1976,deleniti,sit,1976 +1977,eveniet,aperiam,1977 +1978,qui,voluptatem,1978 +1979,possimus,mollitia,1979 +1980,consectetur,est,1980 +1981,molestias,facere,1981 +1982,dolorem,dolorem,1982 +1983,cumque,asperiores,1983 +1984,earum,molestiae,1984 +1985,ut,ea,1985 +1986,veniam,debitis,1986 +1987,ratione,ut,1987 +1988,et,nisi,1988 +1989,sit,sed,1989 +1990,quibusdam,quo,1990 +1991,perspiciatis,aut,1991 +1992,vel,ut,1992 +1993,ad,autem,1993 +1994,aspernatur,alias,1994 +1995,sed,quia,1995 +1996,est,et,1996 +1997,adipisci,voluptatem,1997 +1998,architecto,explicabo,1998 +1999,temporibus,sit,1999 +2000,explicabo,eveniet,2000 +2001,mollitia,perferendis,2001 +2002,qui,qui,2002 +2003,consequatur,et,2003 +2004,vel,quia,2004 +2005,fuga,nihil,2005 +2006,aspernatur,illum,2006 +2007,soluta,ducimus,2007 +2008,hic,cupiditate,2008 +2009,et,omnis,2009 +2010,deleniti,aliquam,2010 +2011,odio,commodi,2011 +2012,dolor,enim,2012 +2013,et,corrupti,2013 +2014,omnis,qui,2014 +2015,rerum,eum,2015 +2016,est,alias,2016 +2017,nesciunt,voluptatibus,2017 +2018,magni,repudiandae,2018 +2019,sunt,animi,2019 +2020,rerum,ut,2020 +2021,et,quo,2021 +2022,qui,voluptatem,2022 +2023,voluptas,sed,2023 +2024,quis,molestiae,2024 +2025,earum,qui,2025 +2026,quas,ut,2026 +2027,nihil,recusandae,2027 +2028,quis,magni,2028 +2029,harum,omnis,2029 +2030,sint,sapiente,2030 +2031,voluptatem,aperiam,2031 +2032,quos,rerum,2032 +2033,autem,repellat,2033 +2034,debitis,quibusdam,2034 +2035,porro,beatae,2035 +2036,facere,non,2036 +2037,ullam,maxime,2037 +2038,aperiam,et,2038 +2039,omnis,commodi,2039 +2040,assumenda,eos,2040 +2041,iste,est,2041 +2042,voluptatem,eius,2042 +2043,reprehenderit,eos,2043 +2044,ut,optio,2044 +2045,sequi,ipsum,2045 +2046,in,ab,2046 +2047,et,natus,2047 +2048,alias,nam,2048 +2049,perferendis,qui,2049 +2050,fugit,id,2050 +2051,illum,alias,2051 +2052,est,explicabo,2052 +2053,sed,qui,2053 +2054,nam,odio,2054 +2055,illum,vel,2055 +2056,repellendus,impedit,2056 +2057,minus,placeat,2057 +2058,quas,exercitationem,2058 +2059,deleniti,magni,2059 +2060,adipisci,quibusdam,2060 +2061,voluptatem,voluptatem,2061 +2062,est,iure,2062 +2063,repellat,ratione,2063 +2064,quis,asperiores,2064 +2065,dolore,dolor,2065 +2066,sed,vero,2066 +2067,in,aliquam,2067 +2068,est,quia,2068 +2069,quisquam,quam,2069 +2070,est,ut,2070 +2071,aut,magni,2071 +2072,consectetur,amet,2072 +2073,unde,dignissimos,2073 +2074,et,sint,2074 +2075,reiciendis,suscipit,2075 +2076,corrupti,natus,2076 +2077,ut,repellendus,2077 +2078,qui,tempore,2078 +2079,sit,voluptatem,2079 +2080,totam,reiciendis,2080 +2081,dicta,nihil,2081 +2082,aperiam,maxime,2082 +2083,voluptatum,est,2083 +2084,reprehenderit,laborum,2084 +2085,esse,tempore,2085 +2086,voluptatem,cupiditate,2086 +2087,officia,atque,2087 +2088,error,vitae,2088 +2089,facilis,omnis,2089 +2090,facere,quia,2090 +2091,est,nam,2091 +2092,unde,rem,2092 +2093,et,qui,2093 +2094,qui,neque,2094 +2095,velit,inventore,2095 +2096,cum,rem,2096 +2097,aut,hic,2097 +2098,autem,error,2098 +2099,nam,earum,2099 +2100,nemo,est,2100 +2101,sit,provident,2101 +2102,minus,dolores,2102 +2103,eligendi,totam,2103 +2104,et,consequuntur,2104 +2105,aut,harum,2105 +2106,delectus,laudantium,2106 +2107,fuga,ut,2107 +2108,aut,temporibus,2108 +2109,ut,velit,2109 +2110,recusandae,cumque,2110 +2111,laudantium,quibusdam,2111 +2112,ex,excepturi,2112 +2113,nihil,vitae,2113 +2114,commodi,rerum,2114 +2115,nam,nesciunt,2115 +2116,in,autem,2116 +2117,autem,natus,2117 +2118,fugit,fugiat,2118 +2119,nostrum,rerum,2119 +2120,non,sunt,2120 +2121,libero,quibusdam,2121 +2122,ad,optio,2122 +2123,magni,omnis,2123 +2124,sed,qui,2124 +2125,assumenda,similique,2125 +2126,et,placeat,2126 +2127,accusantium,tempora,2127 +2128,natus,eligendi,2128 +2129,sed,explicabo,2129 +2130,occaecati,corporis,2130 +2131,id,et,2131 +2132,repudiandae,sequi,2132 +2133,soluta,a,2133 +2134,deserunt,maxime,2134 +2135,quasi,mollitia,2135 +2136,eius,nihil,2136 +2137,fugit,a,2137 +2138,omnis,debitis,2138 +2139,illo,cumque,2139 +2140,necessitatibus,rem,2140 +2141,iste,ut,2141 +2142,aut,dolorum,2142 +2143,sit,beatae,2143 +2144,voluptatem,quod,2144 +2145,ea,laborum,2145 +2146,exercitationem,vel,2146 +2147,minima,qui,2147 +2148,illo,ut,2148 +2149,illum,et,2149 +2150,id,saepe,2150 +2151,molestiae,consectetur,2151 +2152,corrupti,dolorem,2152 +2153,natus,laboriosam,2153 +2154,dignissimos,consectetur,2154 +2155,sed,rerum,2155 +2156,aut,qui,2156 +2157,sed,aliquid,2157 +2158,in,et,2158 +2159,dolor,sunt,2159 +2160,repellat,illum,2160 +2161,quis,odio,2161 +2162,reiciendis,ut,2162 +2163,sapiente,voluptatem,2163 +2164,quis,tempore,2164 +2165,praesentium,quia,2165 +2166,dolor,sunt,2166 +2167,aliquam,temporibus,2167 +2168,magni,assumenda,2168 +2169,distinctio,sed,2169 +2170,nihil,quaerat,2170 +2171,commodi,ut,2171 +2172,libero,quia,2172 +2173,quis,tempore,2173 +2174,nihil,porro,2174 +2175,quam,omnis,2175 +2176,ut,voluptas,2176 +2177,nisi,possimus,2177 +2178,libero,rerum,2178 +2179,dolores,similique,2179 +2180,omnis,atque,2180 +2181,pariatur,ut,2181 +2182,inventore,mollitia,2182 +2183,voluptate,commodi,2183 +2184,rerum,impedit,2184 +2185,vitae,quam,2185 +2186,delectus,sed,2186 +2187,sed,quia,2187 +2188,consequatur,praesentium,2188 +2189,natus,officiis,2189 +2190,est,at,2190 +2191,cumque,ipsum,2191 +2192,est,iusto,2192 +2193,iusto,omnis,2193 +2194,et,corporis,2194 +2195,molestiae,totam,2195 +2196,unde,ducimus,2196 +2197,ex,quos,2197 +2198,soluta,est,2198 +2199,aut,rerum,2199 +2200,qui,voluptatem,2200 +2201,necessitatibus,fuga,2201 +2202,accusamus,natus,2202 +2203,et,qui,2203 +2204,in,aut,2204 +2205,porro,harum,2205 +2206,sequi,reiciendis,2206 +2207,sit,omnis,2207 +2208,qui,iste,2208 +2209,qui,temporibus,2209 +2210,nostrum,doloremque,2210 +2211,amet,dolor,2211 +2212,delectus,aut,2212 +2213,aspernatur,dignissimos,2213 +2214,tempore,reprehenderit,2214 +2215,explicabo,dolorem,2215 +2216,repellendus,et,2216 +2217,aut,dolorem,2217 +2218,blanditiis,nostrum,2218 +2219,aspernatur,perferendis,2219 +2220,tempore,et,2220 +2221,doloribus,et,2221 +2222,placeat,neque,2222 +2223,optio,velit,2223 +2224,nostrum,rerum,2224 +2225,est,quis,2225 +2226,illum,minus,2226 +2227,est,eum,2227 +2228,aut,et,2228 +2229,dolore,laborum,2229 +2230,praesentium,nostrum,2230 +2231,soluta,aperiam,2231 +2232,aspernatur,explicabo,2232 +2233,odio,nam,2233 +2234,porro,est,2234 +2235,quia,omnis,2235 +2236,dolores,est,2236 +2237,ipsam,quis,2237 +2238,nemo,quia,2238 +2239,rerum,et,2239 +2240,incidunt,asperiores,2240 +2241,atque,soluta,2241 +2242,ipsam,quia,2242 +2243,sed,voluptas,2243 +2244,ipsum,quae,2244 +2245,voluptas,dolor,2245 +2246,corrupti,odit,2246 +2247,nesciunt,error,2247 +2248,reprehenderit,consectetur,2248 +2249,temporibus,esse,2249 +2250,neque,aut,2250 +2251,illo,quibusdam,2251 +2252,veritatis,aut,2252 +2253,adipisci,temporibus,2253 +2254,vel,aut,2254 +2255,aut,qui,2255 +2256,sequi,atque,2256 +2257,asperiores,quo,2257 +2258,culpa,fuga,2258 +2259,sint,ipsam,2259 +2260,sit,deleniti,2260 +2261,quidem,consequuntur,2261 +2262,aliquid,corrupti,2262 +2263,ipsam,cum,2263 +2264,a,deleniti,2264 +2265,eius,veniam,2265 +2266,magnam,placeat,2266 +2267,atque,voluptatem,2267 +2268,eos,atque,2268 +2269,voluptatibus,modi,2269 +2270,omnis,culpa,2270 +2271,vitae,esse,2271 +2272,ut,occaecati,2272 +2273,mollitia,reprehenderit,2273 +2274,maxime,sunt,2274 +2275,quibusdam,placeat,2275 +2276,eos,sint,2276 +2277,dolore,quo,2277 +2278,architecto,rem,2278 +2279,quia,tempore,2279 +2280,voluptatem,est,2280 +2281,rerum,non,2281 +2282,minima,reiciendis,2282 +2283,sed,nihil,2283 +2284,sed,rerum,2284 +2285,rerum,quas,2285 +2286,aut,error,2286 +2287,quo,sit,2287 +2288,excepturi,facilis,2288 +2289,et,impedit,2289 +2290,in,qui,2290 +2291,quas,nemo,2291 +2292,sunt,et,2292 +2293,ipsum,maxime,2293 +2294,nobis,quia,2294 +2295,delectus,sint,2295 +2296,enim,omnis,2296 +2297,enim,eligendi,2297 +2298,minus,sapiente,2298 +2299,omnis,voluptatum,2299 +2300,unde,porro,2300 +2301,reiciendis,laudantium,2301 +2302,laboriosam,officia,2302 +2303,rerum,nobis,2303 +2304,qui,dolores,2304 +2305,est,eius,2305 +2306,velit,perspiciatis,2306 +2307,nam,mollitia,2307 +2308,autem,id,2308 +2309,beatae,iusto,2309 +2310,quia,rem,2310 +2311,quaerat,tempora,2311 +2312,ut,assumenda,2312 +2313,voluptas,aspernatur,2313 +2314,omnis,et,2314 +2315,aut,corrupti,2315 +2316,commodi,harum,2316 +2317,hic,at,2317 +2318,eum,facilis,2318 +2319,aut,ut,2319 +2320,quo,est,2320 +2321,voluptatibus,culpa,2321 +2322,unde,voluptatem,2322 +2323,sit,atque,2323 +2324,deserunt,voluptatem,2324 +2325,adipisci,minus,2325 +2326,dolores,velit,2326 +2327,et,beatae,2327 +2328,ipsa,voluptatem,2328 +2329,adipisci,soluta,2329 +2330,dolor,quas,2330 +2331,reiciendis,facere,2331 +2332,earum,reiciendis,2332 +2333,exercitationem,sint,2333 +2334,placeat,animi,2334 +2335,aut,eos,2335 +2336,accusamus,velit,2336 +2337,dolores,cumque,2337 +2338,eveniet,voluptatibus,2338 +2339,expedita,quia,2339 +2340,saepe,totam,2340 +2341,ipsam,quo,2341 +2342,mollitia,porro,2342 +2343,accusantium,odit,2343 +2344,facilis,nostrum,2344 +2345,id,iste,2345 +2346,in,odio,2346 +2347,aliquid,maiores,2347 +2348,quod,maxime,2348 +2349,ipsa,perspiciatis,2349 +2350,necessitatibus,eum,2350 +2351,eveniet,ut,2351 +2352,rem,dolor,2352 +2353,maxime,est,2353 +2354,at,blanditiis,2354 +2355,qui,nam,2355 +2356,eligendi,dolores,2356 +2357,nesciunt,molestias,2357 +2358,explicabo,soluta,2358 +2359,et,aut,2359 +2360,quis,sunt,2360 +2361,illum,similique,2361 +2362,et,aperiam,2362 +2363,et,fugiat,2363 +2364,dignissimos,beatae,2364 +2365,sed,praesentium,2365 +2366,amet,id,2366 +2367,accusantium,ad,2367 +2368,iure,rem,2368 +2369,sed,tenetur,2369 +2370,laudantium,placeat,2370 +2371,nobis,doloribus,2371 +2372,qui,in,2372 +2373,in,aliquid,2373 +2374,culpa,omnis,2374 +2375,pariatur,facilis,2375 +2376,quia,aspernatur,2376 +2377,nisi,et,2377 +2378,eos,aut,2378 +2379,quidem,iusto,2379 +2380,numquam,reiciendis,2380 +2381,debitis,consequatur,2381 +2382,ea,amet,2382 +2383,aut,dicta,2383 +2384,cumque,aspernatur,2384 +2385,quas,adipisci,2385 +2386,eligendi,ipsam,2386 +2387,esse,labore,2387 +2388,recusandae,et,2388 +2389,ea,et,2389 +2390,alias,est,2390 +2391,dolor,qui,2391 +2392,quibusdam,in,2392 +2393,minima,id,2393 +2394,iste,possimus,2394 +2395,ipsum,iure,2395 +2396,ullam,rerum,2396 +2397,qui,molestias,2397 +2398,sit,eos,2398 +2399,voluptatem,officia,2399 +2400,pariatur,voluptas,2400 +2401,quos,cumque,2401 +2402,repellat,rem,2402 +2403,distinctio,aut,2403 +2404,esse,consequatur,2404 +2405,cum,natus,2405 +2406,cum,libero,2406 +2407,laudantium,vero,2407 +2408,officia,est,2408 +2409,eos,quas,2409 +2410,aut,eaque,2410 +2411,accusantium,molestias,2411 +2412,dignissimos,rerum,2412 +2413,sed,voluptates,2413 +2414,dolore,rerum,2414 +2415,perferendis,aut,2415 +2416,ipsa,vero,2416 +2417,vel,eum,2417 +2418,soluta,iure,2418 +2419,quibusdam,exercitationem,2419 +2420,et,unde,2420 +2421,provident,sunt,2421 +2422,deleniti,sit,2422 +2423,omnis,est,2423 +2424,et,doloribus,2424 +2425,consectetur,cumque,2425 +2426,ea,magnam,2426 +2427,distinctio,autem,2427 +2428,molestiae,et,2428 +2429,reprehenderit,consequatur,2429 +2430,accusantium,magni,2430 +2431,ratione,quae,2431 +2432,mollitia,odit,2432 +2433,tempora,vero,2433 +2434,nostrum,rerum,2434 +2435,tenetur,molestiae,2435 +2436,dignissimos,cum,2436 +2437,ipsum,laboriosam,2437 +2438,quasi,inventore,2438 +2439,perferendis,et,2439 +2440,quasi,voluptas,2440 +2441,qui,esse,2441 +2442,suscipit,animi,2442 +2443,ullam,qui,2443 +2444,veniam,est,2444 +2445,facilis,sit,2445 +2446,incidunt,autem,2446 +2447,sint,est,2447 +2448,dolorem,eveniet,2448 +2449,facere,ut,2449 +2450,iste,earum,2450 +2451,et,esse,2451 +2452,perspiciatis,minima,2452 +2453,et,consequatur,2453 +2454,magni,voluptatum,2454 +2455,soluta,officia,2455 +2456,vitae,harum,2456 +2457,inventore,nisi,2457 +2458,pariatur,tempora,2458 +2459,accusantium,iste,2459 +2460,non,quam,2460 +2461,esse,aut,2461 +2462,nulla,cumque,2462 +2463,nobis,deleniti,2463 +2464,rerum,maxime,2464 +2465,doloremque,rem,2465 +2466,iusto,molestiae,2466 +2467,temporibus,itaque,2467 +2468,sit,hic,2468 +2469,sapiente,qui,2469 +2470,sed,corporis,2470 +2471,maxime,ratione,2471 +2472,voluptatem,voluptatem,2472 +2473,corporis,id,2473 +2474,natus,pariatur,2474 +2475,nemo,dolor,2475 +2476,ex,enim,2476 +2477,dolorem,quo,2477 +2478,voluptas,provident,2478 +2479,repellendus,sunt,2479 +2480,non,pariatur,2480 +2481,illum,est,2481 +2482,officiis,dolor,2482 +2483,dicta,dolor,2483 +2484,sed,earum,2484 +2485,placeat,ullam,2485 +2486,voluptatem,officia,2486 +2487,non,et,2487 +2488,modi,corporis,2488 +2489,cum,ipsum,2489 +2490,qui,reiciendis,2490 +2491,distinctio,eos,2491 +2492,eos,possimus,2492 +2493,vel,maiores,2493 +2494,assumenda,doloremque,2494 +2495,optio,ad,2495 +2496,fugiat,voluptatem,2496 +2497,facere,nobis,2497 +2498,eos,et,2498 +2499,asperiores,vero,2499 +2500,omnis,nisi,2500 +2501,sed,occaecati,2501 +2502,commodi,sit,2502 +2503,incidunt,ipsa,2503 +2504,non,aliquam,2504 +2505,omnis,voluptas,2505 +2506,est,magni,2506 +2507,tempore,sint,2507 +2508,aliquam,praesentium,2508 +2509,nulla,fugiat,2509 +2510,iste,et,2510 +2511,quia,odit,2511 +2512,blanditiis,a,2512 +2513,numquam,et,2513 +2514,veniam,enim,2514 +2515,ipsam,eligendi,2515 +2516,nam,et,2516 +2517,ut,fuga,2517 +2518,eos,rem,2518 +2519,cupiditate,nemo,2519 +2520,sint,fuga,2520 +2521,ab,minima,2521 +2522,doloribus,voluptatem,2522 +2523,amet,tempore,2523 +2524,veniam,quae,2524 +2525,magnam,nesciunt,2525 +2526,quidem,vitae,2526 +2527,perferendis,et,2527 +2528,earum,aut,2528 +2529,consequatur,aut,2529 +2530,eveniet,placeat,2530 +2531,amet,autem,2531 +2532,in,ipsa,2532 +2533,doloremque,non,2533 +2534,dolores,corporis,2534 +2535,rerum,fugiat,2535 +2536,aliquam,rerum,2536 +2537,aut,eos,2537 +2538,magnam,veniam,2538 +2539,aut,architecto,2539 +2540,ullam,est,2540 +2541,voluptate,qui,2541 +2542,blanditiis,delectus,2542 +2543,eum,repudiandae,2543 +2544,necessitatibus,blanditiis,2544 +2545,aut,ut,2545 +2546,nostrum,neque,2546 +2547,aut,dolores,2547 +2548,voluptates,sapiente,2548 +2549,unde,ut,2549 +2550,ut,autem,2550 +2551,harum,nemo,2551 +2552,quo,quibusdam,2552 +2553,eos,ut,2553 +2554,ut,aliquid,2554 +2555,nulla,sunt,2555 +2556,harum,quidem,2556 +2557,ratione,rem,2557 +2558,et,explicabo,2558 +2559,eum,voluptatum,2559 +2560,dolore,doloribus,2560 +2561,voluptas,hic,2561 +2562,incidunt,qui,2562 +2563,iste,et,2563 +2564,blanditiis,eum,2564 +2565,quidem,nesciunt,2565 +2566,error,ab,2566 +2567,illo,magnam,2567 +2568,ad,blanditiis,2568 +2569,voluptas,quas,2569 +2570,id,facere,2570 +2571,repellendus,consequatur,2571 +2572,sunt,quas,2572 +2573,aut,sit,2573 +2574,nobis,architecto,2574 +2575,ipsum,et,2575 +2576,et,rerum,2576 +2577,eos,voluptatibus,2577 +2578,quasi,saepe,2578 +2579,repellendus,porro,2579 +2580,assumenda,sit,2580 +2581,eveniet,enim,2581 +2582,voluptatum,debitis,2582 +2583,ullam,fugiat,2583 +2584,libero,placeat,2584 +2585,libero,accusantium,2585 +2586,aut,fugit,2586 +2587,et,enim,2587 +2588,velit,commodi,2588 +2589,culpa,harum,2589 +2590,explicabo,et,2590 +2591,optio,dolorem,2591 +2592,sed,aspernatur,2592 +2593,iusto,voluptas,2593 +2594,explicabo,voluptates,2594 +2595,nostrum,sint,2595 +2596,repellendus,pariatur,2596 +2597,quasi,iste,2597 +2598,et,odio,2598 +2599,fuga,sapiente,2599 +2600,dolorem,recusandae,2600 +2601,et,non,2601 +2602,natus,rem,2602 +2603,mollitia,veniam,2603 +2604,a,voluptatem,2604 +2605,vitae,aut,2605 +2606,voluptas,error,2606 +2607,et,sunt,2607 +2608,quis,sit,2608 +2609,et,earum,2609 +2610,modi,deserunt,2610 +2611,quod,aut,2611 +2612,dolores,vero,2612 +2613,autem,ullam,2613 +2614,illo,libero,2614 +2615,placeat,aperiam,2615 +2616,maiores,iste,2616 +2617,in,magnam,2617 +2618,accusantium,architecto,2618 +2619,nobis,velit,2619 +2620,delectus,ipsam,2620 +2621,ut,rem,2621 +2622,voluptates,ipsa,2622 +2623,inventore,nisi,2623 +2624,nostrum,deserunt,2624 +2625,sequi,at,2625 +2626,et,illo,2626 +2627,voluptatem,nam,2627 +2628,qui,incidunt,2628 +2629,adipisci,impedit,2629 +2630,voluptate,temporibus,2630 +2631,blanditiis,et,2631 +2632,quidem,quia,2632 +2633,harum,blanditiis,2633 +2634,et,inventore,2634 +2635,ea,iure,2635 +2636,error,sapiente,2636 +2637,tenetur,assumenda,2637 +2638,molestias,debitis,2638 +2639,deserunt,odio,2639 +2640,in,repellendus,2640 +2641,dolorem,labore,2641 +2642,perferendis,voluptates,2642 +2643,quaerat,aut,2643 +2644,corrupti,quia,2644 +2645,minus,eius,2645 +2646,molestiae,voluptatem,2646 +2647,reiciendis,error,2647 +2648,quia,est,2648 +2649,sunt,praesentium,2649 +2650,delectus,sapiente,2650 +2651,modi,dolores,2651 +2652,sit,natus,2652 +2653,non,voluptatem,2653 +2654,quis,reprehenderit,2654 +2655,nemo,animi,2655 +2656,eos,minus,2656 +2657,dolore,omnis,2657 +2658,deleniti,sit,2658 +2659,accusantium,nobis,2659 +2660,et,ducimus,2660 +2661,corrupti,expedita,2661 +2662,quaerat,nam,2662 +2663,magnam,rerum,2663 +2664,ipsa,aut,2664 +2665,nihil,dolores,2665 +2666,consequatur,iusto,2666 +2667,voluptatum,odit,2667 +2668,vero,quas,2668 +2669,ut,cumque,2669 +2670,aut,minima,2670 +2671,qui,dolores,2671 +2672,suscipit,ut,2672 +2673,quaerat,amet,2673 +2674,et,inventore,2674 +2675,iste,quos,2675 +2676,quae,voluptatum,2676 +2677,cum,neque,2677 +2678,id,aliquid,2678 +2679,eos,voluptatem,2679 +2680,itaque,qui,2680 +2681,sapiente,omnis,2681 +2682,quibusdam,at,2682 +2683,vitae,aperiam,2683 +2684,qui,perspiciatis,2684 +2685,dolorem,doloremque,2685 +2686,deserunt,esse,2686 +2687,suscipit,eos,2687 +2688,beatae,molestias,2688 +2689,magni,rerum,2689 +2690,et,quisquam,2690 +2691,voluptatem,aut,2691 +2692,rerum,dignissimos,2692 +2693,omnis,ad,2693 +2694,a,dignissimos,2694 +2695,dolore,aut,2695 +2696,tempore,tempora,2696 +2697,magni,autem,2697 +2698,dolor,accusamus,2698 +2699,perspiciatis,molestias,2699 +2700,quaerat,similique,2700 +2701,aut,quos,2701 +2702,facere,doloremque,2702 +2703,doloremque,delectus,2703 +2704,magni,exercitationem,2704 +2705,ea,culpa,2705 +2706,culpa,assumenda,2706 +2707,officiis,dicta,2707 +2708,qui,laboriosam,2708 +2709,modi,eos,2709 +2710,consequuntur,repudiandae,2710 +2711,dolor,mollitia,2711 +2712,quisquam,illum,2712 +2713,sunt,unde,2713 +2714,quo,voluptas,2714 +2715,fugit,deleniti,2715 +2716,culpa,provident,2716 +2717,labore,praesentium,2717 +2718,cupiditate,numquam,2718 +2719,quis,qui,2719 +2720,deserunt,vel,2720 +2721,expedita,cupiditate,2721 +2722,ut,voluptatibus,2722 +2723,sapiente,voluptatem,2723 +2724,sed,recusandae,2724 +2725,et,animi,2725 +2726,iure,est,2726 +2727,odio,est,2727 +2728,blanditiis,amet,2728 +2729,laborum,reiciendis,2729 +2730,maxime,officiis,2730 +2731,explicabo,iure,2731 +2732,modi,minus,2732 +2733,sed,animi,2733 +2734,est,facere,2734 +2735,cum,sed,2735 +2736,eius,molestias,2736 +2737,nihil,dolorem,2737 +2738,aut,unde,2738 +2739,commodi,omnis,2739 +2740,cum,quas,2740 +2741,iusto,nostrum,2741 +2742,voluptatem,et,2742 +2743,aut,et,2743 +2744,qui,eos,2744 +2745,non,in,2745 +2746,reiciendis,et,2746 +2747,inventore,perferendis,2747 +2748,modi,commodi,2748 +2749,aut,vel,2749 +2750,perspiciatis,optio,2750 +2751,quis,iusto,2751 +2752,ea,qui,2752 +2753,architecto,corporis,2753 +2754,in,recusandae,2754 +2755,fugiat,voluptatem,2755 +2756,libero,quia,2756 +2757,nihil,similique,2757 +2758,quis,quam,2758 +2759,deleniti,sed,2759 +2760,eius,fugiat,2760 +2761,nulla,iusto,2761 +2762,nihil,et,2762 +2763,quisquam,sint,2763 +2764,iste,iste,2764 +2765,et,nobis,2765 +2766,recusandae,quia,2766 +2767,consequatur,alias,2767 +2768,excepturi,molestiae,2768 +2769,sed,ipsum,2769 +2770,ut,labore,2770 +2771,qui,quos,2771 +2772,dolor,ut,2772 +2773,ullam,quas,2773 +2774,iusto,maxime,2774 +2775,dolor,est,2775 +2776,nobis,deleniti,2776 +2777,fugit,culpa,2777 +2778,est,velit,2778 +2779,dolores,molestiae,2779 +2780,sit,suscipit,2780 +2781,unde,in,2781 +2782,molestiae,voluptas,2782 +2783,repellat,eius,2783 +2784,non,ab,2784 +2785,sint,sint,2785 +2786,voluptatibus,earum,2786 +2787,dolore,in,2787 +2788,sapiente,eos,2788 +2789,quis,sequi,2789 +2790,voluptates,beatae,2790 +2791,sapiente,quia,2791 +2792,sit,dolorem,2792 +2793,omnis,doloremque,2793 +2794,adipisci,dignissimos,2794 +2795,beatae,necessitatibus,2795 +2796,vel,doloribus,2796 +2797,sit,nulla,2797 +2798,corrupti,et,2798 +2799,a,sapiente,2799 +2800,quaerat,optio,2800 +2801,dicta,animi,2801 +2802,numquam,et,2802 +2803,et,aliquid,2803 +2804,accusamus,dolores,2804 +2805,est,adipisci,2805 +2806,non,iure,2806 +2807,nihil,veniam,2807 +2808,et,autem,2808 +2809,nesciunt,ducimus,2809 +2810,minus,vel,2810 +2811,cum,sit,2811 +2812,maxime,ea,2812 +2813,officia,veniam,2813 +2814,qui,minus,2814 +2815,similique,perspiciatis,2815 +2816,est,ut,2816 +2817,in,fuga,2817 +2818,necessitatibus,incidunt,2818 +2819,voluptatibus,et,2819 +2820,dolore,minus,2820 +2821,velit,id,2821 +2822,laudantium,et,2822 +2823,vel,recusandae,2823 +2824,delectus,nulla,2824 +2825,mollitia,sint,2825 +2826,ut,aut,2826 +2827,dolorem,quod,2827 +2828,ut,dolores,2828 +2829,soluta,aut,2829 +2830,occaecati,et,2830 +2831,debitis,qui,2831 +2832,suscipit,adipisci,2832 +2833,facilis,at,2833 +2834,animi,aut,2834 +2835,veritatis,itaque,2835 +2836,dolore,aliquam,2836 +2837,aut,voluptatem,2837 +2838,vero,est,2838 +2839,aliquid,mollitia,2839 +2840,qui,voluptatum,2840 +2841,omnis,ea,2841 +2842,delectus,quam,2842 +2843,modi,doloribus,2843 +2844,necessitatibus,ducimus,2844 +2845,voluptas,nulla,2845 +2846,sit,rem,2846 +2847,possimus,sequi,2847 +2848,id,similique,2848 +2849,quis,dolorum,2849 +2850,sit,rerum,2850 +2851,ex,voluptas,2851 +2852,et,quis,2852 +2853,saepe,quia,2853 +2854,laboriosam,temporibus,2854 +2855,nihil,est,2855 +2856,est,inventore,2856 +2857,voluptate,sit,2857 +2858,nesciunt,ipsa,2858 +2859,excepturi,sequi,2859 +2860,quos,ad,2860 +2861,ut,laboriosam,2861 +2862,est,id,2862 +2863,sit,doloribus,2863 +2864,qui,veritatis,2864 +2865,soluta,est,2865 +2866,eligendi,consequatur,2866 +2867,saepe,voluptatem,2867 +2868,eos,iusto,2868 +2869,veniam,dicta,2869 +2870,suscipit,nulla,2870 +2871,neque,aperiam,2871 +2872,modi,maxime,2872 +2873,aliquam,aut,2873 +2874,a,inventore,2874 +2875,qui,alias,2875 +2876,voluptates,consequatur,2876 +2877,natus,dolores,2877 +2878,et,sunt,2878 +2879,eligendi,ab,2879 +2880,odio,eos,2880 +2881,quia,dolorem,2881 +2882,voluptas,neque,2882 +2883,autem,voluptas,2883 +2884,facilis,harum,2884 +2885,commodi,ut,2885 +2886,facere,necessitatibus,2886 +2887,nesciunt,omnis,2887 +2888,consequuntur,ab,2888 +2889,maiores,iure,2889 +2890,rem,ratione,2890 +2891,aspernatur,facere,2891 +2892,vel,deserunt,2892 +2893,nihil,esse,2893 +2894,inventore,aspernatur,2894 +2895,fugit,fugit,2895 +2896,error,neque,2896 +2897,quos,omnis,2897 +2898,laudantium,quia,2898 +2899,officiis,quia,2899 +2900,voluptas,suscipit,2900 +2901,id,id,2901 +2902,at,officiis,2902 +2903,natus,dolore,2903 +2904,repudiandae,qui,2904 +2905,voluptatibus,dolor,2905 +2906,sint,temporibus,2906 +2907,ut,explicabo,2907 +2908,et,et,2908 +2909,iste,et,2909 +2910,mollitia,facere,2910 +2911,adipisci,quod,2911 +2912,quia,nihil,2912 +2913,magni,eum,2913 +2914,et,voluptatem,2914 +2915,quae,recusandae,2915 +2916,harum,adipisci,2916 +2917,unde,dolorem,2917 +2918,qui,ut,2918 +2919,eaque,occaecati,2919 +2920,voluptas,amet,2920 +2921,doloremque,dolor,2921 +2922,dolorem,provident,2922 +2923,quas,omnis,2923 +2924,nulla,cumque,2924 +2925,consectetur,magni,2925 +2926,laudantium,recusandae,2926 +2927,vitae,quod,2927 +2928,numquam,quia,2928 +2929,mollitia,est,2929 +2930,explicabo,dolores,2930 +2931,velit,odio,2931 +2932,ut,dolor,2932 +2933,qui,nam,2933 +2934,eos,quaerat,2934 +2935,ullam,libero,2935 +2936,fuga,non,2936 +2937,cum,nisi,2937 +2938,accusantium,dolorum,2938 +2939,provident,non,2939 +2940,blanditiis,ipsum,2940 +2941,veniam,iste,2941 +2942,non,nihil,2942 +2943,iure,voluptatem,2943 +2944,necessitatibus,explicabo,2944 +2945,aut,inventore,2945 +2946,impedit,velit,2946 +2947,repellat,vel,2947 +2948,qui,omnis,2948 +2949,repudiandae,officia,2949 +2950,consequuntur,corrupti,2950 +2951,et,esse,2951 +2952,autem,rem,2952 +2953,mollitia,in,2953 +2954,perspiciatis,nesciunt,2954 +2955,doloribus,animi,2955 +2956,sunt,provident,2956 +2957,quis,consequatur,2957 +2958,nihil,accusamus,2958 +2959,libero,est,2959 +2960,eaque,et,2960 +2961,aut,porro,2961 +2962,distinctio,impedit,2962 +2963,amet,consequatur,2963 +2964,quod,sed,2964 +2965,in,suscipit,2965 +2966,ratione,et,2966 +2967,minus,eius,2967 +2968,culpa,sint,2968 +2969,tempore,quasi,2969 +2970,qui,voluptatem,2970 +2971,enim,laborum,2971 +2972,voluptates,sapiente,2972 +2973,numquam,autem,2973 +2974,alias,fugit,2974 +2975,accusantium,magni,2975 +2976,sit,voluptates,2976 +2977,aut,voluptas,2977 +2978,assumenda,ut,2978 +2979,qui,voluptatem,2979 +2980,minus,reprehenderit,2980 +2981,fugiat,temporibus,2981 +2982,doloribus,quis,2982 +2983,est,voluptatem,2983 +2984,et,consequatur,2984 +2985,nostrum,laudantium,2985 +2986,quasi,itaque,2986 +2987,enim,in,2987 +2988,et,magnam,2988 +2989,alias,aperiam,2989 +2990,dolor,ut,2990 +2991,non,aut,2991 +2992,et,quos,2992 +2993,nisi,nisi,2993 +2994,dolor,ut,2994 +2995,voluptate,quasi,2995 +2996,adipisci,blanditiis,2996 +2997,repellat,voluptas,2997 +2998,velit,dolores,2998 +2999,exercitationem,facere,2999 +3000,debitis,doloribus,3000 +3001,ducimus,nostrum,3001 +3002,quod,dolorem,3002 +3003,ducimus,aut,3003 +3004,quidem,perferendis,3004 +3005,sed,ducimus,3005 +3006,voluptate,voluptatem,3006 +3007,laboriosam,tempore,3007 +3008,nesciunt,odio,3008 +3009,asperiores,nam,3009 +3010,dolor,esse,3010 +3011,similique,sunt,3011 +3012,in,ipsam,3012 +3013,quo,sequi,3013 +3014,quidem,voluptas,3014 +3015,explicabo,iusto,3015 +3016,voluptatem,error,3016 +3017,asperiores,aut,3017 +3018,repellendus,nesciunt,3018 +3019,nesciunt,est,3019 +3020,in,vitae,3020 +3021,aliquid,quas,3021 +3022,quae,ipsum,3022 +3023,eveniet,quaerat,3023 +3024,quae,est,3024 +3025,voluptas,id,3025 +3026,soluta,explicabo,3026 +3027,sunt,in,3027 +3028,molestiae,et,3028 +3029,qui,enim,3029 +3030,voluptates,vel,3030 +3031,officia,facere,3031 +3032,nam,quidem,3032 +3033,iusto,et,3033 +3034,consequuntur,eveniet,3034 +3035,nulla,id,3035 +3036,tenetur,ut,3036 +3037,ea,quod,3037 +3038,explicabo,modi,3038 +3039,consequatur,necessitatibus,3039 +3040,iste,voluptas,3040 +3041,vel,praesentium,3041 +3042,et,earum,3042 +3043,et,assumenda,3043 +3044,inventore,deserunt,3044 +3045,sint,quis,3045 +3046,amet,ex,3046 +3047,explicabo,sed,3047 +3048,aut,consequuntur,3048 +3049,et,soluta,3049 +3050,dolores,occaecati,3050 +3051,quo,voluptatem,3051 +3052,molestiae,perspiciatis,3052 +3053,a,commodi,3053 +3054,sed,alias,3054 +3055,suscipit,numquam,3055 +3056,ea,veritatis,3056 +3057,corrupti,inventore,3057 +3058,temporibus,at,3058 +3059,rerum,et,3059 +3060,amet,et,3060 +3061,repellat,ex,3061 +3062,commodi,quia,3062 +3063,velit,eveniet,3063 +3064,quod,quasi,3064 +3065,eum,nesciunt,3065 +3066,eligendi,dolorum,3066 +3067,fuga,corporis,3067 +3068,voluptatem,praesentium,3068 +3069,eveniet,ut,3069 +3070,molestias,deserunt,3070 +3071,laborum,laborum,3071 +3072,voluptas,beatae,3072 +3073,tenetur,voluptatem,3073 +3074,eum,ut,3074 +3075,ipsa,fuga,3075 +3076,id,porro,3076 +3077,qui,iusto,3077 +3078,sit,consequatur,3078 +3079,eos,rerum,3079 +3080,harum,esse,3080 +3081,quia,quas,3081 +3082,nesciunt,repellendus,3082 +3083,autem,exercitationem,3083 +3084,qui,vel,3084 +3085,suscipit,consequatur,3085 +3086,dolorem,consectetur,3086 +3087,et,eaque,3087 +3088,repellendus,officia,3088 +3089,praesentium,nulla,3089 +3090,doloribus,minima,3090 +3091,ut,laborum,3091 +3092,ducimus,molestiae,3092 +3093,eum,placeat,3093 +3094,eligendi,vero,3094 +3095,accusamus,rerum,3095 +3096,est,quia,3096 +3097,aliquam,iste,3097 +3098,quia,consequatur,3098 +3099,labore,facilis,3099 +3100,quo,inventore,3100 +3101,quos,molestiae,3101 +3102,itaque,illo,3102 +3103,nam,qui,3103 +3104,minus,inventore,3104 +3105,eaque,aut,3105 +3106,iste,nobis,3106 +3107,vitae,assumenda,3107 +3108,temporibus,aliquid,3108 +3109,et,corrupti,3109 +3110,sunt,dolore,3110 +3111,quibusdam,cupiditate,3111 +3112,eaque,voluptate,3112 +3113,commodi,voluptates,3113 +3114,omnis,facilis,3114 +3115,at,perferendis,3115 +3116,amet,voluptatem,3116 +3117,qui,enim,3117 +3118,est,consequatur,3118 +3119,accusamus,alias,3119 +3120,ducimus,ut,3120 +3121,delectus,odit,3121 +3122,a,debitis,3122 +3123,voluptas,modi,3123 +3124,enim,et,3124 +3125,pariatur,omnis,3125 +3126,aut,deserunt,3126 +3127,cum,voluptas,3127 +3128,rerum,nihil,3128 +3129,beatae,quo,3129 +3130,et,voluptatem,3130 +3131,eum,voluptates,3131 +3132,est,commodi,3132 +3133,eveniet,quae,3133 +3134,enim,cupiditate,3134 +3135,unde,in,3135 +3136,molestias,molestiae,3136 +3137,asperiores,sed,3137 +3138,rerum,qui,3138 +3139,et,possimus,3139 +3140,quia,reprehenderit,3140 +3141,excepturi,tempora,3141 +3142,voluptatibus,voluptatibus,3142 +3143,eaque,rerum,3143 +3144,dignissimos,beatae,3144 +3145,dolores,et,3145 +3146,qui,dolor,3146 +3147,inventore,atque,3147 +3148,iusto,eum,3148 +3149,voluptates,temporibus,3149 +3150,debitis,et,3150 +3151,sint,perspiciatis,3151 +3152,hic,adipisci,3152 +3153,assumenda,ex,3153 +3154,repellat,magni,3154 +3155,delectus,consectetur,3155 +3156,quis,aut,3156 +3157,quo,quod,3157 +3158,ad,quo,3158 +3159,non,quia,3159 +3160,accusamus,enim,3160 +3161,nemo,dignissimos,3161 +3162,molestias,molestiae,3162 +3163,voluptatibus,et,3163 +3164,voluptatibus,est,3164 +3165,sequi,cumque,3165 +3166,cumque,id,3166 +3167,cum,iste,3167 +3168,est,nihil,3168 +3169,et,voluptatem,3169 +3170,sint,quia,3170 +3171,amet,odio,3171 +3172,omnis,et,3172 +3173,qui,explicabo,3173 +3174,et,sit,3174 +3175,nobis,sunt,3175 +3176,excepturi,eos,3176 +3177,quia,veniam,3177 +3178,temporibus,sint,3178 +3179,animi,totam,3179 +3180,optio,incidunt,3180 +3181,fugit,et,3181 +3182,nostrum,sint,3182 +3183,maiores,qui,3183 +3184,aspernatur,voluptatem,3184 +3185,quam,omnis,3185 +3186,quis,magnam,3186 +3187,sit,dolor,3187 +3188,eaque,voluptatibus,3188 +3189,enim,autem,3189 +3190,quia,totam,3190 +3191,eligendi,architecto,3191 +3192,sunt,et,3192 +3193,quia,et,3193 +3194,assumenda,perferendis,3194 +3195,ut,est,3195 +3196,et,architecto,3196 +3197,dolorum,fugit,3197 +3198,libero,possimus,3198 +3199,quasi,voluptatem,3199 +3200,magni,qui,3200 +3201,quia,dignissimos,3201 +3202,ipsa,molestiae,3202 +3203,sed,laborum,3203 +3204,dolore,animi,3204 +3205,minima,officia,3205 +3206,quod,maxime,3206 +3207,non,rem,3207 +3208,adipisci,rerum,3208 +3209,voluptate,accusamus,3209 +3210,deleniti,placeat,3210 +3211,officia,harum,3211 +3212,provident,id,3212 +3213,id,voluptatem,3213 +3214,minus,doloremque,3214 +3215,libero,temporibus,3215 +3216,sed,iusto,3216 +3217,dolores,ab,3217 +3218,quia,nihil,3218 +3219,est,sed,3219 +3220,sit,repellat,3220 +3221,quia,aliquam,3221 +3222,ut,rem,3222 +3223,dolorem,explicabo,3223 +3224,reprehenderit,sint,3224 +3225,est,molestiae,3225 +3226,quia,quis,3226 +3227,hic,enim,3227 +3228,provident,eum,3228 +3229,magnam,dolores,3229 +3230,illum,laboriosam,3230 +3231,maxime,aliquid,3231 +3232,dolores,officia,3232 +3233,aliquid,placeat,3233 +3234,et,dolor,3234 +3235,minima,rem,3235 +3236,ipsum,blanditiis,3236 +3237,impedit,quaerat,3237 +3238,aut,enim,3238 +3239,consequatur,tenetur,3239 +3240,placeat,maiores,3240 +3241,quia,cupiditate,3241 +3242,et,maiores,3242 +3243,natus,earum,3243 +3244,doloremque,aut,3244 +3245,neque,adipisci,3245 +3246,et,consectetur,3246 +3247,quia,odit,3247 +3248,aliquam,alias,3248 +3249,recusandae,omnis,3249 +3250,doloremque,est,3250 +3251,fuga,nulla,3251 +3252,ut,impedit,3252 +3253,quam,vel,3253 +3254,qui,illo,3254 +3255,voluptas,dicta,3255 +3256,veniam,rerum,3256 +3257,qui,reprehenderit,3257 +3258,officia,sed,3258 +3259,accusamus,temporibus,3259 +3260,recusandae,autem,3260 +3261,maxime,reprehenderit,3261 +3262,nostrum,labore,3262 +3263,laboriosam,iste,3263 +3264,porro,aut,3264 +3265,et,dolorum,3265 +3266,qui,labore,3266 +3267,laborum,numquam,3267 +3268,repudiandae,soluta,3268 +3269,et,quos,3269 +3270,ut,qui,3270 +3271,excepturi,doloremque,3271 +3272,dolor,reprehenderit,3272 +3273,quis,labore,3273 +3274,dolorem,est,3274 +3275,cupiditate,optio,3275 +3276,quo,consequatur,3276 +3277,sed,voluptate,3277 +3278,laboriosam,veritatis,3278 +3279,et,dolor,3279 +3280,odio,eum,3280 +3281,quo,iusto,3281 +3282,aspernatur,vitae,3282 +3283,hic,voluptatem,3283 +3284,mollitia,assumenda,3284 +3285,quo,occaecati,3285 +3286,enim,hic,3286 +3287,est,quo,3287 +3288,accusamus,accusamus,3288 +3289,molestiae,tenetur,3289 +3290,dolores,et,3290 +3291,qui,voluptate,3291 +3292,quis,velit,3292 +3293,architecto,modi,3293 +3294,est,illum,3294 +3295,est,a,3295 +3296,et,unde,3296 +3297,quasi,quia,3297 +3298,laudantium,voluptas,3298 +3299,veritatis,et,3299 +3300,at,voluptatem,3300 +3301,maxime,eius,3301 +3302,velit,rem,3302 +3303,voluptatem,nemo,3303 +3304,consequatur,in,3304 +3305,exercitationem,debitis,3305 +3306,error,repudiandae,3306 +3307,consequatur,eveniet,3307 +3308,aut,voluptatibus,3308 +3309,blanditiis,deserunt,3309 +3310,facilis,unde,3310 +3311,in,quam,3311 +3312,et,est,3312 +3313,maxime,praesentium,3313 +3314,dolores,sapiente,3314 +3315,quia,at,3315 +3316,numquam,corporis,3316 +3317,omnis,cumque,3317 +3318,occaecati,commodi,3318 +3319,molestiae,repellat,3319 +3320,voluptate,velit,3320 +3321,fuga,cumque,3321 +3322,minus,nesciunt,3322 +3323,voluptatem,a,3323 +3324,minima,dolores,3324 +3325,labore,cupiditate,3325 +3326,blanditiis,in,3326 +3327,iste,non,3327 +3328,ipsum,magni,3328 +3329,labore,debitis,3329 +3330,ad,veniam,3330 +3331,perferendis,ipsam,3331 +3332,similique,et,3332 +3333,qui,dolor,3333 +3334,dolorem,eius,3334 +3335,ut,a,3335 +3336,ea,consequatur,3336 +3337,aspernatur,nisi,3337 +3338,accusamus,aut,3338 +3339,quibusdam,sint,3339 +3340,unde,omnis,3340 +3341,dolorem,distinctio,3341 +3342,sapiente,dolorum,3342 +3343,vero,a,3343 +3344,voluptas,officiis,3344 +3345,quia,velit,3345 +3346,fugit,debitis,3346 +3347,voluptas,dolor,3347 +3348,dicta,quia,3348 +3349,minus,consequatur,3349 +3350,velit,et,3350 +3351,aut,et,3351 +3352,laudantium,non,3352 +3353,laborum,iste,3353 +3354,cum,dolor,3354 +3355,est,occaecati,3355 +3356,ducimus,officia,3356 +3357,distinctio,quasi,3357 +3358,tempora,soluta,3358 +3359,doloremque,quo,3359 +3360,ut,quia,3360 +3361,quasi,autem,3361 +3362,ullam,minus,3362 +3363,et,praesentium,3363 +3364,omnis,est,3364 +3365,nihil,hic,3365 +3366,qui,et,3366 +3367,consequatur,qui,3367 +3368,cumque,quis,3368 +3369,voluptas,vitae,3369 +3370,dolor,corporis,3370 +3371,et,magni,3371 +3372,unde,minus,3372 +3373,recusandae,rerum,3373 +3374,non,cumque,3374 +3375,dolore,voluptatum,3375 +3376,qui,aut,3376 +3377,qui,quis,3377 +3378,sint,omnis,3378 +3379,deserunt,id,3379 +3380,nemo,aliquam,3380 +3381,asperiores,a,3381 +3382,et,tempore,3382 +3383,eaque,et,3383 +3384,odio,et,3384 +3385,omnis,deserunt,3385 +3386,rem,dolorum,3386 +3387,asperiores,sed,3387 +3388,modi,sed,3388 +3389,aut,error,3389 +3390,cumque,quis,3390 +3391,omnis,praesentium,3391 +3392,praesentium,eveniet,3392 +3393,aut,quasi,3393 +3394,sint,commodi,3394 +3395,fugit,ut,3395 +3396,iusto,magnam,3396 +3397,debitis,quidem,3397 +3398,voluptatibus,aut,3398 +3399,ea,aspernatur,3399 +3400,in,odit,3400 +3401,nemo,est,3401 +3402,cum,ducimus,3402 +3403,consectetur,quae,3403 +3404,praesentium,hic,3404 +3405,recusandae,consectetur,3405 +3406,doloribus,amet,3406 +3407,et,sed,3407 +3408,et,ut,3408 +3409,nihil,vitae,3409 +3410,ullam,iusto,3410 +3411,qui,aut,3411 +3412,sapiente,officia,3412 +3413,rerum,adipisci,3413 +3414,omnis,rem,3414 +3415,unde,ut,3415 +3416,ut,illum,3416 +3417,et,et,3417 +3418,aliquid,rerum,3418 +3419,enim,facere,3419 +3420,esse,qui,3420 +3421,animi,eum,3421 +3422,modi,possimus,3422 +3423,reiciendis,incidunt,3423 +3424,soluta,dolor,3424 +3425,enim,id,3425 +3426,et,laboriosam,3426 +3427,aut,aliquid,3427 +3428,corporis,rerum,3428 +3429,officiis,et,3429 +3430,autem,qui,3430 +3431,et,expedita,3431 +3432,dolorem,suscipit,3432 +3433,quidem,voluptas,3433 +3434,dolore,est,3434 +3435,qui,porro,3435 +3436,omnis,et,3436 +3437,quos,dignissimos,3437 +3438,reiciendis,voluptatum,3438 +3439,omnis,quo,3439 +3440,id,saepe,3440 +3441,sint,illo,3441 +3442,voluptate,ab,3442 +3443,provident,iste,3443 +3444,numquam,eveniet,3444 +3445,fugiat,omnis,3445 +3446,nulla,nam,3446 +3447,ut,voluptatem,3447 +3448,omnis,dolores,3448 +3449,dolorem,id,3449 +3450,sit,non,3450 +3451,consequatur,minus,3451 +3452,recusandae,temporibus,3452 +3453,eveniet,vero,3453 +3454,nulla,blanditiis,3454 +3455,eius,dolorum,3455 +3456,voluptates,sit,3456 +3457,deserunt,nam,3457 +3458,consequatur,ducimus,3458 +3459,sed,aut,3459 +3460,tenetur,id,3460 +3461,recusandae,et,3461 +3462,ea,autem,3462 +3463,aut,eaque,3463 +3464,velit,enim,3464 +3465,unde,dolores,3465 +3466,architecto,repellendus,3466 +3467,reiciendis,qui,3467 +3468,pariatur,blanditiis,3468 +3469,eum,voluptatem,3469 +3470,consequatur,earum,3470 +3471,optio,soluta,3471 +3472,quibusdam,saepe,3472 +3473,sed,eos,3473 +3474,ipsum,eaque,3474 +3475,nobis,dolorem,3475 +3476,quo,rerum,3476 +3477,provident,vel,3477 +3478,corporis,laboriosam,3478 +3479,repudiandae,accusantium,3479 +3480,animi,illo,3480 +3481,aliquam,nisi,3481 +3482,officia,nisi,3482 +3483,atque,harum,3483 +3484,earum,sed,3484 +3485,ut,dicta,3485 +3486,ipsum,doloremque,3486 +3487,recusandae,doloribus,3487 +3488,laboriosam,dolorum,3488 +3489,aut,rem,3489 +3490,voluptatem,a,3490 +3491,quia,nisi,3491 +3492,ut,quis,3492 +3493,ut,dolores,3493 +3494,tempore,veritatis,3494 +3495,voluptatibus,iste,3495 +3496,necessitatibus,non,3496 +3497,quibusdam,aut,3497 +3498,delectus,molestiae,3498 +3499,reiciendis,id,3499 +3500,blanditiis,sed,3500 +3501,eaque,aut,3501 +3502,atque,doloremque,3502 +3503,aut,sed,3503 +3504,quam,quibusdam,3504 +3505,minus,consequatur,3505 +3506,odio,velit,3506 +3507,praesentium,et,3507 +3508,deserunt,nobis,3508 +3509,qui,laboriosam,3509 +3510,qui,quasi,3510 +3511,est,earum,3511 +3512,architecto,veniam,3512 +3513,sit,et,3513 +3514,possimus,blanditiis,3514 +3515,dolores,iusto,3515 +3516,molestiae,aut,3516 +3517,est,libero,3517 +3518,aliquid,officia,3518 +3519,tempora,impedit,3519 +3520,fuga,iure,3520 +3521,reprehenderit,aperiam,3521 +3522,voluptatem,tempore,3522 +3523,consequatur,iusto,3523 +3524,excepturi,quibusdam,3524 +3525,optio,enim,3525 +3526,quam,omnis,3526 +3527,possimus,consequatur,3527 +3528,praesentium,doloribus,3528 +3529,ea,quaerat,3529 +3530,pariatur,libero,3530 +3531,maxime,pariatur,3531 +3532,quae,hic,3532 +3533,minima,odit,3533 +3534,corrupti,hic,3534 +3535,suscipit,fugiat,3535 +3536,dolores,eos,3536 +3537,omnis,labore,3537 +3538,eligendi,nesciunt,3538 +3539,unde,sunt,3539 +3540,sed,perferendis,3540 +3541,qui,cumque,3541 +3542,occaecati,earum,3542 +3543,molestiae,aut,3543 +3544,nihil,excepturi,3544 +3545,dolor,esse,3545 +3546,ut,praesentium,3546 +3547,quia,deserunt,3547 +3548,quaerat,omnis,3548 +3549,quo,sunt,3549 +3550,repellendus,accusamus,3550 +3551,et,a,3551 +3552,perspiciatis,earum,3552 +3553,laboriosam,in,3553 +3554,tempore,molestiae,3554 +3555,unde,minima,3555 +3556,est,enim,3556 +3557,repudiandae,ut,3557 +3558,qui,eum,3558 +3559,vel,aut,3559 +3560,magni,animi,3560 +3561,libero,quo,3561 +3562,nulla,quibusdam,3562 +3563,ut,voluptatum,3563 +3564,voluptatem,et,3564 +3565,sit,qui,3565 +3566,et,architecto,3566 +3567,ipsum,et,3567 +3568,maiores,molestiae,3568 +3569,qui,dolor,3569 +3570,et,qui,3570 +3571,ex,aut,3571 +3572,expedita,asperiores,3572 +3573,autem,quisquam,3573 +3574,exercitationem,consequatur,3574 +3575,quae,omnis,3575 +3576,officiis,et,3576 +3577,vitae,praesentium,3577 +3578,explicabo,quasi,3578 +3579,quia,et,3579 +3580,repellendus,veniam,3580 +3581,necessitatibus,odio,3581 +3582,cumque,atque,3582 +3583,itaque,provident,3583 +3584,nulla,in,3584 +3585,rerum,facere,3585 +3586,ut,autem,3586 +3587,veritatis,occaecati,3587 +3588,voluptatibus,aliquam,3588 +3589,temporibus,autem,3589 +3590,voluptatem,ea,3590 +3591,dolore,est,3591 +3592,enim,est,3592 +3593,earum,nam,3593 +3594,vel,omnis,3594 +3595,et,deleniti,3595 +3596,dolorum,voluptatem,3596 +3597,nostrum,soluta,3597 +3598,dignissimos,quia,3598 +3599,cum,iure,3599 +3600,aspernatur,est,3600 +3601,dolorem,fugiat,3601 +3602,neque,laborum,3602 +3603,et,vel,3603 +3604,voluptatem,expedita,3604 +3605,sunt,rerum,3605 +3606,mollitia,et,3606 +3607,ad,quaerat,3607 +3608,illo,iusto,3608 +3609,sed,necessitatibus,3609 +3610,quidem,nihil,3610 +3611,quo,voluptatem,3611 +3612,vitae,autem,3612 +3613,et,aspernatur,3613 +3614,ea,inventore,3614 +3615,qui,voluptatem,3615 +3616,voluptates,consectetur,3616 +3617,illum,quibusdam,3617 +3618,nesciunt,ab,3618 +3619,repellat,illum,3619 +3620,optio,ut,3620 +3621,quisquam,voluptas,3621 +3622,ut,ipsa,3622 +3623,minus,voluptatem,3623 +3624,accusamus,sed,3624 +3625,eligendi,iste,3625 +3626,at,est,3626 +3627,culpa,et,3627 +3628,ex,dolores,3628 +3629,debitis,earum,3629 +3630,laborum,similique,3630 +3631,temporibus,consequatur,3631 +3632,qui,iste,3632 +3633,modi,non,3633 +3634,fugiat,et,3634 +3635,deserunt,odit,3635 +3636,dignissimos,quibusdam,3636 +3637,quia,dignissimos,3637 +3638,et,enim,3638 +3639,et,culpa,3639 +3640,voluptatem,nostrum,3640 +3641,doloribus,magni,3641 +3642,harum,sint,3642 +3643,similique,quis,3643 +3644,nihil,quia,3644 +3645,qui,sit,3645 +3646,rem,ratione,3646 +3647,molestias,dignissimos,3647 +3648,minima,aut,3648 +3649,molestias,sapiente,3649 +3650,qui,dolore,3650 +3651,ad,qui,3651 +3652,commodi,doloremque,3652 +3653,illum,atque,3653 +3654,dignissimos,rem,3654 +3655,ab,eaque,3655 +3656,qui,deserunt,3656 +3657,dolores,occaecati,3657 +3658,omnis,ut,3658 +3659,omnis,eum,3659 +3660,consequatur,pariatur,3660 +3661,sit,impedit,3661 +3662,itaque,labore,3662 +3663,quae,et,3663 +3664,sed,deleniti,3664 +3665,laudantium,autem,3665 +3666,voluptate,sed,3666 +3667,pariatur,officia,3667 +3668,labore,odit,3668 +3669,nisi,qui,3669 +3670,et,nihil,3670 +3671,occaecati,voluptas,3671 +3672,alias,magnam,3672 +3673,dolores,optio,3673 +3674,accusantium,rem,3674 +3675,qui,atque,3675 +3676,culpa,numquam,3676 +3677,veniam,sit,3677 +3678,sed,corporis,3678 +3679,amet,dolorem,3679 +3680,et,ut,3680 +3681,dolores,corrupti,3681 +3682,voluptates,dolor,3682 +3683,doloribus,unde,3683 +3684,perspiciatis,vitae,3684 +3685,odio,quo,3685 +3686,eaque,consequuntur,3686 +3687,mollitia,delectus,3687 +3688,odit,consequatur,3688 +3689,necessitatibus,eos,3689 +3690,perspiciatis,in,3690 +3691,officia,in,3691 +3692,a,error,3692 +3693,impedit,voluptas,3693 +3694,vitae,omnis,3694 +3695,quaerat,quis,3695 +3696,quo,asperiores,3696 +3697,quia,explicabo,3697 +3698,nulla,quam,3698 +3699,accusantium,expedita,3699 +3700,officiis,dolores,3700 +3701,nulla,quia,3701 +3702,doloribus,vel,3702 +3703,doloribus,beatae,3703 +3704,voluptatem,labore,3704 +3705,voluptate,rerum,3705 +3706,non,sint,3706 +3707,inventore,sit,3707 +3708,quisquam,quos,3708 +3709,aut,et,3709 +3710,blanditiis,repudiandae,3710 +3711,iusto,et,3711 +3712,eligendi,libero,3712 +3713,consequatur,consequatur,3713 +3714,maiores,ducimus,3714 +3715,eaque,nostrum,3715 +3716,nostrum,aut,3716 +3717,perspiciatis,nesciunt,3717 +3718,aut,quis,3718 +3719,veniam,quis,3719 +3720,veniam,maxime,3720 +3721,ullam,id,3721 +3722,sint,in,3722 +3723,modi,voluptas,3723 +3724,blanditiis,laudantium,3724 +3725,velit,voluptatibus,3725 +3726,aspernatur,rerum,3726 +3727,animi,et,3727 +3728,velit,aspernatur,3728 +3729,atque,quas,3729 +3730,minus,aut,3730 +3731,et,aspernatur,3731 +3732,delectus,modi,3732 +3733,repellendus,eius,3733 +3734,architecto,commodi,3734 +3735,sit,a,3735 +3736,molestiae,culpa,3736 +3737,corporis,maiores,3737 +3738,sapiente,dolor,3738 +3739,repellendus,dolores,3739 +3740,sit,mollitia,3740 +3741,cumque,sit,3741 +3742,excepturi,qui,3742 +3743,ipsa,voluptatibus,3743 +3744,totam,aut,3744 +3745,necessitatibus,molestias,3745 +3746,id,quia,3746 +3747,cum,voluptatem,3747 +3748,eum,earum,3748 +3749,rerum,vel,3749 +3750,est,ea,3750 +3751,enim,ut,3751 +3752,beatae,ipsam,3752 +3753,unde,in,3753 +3754,maiores,nihil,3754 +3755,magnam,et,3755 +3756,consequatur,perspiciatis,3756 +3757,voluptatem,odio,3757 +3758,qui,sunt,3758 +3759,sunt,et,3759 +3760,exercitationem,voluptas,3760 +3761,rerum,corporis,3761 +3762,aliquid,ratione,3762 +3763,minima,delectus,3763 +3764,est,quas,3764 +3765,placeat,consectetur,3765 +3766,expedita,iure,3766 +3767,reiciendis,doloremque,3767 +3768,molestias,tempora,3768 +3769,ullam,culpa,3769 +3770,dolorem,aliquid,3770 +3771,a,laudantium,3771 +3772,est,quo,3772 +3773,sit,qui,3773 +3774,et,minima,3774 +3775,tempora,cum,3775 +3776,quia,impedit,3776 +3777,occaecati,ducimus,3777 +3778,doloribus,facere,3778 +3779,et,porro,3779 +3780,et,consectetur,3780 +3781,incidunt,ab,3781 +3782,rerum,quod,3782 +3783,officia,aut,3783 +3784,dolorum,quod,3784 +3785,quidem,magni,3785 +3786,nemo,fugit,3786 +3787,aliquam,quaerat,3787 +3788,velit,soluta,3788 +3789,exercitationem,ut,3789 +3790,nesciunt,beatae,3790 +3791,dolores,tempora,3791 +3792,quaerat,autem,3792 +3793,delectus,exercitationem,3793 +3794,quia,et,3794 +3795,consequatur,architecto,3795 +3796,accusantium,possimus,3796 +3797,qui,rerum,3797 +3798,voluptatem,rem,3798 +3799,optio,rem,3799 +3800,earum,culpa,3800 +3801,et,eligendi,3801 +3802,ea,alias,3802 +3803,eum,dolores,3803 +3804,earum,similique,3804 +3805,rem,beatae,3805 +3806,voluptatem,animi,3806 +3807,veritatis,non,3807 +3808,accusamus,error,3808 +3809,aliquid,minus,3809 +3810,et,est,3810 +3811,et,error,3811 +3812,minima,quidem,3812 +3813,veniam,veritatis,3813 +3814,iste,asperiores,3814 +3815,enim,quaerat,3815 +3816,vero,consequatur,3816 +3817,laborum,itaque,3817 +3818,natus,neque,3818 +3819,eum,ut,3819 +3820,quae,officiis,3820 +3821,esse,accusantium,3821 +3822,consectetur,ut,3822 +3823,sunt,harum,3823 +3824,quos,rerum,3824 +3825,totam,consequatur,3825 +3826,similique,dolorem,3826 +3827,voluptas,quaerat,3827 +3828,maxime,minima,3828 +3829,velit,deserunt,3829 +3830,perspiciatis,placeat,3830 +3831,omnis,quaerat,3831 +3832,ipsa,repellat,3832 +3833,eius,aliquam,3833 +3834,maiores,et,3834 +3835,omnis,sint,3835 +3836,ut,soluta,3836 +3837,nobis,perferendis,3837 +3838,quaerat,et,3838 +3839,blanditiis,rerum,3839 +3840,quasi,repellendus,3840 +3841,commodi,deserunt,3841 +3842,veniam,officia,3842 +3843,voluptatem,qui,3843 +3844,cupiditate,aut,3844 +3845,quia,labore,3845 +3846,nobis,est,3846 +3847,labore,sint,3847 +3848,quis,officiis,3848 +3849,ullam,voluptatum,3849 +3850,enim,dignissimos,3850 +3851,officia,aliquid,3851 +3852,quis,et,3852 +3853,est,dolorum,3853 +3854,aliquam,rerum,3854 +3855,earum,aut,3855 +3856,voluptate,ad,3856 +3857,laborum,sit,3857 +3858,et,eius,3858 +3859,reprehenderit,qui,3859 +3860,est,ut,3860 +3861,facilis,modi,3861 +3862,beatae,qui,3862 +3863,architecto,tempora,3863 +3864,asperiores,sit,3864 +3865,id,et,3865 +3866,quis,delectus,3866 +3867,unde,et,3867 +3868,qui,quia,3868 +3869,ut,non,3869 +3870,sed,sit,3870 +3871,repudiandae,illum,3871 +3872,voluptas,quia,3872 +3873,ipsa,tempora,3873 +3874,cum,qui,3874 +3875,non,delectus,3875 +3876,sint,consequatur,3876 +3877,ratione,ratione,3877 +3878,est,est,3878 +3879,impedit,voluptate,3879 +3880,ab,iure,3880 +3881,et,asperiores,3881 +3882,id,vel,3882 +3883,ab,omnis,3883 +3884,sit,esse,3884 +3885,repellat,ab,3885 +3886,unde,et,3886 +3887,suscipit,doloribus,3887 +3888,dolore,doloribus,3888 +3889,non,natus,3889 +3890,molestias,molestiae,3890 +3891,occaecati,est,3891 +3892,quod,laborum,3892 +3893,sed,a,3893 +3894,quis,quos,3894 +3895,quo,earum,3895 +3896,delectus,et,3896 +3897,sit,et,3897 +3898,aut,deserunt,3898 +3899,et,ea,3899 +3900,numquam,sunt,3900 +3901,dolorem,et,3901 +3902,non,et,3902 +3903,a,eveniet,3903 +3904,magnam,voluptas,3904 +3905,laudantium,reprehenderit,3905 +3906,sed,unde,3906 +3907,sed,ea,3907 +3908,saepe,hic,3908 +3909,commodi,magnam,3909 +3910,suscipit,voluptate,3910 +3911,consequatur,incidunt,3911 +3912,laborum,cumque,3912 +3913,quo,velit,3913 +3914,inventore,est,3914 +3915,reiciendis,ut,3915 +3916,rem,dolor,3916 +3917,quia,eligendi,3917 +3918,debitis,et,3918 +3919,nemo,eos,3919 +3920,odit,rerum,3920 +3921,necessitatibus,dolorem,3921 +3922,consequatur,inventore,3922 +3923,repellendus,sed,3923 +3924,ratione,repellat,3924 +3925,qui,animi,3925 +3926,maxime,impedit,3926 +3927,quas,autem,3927 +3928,reprehenderit,unde,3928 +3929,neque,est,3929 +3930,et,excepturi,3930 +3931,ex,at,3931 +3932,voluptas,nihil,3932 +3933,maiores,ut,3933 +3934,molestiae,occaecati,3934 +3935,labore,fugit,3935 +3936,voluptatum,aliquid,3936 +3937,maxime,laborum,3937 +3938,quaerat,eos,3938 +3939,modi,animi,3939 +3940,accusantium,voluptatum,3940 +3941,alias,ducimus,3941 +3942,optio,sint,3942 +3943,nemo,et,3943 +3944,facilis,odio,3944 +3945,saepe,natus,3945 +3946,libero,et,3946 +3947,aliquid,illum,3947 +3948,reprehenderit,id,3948 +3949,at,et,3949 +3950,aut,ex,3950 +3951,facere,sequi,3951 +3952,natus,esse,3952 +3953,delectus,et,3953 +3954,qui,voluptas,3954 +3955,est,eaque,3955 +3956,consectetur,quos,3956 +3957,quas,commodi,3957 +3958,quis,hic,3958 +3959,commodi,asperiores,3959 +3960,consequuntur,qui,3960 +3961,perspiciatis,maxime,3961 +3962,et,velit,3962 +3963,incidunt,officiis,3963 +3964,architecto,consectetur,3964 +3965,nam,numquam,3965 +3966,in,sed,3966 +3967,harum,omnis,3967 +3968,eum,labore,3968 +3969,ullam,omnis,3969 +3970,praesentium,et,3970 +3971,ea,at,3971 +3972,culpa,voluptas,3972 +3973,aliquam,quae,3973 +3974,sint,quasi,3974 +3975,ut,doloremque,3975 +3976,in,est,3976 +3977,cumque,velit,3977 +3978,et,et,3978 +3979,explicabo,sint,3979 +3980,dolorum,aut,3980 +3981,odit,temporibus,3981 +3982,praesentium,voluptatem,3982 +3983,omnis,maiores,3983 +3984,dolores,accusantium,3984 +3985,autem,assumenda,3985 +3986,repudiandae,sequi,3986 +3987,eius,omnis,3987 +3988,magnam,accusantium,3988 +3989,ratione,tempore,3989 +3990,ut,aut,3990 +3991,est,ut,3991 +3992,cumque,dolore,3992 +3993,neque,id,3993 +3994,repellat,fugiat,3994 +3995,quod,aspernatur,3995 +3996,suscipit,facilis,3996 +3997,reprehenderit,debitis,3997 +3998,placeat,repudiandae,3998 +3999,velit,quia,3999 +4000,dolorem,nam,4000 +4001,voluptatem,non,4001 +4002,explicabo,in,4002 +4003,ullam,quas,4003 +4004,minima,sit,4004 +4005,omnis,accusamus,4005 +4006,ratione,magnam,4006 +4007,corporis,repudiandae,4007 +4008,eius,est,4008 +4009,commodi,aperiam,4009 +4010,ut,velit,4010 +4011,expedita,ea,4011 +4012,doloribus,dolorum,4012 +4013,ducimus,laborum,4013 +4014,possimus,sunt,4014 +4015,tenetur,et,4015 +4016,mollitia,distinctio,4016 +4017,qui,eum,4017 +4018,voluptas,architecto,4018 +4019,magni,quidem,4019 +4020,nostrum,labore,4020 +4021,maiores,quasi,4021 +4022,eos,id,4022 +4023,quia,consectetur,4023 +4024,doloribus,in,4024 +4025,maxime,reiciendis,4025 +4026,amet,aut,4026 +4027,sed,culpa,4027 +4028,sint,iusto,4028 +4029,quo,natus,4029 +4030,ea,et,4030 +4031,quo,omnis,4031 +4032,sint,nemo,4032 +4033,vitae,omnis,4033 +4034,quo,quod,4034 +4035,recusandae,animi,4035 +4036,qui,animi,4036 +4037,dolorem,nesciunt,4037 +4038,numquam,dolores,4038 +4039,sequi,id,4039 +4040,saepe,hic,4040 +4041,minus,est,4041 +4042,explicabo,mollitia,4042 +4043,perspiciatis,nihil,4043 +4044,eaque,et,4044 +4045,animi,sint,4045 +4046,mollitia,nisi,4046 +4047,ut,perspiciatis,4047 +4048,quo,consequatur,4048 +4049,est,quia,4049 +4050,rem,debitis,4050 +4051,fuga,et,4051 +4052,fugit,porro,4052 +4053,quam,iure,4053 +4054,cumque,eos,4054 +4055,ipsum,autem,4055 +4056,at,aspernatur,4056 +4057,unde,explicabo,4057 +4058,mollitia,rerum,4058 +4059,debitis,officia,4059 +4060,sunt,quo,4060 +4061,voluptas,ipsam,4061 +4062,asperiores,ut,4062 +4063,consequatur,iure,4063 +4064,sit,qui,4064 +4065,magni,aut,4065 +4066,asperiores,ipsum,4066 +4067,id,mollitia,4067 +4068,quam,a,4068 +4069,esse,sequi,4069 +4070,delectus,suscipit,4070 +4071,quas,exercitationem,4071 +4072,vero,necessitatibus,4072 +4073,est,culpa,4073 +4074,eius,non,4074 +4075,sed,quia,4075 +4076,quam,eum,4076 +4077,consequatur,praesentium,4077 +4078,eius,numquam,4078 +4079,et,id,4079 +4080,sint,quia,4080 +4081,perferendis,et,4081 +4082,perferendis,omnis,4082 +4083,praesentium,in,4083 +4084,quas,corrupti,4084 +4085,sunt,sed,4085 +4086,fuga,illo,4086 +4087,veritatis,vel,4087 +4088,laboriosam,harum,4088 +4089,beatae,commodi,4089 +4090,quisquam,nostrum,4090 +4091,et,placeat,4091 +4092,vitae,unde,4092 +4093,nesciunt,tenetur,4093 +4094,omnis,sint,4094 +4095,facilis,explicabo,4095 +4096,perferendis,magnam,4096 +4097,consectetur,eaque,4097 +4098,cumque,qui,4098 +4099,sit,ut,4099 +4100,non,ea,4100 +4101,est,saepe,4101 +4102,eos,qui,4102 +4103,et,et,4103 +4104,aut,voluptas,4104 +4105,quibusdam,sed,4105 +4106,enim,natus,4106 +4107,voluptate,dolores,4107 +4108,ducimus,omnis,4108 +4109,labore,et,4109 +4110,distinctio,eius,4110 +4111,optio,totam,4111 +4112,nisi,sed,4112 +4113,officiis,expedita,4113 +4114,mollitia,sit,4114 +4115,in,consequatur,4115 +4116,excepturi,nisi,4116 +4117,debitis,dolorem,4117 +4118,natus,doloremque,4118 +4119,assumenda,sit,4119 +4120,laudantium,expedita,4120 +4121,consequatur,voluptatem,4121 +4122,molestias,distinctio,4122 +4123,consequatur,eveniet,4123 +4124,enim,voluptates,4124 +4125,voluptas,quia,4125 +4126,provident,repellat,4126 +4127,id,commodi,4127 +4128,voluptatem,et,4128 +4129,reiciendis,sit,4129 +4130,incidunt,eos,4130 +4131,consequuntur,vero,4131 +4132,explicabo,corporis,4132 +4133,voluptate,voluptatem,4133 +4134,id,ab,4134 +4135,recusandae,nisi,4135 +4136,molestias,at,4136 +4137,fugiat,provident,4137 +4138,tenetur,accusantium,4138 +4139,quis,voluptatem,4139 +4140,hic,quaerat,4140 +4141,illum,earum,4141 +4142,rerum,et,4142 +4143,est,sit,4143 +4144,dolore,corrupti,4144 +4145,nihil,aut,4145 +4146,sint,illum,4146 +4147,sit,distinctio,4147 +4148,laudantium,quo,4148 +4149,et,pariatur,4149 +4150,impedit,quia,4150 +4151,at,debitis,4151 +4152,aut,quas,4152 +4153,nesciunt,soluta,4153 +4154,perspiciatis,et,4154 +4155,est,nostrum,4155 +4156,aliquid,expedita,4156 +4157,qui,tenetur,4157 +4158,distinctio,sint,4158 +4159,tempore,harum,4159 +4160,nulla,laborum,4160 +4161,voluptatem,iusto,4161 +4162,dicta,harum,4162 +4163,molestiae,a,4163 +4164,deserunt,minima,4164 +4165,dolore,animi,4165 +4166,sed,dolores,4166 +4167,aut,aliquid,4167 +4168,eligendi,nostrum,4168 +4169,quia,placeat,4169 +4170,modi,nesciunt,4170 +4171,aut,sed,4171 +4172,in,itaque,4172 +4173,et,amet,4173 +4174,dolores,ex,4174 +4175,modi,reiciendis,4175 +4176,ipsa,dolorem,4176 +4177,non,veritatis,4177 +4178,cum,sunt,4178 +4179,molestias,ut,4179 +4180,nostrum,et,4180 +4181,ab,aut,4181 +4182,nihil,voluptatem,4182 +4183,sequi,optio,4183 +4184,impedit,eum,4184 +4185,ut,aliquid,4185 +4186,ex,mollitia,4186 +4187,reiciendis,tenetur,4187 +4188,rerum,ipsam,4188 +4189,sit,dolor,4189 +4190,quas,aut,4190 +4191,sequi,sit,4191 +4192,consequatur,sequi,4192 +4193,et,minus,4193 +4194,reprehenderit,repellat,4194 +4195,doloremque,est,4195 +4196,qui,modi,4196 +4197,voluptatum,deleniti,4197 +4198,amet,et,4198 +4199,laborum,culpa,4199 +4200,accusamus,nisi,4200 +4201,suscipit,occaecati,4201 +4202,est,laboriosam,4202 +4203,eius,quia,4203 +4204,cupiditate,quasi,4204 +4205,quisquam,dolores,4205 +4206,et,id,4206 +4207,dolorem,et,4207 +4208,unde,ex,4208 +4209,quidem,et,4209 +4210,quibusdam,eligendi,4210 +4211,atque,eligendi,4211 +4212,sed,quam,4212 +4213,dolorem,laudantium,4213 +4214,sit,minima,4214 +4215,saepe,magni,4215 +4216,repudiandae,alias,4216 +4217,sed,qui,4217 +4218,quis,ex,4218 +4219,explicabo,error,4219 +4220,omnis,consectetur,4220 +4221,officiis,magnam,4221 +4222,id,officiis,4222 +4223,porro,enim,4223 +4224,cum,atque,4224 +4225,nobis,asperiores,4225 +4226,minus,repellendus,4226 +4227,et,sint,4227 +4228,id,sint,4228 +4229,ut,enim,4229 +4230,eveniet,tempora,4230 +4231,libero,aut,4231 +4232,assumenda,laudantium,4232 +4233,at,nesciunt,4233 +4234,et,rerum,4234 +4235,asperiores,consequuntur,4235 +4236,soluta,doloribus,4236 +4237,et,et,4237 +4238,natus,rerum,4238 +4239,fugit,occaecati,4239 +4240,dolores,debitis,4240 +4241,numquam,saepe,4241 +4242,et,tenetur,4242 +4243,quod,omnis,4243 +4244,aut,et,4244 +4245,ex,sint,4245 +4246,temporibus,autem,4246 +4247,et,provident,4247 +4248,doloribus,iusto,4248 +4249,ut,facilis,4249 +4250,eum,a,4250 +4251,placeat,et,4251 +4252,rerum,aliquid,4252 +4253,dicta,quibusdam,4253 +4254,explicabo,molestiae,4254 +4255,et,officia,4255 +4256,dolores,provident,4256 +4257,corrupti,aliquid,4257 +4258,consequatur,quia,4258 +4259,itaque,non,4259 +4260,quia,adipisci,4260 +4261,dolorem,dolore,4261 +4262,unde,autem,4262 +4263,vitae,voluptas,4263 +4264,sint,quos,4264 +4265,vel,non,4265 +4266,ullam,corporis,4266 +4267,quam,occaecati,4267 +4268,vel,harum,4268 +4269,sint,quos,4269 +4270,fugit,quia,4270 +4271,qui,illo,4271 +4272,ipsam,deleniti,4272 +4273,omnis,magnam,4273 +4274,delectus,atque,4274 +4275,qui,iste,4275 +4276,voluptates,dolores,4276 +4277,voluptatem,illo,4277 +4278,aspernatur,sapiente,4278 +4279,maiores,fugiat,4279 +4280,qui,molestiae,4280 +4281,consequuntur,ipsum,4281 +4282,quia,modi,4282 +4283,est,eum,4283 +4284,at,aperiam,4284 +4285,culpa,soluta,4285 +4286,nulla,nisi,4286 +4287,quas,accusamus,4287 +4288,provident,id,4288 +4289,rerum,culpa,4289 +4290,autem,odit,4290 +4291,laborum,aspernatur,4291 +4292,unde,tempore,4292 +4293,aut,minus,4293 +4294,quae,eius,4294 +4295,quo,quas,4295 +4296,minus,deserunt,4296 +4297,nisi,et,4297 +4298,consequatur,hic,4298 +4299,earum,et,4299 +4300,vero,consequatur,4300 +4301,libero,et,4301 +4302,est,quia,4302 +4303,suscipit,sed,4303 +4304,rem,qui,4304 +4305,quae,quam,4305 +4306,tempora,eos,4306 +4307,ipsum,iusto,4307 +4308,debitis,qui,4308 +4309,eum,non,4309 +4310,aut,necessitatibus,4310 +4311,occaecati,quo,4311 +4312,atque,quidem,4312 +4313,non,ea,4313 +4314,et,et,4314 +4315,quia,praesentium,4315 +4316,placeat,iusto,4316 +4317,quia,cumque,4317 +4318,laboriosam,nam,4318 +4319,porro,dolorem,4319 +4320,neque,accusantium,4320 +4321,natus,corporis,4321 +4322,non,itaque,4322 +4323,reiciendis,officiis,4323 +4324,ut,ut,4324 +4325,alias,accusamus,4325 +4326,et,nihil,4326 +4327,consectetur,illum,4327 +4328,expedita,ipsa,4328 +4329,repellendus,repellat,4329 +4330,non,maxime,4330 +4331,itaque,ut,4331 +4332,itaque,aut,4332 +4333,velit,at,4333 +4334,quod,harum,4334 +4335,et,aut,4335 +4336,suscipit,et,4336 +4337,omnis,repellat,4337 +4338,est,fugiat,4338 +4339,assumenda,consequatur,4339 +4340,sed,et,4340 +4341,exercitationem,unde,4341 +4342,enim,velit,4342 +4343,sit,iusto,4343 +4344,qui,laudantium,4344 +4345,dolor,voluptas,4345 +4346,cupiditate,et,4346 +4347,et,nisi,4347 +4348,labore,doloribus,4348 +4349,rerum,molestiae,4349 +4350,qui,qui,4350 +4351,ut,minima,4351 +4352,et,dolorem,4352 +4353,sit,ut,4353 +4354,fugiat,veritatis,4354 +4355,inventore,rem,4355 +4356,iure,voluptatem,4356 +4357,illo,sint,4357 +4358,magnam,recusandae,4358 +4359,qui,et,4359 +4360,fuga,a,4360 +4361,voluptates,aliquid,4361 +4362,nihil,similique,4362 +4363,ut,cumque,4363 +4364,corrupti,omnis,4364 +4365,harum,iure,4365 +4366,recusandae,saepe,4366 +4367,sint,magni,4367 +4368,nemo,voluptatem,4368 +4369,enim,necessitatibus,4369 +4370,et,aut,4370 +4371,sapiente,ducimus,4371 +4372,voluptas,cumque,4372 +4373,perspiciatis,neque,4373 +4374,quasi,nobis,4374 +4375,sit,debitis,4375 +4376,rerum,cupiditate,4376 +4377,quas,fuga,4377 +4378,iste,voluptatem,4378 +4379,rerum,voluptas,4379 +4380,temporibus,quis,4380 +4381,minima,ratione,4381 +4382,dolores,eveniet,4382 +4383,reiciendis,dolor,4383 +4384,repudiandae,quas,4384 +4385,beatae,odio,4385 +4386,ut,ad,4386 +4387,autem,doloribus,4387 +4388,dolor,ut,4388 +4389,rem,in,4389 +4390,natus,ut,4390 +4391,amet,enim,4391 +4392,sit,ut,4392 +4393,aut,quia,4393 +4394,id,enim,4394 +4395,tempore,optio,4395 +4396,ut,in,4396 +4397,sed,ratione,4397 +4398,quo,laborum,4398 +4399,suscipit,totam,4399 +4400,ad,dignissimos,4400 +4401,consequatur,et,4401 +4402,laudantium,non,4402 +4403,soluta,atque,4403 +4404,cum,esse,4404 +4405,ad,fuga,4405 +4406,dolor,sint,4406 +4407,et,sunt,4407 +4408,earum,atque,4408 +4409,fugit,exercitationem,4409 +4410,aut,praesentium,4410 +4411,neque,natus,4411 +4412,nemo,ea,4412 +4413,autem,fuga,4413 +4414,autem,fugit,4414 +4415,eaque,vel,4415 +4416,eum,optio,4416 +4417,sit,ut,4417 +4418,ea,earum,4418 +4419,voluptatum,facilis,4419 +4420,sit,ut,4420 +4421,vitae,assumenda,4421 +4422,voluptate,est,4422 +4423,at,sed,4423 +4424,eligendi,libero,4424 +4425,quia,natus,4425 +4426,laudantium,non,4426 +4427,minus,sequi,4427 +4428,facilis,ratione,4428 +4429,quis,quasi,4429 +4430,sunt,porro,4430 +4431,accusantium,magni,4431 +4432,quibusdam,sunt,4432 +4433,cupiditate,quo,4433 +4434,accusamus,nostrum,4434 +4435,praesentium,facilis,4435 +4436,debitis,tempora,4436 +4437,consectetur,ut,4437 +4438,temporibus,saepe,4438 +4439,minus,nobis,4439 +4440,qui,deserunt,4440 +4441,exercitationem,in,4441 +4442,quibusdam,maiores,4442 +4443,odit,ullam,4443 +4444,id,omnis,4444 +4445,suscipit,voluptatem,4445 +4446,perferendis,consequatur,4446 +4447,et,similique,4447 +4448,nemo,ipsum,4448 +4449,vel,occaecati,4449 +4450,ut,ratione,4450 +4451,modi,enim,4451 +4452,esse,placeat,4452 +4453,autem,soluta,4453 +4454,consequatur,perferendis,4454 +4455,qui,rerum,4455 +4456,soluta,quaerat,4456 +4457,sint,id,4457 +4458,aut,dignissimos,4458 +4459,ipsa,facilis,4459 +4460,nulla,numquam,4460 +4461,enim,et,4461 +4462,similique,laudantium,4462 +4463,voluptas,facere,4463 +4464,magni,sed,4464 +4465,temporibus,quia,4465 +4466,aut,esse,4466 +4467,possimus,molestiae,4467 +4468,assumenda,corporis,4468 +4469,minus,sunt,4469 +4470,dolores,dolores,4470 +4471,excepturi,consequuntur,4471 +4472,enim,consectetur,4472 +4473,incidunt,cum,4473 +4474,distinctio,aliquid,4474 +4475,mollitia,sed,4475 +4476,voluptas,et,4476 +4477,provident,ad,4477 +4478,eligendi,quia,4478 +4479,provident,aperiam,4479 +4480,quia,vitae,4480 +4481,nemo,et,4481 +4482,dolor,a,4482 +4483,labore,totam,4483 +4484,eveniet,quod,4484 +4485,id,omnis,4485 +4486,et,esse,4486 +4487,non,quo,4487 +4488,aliquam,accusamus,4488 +4489,qui,eveniet,4489 +4490,consequatur,temporibus,4490 +4491,distinctio,natus,4491 +4492,aliquam,non,4492 +4493,pariatur,minima,4493 +4494,magnam,nihil,4494 +4495,corrupti,voluptas,4495 +4496,eum,voluptas,4496 +4497,sed,dicta,4497 +4498,quis,sequi,4498 +4499,voluptas,exercitationem,4499 +4500,neque,qui,4500 +4501,eum,consequatur,4501 +4502,ut,perferendis,4502 +4503,quaerat,dolorum,4503 +4504,soluta,officiis,4504 +4505,porro,ea,4505 +4506,itaque,laboriosam,4506 +4507,autem,aliquid,4507 +4508,odio,aut,4508 +4509,blanditiis,illum,4509 +4510,non,tempore,4510 +4511,error,itaque,4511 +4512,maxime,et,4512 +4513,eaque,fugiat,4513 +4514,esse,debitis,4514 +4515,sed,aut,4515 +4516,velit,qui,4516 +4517,molestias,inventore,4517 +4518,ipsa,libero,4518 +4519,velit,tempora,4519 +4520,recusandae,error,4520 +4521,qui,eos,4521 +4522,amet,ipsa,4522 +4523,voluptas,neque,4523 +4524,rerum,voluptatem,4524 +4525,enim,laboriosam,4525 +4526,laboriosam,in,4526 +4527,rerum,rerum,4527 +4528,minima,nulla,4528 +4529,earum,labore,4529 +4530,molestiae,non,4530 +4531,et,ipsam,4531 +4532,molestias,eum,4532 +4533,nemo,voluptatem,4533 +4534,similique,consequatur,4534 +4535,omnis,ab,4535 +4536,nisi,aut,4536 +4537,molestias,ipsam,4537 +4538,eligendi,quo,4538 +4539,voluptatem,ut,4539 +4540,ut,sit,4540 +4541,et,possimus,4541 +4542,sint,delectus,4542 +4543,consequatur,aut,4543 +4544,nisi,optio,4544 +4545,nam,sit,4545 +4546,iusto,est,4546 +4547,earum,nostrum,4547 +4548,nihil,quam,4548 +4549,consectetur,dignissimos,4549 +4550,et,et,4550 +4551,quia,corporis,4551 +4552,molestiae,sequi,4552 +4553,voluptas,est,4553 +4554,impedit,dolor,4554 +4555,vel,commodi,4555 +4556,dolores,explicabo,4556 +4557,dolores,amet,4557 +4558,asperiores,culpa,4558 +4559,ullam,necessitatibus,4559 +4560,voluptatem,quam,4560 +4561,asperiores,exercitationem,4561 +4562,et,vel,4562 +4563,omnis,expedita,4563 +4564,doloremque,dignissimos,4564 +4565,recusandae,quia,4565 +4566,tempore,eum,4566 +4567,voluptas,officiis,4567 +4568,impedit,suscipit,4568 +4569,sed,facilis,4569 +4570,aut,aliquam,4570 +4571,eos,omnis,4571 +4572,possimus,rerum,4572 +4573,consequatur,mollitia,4573 +4574,voluptas,tempore,4574 +4575,pariatur,sapiente,4575 +4576,deleniti,veritatis,4576 +4577,sunt,id,4577 +4578,ad,et,4578 +4579,quod,quod,4579 +4580,minus,beatae,4580 +4581,est,aut,4581 +4582,maiores,et,4582 +4583,eius,laboriosam,4583 +4584,consectetur,temporibus,4584 +4585,unde,omnis,4585 +4586,possimus,aut,4586 +4587,quos,animi,4587 +4588,in,quae,4588 +4589,quia,qui,4589 +4590,tempore,possimus,4590 +4591,aliquam,praesentium,4591 +4592,est,non,4592 +4593,minus,fuga,4593 +4594,vel,fuga,4594 +4595,et,enim,4595 +4596,beatae,magni,4596 +4597,nisi,voluptatem,4597 +4598,et,nemo,4598 +4599,qui,minima,4599 +4600,facilis,non,4600 +4601,fugiat,non,4601 +4602,non,sint,4602 +4603,maxime,est,4603 +4604,porro,qui,4604 +4605,unde,modi,4605 +4606,inventore,consectetur,4606 +4607,est,qui,4607 +4608,illum,sit,4608 +4609,illo,ea,4609 +4610,corrupti,est,4610 +4611,et,est,4611 +4612,porro,distinctio,4612 +4613,qui,autem,4613 +4614,sunt,delectus,4614 +4615,similique,quos,4615 +4616,molestiae,nihil,4616 +4617,qui,maxime,4617 +4618,quas,libero,4618 +4619,voluptate,id,4619 +4620,libero,modi,4620 +4621,voluptas,qui,4621 +4622,architecto,minus,4622 +4623,itaque,reiciendis,4623 +4624,rerum,praesentium,4624 +4625,temporibus,est,4625 +4626,blanditiis,est,4626 +4627,accusamus,inventore,4627 +4628,aperiam,voluptatibus,4628 +4629,sunt,minima,4629 +4630,ipsam,id,4630 +4631,aut,pariatur,4631 +4632,at,itaque,4632 +4633,nihil,fugit,4633 +4634,vero,sed,4634 +4635,eaque,non,4635 +4636,assumenda,veritatis,4636 +4637,ipsam,eum,4637 +4638,dolorem,sed,4638 +4639,esse,tempora,4639 +4640,doloremque,odit,4640 +4641,sit,ipsam,4641 +4642,a,qui,4642 +4643,reprehenderit,dolore,4643 +4644,labore,necessitatibus,4644 +4645,velit,quia,4645 +4646,vitae,dignissimos,4646 +4647,incidunt,eaque,4647 +4648,ab,commodi,4648 +4649,perspiciatis,itaque,4649 +4650,ullam,voluptas,4650 +4651,qui,sit,4651 +4652,ducimus,rerum,4652 +4653,voluptas,voluptates,4653 +4654,eos,animi,4654 +4655,assumenda,deleniti,4655 +4656,repellat,sunt,4656 +4657,voluptate,illo,4657 +4658,est,similique,4658 +4659,vel,corporis,4659 +4660,pariatur,dicta,4660 +4661,sapiente,quisquam,4661 +4662,aut,quibusdam,4662 +4663,molestiae,in,4663 +4664,eligendi,ea,4664 +4665,tenetur,corrupti,4665 +4666,itaque,quia,4666 +4667,sed,facere,4667 +4668,occaecati,excepturi,4668 +4669,et,veritatis,4669 +4670,veniam,repudiandae,4670 +4671,itaque,nobis,4671 +4672,iusto,qui,4672 +4673,suscipit,voluptate,4673 +4674,sit,beatae,4674 +4675,commodi,nobis,4675 +4676,qui,voluptas,4676 +4677,enim,fugiat,4677 +4678,quod,dolor,4678 +4679,accusamus,et,4679 +4680,veniam,ut,4680 +4681,necessitatibus,consequatur,4681 +4682,vitae,magni,4682 +4683,velit,odit,4683 +4684,debitis,accusamus,4684 +4685,perferendis,eum,4685 +4686,ipsam,repellat,4686 +4687,hic,voluptatem,4687 +4688,est,rerum,4688 +4689,sequi,sit,4689 +4690,sit,qui,4690 +4691,ullam,animi,4691 +4692,voluptatibus,ipsum,4692 +4693,voluptatem,nam,4693 +4694,aliquam,iste,4694 +4695,ipsam,enim,4695 +4696,neque,reiciendis,4696 +4697,ut,et,4697 +4698,voluptatem,aut,4698 +4699,maiores,accusantium,4699 +4700,pariatur,dolor,4700 +4701,doloribus,voluptatum,4701 +4702,architecto,perspiciatis,4702 +4703,officia,ad,4703 +4704,voluptas,quod,4704 +4705,dolor,esse,4705 +4706,omnis,at,4706 +4707,esse,accusantium,4707 +4708,atque,tempora,4708 +4709,a,dicta,4709 +4710,maiores,et,4710 +4711,sed,rerum,4711 +4712,explicabo,dolorem,4712 +4713,vel,ipsum,4713 +4714,omnis,est,4714 +4715,dolorum,aut,4715 +4716,animi,repellat,4716 +4717,cumque,veniam,4717 +4718,cumque,dolorum,4718 +4719,animi,placeat,4719 +4720,cupiditate,vel,4720 +4721,eius,deleniti,4721 +4722,nostrum,est,4722 +4723,nemo,quam,4723 +4724,odio,doloribus,4724 +4725,odio,reiciendis,4725 +4726,nulla,non,4726 +4727,temporibus,vel,4727 +4728,veritatis,dicta,4728 +4729,maiores,error,4729 +4730,est,officia,4730 +4731,omnis,magnam,4731 +4732,laborum,repellendus,4732 +4733,expedita,est,4733 +4734,aut,quaerat,4734 +4735,ut,quia,4735 +4736,esse,sunt,4736 +4737,accusamus,consequatur,4737 +4738,magnam,eum,4738 +4739,qui,asperiores,4739 +4740,amet,temporibus,4740 +4741,veniam,illo,4741 +4742,culpa,delectus,4742 +4743,occaecati,maiores,4743 +4744,necessitatibus,consequatur,4744 +4745,inventore,ad,4745 +4746,qui,voluptatem,4746 +4747,earum,ipsam,4747 +4748,eveniet,rerum,4748 +4749,minima,error,4749 +4750,aliquam,dicta,4750 +4751,necessitatibus,et,4751 +4752,earum,sed,4752 +4753,veritatis,et,4753 +4754,tempora,rerum,4754 +4755,consequatur,nostrum,4755 +4756,fugiat,officiis,4756 +4757,explicabo,ea,4757 +4758,odio,alias,4758 +4759,nam,distinctio,4759 +4760,et,animi,4760 +4761,est,non,4761 +4762,quae,numquam,4762 +4763,et,velit,4763 +4764,deserunt,ut,4764 +4765,quia,minus,4765 +4766,nihil,voluptas,4766 +4767,nulla,voluptatem,4767 +4768,possimus,quis,4768 +4769,unde,nam,4769 +4770,sed,qui,4770 +4771,omnis,recusandae,4771 +4772,dolorem,id,4772 +4773,laborum,minima,4773 +4774,aut,rem,4774 +4775,dolores,pariatur,4775 +4776,officiis,atque,4776 +4777,quia,esse,4777 +4778,ex,asperiores,4778 +4779,et,magni,4779 +4780,omnis,aut,4780 +4781,sunt,et,4781 +4782,eveniet,minima,4782 +4783,tenetur,ea,4783 +4784,similique,debitis,4784 +4785,aut,sed,4785 +4786,occaecati,unde,4786 +4787,similique,officiis,4787 +4788,possimus,repudiandae,4788 +4789,consequuntur,ducimus,4789 +4790,impedit,consectetur,4790 +4791,sunt,eum,4791 +4792,similique,eaque,4792 +4793,distinctio,ea,4793 +4794,numquam,atque,4794 +4795,dolor,et,4795 +4796,molestias,eos,4796 +4797,distinctio,quidem,4797 +4798,et,similique,4798 +4799,officia,occaecati,4799 +4800,sit,qui,4800 +4801,nam,vero,4801 +4802,dolore,laborum,4802 +4803,dolorum,id,4803 +4804,id,et,4804 +4805,quos,non,4805 +4806,esse,nesciunt,4806 +4807,omnis,maxime,4807 +4808,est,ullam,4808 +4809,praesentium,repellendus,4809 +4810,et,reprehenderit,4810 +4811,hic,veniam,4811 +4812,non,voluptas,4812 +4813,omnis,adipisci,4813 +4814,totam,nihil,4814 +4815,sunt,ut,4815 +4816,numquam,est,4816 +4817,repellat,occaecati,4817 +4818,doloribus,natus,4818 +4819,delectus,sapiente,4819 +4820,minima,nostrum,4820 +4821,molestias,sequi,4821 +4822,eum,odio,4822 +4823,id,aut,4823 +4824,porro,non,4824 +4825,nihil,et,4825 +4826,quisquam,esse,4826 +4827,ea,facilis,4827 +4828,tempora,suscipit,4828 +4829,ut,aspernatur,4829 +4830,unde,quia,4830 +4831,quae,at,4831 +4832,error,voluptas,4832 +4833,aut,eum,4833 +4834,quia,aut,4834 +4835,incidunt,sed,4835 +4836,quasi,qui,4836 +4837,minima,beatae,4837 +4838,perferendis,veniam,4838 +4839,quaerat,cupiditate,4839 +4840,quisquam,quia,4840 +4841,nam,dicta,4841 +4842,et,nam,4842 +4843,perspiciatis,ullam,4843 +4844,aspernatur,dolores,4844 +4845,esse,autem,4845 +4846,sit,minima,4846 +4847,quasi,vitae,4847 +4848,et,non,4848 +4849,pariatur,doloribus,4849 +4850,eum,aperiam,4850 +4851,velit,a,4851 +4852,et,vitae,4852 +4853,aut,culpa,4853 +4854,quaerat,doloribus,4854 +4855,quia,eos,4855 +4856,eligendi,quam,4856 +4857,doloribus,ipsam,4857 +4858,quaerat,nisi,4858 +4859,laudantium,qui,4859 +4860,eum,quisquam,4860 +4861,voluptas,et,4861 +4862,animi,quis,4862 +4863,suscipit,nemo,4863 +4864,ab,cupiditate,4864 +4865,corporis,et,4865 +4866,odit,amet,4866 +4867,sed,qui,4867 +4868,voluptatibus,placeat,4868 +4869,cumque,temporibus,4869 +4870,dolor,quos,4870 +4871,eum,nemo,4871 +4872,inventore,architecto,4872 +4873,molestias,nemo,4873 +4874,incidunt,earum,4874 +4875,consequatur,aut,4875 +4876,ut,non,4876 +4877,facere,aut,4877 +4878,cumque,soluta,4878 +4879,nisi,fugiat,4879 +4880,corporis,perspiciatis,4880 +4881,ut,voluptatem,4881 +4882,reprehenderit,vitae,4882 +4883,et,qui,4883 +4884,fugiat,est,4884 +4885,laudantium,aliquid,4885 +4886,sunt,facilis,4886 +4887,voluptate,ut,4887 +4888,aut,omnis,4888 +4889,aliquam,eos,4889 +4890,maxime,quidem,4890 +4891,sapiente,qui,4891 +4892,inventore,porro,4892 +4893,rerum,labore,4893 +4894,odit,repudiandae,4894 +4895,aut,laudantium,4895 +4896,suscipit,inventore,4896 +4897,ad,ratione,4897 +4898,maiores,esse,4898 +4899,qui,a,4899 +4900,rem,accusantium,4900 +4901,id,est,4901 +4902,dolorem,aperiam,4902 +4903,tempora,vel,4903 +4904,aliquam,aperiam,4904 +4905,omnis,amet,4905 +4906,reiciendis,quam,4906 +4907,ex,eos,4907 +4908,autem,ad,4908 +4909,corrupti,magnam,4909 +4910,cupiditate,aspernatur,4910 +4911,cupiditate,consequatur,4911 +4912,sint,dicta,4912 +4913,fugiat,saepe,4913 +4914,perspiciatis,quia,4914 +4915,aut,expedita,4915 +4916,et,et,4916 +4917,vel,sunt,4917 +4918,iste,illum,4918 +4919,exercitationem,omnis,4919 +4920,quas,voluptatem,4920 +4921,perspiciatis,velit,4921 +4922,iure,quo,4922 +4923,unde,eum,4923 +4924,vero,maiores,4924 +4925,a,quis,4925 +4926,labore,sapiente,4926 +4927,vel,expedita,4927 +4928,qui,qui,4928 +4929,qui,eius,4929 +4930,exercitationem,non,4930 +4931,nam,ut,4931 +4932,qui,nihil,4932 +4933,et,esse,4933 +4934,incidunt,saepe,4934 +4935,et,nihil,4935 +4936,quos,culpa,4936 +4937,repudiandae,quo,4937 +4938,voluptatibus,autem,4938 +4939,dolores,voluptatem,4939 +4940,sed,labore,4940 +4941,quaerat,deserunt,4941 +4942,et,nostrum,4942 +4943,officiis,architecto,4943 +4944,laboriosam,nesciunt,4944 +4945,ducimus,distinctio,4945 +4946,repellendus,saepe,4946 +4947,aut,fugit,4947 +4948,architecto,iste,4948 +4949,porro,illum,4949 +4950,pariatur,qui,4950 +4951,ea,nam,4951 +4952,voluptas,est,4952 +4953,nostrum,error,4953 +4954,delectus,suscipit,4954 +4955,consectetur,error,4955 +4956,repellat,velit,4956 +4957,aliquid,ut,4957 +4958,pariatur,maxime,4958 +4959,ut,ea,4959 +4960,facilis,non,4960 +4961,in,iusto,4961 +4962,ipsa,est,4962 +4963,repellendus,distinctio,4963 +4964,nobis,eos,4964 +4965,laborum,voluptatibus,4965 +4966,tempore,ut,4966 +4967,ea,vel,4967 +4968,consequatur,doloribus,4968 +4969,aliquam,officiis,4969 +4970,ipsum,a,4970 +4971,iusto,soluta,4971 +4972,sunt,facilis,4972 +4973,nobis,veritatis,4973 +4974,qui,minima,4974 +4975,dolorem,sint,4975 +4976,mollitia,tenetur,4976 +4977,aut,atque,4977 +4978,ducimus,optio,4978 +4979,ipsa,voluptas,4979 +4980,blanditiis,voluptatem,4980 +4981,error,porro,4981 +4982,sequi,nam,4982 +4983,omnis,possimus,4983 +4984,sit,inventore,4984 +4985,quisquam,suscipit,4985 +4986,voluptatum,id,4986 +4987,voluptatibus,dolores,4987 +4988,nesciunt,et,4988 +4989,fuga,quos,4989 +4990,sed,veniam,4990 +4991,est,maiores,4991 +4992,ut,autem,4992 +4993,quia,voluptatem,4993 +4994,et,dolores,4994 +4995,nisi,voluptatibus,4995 +4996,quae,nostrum,4996 +4997,accusantium,animi,4997 +4998,animi,veniam,4998 +4999,velit,sed,4999 +5000,reprehenderit,eos,5000 diff --git a/Java-Executor/java-executor-tutorial/docs/1-java-concurrent-v1.0.docx b/Java-Executor/java-executor-tutorial/docs/1-java-concurrent-v1.0.docx new file mode 100644 index 0000000..11a5b78 Binary files /dev/null and b/Java-Executor/java-executor-tutorial/docs/1-java-concurrent-v1.0.docx differ diff --git a/Java-Executor/java-executor-tutorial/log/retry/thread.txt b/Java-Executor/java-executor-tutorial/log/retry/thread.txt new file mode 100644 index 0000000..e69de29 diff --git a/Java-Executor/java-executor-tutorial/mvnw b/Java-Executor/java-executor-tutorial/mvnw new file mode 100644 index 0000000..841f63a --- /dev/null +++ b/Java-Executor/java-executor-tutorial/mvnw @@ -0,0 +1,331 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /usr/local/etc/mavenrc ]; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$( + \unset -f command + \command -v java + )" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Java-Executor/java-executor-tutorial/mvnw.cmd b/Java-Executor/java-executor-tutorial/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Java-Executor/java-executor-tutorial/pom.xml b/Java-Executor/java-executor-tutorial/pom.xml new file mode 100644 index 0000000..42e16ac --- /dev/null +++ b/Java-Executor/java-executor-tutorial/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.9 + + + com.msoft.core + java-executor-tutorial + 0.0.1-SNAPSHOT + java-executor-tutorial + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + mysql + mysql-connector-java + 8.0.27 + + + + com.zaxxer + HikariCP + 4.0.3 + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/Application.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/Application.java new file mode 100644 index 0000000..1114222 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/Application.java @@ -0,0 +1,23 @@ +package com.msoft.core; + +import com.msoft.core.service.CustomerService; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + String directionFile = "data"; + + ApplicationContext context = SpringApplication.run(Application.class, args); + + CustomerService customerService = context.getBean(CustomerService.class); + + System.out.println("SERVER_IS_READY"); + + customerService.loadCustomersFromFiles(directionFile); + } + +} diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/config/DatabaseConfig.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/config/DatabaseConfig.java new file mode 100644 index 0000000..1072906 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/config/DatabaseConfig.java @@ -0,0 +1,27 @@ +package com.msoft.core.config; + +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author ManhKM on 3/8/2023 + * @project java-executor-tutorial + */ +@Configuration +public class DatabaseConfig { + + @Bean + public HikariDataSource dataSource() { + HikariConfig config = new HikariConfig(); + config.setJdbcUrl("jdbc:mysql://localhost:3306/example"); + config.setUsername("root"); + config.setPassword("12345678aA"); + config.addDataSourceProperty("cachePrepStmts", "true"); + config.addDataSourceProperty("prepStmtCacheSize", "250"); + config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); + HikariDataSource dataSource = new HikariDataSource(config); + return dataSource; + } +} diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/config/ExecutorServiceConfig.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/config/ExecutorServiceConfig.java new file mode 100644 index 0000000..e668b3a --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/config/ExecutorServiceConfig.java @@ -0,0 +1,42 @@ +package com.msoft.core.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +/** + * @author ManhKM on 3/8/2023 + * @project java-executor-tutorial + *

+ * Trong đó, ta sử dụng @Configuration và @EnableAsync để đánh dấu rằng đây là một class cấu hình và + * sử dụng các tính năng của Spring Async để tạo ExecutorService + */ +@Configuration +@EnableAsync +public class ExecutorServiceConfig { + + @Value("${app.executor.core-pool-size}") + private String corePoolSize; + + @Value("${app.executor.max-pool-size}") + private String maxPoolSize; + + @Value("${app.executor.queue-capacity}") + private String queueCapacity; + + @Value("${app.executor.name-prefix}") + private String namePrefix; + + @Bean + public ThreadPoolTaskExecutor executor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(Integer.parseInt(corePoolSize)); + executor.setMaxPoolSize(Integer.parseInt(maxPoolSize)); + executor.setQueueCapacity(Integer.parseInt(queueCapacity)); + executor.setThreadNamePrefix(namePrefix); + executor.initialize(); + return executor; + } +} diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/config/SqlUtility.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/config/SqlUtility.java new file mode 100644 index 0000000..dba53b9 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/config/SqlUtility.java @@ -0,0 +1,700 @@ +package com.msoft.core.config; + +import com.msoft.core.utils.SQLUtils; +import com.msoft.core.utils.StringUtils; +import com.zaxxer.hikari.HikariDataSource; +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Configuration; + +/** + * @author ManhKM on 3/8/2023 + * @project java-executor-tutorial + */ +@Configuration("sqlUtility") +public class SqlUtility { + + public static final String PRIMARY_DATA_SOURCE = "primaryDataSource"; + private final HikariDataSource ds; + private final Map mapDS; + private int refCursor; + + public SqlUtility(ApplicationContext context) { + this.ds = (HikariDataSource) context.getBean(HikariDataSource.class); + this.mapDS = context.getBeansOfType(HikariDataSource.class); + if (this.ds instanceof HikariDataSource) { + HikariDataSource hikari = this.ds; + if (hikari.getDriverClassName().toLowerCase().contains("oracle")) { + this.refCursor = -10; + } else { + this.refCursor = 2012; + } + } else { + this.refCursor = 2012; + } + + } + + public List extractSQL(String sql) { + return SQLUtils.extractSQL(sql); + } + + public Map toMap(ResultSet rs) throws SQLException { + List columnNames = this.extractRSMD(rs); + Map row = new HashMap(); + if (rs.next()) { + Iterator var4 = columnNames.iterator(); + + while (var4.hasNext()) { + String columnName = (String) var4.next(); + row.put(columnName, rs.getString(columnName)); + } + } + + return row; + } + + public List extractRSMD(ResultSet rs) throws SQLException { + ResultSetMetaData rsmd = rs.getMetaData(); + int columnCount = rsmd.getColumnCount(); + List columnNames = new ArrayList(); + + for (int i = 1; i <= columnCount; ++i) { + String columnName = ""; + + try { + columnName = rsmd.getColumnLabel(i); + } catch (Exception var8) { + columnName = rsmd.getColumnName(i); + } + + columnNames.add(columnName.toUpperCase()); + } + + return columnNames; + } + + public List> rsToListMap(ResultSet rs) throws SQLException { + List columnNames = this.extractRSMD(rs); + ArrayList result = new ArrayList(); + + while (rs.next()) { + Map row = new HashMap(); + Iterator var5 = columnNames.iterator(); + + while (var5.hasNext()) { + String columnName = (String) var5.next(); + row.put(columnName, rs.getString(columnName)); + } + + result.add(row); + } + + return result; + } + + public int executeDll(String dll) throws SQLException { + Connection conn = null; + + int var3; + try { + conn = this.getConnection(); + var3 = this.executeDll(conn, dll); + } finally { + this.close(conn); + } + + return var3; + } + + /** + * @deprecated + */ + @Deprecated + public int executeDll(String dsName, String dll) throws SQLException { + Connection conn = null; + + int var4; + try { + conn = this.getConnection(dsName); + var4 = this.executeDll(conn, dll); + } finally { + this.close(conn); + } + + return var4; + } + + public int executeDllDS(String dsName, String dll) throws SQLException { + Connection conn = null; + + int var4; + try { + conn = this.getConnection(dsName); + var4 = this.executeDll(conn, dll); + } finally { + this.close(conn); + } + + return var4; + } + + public int executeDll(Connection conn, String dll) throws SQLException { + Statement stmt = null; + + int var4; + try { + stmt = conn.createStatement(); + var4 = stmt.executeUpdate(dll); + } finally { + if (stmt != null) { + try { + stmt.close(); + } catch (Exception var11) { + } + } + + } + + return var4; + } + + public List> toListMapFunc(String sql, Object... params) + throws SQLException { + Connection conn = null; + + List var4; + try { + conn = this.getConnection(); + var4 = this.toListMapFunc(conn, sql, params); + } finally { + if (conn != null) { + try { + conn.close(); + } catch (Exception var11) { + } + } + + } + + return var4; + } + + /** + * @deprecated + */ + @Deprecated + public List> toListMapFunc(String dsName, String sql, Object... params) + throws SQLException { + Connection conn = null; + + List var5; + try { + conn = this.getConnection(dsName); + var5 = this.toListMapFunc(conn, sql, params); + } finally { + if (conn != null) { + try { + conn.close(); + } catch (Exception var12) { + } + } + + } + + return var5; + } + + public List> toListMapFuncDS(String dsName, String sql, Object... params) + throws SQLException { + Connection conn = null; + + List var5; + try { + conn = this.getConnection(dsName); + var5 = this.toListMapFunc(conn, sql, params); + } finally { + if (conn != null) { + try { + conn.close(); + } catch (Exception var12) { + } + } + + } + + return var5; + } + + public List> toListMapFunc(Connection conn, String sql, Object... params) + throws SQLException { + CallableStatement cstmt = null; + ResultSet rs = null; + + List var10; + try { + cstmt = conn.prepareCall(sql); + cstmt.registerOutParameter(1, this.refCursor); + cstmt.execute(); + rs = (ResultSet) cstmt.getObject(1); + if (params != null && params.length > 0) { + for (int i = 0; i < params.length; ++i) { + cstmt.setObject(i + 2, params[i]); + } + } + + cstmt.execute(); + rs = (ResultSet) cstmt.getObject(1); + var10 = this.rsToListMap(rs); + } finally { + this.close(rs); + this.close(cstmt); + } + + return var10; + } + + public List> toListMap(String sql, Object... params) throws SQLException { + Connection conn = null; + + List var4; + try { + conn = this.ds.getConnection(); + var4 = this.toListMap(conn, sql, params); + } finally { + this.close(conn); + } + + return var4; + } + + /** + * @deprecated + */ + @Deprecated + public List> toListMap(String dsName, String sql, Object... params) + throws SQLException { + Connection conn = null; + + List var5; + try { + conn = this.getConnection(dsName); + var5 = this.toListMap(conn, sql, params); + } finally { + this.close(conn); + } + + return var5; + } + + public List> toListMapDS(String dsName, String sql, Object... params) + throws SQLException { + Connection conn = null; + + List var5; + try { + conn = this.getConnection(dsName); + var5 = this.toListMap(conn, sql, params); + } finally { + this.close(conn); + } + + return var5; + } + + public List> toListMap(Connection conn, String sql, Object... params) + throws SQLException { + PreparedStatement ptsm = null; + ResultSet rs = null; + + List var10; + try { + ptsm = conn.prepareCall(sql); + if (params != null && params.length > 0) { + for (int i = 0; i < params.length; ++i) { + ptsm.setObject(i + 1, params[i]); + } + } + + rs = ptsm.executeQuery(); + var10 = this.rsToListMap(rs); + } finally { + this.close(rs); + this.close((PreparedStatement) ptsm); + } + + return var10; + } + + public Map toMap(String sql, Object... params) throws SQLException { + Connection conn = null; + + Map var4; + try { + conn = this.getConnection(); + var4 = this.toMap(conn, sql, params); + } finally { + this.close(conn); + } + + return var4; + } + + /** + * @deprecated + */ + @Deprecated + public Map toMap(String dsName, String sql, Object... params) + throws SQLException { + Connection conn = null; + + Map var5; + try { + conn = this.getConnection(dsName); + var5 = this.toMap(conn, sql, params); + } finally { + this.close(conn); + } + + return var5; + } + + public Map toMapDS(String dsName, String sql, Object... params) + throws SQLException { + Connection conn = null; + + Map var5; + try { + conn = this.getConnection(dsName); + var5 = this.toMap(conn, sql, params); + } finally { + this.close(conn); + } + + return var5; + } + + public Map toMap(Connection conn, String sql, Object... params) + throws SQLException { + PreparedStatement ptsm = null; + ResultSet rs = null; + + Map var10; + try { + ptsm = conn.prepareCall(sql); + if (params != null && params.length > 0) { + for (int i = 0; i < params.length; ++i) { + ptsm.setObject(i + 1, params[i]); + } + } + + rs = ptsm.executeQuery(); + var10 = this.toMap(rs); + } finally { + this.close(rs); + this.close((PreparedStatement) ptsm); + } + + return var10; + } + + public String getValue(String sql, Object... params) throws SQLException { + Connection conn = null; + + String var4; + try { + conn = this.getConnection(); + var4 = this.getValue(conn, sql, params); + } finally { + this.close(conn); + } + + return var4; + } + + /** + * @deprecated + */ + @Deprecated + public String getValue(String dsName, String sql, Object... params) throws SQLException { + Connection conn = null; + + String var5; + try { + conn = this.getConnection(dsName); + var5 = this.getValue(conn, sql, params); + } finally { + this.close(conn); + } + + return var5; + } + + public String getValueDS(String dsName, String sql, Object... params) throws SQLException { + Connection conn = null; + + String var5; + try { + conn = this.getConnection(dsName); + var5 = this.getValue(conn, sql, params); + } finally { + this.close(conn); + } + + return var5; + } + + public String getValue(Connection conn, String sql, Object... params) throws SQLException { + PreparedStatement ptsm = null; + ResultSet rs = null; + + String var10; + try { + ptsm = conn.prepareCall(sql); + if (params != null && params.length > 0) { + for (int i = 0; i < params.length; ++i) { + ptsm.setObject(i + 1, params[i]); + } + } + + rs = ptsm.executeQuery(); + if (rs.next()) { + var10 = rs.getString(1); + return var10; + } + + var10 = null; + } finally { + this.close(rs); + this.close((PreparedStatement) ptsm); + } + + return var10; + } + + public int executeUpdate(String sql, Object... params) throws SQLException { + Connection connection = null; + + int var4; + try { + connection = this.ds.getConnection(); + var4 = this.executeUpdate(connection, sql, params); + } finally { + this.closeAndCommit(connection); + } + + return var4; + } + + /** + * @deprecated + */ + @Deprecated + public int executeUpdate(String dsName, String sql, Object... params) throws SQLException { + Connection connection = null; + + int var5; + try { + connection = this.getConnection(dsName); + var5 = this.executeUpdate(connection, sql, params); + } finally { + this.closeAndCommit(connection); + } + + return var5; + } + + public int executeUpdateDS(String dsName, String sql, Object... params) throws SQLException { + Connection connection = null; + + int var5; + try { + connection = this.getConnection(dsName); + var5 = this.executeUpdate(connection, sql, params); + } finally { + this.closeAndCommit(connection); + } + + return var5; + } + + public int executeUpdate(Connection conn, String sql, Object... params) throws SQLException { + CallableStatement pstmt = null; + + int i; + try { + pstmt = conn.prepareCall(sql); + if (params != null && params.length > 0) { + for (i = 0; i < params.length; ++i) { + pstmt.setObject(i + 1, params[i]); + } + } + + i = pstmt.executeUpdate(); + } finally { + this.close((PreparedStatement) pstmt); + } + + return i; + } + + public Connection getConnection() throws SQLException { + return this.ds.getConnection(); + } + + public Connection getConnection(String name) throws SQLException { + if (StringUtils.isEmpty(name)) { + return this.getConnection(); + } else { + HikariDataSource ds = (HikariDataSource) this.mapDS.get(name); + if (ds == null) { + throw new NullPointerException("not found datasource name " + name); + } else { + return ds.getConnection(); + } + } + } + + public Set getAllDsName() { + return this.mapDS.keySet(); + } + + public Map getMapDS() { + return this.mapDS; + } + + public String getValueFunc(String sql, Object... params) throws SQLException { + Connection conn = null; + + String var4; + try { + conn = this.getConnection(); + var4 = this.getValueFunc(conn, sql, params); + } finally { + this.closeAndCommit(conn); + } + + return var4; + } + + /** + * @deprecated + */ + @Deprecated + public String getValueFunc(String dsName, String sql, Object... params) throws SQLException { + Connection conn = null; + + String var5; + try { + conn = this.getConnection(dsName); + var5 = this.getValueFunc(conn, sql, params); + } finally { + this.closeAndCommit(conn); + } + + return var5; + } + + public String getValueFuncDS(String dsName, String sql, Object... params) throws SQLException { + Connection conn = null; + + String var5; + try { + conn = this.getConnection(dsName); + var5 = this.getValueFunc(conn, sql, params); + } finally { + this.closeAndCommit(conn); + } + + return var5; + } + + public String getValueFunc(Connection conn, String sql, Object... params) throws SQLException { + CallableStatement cstmt = null; + + String var9; + try { + cstmt = conn.prepareCall(sql); + cstmt.registerOutParameter(1, 12); + if (params != null && params.length > 0) { + for (int i = 0; i < params.length; ++i) { + cstmt.setObject(i + 2, params[i]); + } + } + + cstmt.execute(); + var9 = cstmt.getString(1); + } finally { + this.close(cstmt); + } + + return var9; + } + + public void close(Connection conn) { + if (conn != null) { + try { + conn.close(); + } catch (Exception var3) { + } + } + + } + + public void closeAndCommit(Connection conn) { + if (conn != null) { + try { + conn.commit(); + } catch (Exception var4) { + } + + try { + conn.close(); + } catch (Exception var3) { + } + } + + } + + public void close(CallableStatement stmt) { + if (stmt != null) { + try { + stmt.close(); + } catch (Exception var3) { + } + } + + } + + public void close(PreparedStatement pstmt) { + if (pstmt != null) { + try { + pstmt.close(); + } catch (Exception var3) { + } + } + + } + + public void close(ResultSet rs) { + if (rs != null) { + try { + rs.close(); + } catch (Exception var3) { + } + } + + } +} diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/entity/Customer.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/entity/Customer.java new file mode 100644 index 0000000..8611b97 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/entity/Customer.java @@ -0,0 +1,70 @@ +package com.msoft.core.entity; + +/** + * @author ManhKM on 3/8/2023 + * @project java-executor-tutorial + */ +public class Customer{ + private int id; + private String name; + private String address; + private int productId; + + public Customer() { + } + + public Customer(String name, String address, int productId){ + this.name = name; + this.address = address; + this.productId = productId; + } + + public Customer(int id, String name, String address, int productId) { + this.id = id; + this.name = name; + this.address = address; + this.productId = productId; + } + + 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 getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public int getProductId() { + return productId; + } + + public void setProductId(int productId) { + this.productId = productId; + } + + @Override + public String toString() { + return "Customer{" + + "id=" + id + + ", name='" + name + '\'' + + ", address='" + address + '\'' + + ", productId=" + productId + + '}'; + } +} diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/repository/CustomerRepository.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/repository/CustomerRepository.java new file mode 100644 index 0000000..36d6c18 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/repository/CustomerRepository.java @@ -0,0 +1,41 @@ +package com.msoft.core.repository; + +import com.msoft.core.entity.Customer; +import com.zaxxer.hikari.HikariDataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +/** + * @author ManhKM on 3/8/2023 + * @project java-executor-tutorial + */ +@Repository +public class CustomerRepository { + + @Autowired + private HikariDataSource dataSource; + + public void save(List customers){ + String sql = "INSERT INTO customers (name, address, productId) VALUES (?, ?, ?)"; + + try (Connection connection = dataSource.getConnection()) { + PreparedStatement preparedStatement = connection.prepareStatement(sql); + for (Customer customer : customers) { + preparedStatement.setString(1, customer.getName()); + preparedStatement.setString(2, customer.getAddress()); + preparedStatement.setInt(3, customer.getProductId()); + preparedStatement.addBatch(); + } + preparedStatement.executeBatch(); + System.out.println("Save done: " + customers.size()); + + } catch (SQLException e) { + e.printStackTrace(); + } + } + +} diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/service/CustomerService.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/service/CustomerService.java new file mode 100644 index 0000000..952427b --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/service/CustomerService.java @@ -0,0 +1,69 @@ +package com.msoft.core.service; + +import com.msoft.core.entity.Customer; +import com.msoft.core.repository.CustomerRepository; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Service; + +/** + * @author ManhKM on 3/8/2023 + * @project java-executor-tutorial + */ +@Service +public class CustomerService { + + @Autowired + private ThreadPoolTaskExecutor taskExecutor; + + @Autowired + private CustomerRepository repository; + + public void loadCustomersFromFiles(String dataDirectory) { + File directory = new File(dataDirectory); + File[] files = directory.listFiles((dir, name) -> name.endsWith(".txt")); + + for (File file : files) { + taskExecutor.execute(() -> { + System.out.println("Current execute file: " + file.getName()); + List customers = readCustomersFromList(file); + saveCustomersToDatabase(customers); + }); + } + } + + private void saveCustomersToDatabase(List customers) { + repository.save(customers); + } + + private List readCustomersFromList(File file) { + List customers = new ArrayList<>(); + + try { + BufferedReader reader = new BufferedReader(new FileReader(file)); + String line; + while ((line = reader.readLine()) != null) { + String[] fields = line.split(","); + Customer customer = new Customer(Integer.parseInt(fields[0]), fields[1], fields[2], + Integer.parseInt(fields[3])); + customers.add(customer); + } + reader.close(); + return customers; + } catch (FileNotFoundException e) { + e.printStackTrace(); + return Collections.emptyList(); + } catch (IOException e) { + e.printStackTrace(); + return Collections.emptyList(); + } + } +} diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/task/InsertData.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/task/InsertData.java new file mode 100644 index 0000000..2b7b795 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/task/InsertData.java @@ -0,0 +1,31 @@ +package com.msoft.core.task; + +import com.msoft.core.config.SqlUtility; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +/** + * @author ManhKM on 3/8/2023 + * @project java-executor-tutorial + */ +public class InsertData implements Runnable{ + private SqlUtility sqlUtility; + + @Override + public void run() { + + Connection conn = null; + PreparedStatement preparedStatement = null; + String sql = "INSERT INTO customers (name, address, productId) VALUES (?, ?, ?)"; + + try{ + long time = System.currentTimeMillis(); + conn = this.sqlUtility.getConnection(); + conn.setAutoCommit(false); + preparedStatement = conn.prepareStatement(sql); + } catch (SQLException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/utils/SQLUtils.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/utils/SQLUtils.java new file mode 100644 index 0000000..c79da49 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/utils/SQLUtils.java @@ -0,0 +1,101 @@ +package com.msoft.core.utils; + +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author ManhKM on 3/8/2023 + * @project java-executor-tutorial + */ +public class SQLUtils { + private static final Pattern PATTERN_VALUE = Pattern.compile("\\'(.*?)\\'"); + + public SQLUtils() { + } + + private static boolean isLetterOrDigit(char c) { + return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c == '-' || c == '_'; + } + + public static List extractSQLNormal(String sql) { + if (sql == null) { + return null; + } else { + String s = sql; + + for(Matcher m = PATTERN_VALUE.matcher(sql); m.find(); s = s.replace(m.group(), "")) { + } + + s = s.replace("?:=", ""); + List listParam = new ArrayList(); + char[] cr = s.toCharArray(); + int counter = 1; + int len = cr.length; + + for(int i = 0; i < len; ++i) { + if (cr[i] == '?') { + listParam.add(String.valueOf(counter)); + ++counter; + } else if (cr[i] == ':') { + ++i; + + StringBuilder sb; + for(sb = new StringBuilder(); i < len && isLetterOrDigit(cr[i]); ++i) { + sb.append(cr[i]); + } + + listParam.add(sb.toString()); + ++counter; + } + } + + return listParam; + } + } + + public static List extractSQL(String sql) { + if (sql == null) { + return null; + } else { + String s = sql.toUpperCase(); + + for(Matcher m = PATTERN_VALUE.matcher(s); m.find(); s = s.replace(m.group(), "")) { + } + + s = s.replace("?:=", ""); + List listParam = new ArrayList(); + char[] cr = s.toCharArray(); + int counter = 1; + int len = cr.length; + + for(int i = 0; i < len; ++i) { + if (cr[i] == '?') { + listParam.add(String.valueOf(counter)); + ++counter; + } else if (cr[i] == ':') { + ++i; + + StringBuilder sb; + for(sb = new StringBuilder(); i < len && isLetterOrDigit(cr[i]); ++i) { + sb.append(cr[i]); + } + + listParam.add(sb.toString()); + ++counter; + } + } + + return listParam; + } + } + + public static void main(String[] args) { + String call = "select 'SMSMT_' || CASE WHEN sc.pkg_id is null and sc.act_id != 7 THEN sc.service_id ELSE sc.id END || '_' || mt.key from mt_value mt, service_cmd sc where sc.id = mt.cmd_id and mt.cmd_id = :cmd_id UNION select 'SMSMT_' || CASE WHEN sc.pkg_id is null and sc.act_id != 7 THEN sc.service_id ELSE sc.id END || '_' || mt.key from mt_value mt, service_cmd sc where sc.id = mt.cmd_id and mt.service_id = :service_id and sc.pkg_id is null and sc.act_id = decode(:cmd_act, '3', '1',:cmd_act)"; + List list = extractSQL(call); + PrintStream var10001 = System.out; + list.forEach(var10001::println); + } +} diff --git a/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/utils/StringUtils.java b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/utils/StringUtils.java new file mode 100644 index 0000000..760e6b5 --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/main/java/com/msoft/core/utils/StringUtils.java @@ -0,0 +1,130 @@ +package com.msoft.core.utils; + +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 3/8/2023 + * @project java-executor-tutorial + */ +public class StringUtils { + + public StringUtils() { + } + + public static boolean isEmpty(String s) { + return s == null || s.trim().length() == 0; + } + + public static boolean isEmpty(String[] s) { + return s == null || s.length == 0; + } + + public static byte[] toBytes(String s) { + try { + return s.getBytes("UTF-8"); + } catch (UnsupportedEncodingException var2) { + throw new RuntimeException(var2); + } + } + + public static String fromBytes(byte[] bytes) { + try { + return new String(bytes, "UTF-8"); + } catch (UnsupportedEncodingException var2) { + throw new RuntimeException(var2); + } + } + + public static boolean isNumeric(final CharSequence cs) { + if (isEmpty(cs)) { + return false; + } else { + int sz = cs.length(); + + for (int i = 0; i < sz; ++i) { + if (!Character.isDigit(cs.charAt(i))) { + return false; + } + } + + return true; + } + } + + public static boolean isEmpty(final CharSequence cs) { + return cs == null || cs.length() == 0; + } + + public static Object toPrimitives(Class clazz, String s) { + if (clazz == String.class) { + return s; + } else if (clazz == Integer.class) { + return Integer.valueOf(s); + } else if (clazz == Long.class) { + return Long.valueOf(s); + } else if (clazz == Float.class) { + return Float.valueOf(s); + } else if (clazz == Short.class) { + return Short.valueOf(s); + } else if (clazz == Double.class) { + return Double.valueOf(s); + } else { + throw new IllegalArgumentException("Unsupport primitive type " + clazz.getName()); + } + } + + public static String formatNumber(String value, String delimiter) { + StringBuilder price = new StringBuilder(value); + price.reverse(); + StringBuilder priceNew = new StringBuilder(); + int len = price.length(); + + for (int j = 1; j <= len; ++j) { + priceNew.append(price.charAt(j - 1)); + if (j % 3 == 0 && j < len) { + priceNew.append(delimiter); + } + } + + priceNew.reverse(); + return priceNew.toString(); + } + + public static String checkPath(String value) { + String v = value.trim(); + if (!v.contains("/")) { + return "/" + v; + } else { + if (!v.startsWith("/")) { + v = "/" + v; + } + + if (v.endsWith("/")) { + v = v.substring(0, v.lastIndexOf("/")); + } + + return v; + } + } + + public static String capitalize(String s) { + return s.length() == 0 ? s : s.substring(0, 1).toUpperCase() + s.substring(1); + } + + public static List getFieldNamesForClass(Class clazz) throws Exception { + List fieldNames = new ArrayList(); + Field[] fields = clazz.getDeclaredFields(); + + for (int i = 0; i < fields.length; ++i) { + if (!Modifier.isFinal(fields[i].getModifiers())) { + fieldNames.add(fields[i].getName()); + } + } + + return fieldNames; + } +} diff --git a/Java-Executor/java-executor-tutorial/src/test/java/com/msoft/core/JavaExecutorTutorialApplicationTests.java b/Java-Executor/java-executor-tutorial/src/test/java/com/msoft/core/JavaExecutorTutorialApplicationTests.java new file mode 100644 index 0000000..512851a --- /dev/null +++ b/Java-Executor/java-executor-tutorial/src/test/java/com/msoft/core/JavaExecutorTutorialApplicationTests.java @@ -0,0 +1,13 @@ +package com.msoft.core; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class JavaExecutorTutorialApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/Java-FTP b/Java-FTP new file mode 160000 index 0000000..517dd81 --- /dev/null +++ b/Java-FTP @@ -0,0 +1 @@ +Subproject commit 517dd817542e3016ed1c42498027bb83f2de4335 diff --git a/Java-File-Manager/java-file-manager/.gitignore b/Java-File-Manager/java-file-manager/.gitignore new file mode 100644 index 0000000..35c1233 --- /dev/null +++ b/Java-File-Manager/java-file-manager/.gitignore @@ -0,0 +1,41 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ + +# Compiled class file +*.class +**/target/ +design/ +uml/ + +# Log file +*.log +*.log.gz \ No newline at end of file diff --git a/Java-File-Manager/java-file-manager/data/input/01/token.txt b/Java-File-Manager/java-file-manager/data/input/01/token.txt new file mode 100644 index 0000000..237d73f --- /dev/null +++ b/Java-File-Manager/java-file-manager/data/input/01/token.txt @@ -0,0 +1 @@ +eyJzdWIiOiIxIiwiaWF0IjoxNjg1NDIxNzU1LCJleHAiOjE2ODU0NTMyOTF9 \ No newline at end of file diff --git a/Java-File-Manager/java-file-manager/data/input/02/info-person.txt b/Java-File-Manager/java-file-manager/data/input/02/info-person.txt new file mode 100644 index 0000000..d25b435 --- /dev/null +++ b/Java-File-Manager/java-file-manager/data/input/02/info-person.txt @@ -0,0 +1,2000 @@ +0,KHONG MINH MANH_0,NEO_0 +1,KHONG MINH MANH_1,NEO_1 +2,KHONG MINH MANH_2,NEO_2 +3,KHONG MINH MANH_3,NEO_3 +4,KHONG MINH MANH_4,NEO_4 +5,KHONG MINH MANH_5,NEO_5 +6,KHONG MINH MANH_6,NEO_6 +7,KHONG MINH MANH_7,NEO_7 +8,KHONG MINH MANH_8,NEO_8 +9,KHONG MINH MANH_9,NEO_9 +10,KHONG MINH MANH_10,NEO_10 +11,KHONG MINH MANH_11,NEO_11 +12,KHONG MINH MANH_12,NEO_12 +13,KHONG MINH MANH_13,NEO_13 +14,KHONG MINH MANH_14,NEO_14 +15,KHONG MINH MANH_15,NEO_15 +16,KHONG MINH MANH_16,NEO_16 +17,KHONG MINH MANH_17,NEO_17 +18,KHONG MINH MANH_18,NEO_18 +19,KHONG MINH MANH_19,NEO_19 +20,KHONG MINH MANH_20,NEO_20 +21,KHONG MINH MANH_21,NEO_21 +22,KHONG MINH MANH_22,NEO_22 +23,KHONG MINH MANH_23,NEO_23 +24,KHONG MINH MANH_24,NEO_24 +25,KHONG MINH MANH_25,NEO_25 +26,KHONG MINH MANH_26,NEO_26 +27,KHONG MINH MANH_27,NEO_27 +28,KHONG MINH MANH_28,NEO_28 +29,KHONG MINH MANH_29,NEO_29 +30,KHONG MINH MANH_30,NEO_30 +31,KHONG MINH MANH_31,NEO_31 +32,KHONG MINH MANH_32,NEO_32 +33,KHONG MINH MANH_33,NEO_33 +34,KHONG MINH MANH_34,NEO_34 +35,KHONG MINH MANH_35,NEO_35 +36,KHONG MINH MANH_36,NEO_36 +37,KHONG MINH MANH_37,NEO_37 +38,KHONG MINH MANH_38,NEO_38 +39,KHONG MINH MANH_39,NEO_39 +40,KHONG MINH MANH_40,NEO_40 +41,KHONG MINH MANH_41,NEO_41 +42,KHONG MINH MANH_42,NEO_42 +43,KHONG MINH MANH_43,NEO_43 +44,KHONG MINH MANH_44,NEO_44 +45,KHONG MINH MANH_45,NEO_45 +46,KHONG MINH MANH_46,NEO_46 +47,KHONG MINH MANH_47,NEO_47 +48,KHONG MINH MANH_48,NEO_48 +49,KHONG MINH MANH_49,NEO_49 +50,KHONG MINH MANH_50,NEO_50 +51,KHONG MINH MANH_51,NEO_51 +52,KHONG MINH MANH_52,NEO_52 +53,KHONG MINH MANH_53,NEO_53 +54,KHONG MINH MANH_54,NEO_54 +55,KHONG MINH MANH_55,NEO_55 +56,KHONG MINH MANH_56,NEO_56 +57,KHONG MINH MANH_57,NEO_57 +58,KHONG MINH MANH_58,NEO_58 +59,KHONG MINH MANH_59,NEO_59 +60,KHONG MINH MANH_60,NEO_60 +61,KHONG MINH MANH_61,NEO_61 +62,KHONG MINH MANH_62,NEO_62 +63,KHONG MINH MANH_63,NEO_63 +64,KHONG MINH MANH_64,NEO_64 +65,KHONG MINH MANH_65,NEO_65 +66,KHONG MINH MANH_66,NEO_66 +67,KHONG MINH MANH_67,NEO_67 +68,KHONG MINH MANH_68,NEO_68 +69,KHONG MINH MANH_69,NEO_69 +70,KHONG MINH MANH_70,NEO_70 +71,KHONG MINH MANH_71,NEO_71 +72,KHONG MINH MANH_72,NEO_72 +73,KHONG MINH MANH_73,NEO_73 +74,KHONG MINH MANH_74,NEO_74 +75,KHONG MINH MANH_75,NEO_75 +76,KHONG MINH MANH_76,NEO_76 +77,KHONG MINH MANH_77,NEO_77 +78,KHONG MINH MANH_78,NEO_78 +79,KHONG MINH MANH_79,NEO_79 +80,KHONG MINH MANH_80,NEO_80 +81,KHONG MINH MANH_81,NEO_81 +82,KHONG MINH MANH_82,NEO_82 +83,KHONG MINH MANH_83,NEO_83 +84,KHONG MINH MANH_84,NEO_84 +85,KHONG MINH MANH_85,NEO_85 +86,KHONG MINH MANH_86,NEO_86 +87,KHONG MINH MANH_87,NEO_87 +88,KHONG MINH MANH_88,NEO_88 +89,KHONG MINH MANH_89,NEO_89 +90,KHONG MINH MANH_90,NEO_90 +91,KHONG MINH MANH_91,NEO_91 +92,KHONG MINH MANH_92,NEO_92 +93,KHONG MINH MANH_93,NEO_93 +94,KHONG MINH MANH_94,NEO_94 +95,KHONG MINH MANH_95,NEO_95 +96,KHONG MINH MANH_96,NEO_96 +97,KHONG MINH MANH_97,NEO_97 +98,KHONG MINH MANH_98,NEO_98 +99,KHONG MINH MANH_99,NEO_99 +100,KHONG MINH MANH_100,NEO_100 +101,KHONG MINH MANH_101,NEO_101 +102,KHONG MINH MANH_102,NEO_102 +103,KHONG MINH MANH_103,NEO_103 +104,KHONG MINH MANH_104,NEO_104 +105,KHONG MINH MANH_105,NEO_105 +106,KHONG MINH MANH_106,NEO_106 +107,KHONG MINH MANH_107,NEO_107 +108,KHONG MINH MANH_108,NEO_108 +109,KHONG MINH MANH_109,NEO_109 +110,KHONG MINH MANH_110,NEO_110 +111,KHONG MINH MANH_111,NEO_111 +112,KHONG MINH MANH_112,NEO_112 +113,KHONG MINH MANH_113,NEO_113 +114,KHONG MINH MANH_114,NEO_114 +115,KHONG MINH MANH_115,NEO_115 +116,KHONG MINH MANH_116,NEO_116 +117,KHONG MINH MANH_117,NEO_117 +118,KHONG MINH MANH_118,NEO_118 +119,KHONG MINH MANH_119,NEO_119 +120,KHONG MINH MANH_120,NEO_120 +121,KHONG MINH MANH_121,NEO_121 +122,KHONG MINH MANH_122,NEO_122 +123,KHONG MINH MANH_123,NEO_123 +124,KHONG MINH MANH_124,NEO_124 +125,KHONG MINH MANH_125,NEO_125 +126,KHONG MINH MANH_126,NEO_126 +127,KHONG MINH MANH_127,NEO_127 +128,KHONG MINH MANH_128,NEO_128 +129,KHONG MINH MANH_129,NEO_129 +130,KHONG MINH MANH_130,NEO_130 +131,KHONG MINH MANH_131,NEO_131 +132,KHONG MINH MANH_132,NEO_132 +133,KHONG MINH MANH_133,NEO_133 +134,KHONG MINH MANH_134,NEO_134 +135,KHONG MINH MANH_135,NEO_135 +136,KHONG MINH MANH_136,NEO_136 +137,KHONG MINH MANH_137,NEO_137 +138,KHONG MINH MANH_138,NEO_138 +139,KHONG MINH MANH_139,NEO_139 +140,KHONG MINH MANH_140,NEO_140 +141,KHONG MINH MANH_141,NEO_141 +142,KHONG MINH MANH_142,NEO_142 +143,KHONG MINH MANH_143,NEO_143 +144,KHONG MINH MANH_144,NEO_144 +145,KHONG MINH MANH_145,NEO_145 +146,KHONG MINH MANH_146,NEO_146 +147,KHONG MINH MANH_147,NEO_147 +148,KHONG MINH MANH_148,NEO_148 +149,KHONG MINH MANH_149,NEO_149 +150,KHONG MINH MANH_150,NEO_150 +151,KHONG MINH MANH_151,NEO_151 +152,KHONG MINH MANH_152,NEO_152 +153,KHONG MINH MANH_153,NEO_153 +154,KHONG MINH MANH_154,NEO_154 +155,KHONG MINH MANH_155,NEO_155 +156,KHONG MINH MANH_156,NEO_156 +157,KHONG MINH MANH_157,NEO_157 +158,KHONG MINH MANH_158,NEO_158 +159,KHONG MINH MANH_159,NEO_159 +160,KHONG MINH MANH_160,NEO_160 +161,KHONG MINH MANH_161,NEO_161 +162,KHONG MINH MANH_162,NEO_162 +163,KHONG MINH MANH_163,NEO_163 +164,KHONG MINH MANH_164,NEO_164 +165,KHONG MINH MANH_165,NEO_165 +166,KHONG MINH MANH_166,NEO_166 +167,KHONG MINH MANH_167,NEO_167 +168,KHONG MINH MANH_168,NEO_168 +169,KHONG MINH MANH_169,NEO_169 +170,KHONG MINH MANH_170,NEO_170 +171,KHONG MINH MANH_171,NEO_171 +172,KHONG MINH MANH_172,NEO_172 +173,KHONG MINH MANH_173,NEO_173 +174,KHONG MINH MANH_174,NEO_174 +175,KHONG MINH MANH_175,NEO_175 +176,KHONG MINH MANH_176,NEO_176 +177,KHONG MINH MANH_177,NEO_177 +178,KHONG MINH MANH_178,NEO_178 +179,KHONG MINH MANH_179,NEO_179 +180,KHONG MINH MANH_180,NEO_180 +181,KHONG MINH MANH_181,NEO_181 +182,KHONG MINH MANH_182,NEO_182 +183,KHONG MINH MANH_183,NEO_183 +184,KHONG MINH MANH_184,NEO_184 +185,KHONG MINH MANH_185,NEO_185 +186,KHONG MINH MANH_186,NEO_186 +187,KHONG MINH MANH_187,NEO_187 +188,KHONG MINH MANH_188,NEO_188 +189,KHONG MINH MANH_189,NEO_189 +190,KHONG MINH MANH_190,NEO_190 +191,KHONG MINH MANH_191,NEO_191 +192,KHONG MINH MANH_192,NEO_192 +193,KHONG MINH MANH_193,NEO_193 +194,KHONG MINH MANH_194,NEO_194 +195,KHONG MINH MANH_195,NEO_195 +196,KHONG MINH MANH_196,NEO_196 +197,KHONG MINH MANH_197,NEO_197 +198,KHONG MINH MANH_198,NEO_198 +199,KHONG MINH MANH_199,NEO_199 +200,KHONG MINH MANH_200,NEO_200 +201,KHONG MINH MANH_201,NEO_201 +202,KHONG MINH MANH_202,NEO_202 +203,KHONG MINH MANH_203,NEO_203 +204,KHONG MINH MANH_204,NEO_204 +205,KHONG MINH MANH_205,NEO_205 +206,KHONG MINH MANH_206,NEO_206 +207,KHONG MINH MANH_207,NEO_207 +208,KHONG MINH MANH_208,NEO_208 +209,KHONG MINH MANH_209,NEO_209 +210,KHONG MINH MANH_210,NEO_210 +211,KHONG MINH MANH_211,NEO_211 +212,KHONG MINH MANH_212,NEO_212 +213,KHONG MINH MANH_213,NEO_213 +214,KHONG MINH MANH_214,NEO_214 +215,KHONG MINH MANH_215,NEO_215 +216,KHONG MINH MANH_216,NEO_216 +217,KHONG MINH MANH_217,NEO_217 +218,KHONG MINH MANH_218,NEO_218 +219,KHONG MINH MANH_219,NEO_219 +220,KHONG MINH MANH_220,NEO_220 +221,KHONG MINH MANH_221,NEO_221 +222,KHONG MINH MANH_222,NEO_222 +223,KHONG MINH MANH_223,NEO_223 +224,KHONG MINH MANH_224,NEO_224 +225,KHONG MINH MANH_225,NEO_225 +226,KHONG MINH MANH_226,NEO_226 +227,KHONG MINH MANH_227,NEO_227 +228,KHONG MINH MANH_228,NEO_228 +229,KHONG MINH MANH_229,NEO_229 +230,KHONG MINH MANH_230,NEO_230 +231,KHONG MINH MANH_231,NEO_231 +232,KHONG MINH MANH_232,NEO_232 +233,KHONG MINH MANH_233,NEO_233 +234,KHONG MINH MANH_234,NEO_234 +235,KHONG MINH MANH_235,NEO_235 +236,KHONG MINH MANH_236,NEO_236 +237,KHONG MINH MANH_237,NEO_237 +238,KHONG MINH MANH_238,NEO_238 +239,KHONG MINH MANH_239,NEO_239 +240,KHONG MINH MANH_240,NEO_240 +241,KHONG MINH MANH_241,NEO_241 +242,KHONG MINH MANH_242,NEO_242 +243,KHONG MINH MANH_243,NEO_243 +244,KHONG MINH MANH_244,NEO_244 +245,KHONG MINH MANH_245,NEO_245 +246,KHONG MINH MANH_246,NEO_246 +247,KHONG MINH MANH_247,NEO_247 +248,KHONG MINH MANH_248,NEO_248 +249,KHONG MINH MANH_249,NEO_249 +250,KHONG MINH MANH_250,NEO_250 +251,KHONG MINH MANH_251,NEO_251 +252,KHONG MINH MANH_252,NEO_252 +253,KHONG MINH MANH_253,NEO_253 +254,KHONG MINH MANH_254,NEO_254 +255,KHONG MINH MANH_255,NEO_255 +256,KHONG MINH MANH_256,NEO_256 +257,KHONG MINH MANH_257,NEO_257 +258,KHONG MINH MANH_258,NEO_258 +259,KHONG MINH MANH_259,NEO_259 +260,KHONG MINH MANH_260,NEO_260 +261,KHONG MINH MANH_261,NEO_261 +262,KHONG MINH MANH_262,NEO_262 +263,KHONG MINH MANH_263,NEO_263 +264,KHONG MINH MANH_264,NEO_264 +265,KHONG MINH MANH_265,NEO_265 +266,KHONG MINH MANH_266,NEO_266 +267,KHONG MINH MANH_267,NEO_267 +268,KHONG MINH MANH_268,NEO_268 +269,KHONG MINH MANH_269,NEO_269 +270,KHONG MINH MANH_270,NEO_270 +271,KHONG MINH MANH_271,NEO_271 +272,KHONG MINH MANH_272,NEO_272 +273,KHONG MINH MANH_273,NEO_273 +274,KHONG MINH MANH_274,NEO_274 +275,KHONG MINH MANH_275,NEO_275 +276,KHONG MINH MANH_276,NEO_276 +277,KHONG MINH MANH_277,NEO_277 +278,KHONG MINH MANH_278,NEO_278 +279,KHONG MINH MANH_279,NEO_279 +280,KHONG MINH MANH_280,NEO_280 +281,KHONG MINH MANH_281,NEO_281 +282,KHONG MINH MANH_282,NEO_282 +283,KHONG MINH MANH_283,NEO_283 +284,KHONG MINH MANH_284,NEO_284 +285,KHONG MINH MANH_285,NEO_285 +286,KHONG MINH MANH_286,NEO_286 +287,KHONG MINH MANH_287,NEO_287 +288,KHONG MINH MANH_288,NEO_288 +289,KHONG MINH MANH_289,NEO_289 +290,KHONG MINH MANH_290,NEO_290 +291,KHONG MINH MANH_291,NEO_291 +292,KHONG MINH MANH_292,NEO_292 +293,KHONG MINH MANH_293,NEO_293 +294,KHONG MINH MANH_294,NEO_294 +295,KHONG MINH MANH_295,NEO_295 +296,KHONG MINH MANH_296,NEO_296 +297,KHONG MINH MANH_297,NEO_297 +298,KHONG MINH MANH_298,NEO_298 +299,KHONG MINH MANH_299,NEO_299 +300,KHONG MINH MANH_300,NEO_300 +301,KHONG MINH MANH_301,NEO_301 +302,KHONG MINH MANH_302,NEO_302 +303,KHONG MINH MANH_303,NEO_303 +304,KHONG MINH MANH_304,NEO_304 +305,KHONG MINH MANH_305,NEO_305 +306,KHONG MINH MANH_306,NEO_306 +307,KHONG MINH MANH_307,NEO_307 +308,KHONG MINH MANH_308,NEO_308 +309,KHONG MINH MANH_309,NEO_309 +310,KHONG MINH MANH_310,NEO_310 +311,KHONG MINH MANH_311,NEO_311 +312,KHONG MINH MANH_312,NEO_312 +313,KHONG MINH MANH_313,NEO_313 +314,KHONG MINH MANH_314,NEO_314 +315,KHONG MINH MANH_315,NEO_315 +316,KHONG MINH MANH_316,NEO_316 +317,KHONG MINH MANH_317,NEO_317 +318,KHONG MINH MANH_318,NEO_318 +319,KHONG MINH MANH_319,NEO_319 +320,KHONG MINH MANH_320,NEO_320 +321,KHONG MINH MANH_321,NEO_321 +322,KHONG MINH MANH_322,NEO_322 +323,KHONG MINH MANH_323,NEO_323 +324,KHONG MINH MANH_324,NEO_324 +325,KHONG MINH MANH_325,NEO_325 +326,KHONG MINH MANH_326,NEO_326 +327,KHONG MINH MANH_327,NEO_327 +328,KHONG MINH MANH_328,NEO_328 +329,KHONG MINH MANH_329,NEO_329 +330,KHONG MINH MANH_330,NEO_330 +331,KHONG MINH MANH_331,NEO_331 +332,KHONG MINH MANH_332,NEO_332 +333,KHONG MINH MANH_333,NEO_333 +334,KHONG MINH MANH_334,NEO_334 +335,KHONG MINH MANH_335,NEO_335 +336,KHONG MINH MANH_336,NEO_336 +337,KHONG MINH MANH_337,NEO_337 +338,KHONG MINH MANH_338,NEO_338 +339,KHONG MINH MANH_339,NEO_339 +340,KHONG MINH MANH_340,NEO_340 +341,KHONG MINH MANH_341,NEO_341 +342,KHONG MINH MANH_342,NEO_342 +343,KHONG MINH MANH_343,NEO_343 +344,KHONG MINH MANH_344,NEO_344 +345,KHONG MINH MANH_345,NEO_345 +346,KHONG MINH MANH_346,NEO_346 +347,KHONG MINH MANH_347,NEO_347 +348,KHONG MINH MANH_348,NEO_348 +349,KHONG MINH MANH_349,NEO_349 +350,KHONG MINH MANH_350,NEO_350 +351,KHONG MINH MANH_351,NEO_351 +352,KHONG MINH MANH_352,NEO_352 +353,KHONG MINH MANH_353,NEO_353 +354,KHONG MINH MANH_354,NEO_354 +355,KHONG MINH MANH_355,NEO_355 +356,KHONG MINH MANH_356,NEO_356 +357,KHONG MINH MANH_357,NEO_357 +358,KHONG MINH MANH_358,NEO_358 +359,KHONG MINH MANH_359,NEO_359 +360,KHONG MINH MANH_360,NEO_360 +361,KHONG MINH MANH_361,NEO_361 +362,KHONG MINH MANH_362,NEO_362 +363,KHONG MINH MANH_363,NEO_363 +364,KHONG MINH MANH_364,NEO_364 +365,KHONG MINH MANH_365,NEO_365 +366,KHONG MINH MANH_366,NEO_366 +367,KHONG MINH MANH_367,NEO_367 +368,KHONG MINH MANH_368,NEO_368 +369,KHONG MINH MANH_369,NEO_369 +370,KHONG MINH MANH_370,NEO_370 +371,KHONG MINH MANH_371,NEO_371 +372,KHONG MINH MANH_372,NEO_372 +373,KHONG MINH MANH_373,NEO_373 +374,KHONG MINH MANH_374,NEO_374 +375,KHONG MINH MANH_375,NEO_375 +376,KHONG MINH MANH_376,NEO_376 +377,KHONG MINH MANH_377,NEO_377 +378,KHONG MINH MANH_378,NEO_378 +379,KHONG MINH MANH_379,NEO_379 +380,KHONG MINH MANH_380,NEO_380 +381,KHONG MINH MANH_381,NEO_381 +382,KHONG MINH MANH_382,NEO_382 +383,KHONG MINH MANH_383,NEO_383 +384,KHONG MINH MANH_384,NEO_384 +385,KHONG MINH MANH_385,NEO_385 +386,KHONG MINH MANH_386,NEO_386 +387,KHONG MINH MANH_387,NEO_387 +388,KHONG MINH MANH_388,NEO_388 +389,KHONG MINH MANH_389,NEO_389 +390,KHONG MINH MANH_390,NEO_390 +391,KHONG MINH MANH_391,NEO_391 +392,KHONG MINH MANH_392,NEO_392 +393,KHONG MINH MANH_393,NEO_393 +394,KHONG MINH MANH_394,NEO_394 +395,KHONG MINH MANH_395,NEO_395 +396,KHONG MINH MANH_396,NEO_396 +397,KHONG MINH MANH_397,NEO_397 +398,KHONG MINH MANH_398,NEO_398 +399,KHONG MINH MANH_399,NEO_399 +400,KHONG MINH MANH_400,NEO_400 +401,KHONG MINH MANH_401,NEO_401 +402,KHONG MINH MANH_402,NEO_402 +403,KHONG MINH MANH_403,NEO_403 +404,KHONG MINH MANH_404,NEO_404 +405,KHONG MINH MANH_405,NEO_405 +406,KHONG MINH MANH_406,NEO_406 +407,KHONG MINH MANH_407,NEO_407 +408,KHONG MINH MANH_408,NEO_408 +409,KHONG MINH MANH_409,NEO_409 +410,KHONG MINH MANH_410,NEO_410 +411,KHONG MINH MANH_411,NEO_411 +412,KHONG MINH MANH_412,NEO_412 +413,KHONG MINH MANH_413,NEO_413 +414,KHONG MINH MANH_414,NEO_414 +415,KHONG MINH MANH_415,NEO_415 +416,KHONG MINH MANH_416,NEO_416 +417,KHONG MINH MANH_417,NEO_417 +418,KHONG MINH MANH_418,NEO_418 +419,KHONG MINH MANH_419,NEO_419 +420,KHONG MINH MANH_420,NEO_420 +421,KHONG MINH MANH_421,NEO_421 +422,KHONG MINH MANH_422,NEO_422 +423,KHONG MINH MANH_423,NEO_423 +424,KHONG MINH MANH_424,NEO_424 +425,KHONG MINH MANH_425,NEO_425 +426,KHONG MINH MANH_426,NEO_426 +427,KHONG MINH MANH_427,NEO_427 +428,KHONG MINH MANH_428,NEO_428 +429,KHONG MINH MANH_429,NEO_429 +430,KHONG MINH MANH_430,NEO_430 +431,KHONG MINH MANH_431,NEO_431 +432,KHONG MINH MANH_432,NEO_432 +433,KHONG MINH MANH_433,NEO_433 +434,KHONG MINH MANH_434,NEO_434 +435,KHONG MINH MANH_435,NEO_435 +436,KHONG MINH MANH_436,NEO_436 +437,KHONG MINH MANH_437,NEO_437 +438,KHONG MINH MANH_438,NEO_438 +439,KHONG MINH MANH_439,NEO_439 +440,KHONG MINH MANH_440,NEO_440 +441,KHONG MINH MANH_441,NEO_441 +442,KHONG MINH MANH_442,NEO_442 +443,KHONG MINH MANH_443,NEO_443 +444,KHONG MINH MANH_444,NEO_444 +445,KHONG MINH MANH_445,NEO_445 +446,KHONG MINH MANH_446,NEO_446 +447,KHONG MINH MANH_447,NEO_447 +448,KHONG MINH MANH_448,NEO_448 +449,KHONG MINH MANH_449,NEO_449 +450,KHONG MINH MANH_450,NEO_450 +451,KHONG MINH MANH_451,NEO_451 +452,KHONG MINH MANH_452,NEO_452 +453,KHONG MINH MANH_453,NEO_453 +454,KHONG MINH MANH_454,NEO_454 +455,KHONG MINH MANH_455,NEO_455 +456,KHONG MINH MANH_456,NEO_456 +457,KHONG MINH MANH_457,NEO_457 +458,KHONG MINH MANH_458,NEO_458 +459,KHONG MINH MANH_459,NEO_459 +460,KHONG MINH MANH_460,NEO_460 +461,KHONG MINH MANH_461,NEO_461 +462,KHONG MINH MANH_462,NEO_462 +463,KHONG MINH MANH_463,NEO_463 +464,KHONG MINH MANH_464,NEO_464 +465,KHONG MINH MANH_465,NEO_465 +466,KHONG MINH MANH_466,NEO_466 +467,KHONG MINH MANH_467,NEO_467 +468,KHONG MINH MANH_468,NEO_468 +469,KHONG MINH MANH_469,NEO_469 +470,KHONG MINH MANH_470,NEO_470 +471,KHONG MINH MANH_471,NEO_471 +472,KHONG MINH MANH_472,NEO_472 +473,KHONG MINH MANH_473,NEO_473 +474,KHONG MINH MANH_474,NEO_474 +475,KHONG MINH MANH_475,NEO_475 +476,KHONG MINH MANH_476,NEO_476 +477,KHONG MINH MANH_477,NEO_477 +478,KHONG MINH MANH_478,NEO_478 +479,KHONG MINH MANH_479,NEO_479 +480,KHONG MINH MANH_480,NEO_480 +481,KHONG MINH MANH_481,NEO_481 +482,KHONG MINH MANH_482,NEO_482 +483,KHONG MINH MANH_483,NEO_483 +484,KHONG MINH MANH_484,NEO_484 +485,KHONG MINH MANH_485,NEO_485 +486,KHONG MINH MANH_486,NEO_486 +487,KHONG MINH MANH_487,NEO_487 +488,KHONG MINH MANH_488,NEO_488 +489,KHONG MINH MANH_489,NEO_489 +490,KHONG MINH MANH_490,NEO_490 +491,KHONG MINH MANH_491,NEO_491 +492,KHONG MINH MANH_492,NEO_492 +493,KHONG MINH MANH_493,NEO_493 +494,KHONG MINH MANH_494,NEO_494 +495,KHONG MINH MANH_495,NEO_495 +496,KHONG MINH MANH_496,NEO_496 +497,KHONG MINH MANH_497,NEO_497 +498,KHONG MINH MANH_498,NEO_498 +499,KHONG MINH MANH_499,NEO_499 +500,KHONG MINH MANH_500,NEO_500 +501,KHONG MINH MANH_501,NEO_501 +502,KHONG MINH MANH_502,NEO_502 +503,KHONG MINH MANH_503,NEO_503 +504,KHONG MINH MANH_504,NEO_504 +505,KHONG MINH MANH_505,NEO_505 +506,KHONG MINH MANH_506,NEO_506 +507,KHONG MINH MANH_507,NEO_507 +508,KHONG MINH MANH_508,NEO_508 +509,KHONG MINH MANH_509,NEO_509 +510,KHONG MINH MANH_510,NEO_510 +511,KHONG MINH MANH_511,NEO_511 +512,KHONG MINH MANH_512,NEO_512 +513,KHONG MINH MANH_513,NEO_513 +514,KHONG MINH MANH_514,NEO_514 +515,KHONG MINH MANH_515,NEO_515 +516,KHONG MINH MANH_516,NEO_516 +517,KHONG MINH MANH_517,NEO_517 +518,KHONG MINH MANH_518,NEO_518 +519,KHONG MINH MANH_519,NEO_519 +520,KHONG MINH MANH_520,NEO_520 +521,KHONG MINH MANH_521,NEO_521 +522,KHONG MINH MANH_522,NEO_522 +523,KHONG MINH MANH_523,NEO_523 +524,KHONG MINH MANH_524,NEO_524 +525,KHONG MINH MANH_525,NEO_525 +526,KHONG MINH MANH_526,NEO_526 +527,KHONG MINH MANH_527,NEO_527 +528,KHONG MINH MANH_528,NEO_528 +529,KHONG MINH MANH_529,NEO_529 +530,KHONG MINH MANH_530,NEO_530 +531,KHONG MINH MANH_531,NEO_531 +532,KHONG MINH MANH_532,NEO_532 +533,KHONG MINH MANH_533,NEO_533 +534,KHONG MINH MANH_534,NEO_534 +535,KHONG MINH MANH_535,NEO_535 +536,KHONG MINH MANH_536,NEO_536 +537,KHONG MINH MANH_537,NEO_537 +538,KHONG MINH MANH_538,NEO_538 +539,KHONG MINH MANH_539,NEO_539 +540,KHONG MINH MANH_540,NEO_540 +541,KHONG MINH MANH_541,NEO_541 +542,KHONG MINH MANH_542,NEO_542 +543,KHONG MINH MANH_543,NEO_543 +544,KHONG MINH MANH_544,NEO_544 +545,KHONG MINH MANH_545,NEO_545 +546,KHONG MINH MANH_546,NEO_546 +547,KHONG MINH MANH_547,NEO_547 +548,KHONG MINH MANH_548,NEO_548 +549,KHONG MINH MANH_549,NEO_549 +550,KHONG MINH MANH_550,NEO_550 +551,KHONG MINH MANH_551,NEO_551 +552,KHONG MINH MANH_552,NEO_552 +553,KHONG MINH MANH_553,NEO_553 +554,KHONG MINH MANH_554,NEO_554 +555,KHONG MINH MANH_555,NEO_555 +556,KHONG MINH MANH_556,NEO_556 +557,KHONG MINH MANH_557,NEO_557 +558,KHONG MINH MANH_558,NEO_558 +559,KHONG MINH MANH_559,NEO_559 +560,KHONG MINH MANH_560,NEO_560 +561,KHONG MINH MANH_561,NEO_561 +562,KHONG MINH MANH_562,NEO_562 +563,KHONG MINH MANH_563,NEO_563 +564,KHONG MINH MANH_564,NEO_564 +565,KHONG MINH MANH_565,NEO_565 +566,KHONG MINH MANH_566,NEO_566 +567,KHONG MINH MANH_567,NEO_567 +568,KHONG MINH MANH_568,NEO_568 +569,KHONG MINH MANH_569,NEO_569 +570,KHONG MINH MANH_570,NEO_570 +571,KHONG MINH MANH_571,NEO_571 +572,KHONG MINH MANH_572,NEO_572 +573,KHONG MINH MANH_573,NEO_573 +574,KHONG MINH MANH_574,NEO_574 +575,KHONG MINH MANH_575,NEO_575 +576,KHONG MINH MANH_576,NEO_576 +577,KHONG MINH MANH_577,NEO_577 +578,KHONG MINH MANH_578,NEO_578 +579,KHONG MINH MANH_579,NEO_579 +580,KHONG MINH MANH_580,NEO_580 +581,KHONG MINH MANH_581,NEO_581 +582,KHONG MINH MANH_582,NEO_582 +583,KHONG MINH MANH_583,NEO_583 +584,KHONG MINH MANH_584,NEO_584 +585,KHONG MINH MANH_585,NEO_585 +586,KHONG MINH MANH_586,NEO_586 +587,KHONG MINH MANH_587,NEO_587 +588,KHONG MINH MANH_588,NEO_588 +589,KHONG MINH MANH_589,NEO_589 +590,KHONG MINH MANH_590,NEO_590 +591,KHONG MINH MANH_591,NEO_591 +592,KHONG MINH MANH_592,NEO_592 +593,KHONG MINH MANH_593,NEO_593 +594,KHONG MINH MANH_594,NEO_594 +595,KHONG MINH MANH_595,NEO_595 +596,KHONG MINH MANH_596,NEO_596 +597,KHONG MINH MANH_597,NEO_597 +598,KHONG MINH MANH_598,NEO_598 +599,KHONG MINH MANH_599,NEO_599 +600,KHONG MINH MANH_600,NEO_600 +601,KHONG MINH MANH_601,NEO_601 +602,KHONG MINH MANH_602,NEO_602 +603,KHONG MINH MANH_603,NEO_603 +604,KHONG MINH MANH_604,NEO_604 +605,KHONG MINH MANH_605,NEO_605 +606,KHONG MINH MANH_606,NEO_606 +607,KHONG MINH MANH_607,NEO_607 +608,KHONG MINH MANH_608,NEO_608 +609,KHONG MINH MANH_609,NEO_609 +610,KHONG MINH MANH_610,NEO_610 +611,KHONG MINH MANH_611,NEO_611 +612,KHONG MINH MANH_612,NEO_612 +613,KHONG MINH MANH_613,NEO_613 +614,KHONG MINH MANH_614,NEO_614 +615,KHONG MINH MANH_615,NEO_615 +616,KHONG MINH MANH_616,NEO_616 +617,KHONG MINH MANH_617,NEO_617 +618,KHONG MINH MANH_618,NEO_618 +619,KHONG MINH MANH_619,NEO_619 +620,KHONG MINH MANH_620,NEO_620 +621,KHONG MINH MANH_621,NEO_621 +622,KHONG MINH MANH_622,NEO_622 +623,KHONG MINH MANH_623,NEO_623 +624,KHONG MINH MANH_624,NEO_624 +625,KHONG MINH MANH_625,NEO_625 +626,KHONG MINH MANH_626,NEO_626 +627,KHONG MINH MANH_627,NEO_627 +628,KHONG MINH MANH_628,NEO_628 +629,KHONG MINH MANH_629,NEO_629 +630,KHONG MINH MANH_630,NEO_630 +631,KHONG MINH MANH_631,NEO_631 +632,KHONG MINH MANH_632,NEO_632 +633,KHONG MINH MANH_633,NEO_633 +634,KHONG MINH MANH_634,NEO_634 +635,KHONG MINH MANH_635,NEO_635 +636,KHONG MINH MANH_636,NEO_636 +637,KHONG MINH MANH_637,NEO_637 +638,KHONG MINH MANH_638,NEO_638 +639,KHONG MINH MANH_639,NEO_639 +640,KHONG MINH MANH_640,NEO_640 +641,KHONG MINH MANH_641,NEO_641 +642,KHONG MINH MANH_642,NEO_642 +643,KHONG MINH MANH_643,NEO_643 +644,KHONG MINH MANH_644,NEO_644 +645,KHONG MINH MANH_645,NEO_645 +646,KHONG MINH MANH_646,NEO_646 +647,KHONG MINH MANH_647,NEO_647 +648,KHONG MINH MANH_648,NEO_648 +649,KHONG MINH MANH_649,NEO_649 +650,KHONG MINH MANH_650,NEO_650 +651,KHONG MINH MANH_651,NEO_651 +652,KHONG MINH MANH_652,NEO_652 +653,KHONG MINH MANH_653,NEO_653 +654,KHONG MINH MANH_654,NEO_654 +655,KHONG MINH MANH_655,NEO_655 +656,KHONG MINH MANH_656,NEO_656 +657,KHONG MINH MANH_657,NEO_657 +658,KHONG MINH MANH_658,NEO_658 +659,KHONG MINH MANH_659,NEO_659 +660,KHONG MINH MANH_660,NEO_660 +661,KHONG MINH MANH_661,NEO_661 +662,KHONG MINH MANH_662,NEO_662 +663,KHONG MINH MANH_663,NEO_663 +664,KHONG MINH MANH_664,NEO_664 +665,KHONG MINH MANH_665,NEO_665 +666,KHONG MINH MANH_666,NEO_666 +667,KHONG MINH MANH_667,NEO_667 +668,KHONG MINH MANH_668,NEO_668 +669,KHONG MINH MANH_669,NEO_669 +670,KHONG MINH MANH_670,NEO_670 +671,KHONG MINH MANH_671,NEO_671 +672,KHONG MINH MANH_672,NEO_672 +673,KHONG MINH MANH_673,NEO_673 +674,KHONG MINH MANH_674,NEO_674 +675,KHONG MINH MANH_675,NEO_675 +676,KHONG MINH MANH_676,NEO_676 +677,KHONG MINH MANH_677,NEO_677 +678,KHONG MINH MANH_678,NEO_678 +679,KHONG MINH MANH_679,NEO_679 +680,KHONG MINH MANH_680,NEO_680 +681,KHONG MINH MANH_681,NEO_681 +682,KHONG MINH MANH_682,NEO_682 +683,KHONG MINH MANH_683,NEO_683 +684,KHONG MINH MANH_684,NEO_684 +685,KHONG MINH MANH_685,NEO_685 +686,KHONG MINH MANH_686,NEO_686 +687,KHONG MINH MANH_687,NEO_687 +688,KHONG MINH MANH_688,NEO_688 +689,KHONG MINH MANH_689,NEO_689 +690,KHONG MINH MANH_690,NEO_690 +691,KHONG MINH MANH_691,NEO_691 +692,KHONG MINH MANH_692,NEO_692 +693,KHONG MINH MANH_693,NEO_693 +694,KHONG MINH MANH_694,NEO_694 +695,KHONG MINH MANH_695,NEO_695 +696,KHONG MINH MANH_696,NEO_696 +697,KHONG MINH MANH_697,NEO_697 +698,KHONG MINH MANH_698,NEO_698 +699,KHONG MINH MANH_699,NEO_699 +700,KHONG MINH MANH_700,NEO_700 +701,KHONG MINH MANH_701,NEO_701 +702,KHONG MINH MANH_702,NEO_702 +703,KHONG MINH MANH_703,NEO_703 +704,KHONG MINH MANH_704,NEO_704 +705,KHONG MINH MANH_705,NEO_705 +706,KHONG MINH MANH_706,NEO_706 +707,KHONG MINH MANH_707,NEO_707 +708,KHONG MINH MANH_708,NEO_708 +709,KHONG MINH MANH_709,NEO_709 +710,KHONG MINH MANH_710,NEO_710 +711,KHONG MINH MANH_711,NEO_711 +712,KHONG MINH MANH_712,NEO_712 +713,KHONG MINH MANH_713,NEO_713 +714,KHONG MINH MANH_714,NEO_714 +715,KHONG MINH MANH_715,NEO_715 +716,KHONG MINH MANH_716,NEO_716 +717,KHONG MINH MANH_717,NEO_717 +718,KHONG MINH MANH_718,NEO_718 +719,KHONG MINH MANH_719,NEO_719 +720,KHONG MINH MANH_720,NEO_720 +721,KHONG MINH MANH_721,NEO_721 +722,KHONG MINH MANH_722,NEO_722 +723,KHONG MINH MANH_723,NEO_723 +724,KHONG MINH MANH_724,NEO_724 +725,KHONG MINH MANH_725,NEO_725 +726,KHONG MINH MANH_726,NEO_726 +727,KHONG MINH MANH_727,NEO_727 +728,KHONG MINH MANH_728,NEO_728 +729,KHONG MINH MANH_729,NEO_729 +730,KHONG MINH MANH_730,NEO_730 +731,KHONG MINH MANH_731,NEO_731 +732,KHONG MINH MANH_732,NEO_732 +733,KHONG MINH MANH_733,NEO_733 +734,KHONG MINH MANH_734,NEO_734 +735,KHONG MINH MANH_735,NEO_735 +736,KHONG MINH MANH_736,NEO_736 +737,KHONG MINH MANH_737,NEO_737 +738,KHONG MINH MANH_738,NEO_738 +739,KHONG MINH MANH_739,NEO_739 +740,KHONG MINH MANH_740,NEO_740 +741,KHONG MINH MANH_741,NEO_741 +742,KHONG MINH MANH_742,NEO_742 +743,KHONG MINH MANH_743,NEO_743 +744,KHONG MINH MANH_744,NEO_744 +745,KHONG MINH MANH_745,NEO_745 +746,KHONG MINH MANH_746,NEO_746 +747,KHONG MINH MANH_747,NEO_747 +748,KHONG MINH MANH_748,NEO_748 +749,KHONG MINH MANH_749,NEO_749 +750,KHONG MINH MANH_750,NEO_750 +751,KHONG MINH MANH_751,NEO_751 +752,KHONG MINH MANH_752,NEO_752 +753,KHONG MINH MANH_753,NEO_753 +754,KHONG MINH MANH_754,NEO_754 +755,KHONG MINH MANH_755,NEO_755 +756,KHONG MINH MANH_756,NEO_756 +757,KHONG MINH MANH_757,NEO_757 +758,KHONG MINH MANH_758,NEO_758 +759,KHONG MINH MANH_759,NEO_759 +760,KHONG MINH MANH_760,NEO_760 +761,KHONG MINH MANH_761,NEO_761 +762,KHONG MINH MANH_762,NEO_762 +763,KHONG MINH MANH_763,NEO_763 +764,KHONG MINH MANH_764,NEO_764 +765,KHONG MINH MANH_765,NEO_765 +766,KHONG MINH MANH_766,NEO_766 +767,KHONG MINH MANH_767,NEO_767 +768,KHONG MINH MANH_768,NEO_768 +769,KHONG MINH MANH_769,NEO_769 +770,KHONG MINH MANH_770,NEO_770 +771,KHONG MINH MANH_771,NEO_771 +772,KHONG MINH MANH_772,NEO_772 +773,KHONG MINH MANH_773,NEO_773 +774,KHONG MINH MANH_774,NEO_774 +775,KHONG MINH MANH_775,NEO_775 +776,KHONG MINH MANH_776,NEO_776 +777,KHONG MINH MANH_777,NEO_777 +778,KHONG MINH MANH_778,NEO_778 +779,KHONG MINH MANH_779,NEO_779 +780,KHONG MINH MANH_780,NEO_780 +781,KHONG MINH MANH_781,NEO_781 +782,KHONG MINH MANH_782,NEO_782 +783,KHONG MINH MANH_783,NEO_783 +784,KHONG MINH MANH_784,NEO_784 +785,KHONG MINH MANH_785,NEO_785 +786,KHONG MINH MANH_786,NEO_786 +787,KHONG MINH MANH_787,NEO_787 +788,KHONG MINH MANH_788,NEO_788 +789,KHONG MINH MANH_789,NEO_789 +790,KHONG MINH MANH_790,NEO_790 +791,KHONG MINH MANH_791,NEO_791 +792,KHONG MINH MANH_792,NEO_792 +793,KHONG MINH MANH_793,NEO_793 +794,KHONG MINH MANH_794,NEO_794 +795,KHONG MINH MANH_795,NEO_795 +796,KHONG MINH MANH_796,NEO_796 +797,KHONG MINH MANH_797,NEO_797 +798,KHONG MINH MANH_798,NEO_798 +799,KHONG MINH MANH_799,NEO_799 +800,KHONG MINH MANH_800,NEO_800 +801,KHONG MINH MANH_801,NEO_801 +802,KHONG MINH MANH_802,NEO_802 +803,KHONG MINH MANH_803,NEO_803 +804,KHONG MINH MANH_804,NEO_804 +805,KHONG MINH MANH_805,NEO_805 +806,KHONG MINH MANH_806,NEO_806 +807,KHONG MINH MANH_807,NEO_807 +808,KHONG MINH MANH_808,NEO_808 +809,KHONG MINH MANH_809,NEO_809 +810,KHONG MINH MANH_810,NEO_810 +811,KHONG MINH MANH_811,NEO_811 +812,KHONG MINH MANH_812,NEO_812 +813,KHONG MINH MANH_813,NEO_813 +814,KHONG MINH MANH_814,NEO_814 +815,KHONG MINH MANH_815,NEO_815 +816,KHONG MINH MANH_816,NEO_816 +817,KHONG MINH MANH_817,NEO_817 +818,KHONG MINH MANH_818,NEO_818 +819,KHONG MINH MANH_819,NEO_819 +820,KHONG MINH MANH_820,NEO_820 +821,KHONG MINH MANH_821,NEO_821 +822,KHONG MINH MANH_822,NEO_822 +823,KHONG MINH MANH_823,NEO_823 +824,KHONG MINH MANH_824,NEO_824 +825,KHONG MINH MANH_825,NEO_825 +826,KHONG MINH MANH_826,NEO_826 +827,KHONG MINH MANH_827,NEO_827 +828,KHONG MINH MANH_828,NEO_828 +829,KHONG MINH MANH_829,NEO_829 +830,KHONG MINH MANH_830,NEO_830 +831,KHONG MINH MANH_831,NEO_831 +832,KHONG MINH MANH_832,NEO_832 +833,KHONG MINH MANH_833,NEO_833 +834,KHONG MINH MANH_834,NEO_834 +835,KHONG MINH MANH_835,NEO_835 +836,KHONG MINH MANH_836,NEO_836 +837,KHONG MINH MANH_837,NEO_837 +838,KHONG MINH MANH_838,NEO_838 +839,KHONG MINH MANH_839,NEO_839 +840,KHONG MINH MANH_840,NEO_840 +841,KHONG MINH MANH_841,NEO_841 +842,KHONG MINH MANH_842,NEO_842 +843,KHONG MINH MANH_843,NEO_843 +844,KHONG MINH MANH_844,NEO_844 +845,KHONG MINH MANH_845,NEO_845 +846,KHONG MINH MANH_846,NEO_846 +847,KHONG MINH MANH_847,NEO_847 +848,KHONG MINH MANH_848,NEO_848 +849,KHONG MINH MANH_849,NEO_849 +850,KHONG MINH MANH_850,NEO_850 +851,KHONG MINH MANH_851,NEO_851 +852,KHONG MINH MANH_852,NEO_852 +853,KHONG MINH MANH_853,NEO_853 +854,KHONG MINH MANH_854,NEO_854 +855,KHONG MINH MANH_855,NEO_855 +856,KHONG MINH MANH_856,NEO_856 +857,KHONG MINH MANH_857,NEO_857 +858,KHONG MINH MANH_858,NEO_858 +859,KHONG MINH MANH_859,NEO_859 +860,KHONG MINH MANH_860,NEO_860 +861,KHONG MINH MANH_861,NEO_861 +862,KHONG MINH MANH_862,NEO_862 +863,KHONG MINH MANH_863,NEO_863 +864,KHONG MINH MANH_864,NEO_864 +865,KHONG MINH MANH_865,NEO_865 +866,KHONG MINH MANH_866,NEO_866 +867,KHONG MINH MANH_867,NEO_867 +868,KHONG MINH MANH_868,NEO_868 +869,KHONG MINH MANH_869,NEO_869 +870,KHONG MINH MANH_870,NEO_870 +871,KHONG MINH MANH_871,NEO_871 +872,KHONG MINH MANH_872,NEO_872 +873,KHONG MINH MANH_873,NEO_873 +874,KHONG MINH MANH_874,NEO_874 +875,KHONG MINH MANH_875,NEO_875 +876,KHONG MINH MANH_876,NEO_876 +877,KHONG MINH MANH_877,NEO_877 +878,KHONG MINH MANH_878,NEO_878 +879,KHONG MINH MANH_879,NEO_879 +880,KHONG MINH MANH_880,NEO_880 +881,KHONG MINH MANH_881,NEO_881 +882,KHONG MINH MANH_882,NEO_882 +883,KHONG MINH MANH_883,NEO_883 +884,KHONG MINH MANH_884,NEO_884 +885,KHONG MINH MANH_885,NEO_885 +886,KHONG MINH MANH_886,NEO_886 +887,KHONG MINH MANH_887,NEO_887 +888,KHONG MINH MANH_888,NEO_888 +889,KHONG MINH MANH_889,NEO_889 +890,KHONG MINH MANH_890,NEO_890 +891,KHONG MINH MANH_891,NEO_891 +892,KHONG MINH MANH_892,NEO_892 +893,KHONG MINH MANH_893,NEO_893 +894,KHONG MINH MANH_894,NEO_894 +895,KHONG MINH MANH_895,NEO_895 +896,KHONG MINH MANH_896,NEO_896 +897,KHONG MINH MANH_897,NEO_897 +898,KHONG MINH MANH_898,NEO_898 +899,KHONG MINH MANH_899,NEO_899 +900,KHONG MINH MANH_900,NEO_900 +901,KHONG MINH MANH_901,NEO_901 +902,KHONG MINH MANH_902,NEO_902 +903,KHONG MINH MANH_903,NEO_903 +904,KHONG MINH MANH_904,NEO_904 +905,KHONG MINH MANH_905,NEO_905 +906,KHONG MINH MANH_906,NEO_906 +907,KHONG MINH MANH_907,NEO_907 +908,KHONG MINH MANH_908,NEO_908 +909,KHONG MINH MANH_909,NEO_909 +910,KHONG MINH MANH_910,NEO_910 +911,KHONG MINH MANH_911,NEO_911 +912,KHONG MINH MANH_912,NEO_912 +913,KHONG MINH MANH_913,NEO_913 +914,KHONG MINH MANH_914,NEO_914 +915,KHONG MINH MANH_915,NEO_915 +916,KHONG MINH MANH_916,NEO_916 +917,KHONG MINH MANH_917,NEO_917 +918,KHONG MINH MANH_918,NEO_918 +919,KHONG MINH MANH_919,NEO_919 +920,KHONG MINH MANH_920,NEO_920 +921,KHONG MINH MANH_921,NEO_921 +922,KHONG MINH MANH_922,NEO_922 +923,KHONG MINH MANH_923,NEO_923 +924,KHONG MINH MANH_924,NEO_924 +925,KHONG MINH MANH_925,NEO_925 +926,KHONG MINH MANH_926,NEO_926 +927,KHONG MINH MANH_927,NEO_927 +928,KHONG MINH MANH_928,NEO_928 +929,KHONG MINH MANH_929,NEO_929 +930,KHONG MINH MANH_930,NEO_930 +931,KHONG MINH MANH_931,NEO_931 +932,KHONG MINH MANH_932,NEO_932 +933,KHONG MINH MANH_933,NEO_933 +934,KHONG MINH MANH_934,NEO_934 +935,KHONG MINH MANH_935,NEO_935 +936,KHONG MINH MANH_936,NEO_936 +937,KHONG MINH MANH_937,NEO_937 +938,KHONG MINH MANH_938,NEO_938 +939,KHONG MINH MANH_939,NEO_939 +940,KHONG MINH MANH_940,NEO_940 +941,KHONG MINH MANH_941,NEO_941 +942,KHONG MINH MANH_942,NEO_942 +943,KHONG MINH MANH_943,NEO_943 +944,KHONG MINH MANH_944,NEO_944 +945,KHONG MINH MANH_945,NEO_945 +946,KHONG MINH MANH_946,NEO_946 +947,KHONG MINH MANH_947,NEO_947 +948,KHONG MINH MANH_948,NEO_948 +949,KHONG MINH MANH_949,NEO_949 +950,KHONG MINH MANH_950,NEO_950 +951,KHONG MINH MANH_951,NEO_951 +952,KHONG MINH MANH_952,NEO_952 +953,KHONG MINH MANH_953,NEO_953 +954,KHONG MINH MANH_954,NEO_954 +955,KHONG MINH MANH_955,NEO_955 +956,KHONG MINH MANH_956,NEO_956 +957,KHONG MINH MANH_957,NEO_957 +958,KHONG MINH MANH_958,NEO_958 +959,KHONG MINH MANH_959,NEO_959 +960,KHONG MINH MANH_960,NEO_960 +961,KHONG MINH MANH_961,NEO_961 +962,KHONG MINH MANH_962,NEO_962 +963,KHONG MINH MANH_963,NEO_963 +964,KHONG MINH MANH_964,NEO_964 +965,KHONG MINH MANH_965,NEO_965 +966,KHONG MINH MANH_966,NEO_966 +967,KHONG MINH MANH_967,NEO_967 +968,KHONG MINH MANH_968,NEO_968 +969,KHONG MINH MANH_969,NEO_969 +970,KHONG MINH MANH_970,NEO_970 +971,KHONG MINH MANH_971,NEO_971 +972,KHONG MINH MANH_972,NEO_972 +973,KHONG MINH MANH_973,NEO_973 +974,KHONG MINH MANH_974,NEO_974 +975,KHONG MINH MANH_975,NEO_975 +976,KHONG MINH MANH_976,NEO_976 +977,KHONG MINH MANH_977,NEO_977 +978,KHONG MINH MANH_978,NEO_978 +979,KHONG MINH MANH_979,NEO_979 +980,KHONG MINH MANH_980,NEO_980 +981,KHONG MINH MANH_981,NEO_981 +982,KHONG MINH MANH_982,NEO_982 +983,KHONG MINH MANH_983,NEO_983 +984,KHONG MINH MANH_984,NEO_984 +985,KHONG MINH MANH_985,NEO_985 +986,KHONG MINH MANH_986,NEO_986 +987,KHONG MINH MANH_987,NEO_987 +988,KHONG MINH MANH_988,NEO_988 +989,KHONG MINH MANH_989,NEO_989 +990,KHONG MINH MANH_990,NEO_990 +991,KHONG MINH MANH_991,NEO_991 +992,KHONG MINH MANH_992,NEO_992 +993,KHONG MINH MANH_993,NEO_993 +994,KHONG MINH MANH_994,NEO_994 +995,KHONG MINH MANH_995,NEO_995 +996,KHONG MINH MANH_996,NEO_996 +997,KHONG MINH MANH_997,NEO_997 +998,KHONG MINH MANH_998,NEO_998 +999,KHONG MINH MANH_999,NEO_999 +1000,KHONG MINH MANH_1000,NEO_1000 +1001,KHONG MINH MANH_1001,NEO_1001 +1002,KHONG MINH MANH_1002,NEO_1002 +1003,KHONG MINH MANH_1003,NEO_1003 +1004,KHONG MINH MANH_1004,NEO_1004 +1005,KHONG MINH MANH_1005,NEO_1005 +1006,KHONG MINH MANH_1006,NEO_1006 +1007,KHONG MINH MANH_1007,NEO_1007 +1008,KHONG MINH MANH_1008,NEO_1008 +1009,KHONG MINH MANH_1009,NEO_1009 +1010,KHONG MINH MANH_1010,NEO_1010 +1011,KHONG MINH MANH_1011,NEO_1011 +1012,KHONG MINH MANH_1012,NEO_1012 +1013,KHONG MINH MANH_1013,NEO_1013 +1014,KHONG MINH MANH_1014,NEO_1014 +1015,KHONG MINH MANH_1015,NEO_1015 +1016,KHONG MINH MANH_1016,NEO_1016 +1017,KHONG MINH MANH_1017,NEO_1017 +1018,KHONG MINH MANH_1018,NEO_1018 +1019,KHONG MINH MANH_1019,NEO_1019 +1020,KHONG MINH MANH_1020,NEO_1020 +1021,KHONG MINH MANH_1021,NEO_1021 +1022,KHONG MINH MANH_1022,NEO_1022 +1023,KHONG MINH MANH_1023,NEO_1023 +1024,KHONG MINH MANH_1024,NEO_1024 +1025,KHONG MINH MANH_1025,NEO_1025 +1026,KHONG MINH MANH_1026,NEO_1026 +1027,KHONG MINH MANH_1027,NEO_1027 +1028,KHONG MINH MANH_1028,NEO_1028 +1029,KHONG MINH MANH_1029,NEO_1029 +1030,KHONG MINH MANH_1030,NEO_1030 +1031,KHONG MINH MANH_1031,NEO_1031 +1032,KHONG MINH MANH_1032,NEO_1032 +1033,KHONG MINH MANH_1033,NEO_1033 +1034,KHONG MINH MANH_1034,NEO_1034 +1035,KHONG MINH MANH_1035,NEO_1035 +1036,KHONG MINH MANH_1036,NEO_1036 +1037,KHONG MINH MANH_1037,NEO_1037 +1038,KHONG MINH MANH_1038,NEO_1038 +1039,KHONG MINH MANH_1039,NEO_1039 +1040,KHONG MINH MANH_1040,NEO_1040 +1041,KHONG MINH MANH_1041,NEO_1041 +1042,KHONG MINH MANH_1042,NEO_1042 +1043,KHONG MINH MANH_1043,NEO_1043 +1044,KHONG MINH MANH_1044,NEO_1044 +1045,KHONG MINH MANH_1045,NEO_1045 +1046,KHONG MINH MANH_1046,NEO_1046 +1047,KHONG MINH MANH_1047,NEO_1047 +1048,KHONG MINH MANH_1048,NEO_1048 +1049,KHONG MINH MANH_1049,NEO_1049 +1050,KHONG MINH MANH_1050,NEO_1050 +1051,KHONG MINH MANH_1051,NEO_1051 +1052,KHONG MINH MANH_1052,NEO_1052 +1053,KHONG MINH MANH_1053,NEO_1053 +1054,KHONG MINH MANH_1054,NEO_1054 +1055,KHONG MINH MANH_1055,NEO_1055 +1056,KHONG MINH MANH_1056,NEO_1056 +1057,KHONG MINH MANH_1057,NEO_1057 +1058,KHONG MINH MANH_1058,NEO_1058 +1059,KHONG MINH MANH_1059,NEO_1059 +1060,KHONG MINH MANH_1060,NEO_1060 +1061,KHONG MINH MANH_1061,NEO_1061 +1062,KHONG MINH MANH_1062,NEO_1062 +1063,KHONG MINH MANH_1063,NEO_1063 +1064,KHONG MINH MANH_1064,NEO_1064 +1065,KHONG MINH MANH_1065,NEO_1065 +1066,KHONG MINH MANH_1066,NEO_1066 +1067,KHONG MINH MANH_1067,NEO_1067 +1068,KHONG MINH MANH_1068,NEO_1068 +1069,KHONG MINH MANH_1069,NEO_1069 +1070,KHONG MINH MANH_1070,NEO_1070 +1071,KHONG MINH MANH_1071,NEO_1071 +1072,KHONG MINH MANH_1072,NEO_1072 +1073,KHONG MINH MANH_1073,NEO_1073 +1074,KHONG MINH MANH_1074,NEO_1074 +1075,KHONG MINH MANH_1075,NEO_1075 +1076,KHONG MINH MANH_1076,NEO_1076 +1077,KHONG MINH MANH_1077,NEO_1077 +1078,KHONG MINH MANH_1078,NEO_1078 +1079,KHONG MINH MANH_1079,NEO_1079 +1080,KHONG MINH MANH_1080,NEO_1080 +1081,KHONG MINH MANH_1081,NEO_1081 +1082,KHONG MINH MANH_1082,NEO_1082 +1083,KHONG MINH MANH_1083,NEO_1083 +1084,KHONG MINH MANH_1084,NEO_1084 +1085,KHONG MINH MANH_1085,NEO_1085 +1086,KHONG MINH MANH_1086,NEO_1086 +1087,KHONG MINH MANH_1087,NEO_1087 +1088,KHONG MINH MANH_1088,NEO_1088 +1089,KHONG MINH MANH_1089,NEO_1089 +1090,KHONG MINH MANH_1090,NEO_1090 +1091,KHONG MINH MANH_1091,NEO_1091 +1092,KHONG MINH MANH_1092,NEO_1092 +1093,KHONG MINH MANH_1093,NEO_1093 +1094,KHONG MINH MANH_1094,NEO_1094 +1095,KHONG MINH MANH_1095,NEO_1095 +1096,KHONG MINH MANH_1096,NEO_1096 +1097,KHONG MINH MANH_1097,NEO_1097 +1098,KHONG MINH MANH_1098,NEO_1098 +1099,KHONG MINH MANH_1099,NEO_1099 +1100,KHONG MINH MANH_1100,NEO_1100 +1101,KHONG MINH MANH_1101,NEO_1101 +1102,KHONG MINH MANH_1102,NEO_1102 +1103,KHONG MINH MANH_1103,NEO_1103 +1104,KHONG MINH MANH_1104,NEO_1104 +1105,KHONG MINH MANH_1105,NEO_1105 +1106,KHONG MINH MANH_1106,NEO_1106 +1107,KHONG MINH MANH_1107,NEO_1107 +1108,KHONG MINH MANH_1108,NEO_1108 +1109,KHONG MINH MANH_1109,NEO_1109 +1110,KHONG MINH MANH_1110,NEO_1110 +1111,KHONG MINH MANH_1111,NEO_1111 +1112,KHONG MINH MANH_1112,NEO_1112 +1113,KHONG MINH MANH_1113,NEO_1113 +1114,KHONG MINH MANH_1114,NEO_1114 +1115,KHONG MINH MANH_1115,NEO_1115 +1116,KHONG MINH MANH_1116,NEO_1116 +1117,KHONG MINH MANH_1117,NEO_1117 +1118,KHONG MINH MANH_1118,NEO_1118 +1119,KHONG MINH MANH_1119,NEO_1119 +1120,KHONG MINH MANH_1120,NEO_1120 +1121,KHONG MINH MANH_1121,NEO_1121 +1122,KHONG MINH MANH_1122,NEO_1122 +1123,KHONG MINH MANH_1123,NEO_1123 +1124,KHONG MINH MANH_1124,NEO_1124 +1125,KHONG MINH MANH_1125,NEO_1125 +1126,KHONG MINH MANH_1126,NEO_1126 +1127,KHONG MINH MANH_1127,NEO_1127 +1128,KHONG MINH MANH_1128,NEO_1128 +1129,KHONG MINH MANH_1129,NEO_1129 +1130,KHONG MINH MANH_1130,NEO_1130 +1131,KHONG MINH MANH_1131,NEO_1131 +1132,KHONG MINH MANH_1132,NEO_1132 +1133,KHONG MINH MANH_1133,NEO_1133 +1134,KHONG MINH MANH_1134,NEO_1134 +1135,KHONG MINH MANH_1135,NEO_1135 +1136,KHONG MINH MANH_1136,NEO_1136 +1137,KHONG MINH MANH_1137,NEO_1137 +1138,KHONG MINH MANH_1138,NEO_1138 +1139,KHONG MINH MANH_1139,NEO_1139 +1140,KHONG MINH MANH_1140,NEO_1140 +1141,KHONG MINH MANH_1141,NEO_1141 +1142,KHONG MINH MANH_1142,NEO_1142 +1143,KHONG MINH MANH_1143,NEO_1143 +1144,KHONG MINH MANH_1144,NEO_1144 +1145,KHONG MINH MANH_1145,NEO_1145 +1146,KHONG MINH MANH_1146,NEO_1146 +1147,KHONG MINH MANH_1147,NEO_1147 +1148,KHONG MINH MANH_1148,NEO_1148 +1149,KHONG MINH MANH_1149,NEO_1149 +1150,KHONG MINH MANH_1150,NEO_1150 +1151,KHONG MINH MANH_1151,NEO_1151 +1152,KHONG MINH MANH_1152,NEO_1152 +1153,KHONG MINH MANH_1153,NEO_1153 +1154,KHONG MINH MANH_1154,NEO_1154 +1155,KHONG MINH MANH_1155,NEO_1155 +1156,KHONG MINH MANH_1156,NEO_1156 +1157,KHONG MINH MANH_1157,NEO_1157 +1158,KHONG MINH MANH_1158,NEO_1158 +1159,KHONG MINH MANH_1159,NEO_1159 +1160,KHONG MINH MANH_1160,NEO_1160 +1161,KHONG MINH MANH_1161,NEO_1161 +1162,KHONG MINH MANH_1162,NEO_1162 +1163,KHONG MINH MANH_1163,NEO_1163 +1164,KHONG MINH MANH_1164,NEO_1164 +1165,KHONG MINH MANH_1165,NEO_1165 +1166,KHONG MINH MANH_1166,NEO_1166 +1167,KHONG MINH MANH_1167,NEO_1167 +1168,KHONG MINH MANH_1168,NEO_1168 +1169,KHONG MINH MANH_1169,NEO_1169 +1170,KHONG MINH MANH_1170,NEO_1170 +1171,KHONG MINH MANH_1171,NEO_1171 +1172,KHONG MINH MANH_1172,NEO_1172 +1173,KHONG MINH MANH_1173,NEO_1173 +1174,KHONG MINH MANH_1174,NEO_1174 +1175,KHONG MINH MANH_1175,NEO_1175 +1176,KHONG MINH MANH_1176,NEO_1176 +1177,KHONG MINH MANH_1177,NEO_1177 +1178,KHONG MINH MANH_1178,NEO_1178 +1179,KHONG MINH MANH_1179,NEO_1179 +1180,KHONG MINH MANH_1180,NEO_1180 +1181,KHONG MINH MANH_1181,NEO_1181 +1182,KHONG MINH MANH_1182,NEO_1182 +1183,KHONG MINH MANH_1183,NEO_1183 +1184,KHONG MINH MANH_1184,NEO_1184 +1185,KHONG MINH MANH_1185,NEO_1185 +1186,KHONG MINH MANH_1186,NEO_1186 +1187,KHONG MINH MANH_1187,NEO_1187 +1188,KHONG MINH MANH_1188,NEO_1188 +1189,KHONG MINH MANH_1189,NEO_1189 +1190,KHONG MINH MANH_1190,NEO_1190 +1191,KHONG MINH MANH_1191,NEO_1191 +1192,KHONG MINH MANH_1192,NEO_1192 +1193,KHONG MINH MANH_1193,NEO_1193 +1194,KHONG MINH MANH_1194,NEO_1194 +1195,KHONG MINH MANH_1195,NEO_1195 +1196,KHONG MINH MANH_1196,NEO_1196 +1197,KHONG MINH MANH_1197,NEO_1197 +1198,KHONG MINH MANH_1198,NEO_1198 +1199,KHONG MINH MANH_1199,NEO_1199 +1200,KHONG MINH MANH_1200,NEO_1200 +1201,KHONG MINH MANH_1201,NEO_1201 +1202,KHONG MINH MANH_1202,NEO_1202 +1203,KHONG MINH MANH_1203,NEO_1203 +1204,KHONG MINH MANH_1204,NEO_1204 +1205,KHONG MINH MANH_1205,NEO_1205 +1206,KHONG MINH MANH_1206,NEO_1206 +1207,KHONG MINH MANH_1207,NEO_1207 +1208,KHONG MINH MANH_1208,NEO_1208 +1209,KHONG MINH MANH_1209,NEO_1209 +1210,KHONG MINH MANH_1210,NEO_1210 +1211,KHONG MINH MANH_1211,NEO_1211 +1212,KHONG MINH MANH_1212,NEO_1212 +1213,KHONG MINH MANH_1213,NEO_1213 +1214,KHONG MINH MANH_1214,NEO_1214 +1215,KHONG MINH MANH_1215,NEO_1215 +1216,KHONG MINH MANH_1216,NEO_1216 +1217,KHONG MINH MANH_1217,NEO_1217 +1218,KHONG MINH MANH_1218,NEO_1218 +1219,KHONG MINH MANH_1219,NEO_1219 +1220,KHONG MINH MANH_1220,NEO_1220 +1221,KHONG MINH MANH_1221,NEO_1221 +1222,KHONG MINH MANH_1222,NEO_1222 +1223,KHONG MINH MANH_1223,NEO_1223 +1224,KHONG MINH MANH_1224,NEO_1224 +1225,KHONG MINH MANH_1225,NEO_1225 +1226,KHONG MINH MANH_1226,NEO_1226 +1227,KHONG MINH MANH_1227,NEO_1227 +1228,KHONG MINH MANH_1228,NEO_1228 +1229,KHONG MINH MANH_1229,NEO_1229 +1230,KHONG MINH MANH_1230,NEO_1230 +1231,KHONG MINH MANH_1231,NEO_1231 +1232,KHONG MINH MANH_1232,NEO_1232 +1233,KHONG MINH MANH_1233,NEO_1233 +1234,KHONG MINH MANH_1234,NEO_1234 +1235,KHONG MINH MANH_1235,NEO_1235 +1236,KHONG MINH MANH_1236,NEO_1236 +1237,KHONG MINH MANH_1237,NEO_1237 +1238,KHONG MINH MANH_1238,NEO_1238 +1239,KHONG MINH MANH_1239,NEO_1239 +1240,KHONG MINH MANH_1240,NEO_1240 +1241,KHONG MINH MANH_1241,NEO_1241 +1242,KHONG MINH MANH_1242,NEO_1242 +1243,KHONG MINH MANH_1243,NEO_1243 +1244,KHONG MINH MANH_1244,NEO_1244 +1245,KHONG MINH MANH_1245,NEO_1245 +1246,KHONG MINH MANH_1246,NEO_1246 +1247,KHONG MINH MANH_1247,NEO_1247 +1248,KHONG MINH MANH_1248,NEO_1248 +1249,KHONG MINH MANH_1249,NEO_1249 +1250,KHONG MINH MANH_1250,NEO_1250 +1251,KHONG MINH MANH_1251,NEO_1251 +1252,KHONG MINH MANH_1252,NEO_1252 +1253,KHONG MINH MANH_1253,NEO_1253 +1254,KHONG MINH MANH_1254,NEO_1254 +1255,KHONG MINH MANH_1255,NEO_1255 +1256,KHONG MINH MANH_1256,NEO_1256 +1257,KHONG MINH MANH_1257,NEO_1257 +1258,KHONG MINH MANH_1258,NEO_1258 +1259,KHONG MINH MANH_1259,NEO_1259 +1260,KHONG MINH MANH_1260,NEO_1260 +1261,KHONG MINH MANH_1261,NEO_1261 +1262,KHONG MINH MANH_1262,NEO_1262 +1263,KHONG MINH MANH_1263,NEO_1263 +1264,KHONG MINH MANH_1264,NEO_1264 +1265,KHONG MINH MANH_1265,NEO_1265 +1266,KHONG MINH MANH_1266,NEO_1266 +1267,KHONG MINH MANH_1267,NEO_1267 +1268,KHONG MINH MANH_1268,NEO_1268 +1269,KHONG MINH MANH_1269,NEO_1269 +1270,KHONG MINH MANH_1270,NEO_1270 +1271,KHONG MINH MANH_1271,NEO_1271 +1272,KHONG MINH MANH_1272,NEO_1272 +1273,KHONG MINH MANH_1273,NEO_1273 +1274,KHONG MINH MANH_1274,NEO_1274 +1275,KHONG MINH MANH_1275,NEO_1275 +1276,KHONG MINH MANH_1276,NEO_1276 +1277,KHONG MINH MANH_1277,NEO_1277 +1278,KHONG MINH MANH_1278,NEO_1278 +1279,KHONG MINH MANH_1279,NEO_1279 +1280,KHONG MINH MANH_1280,NEO_1280 +1281,KHONG MINH MANH_1281,NEO_1281 +1282,KHONG MINH MANH_1282,NEO_1282 +1283,KHONG MINH MANH_1283,NEO_1283 +1284,KHONG MINH MANH_1284,NEO_1284 +1285,KHONG MINH MANH_1285,NEO_1285 +1286,KHONG MINH MANH_1286,NEO_1286 +1287,KHONG MINH MANH_1287,NEO_1287 +1288,KHONG MINH MANH_1288,NEO_1288 +1289,KHONG MINH MANH_1289,NEO_1289 +1290,KHONG MINH MANH_1290,NEO_1290 +1291,KHONG MINH MANH_1291,NEO_1291 +1292,KHONG MINH MANH_1292,NEO_1292 +1293,KHONG MINH MANH_1293,NEO_1293 +1294,KHONG MINH MANH_1294,NEO_1294 +1295,KHONG MINH MANH_1295,NEO_1295 +1296,KHONG MINH MANH_1296,NEO_1296 +1297,KHONG MINH MANH_1297,NEO_1297 +1298,KHONG MINH MANH_1298,NEO_1298 +1299,KHONG MINH MANH_1299,NEO_1299 +1300,KHONG MINH MANH_1300,NEO_1300 +1301,KHONG MINH MANH_1301,NEO_1301 +1302,KHONG MINH MANH_1302,NEO_1302 +1303,KHONG MINH MANH_1303,NEO_1303 +1304,KHONG MINH MANH_1304,NEO_1304 +1305,KHONG MINH MANH_1305,NEO_1305 +1306,KHONG MINH MANH_1306,NEO_1306 +1307,KHONG MINH MANH_1307,NEO_1307 +1308,KHONG MINH MANH_1308,NEO_1308 +1309,KHONG MINH MANH_1309,NEO_1309 +1310,KHONG MINH MANH_1310,NEO_1310 +1311,KHONG MINH MANH_1311,NEO_1311 +1312,KHONG MINH MANH_1312,NEO_1312 +1313,KHONG MINH MANH_1313,NEO_1313 +1314,KHONG MINH MANH_1314,NEO_1314 +1315,KHONG MINH MANH_1315,NEO_1315 +1316,KHONG MINH MANH_1316,NEO_1316 +1317,KHONG MINH MANH_1317,NEO_1317 +1318,KHONG MINH MANH_1318,NEO_1318 +1319,KHONG MINH MANH_1319,NEO_1319 +1320,KHONG MINH MANH_1320,NEO_1320 +1321,KHONG MINH MANH_1321,NEO_1321 +1322,KHONG MINH MANH_1322,NEO_1322 +1323,KHONG MINH MANH_1323,NEO_1323 +1324,KHONG MINH MANH_1324,NEO_1324 +1325,KHONG MINH MANH_1325,NEO_1325 +1326,KHONG MINH MANH_1326,NEO_1326 +1327,KHONG MINH MANH_1327,NEO_1327 +1328,KHONG MINH MANH_1328,NEO_1328 +1329,KHONG MINH MANH_1329,NEO_1329 +1330,KHONG MINH MANH_1330,NEO_1330 +1331,KHONG MINH MANH_1331,NEO_1331 +1332,KHONG MINH MANH_1332,NEO_1332 +1333,KHONG MINH MANH_1333,NEO_1333 +1334,KHONG MINH MANH_1334,NEO_1334 +1335,KHONG MINH MANH_1335,NEO_1335 +1336,KHONG MINH MANH_1336,NEO_1336 +1337,KHONG MINH MANH_1337,NEO_1337 +1338,KHONG MINH MANH_1338,NEO_1338 +1339,KHONG MINH MANH_1339,NEO_1339 +1340,KHONG MINH MANH_1340,NEO_1340 +1341,KHONG MINH MANH_1341,NEO_1341 +1342,KHONG MINH MANH_1342,NEO_1342 +1343,KHONG MINH MANH_1343,NEO_1343 +1344,KHONG MINH MANH_1344,NEO_1344 +1345,KHONG MINH MANH_1345,NEO_1345 +1346,KHONG MINH MANH_1346,NEO_1346 +1347,KHONG MINH MANH_1347,NEO_1347 +1348,KHONG MINH MANH_1348,NEO_1348 +1349,KHONG MINH MANH_1349,NEO_1349 +1350,KHONG MINH MANH_1350,NEO_1350 +1351,KHONG MINH MANH_1351,NEO_1351 +1352,KHONG MINH MANH_1352,NEO_1352 +1353,KHONG MINH MANH_1353,NEO_1353 +1354,KHONG MINH MANH_1354,NEO_1354 +1355,KHONG MINH MANH_1355,NEO_1355 +1356,KHONG MINH MANH_1356,NEO_1356 +1357,KHONG MINH MANH_1357,NEO_1357 +1358,KHONG MINH MANH_1358,NEO_1358 +1359,KHONG MINH MANH_1359,NEO_1359 +1360,KHONG MINH MANH_1360,NEO_1360 +1361,KHONG MINH MANH_1361,NEO_1361 +1362,KHONG MINH MANH_1362,NEO_1362 +1363,KHONG MINH MANH_1363,NEO_1363 +1364,KHONG MINH MANH_1364,NEO_1364 +1365,KHONG MINH MANH_1365,NEO_1365 +1366,KHONG MINH MANH_1366,NEO_1366 +1367,KHONG MINH MANH_1367,NEO_1367 +1368,KHONG MINH MANH_1368,NEO_1368 +1369,KHONG MINH MANH_1369,NEO_1369 +1370,KHONG MINH MANH_1370,NEO_1370 +1371,KHONG MINH MANH_1371,NEO_1371 +1372,KHONG MINH MANH_1372,NEO_1372 +1373,KHONG MINH MANH_1373,NEO_1373 +1374,KHONG MINH MANH_1374,NEO_1374 +1375,KHONG MINH MANH_1375,NEO_1375 +1376,KHONG MINH MANH_1376,NEO_1376 +1377,KHONG MINH MANH_1377,NEO_1377 +1378,KHONG MINH MANH_1378,NEO_1378 +1379,KHONG MINH MANH_1379,NEO_1379 +1380,KHONG MINH MANH_1380,NEO_1380 +1381,KHONG MINH MANH_1381,NEO_1381 +1382,KHONG MINH MANH_1382,NEO_1382 +1383,KHONG MINH MANH_1383,NEO_1383 +1384,KHONG MINH MANH_1384,NEO_1384 +1385,KHONG MINH MANH_1385,NEO_1385 +1386,KHONG MINH MANH_1386,NEO_1386 +1387,KHONG MINH MANH_1387,NEO_1387 +1388,KHONG MINH MANH_1388,NEO_1388 +1389,KHONG MINH MANH_1389,NEO_1389 +1390,KHONG MINH MANH_1390,NEO_1390 +1391,KHONG MINH MANH_1391,NEO_1391 +1392,KHONG MINH MANH_1392,NEO_1392 +1393,KHONG MINH MANH_1393,NEO_1393 +1394,KHONG MINH MANH_1394,NEO_1394 +1395,KHONG MINH MANH_1395,NEO_1395 +1396,KHONG MINH MANH_1396,NEO_1396 +1397,KHONG MINH MANH_1397,NEO_1397 +1398,KHONG MINH MANH_1398,NEO_1398 +1399,KHONG MINH MANH_1399,NEO_1399 +1400,KHONG MINH MANH_1400,NEO_1400 +1401,KHONG MINH MANH_1401,NEO_1401 +1402,KHONG MINH MANH_1402,NEO_1402 +1403,KHONG MINH MANH_1403,NEO_1403 +1404,KHONG MINH MANH_1404,NEO_1404 +1405,KHONG MINH MANH_1405,NEO_1405 +1406,KHONG MINH MANH_1406,NEO_1406 +1407,KHONG MINH MANH_1407,NEO_1407 +1408,KHONG MINH MANH_1408,NEO_1408 +1409,KHONG MINH MANH_1409,NEO_1409 +1410,KHONG MINH MANH_1410,NEO_1410 +1411,KHONG MINH MANH_1411,NEO_1411 +1412,KHONG MINH MANH_1412,NEO_1412 +1413,KHONG MINH MANH_1413,NEO_1413 +1414,KHONG MINH MANH_1414,NEO_1414 +1415,KHONG MINH MANH_1415,NEO_1415 +1416,KHONG MINH MANH_1416,NEO_1416 +1417,KHONG MINH MANH_1417,NEO_1417 +1418,KHONG MINH MANH_1418,NEO_1418 +1419,KHONG MINH MANH_1419,NEO_1419 +1420,KHONG MINH MANH_1420,NEO_1420 +1421,KHONG MINH MANH_1421,NEO_1421 +1422,KHONG MINH MANH_1422,NEO_1422 +1423,KHONG MINH MANH_1423,NEO_1423 +1424,KHONG MINH MANH_1424,NEO_1424 +1425,KHONG MINH MANH_1425,NEO_1425 +1426,KHONG MINH MANH_1426,NEO_1426 +1427,KHONG MINH MANH_1427,NEO_1427 +1428,KHONG MINH MANH_1428,NEO_1428 +1429,KHONG MINH MANH_1429,NEO_1429 +1430,KHONG MINH MANH_1430,NEO_1430 +1431,KHONG MINH MANH_1431,NEO_1431 +1432,KHONG MINH MANH_1432,NEO_1432 +1433,KHONG MINH MANH_1433,NEO_1433 +1434,KHONG MINH MANH_1434,NEO_1434 +1435,KHONG MINH MANH_1435,NEO_1435 +1436,KHONG MINH MANH_1436,NEO_1436 +1437,KHONG MINH MANH_1437,NEO_1437 +1438,KHONG MINH MANH_1438,NEO_1438 +1439,KHONG MINH MANH_1439,NEO_1439 +1440,KHONG MINH MANH_1440,NEO_1440 +1441,KHONG MINH MANH_1441,NEO_1441 +1442,KHONG MINH MANH_1442,NEO_1442 +1443,KHONG MINH MANH_1443,NEO_1443 +1444,KHONG MINH MANH_1444,NEO_1444 +1445,KHONG MINH MANH_1445,NEO_1445 +1446,KHONG MINH MANH_1446,NEO_1446 +1447,KHONG MINH MANH_1447,NEO_1447 +1448,KHONG MINH MANH_1448,NEO_1448 +1449,KHONG MINH MANH_1449,NEO_1449 +1450,KHONG MINH MANH_1450,NEO_1450 +1451,KHONG MINH MANH_1451,NEO_1451 +1452,KHONG MINH MANH_1452,NEO_1452 +1453,KHONG MINH MANH_1453,NEO_1453 +1454,KHONG MINH MANH_1454,NEO_1454 +1455,KHONG MINH MANH_1455,NEO_1455 +1456,KHONG MINH MANH_1456,NEO_1456 +1457,KHONG MINH MANH_1457,NEO_1457 +1458,KHONG MINH MANH_1458,NEO_1458 +1459,KHONG MINH MANH_1459,NEO_1459 +1460,KHONG MINH MANH_1460,NEO_1460 +1461,KHONG MINH MANH_1461,NEO_1461 +1462,KHONG MINH MANH_1462,NEO_1462 +1463,KHONG MINH MANH_1463,NEO_1463 +1464,KHONG MINH MANH_1464,NEO_1464 +1465,KHONG MINH MANH_1465,NEO_1465 +1466,KHONG MINH MANH_1466,NEO_1466 +1467,KHONG MINH MANH_1467,NEO_1467 +1468,KHONG MINH MANH_1468,NEO_1468 +1469,KHONG MINH MANH_1469,NEO_1469 +1470,KHONG MINH MANH_1470,NEO_1470 +1471,KHONG MINH MANH_1471,NEO_1471 +1472,KHONG MINH MANH_1472,NEO_1472 +1473,KHONG MINH MANH_1473,NEO_1473 +1474,KHONG MINH MANH_1474,NEO_1474 +1475,KHONG MINH MANH_1475,NEO_1475 +1476,KHONG MINH MANH_1476,NEO_1476 +1477,KHONG MINH MANH_1477,NEO_1477 +1478,KHONG MINH MANH_1478,NEO_1478 +1479,KHONG MINH MANH_1479,NEO_1479 +1480,KHONG MINH MANH_1480,NEO_1480 +1481,KHONG MINH MANH_1481,NEO_1481 +1482,KHONG MINH MANH_1482,NEO_1482 +1483,KHONG MINH MANH_1483,NEO_1483 +1484,KHONG MINH MANH_1484,NEO_1484 +1485,KHONG MINH MANH_1485,NEO_1485 +1486,KHONG MINH MANH_1486,NEO_1486 +1487,KHONG MINH MANH_1487,NEO_1487 +1488,KHONG MINH MANH_1488,NEO_1488 +1489,KHONG MINH MANH_1489,NEO_1489 +1490,KHONG MINH MANH_1490,NEO_1490 +1491,KHONG MINH MANH_1491,NEO_1491 +1492,KHONG MINH MANH_1492,NEO_1492 +1493,KHONG MINH MANH_1493,NEO_1493 +1494,KHONG MINH MANH_1494,NEO_1494 +1495,KHONG MINH MANH_1495,NEO_1495 +1496,KHONG MINH MANH_1496,NEO_1496 +1497,KHONG MINH MANH_1497,NEO_1497 +1498,KHONG MINH MANH_1498,NEO_1498 +1499,KHONG MINH MANH_1499,NEO_1499 +1500,KHONG MINH MANH_1500,NEO_1500 +1501,KHONG MINH MANH_1501,NEO_1501 +1502,KHONG MINH MANH_1502,NEO_1502 +1503,KHONG MINH MANH_1503,NEO_1503 +1504,KHONG MINH MANH_1504,NEO_1504 +1505,KHONG MINH MANH_1505,NEO_1505 +1506,KHONG MINH MANH_1506,NEO_1506 +1507,KHONG MINH MANH_1507,NEO_1507 +1508,KHONG MINH MANH_1508,NEO_1508 +1509,KHONG MINH MANH_1509,NEO_1509 +1510,KHONG MINH MANH_1510,NEO_1510 +1511,KHONG MINH MANH_1511,NEO_1511 +1512,KHONG MINH MANH_1512,NEO_1512 +1513,KHONG MINH MANH_1513,NEO_1513 +1514,KHONG MINH MANH_1514,NEO_1514 +1515,KHONG MINH MANH_1515,NEO_1515 +1516,KHONG MINH MANH_1516,NEO_1516 +1517,KHONG MINH MANH_1517,NEO_1517 +1518,KHONG MINH MANH_1518,NEO_1518 +1519,KHONG MINH MANH_1519,NEO_1519 +1520,KHONG MINH MANH_1520,NEO_1520 +1521,KHONG MINH MANH_1521,NEO_1521 +1522,KHONG MINH MANH_1522,NEO_1522 +1523,KHONG MINH MANH_1523,NEO_1523 +1524,KHONG MINH MANH_1524,NEO_1524 +1525,KHONG MINH MANH_1525,NEO_1525 +1526,KHONG MINH MANH_1526,NEO_1526 +1527,KHONG MINH MANH_1527,NEO_1527 +1528,KHONG MINH MANH_1528,NEO_1528 +1529,KHONG MINH MANH_1529,NEO_1529 +1530,KHONG MINH MANH_1530,NEO_1530 +1531,KHONG MINH MANH_1531,NEO_1531 +1532,KHONG MINH MANH_1532,NEO_1532 +1533,KHONG MINH MANH_1533,NEO_1533 +1534,KHONG MINH MANH_1534,NEO_1534 +1535,KHONG MINH MANH_1535,NEO_1535 +1536,KHONG MINH MANH_1536,NEO_1536 +1537,KHONG MINH MANH_1537,NEO_1537 +1538,KHONG MINH MANH_1538,NEO_1538 +1539,KHONG MINH MANH_1539,NEO_1539 +1540,KHONG MINH MANH_1540,NEO_1540 +1541,KHONG MINH MANH_1541,NEO_1541 +1542,KHONG MINH MANH_1542,NEO_1542 +1543,KHONG MINH MANH_1543,NEO_1543 +1544,KHONG MINH MANH_1544,NEO_1544 +1545,KHONG MINH MANH_1545,NEO_1545 +1546,KHONG MINH MANH_1546,NEO_1546 +1547,KHONG MINH MANH_1547,NEO_1547 +1548,KHONG MINH MANH_1548,NEO_1548 +1549,KHONG MINH MANH_1549,NEO_1549 +1550,KHONG MINH MANH_1550,NEO_1550 +1551,KHONG MINH MANH_1551,NEO_1551 +1552,KHONG MINH MANH_1552,NEO_1552 +1553,KHONG MINH MANH_1553,NEO_1553 +1554,KHONG MINH MANH_1554,NEO_1554 +1555,KHONG MINH MANH_1555,NEO_1555 +1556,KHONG MINH MANH_1556,NEO_1556 +1557,KHONG MINH MANH_1557,NEO_1557 +1558,KHONG MINH MANH_1558,NEO_1558 +1559,KHONG MINH MANH_1559,NEO_1559 +1560,KHONG MINH MANH_1560,NEO_1560 +1561,KHONG MINH MANH_1561,NEO_1561 +1562,KHONG MINH MANH_1562,NEO_1562 +1563,KHONG MINH MANH_1563,NEO_1563 +1564,KHONG MINH MANH_1564,NEO_1564 +1565,KHONG MINH MANH_1565,NEO_1565 +1566,KHONG MINH MANH_1566,NEO_1566 +1567,KHONG MINH MANH_1567,NEO_1567 +1568,KHONG MINH MANH_1568,NEO_1568 +1569,KHONG MINH MANH_1569,NEO_1569 +1570,KHONG MINH MANH_1570,NEO_1570 +1571,KHONG MINH MANH_1571,NEO_1571 +1572,KHONG MINH MANH_1572,NEO_1572 +1573,KHONG MINH MANH_1573,NEO_1573 +1574,KHONG MINH MANH_1574,NEO_1574 +1575,KHONG MINH MANH_1575,NEO_1575 +1576,KHONG MINH MANH_1576,NEO_1576 +1577,KHONG MINH MANH_1577,NEO_1577 +1578,KHONG MINH MANH_1578,NEO_1578 +1579,KHONG MINH MANH_1579,NEO_1579 +1580,KHONG MINH MANH_1580,NEO_1580 +1581,KHONG MINH MANH_1581,NEO_1581 +1582,KHONG MINH MANH_1582,NEO_1582 +1583,KHONG MINH MANH_1583,NEO_1583 +1584,KHONG MINH MANH_1584,NEO_1584 +1585,KHONG MINH MANH_1585,NEO_1585 +1586,KHONG MINH MANH_1586,NEO_1586 +1587,KHONG MINH MANH_1587,NEO_1587 +1588,KHONG MINH MANH_1588,NEO_1588 +1589,KHONG MINH MANH_1589,NEO_1589 +1590,KHONG MINH MANH_1590,NEO_1590 +1591,KHONG MINH MANH_1591,NEO_1591 +1592,KHONG MINH MANH_1592,NEO_1592 +1593,KHONG MINH MANH_1593,NEO_1593 +1594,KHONG MINH MANH_1594,NEO_1594 +1595,KHONG MINH MANH_1595,NEO_1595 +1596,KHONG MINH MANH_1596,NEO_1596 +1597,KHONG MINH MANH_1597,NEO_1597 +1598,KHONG MINH MANH_1598,NEO_1598 +1599,KHONG MINH MANH_1599,NEO_1599 +1600,KHONG MINH MANH_1600,NEO_1600 +1601,KHONG MINH MANH_1601,NEO_1601 +1602,KHONG MINH MANH_1602,NEO_1602 +1603,KHONG MINH MANH_1603,NEO_1603 +1604,KHONG MINH MANH_1604,NEO_1604 +1605,KHONG MINH MANH_1605,NEO_1605 +1606,KHONG MINH MANH_1606,NEO_1606 +1607,KHONG MINH MANH_1607,NEO_1607 +1608,KHONG MINH MANH_1608,NEO_1608 +1609,KHONG MINH MANH_1609,NEO_1609 +1610,KHONG MINH MANH_1610,NEO_1610 +1611,KHONG MINH MANH_1611,NEO_1611 +1612,KHONG MINH MANH_1612,NEO_1612 +1613,KHONG MINH MANH_1613,NEO_1613 +1614,KHONG MINH MANH_1614,NEO_1614 +1615,KHONG MINH MANH_1615,NEO_1615 +1616,KHONG MINH MANH_1616,NEO_1616 +1617,KHONG MINH MANH_1617,NEO_1617 +1618,KHONG MINH MANH_1618,NEO_1618 +1619,KHONG MINH MANH_1619,NEO_1619 +1620,KHONG MINH MANH_1620,NEO_1620 +1621,KHONG MINH MANH_1621,NEO_1621 +1622,KHONG MINH MANH_1622,NEO_1622 +1623,KHONG MINH MANH_1623,NEO_1623 +1624,KHONG MINH MANH_1624,NEO_1624 +1625,KHONG MINH MANH_1625,NEO_1625 +1626,KHONG MINH MANH_1626,NEO_1626 +1627,KHONG MINH MANH_1627,NEO_1627 +1628,KHONG MINH MANH_1628,NEO_1628 +1629,KHONG MINH MANH_1629,NEO_1629 +1630,KHONG MINH MANH_1630,NEO_1630 +1631,KHONG MINH MANH_1631,NEO_1631 +1632,KHONG MINH MANH_1632,NEO_1632 +1633,KHONG MINH MANH_1633,NEO_1633 +1634,KHONG MINH MANH_1634,NEO_1634 +1635,KHONG MINH MANH_1635,NEO_1635 +1636,KHONG MINH MANH_1636,NEO_1636 +1637,KHONG MINH MANH_1637,NEO_1637 +1638,KHONG MINH MANH_1638,NEO_1638 +1639,KHONG MINH MANH_1639,NEO_1639 +1640,KHONG MINH MANH_1640,NEO_1640 +1641,KHONG MINH MANH_1641,NEO_1641 +1642,KHONG MINH MANH_1642,NEO_1642 +1643,KHONG MINH MANH_1643,NEO_1643 +1644,KHONG MINH MANH_1644,NEO_1644 +1645,KHONG MINH MANH_1645,NEO_1645 +1646,KHONG MINH MANH_1646,NEO_1646 +1647,KHONG MINH MANH_1647,NEO_1647 +1648,KHONG MINH MANH_1648,NEO_1648 +1649,KHONG MINH MANH_1649,NEO_1649 +1650,KHONG MINH MANH_1650,NEO_1650 +1651,KHONG MINH MANH_1651,NEO_1651 +1652,KHONG MINH MANH_1652,NEO_1652 +1653,KHONG MINH MANH_1653,NEO_1653 +1654,KHONG MINH MANH_1654,NEO_1654 +1655,KHONG MINH MANH_1655,NEO_1655 +1656,KHONG MINH MANH_1656,NEO_1656 +1657,KHONG MINH MANH_1657,NEO_1657 +1658,KHONG MINH MANH_1658,NEO_1658 +1659,KHONG MINH MANH_1659,NEO_1659 +1660,KHONG MINH MANH_1660,NEO_1660 +1661,KHONG MINH MANH_1661,NEO_1661 +1662,KHONG MINH MANH_1662,NEO_1662 +1663,KHONG MINH MANH_1663,NEO_1663 +1664,KHONG MINH MANH_1664,NEO_1664 +1665,KHONG MINH MANH_1665,NEO_1665 +1666,KHONG MINH MANH_1666,NEO_1666 +1667,KHONG MINH MANH_1667,NEO_1667 +1668,KHONG MINH MANH_1668,NEO_1668 +1669,KHONG MINH MANH_1669,NEO_1669 +1670,KHONG MINH MANH_1670,NEO_1670 +1671,KHONG MINH MANH_1671,NEO_1671 +1672,KHONG MINH MANH_1672,NEO_1672 +1673,KHONG MINH MANH_1673,NEO_1673 +1674,KHONG MINH MANH_1674,NEO_1674 +1675,KHONG MINH MANH_1675,NEO_1675 +1676,KHONG MINH MANH_1676,NEO_1676 +1677,KHONG MINH MANH_1677,NEO_1677 +1678,KHONG MINH MANH_1678,NEO_1678 +1679,KHONG MINH MANH_1679,NEO_1679 +1680,KHONG MINH MANH_1680,NEO_1680 +1681,KHONG MINH MANH_1681,NEO_1681 +1682,KHONG MINH MANH_1682,NEO_1682 +1683,KHONG MINH MANH_1683,NEO_1683 +1684,KHONG MINH MANH_1684,NEO_1684 +1685,KHONG MINH MANH_1685,NEO_1685 +1686,KHONG MINH MANH_1686,NEO_1686 +1687,KHONG MINH MANH_1687,NEO_1687 +1688,KHONG MINH MANH_1688,NEO_1688 +1689,KHONG MINH MANH_1689,NEO_1689 +1690,KHONG MINH MANH_1690,NEO_1690 +1691,KHONG MINH MANH_1691,NEO_1691 +1692,KHONG MINH MANH_1692,NEO_1692 +1693,KHONG MINH MANH_1693,NEO_1693 +1694,KHONG MINH MANH_1694,NEO_1694 +1695,KHONG MINH MANH_1695,NEO_1695 +1696,KHONG MINH MANH_1696,NEO_1696 +1697,KHONG MINH MANH_1697,NEO_1697 +1698,KHONG MINH MANH_1698,NEO_1698 +1699,KHONG MINH MANH_1699,NEO_1699 +1700,KHONG MINH MANH_1700,NEO_1700 +1701,KHONG MINH MANH_1701,NEO_1701 +1702,KHONG MINH MANH_1702,NEO_1702 +1703,KHONG MINH MANH_1703,NEO_1703 +1704,KHONG MINH MANH_1704,NEO_1704 +1705,KHONG MINH MANH_1705,NEO_1705 +1706,KHONG MINH MANH_1706,NEO_1706 +1707,KHONG MINH MANH_1707,NEO_1707 +1708,KHONG MINH MANH_1708,NEO_1708 +1709,KHONG MINH MANH_1709,NEO_1709 +1710,KHONG MINH MANH_1710,NEO_1710 +1711,KHONG MINH MANH_1711,NEO_1711 +1712,KHONG MINH MANH_1712,NEO_1712 +1713,KHONG MINH MANH_1713,NEO_1713 +1714,KHONG MINH MANH_1714,NEO_1714 +1715,KHONG MINH MANH_1715,NEO_1715 +1716,KHONG MINH MANH_1716,NEO_1716 +1717,KHONG MINH MANH_1717,NEO_1717 +1718,KHONG MINH MANH_1718,NEO_1718 +1719,KHONG MINH MANH_1719,NEO_1719 +1720,KHONG MINH MANH_1720,NEO_1720 +1721,KHONG MINH MANH_1721,NEO_1721 +1722,KHONG MINH MANH_1722,NEO_1722 +1723,KHONG MINH MANH_1723,NEO_1723 +1724,KHONG MINH MANH_1724,NEO_1724 +1725,KHONG MINH MANH_1725,NEO_1725 +1726,KHONG MINH MANH_1726,NEO_1726 +1727,KHONG MINH MANH_1727,NEO_1727 +1728,KHONG MINH MANH_1728,NEO_1728 +1729,KHONG MINH MANH_1729,NEO_1729 +1730,KHONG MINH MANH_1730,NEO_1730 +1731,KHONG MINH MANH_1731,NEO_1731 +1732,KHONG MINH MANH_1732,NEO_1732 +1733,KHONG MINH MANH_1733,NEO_1733 +1734,KHONG MINH MANH_1734,NEO_1734 +1735,KHONG MINH MANH_1735,NEO_1735 +1736,KHONG MINH MANH_1736,NEO_1736 +1737,KHONG MINH MANH_1737,NEO_1737 +1738,KHONG MINH MANH_1738,NEO_1738 +1739,KHONG MINH MANH_1739,NEO_1739 +1740,KHONG MINH MANH_1740,NEO_1740 +1741,KHONG MINH MANH_1741,NEO_1741 +1742,KHONG MINH MANH_1742,NEO_1742 +1743,KHONG MINH MANH_1743,NEO_1743 +1744,KHONG MINH MANH_1744,NEO_1744 +1745,KHONG MINH MANH_1745,NEO_1745 +1746,KHONG MINH MANH_1746,NEO_1746 +1747,KHONG MINH MANH_1747,NEO_1747 +1748,KHONG MINH MANH_1748,NEO_1748 +1749,KHONG MINH MANH_1749,NEO_1749 +1750,KHONG MINH MANH_1750,NEO_1750 +1751,KHONG MINH MANH_1751,NEO_1751 +1752,KHONG MINH MANH_1752,NEO_1752 +1753,KHONG MINH MANH_1753,NEO_1753 +1754,KHONG MINH MANH_1754,NEO_1754 +1755,KHONG MINH MANH_1755,NEO_1755 +1756,KHONG MINH MANH_1756,NEO_1756 +1757,KHONG MINH MANH_1757,NEO_1757 +1758,KHONG MINH MANH_1758,NEO_1758 +1759,KHONG MINH MANH_1759,NEO_1759 +1760,KHONG MINH MANH_1760,NEO_1760 +1761,KHONG MINH MANH_1761,NEO_1761 +1762,KHONG MINH MANH_1762,NEO_1762 +1763,KHONG MINH MANH_1763,NEO_1763 +1764,KHONG MINH MANH_1764,NEO_1764 +1765,KHONG MINH MANH_1765,NEO_1765 +1766,KHONG MINH MANH_1766,NEO_1766 +1767,KHONG MINH MANH_1767,NEO_1767 +1768,KHONG MINH MANH_1768,NEO_1768 +1769,KHONG MINH MANH_1769,NEO_1769 +1770,KHONG MINH MANH_1770,NEO_1770 +1771,KHONG MINH MANH_1771,NEO_1771 +1772,KHONG MINH MANH_1772,NEO_1772 +1773,KHONG MINH MANH_1773,NEO_1773 +1774,KHONG MINH MANH_1774,NEO_1774 +1775,KHONG MINH MANH_1775,NEO_1775 +1776,KHONG MINH MANH_1776,NEO_1776 +1777,KHONG MINH MANH_1777,NEO_1777 +1778,KHONG MINH MANH_1778,NEO_1778 +1779,KHONG MINH MANH_1779,NEO_1779 +1780,KHONG MINH MANH_1780,NEO_1780 +1781,KHONG MINH MANH_1781,NEO_1781 +1782,KHONG MINH MANH_1782,NEO_1782 +1783,KHONG MINH MANH_1783,NEO_1783 +1784,KHONG MINH MANH_1784,NEO_1784 +1785,KHONG MINH MANH_1785,NEO_1785 +1786,KHONG MINH MANH_1786,NEO_1786 +1787,KHONG MINH MANH_1787,NEO_1787 +1788,KHONG MINH MANH_1788,NEO_1788 +1789,KHONG MINH MANH_1789,NEO_1789 +1790,KHONG MINH MANH_1790,NEO_1790 +1791,KHONG MINH MANH_1791,NEO_1791 +1792,KHONG MINH MANH_1792,NEO_1792 +1793,KHONG MINH MANH_1793,NEO_1793 +1794,KHONG MINH MANH_1794,NEO_1794 +1795,KHONG MINH MANH_1795,NEO_1795 +1796,KHONG MINH MANH_1796,NEO_1796 +1797,KHONG MINH MANH_1797,NEO_1797 +1798,KHONG MINH MANH_1798,NEO_1798 +1799,KHONG MINH MANH_1799,NEO_1799 +1800,KHONG MINH MANH_1800,NEO_1800 +1801,KHONG MINH MANH_1801,NEO_1801 +1802,KHONG MINH MANH_1802,NEO_1802 +1803,KHONG MINH MANH_1803,NEO_1803 +1804,KHONG MINH MANH_1804,NEO_1804 +1805,KHONG MINH MANH_1805,NEO_1805 +1806,KHONG MINH MANH_1806,NEO_1806 +1807,KHONG MINH MANH_1807,NEO_1807 +1808,KHONG MINH MANH_1808,NEO_1808 +1809,KHONG MINH MANH_1809,NEO_1809 +1810,KHONG MINH MANH_1810,NEO_1810 +1811,KHONG MINH MANH_1811,NEO_1811 +1812,KHONG MINH MANH_1812,NEO_1812 +1813,KHONG MINH MANH_1813,NEO_1813 +1814,KHONG MINH MANH_1814,NEO_1814 +1815,KHONG MINH MANH_1815,NEO_1815 +1816,KHONG MINH MANH_1816,NEO_1816 +1817,KHONG MINH MANH_1817,NEO_1817 +1818,KHONG MINH MANH_1818,NEO_1818 +1819,KHONG MINH MANH_1819,NEO_1819 +1820,KHONG MINH MANH_1820,NEO_1820 +1821,KHONG MINH MANH_1821,NEO_1821 +1822,KHONG MINH MANH_1822,NEO_1822 +1823,KHONG MINH MANH_1823,NEO_1823 +1824,KHONG MINH MANH_1824,NEO_1824 +1825,KHONG MINH MANH_1825,NEO_1825 +1826,KHONG MINH MANH_1826,NEO_1826 +1827,KHONG MINH MANH_1827,NEO_1827 +1828,KHONG MINH MANH_1828,NEO_1828 +1829,KHONG MINH MANH_1829,NEO_1829 +1830,KHONG MINH MANH_1830,NEO_1830 +1831,KHONG MINH MANH_1831,NEO_1831 +1832,KHONG MINH MANH_1832,NEO_1832 +1833,KHONG MINH MANH_1833,NEO_1833 +1834,KHONG MINH MANH_1834,NEO_1834 +1835,KHONG MINH MANH_1835,NEO_1835 +1836,KHONG MINH MANH_1836,NEO_1836 +1837,KHONG MINH MANH_1837,NEO_1837 +1838,KHONG MINH MANH_1838,NEO_1838 +1839,KHONG MINH MANH_1839,NEO_1839 +1840,KHONG MINH MANH_1840,NEO_1840 +1841,KHONG MINH MANH_1841,NEO_1841 +1842,KHONG MINH MANH_1842,NEO_1842 +1843,KHONG MINH MANH_1843,NEO_1843 +1844,KHONG MINH MANH_1844,NEO_1844 +1845,KHONG MINH MANH_1845,NEO_1845 +1846,KHONG MINH MANH_1846,NEO_1846 +1847,KHONG MINH MANH_1847,NEO_1847 +1848,KHONG MINH MANH_1848,NEO_1848 +1849,KHONG MINH MANH_1849,NEO_1849 +1850,KHONG MINH MANH_1850,NEO_1850 +1851,KHONG MINH MANH_1851,NEO_1851 +1852,KHONG MINH MANH_1852,NEO_1852 +1853,KHONG MINH MANH_1853,NEO_1853 +1854,KHONG MINH MANH_1854,NEO_1854 +1855,KHONG MINH MANH_1855,NEO_1855 +1856,KHONG MINH MANH_1856,NEO_1856 +1857,KHONG MINH MANH_1857,NEO_1857 +1858,KHONG MINH MANH_1858,NEO_1858 +1859,KHONG MINH MANH_1859,NEO_1859 +1860,KHONG MINH MANH_1860,NEO_1860 +1861,KHONG MINH MANH_1861,NEO_1861 +1862,KHONG MINH MANH_1862,NEO_1862 +1863,KHONG MINH MANH_1863,NEO_1863 +1864,KHONG MINH MANH_1864,NEO_1864 +1865,KHONG MINH MANH_1865,NEO_1865 +1866,KHONG MINH MANH_1866,NEO_1866 +1867,KHONG MINH MANH_1867,NEO_1867 +1868,KHONG MINH MANH_1868,NEO_1868 +1869,KHONG MINH MANH_1869,NEO_1869 +1870,KHONG MINH MANH_1870,NEO_1870 +1871,KHONG MINH MANH_1871,NEO_1871 +1872,KHONG MINH MANH_1872,NEO_1872 +1873,KHONG MINH MANH_1873,NEO_1873 +1874,KHONG MINH MANH_1874,NEO_1874 +1875,KHONG MINH MANH_1875,NEO_1875 +1876,KHONG MINH MANH_1876,NEO_1876 +1877,KHONG MINH MANH_1877,NEO_1877 +1878,KHONG MINH MANH_1878,NEO_1878 +1879,KHONG MINH MANH_1879,NEO_1879 +1880,KHONG MINH MANH_1880,NEO_1880 +1881,KHONG MINH MANH_1881,NEO_1881 +1882,KHONG MINH MANH_1882,NEO_1882 +1883,KHONG MINH MANH_1883,NEO_1883 +1884,KHONG MINH MANH_1884,NEO_1884 +1885,KHONG MINH MANH_1885,NEO_1885 +1886,KHONG MINH MANH_1886,NEO_1886 +1887,KHONG MINH MANH_1887,NEO_1887 +1888,KHONG MINH MANH_1888,NEO_1888 +1889,KHONG MINH MANH_1889,NEO_1889 +1890,KHONG MINH MANH_1890,NEO_1890 +1891,KHONG MINH MANH_1891,NEO_1891 +1892,KHONG MINH MANH_1892,NEO_1892 +1893,KHONG MINH MANH_1893,NEO_1893 +1894,KHONG MINH MANH_1894,NEO_1894 +1895,KHONG MINH MANH_1895,NEO_1895 +1896,KHONG MINH MANH_1896,NEO_1896 +1897,KHONG MINH MANH_1897,NEO_1897 +1898,KHONG MINH MANH_1898,NEO_1898 +1899,KHONG MINH MANH_1899,NEO_1899 +1900,KHONG MINH MANH_1900,NEO_1900 +1901,KHONG MINH MANH_1901,NEO_1901 +1902,KHONG MINH MANH_1902,NEO_1902 +1903,KHONG MINH MANH_1903,NEO_1903 +1904,KHONG MINH MANH_1904,NEO_1904 +1905,KHONG MINH MANH_1905,NEO_1905 +1906,KHONG MINH MANH_1906,NEO_1906 +1907,KHONG MINH MANH_1907,NEO_1907 +1908,KHONG MINH MANH_1908,NEO_1908 +1909,KHONG MINH MANH_1909,NEO_1909 +1910,KHONG MINH MANH_1910,NEO_1910 +1911,KHONG MINH MANH_1911,NEO_1911 +1912,KHONG MINH MANH_1912,NEO_1912 +1913,KHONG MINH MANH_1913,NEO_1913 +1914,KHONG MINH MANH_1914,NEO_1914 +1915,KHONG MINH MANH_1915,NEO_1915 +1916,KHONG MINH MANH_1916,NEO_1916 +1917,KHONG MINH MANH_1917,NEO_1917 +1918,KHONG MINH MANH_1918,NEO_1918 +1919,KHONG MINH MANH_1919,NEO_1919 +1920,KHONG MINH MANH_1920,NEO_1920 +1921,KHONG MINH MANH_1921,NEO_1921 +1922,KHONG MINH MANH_1922,NEO_1922 +1923,KHONG MINH MANH_1923,NEO_1923 +1924,KHONG MINH MANH_1924,NEO_1924 +1925,KHONG MINH MANH_1925,NEO_1925 +1926,KHONG MINH MANH_1926,NEO_1926 +1927,KHONG MINH MANH_1927,NEO_1927 +1928,KHONG MINH MANH_1928,NEO_1928 +1929,KHONG MINH MANH_1929,NEO_1929 +1930,KHONG MINH MANH_1930,NEO_1930 +1931,KHONG MINH MANH_1931,NEO_1931 +1932,KHONG MINH MANH_1932,NEO_1932 +1933,KHONG MINH MANH_1933,NEO_1933 +1934,KHONG MINH MANH_1934,NEO_1934 +1935,KHONG MINH MANH_1935,NEO_1935 +1936,KHONG MINH MANH_1936,NEO_1936 +1937,KHONG MINH MANH_1937,NEO_1937 +1938,KHONG MINH MANH_1938,NEO_1938 +1939,KHONG MINH MANH_1939,NEO_1939 +1940,KHONG MINH MANH_1940,NEO_1940 +1941,KHONG MINH MANH_1941,NEO_1941 +1942,KHONG MINH MANH_1942,NEO_1942 +1943,KHONG MINH MANH_1943,NEO_1943 +1944,KHONG MINH MANH_1944,NEO_1944 +1945,KHONG MINH MANH_1945,NEO_1945 +1946,KHONG MINH MANH_1946,NEO_1946 +1947,KHONG MINH MANH_1947,NEO_1947 +1948,KHONG MINH MANH_1948,NEO_1948 +1949,KHONG MINH MANH_1949,NEO_1949 +1950,KHONG MINH MANH_1950,NEO_1950 +1951,KHONG MINH MANH_1951,NEO_1951 +1952,KHONG MINH MANH_1952,NEO_1952 +1953,KHONG MINH MANH_1953,NEO_1953 +1954,KHONG MINH MANH_1954,NEO_1954 +1955,KHONG MINH MANH_1955,NEO_1955 +1956,KHONG MINH MANH_1956,NEO_1956 +1957,KHONG MINH MANH_1957,NEO_1957 +1958,KHONG MINH MANH_1958,NEO_1958 +1959,KHONG MINH MANH_1959,NEO_1959 +1960,KHONG MINH MANH_1960,NEO_1960 +1961,KHONG MINH MANH_1961,NEO_1961 +1962,KHONG MINH MANH_1962,NEO_1962 +1963,KHONG MINH MANH_1963,NEO_1963 +1964,KHONG MINH MANH_1964,NEO_1964 +1965,KHONG MINH MANH_1965,NEO_1965 +1966,KHONG MINH MANH_1966,NEO_1966 +1967,KHONG MINH MANH_1967,NEO_1967 +1968,KHONG MINH MANH_1968,NEO_1968 +1969,KHONG MINH MANH_1969,NEO_1969 +1970,KHONG MINH MANH_1970,NEO_1970 +1971,KHONG MINH MANH_1971,NEO_1971 +1972,KHONG MINH MANH_1972,NEO_1972 +1973,KHONG MINH MANH_1973,NEO_1973 +1974,KHONG MINH MANH_1974,NEO_1974 +1975,KHONG MINH MANH_1975,NEO_1975 +1976,KHONG MINH MANH_1976,NEO_1976 +1977,KHONG MINH MANH_1977,NEO_1977 +1978,KHONG MINH MANH_1978,NEO_1978 +1979,KHONG MINH MANH_1979,NEO_1979 +1980,KHONG MINH MANH_1980,NEO_1980 +1981,KHONG MINH MANH_1981,NEO_1981 +1982,KHONG MINH MANH_1982,NEO_1982 +1983,KHONG MINH MANH_1983,NEO_1983 +1984,KHONG MINH MANH_1984,NEO_1984 +1985,KHONG MINH MANH_1985,NEO_1985 +1986,KHONG MINH MANH_1986,NEO_1986 +1987,KHONG MINH MANH_1987,NEO_1987 +1988,KHONG MINH MANH_1988,NEO_1988 +1989,KHONG MINH MANH_1989,NEO_1989 +1990,KHONG MINH MANH_1990,NEO_1990 +1991,KHONG MINH MANH_1991,NEO_1991 +1992,KHONG MINH MANH_1992,NEO_1992 +1993,KHONG MINH MANH_1993,NEO_1993 +1994,KHONG MINH MANH_1994,NEO_1994 +1995,KHONG MINH MANH_1995,NEO_1995 +1996,KHONG MINH MANH_1996,NEO_1996 +1997,KHONG MINH MANH_1997,NEO_1997 +1998,KHONG MINH MANH_1998,NEO_1998 +1999,KHONG MINH MANH_1999,NEO_1999 diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01-temp/backup-data-01.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01-temp/backup-data-01.txt new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01-temp/backup-data-02.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01-temp/backup-data-02.txt new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01-temp/backup-data-03.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01-temp/backup-data-03.txt new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01-temp/backup-data.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01-temp/backup-data.txt new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data-01.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data-01.txt new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data-02.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data-02.txt new file mode 100644 index 0000000..66692ac --- /dev/null +++ b/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data-02.txt @@ -0,0 +1 @@ +NEO Company \ No newline at end of file diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data-03.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data-03.txt new file mode 100644 index 0000000..e5c4645 --- /dev/null +++ b/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data-03.txt @@ -0,0 +1 @@ +Thái Bình \ No newline at end of file diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01/backup-data.txt new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01/manhkm01.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01/manhkm01.txt new file mode 100644 index 0000000..930d85f --- /dev/null +++ b/Java-File-Manager/java-file-manager/data/input/03/03-01/manhkm01.txt @@ -0,0 +1 @@ +manhkm \ No newline at end of file diff --git a/Java-File-Manager/java-file-manager/data/input/03/03-01/manhkm02.txt b/Java-File-Manager/java-file-manager/data/input/03/03-01/manhkm02.txt new file mode 100644 index 0000000..b681456 --- /dev/null +++ b/Java-File-Manager/java-file-manager/data/input/03/03-01/manhkm02.txt @@ -0,0 +1,3 @@ +Khong Minh Manh +NEO +Thái Bình \ No newline at end of file diff --git a/Java-File-Manager/java-file-manager/data/input/03/customer-01.txt b/Java-File-Manager/java-file-manager/data/input/03/customer-01.txt new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/customer-02.html b/Java-File-Manager/java-file-manager/data/input/03/customer-02.html new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/customer-02.java b/Java-File-Manager/java-file-manager/data/input/03/customer-02.java new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/customer-02.mp3 b/Java-File-Manager/java-file-manager/data/input/03/customer-02.mp3 new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/customer-02.mp4 b/Java-File-Manager/java-file-manager/data/input/03/customer-02.mp4 new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/customer-02.sql b/Java-File-Manager/java-file-manager/data/input/03/customer-02.sql new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/data/input/03/customer-02.txt b/Java-File-Manager/java-file-manager/data/input/03/customer-02.txt new file mode 100644 index 0000000..e69de29 diff --git a/Java-File-Manager/java-file-manager/pom.xml b/Java-File-Manager/java-file-manager/pom.xml new file mode 100644 index 0000000..9c1a070 --- /dev/null +++ b/Java-File-Manager/java-file-manager/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + com.msoft + java-file-manager + 1.0 + + + 8 + 8 + + + + + + org.apache.logging.log4j + log4j-core + 2.17.1 + + + + + \ No newline at end of file diff --git a/Java-File-Manager/java-file-manager/readme.md b/Java-File-Manager/java-file-manager/readme.md new file mode 100644 index 0000000..941da52 --- /dev/null +++ b/Java-File-Manager/java-file-manager/readme.md @@ -0,0 +1,32 @@ +# Java-File-Manager + +## List API sử dụng đối với File + +### Loại 1: CREATE + +Tạo file rỗng + +Tạo file với nội dung được fix trong hàm + +Tạo file với nội dung được lấy từ một Collection khác + +Tạo file với nội dung được lấy từ execute QUERY trong Database. + +Tạo file với nội dung được custom từ nội dung của file khác. + + + +### Loại 2: READ + +Đọc thông tin chi tiết, liên quan của file + +Đọc nội dung của file theo dữ liệu gốc + +Đọc nội dung của file theo chuyển đổi thành Object + + + + +## Reference document + +[1. ManageFile](https://github.com/Ben-MTP/ManageFile) \ No newline at end of file diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/App.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/App.java new file mode 100644 index 0000000..42bf65b --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/App.java @@ -0,0 +1,16 @@ +package com.msoft.core; + +import com.msoft.core.utils.FileUtil; + +/** + * @author ManhKM on 9/13/2022 + * @project java-file-manager + */ +public class App { + + public static void main(String[] args) { + FileUtil fileUtil = new FileUtil(); + String path = "data/input/03"; + fileUtil.discovery(path, false); + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/DirectoriesManager.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/DirectoriesManager.java new file mode 100644 index 0000000..9aedb6c --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/DirectoriesManager.java @@ -0,0 +1,24 @@ +package com.msoft.core; + +import com.msoft.core.crud.DirectoriesService; +import com.msoft.core.crud.impl.DirectoriesServiceImpl; + +/** + * Quản lý thông tin các thư mục + * ---- + * CRUD Directories: Tạo, đọc nội dung, + * chỉnh sửa nội dung trong thư mục, + * chỉnh sửa tên của thư mục, + * xóa tên của thư mục + */ +public class DirectoriesManager { + + public static void main(String[] args) { + String pathDirectory = "data/input/03/03-06"; + DirectoriesService directoriesService = new DirectoriesServiceImpl(); + + String sourceDirectory = "data/input/03/03-01-temp"; + String targetDirectory = "data/input/03/03-08898"; + System.out.println(directoriesService.copyDirectory(sourceDirectory, targetDirectory)); + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/FileManager.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/FileManager.java new file mode 100644 index 0000000..a7c17a4 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/FileManager.java @@ -0,0 +1,12 @@ +package com.msoft.core; + +import com.msoft.core.crud.FilesService; +import com.msoft.core.crud.impl.FilesServiceImpl; + +public class FileManager { + public static void main(String[] args) { + String pathFile = "data/input/03/03-01/backup-data-03.txt"; + FilesService filesService = new FilesServiceImpl(); + System.out.println(filesService.getInfoFileUsingPathFile(pathFile)); + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/MonitorFile.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/MonitorFile.java new file mode 100644 index 0000000..98e71a7 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/MonitorFile.java @@ -0,0 +1,13 @@ +package com.msoft.core; + +import com.msoft.core.monitor.FileWatcher; +import com.msoft.core.monitor.impl.FileWatcherImpl; + +public class MonitorFile { + public static void main(String[] args) { + System.out.println("----- MONITOR FILE -----"); + FileWatcher fileWatcher = new FileWatcherImpl(); + + fileWatcher.run(); + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/DirectoriesService.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/DirectoriesService.java new file mode 100644 index 0000000..e710797 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/DirectoriesService.java @@ -0,0 +1,22 @@ +package com.msoft.core.crud; + +import com.msoft.core.entity.DirectionEntity; + +import java.util.List; + +/** + * Định nghĩa các Service cần có của một thư mục trong hệ thống + */ +public interface DirectoriesService { + List getFileOfDirectory(String pathDirectory); + + DirectionEntity getInfoDirectionUsingPathDirectory(String pathDirector); + + DirectionEntity createDirectoryUsingPathDirectory(String pathDirector); + + Boolean renameDirectory(String currentPathDirectory, String newPathDirectory); + + Boolean deleteDirectory(String pathDirector); + + Boolean copyDirectory(String sourceDirectory, String targetDirectory); +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/FilesService.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/FilesService.java new file mode 100644 index 0000000..28a1c9b --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/FilesService.java @@ -0,0 +1,24 @@ +package com.msoft.core.crud; + +import com.msoft.core.entity.FileEntity; +import com.msoft.core.entity.Person; + +import java.io.File; +import java.util.List; + +public interface FilesService { + + FileEntity getInfoFileUsingPathFile(String pathFile); + + FileEntity getInfoFileUsingFile(File file); + + FileEntity createAndWriteContent2File(String pathFile, int numberOfLine); + + List readContentOfFile(String pathFile); + + Person convertString2Object(String keyDetect, String line, int size); + + FileEntity onlyCreateFileWithPathFile(String pathFile); + + +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/impl/DirectoriesServiceImpl.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/impl/DirectoriesServiceImpl.java new file mode 100644 index 0000000..abcc592 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/impl/DirectoriesServiceImpl.java @@ -0,0 +1,143 @@ +package com.msoft.core.crud.impl; + +import com.msoft.core.crud.DirectoriesService; +import com.msoft.core.entity.DirectionEntity; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +/** + * Triển khai các nghiệp vụ liên quan của Directory + */ +public class DirectoriesServiceImpl implements DirectoriesService { + + public DirectoriesServiceImpl() { + } + + /** + * Lấy danh sách file số liệu theo đường dẫn thư mục được chỉ định + * + * @param pathDirectory + * @return + */ + @Override + public List getFileOfDirectory(String pathDirectory) { + File file = new File(pathDirectory); + List listName = new ArrayList<>(); + String fileNames[] = file.list(); + + for (String fileName : fileNames) { + listName.add(fileName); + } + return listName; + } + + @Override + public DirectionEntity getInfoDirectionUsingPathDirectory(String pathDirector) { + return null; + } + + /** + * Tạo thư mục mới sử dụng PathDirectory + * + * @param pathDirector - đường dẫn path đến thư mục cần quản lý + * @return + */ + @Override + public DirectionEntity createDirectoryUsingPathDirectory(String pathDirector) { + Path directoryPath = Paths.get(pathDirector); + boolean isExists = Files.exists(directoryPath); + if (!isExists) { + try { + DirectionEntity directionEntity = new DirectionEntity(); + Path path = Files.createDirectories(directoryPath); + directionEntity.setName(path.getFileName().toString()); + directionEntity.setPath(path.getParent().toAbsolutePath().toString()); + directionEntity.setCountFile(Long.valueOf(path.getNameCount())); + directionEntity.setCountDirection(0L); + System.out.println("... CREATED DIRECTION "); + + return directionEntity; + } catch (IOException e) { + e.printStackTrace(); + System.out.println("... FAILED CREATE DIRECTION "); + } + } else { + System.out.println("... FILE ALREADY EXISTS"); + } + return null; + } + + /** + * Hàm sửa tên của thư mục + * + * @param currentPathDirectory + * @param newPathDirectory + * @return + */ + @Override + public Boolean renameDirectory(String currentPathDirectory, String newPathDirectory) { + Path currentPath = Paths.get(currentPathDirectory); + Path newPath = Paths.get(newPathDirectory); + + try { + Files.move(currentPath, newPath); + System.out.println("RENAME SUCCESS..."); + return true; + } catch (IOException e) { + e.printStackTrace(); + System.out.println("CANNOT RENAME FILE..."); + return false; + } + } + + @Override + public Boolean deleteDirectory(String pathDirector) { + Path path = Paths.get(pathDirector); + + try { + if (!Files.isDirectory(path)) { + System.out.println("NOT A DIRECTORY"); + return false; + } + if (Files.list(path).findFirst().isPresent()) { + System.out.println("DIRECTORY CONTAINS FILES"); + return false; + } + Files.delete(path); + return true; + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } + + @Override + public Boolean copyDirectory(String sourceDirectory, String targetDirectory) { + Path sourcePath = Paths.get(sourceDirectory); + Path targetPath = Paths.get(targetDirectory); + + try { + if (!Files.exists(targetPath)) { + Files.createDirectories(targetPath); + } + Files.walk(sourcePath).forEach(source -> { + Path target = targetPath.resolve(sourcePath.relativize(source)); + try { + Files.copy(source, target); + } catch (IOException e) { + e.printStackTrace(); + } + }); + return true; + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/impl/FilesServiceImpl.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/impl/FilesServiceImpl.java new file mode 100644 index 0000000..e3bf088 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/crud/impl/FilesServiceImpl.java @@ -0,0 +1,152 @@ +package com.msoft.core.crud.impl; + +import com.msoft.core.crud.FilesService; +import com.msoft.core.entity.FileEntity; +import com.msoft.core.entity.Person; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Formatter; +import java.util.List; +import java.util.Scanner; + +public class FilesServiceImpl implements FilesService { + + public FilesServiceImpl(){} + + /** + * Lấy thông tin liên quan của file + * + * @param pathFile + * @return + */ + @Override + public FileEntity getInfoFileUsingPathFile(String pathFile) { + File file = new File(pathFile); + FileEntity fileEntity = new FileEntity(file.getName(), file.getParent(), file.getPath(), + file.getAbsolutePath(), file.getAbsoluteFile().toString(), file.exists()); + if (fileEntity.isExists()) { + return fileEntity; + } else { + System.out.println("File not exists...."); + return null; + } + } + + /** + * Khi đã chuyển đổi thông tin file từ pathFile thành Object File + * + * @param file - Object file sau khi đã lấy theo đường dẫn pathFile + * @return + */ + @Override + public FileEntity getInfoFileUsingFile(File file) { + FileEntity fileEntity = new FileEntity(file.getName(), file.getParent(), file.getPath(), + file.getAbsolutePath(), file.getAbsoluteFile().toString(), file.exists()); + if (fileEntity.isExists()) { + return fileEntity; + } else { + System.out.println("File not exists...."); + return null; + } + } + + /** + * Tạo file và ghi nội dung vào file + * + * @param pathFile + * @return + */ + @Override + public FileEntity createAndWriteContent2File(String pathFile, int numberOfLine) { + try { + Formatter formatter = new Formatter(pathFile); + for (int i = 0; i < numberOfLine; i++) { + formatter.format("%s,%s,%s", i, "KHONG MINH MANH_" + i, "NEO_" + i + "\r\n"); + } + formatter.close(); + + return getInfoFileUsingPathFile(pathFile); + } catch (FileNotFoundException e) { + e.printStackTrace(); + System.out.println("Can't formatter data of file..."); + return null; + } + } + + /** + * Đọc nội dung của File + * + * @param pathFile - đường dẫn path của File + * @return + */ + @Override + public List readContentOfFile(String pathFile) { + System.out.println(" ... START READING CONTENT OF FILE"); + File file = new File(pathFile); + try { + Scanner scanner = new Scanner(file); + List list = new ArrayList<>(); + while (scanner.hasNextLine()) { + Person person = convertString2Object(",", scanner.nextLine(), 3); + list.add(person); + } + scanner.close(); + return list; + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } + } + + /** + * Chuyển đổi từ một String sang dạng Object + * + * @param keyDetect - keyword dùng cho việc phân tách phần tử + * @param line - đầu vào dòng dữ liệu + * @param size - kích thước số thuộc tính, phần tử trên 1 dòng + * @return + */ + @Override + public Person convertString2Object(String keyDetect, String line, int size) { + Person person = new Person(); + if (!(line.length() == 0)) { + String[] parts = line.split(keyDetect); + if (parts.length == size) { + person.setId(Long.parseLong(parts[0])); + person.setName(parts[1]); + person.setCompany(parts[2]); + } + return person; + } else { + return null; + } + } + + /** + * Chỉ tạo file thôi mà chưa làm gì đối với nó hết + * + * @param pathFile + * @return + */ + @Override + public FileEntity onlyCreateFileWithPathFile(String pathFile) { + File file = new File(pathFile); + try { + if (file.createNewFile()) { + System.out.println("... CREATED FILE"); + return getInfoFileUsingFile(file); + } else { + System.out.println("... CAN'T CREATE FILE"); + if (file.exists()) { + System.out.println(" ... FILE EXISTS ALREADY"); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/entity/DirectionEntity.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/entity/DirectionEntity.java new file mode 100644 index 0000000..756023f --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/entity/DirectionEntity.java @@ -0,0 +1,73 @@ +package com.msoft.core.entity; + +import java.util.List; + +public class DirectionEntity { + private String name; + private String path; + private List files; + private Long countFile; + private Long countDirection; + + public DirectionEntity() { + } + + public DirectionEntity(String name, String path, List files, Long countFile, Long countDirection) { + this.name = name; + this.path = path; + this.files = files; + this.countFile = countFile; + this.countDirection = countDirection; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public List getFiles() { + return files; + } + + public void setFiles(List files) { + this.files = files; + } + + public Long getCountFile() { + return countFile; + } + + public void setCountFile(Long countFile) { + this.countFile = countFile; + } + + public Long getCountDirection() { + return countDirection; + } + + public void setCountDirection(Long countDirection) { + this.countDirection = countDirection; + } + + @Override + public String toString() { + return "DirectionEntity{" + + "name='" + name + '\'' + + ", path='" + path + '\'' + + ", files=" + files + + ", countFile=" + countFile + + ", countDirection=" + countDirection + + '}'; + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/entity/FileEntity.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/entity/FileEntity.java new file mode 100644 index 0000000..ecdf334 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/entity/FileEntity.java @@ -0,0 +1,90 @@ +package com.msoft.core.entity; + +public class FileEntity { + private String name; + private String parent; + private String path; + private String absolutePath; + private String absoluteFile; + private boolean exists; + + public FileEntity(String name, String parent, String path, + String absolutePath, String absoluteFile, + boolean exists) { + this.name = name; + this.parent = parent; + this.path = path; + this.absolutePath = absolutePath; + this.absoluteFile = absoluteFile; + this.exists = exists; + } + + public FileEntity(){} + + public FileEntity(String name, String parent, String path, boolean exists) { + this.name = name; + this.parent = parent; + this.path = path; + this.exists = exists; + } + + public String getAbsolutePath() { + return absolutePath; + } + + public void setAbsolutePath(String absolutePath) { + this.absolutePath = absolutePath; + } + + public String getAbsoluteFile() { + return absoluteFile; + } + + public void setAbsoluteFile(String absoluteFile) { + this.absoluteFile = absoluteFile; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getParent() { + return parent; + } + + public void setParent(String parent) { + this.parent = parent; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public boolean isExists() { + return exists; + } + + public void setExists(boolean exists) { + this.exists = exists; + } + + @Override + public String toString() { + return "FileEntity{" + + "name='" + name + '\'' + + ", parent='" + parent + '\'' + + ", path='" + path + '\'' + + ", absolutePath='" + absolutePath + '\'' + + ", absoluteFile='" + absoluteFile + '\'' + + ", exists=" + exists + + '}'; + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/entity/Person.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/entity/Person.java new file mode 100644 index 0000000..8da01e2 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/entity/Person.java @@ -0,0 +1,49 @@ +package com.msoft.core.entity; + +public class Person { + private Long id; + private String name; + private String company; + + public Person() { + } + + public Person(Long id, String name, String company) { + this.id = id; + this.name = name; + this.company = company; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCompany() { + return company; + } + + public void setCompany(String company) { + this.company = company; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", name='" + name + '\'' + + ", company='" + company + '\'' + + '}'; + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/monitor/FileWatcher.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/monitor/FileWatcher.java new file mode 100644 index 0000000..227efc9 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/monitor/FileWatcher.java @@ -0,0 +1,8 @@ +package com.msoft.core.monitor; + +import java.util.Map; + +public interface FileWatcher extends Runnable{ + + Map getFileMonitor(String pathDirectory); +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/monitor/impl/FileWatcherImpl.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/monitor/impl/FileWatcherImpl.java new file mode 100644 index 0000000..fded5a9 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/monitor/impl/FileWatcherImpl.java @@ -0,0 +1,80 @@ +package com.msoft.core.monitor.impl; + +import com.msoft.core.monitor.FileWatcher; + +import java.io.File; +import java.io.IOException; +import java.nio.file.*; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class FileWatcherImpl implements FileWatcher { + /** + * Xử lý các vấn đề monitor file + * Đường dẫn tuyệt đối của file + Thời gian sửa đổi lần cuối + * + * @param pathDirectory + * @return + */ + @Override + public Map getFileMonitor(String pathDirectory) { + + // Lưu thông tin của file trong thư mục cần monitor + Map mapFile = new HashMap<>(); + + try { + // Tạo một WatchService: + WatchService watchService = FileSystems.getDefault().newWatchService(); + + // Đường dẫn đến thư mục muốn theo dõi: + Path directory = Paths.get(pathDirectory); + + // Đăng ký thư mục với WatchService để bắt sự kiện: + directory.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY); + + // Vòng lặp để bắt sự kiện: + while (true) { + WatchKey key = null; + try { + key = watchService.take(); + } catch (InterruptedException e) { + return Collections.emptyMap(); + } + + // Xử lý các sự kiện trong WatchKey: + for (WatchEvent event : key.pollEvents()) { + WatchEvent.Kind kind = event.kind(); + + // Kiểm tra loại sự kiện là chỉnh sửa file + if (kind == StandardWatchEventKinds.ENTRY_MODIFY) { + // Lấy tên file đã được thay đổi + WatchEvent pathEvent = (WatchEvent) event; + Path path = pathEvent.context(); + File file = path.toFile(); + System.out.println("File: " + file.getAbsolutePath() + ", đã được chỉnh sửa: " + file.lastModified()); + mapFile.put(file.getAbsolutePath(), file.lastModified()); + } + } + + // Reset WatchKey để tiếp tục theo dõi sự kiện + boolean valid = key.reset(); + + // Nếu WatchKey không còn hợp lệ (ví dụ: thư mục bị xóa), thoát khỏi vòng lặp + if (!valid) { + break; + } + } + } catch (IOException e) { + e.printStackTrace(); + return Collections.emptyMap(); + } + return mapFile; + } + + @Override + public void run() { + System.out.println(" execute method run/FileWatcherImpl"); + this.getFileMonitor("data/input/03/03-01"); + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/utils/FileUtil.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/utils/FileUtil.java new file mode 100644 index 0000000..56f41d7 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/utils/FileUtil.java @@ -0,0 +1,107 @@ +package com.msoft.core.utils; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + * @author ManhKM on 9/13/2022 + * @project java-file-manager + */ +public class FileUtil { + + private final Logger logger = LogManager.getLogger(FileUtil.class); + + private String pattern = "register*"; + + /** + * Kiểm tra các file thuộc thư mục path. + * Lấy ra danh sách các file thuộc thư mục + đường dẫn đó. + * nếu số lượng file có trong thư mục đó > 0 thì khởi tạo connection + * Sau khi khởi tạo connection thì đọc toàn bộ danh sách các file đó. + * @param path - Đường dẫn path đến mơi chứa thư mục cần thực hiện | work/wait/register/retry + * @param isReload - true | có reload, false | không reload + */ + public void discovery(String path, boolean isReload) { + File directory = new File(path); + File[] fileList = directory.listFiles(new LogFilter(pattern)); + if (fileList == null) { + return; + } + if (fileList.length > 0) { + logger.info("Stating discovery path: {}, isReload: {}", path, isReload); + } + for (File f : fileList) { + if (f.isFile()) + logger.info(f.getName()); + readFile(f, isReload); + } + + } + + private void readFile(File f, boolean isReload) { + BufferedReader reader = null; + try { + long s = System.nanoTime(); + reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8")); + List arrUpdate = new ArrayList<>(); + + for (String content; (content = reader.readLine()) != null;) { + if (!isReload) { + // begin logic khong thi reload: + } + + String[] data = content.split(";"); + String method = data[0]; + String serviceId = data[2]; + String pkgId = data[3]; + String msisdn = data[4]; + String subId = data[5]; + String regDate = data[6]; + String channel = data[7]; + String numReg = data[8]; + String state = data[9]; + String isExtend = data[10]; + String startDate = data[11]; + String endDate = data[12]; + String nextExtend = data[13]; + String pkg = data[14]; + String numFree = data[15]; + String pkgCK = data[16]; + String progId = data[17] == null ? "" : data[17]; + String lastUpdate = data[18]; + String price = data[19]; + String firstTime = data[20]; + String numExt = data[21]; + String subMsisdn = data[22]; + String syntax = data[23] == null ? "" : data[23]; + // String cancelDate = data[24]; + String badDebit = data[25] == null ? "0" : data[25]; + System.out.println(method + " - " + badDebit); + } + + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + } + } + + + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/utils/LogFilter.java b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/utils/LogFilter.java new file mode 100644 index 0000000..ee3ea73 --- /dev/null +++ b/Java-File-Manager/java-file-manager/src/main/java/com/msoft/core/utils/LogFilter.java @@ -0,0 +1,56 @@ +package com.msoft.core.utils; + +import java.io.File; +import java.io.FilenameFilter; +import java.util.regex.Pattern; + +/** + * @author ManhKM on 9/13/2022 + * @project java-file-manager + */ +public class LogFilter implements FilenameFilter { + + private int type = 0; + private String pattern = ""; + private Pattern p = null; + + /** + * + * @param pattern + */ + public LogFilter(String pattern) { + this.pattern = pattern.replace("*", ""); + boolean isStartWith = pattern.startsWith("*"); + boolean isEndWith = pattern.endsWith("*"); + if (isStartWith && isEndWith) { + this.type = 1; + } else if (isStartWith) { + this.type = 2; + } else if (isEndWith) { + this.type = 3; + } else { + this.p = Pattern.compile(pattern); + } + + } + + /** + * + * @param dir - Đường dẫn đến trực tiếp file + * @param name - Tên của file + * @return + */ + @Override + public boolean accept(File dir, String name) { + switch(this.type) { + case 1: + return name.indexOf(this.pattern) > -1; + case 2: + return name.endsWith(this.pattern); + case 3: + return name.startsWith(this.pattern); + default: + return this.p.matcher(name).find(); + } + } +} diff --git a/Java-Http/pom.xml b/Java-Http/pom.xml new file mode 100644 index 0000000..463320d --- /dev/null +++ b/Java-Http/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + com.core + Java-Http + 1.0-SNAPSHOT + + + 8 + 8 + 4.5.2 + 4.5.13 + + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + + org.apache.httpcomponents + fluent-hc + ${fluent-hc.version} + + + + + \ No newline at end of file diff --git a/Java-Http/readme.md b/Java-Http/readme.md new file mode 100644 index 0000000..e4cc69b --- /dev/null +++ b/Java-Http/readme.md @@ -0,0 +1,4 @@ + +## Reference Document + +[Tạo và sử dụng HTTP Client Connection pool](https://huongdanjava.com/vi/tao-va-su-dung-http-client-connection-pool.html) \ No newline at end of file diff --git a/Java-Http/src/main/java/com/core/HttpClientExample.java b/Java-Http/src/main/java/com/core/HttpClientExample.java new file mode 100644 index 0000000..aba8298 --- /dev/null +++ b/Java-Http/src/main/java/com/core/HttpClientExample.java @@ -0,0 +1,44 @@ +package com.core; + +import java.io.IOException; +import org.apache.http.HttpEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; + +/** + * @author ManhKM on 8/3/2022 + * @project Java-Http + * ----- + * Thiết lập tunnel trên server 10.2.19.2 --> port 5000 -> connect đến webadmin + api + * Tạo HttpClient -> call đến local:8080 + */ +public class HttpClientExample { + + public static void main(String[] args) throws InterruptedException { + final String url = "http://localhost:5000/"; + final CloseableHttpClient httpclient = HttpClients.createSystem(); + + for(int i = 0; i < 10; i++){ + System.out.println("Starting index [" + i + "]"); + new Thread(new Runnable() { + @Override + public void run() { + try { + HttpGet httpGet = new HttpGet(url); + CloseableHttpResponse response = httpclient.execute(httpGet); + HttpEntity entity = response.getEntity(); + EntityUtils.consume(entity); + + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + }).start(); + } + Thread.sleep(10000); + } +} diff --git a/Java-Http/src/main/java/com/core/HttpClientPool.java b/Java-Http/src/main/java/com/core/HttpClientPool.java new file mode 100644 index 0000000..541a42e --- /dev/null +++ b/Java-Http/src/main/java/com/core/HttpClientPool.java @@ -0,0 +1,146 @@ +package com.core; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import org.apache.http.HttpEntity; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.conn.HttpClientConnectionManager; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; + +/** + * @author ManhKM on 8/10/2022 + * @project Java-Http + */ +public class HttpClientPool { + private static final PoolingHttpClientConnectionManager POOLING_CONN_MANAGER = new PoolingHttpClientConnectionManager(); + + static { + POOLING_CONN_MANAGER.setMaxTotal(20000); + POOLING_CONN_MANAGER.setDefaultMaxPerRoute(15000); + } + + private static final CloseableHttpClient client = HttpClients.custom().setConnectionManager((HttpClientConnectionManager)POOLING_CONN_MANAGER).build(); + + public static String sendPostSOAP(String request, String urlApi, int timeout, String contentType) throws IOException { + HttpPost httpPost = new HttpPost(urlApi); + RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(timeout).setConnectTimeout(timeout).setSocketTimeout(timeout).build(); + StringEntity stringEntity = new StringEntity(request, StandardCharsets.UTF_8); + httpPost.setConfig(requestConfig); + httpPost.setHeader("Content-Type", contentType); + httpPost.setHeader("SOAPAction", ""); + httpPost.setEntity((HttpEntity)stringEntity); + StringBuilder response = new StringBuilder(); + InputStreamReader isr = null; + BufferedReader in = null; + OutputStream out = null; + try (CloseableHttpResponse httpResponse = client.execute((HttpUriRequest)httpPost)) { + InputStream inputStream = httpResponse.getEntity().getContent(); + isr = new InputStreamReader(inputStream); + in = new BufferedReader(isr); + String value = null; + while ((value = in.readLine()) != null) + response.append(value); + in.close(); + return response.toString(); + } finally { + if (out != null) + try { + out.close(); + } catch (IOException iOException) {} + if (isr != null) + try { + isr.close(); + } catch (IOException iOException) {} + if (in != null) + try { + in.close(); + } catch (IOException iOException) {} + } + } + + public static String sendPostAPI(String request, String urlApi, int timeout, String cookie) throws IOException { + HttpPost httpPost = new HttpPost(urlApi); + RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(timeout).setConnectTimeout(timeout).setSocketTimeout(timeout).build(); + StringEntity stringEntity = new StringEntity(request, StandardCharsets.UTF_8); + httpPost.setConfig(requestConfig); + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Content-Type", "application/json"); + httpPost.setHeader("Cookie", cookie); + httpPost.setEntity((HttpEntity)stringEntity); + StringBuilder response = new StringBuilder(); + InputStreamReader isr = null; + BufferedReader in = null; + OutputStream out = null; + try (CloseableHttpResponse httpResponse = client.execute((HttpUriRequest)httpPost)) { + InputStream inputStream = httpResponse.getEntity().getContent(); + isr = new InputStreamReader(inputStream); + in = new BufferedReader(isr); + String value = null; + while ((value = in.readLine()) != null) + response.append(value); + in.close(); + return response.toString(); + } finally { + if (out != null) + try { + out.close(); + } catch (IOException iOException) {} + if (isr != null) + try { + isr.close(); + } catch (IOException iOException) {} + if (in != null) + try { + in.close(); + } catch (IOException iOException) {} + } + } + + public static String sendPostAPI(String request, String urlApi, int timeout) throws IOException { + HttpPost httpPost = new HttpPost(urlApi); + RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(timeout).setConnectTimeout(timeout).setSocketTimeout(timeout).build(); + StringEntity stringEntity = new StringEntity(request, StandardCharsets.UTF_8); + httpPost.setConfig(requestConfig); + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Content-Type", "application/json"); +// httpPost.setHeader("Cookie", cookie); + httpPost.setEntity((HttpEntity)stringEntity); + StringBuilder response = new StringBuilder(); + InputStreamReader isr = null; + BufferedReader in = null; + OutputStream out = null; + try (CloseableHttpResponse httpResponse = client.execute((HttpUriRequest)httpPost)) { + InputStream inputStream = httpResponse.getEntity().getContent(); + isr = new InputStreamReader(inputStream); + in = new BufferedReader(isr); + String value = null; + while ((value = in.readLine()) != null) + response.append(value); + in.close(); + return response.toString(); + } finally { + if (out != null) + try { + out.close(); + } catch (IOException iOException) {} + if (isr != null) + try { + isr.close(); + } catch (IOException iOException) {} + if (in != null) + try { + in.close(); + } catch (IOException iOException) {} + } + } +} diff --git a/Java-Http/src/main/java/com/core/HttpClientPoolExample.java b/Java-Http/src/main/java/com/core/HttpClientPoolExample.java new file mode 100644 index 0000000..d9a67b1 --- /dev/null +++ b/Java-Http/src/main/java/com/core/HttpClientPoolExample.java @@ -0,0 +1,46 @@ +package com.core; + +import java.io.IOException; +import org.apache.http.HttpEntity; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.util.EntityUtils; + +/** + * @author ManhKM on 8/3/2022 + * @project Java-Http + */ +public class HttpClientPoolExample { + + public static void main(String[] args) throws InterruptedException { + PoolingHttpClientConnectionManager pool = new PoolingHttpClientConnectionManager(); + pool.setDefaultMaxPerRoute(1); + pool.setMaxTotal(1); + final CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(pool).build(); + + final String url = "http://localhost:5000/"; + + for (int i = 0; i < 10; i++){ + new Thread(new Runnable() { + @Override + public void run() { + HttpGet httpGet = new HttpGet(url); + try { + CloseableHttpResponse response = httpClient.execute(httpGet); + HttpEntity entity = response.getEntity(); + EntityUtils.consume(entity); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + }).start(); + } + Thread.sleep(1000); + } +} diff --git a/Java-Interface/out/production/Java-Interface/com/core/interfacedemo/Shape.class b/Java-Interface/out/production/Java-Interface/com/core/interfacedemo/Shape.class new file mode 100644 index 0000000..3ecee42 Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/interfacedemo/Shape.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/interfacedemo/Square.class b/Java-Interface/out/production/Java-Interface/com/core/interfacedemo/Square.class new file mode 100644 index 0000000..890c4e9 Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/interfacedemo/Square.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Interface1.class b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Interface1.class new file mode 100644 index 0000000..20cc8ab Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Interface1.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Interface2.class b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Interface2.class new file mode 100644 index 0000000..f862c2b Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Interface2.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Interface3.class b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Interface3.class new file mode 100644 index 0000000..8ccf8c3 Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Interface3.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/multi_interface/MainMultiInheritance.class b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/MainMultiInheritance.class new file mode 100644 index 0000000..39eba60 Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/MainMultiInheritance.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/multi_interface/MultiInheritance.class b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/MultiInheritance.class new file mode 100644 index 0000000..9d98e53 Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/MultiInheritance.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/multi_interface/MultiInheritance2.class b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/MultiInheritance2.class new file mode 100644 index 0000000..d84b30c Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/MultiInheritance2.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Parent.class b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Parent.class new file mode 100644 index 0000000..82e7f6b Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/multi_interface/Parent.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/static_method/Car.class b/Java-Interface/out/production/Java-Interface/com/core/static_method/Car.class new file mode 100644 index 0000000..165fcef Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/static_method/Car.class differ diff --git a/Java-Interface/out/production/Java-Interface/com/core/static_method/Vehicle.class b/Java-Interface/out/production/Java-Interface/com/core/static_method/Vehicle.class new file mode 100644 index 0000000..cc88682 Binary files /dev/null and b/Java-Interface/out/production/Java-Interface/com/core/static_method/Vehicle.class differ diff --git a/Java-Interface/readme.md b/Java-Interface/readme.md new file mode 100644 index 0000000..e4650d4 --- /dev/null +++ b/Java-Interface/readme.md @@ -0,0 +1,13 @@ +## Reference Document: + 1: Interface trong Java 8 - Default method và Static method + https://gpcoder.com/3854-interface-trong-java-8-default-method-va-static-method/ + + +## Interface trong Java 8 - Default method và static method + 1. Phương thức default trong Interface - Default method + 1.1. Giới thiệu + 1.2. Điều gì xảy ra khi có đa thừa kế + 1.3. Tóm tắt một số đặc điểm quan trong về default methods trong Interface. + 2. Phương thức static trong Interface - Static method + + 3. Nhìn lại Abstract Classes vs Interfaces trong Java 8 \ No newline at end of file diff --git a/Java-Interface/src/com/core/interfacedemo/Shape.java b/Java-Interface/src/com/core/interfacedemo/Shape.java new file mode 100644 index 0000000..c8607ba --- /dev/null +++ b/Java-Interface/src/com/core/interfacedemo/Shape.java @@ -0,0 +1,17 @@ +package com.core.interfacedemo; + +/** + * Thực hiện khởi tạo một Interface Shape -> theo mô hình của Java 8 + * + draw() + * + setColor() -> mặc khi setColor sẽ in ra... + * -> Khi implement lại Shape thì nó không bắt buộc phải implement default method. + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public interface Shape { + void draw(); + + default void setColor(String color){ + System.out.println("Draw shape with color: " + color); + } +} diff --git a/Java-Interface/src/com/core/interfacedemo/Square.java b/Java-Interface/src/com/core/interfacedemo/Square.java new file mode 100644 index 0000000..001f735 --- /dev/null +++ b/Java-Interface/src/com/core/interfacedemo/Square.java @@ -0,0 +1,12 @@ +package com.core.interfacedemo; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public class Square implements Shape{ + @Override + public void draw() { + System.out.println("Draw one Square"); + } +} diff --git a/Java-Interface/src/com/core/multi_interface/Interface1.java b/Java-Interface/src/com/core/multi_interface/Interface1.java new file mode 100644 index 0000000..e178a11 --- /dev/null +++ b/Java-Interface/src/com/core/multi_interface/Interface1.java @@ -0,0 +1,11 @@ +package com.core.multi_interface; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public interface Interface1 { + default void doSomething(){ + System.out.println("Default method doSomething() in Interface1"); + } +} diff --git a/Java-Interface/src/com/core/multi_interface/Interface2.java b/Java-Interface/src/com/core/multi_interface/Interface2.java new file mode 100644 index 0000000..134e57c --- /dev/null +++ b/Java-Interface/src/com/core/multi_interface/Interface2.java @@ -0,0 +1,11 @@ +package com.core.multi_interface; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public interface Interface2 { + default void doSomething(){ + System.out.println("Default method doSomething() in Interface2"); + } +} diff --git a/Java-Interface/src/com/core/multi_interface/Interface3.java b/Java-Interface/src/com/core/multi_interface/Interface3.java new file mode 100644 index 0000000..00b5351 --- /dev/null +++ b/Java-Interface/src/com/core/multi_interface/Interface3.java @@ -0,0 +1,11 @@ +package com.core.multi_interface; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public interface Interface3 { + default void doSomething(){ + System.out.println("Execute in Interface3"); + } +} diff --git a/Java-Interface/src/com/core/multi_interface/MainMultiInheritance.java b/Java-Interface/src/com/core/multi_interface/MainMultiInheritance.java new file mode 100644 index 0000000..98baa73 --- /dev/null +++ b/Java-Interface/src/com/core/multi_interface/MainMultiInheritance.java @@ -0,0 +1,12 @@ +package com.core.multi_interface; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public class MainMultiInheritance { + public static void main(String[] args) { + MultiInheritance multiInheritance = new MultiInheritance(); + multiInheritance.doSomething(); + } +} diff --git a/Java-Interface/src/com/core/multi_interface/MultiInheritance.java b/Java-Interface/src/com/core/multi_interface/MultiInheritance.java new file mode 100644 index 0000000..37dacfd --- /dev/null +++ b/Java-Interface/src/com/core/multi_interface/MultiInheritance.java @@ -0,0 +1,20 @@ +package com.core.multi_interface; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public class MultiInheritance implements Interface1, Interface2{ + + public MultiInheritance(){ + + } + + @Override + public void doSomething() { + Interface1.super.doSomething(); + Interface2.super.doSomething(); +// Interface2.super.doSomething(); + } + +} diff --git a/Java-Interface/src/com/core/multi_interface/MultiInheritance2.java b/Java-Interface/src/com/core/multi_interface/MultiInheritance2.java new file mode 100644 index 0000000..9816540 --- /dev/null +++ b/Java-Interface/src/com/core/multi_interface/MultiInheritance2.java @@ -0,0 +1,19 @@ +package com.core.multi_interface; + +/** + * Bài toán: + * Nếu có một MultiInheritance -> kế thừa từ Parent + * -> implement Interface3 + * ??? Thì nếu triển khai hàm doSomething thì chúng sẽ tìm ở đâu? + * Interface hay ParentClass. + * + Các method trong Interface sẽ bị bỏ qua + * + Sẽ triển khai trong các Parent Class. + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public class MultiInheritance2 extends Parent implements Interface3{ + public static void main(String[] args) { + MultiInheritance2 m = new MultiInheritance2(); + m.doSomething(); //???? + } +} diff --git a/Java-Interface/src/com/core/multi_interface/Parent.java b/Java-Interface/src/com/core/multi_interface/Parent.java new file mode 100644 index 0000000..c1cb2b9 --- /dev/null +++ b/Java-Interface/src/com/core/multi_interface/Parent.java @@ -0,0 +1,11 @@ +package com.core.multi_interface; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public class Parent { + public void doSomething(){ + System.out.println("Execute in Parent"); + } +} diff --git a/Java-Interface/src/com/core/static_method/Car.java b/Java-Interface/src/com/core/static_method/Car.java new file mode 100644 index 0000000..a620a68 --- /dev/null +++ b/Java-Interface/src/com/core/static_method/Car.java @@ -0,0 +1,18 @@ +package com.core.static_method; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public class Car implements Vehicle{ + @Override + public void showLog() { + print(); + Vehicle.isValid(); + } + + public static void main(String[] args) { + Car car = new Car(); + car.showLog(); + } +} diff --git a/Java-Interface/src/com/core/static_method/Vehicle.java b/Java-Interface/src/com/core/static_method/Vehicle.java new file mode 100644 index 0000000..aba48db --- /dev/null +++ b/Java-Interface/src/com/core/static_method/Vehicle.java @@ -0,0 +1,20 @@ +package com.core.static_method; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Interface + */ +public interface Vehicle { + default void print(){ + if(isValid()){ + System.out.println("Vehicle printed"); + } + } + + static boolean isValid(){ + System.out.println("Vehicle is valid"); + return true; + } + + void showLog(); +} diff --git a/Java-JWT/java-sercurity/.gitignore b/Java-JWT/java-sercurity/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/Java-JWT/java-sercurity/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Java-JWT/java-sercurity/.mvn/wrapper/maven-wrapper.jar b/Java-JWT/java-sercurity/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..c1dd12f Binary files /dev/null and b/Java-JWT/java-sercurity/.mvn/wrapper/maven-wrapper.jar differ diff --git a/Java-JWT/java-sercurity/.mvn/wrapper/maven-wrapper.properties b/Java-JWT/java-sercurity/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..b7cb93e --- /dev/null +++ b/Java-JWT/java-sercurity/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/Java-JWT/java-sercurity/HELP.md b/Java-JWT/java-sercurity/HELP.md new file mode 100644 index 0000000..7ab90d9 --- /dev/null +++ b/Java-JWT/java-sercurity/HELP.md @@ -0,0 +1,19 @@ +# Getting Started + +### Reference Documentation + +For further reference, please consider the following sections: + +* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html) +* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.6.3/maven-plugin/reference/html/) +* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.6.3/maven-plugin/reference/html/#build-image) +* [Spring Security](https://docs.spring.io/spring-boot/docs/2.6.3/reference/htmlsingle/#boot-features-security) + +### Guides + +The following guides illustrate how to use some features concretely: + +* [Securing a Web Application](https://spring.io/guides/gs/securing-web/) +* [Spring Boot and OAuth2](https://spring.io/guides/tutorials/spring-boot-oauth2/) +* [Authenticating a User with LDAP](https://spring.io/guides/gs/authenticating-ldap/) + diff --git a/Java-JWT/java-sercurity/lib/javax.ejb.jar b/Java-JWT/java-sercurity/lib/javax.ejb.jar new file mode 100644 index 0000000..4ebf5ec Binary files /dev/null and b/Java-JWT/java-sercurity/lib/javax.ejb.jar differ diff --git a/Java-JWT/java-sercurity/lib/javax.jms.jar b/Java-JWT/java-sercurity/lib/javax.jms.jar new file mode 100644 index 0000000..d31451a Binary files /dev/null and b/Java-JWT/java-sercurity/lib/javax.jms.jar differ diff --git a/Java-JWT/java-sercurity/lib/javax.persistence.jar b/Java-JWT/java-sercurity/lib/javax.persistence.jar new file mode 100644 index 0000000..21d80e0 Binary files /dev/null and b/Java-JWT/java-sercurity/lib/javax.persistence.jar differ diff --git a/Java-JWT/java-sercurity/lib/javax.resource.jar b/Java-JWT/java-sercurity/lib/javax.resource.jar new file mode 100644 index 0000000..696a234 Binary files /dev/null and b/Java-JWT/java-sercurity/lib/javax.resource.jar differ diff --git a/Java-JWT/java-sercurity/lib/javax.servlet.jar b/Java-JWT/java-sercurity/lib/javax.servlet.jar new file mode 100644 index 0000000..0519e4a Binary files /dev/null and b/Java-JWT/java-sercurity/lib/javax.servlet.jar differ diff --git a/Java-JWT/java-sercurity/lib/javax.servlet.jsp.jar b/Java-JWT/java-sercurity/lib/javax.servlet.jsp.jar new file mode 100644 index 0000000..9c0631c Binary files /dev/null and b/Java-JWT/java-sercurity/lib/javax.servlet.jsp.jar differ diff --git a/Java-JWT/java-sercurity/lib/javax.servlet.jsp.jstl.jar b/Java-JWT/java-sercurity/lib/javax.servlet.jsp.jstl.jar new file mode 100644 index 0000000..7be17cc Binary files /dev/null and b/Java-JWT/java-sercurity/lib/javax.servlet.jsp.jstl.jar differ diff --git a/Java-JWT/java-sercurity/lib/javax.transaction.jar b/Java-JWT/java-sercurity/lib/javax.transaction.jar new file mode 100644 index 0000000..729c695 Binary files /dev/null and b/Java-JWT/java-sercurity/lib/javax.transaction.jar differ diff --git a/Java-JWT/java-sercurity/mvnw b/Java-JWT/java-sercurity/mvnw new file mode 100644 index 0000000..841f63a --- /dev/null +++ b/Java-JWT/java-sercurity/mvnw @@ -0,0 +1,331 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /usr/local/etc/mavenrc ]; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$( + \unset -f command + \command -v java + )" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Java-JWT/java-sercurity/mvnw.cmd b/Java-JWT/java-sercurity/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Java-JWT/java-sercurity/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Java-JWT/java-sercurity/pom.xml b/Java-JWT/java-sercurity/pom.xml new file mode 100644 index 0000000..dda026b --- /dev/null +++ b/Java-JWT/java-sercurity/pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.6.3 + + + com.manhkm.demo + java-sercurity + 0.0.1-SNAPSHOT + java-sercurity + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter-security + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.security + spring-security-test + test + + + + io.jsonwebtoken + jjwt + + + io.jsonwebtoken + jjwt + 0.7.0 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/JavaSercurityApplication.java b/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/JavaSercurityApplication.java new file mode 100644 index 0000000..6260f42 --- /dev/null +++ b/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/JavaSercurityApplication.java @@ -0,0 +1,13 @@ +package com.manhkm.demo.javasercurity; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class JavaSercurityApplication { + + public static void main(String[] args) { + SpringApplication.run(JavaSercurityApplication.class, args); + } + +} diff --git a/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/config/WebSecurityConfig.java b/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/config/WebSecurityConfig.java new file mode 100644 index 0000000..f412d8f --- /dev/null +++ b/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/config/WebSecurityConfig.java @@ -0,0 +1,48 @@ +package com.manhkm.demo.javasercurity.config; + +import com.manhkm.demo.javasercurity.filter.JWTFilter; +import com.manhkm.demo.javasercurity.utils.TokenJwtUtil; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +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; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +/** + * @author ManhKM on 2/15/2022 + * @project java-sercurity + */ +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + @Override + protected void configure(HttpSecurity httpSecurity) throws Exception { + httpSecurity + .cors().and().csrf().disable() + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) + .and() + .authorizeRequests() + .antMatchers(HttpMethod.GET, "/", "/*.html", "/favicon.ico", "/**/*.html", "/**/*.css", "/**/*.js").permitAll() + .antMatchers(HttpMethod.POST, "/login").permitAll() + .anyRequest().authenticated() + .and() + .addFilterBefore(new JWTFilter(), UsernamePasswordAuthenticationFilter.class) + // disable page caching + .headers().cacheControl(); + } + +// public String login(String username, String password) { +// //Kiểm tra user/pass trong CSDL +// //Nếu hợp lệ thì sinh JWT theo userId hoặc username và trả về cho client +// { +// String token = TokenJwtUtil.generateJwt(userId); +// return jwt; +// } +// //User/pass không hợp lệ thì đăng nhập không thành công +// return null; +// } +} diff --git a/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/filter/JWTFilter.java b/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/filter/JWTFilter.java new file mode 100644 index 0000000..9c8c2cd --- /dev/null +++ b/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/filter/JWTFilter.java @@ -0,0 +1,37 @@ +package com.manhkm.demo.javasercurity.filter; + +import com.manhkm.demo.javasercurity.utils.TokenJwtUtil; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.filter.GenericFilterBean; + +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.HttpServletResponse; +import java.io.IOException; + +/** + * @author ManhKM on 2/15/2022 + * @project java-sercurity + */ +public class JWTFilter extends GenericFilterBean { + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + try { + Authentication authentication = TokenJwtUtil.getAuthentication((HttpServletRequest) servletRequest); + SecurityContextHolder.getContext().setAuthentication(authentication); + filterChain.doFilter(servletRequest, servletResponse); + }catch(Exception e){ + String mess = e.toString(); + if (mess.matches("(?i)(.*)jwt(.*)")){//Bắn ra HTTP status 401 khi xác thực JWT gặp lỗi + ((HttpServletResponse) servletResponse).setStatus(HttpServletResponse.SC_UNAUTHORIZED); + }else { + throw e; + } + } + } +} diff --git a/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/utils/TokenJwtUtil.java b/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/utils/TokenJwtUtil.java new file mode 100644 index 0000000..bab0a5a --- /dev/null +++ b/Java-JWT/java-sercurity/src/main/java/com/manhkm/demo/javasercurity/utils/TokenJwtUtil.java @@ -0,0 +1,47 @@ +package com.manhkm.demo.javasercurity.utils; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import javax.servlet.http.HttpServletRequest; + +import java.util.Date; +import static java.util.Collections.emptyList; + +/** + * @author ManhKM on 2/15/2022 + * @project java-sercurity + */ +public class TokenJwtUtil { + static final long EXPIRATIONTIME = 86_400_000; // 1 day + static final String SECRET = "SecretKeyTungHuynh"; + static final String TOKEN_PREFIX = "Bearer"; + static final String HEADER_STRING = "Authorization"; + + public static String generateJwt(String userId) { + long expirationTime = EXPIRATIONTIME; + return Jwts.builder() + .setId(userId) + .setExpiration(new Date(System.currentTimeMillis() + expirationTime)) + .signWith(SignatureAlgorithm.HS512, SECRET) + .compact(); + } + + public static Authentication getAuthentication(HttpServletRequest request) { + String token = request.getHeader(HEADER_STRING); + if (token != null) { + // parse the token + Claims claims = Jwts.parser() + .setSigningKey(SECRET) + .parseClaimsJws(token.replace(TOKEN_PREFIX, "")) + .getBody(); + String userId = claims.getId(); + return userId != null ? + new UsernamePasswordAuthenticationToken(userId, emptyList()) : + null; + } + return null; + } +} diff --git a/Java-JWT/java-sercurity/src/main/resources/application.properties b/Java-JWT/java-sercurity/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Java-JWT/java-sercurity/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/Java-JWT/java-sercurity/src/test/java/com/manhkm/demo/javasercurity/JavaSercurityApplicationTests.java b/Java-JWT/java-sercurity/src/test/java/com/manhkm/demo/javasercurity/JavaSercurityApplicationTests.java new file mode 100644 index 0000000..620763b --- /dev/null +++ b/Java-JWT/java-sercurity/src/test/java/com/manhkm/demo/javasercurity/JavaSercurityApplicationTests.java @@ -0,0 +1,13 @@ +package com.manhkm.demo.javasercurity; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class JavaSercurityApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/Java-Lambda/.gitignore b/Java-Lambda/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/Java-Lambda/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Java-Lambda/docs/1-traditional-vs-lambda-3.png b/Java-Lambda/docs/1-traditional-vs-lambda-3.png new file mode 100644 index 0000000..f6e93ab Binary files /dev/null and b/Java-Lambda/docs/1-traditional-vs-lambda-3.png differ diff --git a/Java-Lambda/docs/2-traditional-vs-lambda-4.png b/Java-Lambda/docs/2-traditional-vs-lambda-4.png new file mode 100644 index 0000000..48610e9 Binary files /dev/null and b/Java-Lambda/docs/2-traditional-vs-lambda-4.png differ diff --git a/Java-Lambda/docs/3-bieu-thuc-lambda.png b/Java-Lambda/docs/3-bieu-thuc-lambda.png new file mode 100644 index 0000000..4d54a9f Binary files /dev/null and b/Java-Lambda/docs/3-bieu-thuc-lambda.png differ diff --git a/Java-Lambda/docs/4-function-interfacee.png b/Java-Lambda/docs/4-function-interfacee.png new file mode 100644 index 0000000..2610417 Binary files /dev/null and b/Java-Lambda/docs/4-function-interfacee.png differ diff --git a/Java-Lambda/gpcoder.com.md b/Java-Lambda/gpcoder.com.md new file mode 100644 index 0000000..aa22127 --- /dev/null +++ b/Java-Lambda/gpcoder.com.md @@ -0,0 +1,674 @@ +## Biểu thức Lambda trong Java 8 – Lambda Expressions + +Đăng vào 07/05/2018 . Được đăng bởi GP Coder . 28192 Lượt xem . Toàn màn hình + +Lambda Expressions (Biểu thức Lambda) là một trong những tính năng mới được giới thiệu trong Java 8. + +Trước khi Java 8, mọi thứ chủ yếu là hướng đối tượng. Ngoại trừ các kiểu dữ liệu nguyên thủy (primitive type), mọi thứ trong java tồn tại dưới dạng đối tượng. Tất cả các lời gọi đến các method/ function sẽ được thực hiện bằng cách sử dụng các class hoặc object. Các method/ function không tồn tại độc lập. + +Với Java 8, lập trình chức năng (functional programming) đã được giới thiệu. Vì vậy, chúng ta có thể dễ dàng sử dụng các chức năng ẩn danh (anonymous functions). Nó tạo điều kiện cho các lập trình viên lập trình Functional và phát triển ứng dụng đơn giản hơn rất nhiều so với những phiên bản trước đó. Nó cung cấp một cách rõ ràng và ngắn ngọn để đại diện cho một Functional Interface sử dụng một biểu thức lamda. + +### 1. Lambda expression là gì ? +Lambda Expression (biểu thức Lambda) có thể được định nghĩa là một hàm ẩn danh, cho phép người dùng chuyển các phương thức làm đối số. Điều này giúp loại bỏ rất nhiều mã soạn sẵn. + +Lambda Expression là một hàm không có tên và không thuộc bất kỳ lớp nào, không có phạm vi truy cập (private, public hoặc protected), không khai báo kiểu trả về. + +#### 1.1. Tại sao sử dụng biểu thức Lambda? +Cung cấp bản implement cho Functional interface. + +Viết ít code hơn. + +Hiệu quả hơn nhờ hỗ trợ thực hiện tuần tự (sequential) và song song (parallel) thông qua Stream API. + +#### 1.2. Cú pháp của biểu thức Lambda + +``` java +(argument-list) -> {body} +``` + +Biểu thức Lambda trong java gồm có 3 thành phần sau: + +Argument-list: có thể không có, có một hoặc nhiều tham số + +Arrow-token: được sử dụng để liên kết arguments-list và body của biểu thức. + +Body: chứa các biểu thức và câu lệnh cho biểu thức lambda. + +Chúng ta có thể viết lambda expression bằng nhiều cách tùy thuộc vào việc sử dụng nó trong một số trường hợp như sau: + ++ Tùy chọn khai báo kiểu dữ liệu: Bạn không cần phải khai báo kiểu dữ liệu cho các parameter truyền vào. Trình biên dịch sẽ tự suy luận ra kiểu dữ liệu từ giá trị của các parameter. + ++ Tùy chọn sử dụng dấu ngoặc (): Trong trường hợp bạn chỉ truyền vào một parameter duy nhất thì chúng ta có thể bỏ qua cặp dấu ngoặc (). Nếu như có nhiều parameter thì phải sử dụng dấu ngoặc. + ++ Tùy chọn sử dụng dấu ngoặc {}: Trong trường hợp phần body code của chúng ta chỉ thực hiện 1 statement duy nhất thì chúng ta cũng có thể loại bỏ luôn cặp dấu ngoặc {}. + ++ Tùy chọn sử dụng lệnh return: Trong biểu thức Lambda, nếu chỉ có một câu lệnh, bạn có thể sử dụng hoặc không sử dụng từ khoá return. Bạn phải sử dụng từ khóa return khi biểu thức lambda chứa nhiều câu lệnh. + +```java +// No argument and one-statement method body + +() -> expression + +// One argument and one-statement method body + +(parameters) -> expression + +// Arguments separated by commas and block body + +(arg1, arg2, ...) -> { +body-block +} + +// With arguments and block body, return value + +(arg1, arg2, ...) -> { +body-block; +return return-value; +} +``` + +#### 1.3. So sánh Lambda expression vs method + +Một phương thức (method/ function) trong Java gồm các phần chính sau: + +Name: tên phương thức. + +Parameter list: danh sách các tham số. + +Body: biểu thức, câu lệnh xử lý. + +return type: kiểu dữ liệu trả về. + +Một biểu thức Lambda (Lambda expression) trong Java gồm các phần chính sau: + +No name: không có tên phương thức, nó là một phương thức ẩn danh (anonymous method). +Parameter list: danh sách các tham số. +Body: biểu thức, câu lệnh xử lý. +No return type: không có kiểu trả về tường minh, trình biên dịch Java 8 có thể tự suy luận ra kiểu dữ liệu trả về dựa vào code thực thi. +Sử dụng biểu thức Lambda +Để sử dụng biểu thức lambda, chúng ta cần tạo Functional interface của riêng mình hoặc sử dụng Functional interface do Java cung cấp. Một interface chỉ có 1 phương thức trừu tượng duy nhất được gọi là Functional interface. Ví dụ: Runnable, callable, Comparator, … + +#### 1.4. Sử dụng Functional interface: + +Trước Java 8: chúng ta tạo anonymous inner classes. +Từ Java 8: sử dụng biểu thức lambda thay vì các anonymous inner classes. +Ví dụ sử dụng biểu thức Lambda +Ví dụ cách sắp xếp một tập hợp có sẵn trước phiên bản Java 8 + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +package com.gpcoder.Lambda; + +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class SortBefore8Example { + + public static void main(String[] args) { + + List languages = Arrays.asList("Java", "C#", "C++", "PHP", "Javascript"); + + Collections.sort(languages, new Comparator() { + + @Override + public int compare(String o1, String o2) { + return o1.compareTo(o2); + } + + }); + + for (String language : languages) { + System.out.println(language); + } + } +} +Sử dụng Lambda của Java 8 ta có thể viết lại như sau: + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +package com.gpcoder.Lambda; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class SortJava8Example { + + public static void main(String[] args) { + + List languages = Arrays.asList("Java", "C#", "C++", "PHP", "Javascript"); + + Collections.sort(languages, (String o1, String o2) -> { + return o1.compareTo(o2); + }); + + for (String language : languages) { + System.out.println(language); + } + } +} +Như bạn thấy sử dụng biểu thức Lambda code của chúng ta ngắn gọn hơn rất nhiều. Chúng ta không cần viết tên interface, tên phương thức. + +Trong một khối lệnh nếu chỉ có một lệnh duy nhất, ta có thể bỏ đi { }, khi đó đoạn code trên bạn có thể viết như sau: + +1 +Collections.sort(languages, (String o1, String o2) -> o1.compareTo(o2) ); +Trình biên dịch (Compiler) của Java có thể biết được kiểu phần tử trong tập hợp cần sắp xếp là kiểu gì, trong ví dụ này là kiểu String, và vì vậy bộ so sánh ( Comparator) chắc chắn là so sánh các kiểu dữ liệu String. Đoạn code trên có thể viết ngắn gọn hơn như sau: + +1 +Collections.sort(languages, (o1, o2) -> o1.compareTo(o2)); +Các ví dụ khác với biểu thức Lambda +Một biểu thức lambda có thể có không, một hoặc nhiều tham số. Số lượng tham số của biểu thức Lambda phụ thuộc vào số lượng tham số của phương thức trừu tượng của Functional Interface. + +Hãy xem các ví dụ sau: + +Ví dụ biểu thức Lambda không có tham số +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +package com.gpcoder.Lambda; + +@FunctionalInterface +interface Sayable1 { +public String say(); +} + +public class LambdaExpression_1 { +public static void main(String[] args) { +Sayable1 s = () -> { +return "I have nothing to say."; +}; +System.out.println(s.say()); +} +} +Ví dụ biểu thức Lambda có một tham số duy nhất +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +package com.gpcoder.Lambda; + +@FunctionalInterface +interface Sayable2 { +public String say(String name); +} + +public class LambdaExpression2 { +public static void main(String[] args) { + + // Lambda expression with single parameter. + Sayable2 s1 = (name) -> { + return "Hello, " + name; + }; + System.out.println(s1.say("GP Coder")); + + // Shorter + Sayable2 s2 = name -> { + return "Hello, " + name; + }; + System.out.println(s2.say("GP Coder")); + + // Shortest + Sayable2 s3 = name -> "Hello, " + name; + System.out.println(s3.say("GP Coder")); + } +} +Ví dụ biểu thức Lambda có nhiều tham số, sử dụng hoặc không sử dụng từ khóa return +Trong biểu thức Lambda, nếu chỉ có một câu lệnh, bạn có thể sử dụng hoặc không sử dụng từ khoá return. Bạn phải sử dụng từ khóa return khi biểu thức lambda chứa nhiều câu lệnh. + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +package com.gpcoder.Lambda; + +@FunctionalInterface +interface Addable { +int add(int a, int b); +} + +public class LambdaExpression3 { + + public static void main(String[] args) { + + // Multiple parameters with data type in lambda expression + Addable ad1 = (int a, int b) -> (a + b); + System.out.println(ad1.add(10, 20)); + + // Multiple parameters in lambda expression + Addable ad2 = (a, b) -> (a + b); + System.out.println(ad2.add(10, 20)); + + // Lambda expression without return keyword. + Addable ad3 = (a, b) -> (a + b); + System.out.println(ad3.add(10, 20)); + + // Lambda expression with return keyword. + Addable ad4 = (a, b) -> { + return (a + b); + }; + System.out.println(ad4.add(10, 20)); + + // Lambda expression without return keyword. + Addable ad5 = (a, b) -> (a + b); + System.out.println(ad5.add(10, 20)); + + // Lambda expression with multi-statement + Addable ad6 = (a, b) -> { + int sum = (a + b); + return sum; + }; + System.out.println(ad6.add(10, 20)); + } + +} +Ví dụ biểu thức Lambda với vòng lặp Foreach +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +package com.gpcoder.Lambda; + +import java.util.Arrays; +import java.util.List; + +public class LambdaExpression4 { + + public static void main(String[] args) { + + List languages = Arrays.asList("Java", "C#", "C++", "PHP", "Javascript"); + + // Using Lambda expression + languages.forEach(n -> System.out.println(n)); + } +} +Ví dụ biểu thức Lambda tạo Thread +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +package com.gpcoder.Lambda; + +public class LambdaExpression5 { + + public static void main(String[] args) { + // Using an anonymous inner class + Runnable r1 = new Runnable() { + public void run() { + System.out.println("Runnable 1"); + } + }; + + // Using Lambda Expression for Funcational Interface + Runnable r2 = () -> System.out.println("Runnable 2"); + + r1.run(); + r2.run(); + } +} +Ví dụ biểu thức Lambda với Filter Collection Data +Ví dụ hiển thị danh sách sản phẩm có giá 20000. + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +package com.gpcoder.lambda; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +class Product { +int id; +String name; +float price; + + public Product(int id, String name, float price) { + super(); + this.id = id; + this.name = name; + this.price = price; + } +} + +public class LambdaExpression6 { + + public static void main(String[] args) { + + List list = new ArrayList<>(); + list.add(new Product(1, "Samsung A5", 17000f)); + list.add(new Product(3, "Iphone 6S", 65000f)); + list.add(new Product(2, "Sony Xperia", 25000f)); + list.add(new Product(4, "Nokia Lumia", 15000f)); + list.add(new Product(5, "Redmi4 ", 26000f)); + list.add(new Product(6, "Lenevo Vibe", 19000f)); + + // using lambda to filter data + Stream filtered_data = list.stream().filter(p -> p.price > 20000); + + // using lambda to iterate through collection + filtered_data.forEach(product -> System.out.println(product.name + ": " + product.price)); + } +} +Kết quả thực thi chương trình: + +1 +2 +3 +Iphone 6S: 65000.0 +Sony Xperia: 25000.0 +Redmi4 : 26000.0 +Phạm vi truy cập trong biểu thức Lambda +Việc truy cập các biến phạm vi bên ngoài từ các biểu thức lambda rất giống với các đối tượng ẩn danh (anonymous objects). Bạn có thể truy cập bất kỳ biến final, static hoặc biến chỉ được gán một lần. Biểu thức Lambda throw một lỗi biên dịch, nếu một biến được gán một giá trị lần thứ hai. + +Truy cập biến local – Accessing local variables +Chúng ta có thể truy cập các biến final và biến chỉ được gán một lần. + +Ví dụ: + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +package com.gpcoder.Lambda; + +@FunctionalInterface +interface Converter { +T convert(F from); +} + +public class Java8Scope1 { + + public static void doSomething1() { + final int num = 1; + Converter stringConverter = (from) -> String.valueOf(from + num); + + stringConverter.convert(2); // 3 + } + + public static void doSomething2() { + int num = 1; + Converter stringConverter = (from) -> String.valueOf(from + num); + + stringConverter.convert(2); // 3 + } + + public static void doSomething3() { + int num = 1; + Converter stringConverter = (from) -> String.valueOf(from + num); + + stringConverter.convert(2); // 3 + + // Lambda expression will throw error at num varialbe. + // Local variable num defined in an enclosing scope must be final or effectively + // num = 3; + } + +} +Truy cập Accessing fields and static variables +Chúng ta có thể truy cập và thay đổi các trường hoặc biến static. + +Ví dụ: + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +package com.gpcoder.Lambda; + +public class Java8Scope2 { + + static int outerStaticNum; + int outerNum; + + void testScopes() { + Converter stringConverter1 = (from) -> { + outerNum = 1; + return String.valueOf(from); + }; + + Converter stringConverter2 = (from) -> { + outerStaticNum = 1; + return String.valueOf(from); + }; + } + +} +Truy cập với phương thức mặc định trong Interface – Accessing Default Interface Methods +Phương thức mặc định (Default methods) không thể truy cập bên trong Biểu thức Lambda. + +Tài liệu tham khảo: + +https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html +https://www.javatpoint.com/java-lambda-expressions +https://www.ntu.edu.sg/home/ehchua/programming/java/JDK8_NewFeatures.html +4.9 +12 +Nếu bạn thấy hay thì hãy chia sẻ bài viết cho mọi người nhé! \ No newline at end of file diff --git a/Java-Lambda/huongdanjava.md b/Java-Lambda/huongdanjava.md new file mode 100644 index 0000000..005df51 --- /dev/null +++ b/Java-Lambda/huongdanjava.md @@ -0,0 +1,46 @@ +## Giới thiệu về Lambda Expression: + +1. Tại sao lại cần sử dụng Lambda Expression: + +2. Cách sử dụng Lambda Expression: + +2.1. @FunctionalInterface + Là một Interface trong đó chỉ chứa duy nhất một abstract method + +## Kiểu dữ liệu của Lambda Expression trong Java: + +Không một class và vì thế cũng khong một Object nào liên quan trực tiếp tới Lambda Expresion. + +Nó chỉ là một chỉ dẫn để Java tạo ra một Object cho các Function Interface. + + +## Function Interface trong Java: + +Function Interface phải là một Interface + +Function Interface chỉ có một và duy nhất một phương thức Abstract. Lambda Expression sẽ là người implement phương thức Abstract này. + +Chúng ta có thể sử dụng Annotation @FunctionalInterface để đánh dấu class mà chúng ta muốn nó là Functional Interface + +Nếu đã được đánh dấu @FunctionalInterface thì nếu cố tính thêm mới một Abstract khác thì sẽ gặp lỗi compile. + + +?? Tại sao trong Function Interface lại chỉ có một abstract method suy nhất. +Nếu có nhiều Abstract method trong Functional Interface thì khi Lambda triển khai thì làm sao biết được đâu là method cần triển khai. + +## Tìm hiểu về Functional Consumer trong Java: + + +## Tìm hiểu về Functional Interface Supplier trong Java: + + +## Tìm hiểu về Functional Interface Predicate trong Java: + + +## Tìm hiểu về Functional Interface Function trong Java: + + +## Method reference trong Java: + Object::methodName + + diff --git a/Java-Lambda/img.png b/Java-Lambda/img.png new file mode 100644 index 0000000..633a494 Binary files /dev/null and b/Java-Lambda/img.png differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/java/ConsumerLambda.class b/Java-Lambda/out/production/Java-Lambda/core/java/ConsumerLambda.class new file mode 100644 index 0000000..e0a6964 Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/java/ConsumerLambda.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/java/IntegerLambda.class b/Java-Lambda/out/production/Java-Lambda/core/java/IntegerLambda.class new file mode 100644 index 0000000..aad5999 Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/java/IntegerLambda.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/java/StringFunction.class b/Java-Lambda/out/production/Java-Lambda/core/java/StringFunction.class new file mode 100644 index 0000000..8beb974 Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/java/StringFunction.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/java/TestStringFunction.class b/Java-Lambda/out/production/Java-Lambda/core/java/TestStringFunction.class new file mode 100644 index 0000000..5e15274 Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/java/TestStringFunction.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/HelloInterface.class b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/HelloInterface.class new file mode 100644 index 0000000..515bccb Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/HelloInterface.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/LambdaExpression.class b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/LambdaExpression.class new file mode 100644 index 0000000..f3402b2 Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/LambdaExpression.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/collectionvslambda/CollectionVsLambda.class b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/collectionvslambda/CollectionVsLambda.class new file mode 100644 index 0000000..593b4b7 Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/collectionvslambda/CollectionVsLambda.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/comparatorvslambda/ComparatorVsLambda.class b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/comparatorvslambda/ComparatorVsLambda.class new file mode 100644 index 0000000..e63feda Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/comparatorvslambda/ComparatorVsLambda.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/comparatorvslambda/Developer.class b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/comparatorvslambda/Developer.class new file mode 100644 index 0000000..b6033bb Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/comparatorvslambda/Developer.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/oneparam/HelloInterfaceOneParam.class b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/oneparam/HelloInterfaceOneParam.class new file mode 100644 index 0000000..c52b34b Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/oneparam/HelloInterfaceOneParam.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/oneparam/LambdaExpressionOneParam.class b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/oneparam/LambdaExpressionOneParam.class new file mode 100644 index 0000000..9ea0f34 Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/oneparam/LambdaExpressionOneParam.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/twoparam/HelloInterfaceTwoParam.class b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/twoparam/HelloInterfaceTwoParam.class new file mode 100644 index 0000000..c3093a3 Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/twoparam/HelloInterfaceTwoParam.class differ diff --git a/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/twoparam/LambdaExpressionTwoParam.class b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/twoparam/LambdaExpressionTwoParam.class new file mode 100644 index 0000000..2722f68 Binary files /dev/null and b/Java-Lambda/out/production/Java-Lambda/core/lambdaexpression/twoparam/LambdaExpressionTwoParam.class differ diff --git a/Java-Lambda/readme.md b/Java-Lambda/readme.md new file mode 100644 index 0000000..72f03c5 --- /dev/null +++ b/Java-Lambda/readme.md @@ -0,0 +1,139 @@ +## Hướng dẫn thực hành với Lambda + + + + + +### Java Lambda Expressions + parameter -> expression + (parameter1, parameter2) -> expression + (parameter1, parameter2) -> { code block } + +### Using Lambda Expressions + 1. Function Interface + + Single Abstract Method - SAM -> Chứa một và chỉ một method abstract + @FunctionalInterface + + Một trong các ứng dụng quan trong của Lambda Expression để tạo ra + thể hiện (instance) cho chính interface đó. + + 2. Toán tử mũi tên + (->) chia biểu thức Lambda thành 2 phần: tham số và nội dung thực thi. + (int a, int b) -> { do something }; + 3. What? Why? + + anonymous function + + filter, try xuất dữ liệu + + hỗ trợ thực hiện: tuần tự: Sequential và song song Parallel. + Stream API. + + 4. Syntax of Lambda + (argument-list) -> {body} + Biểu thức lambda trong java có 3 thành phần chính: + + argument-list: Danh sách tham số, có thể có hoặc không, có một hoặc nhiều tham số. + Danh sách tham số: danh sách tham số có trong FunctionalInterface + Interface chỉ chứa một và chỉ một method abstract + + arrow-operator: toán tử mũi tên được sử dụng để liên kết danh sách tham số và body của biểu thức. + + Body: nội dung thực thi, là một khối lệnh hoặc một biểu thức. + + + 5. Ứng dụng của Lambda + + Implement Function Interface: + + Làm việc với Collection + -> Lambda vào còng forEach + + Anonymous inner class. + -> Comparator + + + 6. Note of Lambda + + +### Reference Document +[1. Java Lambda](https://www.w3schools.com/java/java_lambda.asp) +[2. Nắm rõ JAVA LAMBDA Expression cho người mới bắt đầu](https://viblo.asia/p/nam-ro-java-lambda-expression-cho-nguoi-moi-bat-dau-RQqKLNwbl7z) +[3. Functional Interface trong Java 8](https://gpcoder.com/3869-functional-interface-trong-java-8/) +[4. Biểu thức Lambda trong Java 8 - Lambda Expression](https://gpcoder.com/3898-bieu-thuc-lambda-trong-java-8-lambda-expressions/) + + +### Giới thiệu java 8 +![img.png](img.png) + 1. Giới thiệu Java 8 + 2. Một vài ví dụ về cách sử dụng java 7 so với Java 8 + 2.1. sort trong Java 7 và java 8 + 2.2. lọc + 3. MỘt số bài hay + +### Interface trong Java 8 - Default method và Static mehtod + 1. Phương thức default trong Interface - Default method + 1.1. Giới thiệu + 1.2. Điều gì sảy ra khi có đa thừa kế + 1.3. Tóm tắt một số đặc điểm quan trong về default methods trong interface + + 2. Phương thức static trong Interface - Static method + 3. Nhìn lại Abstract classes vs Interface trong Java 8 + + +### Functional Interface trong Java 8 + + +### Phương thức tham chiếu trong Java 8 - Method Reference + + +### Biểu thức Lambda trong Java 8 - Lambda Expression + + +### Phương thức forEach() trong java 8 + + +### Giới thiệu về Stream API trong Java 8 + + +### Optional trong java 8 + + +### Predicate trong Java 8 + + +### Consumer trong java 8 + + +### Supplier trong Java 8 + + +### Function trong Java 8 + + +### Lớp Collection trong Java 8 + + +### Sắp xếp trong Java 8 + + +### Date Time trong Java 8 + + +### Annotation trong Java 8 + + +### Lập trình đa luồng với CompletableFuture trong java 8 + + +### String Joiner trong Java 8 + + +### Base 64 Encoding và Decoding trong Java 8 + + +### Thực thi nhiều tác vụ cùng một lúc như thế nào trong Java + + +### Loại bỏ các phần từ trùng nhau trong một ArrayList như nào trong Java 8 + + +### Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8 + + +### Refactoring Design Pattern với tính năng mới trong java 8 + + +### Tài liệu tham khảo: + +[Biểu thức Lambda trong Java 8](https://gpcoder.com/3898-bieu-thuc-lambda-trong-java-8-lambda-expressions/) + diff --git a/Java-Lambda/src/core/gpcoder/SortJava8Example.java b/Java-Lambda/src/core/gpcoder/SortJava8Example.java new file mode 100644 index 0000000..b955507 --- /dev/null +++ b/Java-Lambda/src/core/gpcoder/SortJava8Example.java @@ -0,0 +1,24 @@ +package core.gpcoder; + +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class SortJava8Example { + public static void main(String[] args) { + List languages = Arrays.asList("a", "b", "c", "t", "m"); + + Collections.sort(languages, new Comparator() { + @Override + public int compare(String o1, String o2) { + return o1.compareTo(o2); + } + }); + + for (String language : languages){ + System.out.print(language + ", "); + } + + } +} diff --git a/Java-Lambda/src/core/gpcoder/SortJava8LambdaExample.java b/Java-Lambda/src/core/gpcoder/SortJava8LambdaExample.java new file mode 100644 index 0000000..031e0f3 --- /dev/null +++ b/Java-Lambda/src/core/gpcoder/SortJava8LambdaExample.java @@ -0,0 +1,29 @@ +package core.gpcoder; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class SortJava8LambdaExample { + public static void main(String[] args) { + System.out.println("Using Lambda Expression"); + List languages = Arrays.asList("a", "b", "c", "t", "m"); + + /** + * Có nghĩa là nó định nghĩa ra một hàm ẩn danh: + * No name + * Có danh sách tham số truyền vào như thường + * Body: xử lý biểu thức hoặc câu lệnh + * No return type: Không có kiểu giá trị trả về tường minh. + * Trình biên dịch Java 8 tự có thể duy luận ra kiểu dữ liệu khi code chạy + */ + Collections.sort(languages, (String o1, String o2) -> { + return o1.compareTo(o2); // Đối với 1 khối lệnh có thể bỏ {} + }); + + for (String language : languages){ + System.out.print(language + ", "); + } + + } +} diff --git a/Java-Lambda/src/core/huongdanjava/functioninterface/Example2.java b/Java-Lambda/src/core/huongdanjava/functioninterface/Example2.java new file mode 100644 index 0000000..415b39f --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/functioninterface/Example2.java @@ -0,0 +1,21 @@ +package core.huongdanjava.functioninterface; + +import java.util.function.Consumer; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + */ +public class Example2 { + public static void main(String[] args) { + Consumer c1 = (s) -> { + System.out.println(s + " ManhKM"); + }; + + Consumer c2 = (s) -> { + System.out.println(s + " UET-VNU"); + }; + + c1.andThen(c2).accept("Hello,"); + } +} diff --git a/Java-Lambda/src/core/huongdanjava/functioninterface/FunctionInterface.java b/Java-Lambda/src/core/huongdanjava/functioninterface/FunctionInterface.java new file mode 100644 index 0000000..fd9e14d --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/functioninterface/FunctionInterface.java @@ -0,0 +1,15 @@ +package core.huongdanjava.functioninterface; + +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + */ +public class FunctionInterface { + public static void main(String[] args) { + List s = Arrays.asList("Manh", "Trang"); + s.stream().forEach(System.out::println); + } +} diff --git a/Java-Lambda/src/core/huongdanjava/functioninterface/Printable.java b/Java-Lambda/src/core/huongdanjava/functioninterface/Printable.java new file mode 100644 index 0000000..22611fc --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/functioninterface/Printable.java @@ -0,0 +1,27 @@ +package core.huongdanjava.functioninterface; + +/** + * @author ManhKM on 11/4/2022 + * @project Java-Lambda + * ----- + * Khi sử dụng @FunctionalInterface đảm bảo được rằng nó chỉ một Abstract Method + */ +@FunctionalInterface +public interface Printable { + + /** + * Mục đích in ra màn hình giá trị của a + * @param a + */ + void print(int a); + + /** + * Default - có thể override hoặc không? + * @param name + */ + default void display(String name){ + System.out.println("Name: " + name); + } + +// void print2(int a); +} diff --git a/Java-Lambda/src/core/huongdanjava/functioninterface/PrintableDemo.java b/Java-Lambda/src/core/huongdanjava/functioninterface/PrintableDemo.java new file mode 100644 index 0000000..59baa5c --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/functioninterface/PrintableDemo.java @@ -0,0 +1,45 @@ +package core.huongdanjava.functioninterface; + +/** + * @author ManhKM on 11/4/2022 + * @project Java-Lambda + */ +public class PrintableDemo { + + public static void main(String[] args) { + + /** + * Khi khởi tạo đối tượng từ một Functinal Interface thì phải: + * 1. Override lại các method ẩn danh của nó + * 2. Object call lại chính method vừa Override đó. + * + * Kiểu giống như việc định nghĩa chỉ sử dụng tại thời điểm nó được khởi tạo + * Chứ không được tái sử dụng ở các lần sau này. + * + * Nếu muốn tái sử dụng lại nó thì cần phải có một Object implement lại interface đó + * Rồi từ đó tạo instance của chính implement đó. + * + */ + Printable obj = new Printable() { + @Override + public void print(int a) { + System.out.println(String.format("Value of a: %s", a)); + } + }; + + obj.print(100); + + /** + * Sử dụng Lambda Expression để định nghĩa method ẩn danh một cách sáng sủa hơn + */ + + Printable obj2 = (a) -> System.out.println(String.format("Value of a: %s", a)); + obj2.print(200); + + compare(a -> System.out.println("value: " + a)); + } + + public static void compare(Printable printable){ + printable.print(30); + } +} diff --git a/Java-Lambda/src/core/huongdanjava/functioninterface/SupplierFI.java b/Java-Lambda/src/core/huongdanjava/functioninterface/SupplierFI.java new file mode 100644 index 0000000..0eac941 --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/functioninterface/SupplierFI.java @@ -0,0 +1,22 @@ +package core.huongdanjava.functioninterface; + +import java.util.Arrays; +import java.util.List; +import java.util.function.Supplier; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + */ +public class SupplierFI { + public static void main(String[] args) { + List s = Arrays.asList("ManhKM", "TrangTT"); + s.stream().forEach( + x -> print(() -> x) + ); + } + + private static void print(Supplier supplier) { + System.out.println(supplier.get()); + } +} diff --git a/Java-Lambda/src/core/huongdanjava/lambdaex/Example.java b/Java-Lambda/src/core/huongdanjava/lambdaex/Example.java new file mode 100644 index 0000000..9e702c6 --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/lambdaex/Example.java @@ -0,0 +1,14 @@ +package core.huongdanjava.lambdaex; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + */ +public class Example { + public static void main(String[] args) { + SayHello1 sayHello1 = (name) -> { + System.out.println("Hello, " + name); + }; + sayHello1.say("ManhKM"); + } +} diff --git a/Java-Lambda/src/core/huongdanjava/lambdaex/SayHello1.java b/Java-Lambda/src/core/huongdanjava/lambdaex/SayHello1.java new file mode 100644 index 0000000..f2fe36c --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/lambdaex/SayHello1.java @@ -0,0 +1,9 @@ +package core.huongdanjava.lambdaex; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + */ +public interface SayHello1 { + void say(String name); +} diff --git a/Java-Lambda/src/core/huongdanjava/methodreference/Example.java b/Java-Lambda/src/core/huongdanjava/methodreference/Example.java new file mode 100644 index 0000000..4a6fcdc --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/methodreference/Example.java @@ -0,0 +1,15 @@ +package core.huongdanjava.methodreference; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + * ----- + * Object::methodName + */ +public class Example { + public static void main(String[] args) { + + SayHello sayHello = System.out::println; + sayHello.sayHello("ManhKM"); + } +} diff --git a/Java-Lambda/src/core/huongdanjava/methodreference/SayHello.java b/Java-Lambda/src/core/huongdanjava/methodreference/SayHello.java new file mode 100644 index 0000000..2927fe9 --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/methodreference/SayHello.java @@ -0,0 +1,11 @@ +package core.huongdanjava.methodreference; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + */ +@FunctionalInterface +interface SayHello { + + void sayHello(String name); +} diff --git a/Java-Lambda/src/core/huongdanjava/oldversion/Example.java b/Java-Lambda/src/core/huongdanjava/oldversion/Example.java new file mode 100644 index 0000000..dca660c --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/oldversion/Example.java @@ -0,0 +1,14 @@ +package core.huongdanjava.oldversion; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + * ----- + * Cách 1: Triển khai method sayHello của Interface thông qua class Implement chính Interface đó. + */ +public class Example { + public static void main(String[] args) { + SayHello sayHello = new SayHelloImpl(); + sayHello.say(); + } +} diff --git a/Java-Lambda/src/core/huongdanjava/oldversion/Example2.java b/Java-Lambda/src/core/huongdanjava/oldversion/Example2.java new file mode 100644 index 0000000..9ce646e --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/oldversion/Example2.java @@ -0,0 +1,19 @@ +package core.huongdanjava.oldversion; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + * ---- + * Cách 2: Triển khai method Interface thông qua Anonymous class: + */ +public class Example2 { + public static void main(String[] args) { + SayHello sh = new SayHello() { + @Override + public void say() { + System.out.println("Hello VietNam"); + } + }; + sh.say(); + } +} diff --git a/Java-Lambda/src/core/huongdanjava/oldversion/Example3.java b/Java-Lambda/src/core/huongdanjava/oldversion/Example3.java new file mode 100644 index 0000000..73367dc --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/oldversion/Example3.java @@ -0,0 +1,17 @@ +package core.huongdanjava.oldversion; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + * ----- + * Cách 3: Sử dụng thông qua Lambda Expression + */ +public class Example3 { + public static void main(String[] args) { + SayHello sh = () -> { + System.out.println("HelloWorld Lambda Expression"); + System.out.println("VietNam!!"); + }; + sh.say(); + } +} diff --git a/Java-Lambda/src/core/huongdanjava/oldversion/SayHello.java b/Java-Lambda/src/core/huongdanjava/oldversion/SayHello.java new file mode 100644 index 0000000..aaf141b --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/oldversion/SayHello.java @@ -0,0 +1,9 @@ +package core.huongdanjava.oldversion; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + */ +public interface SayHello { + void say(); +} diff --git a/Java-Lambda/src/core/huongdanjava/oldversion/SayHelloImpl.java b/Java-Lambda/src/core/huongdanjava/oldversion/SayHelloImpl.java new file mode 100644 index 0000000..75a8827 --- /dev/null +++ b/Java-Lambda/src/core/huongdanjava/oldversion/SayHelloImpl.java @@ -0,0 +1,13 @@ +package core.huongdanjava.oldversion; + +/** + * @author ManhKM on 7/21/2022 + * @project Java-Lambda + */ +public class SayHelloImpl implements SayHello{ + + @Override + public void say() { + System.out.println("HelloWorld"); + } +} diff --git a/Java-Lambda/src/core/java/ConsumerLambda.java b/Java-Lambda/src/core/java/ConsumerLambda.java new file mode 100644 index 0000000..5f65a8f --- /dev/null +++ b/Java-Lambda/src/core/java/ConsumerLambda.java @@ -0,0 +1,26 @@ +package core.java; + +import java.util.ArrayList; +import java.util.function.Consumer; + +/** + * @author ManhKM on 4/11/2022 + * @project Java-Lambda + */ +public class ConsumerLambda { + public static void main(String[] args) { + ArrayList numbers = new ArrayList<>(); + numbers.add(100); + numbers.add(100); + numbers.add(100); + numbers.add(100); + numbers.add(100); + numbers.add(100); + numbers.add(100); + numbers.add(100); + Consumer method = (n) -> { + System.out.println(n); + }; + numbers.forEach(method); + } +} diff --git a/Java-Lambda/src/core/java/IntegerLambda.java b/Java-Lambda/src/core/java/IntegerLambda.java new file mode 100644 index 0000000..d9dca65 --- /dev/null +++ b/Java-Lambda/src/core/java/IntegerLambda.java @@ -0,0 +1,26 @@ +package core.java; + +import java.util.ArrayList; + +/** + * @author ManhKM on 4/11/2022 + * @project Java-Lambda + */ +public class IntegerLambda { + public static void main(String[] args) { + ArrayList numbers = new ArrayList<>(); + numbers.add(10); + numbers.add(12); + numbers.add(12); + numbers.add(12); + numbers.add(12); + numbers.add(12); + numbers.add(12); + numbers.add(12); + numbers.forEach( + (n) -> { + System.out.println(n); + } + ); + } +} diff --git a/Java-Lambda/src/core/java/StringFunction.java b/Java-Lambda/src/core/java/StringFunction.java new file mode 100644 index 0000000..af999bd --- /dev/null +++ b/Java-Lambda/src/core/java/StringFunction.java @@ -0,0 +1,9 @@ +package core.java; + +/** + * @author ManhKM on 4/11/2022 + * @project Java-Lambda + */ +public interface StringFunction { + String run(String str); +} diff --git a/Java-Lambda/src/core/java/TestStringFunction.java b/Java-Lambda/src/core/java/TestStringFunction.java new file mode 100644 index 0000000..87dbbc4 --- /dev/null +++ b/Java-Lambda/src/core/java/TestStringFunction.java @@ -0,0 +1,19 @@ +package core.java; + +/** + * @author ManhKM on 4/11/2022 + * @project Java-Lambda + */ +public class TestStringFunction { + public static void main(String[] args) { + StringFunction exclaim = (s) -> s + "!"; + StringFunction ask = (s) -> s + "?"; + printFormatted("Hello", exclaim); + printFormatted("Hello", ask); + } + + public static void printFormatted(String str, StringFunction format){ + String result = format.run(str); + System.out.println(result); + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/HelloInterface.java b/Java-Lambda/src/core/lambdaexpression/HelloInterface.java new file mode 100644 index 0000000..8c3175c --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/HelloInterface.java @@ -0,0 +1,12 @@ +package core.lambdaexpression; + +/** + * Thực hiện định nghĩa một Functional Interface: + * Với một method: sayHello(); + * @author ManhKM on 4/12/2022 + * @project Java-Lambda + */ +@FunctionalInterface +public interface HelloInterface { + String sayHello(); +} diff --git a/Java-Lambda/src/core/lambdaexpression/LambdaExpression.java b/Java-Lambda/src/core/lambdaexpression/LambdaExpression.java new file mode 100644 index 0000000..db9e47e --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/LambdaExpression.java @@ -0,0 +1,21 @@ +package core.lambdaexpression; + +/** + * Xây dựng hàm thực hiện logic dựa trên InterfaceFunctional + * @author ManhKM on 4/12/2022 + * @project Java-Lambda + */ +public class LambdaExpression { + public static void main(String[] args) { + /** + * Khai báo một Functional Interface: HelloInterface + * s -> thực hiện trả về một giá trị String. + * Mục đích của Lambda -> tạo ra thể hiện của Functional Interface. + * + */ + HelloInterface s = () -> { + return "Hello Lambda"; + }; + System.out.println(s.sayHello()); + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/collectionvslambda/CollectionVsLambda.java b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/CollectionVsLambda.java new file mode 100644 index 0000000..eb2785e --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/CollectionVsLambda.java @@ -0,0 +1,26 @@ +package core.lambdaexpression.collectionvslambda; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Lambda + */ +public class CollectionVsLambda { + public static void main(String[] args) { + List listData = new ArrayList<>(); + // init data of listData: + listData.add("ManhKM"); + listData.add("HieuVT"); + listData.add("ThangLV"); + listData.add("LuongTD"); + + /** + * Using Lambda into forEach: + * Trong đó: n -> danh sách tham số: + * n đại diện cho một cái gì đó. + */ + listData.forEach(n -> System.out.println(n)); + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaCollection.java b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaCollection.java new file mode 100644 index 0000000..708fed2 --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaCollection.java @@ -0,0 +1,31 @@ +package core.lambdaexpression.collectionvslambda; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 11/4/2022 + * @project Java-Lambda + */ +public class LambdaCollection { + + public static void main(String[] args) { + + List list = new ArrayList<>(); + list.addAll(Arrays.asList( + new Staff(1, "ManhKM"), + new Staff(2, "TrangTT"), + new Staff(3, "TrangKT") + )); + + System.out.println("Danh sách nhân viên của Công ty: "); + /** + * Với mỗi phần tử nằm trong danh sách thì sử dụng lambda để duyệt từng nó ra + */ + list.forEach(item -> { + System.out.println("ID: " + item.getId() + " - NAME: " + item.getName()); + }); + + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaList.java b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaList.java new file mode 100644 index 0000000..9ddb03e --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaList.java @@ -0,0 +1,25 @@ +package core.lambdaexpression.collectionvslambda; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 11/4/2022 + * @project Java-Lambda + */ +public class LambdaList { + + public static void main(String[] args) { + List list = new ArrayList<>(); + list.add("ManhKM"); + list.add("TrangTT"); + list.add("TrangKT"); + + /** + * Nếu chỉ in ra không thì lambda là một lựa chọn cực hợp lý + */ + list.forEach(item -> System.out.print(item + ", ")); + System.out.println("----------"); + list.forEach(System.out::println); + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaMap.java b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaMap.java new file mode 100644 index 0000000..12f1d17 --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaMap.java @@ -0,0 +1,46 @@ +package core.lambdaexpression.collectionvslambda; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +/** + * @author ManhKM on 11/4/2022 + * @project Java-Lambda + */ +public class LambdaMap { + + public static void main(String[] args) { + + Map mapData = new HashMap<>(); + + mapData.put("MS01", new Staff(1, "Khong Minh Manh")); + mapData.put("MS02", new Staff(2, "Trang Thu Trang")); + mapData.put("MS03", new Staff(3, "Khong Thi Thu Trang")); + mapData.put("MS04", new Staff(4, "XXXX")); + + /** + * Duyệt MapData theo cách truyền thống + * Dùng String.format --> ĐỊnh dạng cho log gửi xuống file cũng OK đó nhé + */ + System.out.println("----Using Normal For-each----"); + for (Entry item : mapData.entrySet()){ + String key = item.getKey(); + Staff value = item.getValue(); + System.out.println(String.format("Key: %s - Staff[id: %s - value: %s]", key, value.getId(), value.getName())); + } + + /** + * Sử dụng cú pháp Lambda: + * Khi sử dụng từ 2 tham số trở lên thì cần phải sử dụng dấu () và , phân cách chúng + */ + System.out.println("----Using Lambda Expression----"); + mapData.forEach( + (key, value) -> System.out.println(String.format("Key: %s - Staff[id: %s - value: %s]", + key, value.getId(), value.getName())) + ); + + + + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaTraditional.java b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaTraditional.java new file mode 100644 index 0000000..76ec366 --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/LambdaTraditional.java @@ -0,0 +1,53 @@ +package core.lambdaexpression.collectionvslambda; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 11/4/2022 + * @project Java-Lambda + */ +public class LambdaTraditional { + + public static void main(String[] args) { + List list = new ArrayList<>(); + list.addAll(Arrays.asList( + new Staff(1, "AManhKM"), + new Staff(2, "FTrangTT"), + new Staff(3, "BTrangKT") + )); + + System.out.println("----Trước khi sort----"); + showData(list); + + /* + Quay về bài toán so thông qua CompareTo 2 Object + */ +// list.sort(new Comparator() { +// @Override +// public int compare(Staff o1, Staff o2) { +// return o1.getName().compareTo(o2.getName()); +// } +// }); + + /** + * Khi sử dụng dấu ngoặc nhọn trong body của Lambda + * Return sử dụng dấu ';' để đúng format + */ + list.sort((o1, o2) -> { + return o1.getName().compareTo(o2.getName()); + }); + + System.out.println("----Sau khi sort----"); + showData(list); + } + + private static void showData(List list) { + list.forEach(item -> { + System.out.println(String.format("ID: %s - NAME: %s", item.getId(), item.getName())); + }); + } + + +} diff --git a/Java-Lambda/src/core/lambdaexpression/collectionvslambda/Staff.java b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/Staff.java new file mode 100644 index 0000000..4bcdf77 --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/collectionvslambda/Staff.java @@ -0,0 +1,44 @@ +package core.lambdaexpression.collectionvslambda; + +/** + * @author ManhKM on 11/4/2022 + * @project Java-Lambda + * ----- + * Định nghĩa một Object Staff - nhân viên + */ +public class Staff { + private int id; + private String name; + + public Staff() { + } + + public Staff(int id, String name) { + this.id = id; + this.name = name; + } + + 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; + } + + @Override + public String toString() { + return "Staff{" + + "id=" + id + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/comparatorvslambda/ComparatorVsLambda.java b/Java-Lambda/src/core/lambdaexpression/comparatorvslambda/ComparatorVsLambda.java new file mode 100644 index 0000000..247c0af --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/comparatorvslambda/ComparatorVsLambda.java @@ -0,0 +1,48 @@ +package core.lambdaexpression.comparatorvslambda; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Lambda + */ +public class ComparatorVsLambda { + public static void main(String[] args) { + List listDevs = new ArrayList<>(); + + /** + * Init data: listDevs + */ + listDevs.add(new Developer("ManhKM", 18)); + listDevs.add(new Developer("LuongDT", 19)); + listDevs.add(new Developer("ThangLV", 16)); + + /** + * Using Method default for method sort(). + * + listDevs.sort(new Comparator() { + @Override + public int compare(Developer o1, Developer o2) { + return o2.getAge() - o1.getAge(); + } + }); + */ + + + /** + * Using Lambda in method sort: + * Mục địch lúc này sẽ viết làm hàm comparer của Interface Comparator: + */ + listDevs.sort((Developer o1, Developer o2) -> o1.getAge() - o2.getAge()); + + + /** + * Show data of List Developer: + */ + for (Developer item: listDevs) { + System.out.println(item.toString()); + } + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/comparatorvslambda/Developer.java b/Java-Lambda/src/core/lambdaexpression/comparatorvslambda/Developer.java new file mode 100644 index 0000000..e7104f5 --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/comparatorvslambda/Developer.java @@ -0,0 +1,41 @@ +package core.lambdaexpression.comparatorvslambda; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Lambda + */ +public class Developer { + private String name; + private int age; + + public Developer(){} + + public Developer(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; + } + + @Override + public String toString() { + return "Developer{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/oneparam/HelloInterfaceOneParam.java b/Java-Lambda/src/core/lambdaexpression/oneparam/HelloInterfaceOneParam.java new file mode 100644 index 0000000..b913d7e --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/oneparam/HelloInterfaceOneParam.java @@ -0,0 +1,10 @@ +package core.lambdaexpression.oneparam; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Lambda + */ +@FunctionalInterface +public interface HelloInterfaceOneParam { + String sayHello(String name); +} diff --git a/Java-Lambda/src/core/lambdaexpression/oneparam/LambdaExpressionOneParam.java b/Java-Lambda/src/core/lambdaexpression/oneparam/LambdaExpressionOneParam.java new file mode 100644 index 0000000..6b69b8b --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/oneparam/LambdaExpressionOneParam.java @@ -0,0 +1,19 @@ +package core.lambdaexpression.oneparam; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Lambda + */ +public class LambdaExpressionOneParam { + public static void main(String[] args) { + /** + * Thực hiện tạo instance của Interface: + * Trong đó method rả về trong Interface -> return String + * Hàm triển khai Lambda -> trả về một chuỗi String tương ứng. + */ + HelloInterfaceOneParam s = name -> { + return ("Hello, " + name); + }; + System.out.println(s.sayHello("ManhKM")); + } +} diff --git a/Java-Lambda/src/core/lambdaexpression/twoparam/HelloInterfaceTwoParam.java b/Java-Lambda/src/core/lambdaexpression/twoparam/HelloInterfaceTwoParam.java new file mode 100644 index 0000000..d0cfbc7 --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/twoparam/HelloInterfaceTwoParam.java @@ -0,0 +1,10 @@ +package core.lambdaexpression.twoparam; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Lambda + */ +@FunctionalInterface +public interface HelloInterfaceTwoParam { + String sayHello(String name, String com); +} diff --git a/Java-Lambda/src/core/lambdaexpression/twoparam/LambdaExpressionTwoParam.java b/Java-Lambda/src/core/lambdaexpression/twoparam/LambdaExpressionTwoParam.java new file mode 100644 index 0000000..aa288a7 --- /dev/null +++ b/Java-Lambda/src/core/lambdaexpression/twoparam/LambdaExpressionTwoParam.java @@ -0,0 +1,14 @@ +package core.lambdaexpression.twoparam; + +/** + * @author ManhKM on 4/12/2022 + * @project Java-Lambda + */ +public class LambdaExpressionTwoParam { + public static void main(String[] args) { + HelloInterfaceTwoParam s = (String name, String com) -> { + return "Hello, " + name + ". Welcome to " + com; + }; + System.out.println(s.sayHello("ManhKM", "UET-VNU")); + } +} diff --git a/Java-Logging/Logging-document-v1.0.docx b/Java-Logging/Logging-document-v1.0.docx new file mode 100644 index 0000000..918ebea Binary files /dev/null and b/Java-Logging/Logging-document-v1.0.docx differ diff --git a/Java-Logging/java-logging/docs/java-logging-entity.drawio b/Java-Logging/java-logging/docs/java-logging-entity.drawio new file mode 100644 index 0000000..fe3f551 --- /dev/null +++ b/Java-Logging/java-logging/docs/java-logging-entity.drawio @@ -0,0 +1 @@ +7Vxtb9o6FP41SPTDrkjCWz8CZRtSq/WOTpP2ZXITF3zrxMgxFPbr7zF2oIkTmnbx6CRLlZacHJvYzzknj584awWTePuJo9XyhkWYtvxOtG0FVy3f97zOEP6Rlp2y9PyOMiw4ibTT0TAnv7A2Zm5rEuE05ygYo4Ks8saQJQkORc6GOGdPebcHRvO/ukILbBjmIaKm9TuJxDIbV//yeOEzJoul/umhP1AXYpQ565GkSxSxp2emYNoKJpwxoY7i7QRTOXnZvKh2HyuuHm6M40TUafAYfP602f3wf8wms938aUqiafBB97JBdK0HfINIom9Y7LJZSJ9ITFECZ+MHloi5vuLBOaJkkcBxCLeBORg2mAsCEzjSFwRbgTVcEhpdox1by5tNBQofs7PxknHyC7pFVPcJl7nQseD3cx5z2RLMHbBynILPbTYDXsF0g7Y5x2uUCm0IGaVolZL7wzBixBckGTMhWKyd9NTAcPC2cs69A5KQApjFWPAduGQNOh2Nvg5/L4uGp2fB1Ne25bM4OjgiHcCLQ+dHjOFAw/wKyH0D8pY/lqlBsMyNkcyw3QobMQCzIPbYcPaIJ4wyAPsqYSooCKUFUxYXFD+IyqhIVygkyeJ673PVPVq+6pmQJgZtH+g+dZYkinAiEWUCCaTgk1itGEnEfqZ6Y/iDuZt0/um1enDjEzj3jufwJ925mLAExgLRLn8HQ2w8YRkf9WCvTiYzFjT0EMi1kM/8Ggc+KAG+gDEle+wUxlm9894EcAxQUXxE9E4CfvXBM1APTNSDEoQpusf0lqVEECb758q3gPy5wO359cAdWsK2W5HUMUxBey44TK6anwuV4RsG3clICzxV6qRzija4fc0Wac7JlYFGI6Vf8wHQt1X/e0ao3C05RtENSoDLcPfsb+jZ3335ye93SoAPPFtFol9RJMaju8nnn/PZj6nKe5kLxdqAtzhcC8bnmG9ICM1H04Kl2IKkX9dJIgvPvtORYElMwjGQd4wS01vgONWenKPdNUnNm6BgxMcu7yv6kkVPxbTy08dFtwTFWDnoAmnUwyVb0+g744+HIZwYQcrWPMT/rvFa9zqmLHyEfpWp6H43u5n+/PLtTvlSVvL730ezu59lfq4kv7Ik917LzEoz0xt2LWXmwFEze+h6NQuvrbI7rCi7ucdu+8JI/4jdchbiNG0fKqIkZqXUbYHF/Fh/2hd1KpCqpu2TjBCKwWmH9X1MRPvL/X84FFWOrlw1HNDDmvWqY4tDXpocEqWPjjo2RB0Hfp47Br3LeosGz7OFeNaxUcUkcVN5rykbldhM4WAhXPa/JfsvX0tW/qyM5JmasSMrTaF7bh3Jq1KHgWDM5BItYwMVyV6kB1mrUncnM9kLpLoyU8/aA8OUm6/ZIluKO6LQkMb0/ohClRRN2ULKi6p6qGOX9K/WloN3Tg5MddmRg8bgPTs7qFKQARKaMQOlBVS8XHpGA+SLJscE/kDUnJ8KmPKmAt+xgEZYwDBPArrDmoDb22PiVWmeIUzvflQnXrtQvMEUAuS0EwTQTL/fmUGfjk68qXIMGqETPVvvRTxTaHR0ojF469YJW3TCr9IUUyxklfc/LvSBS+yGkTffIJQiH/i2oDdFRKj4bguKXXngsCflxYy3tT7M6rfbfdp4ylfFwnuRBny3/9QivOeWBvwq2a9iF4Nb7VsKhLqrfXt5bkqAV3IWUYq/CULdsr+pp3tv2Ms93WvvMPWsKT1+pUDIkkRl/UR9qCWLaMma3r0h+O3y0Mxex66tJb3v9jpahHdw5r2OfqXwR1mK1auB9rEEnNpa+LzFV5yuqZjjyi2GxQZQyQWOYSpPNVhgcbyV7PVFRX1ydajhQK25h3FgTYEwpcXpVuAkMgkKGEfyU2I4u5c7amFewKQphNdXpx+J/P39/C9FnJENztZJhKPcQx9HxifHhUd+9jHBiywQFstALfApHCpgKKOHHFMkyCZ/c2UTr7u7ZfsvRTI+4l/m1YZBgWWoMelGR/SMfrq90/2oIRv97KPgMMLf+EzSlKb+psDI9t28GBgV+4csBEY/KMhQwzdGxuDyhY5sh4apXk0QkH1Zet2qpplVjfHJfNCvKVZbEy2DMuXKiZZNsASVUe9XtAzKZC23WmkI3nOLlkHZbrX9F6RYLFnUlkl94fLbXgCcXawMTMHqbyJ7lzW5XhUMFsjesLAbyXsr2fM6xS/oG2N7cHr8f5eU+/F/rwqm/wM= \ No newline at end of file diff --git a/Java-Logging/java-logging/libs/log4j-api-2.7-javadoc.jar b/Java-Logging/java-logging/libs/log4j-api-2.7-javadoc.jar new file mode 100644 index 0000000..7f82e18 Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-api-2.7-javadoc.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-api-2.7-sources.jar b/Java-Logging/java-logging/libs/log4j-api-2.7-sources.jar new file mode 100644 index 0000000..79f4398 Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-api-2.7-sources.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-api-2.7.jar b/Java-Logging/java-logging/libs/log4j-api-2.7.jar new file mode 100644 index 0000000..b921631 Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-api-2.7.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-api-scala_2.10-2.7-sources.jar b/Java-Logging/java-logging/libs/log4j-api-scala_2.10-2.7-sources.jar new file mode 100644 index 0000000..b7bb43d Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-api-scala_2.10-2.7-sources.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-api-scala_2.10-2.7.jar b/Java-Logging/java-logging/libs/log4j-api-scala_2.10-2.7.jar new file mode 100644 index 0000000..15eb335 Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-api-scala_2.10-2.7.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-api-scala_2.11-2.7-sources.jar b/Java-Logging/java-logging/libs/log4j-api-scala_2.11-2.7-sources.jar new file mode 100644 index 0000000..faf311f Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-api-scala_2.11-2.7-sources.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-api-scala_2.11-2.7.jar b/Java-Logging/java-logging/libs/log4j-api-scala_2.11-2.7.jar new file mode 100644 index 0000000..30849f1 Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-api-scala_2.11-2.7.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-core-2.7-javadoc.jar b/Java-Logging/java-logging/libs/log4j-core-2.7-javadoc.jar new file mode 100644 index 0000000..7304878 Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-core-2.7-javadoc.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-core-2.7-sources.jar b/Java-Logging/java-logging/libs/log4j-core-2.7-sources.jar new file mode 100644 index 0000000..2359b6b Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-core-2.7-sources.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-core-2.7-tests.jar b/Java-Logging/java-logging/libs/log4j-core-2.7-tests.jar new file mode 100644 index 0000000..cf52ca5 Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-core-2.7-tests.jar differ diff --git a/Java-Logging/java-logging/libs/log4j-core-2.7.jar b/Java-Logging/java-logging/libs/log4j-core-2.7.jar new file mode 100644 index 0000000..c0feb23 Binary files /dev/null and b/Java-Logging/java-logging/libs/log4j-core-2.7.jar differ diff --git a/Java-Logging/java-logging/libs/ojdbc8.jar b/Java-Logging/java-logging/libs/ojdbc8.jar new file mode 100644 index 0000000..bf41243 Binary files /dev/null and b/Java-Logging/java-logging/libs/ojdbc8.jar differ diff --git a/Java-Logging/java-logging/logs/business-a.log b/Java-Logging/java-logging/logs/business-a.log new file mode 100644 index 0000000..c43b43d --- /dev/null +++ b/Java-Logging/java-logging/logs/business-a.log @@ -0,0 +1,30 @@ +2022-02-14 15:31:43 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 15:31:43 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 15:31:43 PM ERROR [main] com.business.BusinessA. : Error From BusinessA +2022-02-14 16:09:02 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 16:09:02 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 16:09:02 PM ERROR [main] com.business.BusinessA. : Error From BusinessA +2022-02-14 16:10:48 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 16:10:48 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 16:10:48 PM ERROR [main] com.business.BusinessA. : Error From BusinessA +2022-02-14 16:12:48 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 16:12:48 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 16:12:48 PM ERROR [main] com.business.BusinessA. : Error From BusinessA +2022-02-14 16:19:31 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 16:19:31 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 16:19:31 PM ERROR [main] com.business.BusinessA. : Error From BusinessA +2022-02-14 16:22:08 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 16:22:08 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 16:22:08 PM ERROR [main] com.business.BusinessA. : Error From BusinessA +2022-02-14 16:26:12 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 16:26:12 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 16:26:12 PM ERROR [main] com.business.BusinessA. : Error From BusinessA +2022-02-14 16:34:27 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 16:34:27 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 16:34:27 PM ERROR [main] com.business.BusinessA. : Error From BusinessA +2022-02-14 16:37:47 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 16:37:47 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 16:37:47 PM ERROR [main] com.business.BusinessA. : Error From BusinessA +2022-02-14 16:39:36 PM INFO [main] com.business.BusinessA. : Info From BusinessA +2022-02-14 16:39:36 PM WARN [main] com.business.BusinessA. : Warn From BusinessA +2022-02-14 16:39:36 PM ERROR [main] com.business.BusinessA. : Error From BusinessA diff --git a/Java-Logging/java-logging/logs/error.log b/Java-Logging/java-logging/logs/error.log new file mode 100644 index 0000000..e69de29 diff --git a/Java-Logging/java-logging/logs/info.log b/Java-Logging/java-logging/logs/info.log new file mode 100644 index 0000000..e69de29 diff --git a/Java-Logging/java-logging/logs/server.log b/Java-Logging/java-logging/logs/server.log new file mode 100644 index 0000000..e69de29 diff --git a/Java-Logging/java-logging/logs/warn.log b/Java-Logging/java-logging/logs/warn.log new file mode 100644 index 0000000..e69de29 diff --git a/Java-Logging/java-logging/out/production/java-logging/com/business/BusinessA.class b/Java-Logging/java-logging/out/production/java-logging/com/business/BusinessA.class new file mode 100644 index 0000000..7fd2a8b Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/business/BusinessA.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/business/BusinessB.class b/Java-Logging/java-logging/out/production/java-logging/com/business/BusinessB.class new file mode 100644 index 0000000..658df5a Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/business/BusinessB.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/business/BusinessC.class b/Java-Logging/java-logging/out/production/java-logging/com/business/BusinessC.class new file mode 100644 index 0000000..162e634 Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/business/BusinessC.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/business/Main.class b/Java-Logging/java-logging/out/production/java-logging/com/business/Main.class new file mode 100644 index 0000000..c51e88b Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/business/Main.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/logging/Main.class b/Java-Logging/java-logging/out/production/java-logging/com/logging/Main.class new file mode 100644 index 0000000..eb07fd0 Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/logging/Main.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/logging/core/DatabaseUtils.class b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/DatabaseUtils.class new file mode 100644 index 0000000..a9c331e Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/DatabaseUtils.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/logging/core/LogManager.class b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/LogManager.class new file mode 100644 index 0000000..fcde93f Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/LogManager.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/logging/core/LogThread.class b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/LogThread.class new file mode 100644 index 0000000..6b4de25 Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/LogThread.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/logging/core/Logs.class b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/Logs.class new file mode 100644 index 0000000..f933ffd Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/Logs.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/logging/core/Task.class b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/Task.class new file mode 100644 index 0000000..3b05e5b Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/Task.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/logging/core/ThreadManager$1.class b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/ThreadManager$1.class new file mode 100644 index 0000000..1be39fe Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/ThreadManager$1.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/com/logging/core/ThreadManager.class b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/ThreadManager.class new file mode 100644 index 0000000..22547f2 Binary files /dev/null and b/Java-Logging/java-logging/out/production/java-logging/com/logging/core/ThreadManager.class differ diff --git a/Java-Logging/java-logging/out/production/java-logging/log4j2.xml b/Java-Logging/java-logging/out/production/java-logging/log4j2.xml new file mode 100644 index 0000000..11468c6 --- /dev/null +++ b/Java-Logging/java-logging/out/production/java-logging/log4j2.xml @@ -0,0 +1,42 @@ + + + + %d{yyyy-MM-dd HH:mm:ss a} %-5level [%t] %logger{36}.%M : %msg%n + logs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Java-Logging/java-logging/readme.md b/Java-Logging/java-logging/readme.md new file mode 100644 index 0000000..62123be --- /dev/null +++ b/Java-Logging/java-logging/readme.md @@ -0,0 +1,24 @@ +## Cách triển khai java-logging + +### Cách add file jar vào trong Project + + +### Cách đánh dấu file resource. + + +### Các lỗi vừa gặp + 1. Mở chuỗi kết nối Oracle Database với service-name: + jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl12c) (SERVER = DEDICATED))) + + 2. java.sql.SQLSyntaxErrorException: ORA-01950: no privileges on tablespace 'USERS' + Quyền đến tablespace không có: + Giải pháp: + ALTER USER QUOTA 100M ON + GRANT UNLIMITED TABLESPACE TO + Ví dụ: + ALTER USER corebasic QUOTA 100M ON USERS + GRANT UNLIMITED TABLESPACE TO corebasic + + + 3. ORA-00947: not enough values + Khi thao tác với table -> không đủ các trường giá trị. \ No newline at end of file diff --git a/Java-Logging/java-logging/resources/log4j2.xml b/Java-Logging/java-logging/resources/log4j2.xml new file mode 100644 index 0000000..11468c6 --- /dev/null +++ b/Java-Logging/java-logging/resources/log4j2.xml @@ -0,0 +1,42 @@ + + + + %d{yyyy-MM-dd HH:mm:ss a} %-5level [%t] %logger{36}.%M : %msg%n + logs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Java-Logging/java-logging/src/com/business/BusinessA.java b/Java-Logging/java-logging/src/com/business/BusinessA.java new file mode 100644 index 0000000..7ce15d7 --- /dev/null +++ b/Java-Logging/java-logging/src/com/business/BusinessA.java @@ -0,0 +1,17 @@ +package com.business; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public class BusinessA { + Logger logger = LogManager.getLogger(getClass()); + public BusinessA(){ + logger.info("Info From BusinessA"); + logger.warn("Warn From BusinessA"); + logger.error("Error From BusinessA"); + } +} diff --git a/Java-Logging/java-logging/src/com/business/BusinessB.java b/Java-Logging/java-logging/src/com/business/BusinessB.java new file mode 100644 index 0000000..33ec0d7 --- /dev/null +++ b/Java-Logging/java-logging/src/com/business/BusinessB.java @@ -0,0 +1,17 @@ +package com.business; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public class BusinessB { + Logger logger = LogManager.getLogger(getClass()); + public BusinessB(){ + logger.info("Info From BusinessB"); + logger.warn("Warn From BusinessB"); + logger.error("Error From BusinessB"); + } +} diff --git a/Java-Logging/java-logging/src/com/business/BusinessC.java b/Java-Logging/java-logging/src/com/business/BusinessC.java new file mode 100644 index 0000000..743ce44 --- /dev/null +++ b/Java-Logging/java-logging/src/com/business/BusinessC.java @@ -0,0 +1,17 @@ +package com.business; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public class BusinessC { + Logger logger = LogManager.getLogger(getClass()); + public BusinessC(){ + logger.info("Info From BusinessC"); + logger.warn("Warn From BusinessC"); + logger.error("Error From BusinessC"); + } +} diff --git a/Java-Logging/java-logging/src/com/business/Main.java b/Java-Logging/java-logging/src/com/business/Main.java new file mode 100644 index 0000000..0863ffb --- /dev/null +++ b/Java-Logging/java-logging/src/com/business/Main.java @@ -0,0 +1,26 @@ +package com.business; + +import com.logging.core.DatabaseUtils; +import com.logging.core.Logs; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.util.Date; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public class Main { + static Logger logger = LogManager.getLogger(Main.class); + public static void main(String[] args) { + logger.info("info"); + logger.warn("warn"); + logger.error("error"); + new BusinessA(); + new BusinessB(); + new BusinessC(); + } +} diff --git a/Java-Logging/java-logging/src/com/logging/Main.java b/Java-Logging/java-logging/src/com/logging/Main.java new file mode 100644 index 0000000..0a9ad89 --- /dev/null +++ b/Java-Logging/java-logging/src/com/logging/Main.java @@ -0,0 +1,63 @@ +package com.logging; + +import com.business.BusinessA; +import com.business.BusinessB; +import com.business.BusinessC; +import com.logging.core.DatabaseUtils; +import com.logging.core.Logs; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.util.Date; + + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public class Main { + static Logger logger = LogManager.getLogger(com.business.Main.class); + public static void main(String[] args) { + logger.info("info"); + logger.warn("warn"); + logger.error("error"); + new BusinessA(); + new BusinessB(); + new BusinessC(); + + Logs logs = new Logs(); + logs.setLevelLog("INFO"); + logs.setContent("Content"); + + long start = new Date().getTime(); + com.logging.core.LogManager logManager = new com.logging.core.LogManager(); + logManager.listen(); + logManager.submit(logs); + logger.info("Async: " + (new Date().getTime()-start) + "ms"); + start = new Date().getTime(); + new com.logging.Main().save(logs); + + logger.info("No-async: " + (new Date().getTime()-start) + "ms"); + } + + public void save(Logs item) { + PreparedStatement stmt = null; + Connection con = null; + try { + con = DatabaseUtils.getConnection(); + stmt = con.prepareStatement("INSERT INTO LOGS " + + " (LOGS_ID, LEVEL_LOG, CONTENT, CREATE_TIME)" + + " VALUES(LOGS_SEQ.NEXTVAL, ?, ?, SYSDATE)"); + stmt.setString(1, item.getLevelLog()); + stmt.setString(2, item.getContent()); + stmt.execute(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } finally { + DatabaseUtils.closeObject(stmt); + DatabaseUtils.closeObject(con); + } + } +} diff --git a/Java-Logging/java-logging/src/com/logging/core/DatabaseUtils.java b/Java-Logging/java-logging/src/com/logging/core/DatabaseUtils.java new file mode 100644 index 0000000..d62406e --- /dev/null +++ b/Java-Logging/java-logging/src/com/logging/core/DatabaseUtils.java @@ -0,0 +1,56 @@ +package com.logging.core; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.sql.*; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public class DatabaseUtils { + static Logger logger = LogManager.getLogger(DatabaseUtils.class); + private static Connection conn; + + public static Connection getConnection() throws SQLException, + ClassNotFoundException { + if (conn!=null && !conn.isClosed()){ + return conn; + } + String userName = "corebasic"; + String password = "corebasic"; + Class.forName("oracle.jdbc.driver.OracleDriver"); + String connectionURL = "jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl12c) (SERVER = DEDICATED)))"; + Connection conn = DriverManager.getConnection(connectionURL, userName, password); + return conn; + } + + public static void closeObject(Statement obj) { + try { + if (obj != null) { obj.close(); } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + public static void closeObject(ResultSet obj) { + try { + if (obj != null) { obj.close(); } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + public static void closeObject(Connection obj) { + try { + if (obj != null && !obj.isClosed()) { + if (!obj.getAutoCommit()) { obj.rollback(); } + obj.close(); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + +} diff --git a/Java-Logging/java-logging/src/com/logging/core/LogManager.java b/Java-Logging/java-logging/src/com/logging/core/LogManager.java new file mode 100644 index 0000000..e16b994 --- /dev/null +++ b/Java-Logging/java-logging/src/com/logging/core/LogManager.java @@ -0,0 +1,16 @@ +package com.logging.core; + +import java.util.ArrayList; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public class LogManager extends ThreadManager{ + @Override + public void doProcess(ArrayList items) { + LogThread logThread = new LogThread(); + logThread.setItems(items); + executorService.submit(logThread); + } +} diff --git a/Java-Logging/java-logging/src/com/logging/core/LogThread.java b/Java-Logging/java-logging/src/com/logging/core/LogThread.java new file mode 100644 index 0000000..115536c --- /dev/null +++ b/Java-Logging/java-logging/src/com/logging/core/LogThread.java @@ -0,0 +1,52 @@ +package com.logging.core; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.util.List; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public class LogThread extends Task{ + private final Logger logger = LogManager.getLogger(LogThread.class); + @Override + public Object call() throws Exception { + List lstLog = getItems(); + try { + if (lstLog != null && !lstLog.isEmpty()) { + save(lstLog); + } + } catch (Exception e) { + logger.error(e.toString(), e); + return 0; + } + return 1; + } + + public void save(List lst) { + PreparedStatement stmt = null; + Connection con = null; + try { + con = DatabaseUtils.getConnection(); + stmt = con.prepareStatement("INSERT INTO LOGS (LOGS_ID, LEVEL_LOG, CONTENT, CREATE_TIME)" + + " VALUES(LOGS_SEQ.NEXTVAL, ?, ?, SYSDATE)"); +// stmt = con.prepareStatement("INSERT INTO AD_SCHEDULE_LOG " + +// " (AD_SCHEDULE_LOG_ID, LEVEL_LOG, CONTENT, CREATE_TIME)" + +// " VALUES(AD_SCHEDULE_LOG_SEQ.NEXTVAL, ?, ?, SYSDATE)"); + for(Logs item : lst){ + stmt.setString(1, item.getLevelLog()); + stmt.setString(2, item.getContent()); + stmt.execute(); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } finally { + DatabaseUtils.closeObject(stmt); + DatabaseUtils.closeObject(con); + } + } +} diff --git a/Java-Logging/java-logging/src/com/logging/core/Logs.java b/Java-Logging/java-logging/src/com/logging/core/Logs.java new file mode 100644 index 0000000..9304907 --- /dev/null +++ b/Java-Logging/java-logging/src/com/logging/core/Logs.java @@ -0,0 +1,35 @@ +package com.logging.core; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public class Logs { + private Integer logsId; + private String levelLog; + private String content; + + public Integer getLogsId() { + return logsId; + } + + public void setLogsId(Integer logsId) { + this.logsId = logsId; + } + + public String getLevelLog() { + return levelLog; + } + + public void setLevelLog(String levelLog) { + this.levelLog = levelLog; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } +} diff --git a/Java-Logging/java-logging/src/com/logging/core/Task.java b/Java-Logging/java-logging/src/com/logging/core/Task.java new file mode 100644 index 0000000..ec1a6a1 --- /dev/null +++ b/Java-Logging/java-logging/src/com/logging/core/Task.java @@ -0,0 +1,18 @@ +package com.logging.core; + +import java.util.List; +import java.util.concurrent.Callable; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public abstract class Task implements Callable { + private List items; + public void setItems(List items){ + this.items = items; + } + public List getItems(){ + return items; + } +} \ No newline at end of file diff --git a/Java-Logging/java-logging/src/com/logging/core/ThreadManager.java b/Java-Logging/java-logging/src/com/logging/core/ThreadManager.java new file mode 100644 index 0000000..d322319 --- /dev/null +++ b/Java-Logging/java-logging/src/com/logging/core/ThreadManager.java @@ -0,0 +1,112 @@ +package com.logging.core; + +import org.apache.logging.log4j.Logger; + +import java.util.ArrayList; +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * @author ManhKM on 2/14/2022 + * @project java-logging + */ +public abstract class ThreadManager { + public final int BATCH_SIZE = 10;//Chương trình sẽ thực hiện doProcess khi hàng đợi vượt quá 10 phần tử + public final long WAIT_TIME_OUT = 1000; //ms + public final long TIME_OUT = 2 * 1000; //ms. Chương trình sẽ thực hiện doProcess với chu kỳ 2 giây + private final Logger logger = org.apache.logging.log4j.LogManager.getLogger(ThreadManager.class); + private final BlockingQueue sourceQueue = new LinkedBlockingQueue(); + protected ArrayList items = new ArrayList(BATCH_SIZE); + protected AtomicBoolean shouldWork = new AtomicBoolean(true); + protected AtomicBoolean isRunning = new AtomicBoolean(true); + private boolean listening = false; + private String name = "ACTION/API LOGGER"; + protected ExecutorService executorService = Executors.newFixedThreadPool(5); + private Thread mainThread; + + public ThreadManager() { + logger.debug("Start task manager named: " + name); + mainThread = new Thread(new Runnable() { + @Override + public void run() { + logger.info("Queued job manager " + name + " is running and watching for queue... "); + isRunning.set(true); + int recNum = 0; + long lgnStart = System.currentTimeMillis(); + while (shouldWork.get()) { + try { + Object item = sourceQueue.poll(WAIT_TIME_OUT, TimeUnit.MILLISECONDS); + if (item != null) { + items.add(item); + recNum++; + } + + if (recNum >= BATCH_SIZE || timedOut(lgnStart)) { + if (items.size() > 0) { + logger.info(String.format("Thread %s: %s submits %d item(s)", + Thread.currentThread().getName(), name, items.size())); + doProcess(items); + items = new ArrayList(BATCH_SIZE); + lgnStart = System.currentTimeMillis(); + recNum = 0; + } + } + } catch (Exception e) { + logger.error(e.getMessage()); + } + isRunning.set(false); + } + logger.info("Taskmanager " + name + " is stopped!!"); + } + + private boolean timedOut(Long startTime) { + return System.currentTimeMillis() - startTime > TIME_OUT; + } + }); + + } + + /** + * abstract method xử lý nghiệp vụ + * @param items + */ + public abstract void doProcess(ArrayList items); + + /** + * Bắt đầu lắng nghe dữ liệu cần xử lý từ hàng đợi + * Từ khóa synchronized + * Dùng trong việc tránh xử lý chiếm đóng tài nguyên của Thread. + */ + public synchronized void listen() { + if (!listening) { + mainThread.start(); + listening = true; + } + } + + public BlockingQueue getSourceQueue() { + return sourceQueue; + } + + public void stop() { + logger.info(String.format("%s received a termination signal, stopping ... ", name)); + this.shouldWork.set(false); + int tryTime = 0; + while (isRunning.get() && tryTime < 50) { + try { + Thread.currentThread().sleep(50L); + } catch (Exception ex) { + + } + tryTime++; + } + } + + /** + * Submit một đối tượng cần xử lý vào hàng đợi + * @param item + */ + public void submit(Object item) { + sourceQueue.offer(item); + } +} diff --git a/Java-Logging/spring-boot-log4j2/.gitignore b/Java-Logging/spring-boot-log4j2/.gitignore new file mode 100644 index 0000000..53b3ada --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/.gitignore @@ -0,0 +1,38 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### LOGGING ### +*.log +*.log.gz + diff --git a/Java-Logging/spring-boot-log4j2/.mvn/wrapper/maven-wrapper.jar b/Java-Logging/spring-boot-log4j2/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..c1dd12f Binary files /dev/null and b/Java-Logging/spring-boot-log4j2/.mvn/wrapper/maven-wrapper.jar differ diff --git a/Java-Logging/spring-boot-log4j2/.mvn/wrapper/maven-wrapper.properties b/Java-Logging/spring-boot-log4j2/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..22f219d --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.5/apache-maven-3.8.5-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/Java-Logging/spring-boot-log4j2/config/application.properties b/Java-Logging/spring-boot-log4j2/config/application.properties new file mode 100644 index 0000000..36acd4a --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/config/application.properties @@ -0,0 +1,2 @@ + +server.port=8081 \ No newline at end of file diff --git a/Java-Logging/spring-boot-log4j2/mvnw b/Java-Logging/spring-boot-log4j2/mvnw new file mode 100644 index 0000000..841f63a --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/mvnw @@ -0,0 +1,331 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /usr/local/etc/mavenrc ]; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$( + \unset -f command + \command -v java + )" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Java-Logging/spring-boot-log4j2/mvnw.cmd b/Java-Logging/spring-boot-log4j2/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Java-Logging/spring-boot-log4j2/pom.xml b/Java-Logging/spring-boot-log4j2/pom.xml new file mode 100644 index 0000000..bc166bf --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.3 + + + com.jindo + spring-boot-log4j2 + 0.0.1-SNAPSHOT + spring-boot-log4j2 + Demo project for Spring Boot + + 1.8 + 2.13.2 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-logging + + + + + + com.fasterxml.jackson.core + jackson-core + ${jackson.core} + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + ${jackson.core} + + + + org.apache.logging.log4j + log4j-core + 2.7 + + + org.apache.logging.log4j + log4j-core + 2.7 + test-jar + test + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/Java-Logging/spring-boot-log4j2/readme.md b/Java-Logging/spring-boot-log4j2/readme.md new file mode 100644 index 0000000..f84486b --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/readme.md @@ -0,0 +1,13 @@ +# Spring Boot log4j2.xml Example + +## Step by Step + +1. Log4j2 Maven Dependency + + +## Reference Document +1. [Spring boot log4j2.xml example](https://howtodoinjava.com/spring-boot2/logging/spring-boot-log4j2-config/) + +2. [Tutorial Point Log4j](https://www.tutorialspoint.com/log4j/index.htm) + +3. [Appenders-Layout-Filters](https://techmaster.vn/posts/37097/java-gioi-thieu-ve-appenders-layouts-va-filters-trong-log4j2) \ No newline at end of file diff --git a/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/Application.java b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/Application.java new file mode 100644 index 0000000..b37dfff --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/Application.java @@ -0,0 +1,13 @@ +package com.jindo.core; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/Main.java b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/Main.java new file mode 100644 index 0000000..7b02b77 --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/Main.java @@ -0,0 +1,40 @@ +package com.jindo.core; + +import com.jindo.core.business.PageVisitor; +import com.jindo.core.log.LogFactory; +import com.jindo.core.model.Page; +import com.jindo.core.model.User; +import org.apache.log4j.Logger; + +/** + * @author ManhKM on 9/5/2022 + * @project spring-boot-log4j2 + * ----- + * Nếu sử dụng mỗi console thì có thể sẽ bị tràn màn hình log + * Cần có cơ chế logging để check được activity của EndUser + * ----- + * Có thể thay đổi format cho định dạng log ra ngoài file + * + */ +public class Main { + + public static final Logger logger = LogFactory.getLogger(); + + public static void main(String[] args) { + Page page = new Page("HomePage", "http://fresher.academy"); + User[] users = new User[2022]; + for(int i = 0; i < users.length; i++){ + users[i] = new User("User_" + i); + System.out.println(users[i] + " signed in " + page); + logger.info(users[i] + " signed in " + page); + } + + PageVisitor pageVisitor = new PageVisitor(); + int index = 0; + while (true){ + index = (int) Math.round(Math.random() * 2021); + pageVisitor.visit(users[index], page); + } + } + +} diff --git a/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/business/PageVisitor.java b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/business/PageVisitor.java new file mode 100644 index 0000000..3a74601 --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/business/PageVisitor.java @@ -0,0 +1,24 @@ +package com.jindo.core.business; + +import com.jindo.core.log.LogFactory; +import com.jindo.core.model.Page; +import com.jindo.core.model.User; +import org.apache.log4j.Logger; + +/** + * @author ManhKM on 9/5/2022 + * @project spring-boot-log4j2 + */ +public class PageVisitor { + + private static final Logger logger = LogFactory.getLogger(); + + /** + * Logging lại thông tin của User + * @param user + * @param page + */ + public void visit(User user, Page page){ + logger.info(user + " visited "+ page); + } +} diff --git a/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/log/LogFactory.java b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/log/LogFactory.java new file mode 100644 index 0000000..cf9f459 --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/log/LogFactory.java @@ -0,0 +1,18 @@ +package com.jindo.core.log; + + +import org.apache.log4j.Logger; + +/** + * @author ManhKM on 9/5/2022 + * @project spring-boot-log4j2 + */ +public class LogFactory { + + public static Logger getLogger(){ + + Logger logger = Logger.getLogger(Thread.currentThread().getStackTrace()[2].getClassName()); + + return logger; + } +} diff --git a/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/model/Page.java b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/model/Page.java new file mode 100644 index 0000000..70572d9 --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/model/Page.java @@ -0,0 +1,42 @@ +package com.jindo.core.model; + +/** + * @author ManhKM on 9/5/2022 + * @project spring-boot-log4j2 + */ +public class Page { + private String name; + private String url; + + public Page() { + } + + public Page(String name, String url) { + this.name = name; + this.url = url; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + @Override + public String toString() { + return "Page{" + + "name='" + name + '\'' + + ", url='" + url + '\'' + + '}'; + } +} diff --git a/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/model/User.java b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/model/User.java new file mode 100644 index 0000000..cab8bee --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/src/main/java/com/jindo/core/model/User.java @@ -0,0 +1,33 @@ +package com.jindo.core.model; + +/** + * @author ManhKM on 9/5/2022 + * @project spring-boot-log4j2 + * ----- + * Minh họa End user tương tác với một cái Page -> và module logging lại việc đó + */ +public class User { + private String name; + + public User() { + } + + public User(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "User{" + + "name='" + name + '\'' + + '}'; + } +} diff --git a/Java-Logging/spring-boot-log4j2/src/main/resources/log4j.properties b/Java-Logging/spring-boot-log4j2/src/main/resources/log4j.properties new file mode 100644 index 0000000..8e216d4 --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/src/main/resources/log4j.properties @@ -0,0 +1,19 @@ +## Root logger option: +## INFO: Level of log +## stdout: log appender +#log4j.rootLogger = INFO, stdout, file +# +## Redirect log message to console: +## PatternLayout: giup define các pattern hien thi ra ngoai +#log4j.appender.stdout=org.apache.log4j.ConsoleAppender +#log4j.appender.stdout.Target=System.out +#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +#log4j.appender.stdout.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n +# +##log4j.appender.file=org.apache.log4j.FileAppender +#log4j.appender.file=org.apache.log4j.RollingFileAppender +#log4j.appender.file.File=logs/login-4j/log4j-application.log +#log4j.appender.file.MaxFileSize=5MB +#log4j.appender.file.MaxBackupIndex=10 +#log4j.appender.file.layout=org.apache.log4j.PatternLayout +#log4j.appender.file.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/Java-Logging/spring-boot-log4j2/src/main/resources/log4j2.xml b/Java-Logging/spring-boot-log4j2/src/main/resources/log4j2.xml new file mode 100644 index 0000000..dce0777 --- /dev/null +++ b/Java-Logging/spring-boot-log4j2/src/main/resources/log4j2.xml @@ -0,0 +1,30 @@ + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} --- thread_id="%tid" thread_name="%tn" thread_priority="%tp" --- [%p] %m%n + + + + + + ${LOG_PATTERN} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Java-Network/java-read-page/src/main/java/com/core/ReadApplication.java b/Java-Network/java-read-page/src/main/java/com/core/ReadApplication.java new file mode 100644 index 0000000..bac50d9 --- /dev/null +++ b/Java-Network/java-read-page/src/main/java/com/core/ReadApplication.java @@ -0,0 +1,6 @@ +package com.core;/** + * @project java-read-page on 7/24/2023-10:30 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class ReadApplication { +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/Rocket.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/Rocket.java new file mode 100644 index 0000000..e78cb8e --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/Rocket.java @@ -0,0 +1,11 @@ +package com.core.jindo; + +/** + * @author ManhKM on 6/2/2022 + * @project Java-OCA + */ +public class Rocket { + void blastOff(){ + System.out.println("bang "); + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/Shuttle.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/Shuttle.java new file mode 100644 index 0000000..aab84d8 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/Shuttle.java @@ -0,0 +1,23 @@ +package com.core.jindo; + +/** + * @author ManhKM on 6/2/2022 + * @project Java-OCA + */ +public class Shuttle extends Rocket{ + public static void main(String[] args) { + + new Shuttle().go(); + } + + void go() { + blastOff(); // logic something + //Rocket.blastOff(); + Rocket rocket = new Rocket(); + rocket.blastOff(); + } + + void blastOff(){ + System.out.println("sh-bang "); + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/_.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/_.java new file mode 100644 index 0000000..9918fa3 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/_.java @@ -0,0 +1,15 @@ +package com.core.jindo; + +/** + * @author ManhKM on 6/2/2022 + * @project Java-OCA + */ +class _ { + static public void main(String[] __A_V){ + String $ = ""; + for(int x = 0; ++x < __A_V.length; ){ + $ += __A_V[x]; + System.out.println($); + } + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/TestLocalVariable.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/TestLocalVariable.java new file mode 100644 index 0000000..666e1fe --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/TestLocalVariable.java @@ -0,0 +1,23 @@ +package com.core.jindo.localvariable; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class TestLocalVariable { + int count = 9; + + public void logIn(){ + int count = 10; + System.out.println("local variable count is " + count); + } + + public void count(){ + System.out.println("instance variable count is " + count); + } + + public static void main(String[] args){ + new TestLocalVariable().logIn(); + new TestLocalVariable().count(); + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Announce.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Announce.java new file mode 100644 index 0000000..2e4905a --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Announce.java @@ -0,0 +1,14 @@ +package com.core.jindo.localvariable.chapter1; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class Announce { + public static void main(String[] args) { + for (int _x = 0; _x < 3; _x++) ; + // int #lb = 7; + // long [] x [5]; + Boolean []ba[]; + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Device.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Device.java new file mode 100644 index 0000000..6408601 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Device.java @@ -0,0 +1,9 @@ +package com.core.jindo.localvariable.chapter1; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public interface Device { + public void doIt(); +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Electronic.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Electronic.java new file mode 100644 index 0000000..745f27b --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Electronic.java @@ -0,0 +1,12 @@ +package com.core.jindo.localvariable.chapter1; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class Electronic implements Device{ + @Override + public void doIt() { + + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Frodo.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Frodo.java new file mode 100644 index 0000000..2c0a590 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Frodo.java @@ -0,0 +1,18 @@ +package com.core.jindo.localvariable.chapter1; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class Frodo extends Hobbit{ + public static void main(String[] args){ + int myGold = 7; + System.out.println(countGold(myGold, 6)); + } +} + +class Hobbit{ + static int countGold(int x, int y){ + return x + y; + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Gadget.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Gadget.java new file mode 100644 index 0000000..de18a4f --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Gadget.java @@ -0,0 +1,9 @@ +package com.core.jindo.localvariable.chapter1; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public interface Gadget { + void doStuff(); +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Phone1.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Phone1.java new file mode 100644 index 0000000..ca89813 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Phone1.java @@ -0,0 +1,8 @@ +package com.core.jindo.localvariable.chapter1; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +abstract class Phone1 extends Electronic{ +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Phone2.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Phone2.java new file mode 100644 index 0000000..6c58109 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Phone2.java @@ -0,0 +1,11 @@ +package com.core.jindo.localvariable.chapter1; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +abstract class Phone2 extends Electronic{ + public void doIt(int x){ + + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Phone3.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Phone3.java new file mode 100644 index 0000000..f986255 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/Phone3.java @@ -0,0 +1,11 @@ +package com.core.jindo.localvariable.chapter1; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class Phone3 extends Electronic implements Device{ + public void doStuff(){ + + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/TestDays.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/TestDays.java new file mode 100644 index 0000000..1a8d394 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/TestDays.java @@ -0,0 +1,15 @@ +package com.core.jindo.localvariable.chapter1; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class TestDays { + public enum Days {MON, TUE, WED}; + public static void main(String[] args){ + for(Days d : Days.values()) + ; + Days [] d2 = Days.values(); + System.out.println(d2[2]); + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex10/Electronic.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex10/Electronic.java new file mode 100644 index 0000000..0e2de51 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex10/Electronic.java @@ -0,0 +1,11 @@ +package com.core.jindo.localvariable.chapter1.ex10; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +abstract class Electronic { + void getPower(){ + System.out.println("plug in"); + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex10/Gadget.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex10/Gadget.java new file mode 100644 index 0000000..86053ef --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex10/Gadget.java @@ -0,0 +1,9 @@ +package com.core.jindo.localvariable.chapter1.ex10; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public interface Gadget { + void doStuff(); +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex10/Table.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex10/Table.java new file mode 100644 index 0000000..df9d1b0 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex10/Table.java @@ -0,0 +1,18 @@ +package com.core.jindo.localvariable.chapter1.ex10; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class Table extends Electronic implements Gadget{ + + @Override + public void doStuff() { + System.out.println("show book "); + } + + public static void main(String[] args) { + new Table().getPower(); + new Table().doStuff(); + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex11/StatTest.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex11/StatTest.java new file mode 100644 index 0000000..c3c9111 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex11/StatTest.java @@ -0,0 +1,11 @@ +package com.core.jindo.localvariable.chapter1.ex11; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class StatTest { + public static void main(String[] args) { + System.out.println(Integer.MAX_VALUE); + } +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex12/MyInterface.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex12/MyInterface.java new file mode 100644 index 0000000..7b63a79 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/chapter1/ex12/MyInterface.java @@ -0,0 +1,14 @@ +package com.core.jindo.localvariable.chapter1.ex12; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public interface MyInterface { + // public static m1(){;} + default void m2(){;} + abstract int m3(); + // final short m4() {return 5;} + // default long m5(); + static void m6(){;} +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/pkgA/Foo.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/pkgA/Foo.java new file mode 100644 index 0000000..bfe5a8b --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/pkgA/Foo.java @@ -0,0 +1,11 @@ +package com.core.jindo.localvariable.pkgA; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class Foo { + int a = 5; + protected int b = 6; + public int c = 7; +} diff --git a/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/pkgB/Baz.java b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/pkgB/Baz.java new file mode 100644 index 0000000..1fcb649 --- /dev/null +++ b/Java-OCA/Chapter-1-Declaration-Access-Control/src/com/core/jindo/localvariable/pkgB/Baz.java @@ -0,0 +1,16 @@ +package com.core.jindo.localvariable.pkgB; + +import com.core.jindo.localvariable.pkgA.Foo; + +/** + * @author ManhKM on 6/3/2022 + * @project Java-OCA + */ +public class Baz { + public static void main(String[] args) { + Foo f = new Foo(); + // System.out.println(" " + f.a); + // System.out.println(" " + f.b); + System.out.println(" " + f.c); + } +} diff --git a/Java-OOP/1-oop-concept-v1.0.md b/Java-OOP/1-oop-concept-v1.0.md new file mode 100644 index 0000000..833f55f --- /dev/null +++ b/Java-OOP/1-oop-concept-v1.0.md @@ -0,0 +1,30 @@ +## Hình như sai, nếu nói về OOP thì các tính chất chính của nó là gì? hãy giải thích chi tiết vào + +Trả lời: + +Đúng rồi, tôi đã nhầm lẫn. Nếu nói về tính chất của OOP, thì chúng ta có thể liệt kê như sau: + +Tính đóng gói (Encapsulation): Đây là tính chất cho phép giấu thông tin bên trong của đối tượng, chỉ hiển thị ra bên ngoài những phương thức hoặc thuộc tính được cho phép sử dụng. Điều này giúp giảm thiểu rủi ro về việc dữ liệu bị sửa đổi hoặc thay đổi bất hợp lệ từ phía bên ngoài. + +Tính kế thừa (Inheritance): Tính chất này cho phép các đối tượng con (subclass) kế thừa các thuộc tính và phương thức của đối tượng cha (superclass). Điều này giúp giảm thiểu sự lặp lại mã nguồn và tăng tính tái sử dụng của mã. + +Tính đa hình (Polymorphism): Tính chất này cho phép các đối tượng có thể có các hành vi khác nhau trong cùng một phương thức, tùy thuộc vào đối tượng được gọi. Tính đa hình thường được triển khai thông qua các phương thức ảo (virtual methods) hoặc phương thức ghi đè (method overriding). + +Tính trừu tượng (Abstraction): Tính chất này cho phép che giấu chi tiết triển khai bên trong của đối tượng, chỉ hiển thị ra các tính năng cần thiết để tương tác với đối tượng. Tính trừu tượng giúp tăng tính cô lập của các thành phần trong hệ thống, giảm sự phụ thuộc giữa chúng. + +Trong Angular, các thành phần như Component, Service, Directive,... được thiết kế dựa trên các khái niệm của OOP, với mục đích tạo ra các đối tượng có tính chất đóng gói, kế thừa, đa hình và trừu tượng. Ví dụ, trong Component, ta có thể định nghĩa các thuộc tính và phương thức riêng biệt, chỉ hiển thị ra bên ngoài những phương thức hoặc thuộc tính được cho phép sử dụng, cũng như sử dụng kế thừa và đa hình để tạo ra các component con và tái sử dụng code. + + +## Lấy một ví dụ quản lý sinh viên, hãy thể hiện tính chất OOP trong bài toán này. + +Trả lời: + +Trong bài toán quản lý sinh viên, chúng ta có thể thể hiện các tính chất của OOP như sau: + +Tính đóng gói (Encapsulation): Trong quản lý sinh viên, các thông tin về một sinh viên bao gồm tên, tuổi, mã số sinh viên, điểm số, v.v. có thể được đóng gói vào một đối tượng Student để bảo vệ dữ liệu và đảm bảo tính riêng tư. + +Tính kế thừa (Inheritance): Trong quản lý sinh viên, chúng ta có thể xây dựng lớp con (subclass) từ lớp cha (superclass) Student, ví dụ như lớp UndergraduateStudent hoặc GraduateStudent. Lớp con sẽ kế thừa các thuộc tính và phương thức của lớp cha, đồng thời có thể mở rộng hoặc ghi đè (override) chúng để thích nghi với các nhu cầu riêng của lớp con. + +Tính đa hình (Polymorphism): Trong quản lý sinh viên, chúng ta có thể sử dụng tính đa hình để xử lý các đối tượng Student một cách linh hoạt. Ví dụ như ta có thể tạo một danh sách (array) các đối tượng Student, bao gồm cả đối tượng UndergraduateStudent và GraduateStudent, và thực hiện các phương thức chung như tính trung bình điểm hoặc in thông tin sinh viên một cách chung chung, mà không cần biết chính xác loại đối tượng nào đang được xử lý. + +Tính trừu tượng (Abstraction): Trong quản lý sinh viên, chúng ta có thể sử dụng tính trừu tượng để tách biệt giữa các đối tượng và phương thức của chúng. Ví dụ như ta có thể tạo một giao diện (interface) IStudent để mô tả các phương thức chung cho một sinh viên, sau đó xây dựng các lớp Student và các lớp con như UndergraduateStudent hoặc GraduateStudent để triển khai giao diện này. Tính trừu tượng giúp chúng ta tập trung vào các phương thức chung của các đối tượng, giúp giảm độ phức tạp của mã và dễ dàng bảo trì, nâng cấp ứng dụng. \ No newline at end of file diff --git a/Java-OOP/1920_I_INT2204_2/0.Introduction.pptx b/Java-OOP/1920_I_INT2204_2/0.Introduction.pptx new file mode 100644 index 0000000..a34a786 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/0.Introduction.pptx differ diff --git a/Java-OOP/1920_I_INT2204_2/1.OOP Introduction.pptx b/Java-OOP/1920_I_INT2204_2/1.OOP Introduction.pptx new file mode 100644 index 0000000..138c286 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/1.OOP Introduction.pptx differ diff --git a/Java-OOP/1920_I_INT2204_2/11- Template.ppt b/Java-OOP/1920_I_INT2204_2/11- Template.ppt new file mode 100644 index 0000000..8cbd248 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/11- Template.ppt differ diff --git a/Java-OOP/1920_I_INT2204_2/2-Java.ppt b/Java-OOP/1920_I_INT2204_2/2-Java.ppt new file mode 100644 index 0000000..7472b9d Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/2-Java.ppt differ diff --git a/Java-OOP/1920_I_INT2204_2/3-4-More java.ppt b/Java-OOP/1920_I_INT2204_2/3-4-More java.ppt new file mode 100644 index 0000000..f225f51 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/3-4-More java.ppt differ diff --git a/Java-OOP/1920_I_INT2204_2/5 - Inheritance.ppt b/Java-OOP/1920_I_INT2204_2/5 - Inheritance.ppt new file mode 100644 index 0000000..8d51441 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/5 - Inheritance.ppt differ diff --git a/Java-OOP/1920_I_INT2204_2/6-7 - Polymorphism.ppt b/Java-OOP/1920_I_INT2204_2/6-7 - Polymorphism.ppt new file mode 100644 index 0000000..98059bd Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/6-7 - Polymorphism.ppt differ diff --git a/Java-OOP/1920_I_INT2204_2/8-Exceptions.ppt b/Java-OOP/1920_I_INT2204_2/8-Exceptions.ppt new file mode 100644 index 0000000..03cd71a Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/8-Exceptions.ppt differ diff --git a/Java-OOP/1920_I_INT2204_2/Design Patterns-new.pptx b/Java-OOP/1920_I_INT2204_2/Design Patterns-new.pptx new file mode 100644 index 0000000..d3c41cb Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/Design Patterns-new.pptx differ diff --git a/Java-OOP/1920_I_INT2204_2/Review.pptx b/Java-OOP/1920_I_INT2204_2/Review.pptx new file mode 100644 index 0000000..ef23e89 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/Review.pptx differ diff --git a/Java-OOP/1920_I_INT2204_2/Test Sample.doc b/Java-OOP/1920_I_INT2204_2/Test Sample.doc new file mode 100644 index 0000000..7beae17 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_2/Test Sample.doc differ diff --git a/Java-OOP/1920_I_INT2204_3/00_course_intro [Compatibility Mode].pdf b/Java-OOP/1920_I_INT2204_3/00_course_intro [Compatibility Mode].pdf new file mode 100644 index 0000000..1798f54 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/00_course_intro [Compatibility Mode].pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/02_OOP_Intro.pdf b/Java-OOP/1920_I_INT2204_3/02_OOP_Intro.pdf new file mode 100644 index 0000000..8b971d1 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/02_OOP_Intro.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/03_Objects_n_Classes.pdf b/Java-OOP/1920_I_INT2204_3/03_Objects_n_Classes.pdf new file mode 100644 index 0000000..8896ded Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/03_Objects_n_Classes.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/04_More_on_Java.pdf b/Java-OOP/1920_I_INT2204_3/04_More_on_Java.pdf new file mode 100644 index 0000000..9497968 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/04_More_on_Java.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/04a_More_on_Java_cont.pdf b/Java-OOP/1920_I_INT2204_3/04a_More_on_Java_cont.pdf new file mode 100644 index 0000000..26efcf8 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/04a_More_on_Java_cont.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/05_Inheritance [Compatibility Mode].pdf b/Java-OOP/1920_I_INT2204_3/05_Inheritance [Compatibility Mode].pdf new file mode 100644 index 0000000..8717e8e Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/05_Inheritance [Compatibility Mode].pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/06_Abstract [Compatibility Mode].pdf b/Java-OOP/1920_I_INT2204_3/06_Abstract [Compatibility Mode].pdf new file mode 100644 index 0000000..5f31ada Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/06_Abstract [Compatibility Mode].pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M01.pdf b/Java-OOP/1920_I_INT2204_3/M01.pdf new file mode 100644 index 0000000..313b633 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M01.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M02.pdf b/Java-OOP/1920_I_INT2204_3/M02.pdf new file mode 100644 index 0000000..c266a3e Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M02.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M03.pdf b/Java-OOP/1920_I_INT2204_3/M03.pdf new file mode 100644 index 0000000..6fd10ea Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M03.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M04.pdf b/Java-OOP/1920_I_INT2204_3/M04.pdf new file mode 100644 index 0000000..399da14 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M04.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M05.pdf b/Java-OOP/1920_I_INT2204_3/M05.pdf new file mode 100644 index 0000000..13c8eff Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M05.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M06.pdf b/Java-OOP/1920_I_INT2204_3/M06.pdf new file mode 100644 index 0000000..d23b36a Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M06.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M07a.pdf b/Java-OOP/1920_I_INT2204_3/M07a.pdf new file mode 100644 index 0000000..9f10aa7 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M07a.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M08a.pdf b/Java-OOP/1920_I_INT2204_3/M08a.pdf new file mode 100644 index 0000000..f5e5b5b Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M08a.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M09a.pdf b/Java-OOP/1920_I_INT2204_3/M09a.pdf new file mode 100644 index 0000000..cad83f5 Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M09a.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M10.pdf b/Java-OOP/1920_I_INT2204_3/M10.pdf new file mode 100644 index 0000000..3b15d9b Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M10.pdf differ diff --git a/Java-OOP/1920_I_INT2204_3/M11.pdf b/Java-OOP/1920_I_INT2204_3/M11.pdf new file mode 100644 index 0000000..26a89bc Binary files /dev/null and b/Java-OOP/1920_I_INT2204_3/M11.pdf differ diff --git a/Java-OOP/4 OOP Java.docx b/Java-OOP/4 OOP Java.docx new file mode 100644 index 0000000..a38c9b7 Binary files /dev/null and b/Java-OOP/4 OOP Java.docx differ diff --git "a/Java-OOP/Gi\303\241o tr\303\254nh/Tree_abstract.drawio" "b/Java-OOP/Gi\303\241o tr\303\254nh/Tree_abstract.drawio" new file mode 100644 index 0000000..6bc1c20 --- /dev/null +++ "b/Java-OOP/Gi\303\241o tr\303\254nh/Tree_abstract.drawio" @@ -0,0 +1 @@ +7Vlbb5swFP41kbaHTgGaSx8T0l20dKuWSpP25oIDVo0PM04T+ut3DCaES6RmubQPSFGEP45v5/uO+QQ9x402XySJwzvwKe/ZfX/Tc2Y92x71+/ivgdQAQzsHAsn8HLJKYMFeqAFNv2DFfJpUAhUAVyyugh4IQT1VwYiUsK6GLYFXZ41JQBvAwiO8if5mvgpzdGyPSvwrZUFYzGwNb/I7ESmCzU6SkPiw3oGc257jSgCVX0Ubl3KduyIveb/Pe+5uFyapUK/p0J/Mv83//nn5yQJn/iNJn6yH71dmlGfCV2bDE8Eiws2SVVrkIVmziBOBrekShFqYOxa2CWeBwGsPF0IlAs9UKoYpnJgbCmJEvZBxf05SWOnlJop4T0VrGoJkLzgsTpyPibelMmqwh5WIhe6JcB9RSROMuS9yYNWgO7KpBM5JogzgAeckTtjjdhsRkQETU1AKIhNkkoPboZua2rLedD8X1pZhrAwKEVUyxZBimEIUaa29LjU2MlC4Iy9MRa5so+pgO/J2sl9YBUQEuK2DZrOGLdONa9MRjgQLougUVsJPduWGFzsbLaFMhAcI0m4IsmdPdeEyqit3ous/jWlDn8iQynQj4Ym6wAGFOBOQC5ZxXoMKzXK6VHsVm8TEYyKYZzGz6xL5ZVKkIcC+S54Vdsh8nwqtNlBEkVxaWkcxMKGyHA6m+MNMu/1Pg94AF+5i2yrb+NPhUrkgcC+EZXqiqNs11drdL8nKQbC31JuKTKvKOkKAFSkcyrvTwnuNYs4y6nKKi8PY+i9+I2SK05LQB8337MpqkO40SXdaCObkkfJ7SJhioMeXeWyN+LfidmC/itvxmai93lPSOHoI/gddzh+7yj4b+8PjHy1H0T9oWoxHnQBt1jTpLhG6sDvDcUnDYfdbLIBzNsfROt07cRzDznGc6VwaHOo4DlbgUQfTqLMcZyO3xXK0knsuzzHuPMdb1naL57hsbd80+J9B0HmMy3qMcVMFbc/8E1mMltnei8UoXmZ2HuPk59DNoR7jUAUedQxZzferncc4FbktHqO13s/F7b5XlZ3HuAj9LR7jRLWNzfKzTP4MKL9tObf/AA== \ No newline at end of file diff --git "a/Java-OOP/Gi\303\241o tr\303\254nh/dsds.drawio" "b/Java-OOP/Gi\303\241o tr\303\254nh/dsds.drawio" new file mode 100644 index 0000000..fab88b3 --- /dev/null +++ "b/Java-OOP/Gi\303\241o tr\303\254nh/dsds.drawio" @@ -0,0 +1 @@ +1VjZcpswFP0aHtth9fJo7CStO04y9XSaPnUUUEATQETIW76+VyDAILwkdjzpiy0dSVfSuavQrHG8vmEoDWfUx5Fm6v5asyaaafbsIfwKYFMAjuEUQMCIX0BGDczJK5agLtEF8XHWmMgpjThJm6BHkwR7vIEhxuiqOe2JRs1dUxRgBZh7KFLR38TnYYEOzH6Nf8MkCMudjZ68cIzKyfImWYh8utqCrCvNGjNKedGK12McCe5KXop11ztGq4MxnPBjFjyYKUI305/E/hWx9PujZc//fjELKUsULeSFp2iJALm/m97Jc/NNSQaji8THQp6hWe4qJBzPU+SJ0RVoH7CQx5EcfqIJn8u18rBLzDhe7zy/UbEC1oRpjDnbwBS5wLYlkdKSjKHsr2q9GCXZ4ZZOehJD0hSCSnTNFjQkYW8gz1LIUxjDiT8SVgg9L0JZRrwmSXhN+MNW+w+09a+O7E3E1fWys5GdYhPsK4bbYhIOQhfMw3tuUHoUYgHmh8xE1cwW804H8SXGcIQ4WTaP26UNucM9JXCRSvHWoKl4a9hSaHFNuWrbA1qCHPOAoIIHRVBuHNW1328v9un2ckbdm0fqfodXXkj3LZXZ1jt1b/Vbuh9cVveOovsJ4iLQuiTxSRLsibX65WNtm3ZzcGSsNT8q1vYU/kZRRgF5TsBb8g3NXgSncB8ZtALRmqE0zaltD8wxIyiKyCuYJk3gPBOc5VCFqKIY5G9YIsRd/0ri7f5n0lzPOJwlTf2SWdJQNDed391+rtqiYuTT1Bb9w7kiW5E4Qgn03AyiF5fFszC6JplK/jgrV1ZP5crusrBq4dnJGnSQJT24dOAp8p4z4dl6O+4WE2Hfau5pHn0Uxbt1vof3ZkjusNBeB+vthHk20ocq6X1XjZzwj2JBUfKYpXlf74ZeFuIl5MKeVVsMWCP4NaB0GnfKljOfCMv4LYrx1uJ8Zd2foSTcFr1XHtRebXHlWWrox+xoecjLiyBVGmcL3LGwP7l0WjndIg3dUU2yqzZsl93nSzW6mmvy52yb3+J1q5QFfOFjWf5dMDW9h/n2W9jooP6i+cpQvyQoPHY+bvLUdeqbZ18KPfgQkoHs8ENI79bJZV5CSolit1R57EuoOtCm2xs/+CFkqF9NZtqVobkjze17Ii6ObW1o5JCrDVwRtGEnvU7gWTkd1upBOXFCoPeyEKk9w5xj8OrrQDZ0OHRI/f8irzuqJ1t2VzXlvNmToVt/biz0WX+zta7+AQ== \ No newline at end of file diff --git a/Java-OOP/HeadFirst/CodeInEbook/bin/chapter1/Guitar.class b/Java-OOP/HeadFirst/CodeInEbook/bin/chapter1/Guitar.class new file mode 100644 index 0000000..41f9156 Binary files /dev/null and b/Java-OOP/HeadFirst/CodeInEbook/bin/chapter1/Guitar.class differ diff --git a/Java-OOP/HeadFirst/CodeInEbook/bin/chapter1/Inventory.class b/Java-OOP/HeadFirst/CodeInEbook/bin/chapter1/Inventory.class new file mode 100644 index 0000000..886cf69 Binary files /dev/null and b/Java-OOP/HeadFirst/CodeInEbook/bin/chapter1/Inventory.class differ diff --git a/Java-OOP/HeadFirst/CodeInEbook/src/chapter1/Guitar.java b/Java-OOP/HeadFirst/CodeInEbook/src/chapter1/Guitar.java new file mode 100644 index 0000000..21faf64 --- /dev/null +++ b/Java-OOP/HeadFirst/CodeInEbook/src/chapter1/Guitar.java @@ -0,0 +1,71 @@ +package chapter1; + +public class Guitar { + private String serialNumber, builder, model, type, backWood, topWood; + private double price; + + //Constructor default: + public Guitar() { + + } + + //Constructor full argument: + public Guitar(String serialNumber, String builder, String model, String type, String backWood, String topWood, + double price) { + super(); + this.serialNumber = serialNumber; + this.builder = builder; + this.model = model; + this.type = type; + this.backWood = backWood; + this.topWood = topWood; + this.price = price; + } + public String getSerialNumber() { + return serialNumber; + } + public void setSerialNumber(String serialNumber) { + this.serialNumber = serialNumber; + } + public String getBuilder() { + return builder; + } + public void setBuilder(String builder) { + this.builder = builder; + } + public String getModel() { + return model; + } + public void setModel(String model) { + this.model = model; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getBackWood() { + return backWood; + } + public void setBackWood(String backWood) { + this.backWood = backWood; + } + public String getTopWood() { + return topWood; + } + public void setTopWood(String topWood) { + this.topWood = topWood; + } + public double getPrice() { + return price; + } + public void setPrice(double price) { + this.price = price; + } + @Override + public String toString() { + return "Guitar [serialNumber=" + serialNumber + ", builder=" + builder + ", model=" + model + ", type=" + type + + ", backWood=" + backWood + ", topWood=" + topWood + ", price=" + price + "]"; + } +} diff --git a/Java-OOP/HeadFirst/CodeInEbook/src/chapter1/Inventory.java b/Java-OOP/HeadFirst/CodeInEbook/src/chapter1/Inventory.java new file mode 100644 index 0000000..85cc0bc --- /dev/null +++ b/Java-OOP/HeadFirst/CodeInEbook/src/chapter1/Inventory.java @@ -0,0 +1,31 @@ +package chapter1; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +public class Inventory { + private List guitars; + + public Inventory() { + guitars = new LinkedList(); //Why use LinkedList? + } + + public void addGuitars(String serialNumber, String builder, String model, String type, String backWood, String topWood, + double price) { + Guitar guitar = new Guitar(serialNumber, builder, model, type, backWood, topWood, price); + guitars.add(guitar); + } + + public Guitar getGuitar(String serialNumber) { + for(Iterator i = guitars.iterator(); i.hasNext();) { + Guitar guitar = (Guitar) i.next(); + if(guitar.getSerialNumber().equals(serialNumber)) { + return guitar; + } + } + return null; + } + + +} diff --git a/Java-OOP/OOP_2013.pdf b/Java-OOP/OOP_2013.pdf new file mode 100644 index 0000000..4984777 Binary files /dev/null and b/Java-OOP/OOP_2013.pdf differ diff --git a/Java-OOP/Object Oriented Design and Analysis.docx b/Java-OOP/Object Oriented Design and Analysis.docx new file mode 100644 index 0000000..f05c6aa Binary files /dev/null and b/Java-OOP/Object Oriented Design and Analysis.docx differ diff --git a/Java-OOP/Software-Architecture-And-Clean-Code-Design-in-OOP b/Java-OOP/Software-Architecture-And-Clean-Code-Design-in-OOP new file mode 160000 index 0000000..c4c1f76 --- /dev/null +++ b/Java-OOP/Software-Architecture-And-Clean-Code-Design-in-OOP @@ -0,0 +1 @@ +Subproject commit c4c1f762dc6cee8442ab1ab0081b64798bb2491b diff --git "a/Java-OOP/Tr\303\241nh hi\341\273\203u sai v\341\273\201 Abstraction trong OOP.pdf" "b/Java-OOP/Tr\303\241nh hi\341\273\203u sai v\341\273\201 Abstraction trong OOP.pdf" new file mode 100644 index 0000000..29197f3 Binary files /dev/null and "b/Java-OOP/Tr\303\241nh hi\341\273\203u sai v\341\273\201 Abstraction trong OOP.pdf" differ diff --git a/Java-OOP/java-oop/4-tinh-chat-oop.md b/Java-OOP/java-oop/4-tinh-chat-oop.md new file mode 100644 index 0000000..dddbac1 --- /dev/null +++ b/Java-OOP/java-oop/4-tinh-chat-oop.md @@ -0,0 +1,20 @@ +## Java OOP + +## 1. Tính đóng gói (Encapsulation): + + Việc đưa các tính chất, hành vi của đối tượng vào thuộc tính, method trong một class. + Để thể hiện tính chất, hành vi cho đối tượng. + + Là cách để che dấu những tính chất xử lý bên trong của đối tượng, những đối tượng khác không thể tác động + trực tiếp làm thay đổi trạng thái chỉ có thể tác động thông qua các method public của đối tượng đó + +## 2. Tính kế thừa (Inheritance): + + +## 3. Tính đa hình (Polymorphism ): + + +## 4. Tính trừu tượng(Abstraction): + + + +## Reference Document + diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/1-gioi-thieu-lap-trinh-huong-doi-tuong.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/1-gioi-thieu-lap-trinh-huong-doi-tuong.png new file mode 100644 index 0000000..d8c969b Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/1-gioi-thieu-lap-trinh-huong-doi-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/10-dac-diem-quan-trong-oop.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/10-dac-diem-quan-trong-oop.png new file mode 100644 index 0000000..0550817 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/10-dac-diem-quan-trong-oop.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/11-truu-tuong-hoa.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/11-truu-tuong-hoa.png new file mode 100644 index 0000000..6760b09 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/11-truu-tuong-hoa.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/12-truu-tuong-muc-chuc-nang-du-lieu.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/12-truu-tuong-muc-chuc-nang-du-lieu.png new file mode 100644 index 0000000..a19173e Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/12-truu-tuong-muc-chuc-nang-du-lieu.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/13-truu-tuong-hoa-abstract-interface.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/13-truu-tuong-hoa-abstract-interface.png new file mode 100644 index 0000000..a01ddd3 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/13-truu-tuong-hoa-abstract-interface.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/14-tinh-chat-dong-goi.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/14-tinh-chat-dong-goi.png new file mode 100644 index 0000000..10ee3c3 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/14-tinh-chat-dong-goi.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/15-tinh-ke-thua.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/15-tinh-ke-thua.png new file mode 100644 index 0000000..d049960 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/15-tinh-ke-thua.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/16-tinh-da-hinh.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/16-tinh-da-hinh.png new file mode 100644 index 0000000..e7b7f05 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/16-tinh-da-hinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/17-co-che-nap-chong-ghi-de.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/17-co-che-nap-chong-ghi-de.png new file mode 100644 index 0000000..d9cbc5f Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/17-co-che-nap-chong-ghi-de.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/2-noi-dung-chinh.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/2-noi-dung-chinh.png new file mode 100644 index 0000000..aebeb79 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/2-noi-dung-chinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/3-lap-trinh-tuyen-tinh.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/3-lap-trinh-tuyen-tinh.png new file mode 100644 index 0000000..52c4f91 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/3-lap-trinh-tuyen-tinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/4-lap-trinh-cau-truc-uu-diem-khuyet-diem.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/4-lap-trinh-cau-truc-uu-diem-khuyet-diem.png new file mode 100644 index 0000000..22a8264 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/4-lap-trinh-cau-truc-uu-diem-khuyet-diem.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/4-lap-trinh-cau-truc.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/4-lap-trinh-cau-truc.png new file mode 100644 index 0000000..de809cd Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/4-lap-trinh-cau-truc.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/5-lap-trinh-module.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/5-lap-trinh-module.png new file mode 100644 index 0000000..ad4604d Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/5-lap-trinh-module.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/6-lap-trinh-huong-doi-tuong.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/6-lap-trinh-huong-doi-tuong.png new file mode 100644 index 0000000..5acfe98 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/6-lap-trinh-huong-doi-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/7-lop-doi-tuong.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/7-lop-doi-tuong.png new file mode 100644 index 0000000..b9870f1 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/7-lop-doi-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/8-uu-diem-khuyet-diem-huong-doi-tuong.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/8-uu-diem-khuyet-diem-huong-doi-tuong.png new file mode 100644 index 0000000..2805a1b Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/8-uu-diem-khuyet-diem-huong-doi-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/9-cac-ngon-ngu-ho-tro.png b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/9-cac-ngon-ngu-ho-tro.png new file mode 100644 index 0000000..8c3bf8d Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/1-tong-quan-lap-trinh-huong-doi-tuong/9-cac-ngon-ngu-ho-tro.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/1-toan-tu-instanceof.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/1-toan-tu-instanceof.png new file mode 100644 index 0000000..dc3729c Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/1-toan-tu-instanceof.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/10-vi-du-xu-ly-ngoai-le.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/10-vi-du-xu-ly-ngoai-le.png new file mode 100644 index 0000000..e29fd68 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/10-vi-du-xu-ly-ngoai-le.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/11-vi-du-xu-ly-ngoai-le.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/11-vi-du-xu-ly-ngoai-le.png new file mode 100644 index 0000000..f87bd39 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/11-vi-du-xu-ly-ngoai-le.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/2-lop-Object.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/2-lop-Object.png new file mode 100644 index 0000000..bb56dfc Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/2-lop-Object.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/3-toString.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/3-toString.png new file mode 100644 index 0000000..e861099 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/3-toString.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/4-equal-hashcode.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/4-equal-hashcode.png new file mode 100644 index 0000000..5eec6b9 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/4-equal-hashcode.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/5-xu-ly-ngoai-le.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/5-xu-ly-ngoai-le.png new file mode 100644 index 0000000..6349d64 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/5-xu-ly-ngoai-le.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/6-xu-ly-ngoai-le.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/6-xu-ly-ngoai-le.png new file mode 100644 index 0000000..75355eb Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/6-xu-ly-ngoai-le.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/7-ngoai-le.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/7-ngoai-le.png new file mode 100644 index 0000000..5473d9f Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/7-ngoai-le.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/8-try-catch-throws.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/8-try-catch-throws.png new file mode 100644 index 0000000..b885adc Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/8-try-catch-throws.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/9-try-catch-throws.png b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/9-try-catch-throws.png new file mode 100644 index 0000000..532d8c1 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/9-try-catch-throws.png differ diff --git a/Java-OOP/java-oop/doc/slide/10-ke-thua-3/readme.md b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/readme.md new file mode 100644 index 0000000..635ff65 --- /dev/null +++ b/Java-OOP/java-oop/doc/slide/10-ke-thua-3/readme.md @@ -0,0 +1,47 @@ +## Nội dung bài trước + +## Kế thừa: + +Là lớp con được thừa hưởng lại những gì mà cha của nó cho phép (Cứ khác private là cho phép) + +## Java không hỗ trợ đa kế thừa + + +## Lớp final class + +Đã là final (đứng vị tri cuối chuỗi) thì nó không cho phép kế thừa nó lại lần nữa. + +Tránh sửa logic, final đóng gói lại thành zin, ngon,xịn. + +## Phương thức khởi tạo cha-con + +Xử lý trong phương thức khởi tạo. + +Phương thức khởi tạo của lớp cha không được override lại của lớp con. + +Phương thức khởi tạo của lớp con luôn luôn gọi phương thức khởi tạo ở lớp cha. + +Có thể gọi tường minh bằng từ khóa supper + +Trong trường hợp user không gọi trực tiếp -> thì ngầm định nó cũng sẽ gọi phương thức khởi tạo mặc định của lớp cha. + +Trật tự xử lý constructor luôn đi từ lớp cha -> xử lý xong thì mới đi xuống lớp con. + +## Phương thức tĩnh - static + +Phương thức tĩnh vẫn được kế thừa lại từ lớp con nhưng mà chúng không bị ghi đè thôi. + +## Cơ chế overriding và overloading + +Overwireding chỉ dùng trong quan hệ kế thừa thôi + +Còn Overloading trong lớp đơn, kế thừa đều dùng được hết + +Overwriteding trùng tên, trùng danh sách tham số + +Overloading trùng tên, khác kiểu, danh sách tham số truyền vào + +## Phương thức final + +Phương thức là final thì không được phép ghi đè ở lớp con + diff --git a/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/1-da-hinh.png b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/1-da-hinh.png new file mode 100644 index 0000000..9ff10ac Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/1-da-hinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/2-noi-dung-chinh.png b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/2-noi-dung-chinh.png new file mode 100644 index 0000000..336c71a Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/2-noi-dung-chinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/3-lop-truu-tuong.png b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/3-lop-truu-tuong.png new file mode 100644 index 0000000..2545498 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/3-lop-truu-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/4-phuong-thuc-truu-tuong.png b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/4-phuong-thuc-truu-tuong.png new file mode 100644 index 0000000..b4a337d Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/4-phuong-thuc-truu-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/5-phuong-thuc-truu-tuong.png b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/5-phuong-thuc-truu-tuong.png new file mode 100644 index 0000000..16846da Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/5-phuong-thuc-truu-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/6-lop-truu-tuong-UML.png b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/6-lop-truu-tuong-UML.png new file mode 100644 index 0000000..ddcc4e8 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/6-lop-truu-tuong-UML.png differ diff --git a/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/7-bai-tap-lop-truu-tuong.png b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/7-bai-tap-lop-truu-tuong.png new file mode 100644 index 0000000..5a88744 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/11-lop-truu-tuong/7-bai-tap-lop-truu-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/1-giao-dien-interface.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/1-giao-dien-interface.png new file mode 100644 index 0000000..dab2079 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/1-giao-dien-interface.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/10-luu-y-su-dung-interface.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/10-luu-y-su-dung-interface.png new file mode 100644 index 0000000..0014c17 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/10-luu-y-su-dung-interface.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/11-vi-du.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/11-vi-du.png new file mode 100644 index 0000000..217a680 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/11-vi-du.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/12-vi-du.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/12-vi-du.png new file mode 100644 index 0000000..c7b53c5 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/12-vi-du.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/13-vi-du.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/13-vi-du.png new file mode 100644 index 0000000..72dff48 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/13-vi-du.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/14-interface-compareto.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/14-interface-compareto.png new file mode 100644 index 0000000..9d32d3a Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/14-interface-compareto.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/15-interface-compareto.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/15-interface-compareto.png new file mode 100644 index 0000000..7e60bb6 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/15-interface-compareto.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/16-interface-compareto.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/16-interface-compareto.png new file mode 100644 index 0000000..e3d85f8 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/16-interface-compareto.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/2-cu-phap.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/2-cu-phap.png new file mode 100644 index 0000000..6bf81c7 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/2-cu-phap.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/20-vi-du.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/20-vi-du.png new file mode 100644 index 0000000..97af916 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/20-vi-du.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/21-interface-cloneable.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/21-interface-cloneable.png new file mode 100644 index 0000000..ae33f8b Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/21-interface-cloneable.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/22-interface-cloneable.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/22-interface-cloneable.png new file mode 100644 index 0000000..63ccb64 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/22-interface-cloneable.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/23-interface-cloneable.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/23-interface-cloneable.png new file mode 100644 index 0000000..ac6d29e Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/23-interface-cloneable.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/24-interface-cloneable.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/24-interface-cloneable.png new file mode 100644 index 0000000..f9044f7 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/24-interface-cloneable.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/3-giao-dien-interface.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/3-giao-dien-interface.png new file mode 100644 index 0000000..c4d7318 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/3-giao-dien-interface.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/4-ke-thua-giao-dien.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/4-ke-thua-giao-dien.png new file mode 100644 index 0000000..ee551d4 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/4-ke-thua-giao-dien.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/5-flow-interaction.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/5-flow-interaction.png new file mode 100644 index 0000000..1ccafee Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/5-flow-interaction.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/6-vi-du.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/6-vi-du.png new file mode 100644 index 0000000..aa48b22 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/6-vi-du.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/7-giao-dien-hinh.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/7-giao-dien-hinh.png new file mode 100644 index 0000000..c85446a Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/7-giao-dien-hinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/8-hinh-tron.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/8-hinh-tron.png new file mode 100644 index 0000000..6b66d20 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/8-hinh-tron.png differ diff --git a/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/9-hinh-chu-nhat.png b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/9-hinh-chu-nhat.png new file mode 100644 index 0000000..f696c94 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/12-giao-dien-interface/9-hinh-chu-nhat.png differ diff --git a/Java-OOP/java-oop/doc/slide/13-generic-programming/1-bieu-thuc-lambda.png b/Java-OOP/java-oop/doc/slide/13-generic-programming/1-bieu-thuc-lambda.png new file mode 100644 index 0000000..0f5fd70 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/13-generic-programming/1-bieu-thuc-lambda.png differ diff --git a/Java-OOP/java-oop/doc/slide/13-generic-programming/2-da-hinh.png b/Java-OOP/java-oop/doc/slide/13-generic-programming/2-da-hinh.png new file mode 100644 index 0000000..6fd8bbb Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/13-generic-programming/2-da-hinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/13-generic-programming/3-lap-trinh-generic.png b/Java-OOP/java-oop/doc/slide/13-generic-programming/3-lap-trinh-generic.png new file mode 100644 index 0000000..6b66dfa Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/13-generic-programming/3-lap-trinh-generic.png differ diff --git a/Java-OOP/java-oop/doc/slide/13-generic-programming/4-generic-task.png b/Java-OOP/java-oop/doc/slide/13-generic-programming/4-generic-task.png new file mode 100644 index 0000000..7f2c308 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/13-generic-programming/4-generic-task.png differ diff --git a/Java-OOP/java-oop/doc/slide/13-generic-programming/5-tong-ke.png b/Java-OOP/java-oop/doc/slide/13-generic-programming/5-tong-ke.png new file mode 100644 index 0000000..1856c97 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/13-generic-programming/5-tong-ke.png differ diff --git a/Java-OOP/java-oop/doc/slide/14-on-tap-huong-doi-tuong-java/1-mo-dau.png b/Java-OOP/java-oop/doc/slide/14-on-tap-huong-doi-tuong-java/1-mo-dau.png new file mode 100644 index 0000000..79f34f2 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/14-on-tap-huong-doi-tuong-java/1-mo-dau.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/1-chuyen-doi-kieu-du-lieu.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/1-chuyen-doi-kieu-du-lieu.png new file mode 100644 index 0000000..646a7ea Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/1-chuyen-doi-kieu-du-lieu.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/10-mot-so-thao-tac-String-tim-chuoi.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/10-mot-so-thao-tac-String-tim-chuoi.png new file mode 100644 index 0000000..15219dc Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/10-mot-so-thao-tac-String-tim-chuoi.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/11-tach-chuoi-thay-the-chuoi.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/11-tach-chuoi-thay-the-chuoi.png new file mode 100644 index 0000000..a686d8e Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/11-tach-chuoi-thay-the-chuoi.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/12-wrapper-class-data.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/12-wrapper-class-data.png new file mode 100644 index 0000000..5cb2304 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/12-wrapper-class-data.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/13-mot-so-thao-tac-dinh-dang-chuoi.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/13-mot-so-thao-tac-dinh-dang-chuoi.png new file mode 100644 index 0000000..31931a6 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/13-mot-so-thao-tac-dinh-dang-chuoi.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/2-cau-truc-dieu-khien-if.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/2-cau-truc-dieu-khien-if.png new file mode 100644 index 0000000..a00e250 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/2-cau-truc-dieu-khien-if.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/3-cau-truc-dieu-khien-switch.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/3-cau-truc-dieu-khien-switch.png new file mode 100644 index 0000000..ea490ce Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/3-cau-truc-dieu-khien-switch.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/4-kieu-du-lieu-khong-dung-trong-switch.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/4-kieu-du-lieu-khong-dung-trong-switch.png new file mode 100644 index 0000000..6d31039 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/4-kieu-du-lieu-khong-dung-trong-switch.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/5-loop-while-do-while.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/5-loop-while-do-while.png new file mode 100644 index 0000000..fce15f4 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/5-loop-while-do-while.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/6-loop-for.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/6-loop-for.png new file mode 100644 index 0000000..cb64adb Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/6-loop-for.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/7-break-continue.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/7-break-continue.png new file mode 100644 index 0000000..fd7df58 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/7-break-continue.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/8-chuoi-String.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/8-chuoi-String.png new file mode 100644 index 0000000..cb7b8ef Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/8-chuoi-String.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/9-mot-so-thao-tac-String-1.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/9-mot-so-thao-tac-String-1.png new file mode 100644 index 0000000..2282fc6 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/9-mot-so-thao-tac-String-1.png differ diff --git a/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/9-mot-so-thao-tac-String.png b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/9-mot-so-thao-tac-String.png new file mode 100644 index 0000000..793fde8 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/3-nhap-mon-lap-trinh-java-2/9-mot-so-thao-tac-String.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/1-van-de-heap-task.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/1-van-de-heap-task.png new file mode 100644 index 0000000..63f9b96 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/1-van-de-heap-task.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/10-nhap-xuat-console.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/10-nhap-xuat-console.png new file mode 100644 index 0000000..c7c10f0 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/10-nhap-xuat-console.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/11-doc-ghi-tap-tin-van-ban.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/11-doc-ghi-tap-tin-van-ban.png new file mode 100644 index 0000000..f6bfb60 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/11-doc-ghi-tap-tin-van-ban.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/12-doc-ghi-tap-tin-FileWriter.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/12-doc-ghi-tap-tin-FileWriter.png new file mode 100644 index 0000000..004364b Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/12-doc-ghi-tap-tin-FileWriter.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/2-string-builder-noi-chuoi.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/2-string-builder-noi-chuoi.png new file mode 100644 index 0000000..e617803 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/2-string-builder-noi-chuoi.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/3-mang-mot-chieu.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/3-mang-mot-chieu.png new file mode 100644 index 0000000..2ac0e45 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/3-mang-mot-chieu.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/4-cai-hoi.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/4-cai-hoi.png new file mode 100644 index 0000000..3140e59 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/4-cai-hoi.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/5-sap-chep-mang.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/5-sap-chep-mang.png new file mode 100644 index 0000000..3365d3d Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/5-sap-chep-mang.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/6-kieu-Date.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/6-kieu-Date.png new file mode 100644 index 0000000..51dd2ba Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/6-kieu-Date.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/7-thao-tac-voi-Date.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/7-thao-tac-voi-Date.png new file mode 100644 index 0000000..49dcad8 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/7-thao-tac-voi-Date.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/8-convert-date-String.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/8-convert-date-String.png new file mode 100644 index 0000000..54ec162 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/8-convert-date-String.png differ diff --git a/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/9-class-GregorianCalendar.png b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/9-class-GregorianCalendar.png new file mode 100644 index 0000000..ab1e9cc Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/4-nhap-mon-lap-trinh-java-3/9-class-GregorianCalendar.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/1-lop-doi-tuong.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/1-lop-doi-tuong.png new file mode 100644 index 0000000..596e0b4 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/1-lop-doi-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/10-vi-du-phuong-thuc.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/10-vi-du-phuong-thuc.png new file mode 100644 index 0000000..8b492ae Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/10-vi-du-phuong-thuc.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/11-setter-getter.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/11-setter-getter.png new file mode 100644 index 0000000..70c68db Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/11-setter-getter.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/12-vi-du-getter-setter.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/12-vi-du-getter-setter.png new file mode 100644 index 0000000..2d0447b Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/12-vi-du-getter-setter.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/13-phuong-thuc-khoi-tao.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/13-phuong-thuc-khoi-tao.png new file mode 100644 index 0000000..18b5d43 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/13-phuong-thuc-khoi-tao.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/14-vi-du-phuong-thuc-khoi-tao.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/14-vi-du-phuong-thuc-khoi-tao.png new file mode 100644 index 0000000..2af98ac Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/14-vi-du-phuong-thuc-khoi-tao.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/15-cau-hoi.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/15-cau-hoi.png new file mode 100644 index 0000000..10547a1 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/15-cau-hoi.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/16-tim-loi.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/16-tim-loi.png new file mode 100644 index 0000000..7d851fb Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/16-tim-loi.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/17-truyen-mang-vao-phuong-thuc.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/17-truyen-mang-vao-phuong-thuc.png new file mode 100644 index 0000000..d57ee80 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/17-truyen-mang-vao-phuong-thuc.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/18-cau-hoi-tham-tri-tham-chieu.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/18-cau-hoi-tham-tri-tham-chieu.png new file mode 100644 index 0000000..ae228c5 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/18-cau-hoi-tham-tri-tham-chieu.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/2-noi-dung-chinh.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/2-noi-dung-chinh.png new file mode 100644 index 0000000..d88cc86 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/2-noi-dung-chinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/3-lop-class.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/3-lop-class.png new file mode 100644 index 0000000..0f8370e Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/3-lop-class.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/4-role-dat-ten-lop-1.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/4-role-dat-ten-lop-1.png new file mode 100644 index 0000000..561e7df Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/4-role-dat-ten-lop-1.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/4-role-dat-ten-lop.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/4-role-dat-ten-lop.png new file mode 100644 index 0000000..3b8d2c5 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/4-role-dat-ten-lop.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/5-thuoc-tinh-cua-doi-tuong.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/5-thuoc-tinh-cua-doi-tuong.png new file mode 100644 index 0000000..4f073d3 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/5-thuoc-tinh-cua-doi-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/6-role-thuoc-tinh.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/6-role-thuoc-tinh.png new file mode 100644 index 0000000..f5dbd07 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/6-role-thuoc-tinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/7-phuong-thuc.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/7-phuong-thuc.png new file mode 100644 index 0000000..b74de81 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/7-phuong-thuc.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/8-cu-phap-khai-bao-phuong-thuc.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/8-cu-phap-khai-bao-phuong-thuc.png new file mode 100644 index 0000000..60ad7c7 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/8-cu-phap-khai-bao-phuong-thuc.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/9-ten-thuoc-tinh.png b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/9-ten-thuoc-tinh.png new file mode 100644 index 0000000..58ddda9 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/9-ten-thuoc-tinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/readme.md b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/readme.md new file mode 100644 index 0000000..afcc1cb --- /dev/null +++ b/Java-OOP/java-oop/doc/slide/5-lop-doi-tuong-1/readme.md @@ -0,0 +1,20 @@ +## Truyền tham trị và tham chiếu cho phương thức Java + +Trong Java có 2 cách để truyền tham số cho phương thức: + +1. Tham trị - pass by value + +2. Tham chiếu - pass by reference + +## Truyền tham trị trong java + +Trong Java khi gọi một phương thức và truyền một giá trị cho phương thức -> được gọi là truyền tham trị. + +Việc thay đổi giá trị chỉ có hiệu lực trong phương thức được gọi, không có hiệu lực bên ngoài phương thức. + +Truyền tham trị dành cho các tham số kiểu nguyên thủy: byte, short, int, long, float, double, boolean, char. + + +## Truyền tham chiếu trong Java + + diff --git a/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/10-thuoc-tinh-phuong-thuc-tinh.png b/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/10-thuoc-tinh-phuong-thuc-tinh.png new file mode 100644 index 0000000..9396938 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/10-thuoc-tinh-phuong-thuc-tinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/11-initalization-block.png b/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/11-initalization-block.png new file mode 100644 index 0000000..14b4804 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/11-initalization-block.png differ diff --git a/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/12-initalization-block-vidu.png b/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/12-initalization-block-vidu.png new file mode 100644 index 0000000..7328652 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/12-initalization-block-vidu.png differ diff --git a/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/13-initalization-static-block-vidu.png b/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/13-initalization-static-block-vidu.png new file mode 100644 index 0000000..acab71c Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/6-lop-doi-tuong-2/13-initalization-static-block-vidu.png differ diff --git a/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/3-nap-chong-test.png b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/3-nap-chong-test.png new file mode 100644 index 0000000..1a45135 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/3-nap-chong-test.png differ diff --git a/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/4-ky-hieu-UML-bieu-dien-lop.png b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/4-ky-hieu-UML-bieu-dien-lop.png new file mode 100644 index 0000000..66ccba0 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/4-ky-hieu-UML-bieu-dien-lop.png differ diff --git a/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/5-ky-hieu-uml-hieu-dien-lop-vi-du.png b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/5-ky-hieu-uml-hieu-dien-lop-vi-du.png new file mode 100644 index 0000000..953f5a4 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/5-ky-hieu-uml-hieu-dien-lop-vi-du.png differ diff --git a/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/8-quan-he-giua-lop-doi-tuong.png b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/8-quan-he-giua-lop-doi-tuong.png new file mode 100644 index 0000000..77d9ce4 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/8-quan-he-giua-lop-doi-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/9-quan-he-lop-doi-tuong.png b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/9-quan-he-lop-doi-tuong.png new file mode 100644 index 0000000..18e7eef Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/7-lop-doi-tuong-3/9-quan-he-lop-doi-tuong.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/1-ke-thua-overview.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/1-ke-thua-overview.png new file mode 100644 index 0000000..f2e398e Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/1-ke-thua-overview.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/10-phuong-thuc-khoi-tao-trong-ke-thua.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/10-phuong-thuc-khoi-tao-trong-ke-thua.png new file mode 100644 index 0000000..50a0921 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/10-phuong-thuc-khoi-tao-trong-ke-thua.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/11-phuong-thuc-khoi-tao-vidu.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/11-phuong-thuc-khoi-tao-vidu.png new file mode 100644 index 0000000..8713d93 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/11-phuong-thuc-khoi-tao-vidu.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/12-phuong-thuc-khoi-tao-vidu.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/12-phuong-thuc-khoi-tao-vidu.png new file mode 100644 index 0000000..d3ef506 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/12-phuong-thuc-khoi-tao-vidu.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/13-phuong-thuc-khoi-tao-vidu.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/13-phuong-thuc-khoi-tao-vidu.png new file mode 100644 index 0000000..5453396 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/13-phuong-thuc-khoi-tao-vidu.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/14-phuong-thuc-khoi-tao-vidu.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/14-phuong-thuc-khoi-tao-vidu.png new file mode 100644 index 0000000..0debf2c Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/14-phuong-thuc-khoi-tao-vidu.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/2-noi-dung-chinh.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/2-noi-dung-chinh.png new file mode 100644 index 0000000..9dbdb45 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/2-noi-dung-chinh.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/3-ke-thua.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/3-ke-thua.png new file mode 100644 index 0000000..62e596d Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/3-ke-thua.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/4-ke-thua-uml.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/4-ke-thua-uml.png new file mode 100644 index 0000000..9c732d1 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/4-ke-thua-uml.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/5-ke-thua-cac-loai.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/5-ke-thua-cac-loai.png new file mode 100644 index 0000000..a5d7739 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/5-ke-thua-cac-loai.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/6-ke-thua-vi-du.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/6-ke-thua-vi-du.png new file mode 100644 index 0000000..d100ad4 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/6-ke-thua-vi-du.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/7-uml-class-ke-thua.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/7-uml-class-ke-thua.png new file mode 100644 index 0000000..b5ea7cd Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/7-uml-class-ke-thua.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/8-ke-thua-luu-y.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/8-ke-thua-luu-y.png new file mode 100644 index 0000000..3faaa76 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/8-ke-thua-luu-y.png differ diff --git a/Java-OOP/java-oop/doc/slide/8-ke-thua-1/9-cau-hoi.png b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/9-cau-hoi.png new file mode 100644 index 0000000..792f052 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/8-ke-thua-1/9-cau-hoi.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/1-pham-vi-truy-cap-protected.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/1-pham-vi-truy-cap-protected.png new file mode 100644 index 0000000..1ce49ba Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/1-pham-vi-truy-cap-protected.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/10-ghi-de-overrideing-overloading.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/10-ghi-de-overrideing-overloading.png new file mode 100644 index 0000000..0979970 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/10-ghi-de-overrideing-overloading.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/11-ghi-de-overrideing-overloading-static-method.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/11-ghi-de-overrideing-overloading-static-method.png new file mode 100644 index 0000000..04b44ee Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/11-ghi-de-overrideing-overloading-static-method.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/12-ghi-de-overrideing-overloading-static-method.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/12-ghi-de-overrideing-overloading-static-method.png new file mode 100644 index 0000000..ae040d8 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/12-ghi-de-overrideing-overloading-static-method.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/2-phan-bo-pham-vi-truy-cap.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/2-phan-bo-pham-vi-truy-cap.png new file mode 100644 index 0000000..882e5a8 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/2-phan-bo-pham-vi-truy-cap.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/3-vi-du-protected.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/3-vi-du-protected.png new file mode 100644 index 0000000..8b56714 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/3-vi-du-protected.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/4-vi-du-protected.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/4-vi-du-protected.png new file mode 100644 index 0000000..83bc578 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/4-vi-du-protected.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/5-vi-du-protected.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/5-vi-du-protected.png new file mode 100644 index 0000000..7114448 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/5-vi-du-protected.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/6-tu-khoa-supper.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/6-tu-khoa-supper.png new file mode 100644 index 0000000..c30f3cd Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/6-tu-khoa-supper.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/7-ghi-de.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/7-ghi-de.png new file mode 100644 index 0000000..29638be Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/7-ghi-de.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/8-ghi-de.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/8-ghi-de.png new file mode 100644 index 0000000..57d9cfe Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/8-ghi-de.png differ diff --git a/Java-OOP/java-oop/doc/slide/9-ke-thua-2/9-ghi-de.png b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/9-ghi-de.png new file mode 100644 index 0000000..ba83f55 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/9-ke-thua-2/9-ghi-de.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/0-overview.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/0-overview.png new file mode 100644 index 0000000..1009fc9 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/0-overview.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/1-tip-01-PIC.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/1-tip-01-PIC.png new file mode 100644 index 0000000..52527e5 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/1-tip-01-PIC.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/10-tip-10-java-benefits.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/10-tip-10-java-benefits.png new file mode 100644 index 0000000..398486b Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/10-tip-10-java-benefits.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/11-tip-11-main-method.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/11-tip-11-main-method.png new file mode 100644 index 0000000..e3caf36 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/11-tip-11-main-method.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/12-tip-12-numeric-promotion.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/12-tip-12-numeric-promotion.png new file mode 100644 index 0000000..e009e16 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/12-tip-12-numeric-promotion.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/13-tip-13-comparsion.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/13-tip-13-comparsion.png new file mode 100644 index 0000000..7a64411 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/13-tip-13-comparsion.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/14-tip-14-if.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/14-tip-14-if.png new file mode 100644 index 0000000..a2354b5 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/14-tip-14-if.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/15-tip-15-take-care-with-ternary-operator.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/15-tip-15-take-care-with-ternary-operator.png new file mode 100644 index 0000000..10dfa22 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/15-tip-15-take-care-with-ternary-operator.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/16-tip-16-switch-case.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/16-tip-16-switch-case.png new file mode 100644 index 0000000..5fa9aa1 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/16-tip-16-switch-case.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/17-tip-17-for-loop.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/17-tip-17-for-loop.png new file mode 100644 index 0000000..040115e Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/17-tip-17-for-loop.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/18-tip-18-length-method-length-attribute.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/18-tip-18-length-method-length-attribute.png new file mode 100644 index 0000000..7cbf0d5 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/18-tip-18-length-method-length-attribute.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/19-tip-19-array.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/19-tip-19-array.png new file mode 100644 index 0000000..659ddcc Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/19-tip-19-array.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/2-tip-02.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/2-tip-02.png new file mode 100644 index 0000000..bf89e74 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/2-tip-02.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/20-tip20-right-way-to-declare-array.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/20-tip20-right-way-to-declare-array.png new file mode 100644 index 0000000..d19c21f Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/20-tip20-right-way-to-declare-array.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/21-tip-21-continue.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/21-tip-21-continue.png new file mode 100644 index 0000000..01e65ba Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/21-tip-21-continue.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/22-tip-22-dealing-with-break-and-continue.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/22-tip-22-dealing-with-break-and-continue.png new file mode 100644 index 0000000..24703b0 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/22-tip-22-dealing-with-break-and-continue.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/23-tip-23-right-way-to-declare-multi-dimesional-array.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/23-tip-23-right-way-to-declare-multi-dimesional-array.png new file mode 100644 index 0000000..6346a99 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/23-tip-23-right-way-to-declare-multi-dimesional-array.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/24-tip-14-array-and-arraylist.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/24-tip-14-array-and-arraylist.png new file mode 100644 index 0000000..950475b Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/24-tip-14-array-and-arraylist.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/25-tip-25-static.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/25-tip-25-static.png new file mode 100644 index 0000000..129aa03 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/25-tip-25-static.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/26-tip-16-tricky-for-loops-for-array.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/26-tip-16-tricky-for-loops-for-array.png new file mode 100644 index 0000000..a24e055 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/26-tip-16-tricky-for-loops-for-array.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/27-tip-27-increment-and-decrement.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/27-tip-27-increment-and-decrement.png new file mode 100644 index 0000000..6507ada Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/27-tip-27-increment-and-decrement.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/28-tip-plus-operator.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/28-tip-plus-operator.png new file mode 100644 index 0000000..355837c Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/28-tip-plus-operator.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/29-tip-29-interface.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/29-tip-29-interface.png new file mode 100644 index 0000000..71349fe Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/29-tip-29-interface.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/3-tip-03-the-famous-underscore-and-dollar.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/3-tip-03-the-famous-underscore-and-dollar.png new file mode 100644 index 0000000..a364559 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/3-tip-03-the-famous-underscore-and-dollar.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/30-tip-30-abstract-methods.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/30-tip-30-abstract-methods.png new file mode 100644 index 0000000..1b1abc2 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/30-tip-30-abstract-methods.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/4-tip-04-float-away.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/4-tip-04-float-away.png new file mode 100644 index 0000000..9abae58 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/4-tip-04-float-away.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/5-tip-05-mutil-declaration.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/5-tip-05-mutil-declaration.png new file mode 100644 index 0000000..d35ca20 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/5-tip-05-mutil-declaration.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/6-tip-06-multi-declaration-public-class.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/6-tip-06-multi-declaration-public-class.png new file mode 100644 index 0000000..99b4e0e Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/6-tip-06-multi-declaration-public-class.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/7-tip-07-null-object.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/7-tip-07-null-object.png new file mode 100644 index 0000000..0ba442d Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/7-tip-07-null-object.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/8-tip-08-default-value.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/8-tip-08-default-value.png new file mode 100644 index 0000000..e8ffa02 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/8-tip-08-default-value.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/9-tip-09-Intefer-int.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/9-tip-09-Intefer-int.png new file mode 100644 index 0000000..6cfd173 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/1-tips/9-tip-09-Intefer-int.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/1-create-boolea-objects.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/1-create-boolea-objects.png new file mode 100644 index 0000000..43e3690 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/1-create-boolea-objects.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/10-global-variable.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/10-global-variable.png new file mode 100644 index 0000000..d448613 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/10-global-variable.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/11-int-assign-character.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/11-int-assign-character.png new file mode 100644 index 0000000..0a37c38 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/11-int-assign-character.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/12-method-build-in-list.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/12-method-build-in-list.png new file mode 100644 index 0000000..b0e6209 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/12-method-build-in-list.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/13-compare-array-char-vs-int.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/13-compare-array-char-vs-int.png new file mode 100644 index 0000000..02f908d Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/13-compare-array-char-vs-int.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/14-relational-nullpointer-exception-and-runtime-exception.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/14-relational-nullpointer-exception-and-runtime-exception.png new file mode 100644 index 0000000..6942142 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/14-relational-nullpointer-exception-and-runtime-exception.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/15-get-month-return-uppercase-value.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/15-get-month-return-uppercase-value.png new file mode 100644 index 0000000..aeb71a9 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/15-get-month-return-uppercase-value.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/16-package-wrapper-class.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/16-package-wrapper-class.png new file mode 100644 index 0000000..b293bab Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/16-package-wrapper-class.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/17-quan-he-chi-em-ho-trong-java.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/17-quan-he-chi-em-ho-trong-java.png new file mode 100644 index 0000000..c016849 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/17-quan-he-chi-em-ho-trong-java.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/18-null-not-using-in-conditional.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/18-null-not-using-in-conditional.png new file mode 100644 index 0000000..29e716d Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/18-null-not-using-in-conditional.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/2-create-object.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/2-create-object.png new file mode 100644 index 0000000..5df670c Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/2-create-object.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/3-unreachable-code-continue-for-loop-vo-han.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/3-unreachable-code-continue-for-loop-vo-han.png new file mode 100644 index 0000000..1592250 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/3-unreachable-code-continue-for-loop-vo-han.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/4-springbuilder-spring.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/4-springbuilder-spring.png new file mode 100644 index 0000000..2b85229 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/4-springbuilder-spring.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/5-exception-handling-syntax.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/5-exception-handling-syntax.png new file mode 100644 index 0000000..76e17ac Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/5-exception-handling-syntax.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/6-String-pool-example.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/6-String-pool-example.png new file mode 100644 index 0000000..ddfa0d8 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/6-String-pool-example.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/7-String-pool-compile-runtime-example.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/7-String-pool-compile-runtime-example.png new file mode 100644 index 0000000..ad05fef Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/7-String-pool-compile-runtime-example.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/8-name-of-class.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/8-name-of-class.png new file mode 100644 index 0000000..7f7cdcf Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/8-name-of-class.png differ diff --git a/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/9-variable-in-block-code.png b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/9-variable-in-block-code.png new file mode 100644 index 0000000..2a7dd53 Binary files /dev/null and b/Java-OOP/java-oop/doc/slide/oca-java-8-1Z0-808/2-cheet-sheet-2/9-variable-in-block-code.png differ diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/encapsulation/Animal.class b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/encapsulation/Animal.class new file mode 100644 index 0000000..2a78cd4 Binary files /dev/null and b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/encapsulation/Animal.class differ diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inheritance/Cat.class b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inheritance/Cat.class new file mode 100644 index 0000000..2339e64 Binary files /dev/null and b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inheritance/Cat.class differ diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inheritance/Dog.class b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inheritance/Dog.class new file mode 100644 index 0000000..5920873 Binary files /dev/null and b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inheritance/Dog.class differ diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IAct.class b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IAct.class new file mode 100644 index 0000000..91d02e1 Binary files /dev/null and b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IAct.class differ diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IClimb.class b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IClimb.class new file mode 100644 index 0000000..4ee74a2 Binary files /dev/null and b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IClimb.class differ diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IFly.class b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IFly.class new file mode 100644 index 0000000..e8bff2c Binary files /dev/null and b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IFly.class differ diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IRun.class b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IRun.class new file mode 100644 index 0000000..f27ef94 Binary files /dev/null and b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/IRun.class differ diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/ISwim.class b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/ISwim.class new file mode 100644 index 0000000..85d47ff Binary files /dev/null and b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/inte/ISwim.class differ diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/polymorphism/Polymorphism-annimal.drawio b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/polymorphism/Polymorphism-annimal.drawio new file mode 100644 index 0000000..026aafe --- /dev/null +++ b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/polymorphism/Polymorphism-annimal.drawio @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/polymorphism/note.txt b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/polymorphism/note.txt new file mode 100644 index 0000000..4163389 --- /dev/null +++ b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/polymorphism/note.txt @@ -0,0 +1,3 @@ + +Polymorphism + diff --git a/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/zoo/ManageAnimal.class b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/zoo/ManageAnimal.class new file mode 100644 index 0000000..83603cb Binary files /dev/null and b/Java-OOP/java-oop/out/production/java-oop/com/jindo/core/zoo/ManageAnimal.class differ diff --git a/Java-OOP/java-oop/out/production/java-oop/data/data.txt b/Java-OOP/java-oop/out/production/java-oop/data/data.txt new file mode 100644 index 0000000..3903fb6 --- /dev/null +++ b/Java-OOP/java-oop/out/production/java-oop/data/data.txt @@ -0,0 +1,11 @@ +Khong Minh Manh +Thai Binh +Ha Noi +Java That la don gian +Nhap mon lap trinh Java - Phan 1 +Nhap mon lap trinh Java - Phan 2 +Nhap mon lap trinh Java - Phan 3 +Da luong trong Java - Phan 1 +Da luong trong Java - Phan 2 +Da luong trong Java - Phan 3 +Da luong trong Java - Phan 4 \ No newline at end of file diff --git a/Java-OOP/java-oop/out/production/java-oop/data/data2.txt b/Java-OOP/java-oop/out/production/java-oop/data/data2.txt new file mode 100644 index 0000000..271cdc8 --- /dev/null +++ b/Java-OOP/java-oop/out/production/java-oop/data/data2.txt @@ -0,0 +1,9 @@ +Tran Thu Trang +100 +3.143456 +Khong Minh Manh +200 +9.143456 +Khong Minh Manh +200 +9.143456 diff --git a/Java-OOP/java-oop/readme.md b/Java-OOP/java-oop/readme.md new file mode 100644 index 0000000..6fdbdf6 --- /dev/null +++ b/Java-OOP/java-oop/readme.md @@ -0,0 +1,55 @@ +# Lập trình OOP Java - Thanh Duong Huu + +Coder Khong Minh Manh@2022 + +## Tổng quát lập trình hướng đối tượng + +Đã học xong bài 1 + +Đã note tài liệu slide bài giảng + +## Nhập môn lập trình Java - Phần 1 + + +## Nhập môn lập trình Java - Phần 2 + + + +## Nhập môn lập trình Java - Phần 3 + + +## Lớp và đối tượng - Phần 1 + + +## Lớp và đối tượng - Phần 2 + + +## Lớp và đối tượng - Phần 3 + + +## Kế thừa - Phần 1 + + +## Kế thừa - Phần 2 + + +## Kế thừa - Phần 3 + + +## Lớp trừu tượng + + +## Giao diện (Interface) + + + +## Giới thiệu lập trình tổng quan (Generic Programming) + + +## Ôn tập lập trình hướng đối tượng Java + + + +## Reference Document + +[Lập trình OOP với Java](https://www.youtube.com/playlist?list=PLlVHoHHccp28K8LMCmXFuTML8fgR8e4pc) \ No newline at end of file diff --git a/Java-OOP/java-oop/src/com/jindo/core/cheatsheet/IntAssignString.java b/Java-OOP/java-oop/src/com/jindo/core/cheatsheet/IntAssignString.java new file mode 100644 index 0000000..a655397 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/cheatsheet/IntAssignString.java @@ -0,0 +1,25 @@ +package com.jindo.core.cheatsheet; + +/** + * @author ManhKM on 9/1/2022 + * @project java-oop + */ +public class IntAssignString { + + public static void main(String[] args) { + int number = 30_041_996; + int a = '7'; // Kiểu char -> bảng mã ACI.. + System.out.println(a); + System.out.println(number); + + if (1==1) { + System.out.println("TRUE"); + } else { + System.out.println("FALSE"); + } + + System.out.println((10>9)?"TRUE":"FALSE"); + + } + +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/cheatsheet/StringPlusString.java b/Java-OOP/java-oop/src/com/jindo/core/cheatsheet/StringPlusString.java new file mode 100644 index 0000000..07b5b98 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/cheatsheet/StringPlusString.java @@ -0,0 +1,23 @@ +package com.jindo.core.cheatsheet; + +/** + * @author ManhKM on 9/1/2022 + * @project java-oop + */ +public class StringPlusString { + + public static void main(String[] args) { + String a = "abcd"; + String b = "abcd123"; + String c = "abcd" + "123"; // StringPool kiểm tra đã có abcd123 rồi -> trỏ cái c vào StringPool đó + String d = a + 123; + String e = "abcd" + 123 +""; + String cObject = new String(c); + + System.out.println(b == c); + System.out.println(b == cObject); + System.out.println(b == d); //false + System.out.println(b == e); + } + +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/encapsulation/Animal.java b/Java-OOP/java-oop/src/com/jindo/core/encapsulation/Animal.java new file mode 100644 index 0000000..edf7248 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/encapsulation/Animal.java @@ -0,0 +1,63 @@ +package com.jindo.core.encapsulation; + +import com.jindo.core.inte.IAct; + +/** + * @author ManhKM on 5/16/2022 + * @project java-oop + * ---- Khởi tạo đối tượng Animal đại diện cho các loại vật có trong Zoo + * 1. Tính chất đóng gói thể hiện ở việc đưa các thuộc tính, hành vi của đối tượng vào trong một class. + * 2. Việc che dấu đi các thuộc tính bên trong và chỉ cho theo tác ra ngoài thông qua các method public + */ +public class Animal implements IAct { + private String name; + private String weight; + private String height; + + public Animal(String name, String weight, String height) { + this.name = name; + this.weight = weight; + this.height = height; + } + + public Animal() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getWeight() { + return weight; + } + + public void setWeight(String weight) { + this.weight = weight; + } + + public String getHeight() { + return height; + } + + public void setHeight(String height) { + this.height = height; + } + + @Override + public String toString() { + return "Animal{" + + "name='" + name + '\'' + + ", weight='" + weight + '\'' + + ", height='" + height + '\'' + + '}'; + } + + @Override + public void running(String style) { + System.out.println("Chạy theo một kiểu Animal"); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/generic/Hello.java b/Java-OOP/java-oop/src/com/jindo/core/generic/Hello.java new file mode 100644 index 0000000..114b590 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/generic/Hello.java @@ -0,0 +1,9 @@ +package com.jindo.core.generic; + +/** + * @author ManhKM on 9/1/2022 + * @project java-oop + */ +public interface Hello { + void show(String name, int age); +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/generic/PhanSo.java b/Java-OOP/java-oop/src/com/jindo/core/generic/PhanSo.java new file mode 100644 index 0000000..51e289a --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/generic/PhanSo.java @@ -0,0 +1,38 @@ +package com.jindo.core.generic; + +/** + * @author ManhKM on 9/1/2022 + * @project java-oop + */ +public class PhanSo { + private int t, m; + + public PhanSo(int t, int m){ + this.t = t; + this.m = m; + } + + public int getT() { + return t; + } + + public void setT(int t) { + this.t = t; + } + + public int getM() { + return m; + } + + public void setM(int m) { + this.m = m; + } + + @Override + public String toString() { + return "PhanSo{" + + "t=" + t + + ", m=" + m + + '}'; + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/generic/TestDemo.java b/Java-OOP/java-oop/src/com/jindo/core/generic/TestDemo.java new file mode 100644 index 0000000..1cb5a10 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/generic/TestDemo.java @@ -0,0 +1,58 @@ +package com.jindo.core.generic; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.function.Consumer; + +/** + * @author ManhKM on 9/1/2022 + * @project java-oop + */ +public class TestDemo { + + public static void main(String[] args) { + + List list = new ArrayList<>(); + list.add(new PhanSo(2,3)); + list.add(new PhanSo(1,3)); + list.add(new PhanSo(4,3)); + list.add(new PhanSo(5,3)); + + list.sort(new Comparator() { + @Override + public int compare(PhanSo o1, PhanSo o2) { + return 0; + } + }); + + list.sort((PhanSo p1, PhanSo p2) -> { + int t1 = p1.getT()*p2.getM(); + int t2 = p1.getM()*p2.getT(); + return t1 - t2; + }); + + list.forEach((PhanSo t1) -> System.out.println(t1)); + + +// Cách 3: Sử dụng Lambda expression: +// Hello h = (n, a) -> System.out.print("Xin chào Việt Nam - lambda expression: " + n + " - age: " + a); +// h.show("Khổng Minh Mạnh", 19); + +// Cách 2: Lớp nặc danh +// Hello h = new Hello() { +// /** +// * Lớp nặc danh +// */ +// @Override +// public void show() { +// System.out.println("Xin chào Việt Nam from Interface Hello"); +// } +// }; +// h.show(); + +// Cách 1: Thông thường +// Hello h = new ViHello(); +// h.show(); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/generic/ViHello.java b/Java-OOP/java-oop/src/com/jindo/core/generic/ViHello.java new file mode 100644 index 0000000..25008cb --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/generic/ViHello.java @@ -0,0 +1,13 @@ +package com.jindo.core.generic; + +/** + * @author ManhKM on 9/1/2022 + * @project java-oop + */ +public class ViHello implements Hello{ + + @Override + public void show(String name, int age) { + System.out.println("Xin chào Việt Nam"); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/inheritance/Cat.java b/Java-OOP/java-oop/src/com/jindo/core/inheritance/Cat.java new file mode 100644 index 0000000..6f92373 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/inheritance/Cat.java @@ -0,0 +1,43 @@ +package com.jindo.core.inheritance; + +import com.jindo.core.encapsulation.Animal; +import com.jindo.core.inte.IClimb; +import com.jindo.core.inte.IRun; + +/** + * @author ManhKM on 5/16/2022 + * @project java-oop + * ----- + * Kế thừa lại các tính chất của lớp cha: + * các hành vi của lớp cha + */ +public class Cat extends Animal implements IRun, IClimb { + private String featherColor; + + public Cat(String name, String weight, String height, String featherColor) { + super(name, weight, height); + this.featherColor = featherColor; + } + + public Cat(String featherColor) { + this.featherColor = featherColor; + } + + public String getFeatherColor() { + return featherColor; + } + + public void setFeatherColor(String featherColor) { + this.featherColor = featherColor; + } + + @Override + public void running(String style) { + System.out.println("Chạy theo kiểu con Mèo....: style + " + style); + } + + @Override + public void climb(String style) { + System.out.println("Con mèo trèo cây : " + style); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/inheritance/Dog.java b/Java-OOP/java-oop/src/com/jindo/core/inheritance/Dog.java new file mode 100644 index 0000000..c077f6e --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/inheritance/Dog.java @@ -0,0 +1,20 @@ +package com.jindo.core.inheritance; + +import com.jindo.core.encapsulation.Animal; +import com.jindo.core.inte.IRun; + +/** + * @author ManhKM on 5/16/2022 + * @project java-oop + */ +public class Dog extends Animal implements IRun { + + public Dog(String name, String weight, String height) { + super(name, weight, height); + } + + @Override + public void running(String style) { + System.out.println("Chạy theo kiểu con Chó: vừa đi vừa: " + style); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/inte/IAct.java b/Java-OOP/java-oop/src/com/jindo/core/inte/IAct.java new file mode 100644 index 0000000..6aa2926 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/inte/IAct.java @@ -0,0 +1,12 @@ +package com.jindo.core.inte; + +/** + * @author ManhKM on 5/16/2022 + * @project java-oop + * ---- + * Các con vật đều phải chuyển động + * 2. Tính kế thừa là việc IFly extend từ IAct... + */ +public interface IAct { + public void running(String style); +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/inte/IClimb.java b/Java-OOP/java-oop/src/com/jindo/core/inte/IClimb.java new file mode 100644 index 0000000..b61689c --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/inte/IClimb.java @@ -0,0 +1,11 @@ +package com.jindo.core.inte; + +/** + * @author ManhKM on 5/16/2022 + * @project java-oop + * ----- + * Thể hiện động tác leo trèo + */ +public interface IClimb { + void climb(String style); +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/inte/IFly.java b/Java-OOP/java-oop/src/com/jindo/core/inte/IFly.java new file mode 100644 index 0000000..05dad76 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/inte/IFly.java @@ -0,0 +1,12 @@ +package com.jindo.core.inte; + +/** + * @author ManhKM on 5/16/2022 + * @project java-oop + * ----- + * Có con thì bay -> nó cũng là một loại từ Action + */ +public interface IFly extends IAct { + @Override + void running(String style); +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/inte/IRun.java b/Java-OOP/java-oop/src/com/jindo/core/inte/IRun.java new file mode 100644 index 0000000..d681ed9 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/inte/IRun.java @@ -0,0 +1,12 @@ +package com.jindo.core.inte; + +/** + * @author ManhKM on 5/16/2022 + * @project java-oop + * ----- + * Có con vật thì có thể Chạy + */ +public interface IRun extends IAct{ + @Override + void running(String style); +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/inte/ISwim.java b/Java-OOP/java-oop/src/com/jindo/core/inte/ISwim.java new file mode 100644 index 0000000..5a35ed7 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/inte/ISwim.java @@ -0,0 +1,13 @@ +package com.jindo.core.inte; + +/** + * @author ManhKM on 5/16/2022 + * @project java-oop + * ----- + * Có con vật thì có thể bơi + * Hoặc có cả con vật có thể kết hợp nhiều cái với nhau + */ +public interface ISwim extends IAct { + @Override + void running(String style); +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/java3/DateDemo.java b/Java-OOP/java-oop/src/com/jindo/core/java3/DateDemo.java new file mode 100644 index 0000000..36dc832 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/java3/DateDemo.java @@ -0,0 +1,37 @@ +package com.jindo.core.java3; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +/** + * @author ManhKM on 8/30/2022 + * @project java-oop + */ +public class DateDemo { + + public static void main(String[] args) { + // Format Date: + Date d = new Date(); + SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy 'at' hh:mm:ss"); + System.out.println(format.format(d)); + + // Convert chuỗi thành Date: + SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy"); + try { + Date date = format1.parse("30/04/1996"); + System.out.printf("Số mili giây: %d\n", date.getTime()); + } catch (ParseException e) { + e.printStackTrace(); + } + + // Using GregorianCalendar: + GregorianCalendar d1 = new GregorianCalendar(2022, 03, 40); + System.out.println(d1.getActualMaximum(Calendar.DAY_OF_YEAR)); + System.out.println(d1.getActualMaximum(Calendar.DAY_OF_MONTH)); + + } + +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/java3/ReadFileDemo.java b/Java-OOP/java-oop/src/com/jindo/core/java3/ReadFileDemo.java new file mode 100644 index 0000000..544cb5d --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/java3/ReadFileDemo.java @@ -0,0 +1,64 @@ +package com.jindo.core.java3; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Scanner; + +/** + * @author ManhKM on 8/30/2022 + * @project java-oop + */ +public class ReadFileDemo { + + public static void main(String[] args) { + //readFile(); + writeFile(); + + + } + + /** + * Hàm thực hiện ghi dữ liệu xuống file + */ + private static void writeFile() { + File file = new File("src/data/data2.txt"); + FileWriter fileWriter = null; + PrintWriter writer = null; + try { + fileWriter = new FileWriter(file, true); + writer = new PrintWriter(fileWriter); + writer.println("Khong Minh Manh"); + writer.println(200L); + writer.println(9.143456); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + writer.close(); + } + + } + + private static void readFile() { + File file = new File("src/data/data.txt"); + Scanner scanner = null; + try { + scanner = new Scanner(file); + String name = scanner.nextLine(); + String address = scanner.nextLine(); + + System.out.printf("Name=%s, Point=%s", name, address); + + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } finally { + scanner.close(); + } + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua1/A1.java b/Java-OOP/java-oop/src/com/jindo/core/kethua1/A1.java new file mode 100644 index 0000000..a0ccd23 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua1/A1.java @@ -0,0 +1,16 @@ +package com.jindo.core.kethua1; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class A1 { + + public A1(int v){ + System.out.println("A1 " + v); + } + + public A1() { + + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua1/B1.java b/Java-OOP/java-oop/src/com/jindo/core/kethua1/B1.java new file mode 100644 index 0000000..5b7c0b5 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua1/B1.java @@ -0,0 +1,12 @@ +package com.jindo.core.kethua1; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class B1 extends A1{ + + public B1(){ + System.out.println("B"); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua1/KeThuaLevel.java b/Java-OOP/java-oop/src/com/jindo/core/kethua1/KeThuaLevel.java new file mode 100644 index 0000000..888a25c --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua1/KeThuaLevel.java @@ -0,0 +1,31 @@ +package com.jindo.core.kethua1; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class KeThuaLevel { + + public static void main(String[] args) { + C c = new C(); + } + +} + +class A{ + public A(){ + System.out.println("A"); + } +} + +class B extends A{ + public B(){ + System.out.println("B"); + } +} + +class C extends B{ + public C(){ + System.out.println("C"); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua2/A.java b/Java-OOP/java-oop/src/com/jindo/core/kethua2/A.java new file mode 100644 index 0000000..a5aa55a --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua2/A.java @@ -0,0 +1,15 @@ +package com.jindo.core.kethua2; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class A { + private String getName(){ + return "A"; + } + + public void show(){ + System.out.println(this.getName()); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua2/AA.java b/Java-OOP/java-oop/src/com/jindo/core/kethua2/AA.java new file mode 100644 index 0000000..150b2a1 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua2/AA.java @@ -0,0 +1,11 @@ +package com.jindo.core.kethua2; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class AA { + public static void show(){ + System.out.println("A"); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua2/B.java b/Java-OOP/java-oop/src/com/jindo/core/kethua2/B.java new file mode 100644 index 0000000..e213737 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua2/B.java @@ -0,0 +1,11 @@ +package com.jindo.core.kethua2; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class B extends A{ + public String getName(){ + return "B"; + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua2/BB.java b/Java-OOP/java-oop/src/com/jindo/core/kethua2/BB.java new file mode 100644 index 0000000..0167292 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua2/BB.java @@ -0,0 +1,11 @@ +package com.jindo.core.kethua2; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class BB extends AA{ + public static void show(){ + System.out.println("B"); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua2/Main.java b/Java-OOP/java-oop/src/com/jindo/core/kethua2/Main.java new file mode 100644 index 0000000..310e8fc --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua2/Main.java @@ -0,0 +1,16 @@ +package com.jindo.core.kethua2; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class Main { + + public static void main(String[] args) { + A a = new A(); + a.show(); + + B b = new B(); + b.show(); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua2/MainAA.java b/Java-OOP/java-oop/src/com/jindo/core/kethua2/MainAA.java new file mode 100644 index 0000000..1d7f32e --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua2/MainAA.java @@ -0,0 +1,14 @@ +package com.jindo.core.kethua2; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class MainAA { + + public static void main(String[] args) { + AA aa = new BB(); + aa.show(); + } + +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua2/a/A.java b/Java-OOP/java-oop/src/com/jindo/core/kethua2/a/A.java new file mode 100644 index 0000000..58a293a --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua2/a/A.java @@ -0,0 +1,20 @@ +package com.jindo.core.kethua2.a; + +import com.jindo.core.kethua2.b.B; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class A { + protected static int count = 0; + public void inc(){ + count++; + } + + public static void main(String[] args){ + A a = new B(); + a.inc(); + System.out.println(A.count); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/kethua2/b/B.java b/Java-OOP/java-oop/src/com/jindo/core/kethua2/b/B.java new file mode 100644 index 0000000..6c58d91 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/kethua2/b/B.java @@ -0,0 +1,13 @@ +package com.jindo.core.kethua2.b; + +import com.jindo.core.kethua2.a.A; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class B extends A { + public void inc(){ + count += 2; + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/lopdoituong1/Number.java b/Java-OOP/java-oop/src/com/jindo/core/lopdoituong1/Number.java new file mode 100644 index 0000000..e1ae3ef --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/lopdoituong1/Number.java @@ -0,0 +1,33 @@ +package com.jindo.core.lopdoituong1; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + * ----- + * Kiểu số được object hóa + */ +public class Number { + + private int value; + + public Number(){} + + public Number(int value){ + this.value = value; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + @Override + public String toString() { + return "Number{" + + "value=" + value + + '}'; + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/lopdoituong1/TruyenThamChieu.java b/Java-OOP/java-oop/src/com/jindo/core/lopdoituong1/TruyenThamChieu.java new file mode 100644 index 0000000..79dfac8 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/lopdoituong1/TruyenThamChieu.java @@ -0,0 +1,30 @@ +package com.jindo.core.lopdoituong1; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + */ +public class TruyenThamChieu { + + public static void main(String[] args) { + + Number number1 = new Number(100); + Number number2 = new Number(200); + + System.out.println("Trước khi swap(): n1 = " + number1.getValue() + ", n2 = " + number2.getValue()); + swap(number1, number2); + System.out.println("Sau khi swap(): n1 = " + number1.getValue() + ", n2 = " + number2.getValue()); + } + + private static void swap(Number number1, Number number2) { + + System.out.println(" Giá trị các biến trong hàm swap(): "); + System.out.println(" [In method swap] Trước khi swap(): n1 = " + number1.getValue() + ", n2 = " + number2.getValue()); + + int temp = number1.getValue(); + number1.setValue(number2.getValue()); + number2.setValue(temp); + + System.out.println(" [In method swap] Sau khi swap(): n1 = " + number1.getValue() + ", n2 = " + number2.getValue()); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/lopdoituong1/TruyenThamTri.java b/Java-OOP/java-oop/src/com/jindo/core/lopdoituong1/TruyenThamTri.java new file mode 100644 index 0000000..0b3515b --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/lopdoituong1/TruyenThamTri.java @@ -0,0 +1,33 @@ +package com.jindo.core.lopdoituong1; + +/** + * @author ManhKM on 8/31/2022 + * @project java-oop + * ----- + * Truyền tham trị trong Java + * Reference: https://gochocit.com/ngon-ngu-lap-trinh/truyen-tham-tri-va-tham-chieu-cho-phuong-thuc-trong-java + */ +public class TruyenThamTri { + + public static void main(String[] args) { + int number1 = 111; + int number2 = 222; + + System.out.println("Trước khi swap(): n1 = " + number1 + ", n2 = " + number2); + swap(number1, number2); + System.out.println("Sau khi swap(): n1 = " + number1 + ", n2 = " + number2); + } + + private static void swap(int number1, int number2) { + + System.out.println(" Giá trị các biến trong hàm swap(): "); + System.out.println(" [In method swap] Trước khi swap(): n1 = " + number1 + ", n2 = " + number2); + + int temp = number1; + number1 = number2; + number2 = temp; + + System.out.println(" [In method swap] Sau khi swap(): n1 = " + number1 + ", n2 = " + number2); + + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Animal.java b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Animal.java new file mode 100644 index 0000000..7d84710 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Animal.java @@ -0,0 +1,12 @@ +package com.jindo.core.polymorphism; + +/** + * @author ManhKM on 10/23/2022 + * @project java-oop + * ----- + * Định nghĩa ra một Interface Animal + * có các method mà một Animal cần có + */ +public interface Animal { + public void move(); +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Bird.java b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Bird.java new file mode 100644 index 0000000..a66cccc --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Bird.java @@ -0,0 +1,13 @@ +package com.jindo.core.polymorphism; + +/** + * @author ManhKM on 10/23/2022 + * @project java-oop + */ +public class Bird implements Animal{ + + @Override + public void move() { + System.out.println("Flying..."); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Dog.java b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Dog.java new file mode 100644 index 0000000..7eee221 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Dog.java @@ -0,0 +1,13 @@ +package com.jindo.core.polymorphism; + +/** + * @author ManhKM on 10/23/2022 + * @project java-oop + */ +public class Dog implements Animal{ + + @Override + public void move() { + System.out.println("Running..."); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Fish.java b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Fish.java new file mode 100644 index 0000000..6af5d7c --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Fish.java @@ -0,0 +1,13 @@ +package com.jindo.core.polymorphism; + +/** + * @author ManhKM on 10/23/2022 + * @project java-oop + */ +public class Fish implements Animal{ + + @Override + public void move() { + System.out.println("Swimming..."); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/polymorphism/PolyMain.java b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/PolyMain.java new file mode 100644 index 0000000..a7a229e --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/PolyMain.java @@ -0,0 +1,19 @@ +package com.jindo.core.polymorphism; + +/** + * @author ManhKM on 10/23/2022 + * @project java-oop + */ +public class PolyMain { + + public static void main(String[] args) { + Trainer trainer = new Trainer(); + Animal dog = new Dog(); + Animal bird = new Bird(); + Animal fish = new Fish(); + + trainer.teach(dog); + trainer.teach(bird); + trainer.teach(fish); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Polymorphism-annimal.drawio b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Polymorphism-annimal.drawio new file mode 100644 index 0000000..026aafe --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Polymorphism-annimal.drawio @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Trainer.java b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Trainer.java new file mode 100644 index 0000000..b3ae103 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/Trainer.java @@ -0,0 +1,14 @@ +package com.jindo.core.polymorphism; + +/** + * @author ManhKM on 10/23/2022 + * @project java-oop + * ----- + * Định nghĩa một Class Trainer -> người huấn luyện + */ +public class Trainer { + + public void teach(Animal animal){ + animal.move(); + } +} diff --git a/Java-OOP/java-oop/src/com/jindo/core/polymorphism/note.txt b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/note.txt new file mode 100644 index 0000000..4163389 --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/polymorphism/note.txt @@ -0,0 +1,3 @@ + +Polymorphism + diff --git a/Java-OOP/java-oop/src/com/jindo/core/zoo/ManageAnimal.java b/Java-OOP/java-oop/src/com/jindo/core/zoo/ManageAnimal.java new file mode 100644 index 0000000..7e09c4e --- /dev/null +++ b/Java-OOP/java-oop/src/com/jindo/core/zoo/ManageAnimal.java @@ -0,0 +1,27 @@ +package com.jindo.core.zoo; + +import com.jindo.core.encapsulation.Animal; +import com.jindo.core.inheritance.Cat; +import com.jindo.core.inheritance.Dog; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 5/16/2022 + * @project java-oop + */ +public class ManageAnimal { + public static void main(String[] args) { + List animalList = new ArrayList<>(); + animalList.add(new Cat("Mèo mướp", "2kg", "10cm", "Màu tam thể")); + animalList.add(new Cat("Mèo Ai Cập", "2kg", "10cm", "Không có lông")); + animalList.add(new Dog("Chó mực", "15kg", "30cm")); + + for (Animal item: animalList) { + System.out.println(item); + + item.running("chạy"); + } + } +} diff --git a/Java-OOP/java-oop/src/data/data.txt b/Java-OOP/java-oop/src/data/data.txt new file mode 100644 index 0000000..3903fb6 --- /dev/null +++ b/Java-OOP/java-oop/src/data/data.txt @@ -0,0 +1,11 @@ +Khong Minh Manh +Thai Binh +Ha Noi +Java That la don gian +Nhap mon lap trinh Java - Phan 1 +Nhap mon lap trinh Java - Phan 2 +Nhap mon lap trinh Java - Phan 3 +Da luong trong Java - Phan 1 +Da luong trong Java - Phan 2 +Da luong trong Java - Phan 3 +Da luong trong Java - Phan 4 \ No newline at end of file diff --git a/Java-OOP/java-oop/src/data/data2.txt b/Java-OOP/java-oop/src/data/data2.txt new file mode 100644 index 0000000..271cdc8 --- /dev/null +++ b/Java-OOP/java-oop/src/data/data2.txt @@ -0,0 +1,9 @@ +Tran Thu Trang +100 +3.143456 +Khong Minh Manh +200 +9.143456 +Khong Minh Manh +200 +9.143456 diff --git a/Java-OOP/java-oop/src/gpcoder/oop/Animal.java b/Java-OOP/java-oop/src/gpcoder/oop/Animal.java new file mode 100644 index 0000000..d3569bf --- /dev/null +++ b/Java-OOP/java-oop/src/gpcoder/oop/Animal.java @@ -0,0 +1,7 @@ +package gpcoder.oop;/** + * Project: java-oop (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/19/2023-10:21 PM + * Note: + */public class Animal { +} diff --git a/Java-OOP/java-oop/src/gpcoder/oop/Cat.java b/Java-OOP/java-oop/src/gpcoder/oop/Cat.java new file mode 100644 index 0000000..cce83c8 --- /dev/null +++ b/Java-OOP/java-oop/src/gpcoder/oop/Cat.java @@ -0,0 +1,7 @@ +package gpcoder.oop;/** + * Project: java-oop (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/19/2023-10:23 PM + * Note: + */public class Cat { +} diff --git a/Java-OOP/java-oop/src/gpcoder/oop/Dog.java b/Java-OOP/java-oop/src/gpcoder/oop/Dog.java new file mode 100644 index 0000000..a4fa833 --- /dev/null +++ b/Java-OOP/java-oop/src/gpcoder/oop/Dog.java @@ -0,0 +1,7 @@ +package gpcoder.oop;/** + * Project: java-oop (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/19/2023-10:25 PM + * Note: + */public class Dog { +} diff --git a/Java-OOP/java-oop/src/gpcoder/oop/OopApplication.java b/Java-OOP/java-oop/src/gpcoder/oop/OopApplication.java new file mode 100644 index 0000000..e3083f0 --- /dev/null +++ b/Java-OOP/java-oop/src/gpcoder/oop/OopApplication.java @@ -0,0 +1,7 @@ +package gpcoder.oop;/** + * Project: java-oop (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/19/2023-10:27 PM + * Note: + */public class OopApplication { +} diff --git a/Java-OOP/java-oop/src/gpcoder/oop/Zoo.java b/Java-OOP/java-oop/src/gpcoder/oop/Zoo.java new file mode 100644 index 0000000..1a789e4 --- /dev/null +++ b/Java-OOP/java-oop/src/gpcoder/oop/Zoo.java @@ -0,0 +1,7 @@ +package gpcoder.oop;/** + * Project: java-oop (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/19/2023-10:25 PM + * Note: + */public class Zoo { +} diff --git a/Java-OS/oshi b/Java-OS/oshi new file mode 160000 index 0000000..1594b97 --- /dev/null +++ b/Java-OS/oshi @@ -0,0 +1 @@ +Subproject commit 1594b97aafb2c52f0600ae7c0c6a2cab6c41fadc diff --git a/Java-Object-Class/out/production/Java-Object/com/javaobject/date/DateDemo.class b/Java-Object-Class/out/production/Java-Object/com/javaobject/date/DateDemo.class new file mode 100644 index 0000000..e959c25 Binary files /dev/null and b/Java-Object-Class/out/production/Java-Object/com/javaobject/date/DateDemo.class differ diff --git a/Java-Object-Class/out/production/Java-Object/com/javaobject/date/HashSetDemo.class b/Java-Object-Class/out/production/Java-Object/com/javaobject/date/HashSetDemo.class new file mode 100644 index 0000000..000a7c5 Binary files /dev/null and b/Java-Object-Class/out/production/Java-Object/com/javaobject/date/HashSetDemo.class differ diff --git a/Java-Object-Class/out/production/Java-Object/com/javaobject/initblock/Hello.class b/Java-Object-Class/out/production/Java-Object/com/javaobject/initblock/Hello.class new file mode 100644 index 0000000..8462d8f Binary files /dev/null and b/Java-Object-Class/out/production/Java-Object/com/javaobject/initblock/Hello.class differ diff --git a/Java-Object-Class/out/production/Java-Object/com/javaobject/initblock/TestInitBlock.class b/Java-Object-Class/out/production/Java-Object/com/javaobject/initblock/TestInitBlock.class new file mode 100644 index 0000000..a629381 Binary files /dev/null and b/Java-Object-Class/out/production/Java-Object/com/javaobject/initblock/TestInitBlock.class differ diff --git a/Java-Object-Class/out/production/Java-Object/com/javaobject/objectconstruction/DefaultField.class b/Java-Object-Class/out/production/Java-Object/com/javaobject/objectconstruction/DefaultField.class new file mode 100644 index 0000000..bfbc84b Binary files /dev/null and b/Java-Object-Class/out/production/Java-Object/com/javaobject/objectconstruction/DefaultField.class differ diff --git a/Java-Object-Class/src/com/javaobject/date/DateDemo.java b/Java-Object-Class/src/com/javaobject/date/DateDemo.java new file mode 100644 index 0000000..230638f --- /dev/null +++ b/Java-Object-Class/src/com/javaobject/date/DateDemo.java @@ -0,0 +1,17 @@ +package com.javaobject.date; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author ManhKM on 3/7/2022 + * @project Java-Object + */ +public class DateDemo { + public static void main(String[] args) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss"); + System.out.println(simpleDateFormat.getCalendar().getTime()); + + System.out.println("new Date: " + new Date()); + } +} diff --git a/Java-Object-Class/src/com/javaobject/date/HashSetDemo.java b/Java-Object-Class/src/com/javaobject/date/HashSetDemo.java new file mode 100644 index 0000000..0368b6b --- /dev/null +++ b/Java-Object-Class/src/com/javaobject/date/HashSetDemo.java @@ -0,0 +1,22 @@ +package com.javaobject.date; + +import java.util.HashSet; +import java.util.Set; + +/** + * @author ManhKM on 3/7/2022 + * @project Java-Object + */ +public class HashSetDemo { + private static Set listKeyIgnore = new HashSet<>(); + public static void main(String[] args) { + listKeyIgnore.add("ManhKM"); + listKeyIgnore.add("TrangTT"); + listKeyIgnore.add("HaVT"); + listKeyIgnore.add("TrangTT"); + listKeyIgnore.add("TrangTT"); + for (String item: listKeyIgnore) { + System.out.println(item); + } + } +} diff --git a/Java-Object-Class/src/com/javaobject/initblock/Hello.java b/Java-Object-Class/src/com/javaobject/initblock/Hello.java new file mode 100644 index 0000000..0d8d695 --- /dev/null +++ b/Java-Object-Class/src/com/javaobject/initblock/Hello.java @@ -0,0 +1,11 @@ +package com.javaobject.initblock; + +/** + * @author ManhKM on 5/18/2022 + * @project Java-Object-Class + */ +public class Hello { + static { + System.out.println("Method static: Hello, World!!!"); + } +} diff --git a/Java-Object-Class/src/com/javaobject/initblock/TestInitBlock.java b/Java-Object-Class/src/com/javaobject/initblock/TestInitBlock.java new file mode 100644 index 0000000..4ee1823 --- /dev/null +++ b/Java-Object-Class/src/com/javaobject/initblock/TestInitBlock.java @@ -0,0 +1,11 @@ +package com.javaobject.initblock; + +/** + * @author ManhKM on 5/18/2022 + * @project Java-Object-Class + */ +public class TestInitBlock { + public static void main(String[] args) { + new Hello(); + } +} diff --git a/Java-Object-Class/src/com/javaobject/objectconstruction/DefaultField.java b/Java-Object-Class/src/com/javaobject/objectconstruction/DefaultField.java new file mode 100644 index 0000000..9b7dae7 --- /dev/null +++ b/Java-Object-Class/src/com/javaobject/objectconstruction/DefaultField.java @@ -0,0 +1,14 @@ +package com.javaobject.objectconstruction; + +/** + * @author ManhKM on 5/18/2022 + * @project Java-Object-Class + */ +public class DefaultField { + public static void main(String[] args) { + String mess = null; + boolean isValue = false; + System.out.println("Value of mess: " + mess); + System.out.println("Value of iValue: " + isValue); + } +} diff --git a/Java-Pattern/java-partern/out/production/java-partern/com/jindo/core/AppMain.class b/Java-Pattern/java-partern/out/production/java-partern/com/jindo/core/AppMain.class new file mode 100644 index 0000000..b43e1f4 Binary files /dev/null and b/Java-Pattern/java-partern/out/production/java-partern/com/jindo/core/AppMain.class differ diff --git a/Java-Pattern/java-partern/out/production/java-partern/com/jindo/core/pattern/DemoPattern.class b/Java-Pattern/java-partern/out/production/java-partern/com/jindo/core/pattern/DemoPattern.class new file mode 100644 index 0000000..c30819d Binary files /dev/null and b/Java-Pattern/java-partern/out/production/java-partern/com/jindo/core/pattern/DemoPattern.class differ diff --git a/Java-Pattern/java-partern/readme.md b/Java-Pattern/java-partern/readme.md new file mode 100644 index 0000000..f27a05a --- /dev/null +++ b/Java-Pattern/java-partern/readme.md @@ -0,0 +1,3 @@ + +# Java Pattern and Matcher + diff --git a/Java-Pattern/java-partern/src/com/jindo/core/AppMain.java b/Java-Pattern/java-partern/src/com/jindo/core/AppMain.java new file mode 100644 index 0000000..d9e8f7c --- /dev/null +++ b/Java-Pattern/java-partern/src/com/jindo/core/AppMain.java @@ -0,0 +1,20 @@ +package com.jindo.core; + +import com.jindo.core.pattern.DemoPattern; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 5/9/2022 + * @project java-partern + */ +public class AppMain { + public static void main(String[] args) { + DemoPattern demoPattern = new DemoPattern(); + List to = new ArrayList<>(); + to.add("manhkm@neo.vn"); + to.add("minhmanh.evn@gmail.com"); + demoPattern.sendListEmail(to, "New body email"); + } +} diff --git a/Java-Pattern/java-partern/src/com/jindo/core/pattern/DemoPattern.java b/Java-Pattern/java-partern/src/com/jindo/core/pattern/DemoPattern.java new file mode 100644 index 0000000..a885f6a --- /dev/null +++ b/Java-Pattern/java-partern/src/com/jindo/core/pattern/DemoPattern.java @@ -0,0 +1,25 @@ +package com.jindo.core.pattern; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author ManhKM on 5/9/2022 + * @project java-partern + */ +public class DemoPattern { + + public void sendListEmail(List to, String body){ + String subject = "Alarm OCS Support ${dd-MM-yyyy HH:mm:ss}"; + if(subject.contains("${")){ + Pattern pattern = Pattern.compile("\\$\\{(.*?)\\}", Pattern.DOTALL); + Matcher matcher = pattern.matcher(subject); + while (matcher.find()){ + subject = subject.replace(matcher.group(), new SimpleDateFormat(matcher.group(1)).format(new Date())); + } + } + } +} diff --git a/Java-Reactive-Programming/java-reactive/readme.md b/Java-Reactive-Programming/java-reactive/readme.md new file mode 100644 index 0000000..24b4f40 --- /dev/null +++ b/Java-Reactive-Programming/java-reactive/readme.md @@ -0,0 +1,16 @@ +## Giới thiệu Reactive Programming với Reactor + +## Synchronous (Xử lý đồng bộ) + +## Asynchronous (Xử lý bất đồng bộ) + +## Blocking + +## Non-Blocking + +## Reactor Core + + +## Reference Document: +https://viblo.asia/p/reactive-programing-with-java-part-2-oOVlYERrl8W + diff --git a/Java-Reactive-Programming/reactor-core/pom.xml b/Java-Reactive-Programming/reactor-core/pom.xml new file mode 100644 index 0000000..e2fc41e --- /dev/null +++ b/Java-Reactive-Programming/reactor-core/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.example + reactor-core + 1.0-SNAPSHOT + + + 8 + 8 + + + + + io.projectreactor + reactor-core + 3.2.8.RELEASE + + + + \ No newline at end of file diff --git a/Java-Reactive-Programming/reactor-core/readme.md b/Java-Reactive-Programming/reactor-core/readme.md new file mode 100644 index 0000000..26866ec --- /dev/null +++ b/Java-Reactive-Programming/reactor-core/readme.md @@ -0,0 +1,5 @@ +## Giới thiệu Reactor Core + +## Maven Dependencies + +## \ No newline at end of file diff --git a/Java-Reflection/annotation-with-java-reflection-v1.0.md b/Java-Reflection/annotation-with-java-reflection-v1.0.md new file mode 100644 index 0000000..8b114ab --- /dev/null +++ b/Java-Reflection/annotation-with-java-reflection-v1.0.md @@ -0,0 +1,24 @@ + +## Annotation và cách tạo ra một annotation custom: + + +## Ví dụ Annotation: + + +### Spring + Hibernate: + +@Service, @Transaction + +@Key, @Entity + +@Override + +Nó giải quyết vấn đề thay vì truyền tham số hay duplicate code để xử lý các nghiệp vụ tương tự nhau + +thì chỉ cần khai báo annotation cho class/field/method là xong + +@Annotation thực chất là các interface nên chỉ cần khai báo field hoặc method trong đó + + +### Demo Java Reflection - Annotation: + diff --git a/Java-Reflection/docs/java-reflection-annotation.drawio b/Java-Reflection/docs/java-reflection-annotation.drawio new file mode 100644 index 0000000..a1fdf20 --- /dev/null +++ b/Java-Reflection/docs/java-reflection-annotation.drawio @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Java-Reflection/out/production/Java-Reflection/com/gpcoder/anno/annotation-java.txt b/Java-Reflection/out/production/Java-Reflection/com/gpcoder/anno/annotation-java.txt new file mode 100644 index 0000000..865ac9a --- /dev/null +++ b/Java-Reflection/out/production/Java-Reflection/com/gpcoder/anno/annotation-java.txt @@ -0,0 +1,14 @@ +Nội dung [Ẩn] + +1 Các annotation được sử dụng để làm gì? + 1.1 Hướng dẫn cho trình biên dịch (Compiler) + 1.2 Chỉ dẫn trong lúc biên dịch (Compile-time) + 1.3 Chỉ dẫn trong thời gian chạy (Runtime) +2 Cơ bản về Annotations +3 Các Annotation sẵn có của Java + 3.0.1 @Deprecated + 3.0.2 @Override + 3.0.3 @SuppressWarnings +4 Cách tạo Custom Annotations +5 Sử dụng Annotation lồng nhau + diff --git a/Java-Reflection/out/production/Java-Reflection/com/gpcoder/list-content.md b/Java-Reflection/out/production/Java-Reflection/com/gpcoder/list-content.md new file mode 100644 index 0000000..6d9f1fe --- /dev/null +++ b/Java-Reflection/out/production/Java-Reflection/com/gpcoder/list-content.md @@ -0,0 +1,35 @@ +## Nội dung + +1 Java Reflection là gì? +2 Một số class được sử dụng trong bài viết này +3 Kiến trúc của Java Reflection API +3.1 Lớp (Classes) +3.2 Tạo đối tượng Class<> +3.3 Cấu tử (Constructor) +3.3.1 Lấy tất cả Constructor của một Class +3.3.2 Lấy một Constructor cụ thể +3.3.3 Lấy danh sách tham số của một Constructor +3.3.4 Khởi tạo đối tượng từ đối tượng Constructor +3.3.5 Ví dụ +3.4 Trường (Field) +3.4.1 Lấy các đối tượng field được khai báo là public +3.4.2 Lấy các đối tượng field khai báo bất kỳ +3.4.3 Lấy tên field, kiểu dữ liệu kiểu field +3.4.4 Gán giá trị cho Field +3.4.5 Ví dụ +3.5 Phương thức (method) +3.5.1 Lấy tất cả Method của một Class +3.5.2 Lấy một Method cụ thể +3.5.3 Thực thi một Method +3.5.4 Ví dụ +3.6 Truy cập vào các private method, field +3.7 Thay đổi giá trị field có khai báo là static final +3.8 Chú thích (Annotation) + +Có thể sử dụng Reflection để truy cập Access vào các Annotation được áp dụng trong các class tại thời điểm Runtime + + + +3.8.1 Một ví dụ Annotation với class +3.8.2 Ví dụ Annotation với Field và Method +3.8.3 Ví dụ Annotation với tham số của method diff --git a/Java-Reflection/out/production/Java-Reflection/com/gpcoder/readme.md b/Java-Reflection/out/production/Java-Reflection/com/gpcoder/readme.md new file mode 100644 index 0000000..49c663b --- /dev/null +++ b/Java-Reflection/out/production/Java-Reflection/com/gpcoder/readme.md @@ -0,0 +1,49 @@ +## Các Annotation được sử dụng để làm gì? + +Annotation được sử dụng cho các mục đích: + +1. Chỉ dẫn cho trình biên dịch (Compiler) + +2. Chỉ dẫn trong thời điểm biên dịch (Buil-time) + +3. Chỉ dẫn trong thời gian chạy (Runtime) + +## Các Annotation sẵn có của Java: + + +## Cách tạo Custom Annotations: + +Sử dụng @interface + +Không có thân hàm +Không có tham số hàm +Khai báo trả về phải là một kiểu cụ thể + Các kiểu nguyên thủy: boolean, int, float + Enum + Annotation + Class +Có thể có giá trị mặc định + +@Retention và @Target là 2 annotation sẵn có của Java + +@Retention: Dùng để chú thích mức độ tồn tại của một Annotation nào đó + +SOURCE: Tồn tại trên code nguồn, và không được bộ dịch (compiler) nhận ra. +CLASS: Mức tồn tại được bộ dịch nhận ra, nhưng không được nhận biết bởi máy ảo tại thời điểm chạy (Runtime). +RUNTIME: Mức tồn tại lớn nhất, được bộ dịch (compiler) nhận biết, và máy ảo thời điểm chạy cũng nhận ra sự tồn tại của nó. + +@Target: Dùng để chú thích cho một Annotation khác, và annotation đó sẽ được sử dụng trong phạm vi nào đó. + +TYPE : Gắn trên khai báo Class, interface, enum, annotation. +FIELD : Gắn trên khai báo trường (field), bao gồm cả các hằng số enum. +METHOD : Gắn trên khai báo method. +PARAMETER : Gắn trên khai báo parameter +CONSTRUCTOR : Gắn trên khai báo cấu tử +LOCAL_VARIABLE : Gắn trên biến địa phương. +ANNOTATION_TYPE : Gắn trên khai báo Annotation +PACKAGE : Gắn trên khai báo package. + + +@Documented + + diff --git a/Java-Reflection/out/production/Java-Reflection/com/gpcoder/reflectannotation/readme.md b/Java-Reflection/out/production/Java-Reflection/com/gpcoder/reflectannotation/readme.md new file mode 100644 index 0000000..b02f209 --- /dev/null +++ b/Java-Reflection/out/production/Java-Reflection/com/gpcoder/reflectannotation/readme.md @@ -0,0 +1,7 @@ + +## Kết hợp Java Reflection và Java Annotations: + +Java Reflection có thể nhận biết được những thứ (Class, field, method...) được chú thích bởi một Annotation nào đó. Và nó chỉ nhận biết được các Annotation có RententionPolicy.RUNTIME + +Reflection + Annotation + diff --git a/Java-Reflection/out/production/Java-Reflection/com/reflect/Girl.class b/Java-Reflection/out/production/Java-Reflection/com/reflect/Girl.class new file mode 100644 index 0000000..37e8d88 Binary files /dev/null and b/Java-Reflection/out/production/Java-Reflection/com/reflect/Girl.class differ diff --git a/Java-Reflection/out/production/Java-Reflection/com/reflect/Main.class b/Java-Reflection/out/production/Java-Reflection/com/reflect/Main.class deleted file mode 100644 index aeedc95..0000000 Binary files a/Java-Reflection/out/production/Java-Reflection/com/reflect/Main.class and /dev/null differ diff --git a/Java-Reflection/out/production/Java-Reflection/com/reflect/Person.class b/Java-Reflection/out/production/Java-Reflection/com/reflect/Person.class deleted file mode 100644 index 0e7141f..0000000 Binary files a/Java-Reflection/out/production/Java-Reflection/com/reflect/Person.class and /dev/null differ diff --git a/Java-Reflection/out/production/Java-Reflection/com/reflect/ReflectAnnotation.class b/Java-Reflection/out/production/Java-Reflection/com/reflect/ReflectAnnotation.class new file mode 100644 index 0000000..41349ca Binary files /dev/null and b/Java-Reflection/out/production/Java-Reflection/com/reflect/ReflectAnnotation.class differ diff --git a/Java-Reflection/out/production/Java-Reflection/com/reflect/ReflectConstructor.class b/Java-Reflection/out/production/Java-Reflection/com/reflect/ReflectConstructor.class new file mode 100644 index 0000000..feb2334 Binary files /dev/null and b/Java-Reflection/out/production/Java-Reflection/com/reflect/ReflectConstructor.class differ diff --git a/Java-Reflection/out/production/Java-Reflection/com/reflect/ReflectMethod.class b/Java-Reflection/out/production/Java-Reflection/com/reflect/ReflectMethod.class new file mode 100644 index 0000000..4a1dd37 Binary files /dev/null and b/Java-Reflection/out/production/Java-Reflection/com/reflect/ReflectMethod.class differ diff --git a/Java-Reflection/readme.md b/Java-Reflection/readme.md index 02505e2..aa3d952 100644 --- a/Java-Reflection/readme.md +++ b/Java-Reflection/readme.md @@ -1,9 +1,49 @@ ## Java Reflection - 1. Việc triển khai Reflection +1. Việc triển khai Reflection + +Reflection thể hiện 1 sự phản chiếu khác của class. Java Reflection là một bộ API quan trọng của Java giúp người dùng lấy được thông tin class/super class, duyệt field, method, thay đổi dữ liệu của field hoặc thực thi lời gọi method mà chỉ cần biết tên và tham số dưới dạng String. - 2. Việc tạo các Annotation từ Java Reflection + ++ Java Reflection là gì? + +Java Reflection được ứng dụng trong nheieuf hệ thống lớn và nhỏ, các component mang tính tổng quan + +cần sử dụng cho nhiều class khác nhau. Ví dụ điển hình thường gặp của Java Reflection là việc gọi + +hàm từ xa với Webservice Soap, toàn bộ class xử lý nghiệp vụ được xây dựng trên server, soap client + +chỉ cần một bản xml mô tả class dưới dạng text kèm theo url soap server là có thể thực thi các nghiệp + +vụ đó từ xa. + + + ++ Hạn chế, nhược điểm của Java Reflection + + + ++ Các thành phần trong Java Reflection + + + ++ Code ví dụ Java Reflection + + + +2. Việc tạo các Annotation từ Java Reflection + + + +3. Using Java Reflection, Clone Object, Copy Object + + + +4. Java Reflection kết hợp với Java Annotation tạo ra một sự khác biệt trong Spring. + + ## Reference document: - [1] Java-Reflection - https://tunghuynh.net/programer/java/2147/java-phan-8-tim-hieu-ve-java-reflection/ \ No newline at end of file + [1. Java-Reflection](https://tunghuynh.net/programer/java/2147/java-phan-8-tim-hieu-ve-java-reflection/) + + [2. Hướng dẫn sử dụng Java Reflection](https://gpcoder.com/2883-huong-dan-su-dung-java-reflection/) diff --git a/Java-Reflection/src/com/App.java b/Java-Reflection/src/com/App.java new file mode 100644 index 0000000..216bd6b --- /dev/null +++ b/Java-Reflection/src/com/App.java @@ -0,0 +1,31 @@ +package com; + +import com.utils.CommonUtils; +import java.util.Date; + +/** + * @author ManhKM on 8/1/2022 + * @project Java-Reflection + * ----- + * Testing Java Reflection để lấy các thông tin của Class + */ +public class App { + + public static void main(String[] args) { + try { + Class clazz = Class.forName("com.reflect.Person"); + + CommonUtils.getFields(clazz); + CommonUtils.getClassInfo(clazz); + CommonUtils.getMethods(clazz); + + Object obj = CommonUtils.createObject(clazz, new String[]{"name", "address", "birthday"}, new Object[]{"ManhKM", "Thái Bình", new Date(1996, 4, 30)}); + + System.out.println("Object Person: " + obj); + + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + + } +} diff --git a/Java-Reflection/src/com/annotation/EntityExample.java b/Java-Reflection/src/com/annotation/EntityExample.java new file mode 100644 index 0000000..092f691 --- /dev/null +++ b/Java-Reflection/src/com/annotation/EntityExample.java @@ -0,0 +1,57 @@ +package com.annotation; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +@MyTable(table = "table", schema = "schema") +public class EntityExample { + + @MyKey + @MyField(column = "COLUMN") + private int column; + + /** + * Hiển thị các Annotation + * @param fields + * @throws Exception + */ + public void printAnnotation(String... fields) throws Exception{ + Class aClass = getClass(); + String keyColumn = ""; + String sql = "SELECT "; + for(int i = 0; i < fields.length; i++){ + + // Lấy danh sách column theo Annotation: + Field field = aClass.getDeclaredField(fields[i]); + MyField fieldAnn = field.getAnnotation(MyField.class); + sql += fieldAnn.column() + ", "; + + // Tìm trường có chứa annotation MyKey: + Annotation[] fieldAnns = field.getAnnotations(); + for (Annotation anno : fieldAnns){ + if(anno instanceof MyKey){ + keyColumn = fieldAnn.column(); + break; + } + } + } + + if(fields.length > 0){ + sql = sql.substring(0, sql.length() - 2); + } + + // Lấy annotation của Class: + MyTable myAnn = aClass.getAnnotation(MyTable.class); + sql += String.format(" FROM %s.%s WHERE 1 = 1", myAnn.schema(), myAnn.table()); + System.out.println("Primary key: " + keyColumn); + System.out.println("SQL: " + sql); + } + + public static void main(String[] args) throws Exception { + new EntityExample().printAnnotation("column"); + } +} diff --git a/Java-Reflection/src/com/annotation/MethodParameterExample.java b/Java-Reflection/src/com/annotation/MethodParameterExample.java new file mode 100644 index 0000000..1904467 --- /dev/null +++ b/Java-Reflection/src/com/annotation/MethodParameterExample.java @@ -0,0 +1,39 @@ +package com.annotation; + +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +public class MethodParameterExample { + + @MyRequestMapping(value = "/doMethod", method = "GET") + protected void doMethod(@MyParam(value = "paramName") String paramValue){ + + } + + public void printAnnotation(String methodName, Class... paramTypes) + throws NoSuchMethodException { + Class aClass = getClass(); + + // Lấy đối tượng method: + Method method = aClass.getDeclaredMethod(methodName, paramTypes); + + // Lấy ra các danh sách Annotation của method: + MyRequestMapping requestMapping = method.getAnnotation(MyRequestMapping.class); + System.out.println(String.format("Method: %s | %s", requestMapping.value(), requestMapping.method())); + + // Lấy ra danh sách các Parameter của method: + Parameter[] parameters = method.getParameters(); + for (Parameter parameter : parameters){ + MyParam myParam = parameter.getAnnotation(MyParam.class); + System.out.println(myParam.value() + ": " + parameter.getName()); + } + } + + public static void main(String[] args) throws NoSuchMethodException { + new MethodParameterExample().printAnnotation("doMethod", String.class); + } +} diff --git a/Java-Reflection/src/com/annotation/MyField.java b/Java-Reflection/src/com/annotation/MyField.java new file mode 100644 index 0000000..28ec23f --- /dev/null +++ b/Java-Reflection/src/com/annotation/MyField.java @@ -0,0 +1,18 @@ +package com.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * Annotation Field định danh cho một field là column của table + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) +public @interface MyField { + String column(); // Tên của cột trong bảng thuộc schema +} diff --git a/Java-Reflection/src/com/annotation/MyKey.java b/Java-Reflection/src/com/annotation/MyKey.java new file mode 100644 index 0000000..9b5b8c4 --- /dev/null +++ b/Java-Reflection/src/com/annotation/MyKey.java @@ -0,0 +1,20 @@ +package com.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * Annotation Key định danh cho một trường Primary Key. + * Cái này chỉ cần tạo annotation để khai báo, không cần field hay method. + */ + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) +public @interface MyKey { + +} diff --git a/Java-Reflection/src/com/annotation/MyParam.java b/Java-Reflection/src/com/annotation/MyParam.java new file mode 100644 index 0000000..3910a45 --- /dev/null +++ b/Java-Reflection/src/com/annotation/MyParam.java @@ -0,0 +1,18 @@ +package com.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * Annotation Param định danh cho các Parameter của method + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) +public @interface MyParam { + String value(); +} diff --git a/Java-Reflection/src/com/annotation/MyRequestMapping.java b/Java-Reflection/src/com/annotation/MyRequestMapping.java new file mode 100644 index 0000000..c11ae88 --- /dev/null +++ b/Java-Reflection/src/com/annotation/MyRequestMapping.java @@ -0,0 +1,19 @@ +package com.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * Annotation RequestMapping định danh cho một API path tương tự trong Spring Boot + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) +public @interface MyRequestMapping { + String value(); + String method(); +} diff --git a/Java-Reflection/src/com/annotation/MyTable.java b/Java-Reflection/src/com/annotation/MyTable.java new file mode 100644 index 0000000..718ad5a --- /dev/null +++ b/Java-Reflection/src/com/annotation/MyTable.java @@ -0,0 +1,20 @@ +package com.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * Annotation MyTable định danh cho một Entity tương đương 1 table như Hibernate + * Bản chất Interface chỉ gồm các field và các method abstract + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) +public @interface MyTable { + String table(); // Tên của bảng + String schema(); // Tên của schema chứa bảng +} diff --git a/Java-Reflection/src/com/annotation/StudentExample.java b/Java-Reflection/src/com/annotation/StudentExample.java new file mode 100644 index 0000000..dc6d448 --- /dev/null +++ b/Java-Reflection/src/com/annotation/StudentExample.java @@ -0,0 +1,20 @@ +package com.annotation; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +@MyTable(table = "STUDENT", schema = "QLSV") +public class StudentExample extends EntityExample{ + + @MyKey + @MyField(column = "STUDENT_ID") + private int studentId; + + @MyField(column = "NAME") + private String name; + + public static void main(String[] args) throws Exception { + new StudentExample().printAnnotation("studentId", "name"); + } +} diff --git a/Java-Reflection/src/com/convertobjectoxml/ConvertObjectToXmlApplication.java b/Java-Reflection/src/com/convertobjectoxml/ConvertObjectToXmlApplication.java new file mode 100644 index 0000000..f5c3e7f --- /dev/null +++ b/Java-Reflection/src/com/convertobjectoxml/ConvertObjectToXmlApplication.java @@ -0,0 +1,6 @@ +package com.convertobjectoxml;/** + * @project Java-Reflection on 7/24/2023-10:21 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class ConvertObjectToXmlApplication { +} diff --git a/Java-Reflection/src/com/convertobjectoxml/Person.java b/Java-Reflection/src/com/convertobjectoxml/Person.java new file mode 100644 index 0000000..d050e91 --- /dev/null +++ b/Java-Reflection/src/com/convertobjectoxml/Person.java @@ -0,0 +1,6 @@ +package com.convertobjectoxml;/** + * @project Java-Reflection on 7/24/2023-10:20 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class Person { +} diff --git a/Java-Reflection/src/com/convertobjectoxml/WebPageReader.java b/Java-Reflection/src/com/convertobjectoxml/WebPageReader.java new file mode 100644 index 0000000..d387798 --- /dev/null +++ b/Java-Reflection/src/com/convertobjectoxml/WebPageReader.java @@ -0,0 +1,6 @@ +package com.convertobjectoxml;/** + * @project Java-Reflection on 7/24/2023-10:26 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class WebPageReader { +} diff --git a/Java-Reflection/src/com/convertobjectoxml/XmlConverter.java b/Java-Reflection/src/com/convertobjectoxml/XmlConverter.java new file mode 100644 index 0000000..1e29129 --- /dev/null +++ b/Java-Reflection/src/com/convertobjectoxml/XmlConverter.java @@ -0,0 +1,6 @@ +package com.convertobjectoxml;/** + * @project Java-Reflection on 7/24/2023-10:17 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class XmlConverter { +} diff --git a/Java-Reflection/src/com/convertobjectoxml/XmlField.java b/Java-Reflection/src/com/convertobjectoxml/XmlField.java new file mode 100644 index 0000000..600f488 --- /dev/null +++ b/Java-Reflection/src/com/convertobjectoxml/XmlField.java @@ -0,0 +1,6 @@ +package com.convertobjectoxml;/** + * @project Java-Reflection on 7/24/2023-10:15 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class XmlField { +} diff --git a/Java-Reflection/src/com/gpcoder/anno/ClassAnnotationExample.java b/Java-Reflection/src/com/gpcoder/anno/ClassAnnotationExample.java new file mode 100644 index 0000000..44119ee --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/anno/ClassAnnotationExample.java @@ -0,0 +1,29 @@ +package com.gpcoder.anno; + +import java.lang.annotation.Annotation; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +@MyAnnotation(name = "Table", value = "Employee") +public class ClassAnnotationExample { + + public static void main(String[] args) { + Class aClazz = ClassAnnotationExample.class; + + // Lấy ra danh sách các Annotation của class: + Annotation[] annotations = aClazz.getAnnotations(); + + for (Annotation ann : annotations){ + System.out.println("Annotation: " + ann.annotationType()); + } + + // Hoặc lấy cụ thể: + Annotation ann = aClazz.getAnnotation(MyAnnotation.class); + MyAnnotation myAnn = (MyAnnotation) ann; + System.out.println("Name = " + myAnn.name()); + System.out.println("Value = " + myAnn.value()); + + } +} diff --git a/Java-Reflection/src/com/gpcoder/anno/ExcelColumn.java b/Java-Reflection/src/com/gpcoder/anno/ExcelColumn.java new file mode 100644 index 0000000..efcd407 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/anno/ExcelColumn.java @@ -0,0 +1,30 @@ +package com.gpcoder.anno; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/25/2022 + * @project Java-Reflection + * ----- + * Ví dụ tạo một Annotation để đánh dấu các cột cần xuất dữ liệu ra file excel. + * Annotation này có 3 thuộc tính: index để xác định vị trí xuất dữ liệu ra file excel, title để xác định tiêu đề cột, + * description để mô tả cho cột. + */ + +@Documented +@Target(ElementType.FIELD) +@Inherited +@Retention(RetentionPolicy.RUNTIME) +public @interface ExcelColumn { + + int index(); + + String title(); + + String description() default "Default value"; +} diff --git a/Java-Reflection/src/com/gpcoder/anno/MyAnnotation.java b/Java-Reflection/src/com/gpcoder/anno/MyAnnotation.java new file mode 100644 index 0000000..0b95d28 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/anno/MyAnnotation.java @@ -0,0 +1,17 @@ +package com.gpcoder.anno; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) +public @interface MyAnnotation { + String name(); + String value() default "Default value"; +} diff --git a/Java-Reflection/src/com/gpcoder/anno/RepeatingAnnotations.java b/Java-Reflection/src/com/gpcoder/anno/RepeatingAnnotations.java new file mode 100644 index 0000000..c1a004b --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/anno/RepeatingAnnotations.java @@ -0,0 +1,40 @@ +package com.gpcoder.anno; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +/** + * @author ManhKM on 10/25/2022 + * @project Java-Reflection + */ +public class RepeatingAnnotations { + + // 1. Declare a Repeatable Annotation Type + @Target(ElementType.TYPE) + @Retention(RetentionPolicy.RUNTIME) + public @interface Filter { + String value(); + }; + + // 2. Declare the Nested Annotation Type + @Target(ElementType.TYPE) + @Retention(RetentionPolicy.RUNTIME) + public @interface Filters { + Filter[] value(); + } + + // 3. Use repeating annotations + @Filters({ @Filter("filter1"), @Filter("filter2") }) + public interface Filterable { + + } + + public static void main(String[] args) { + // 4. Retrieving Annotations via the Filters class + Filters filters = Filterable.class.getAnnotation(Filters.class); + for (Filter filter : filters.value()) { + System.out.println(filter.value()); + } + } +} diff --git a/Java-Reflection/src/com/gpcoder/anno/Student.java b/Java-Reflection/src/com/gpcoder/anno/Student.java new file mode 100644 index 0000000..d567dc1 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/anno/Student.java @@ -0,0 +1,22 @@ +package com.gpcoder.anno; + +import java.util.Date; + +/** + * @author ManhKM on 10/25/2022 + * @project Java-Reflection + */ +public class Student { + + @ExcelColumn(index = 1, title = "#", description = "Student's id") + private long id; + + @ExcelColumn(index = 2, title = "Tên") + private String name; + + @ExcelColumn(index = 3, title = "Tuổi ") + private int age; + + @ExcelColumn(index = 4, title = "Ngày sinh") + private Date birthday; +} diff --git a/Java-Reflection/src/com/gpcoder/anno/annotation-java.txt b/Java-Reflection/src/com/gpcoder/anno/annotation-java.txt new file mode 100644 index 0000000..865ac9a --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/anno/annotation-java.txt @@ -0,0 +1,14 @@ +Nội dung [Ẩn] + +1 Các annotation được sử dụng để làm gì? + 1.1 Hướng dẫn cho trình biên dịch (Compiler) + 1.2 Chỉ dẫn trong lúc biên dịch (Compile-time) + 1.3 Chỉ dẫn trong thời gian chạy (Runtime) +2 Cơ bản về Annotations +3 Các Annotation sẵn có của Java + 3.0.1 @Deprecated + 3.0.2 @Override + 3.0.3 @SuppressWarnings +4 Cách tạo Custom Annotations +5 Sử dụng Annotation lồng nhau + diff --git a/Java-Reflection/src/com/gpcoder/list-content.md b/Java-Reflection/src/com/gpcoder/list-content.md new file mode 100644 index 0000000..6d9f1fe --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/list-content.md @@ -0,0 +1,35 @@ +## Nội dung + +1 Java Reflection là gì? +2 Một số class được sử dụng trong bài viết này +3 Kiến trúc của Java Reflection API +3.1 Lớp (Classes) +3.2 Tạo đối tượng Class<> +3.3 Cấu tử (Constructor) +3.3.1 Lấy tất cả Constructor của một Class +3.3.2 Lấy một Constructor cụ thể +3.3.3 Lấy danh sách tham số của một Constructor +3.3.4 Khởi tạo đối tượng từ đối tượng Constructor +3.3.5 Ví dụ +3.4 Trường (Field) +3.4.1 Lấy các đối tượng field được khai báo là public +3.4.2 Lấy các đối tượng field khai báo bất kỳ +3.4.3 Lấy tên field, kiểu dữ liệu kiểu field +3.4.4 Gán giá trị cho Field +3.4.5 Ví dụ +3.5 Phương thức (method) +3.5.1 Lấy tất cả Method của một Class +3.5.2 Lấy một Method cụ thể +3.5.3 Thực thi một Method +3.5.4 Ví dụ +3.6 Truy cập vào các private method, field +3.7 Thay đổi giá trị field có khai báo là static final +3.8 Chú thích (Annotation) + +Có thể sử dụng Reflection để truy cập Access vào các Annotation được áp dụng trong các class tại thời điểm Runtime + + + +3.8.1 Một ví dụ Annotation với class +3.8.2 Ví dụ Annotation với Field và Method +3.8.3 Ví dụ Annotation với tham số của method diff --git a/Java-Reflection/src/com/gpcoder/readme.md b/Java-Reflection/src/com/gpcoder/readme.md new file mode 100644 index 0000000..49c663b --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/readme.md @@ -0,0 +1,49 @@ +## Các Annotation được sử dụng để làm gì? + +Annotation được sử dụng cho các mục đích: + +1. Chỉ dẫn cho trình biên dịch (Compiler) + +2. Chỉ dẫn trong thời điểm biên dịch (Buil-time) + +3. Chỉ dẫn trong thời gian chạy (Runtime) + +## Các Annotation sẵn có của Java: + + +## Cách tạo Custom Annotations: + +Sử dụng @interface + +Không có thân hàm +Không có tham số hàm +Khai báo trả về phải là một kiểu cụ thể + Các kiểu nguyên thủy: boolean, int, float + Enum + Annotation + Class +Có thể có giá trị mặc định + +@Retention và @Target là 2 annotation sẵn có của Java + +@Retention: Dùng để chú thích mức độ tồn tại của một Annotation nào đó + +SOURCE: Tồn tại trên code nguồn, và không được bộ dịch (compiler) nhận ra. +CLASS: Mức tồn tại được bộ dịch nhận ra, nhưng không được nhận biết bởi máy ảo tại thời điểm chạy (Runtime). +RUNTIME: Mức tồn tại lớn nhất, được bộ dịch (compiler) nhận biết, và máy ảo thời điểm chạy cũng nhận ra sự tồn tại của nó. + +@Target: Dùng để chú thích cho một Annotation khác, và annotation đó sẽ được sử dụng trong phạm vi nào đó. + +TYPE : Gắn trên khai báo Class, interface, enum, annotation. +FIELD : Gắn trên khai báo trường (field), bao gồm cả các hằng số enum. +METHOD : Gắn trên khai báo method. +PARAMETER : Gắn trên khai báo parameter +CONSTRUCTOR : Gắn trên khai báo cấu tử +LOCAL_VARIABLE : Gắn trên biến địa phương. +ANNOTATION_TYPE : Gắn trên khai báo Annotation +PACKAGE : Gắn trên khai báo package. + + +@Documented + + diff --git a/Java-Reflection/src/com/gpcoder/reflect/AccessPrivateFieldExample.java b/Java-Reflection/src/com/gpcoder/reflect/AccessPrivateFieldExample.java new file mode 100644 index 0000000..ec9b9f8 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/AccessPrivateFieldExample.java @@ -0,0 +1,34 @@ +package com.gpcoder.reflect; + +import java.lang.reflect.Field; + +/** + * @author ManhKM on 10/25/2022 + * @project Java-Reflection + */ +public class AccessPrivateFieldExample { + + public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { + + Class aClazz = Cat.class; + + // Duyệt toàn bộ các Field trong Class: + for (Field item : aClazz.getDeclaredFields()){ + item.setAccessible(true); + } + + Field privateNameField = aClazz.getDeclaredField("name"); + Field privateAgeField = aClazz.getDeclaredField("age"); + + privateNameField.setAccessible(true); + + Cat tom = new Cat("Tom"); + + String fieldValue = (String) privateNameField.get(tom); + System.out.println("Value field name = " + fieldValue); + + privateNameField.set(tom, "Tom Cat"); + System.out.println("New name = " + tom.getName()); + + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/AccessPrivateMethodExample.java b/Java-Reflection/src/com/gpcoder/reflect/AccessPrivateMethodExample.java new file mode 100644 index 0000000..335f690 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/AccessPrivateMethodExample.java @@ -0,0 +1,25 @@ +package com.gpcoder.reflect; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * @author ManhKM on 10/25/2022 + * @project Java-Reflection + */ +public class AccessPrivateMethodExample { + + public static void main(String[] args) + throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + Class aClass = Cat.class; + Method privateSetNameMethod = aClass.getDeclaredMethod("setName", String.class); + + privateSetNameMethod.setAccessible(true); + + Cat tom = new Cat("Tom"); + System.out.println("Old name = " + tom.getName()); + + privateSetNameMethod.invoke(tom, "Tom Cat"); + System.out.println("New name = " + tom.getName()); + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/Animal.java b/Java-Reflection/src/com/gpcoder/reflect/Animal.java new file mode 100644 index 0000000..be3bea8 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/Animal.java @@ -0,0 +1,6 @@ +package com.gpcoder.reflect;/** + * @project Java-Reflection on 7/24/2023-12:12 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class Animal { +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/Cat.java b/Java-Reflection/src/com/gpcoder/reflect/Cat.java new file mode 100644 index 0000000..8ee7d2a --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/Cat.java @@ -0,0 +1,56 @@ +package com.gpcoder.reflect; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +@Excel(name= "Cat") +public class Cat extends Animal implements Say { + + public static final String SAY = "Meow Meow"; + public static final int NUMBER_OF_LEGS = 4; + + @ExcelColumn(index = 0, title = "Name") + private String name; + + @ExcelColumn(index = 1, title = "Age") + private int age; + + public Cat(){} + + public Cat(String name){ + this.name = name; + this.age = 1; + } + + public Cat(String name, int age){ + this.name = name; + this.age = age; + } + + @Override + public int getNumberOfLegs() { + return NUMBER_OF_LEGS; + } + + @Override + public String say() { + return SAY; + } + + private void setName(String name){ + this.name = name; + } + + public String getName(){ + return this.name; + } + + public int getAge(){ + return this.age; + } + + public void setAge(int age){ + this.age = age; + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/ChangeStaticFinalFieldExample.java b/Java-Reflection/src/com/gpcoder/reflect/ChangeStaticFinalFieldExample.java new file mode 100644 index 0000000..d195873 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/ChangeStaticFinalFieldExample.java @@ -0,0 +1,33 @@ +package com.gpcoder.reflect; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +/** + * @author ManhKM on 10/25/2022 + * @project Java-Reflection + */ +public class ChangeStaticFinalFieldExample { + public static void main(String[] args) + throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { + // create Cat + Cat cat = new Cat(); + + // Get field instance + Field field = cat.getClass().getDeclaredField("NUMBER_OF_LEGS"); + field.setAccessible(true); // Suppress Java language access checking + + // Remove "final" modifier + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + + // Get value + Integer fieldValue = (Integer) field.get(null); + System.out.println(cat.getNumberOfLegs()); // -> 4 + + // Set value + field.set(null, 2); + System.out.println(cat.getNumberOfLegs()); // -> 2 + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/ClassAnnotationExample.java b/Java-Reflection/src/com/gpcoder/reflect/ClassAnnotationExample.java new file mode 100644 index 0000000..6afdc8d --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/ClassAnnotationExample.java @@ -0,0 +1,21 @@ +package com.gpcoder.reflect; + +import java.lang.annotation.Annotation; + +/** + * @author ManhKM on 10/25/2022 + * @project Java-Reflection + */ +@MyAnnotation(name = "Table", value = "Employee") +public class ClassAnnotationExample { + + public static void main(String[] args) { + Class aClazz = ClassAnnotationExample.class; + + Annotation[] annotations = aClazz.getAnnotations(); + + for (Annotation ann : annotations){ + System.out.println("Annotation: " + ann.annotationType().getSimpleName()); + } + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/Excel.java b/Java-Reflection/src/com/gpcoder/reflect/Excel.java new file mode 100644 index 0000000..20374c2 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/Excel.java @@ -0,0 +1,21 @@ +package com.gpcoder.reflect; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +@Documented +@Target(ElementType.TYPE) +@Inherited +@Retention(RetentionPolicy.RUNTIME) +public @interface Excel { + int index() default 0; + String name() default "Sheet 1"; +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/ExcelColumn.java b/Java-Reflection/src/com/gpcoder/reflect/ExcelColumn.java new file mode 100644 index 0000000..0d5966f --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/ExcelColumn.java @@ -0,0 +1,22 @@ +package com.gpcoder.reflect; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +@Documented +@Target(ElementType.FIELD) +@Inherited +@Retention(RetentionPolicy.RUNTIME) +public @interface ExcelColumn { + int index(); + String title(); + String description() default "Default value"; +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/FieldMethodAnnotationExample.java b/Java-Reflection/src/com/gpcoder/reflect/FieldMethodAnnotationExample.java new file mode 100644 index 0000000..f0f58d5 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/FieldMethodAnnotationExample.java @@ -0,0 +1,6 @@ +package com.gpcoder.reflect;/** + * @project Java-Reflection on 7/24/2023-1:38 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class FieldMethodAnnotationExample { +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/JavaReflectionApplication.java b/Java-Reflection/src/com/gpcoder/reflect/JavaReflectionApplication.java new file mode 100644 index 0000000..888bf70 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/JavaReflectionApplication.java @@ -0,0 +1,6 @@ +package com.gpcoder.reflect;/** + * @project Java-Reflection on 7/24/2023-1:45 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class JavaReflectionApplication { +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/MyAnnotation.java b/Java-Reflection/src/com/gpcoder/reflect/MyAnnotation.java new file mode 100644 index 0000000..4d4b820 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/MyAnnotation.java @@ -0,0 +1,20 @@ +package com.gpcoder.reflect; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/25/2022 + * @project Java-Reflection + */ + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) +public @interface MyAnnotation { + + String name(); + + String value() default "Default value"; +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/ReflectClassExample.java b/Java-Reflection/src/com/gpcoder/reflect/ReflectClassExample.java new file mode 100644 index 0000000..ab6cc77 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/ReflectClassExample.java @@ -0,0 +1,87 @@ +package com.gpcoder.reflect; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * Được sử dụng ReflectClass để lấy các thông tin của lớp được chỉ định + */ +public class ReflectClassExample { + + public static void main(String[] args) { + try { + getClassInfo(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + + public static void getClassInfo() throws ClassNotFoundException { + Class aClass = Class.forName("com.gpcoder.reflect.Cat"); + System.out.println("Name: " + aClass.getName()); + System.out.println("Simple Name: " + aClass.getSimpleName()); + + Package pkg = aClass.getPackage(); + System.out.println("Package Name = " + pkg.getName()); + + // Modifier: + int modifiers = aClass.getModifiers(); + boolean isPublic = Modifier.isPublic(modifiers); + boolean isInterface = Modifier.isInterface(modifiers); + boolean isAbstract = Modifier.isAbstract(modifiers); + boolean isFinal = Modifier.isFinal(modifiers); + + System.out.println("Is Public?" + isPublic); + System.out.println("Is Final?" + isFinal); + System.out.println("Is Interface?" + isInterface); + System.out.println("Is Abstract?" + isAbstract); + + // Lấy ra đối tượng class mô tả class cha của class Cat: + Class aSuperClass = aClass.getSuperclass(); + System.out.println("Simple Class Name of Supper Class = " + aSuperClass); + + // Lấy ra mảng các Class mô tả các Interface của Class Cat: + System.out.println("\n Interface: "); + Class[] itfClasses = aClass.getInterfaces(); + for (Class itfClass : itfClasses){ + System.out.println("+ " + itfClass.getSimpleName()); + } + + // Lấy ra danh sách các constructor của Cat: + System.out.println("\n Constructor: "); + Constructor[] constructors = aClass.getConstructors(); + for (Constructor constructor : constructors){ + System.out.println("+ " + constructor.getName() + " has " + constructor.getParameterCount() + " param"); + } + + // Lấy ra danh sách các method public của Cat + // Bao gồm cả method thừa kế từ class cha và các interface: + System.out.println("\n Declared Methods: "); + Method[] methods = aClass.getDeclaredMethods(); + for (Method method : methods){ + System.out.println("+ " + method.getName()); + } + + // Lấy ra các danh sách field public: + // Kể cả các public field thừa kế từ class class cha và các interface: + System.out.println("\n Field: "); + Field[] fields = aClass.getFields(); + for (Field field : fields){ + System.out.println("+ " + field.getName()); + } + + // Lấy ra danh sách các Annotation của Class: + System.out.println("\n Annotation: "); + Annotation[] annotations = aClass.getAnnotations(); + for (Annotation annotation : annotations){ + System.out.println("+ " + annotation.annotationType().getSimpleName()); + } + + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/ReflectConstructorExample.java b/Java-Reflection/src/com/gpcoder/reflect/ReflectConstructorExample.java new file mode 100644 index 0000000..5028081 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/ReflectConstructorExample.java @@ -0,0 +1,39 @@ +package com.gpcoder.reflect; + +import com.gpcoder.reflect.Cat; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * Lấy các thông tin của Constructor của một Class: + */ +public class ReflectConstructorExample { + + public static void main(String[] args) + throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { + + // Lấy ra đối tượng Class mô tả class Cat: + Class aClass = Cat.class; + + // Lấy ra cấu từ có tham số (String, int) của class cat: + Constructor constructor = aClass.getConstructor(String.class, int.class); + + // Lấy ra thông tin kiểu tham số của Constructor: + System.out.println("Params: "); + Class[] paramClasses = constructor.getParameterTypes(); + for (Class paramClass : paramClasses){ + System.out.println("+ " + paramClass.getSimpleName()); + } + + // Khởi tạo đối tượng Cat theo cách thông thường: + Cat tom = new Cat("Tom", 1); + System.out.println("Cat 1: " + tom.getName() + ", age = " + tom.getAge()); + + // Khởi tạo đối tượng Cat theo cách của Reflect: + Cat tom2 = (Cat) constructor.newInstance("Tom", 2); + System.out.println("Cat 2: " + tom2.getName() + ", age = " + tom2.getAge()); + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/ReflectFieldExample.java b/Java-Reflection/src/com/gpcoder/reflect/ReflectFieldExample.java new file mode 100644 index 0000000..ccfe88a --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/ReflectFieldExample.java @@ -0,0 +1,51 @@ +package com.gpcoder.reflect; + +import com.gpcoder.reflect.Cat; +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +public class ReflectFieldExample { + + public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { + // Lấy ra đối tượng Class mô tả class Cat: + Class aClazz = Cat.class; + + // Lấy ra danh sách các field public: + // Kể cả các public field thừa kế từ class cha và các interface: + System.out.println("Field: "); + Field[] fields = aClazz.getFields(); + for (Field field: fields){ + System.out.println("+ " + field.getName()); + } + + // Lấy ra field có tên 'NUMBER_OF_LEGS' + Field field = aClazz.getField("NUMBER_OF_LEGS"); + + // Lấy ra kiểu của Field: + Class fieldType = field.getType(); + System.out.println("Field type: " + fieldType.getSimpleName()); + + // Khởi tạo đối tượng Cat + Cat tom = new Cat("Tom", 1); + + // Lấy ra giá trị của trường "age" theo cách của Reflect. + Field ageField = aClazz.getField("age"); + Integer age = (Integer) ageField.get(tom); + System.out.println("Age = " + age); + + // Gán giá trị mới cho trường "age". + ageField.set(tom, 2); + System.out.println("New Age = " + tom.getAge()); + + // Lấy ra danh sách các Annotation của field. + System.out.println("\nAnnotation:"); + Annotation[] annotations = ageField.getAnnotations(); + for (Annotation ann : annotations) { + System.out.println("+ " + ann.annotationType().getSimpleName()); + } + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/Say.java b/Java-Reflection/src/com/gpcoder/reflect/Say.java new file mode 100644 index 0000000..27e21c1 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/Say.java @@ -0,0 +1,9 @@ +package com.gpcoder.reflect; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +public interface Say { + public String say(); +} diff --git a/Java-Reflection/src/com/gpcoder/reflect/Student.java b/Java-Reflection/src/com/gpcoder/reflect/Student.java new file mode 100644 index 0000000..8cacfef --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflect/Student.java @@ -0,0 +1,6 @@ +package com.gpcoder.reflect;/** + * @project Java-Reflection on 7/24/2023-1:46 PM (>_<)/ + * @author ManhKM as [ADMIN] + * @note + */public class Student { +} diff --git a/Java-Reflection/src/com/gpcoder/reflectannotation/Book.java b/Java-Reflection/src/com/gpcoder/reflectannotation/Book.java new file mode 100644 index 0000000..88982cf --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflectannotation/Book.java @@ -0,0 +1,59 @@ +package com.gpcoder.reflectannotation; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * Book: lớp chứa thông tin sách + */ +@XmlRootElement(name = "book") +public class Book { + @XmlElement(name = "name") + private String name; + + @XmlElement(name = "author") + private String author; + + @XmlElement(name = "publisher") + private String publisher; + + @XmlAttribute(name = "isbn") + private String isbn; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + public String getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } + + @Override + public String toString() { + return "Book [name=" + name + ", author=" + author + ", publisher=" + publisher + ", isbn=" + isbn + "]"; + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflectannotation/BookStore.java b/Java-Reflection/src/com/gpcoder/reflectannotation/BookStore.java new file mode 100644 index 0000000..b93468b --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflectannotation/BookStore.java @@ -0,0 +1,50 @@ +package com.gpcoder.reflectannotation; + +import java.util.List; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * BookStore: lớp chứa thông tin cửa hàng sách. + */ +@XmlRootElement(name = "bookStore", namespace = "com.gpcoder.reflectannotation") +public class BookStore { + @XmlElement(name = "name") + private String name; + + @XmlElement(name = "location") + private String location; + + @XmlElementWrapper(name = "bookList") + private List bookList; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public List getBookList() { + return bookList; + } + + public void setBookList(List bookList) { + this.bookList = bookList; + } + + @Override + public String toString() { + return "BookStore [name=" + name + ", location=" + location + "]"; + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflectannotation/ObjectToXmlExample.java b/Java-Reflection/src/com/gpcoder/reflectannotation/ObjectToXmlExample.java new file mode 100644 index 0000000..c82f626 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflectannotation/ObjectToXmlExample.java @@ -0,0 +1,55 @@ +package com.gpcoder.reflectannotation; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * ObjectToXmlExample: chương trình minh họa sử dụng kết hợp Annotation với Reflection + */ +public class ObjectToXmlExample { + public static void main(String[] args) { + // create list + List bookList = new ArrayList(); + + // create books + Book book1 = new Book(); + book1.setIsbn("978-0-13-708189-9"); + book1.setName("Core Java Volume I"); + book1.setAuthor("Horstmann, Cay S. and Cornell"); + book1.setPublisher("Oracle"); + bookList.add(book1); + + Book book2 = new Book(); + book2.setIsbn("978-3832180577"); + book2.setName("Spring MVC Beginner’s Guide"); + book2.setAuthor("Amuthan G"); + book2.setPublisher("Packt Pub"); + bookList.add(book2); + + Book book3 = new Book(); + book3.setIsbn("999-1234567890"); + book3.setName("Java 8 in Action"); + book3.setAuthor("Raoul-Gabriel Urma"); + book3.setPublisher("Manning Publications Co."); + bookList.add(book3); + + // create bookstore, assigning book + BookStore bookStore = new BookStore(); + bookStore.setName("Fraport Bookstore"); + bookStore.setLocation("Frankfurt Airport"); + bookStore.setBookList(bookList); + + System.out.println(bookStore); + System.out.println("bookList: "); + for (Book book : bookList) { + System.out.println("+ " + book); + } + + System.out.println("\nConvert to xml: \n"); + String xml = ObjectToXmlHelper.convertToXml(bookStore); + System.out.println(xml); + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflectannotation/ObjectToXmlHelper.java b/Java-Reflection/src/com/gpcoder/reflectannotation/ObjectToXmlHelper.java new file mode 100644 index 0000000..938f08b --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflectannotation/ObjectToXmlHelper.java @@ -0,0 +1,160 @@ +package com.gpcoder.reflectannotation; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * ObjectToXmlHelper: lớp sử dụng Reflection để đọc thông tin các Annotation được đánh dấu và chuyển sang tài liệu xml. + */ +public class ObjectToXmlHelper { + /* + * Chuyển đối tượng sang chuỗi xml + */ + public static String convertToXml(T obj) { + StringBuilder sb = new StringBuilder(); + sb.append("\n"); + sb.append(convertToXml(obj, 0)); + return sb.toString(); + } + + /* + * Chuyển đối tượng sang chuỗi xml + */ + private static String convertToXml(T obj, int numOfTab) { + StringBuilder sb = new StringBuilder(); + + // Get Class of obj + Class clazz = obj.getClass(); + + // Kiểm tra xem lớp này có được chú thích XmlRootElement hay không. + boolean isXmlDoc = clazz.isAnnotationPresent(XmlRootElement.class); + + List fields; + String name; + String value; + if (isXmlDoc) { + // Lấy ra đối tượng XmlRootElement, chú thích trên lớp này. + XmlRootElement rootNode = clazz.getAnnotation(XmlRootElement.class); + + sb.append(getTab(numOfTab)); // Add tab + sb.append("<" + rootNode.name()); // Root element if (isNotEmpty(rootNode.namespace())) { sb.append(" xmlns=\"" + rootNode.namespace() + "\""); } fields = getFields(clazz, XmlAttribute.class); if (!fields.isEmpty()) { for (Field field : fields) { field.setAccessible(true); XmlAttribute ann = field.getAnnotation(XmlAttribute.class); name = ann.name(); value = getValueOfField(field, obj); sb.append(" " + name + "=\"" + value + "\""); // Add attribute } } sb.append(">"); + sb.append("\n"); // Add new line + + fields = getFields(clazz, null); + if (!fields.isEmpty()) { + // Create xml elements + for (Field field : fields) { + field.setAccessible(true); + if (field.isAnnotationPresent(XmlElementWrapper.class)) { + sb.append(createXmlWrapper(field, obj, numOfTab + 1)); + } else if (field.isAnnotationPresent(XmlElement.class)) { + sb.append(createXmlElement(field, obj, numOfTab + 1)); + } + } + } + + sb.append(getTab(numOfTab)); + sb.append(""); // End root element + } + + return sb.toString(); + } + + private static String createXmlWrapper(Field field, Object obj, int numOfTab) { + StringBuilder sb = new StringBuilder(); + XmlElementWrapper ann = field.getAnnotation(XmlElementWrapper.class); + String name = ann.name(); // Get Element's name + sb.append(getTab(numOfTab)); // Create 1 tab + sb.append("<" + name + ">"); // Start Element + sb.append("\n"); // Add new line + Collection collections = getListValueOfField(field, obj); + if (collections != null && !collections.isEmpty()) { + // Create xml sub elements + for (Object collection : collections) { + sb.append(convertToXml(collection, numOfTab + 1)); // Increase tab + sb.append("\n"); // Add new line + } + } + sb.append(getTab(numOfTab)); // Create 1 tab + sb.append(""); // End Element + sb.append("\n"); // Add new line + return sb.toString(); + } + + private static String createXmlElement(Field field, Object obj, int numOfTab) { + StringBuilder sb = new StringBuilder(); + XmlElement ann = field.getAnnotation(XmlElement.class); + String name = ann.name(); // Get Element's name + String value = getValueOfField(field, obj); // Get value of field + sb.append(getTab(numOfTab)); // Create tab + sb.append("<" + name + ">"); // Start Element + sb.append(value); // Element's content + sb.append(""); // End Element + sb.append("\n"); // Add new line + return sb.toString(); + } + + // Kiểm tra chuỗi không rỗng + private static boolean isNotEmpty(String str) { + return str != null && !str.isEmpty(); + } + + // Lấy danh sách field có sử dụng Annotation ann + private static List getFields(Class clazz, Class ann) { + List fieldAttributes = new ArrayList<>(); + + Field[] fields = clazz.getDeclaredFields(); + if (ann == null) { + fieldAttributes.addAll(Arrays.asList(fields)); + } else { + for (Field field : fields) { + if (field.isAnnotationPresent(ann)) { + fieldAttributes.add(field); + } + } + } + + return fieldAttributes; + } + + // Lấy giá trị kiểu chuỗi + private static String getValueOfField(Field field, Object obj) { + String value = ""; + try { + value = String.valueOf(field.get(obj)); + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + return value; + } + + // Lấy giá trị kiểu Collection (List, ArrayList, Set, ...) + private static Collection getListValueOfField(Field field, Object obj) { + Collection collection = null; + try { + Object objValue = field.get(obj); + if (objValue instanceof Collection) { + collection = (Collection) objValue; + } + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + return collection; + } + + // Lấy số dấu tab + private static String getTab(int numOfTab) { + StringBuilder sb = new StringBuilder(); + for (int i = 1; i <= numOfTab; i++) { + sb.append("\t"); // Thêm dấu tab. + } + return sb.toString(); + } +} diff --git a/Java-Reflection/src/com/gpcoder/reflectannotation/XmlAttribute.java b/Java-Reflection/src/com/gpcoder/reflectannotation/XmlAttribute.java new file mode 100644 index 0000000..c861b6f --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflectannotation/XmlAttribute.java @@ -0,0 +1,25 @@ +package com.gpcoder.reflectannotation; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Target({ ElementType.FIELD }) +@Inherited +@Retention(RetentionPolicy.RUNTIME) + +/** + * XmlAttribute: là một Annotation, sử dụng để đánh dấu đây là một thuộc tính của phần tử. + */ +public @interface XmlAttribute { + String name(); +} diff --git a/Java-Reflection/src/com/gpcoder/reflectannotation/XmlElement.java b/Java-Reflection/src/com/gpcoder/reflectannotation/XmlElement.java new file mode 100644 index 0000000..acb9102 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflectannotation/XmlElement.java @@ -0,0 +1,25 @@ +package com.gpcoder.reflectannotation; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Target({ ElementType.FIELD }) +@Inherited +@Retention(RetentionPolicy.RUNTIME) + +/** + * XmlElement: là một Annotation, sử dụng để đánh dấu đây là một phần tử của tài liệu xml. + */ +public @interface XmlElement { + String name(); +} diff --git a/Java-Reflection/src/com/gpcoder/reflectannotation/XmlElementWrapper.java b/Java-Reflection/src/com/gpcoder/reflectannotation/XmlElementWrapper.java new file mode 100644 index 0000000..c06ccd4 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflectannotation/XmlElementWrapper.java @@ -0,0 +1,26 @@ +package com.gpcoder.reflectannotation; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Target({ ElementType.FIELD }) +@Inherited +@Retention(RetentionPolicy.RUNTIME) + +/** + * XmlElementWrapper: là một Annotation sử dụng để đánh dấu đây là một phần cha và giá trị của nó là một Collection (có chứa tài liệu xml con). + */ + +public @interface XmlElementWrapper { + String name(); +} diff --git a/Java-Reflection/src/com/gpcoder/reflectannotation/XmlRootElement.java b/Java-Reflection/src/com/gpcoder/reflectannotation/XmlRootElement.java new file mode 100644 index 0000000..072f348 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflectannotation/XmlRootElement.java @@ -0,0 +1,26 @@ +package com.gpcoder.reflectannotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + * ----- + * XmlRootElement: là một Annotation, sử dụng để đánh dấu phần tử gốc (root element) của một tài liệu xml. + */ +@Documented +@Target(ElementType.TYPE) +@Inherited +@Retention(RetentionPolicy.RUNTIME) +public @interface XmlRootElement { + + String name(); + + String namespace() default ""; + +} diff --git a/Java-Reflection/src/com/gpcoder/reflectannotation/readme.md b/Java-Reflection/src/com/gpcoder/reflectannotation/readme.md new file mode 100644 index 0000000..b02f209 --- /dev/null +++ b/Java-Reflection/src/com/gpcoder/reflectannotation/readme.md @@ -0,0 +1,7 @@ + +## Kết hợp Java Reflection và Java Annotations: + +Java Reflection có thể nhận biết được những thứ (Class, field, method...) được chú thích bởi một Annotation nào đó. Và nó chỉ nhận biết được các Annotation có RententionPolicy.RUNTIME + +Reflection + Annotation + diff --git a/Java-Reflection/src/com/reflect/Girl.java b/Java-Reflection/src/com/reflect/Girl.java new file mode 100644 index 0000000..9e14dc3 --- /dev/null +++ b/Java-Reflection/src/com/reflect/Girl.java @@ -0,0 +1,53 @@ +package com.reflect; + +import java.lang.reflect.Field; + +/** + * @author ManhKM on 4/23/2022 + * @project Java-Reflection + */ +public class Girl { + private String name; + + public Girl() { + + } + + public Girl(String name) { + this.name = name; + } + + public void setName(String name){ + this.name = name; + } + + @Override + public String toString() { + return "Girl{" + + "name='" + name + '\'' + + '}'; + } + + public static void main(String[] args) throws Exception { + Girl girl = new Girl(); // KHởi tạo đối tượng Girl + girl.setName("Ngoc trinh"); + + // Lay ra tat ca field cua object + // Chỉ để bạn xem ví dụ thôi, bỏ qua phần này nhé! + for(Field field : girl.getClass().getDeclaredFields()){ + System.out.println(); + System.out.println("Field: " +field.getName()); + System.out.println("Type: " +field.getType()); + } + + // PHẦN CHÍNH + Field nameField = girl.getClass().getDeclaredField("name"); // Lấy ra field có tên "name" (nếu không tìm thấy, nó sẽ bắn NoSuchFieldException) + nameField.setAccessible(true); // Cho phép truy cập tạm thời. (Vì nó đang là Private mà) + + // Bây giờ cái "nameField" đại diện cho thuộc tính "name" của mọi object có class Girl. + nameField.set(girl, "Bella"); // thay giá trị mới của `girl` bằng nameField. + + + System.out.println(girl); + } +} diff --git a/Java-Reflection/src/com/reflect/Main.java b/Java-Reflection/src/com/reflect/Main.java deleted file mode 100644 index a2d2494..0000000 --- a/Java-Reflection/src/com/reflect/Main.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.reflect; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.lang.reflect.Parameter; - -/** - * @author ManhKM on 2/14/2022 - * @project Java-Reflection - */ -public class Main { - public static void main(String[] args) throws Exception { - Class clazz = Class.forName("com.reflect.Person"); - getClassInfo(clazz); - getFields(clazz); - getMethods(clazz); - } - - public static void getClassInfo(Class clazz) { - System.out.println(String.format("Class: %s", clazz.getName())); - System.out.println(String.format("Package: %s", clazz.getPackage())); - System.out.println(String.format("Modifier public: %s", Modifier.isPublic(clazz.getModifiers()))); - } - - public static void getFields(Class clazz) { - Field[] fs = clazz.getDeclaredFields(); - for (int i = 0; i < fs.length; i++) { - System.out.print(fs[i].getType()); - System.out.println(" " + fs[i].getName()); - } - } - - public static void getMethods(Class clazz) { - Method[] ms = clazz.getDeclaredMethods(); - for (int i = 0; i < ms.length; i++) { - System.out.print(ms[i].getName()); - Parameter[] ps = ms[i].getParameters(); - for (int j = 0; j < ps.length; j++) { - System.out.print(" " + ps[j].getParameterizedType()); - System.out.print(" " + ps[j].getName()); - } - System.out.println(); - } - } -} diff --git a/Java-Reflection/src/com/reflect/Person.java b/Java-Reflection/src/com/reflect/Person.java index 7452622..29a1d2b 100644 --- a/Java-Reflection/src/com/reflect/Person.java +++ b/Java-Reflection/src/com/reflect/Person.java @@ -3,7 +3,7 @@ import java.util.Date; /** - * @author ManhKM on 2/14/2022 + * @author ManhKM on 8/1/2022 * @project Java-Reflection */ public class Person { @@ -11,16 +11,10 @@ public class Person { protected String address; private Date birthday; - public Person() { - } - - public Person(String name, String address, Date birthday) { - this.name = name; - this.address = address; - this.birthday = birthday; + public void sayHello(String str1, String str2){ + System.out.println(this.name + ", " + str1 + " " + str2); } - // getter-setter: public String getName() { return name; } @@ -45,14 +39,11 @@ public void setBirthday(Date birthday) { this.birthday = birthday; } - public void sayHello(String str1, String str2){ - System.out.println(this.name + " - " + str1 + " - " + str2); - } - @Override public String toString() { - return (name==null?"":name + - address==null?"":address + - birthday==null?"": birthday.toString()); + return + (name==null?"":name) + " " + + (address==null?"":address) + " " + + (birthday==null?"":birthday.toString()); } } diff --git a/Java-Reflection/src/com/reflect/ReflectAnnotation.java b/Java-Reflection/src/com/reflect/ReflectAnnotation.java new file mode 100644 index 0000000..91c2f3c --- /dev/null +++ b/Java-Reflection/src/com/reflect/ReflectAnnotation.java @@ -0,0 +1,51 @@ +package com.reflect; + +import com.sun.istack.internal.Nullable; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; + +/** + * @author ManhKM on 4/23/2022 + * @project Java-Reflection + */ +@SuppressWarnings("deprecation") +@Deprecated +public class ReflectAnnotation { + private String name; + + public ReflectAnnotation() { + + } + + public ReflectAnnotation(String name) { + this.name = name; + } + + @Nullable + public void setName(String name){ + this.name = name; + } + + @Override + public String toString() { + return "Girl{" + + "name='" + name + '\'' + + '}'; + } + + public static void main(String[] args) { + Class girlClass = Girl.class; + System.out.println("Class: "+girlClass.getSimpleName()); // Lấy ra tên Class + for(Annotation annotation : girlClass.getDeclaredAnnotations()){ + System.out.println("Annotation: " + annotation.annotationType()); // Lấy ra tên các Annatation trên class này + } + + for(Method method: girlClass.getDeclaredMethods()){ // Lấy ra các method của class + System.out.println("\nMethod: " + method.getName()); //Tên method + for(Annotation annotation : method.getAnnotations()){ + System.out.println("Annotation: " + annotation.annotationType()); // Lấy ra tên các Annatation trên method này + } + } + } +} diff --git a/Java-Reflection/src/com/reflect/ReflectConstructor.java b/Java-Reflection/src/com/reflect/ReflectConstructor.java new file mode 100644 index 0000000..5eb13dc --- /dev/null +++ b/Java-Reflection/src/com/reflect/ReflectConstructor.java @@ -0,0 +1,31 @@ +package com.reflect; + +import java.lang.reflect.Constructor; +import java.util.Arrays; + +/** + * @author ManhKM on 4/23/2022 + * @project Java-Reflection + */ +public class ReflectConstructor { + public static void main(String[] args) { + Class girlClass = Girl.class; + System.out.println("Class: " + girlClass.getSimpleName()); + System.out.println("Constructors: " + Arrays.toString(girlClass.getConstructors())); // Lấy ra toàn bộ Constructor của class này + try { + // Tạo ra một object Girl từ class. (Khởi tạo không tham số) + Girl girl1 = girlClass.newInstance(); + System.out.println("Girl1: " + girl1); + + // Lấy ra hàm constructor với tham số là 1 string + // Chính là -> public Girl(String name) {} + Constructor girlConstructor = girlClass.getConstructor(String.class); + Girl girl2 = girlConstructor.newInstance("Hello"); + + System.out.println("Girl2: " + girl2); + } catch (Exception e) { + // Exception xay ra khi constructor khong ton tai hoac tham so truyen vao khong dung + e.printStackTrace(); + } + } +} diff --git a/Java-Reflection/src/com/reflect/ReflectMethod.java b/Java-Reflection/src/com/reflect/ReflectMethod.java new file mode 100644 index 0000000..2ef70f8 --- /dev/null +++ b/Java-Reflection/src/com/reflect/ReflectMethod.java @@ -0,0 +1,38 @@ +package com.reflect; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Arrays; + +/** + * @author ManhKM on 4/23/2022 + * @project Java-Reflection + */ +public class ReflectMethod { + public static void main(String[] args) { + Class girlClass = Girl.class; + + Method[] methods = girlClass.getDeclaredMethods(); + + for (Method method: methods) { + System.out.println(); + System.out.println("Method: " + method.getName()); + System.out.println("Parameters: " + Arrays.toString(method.getParameters())); + } + + try { + Method methodSetName = girlClass.getMethod("setName", String.class); + Girl girl = new Girl(); + + methodSetName.invoke(girl, "Ngọc Trinh"); + System.out.println(girl); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + } +} diff --git a/Java-Reflection/src/com/utils/CommonUtils.java b/Java-Reflection/src/com/utils/CommonUtils.java new file mode 100644 index 0000000..5be64e7 --- /dev/null +++ b/Java-Reflection/src/com/utils/CommonUtils.java @@ -0,0 +1,67 @@ +package com.utils; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.lang.reflect.Parameter; + +/** + * @author ManhKM on 8/1/2022 + * @project Java-Reflection + */ +public class CommonUtils { + + // get thông tin Class: + public static void getClassInfo(Class clazz){ + System.out.println(String.format("Class: %s", clazz.getName())); + System.out.println(String.format("Package: %s", clazz.getPackage().getName())); + System.out.println(String.format("Modifier public: %s", Modifier.isPublic(clazz.getModifiers()))); + } + + // get thông tin các trường + public static void getFields(Class clazz){ + Field[] fs = clazz.getDeclaredFields(); + + for (int i = 0; i < fs.length; i++){ + System.out.println(fs[i].getType()); + System.out.println(" " + fs[i].getName()); + } + } + + // get thông tin method: + public static void getMethods(Class clazz){ + Method[] ms = clazz.getDeclaredMethods(); + for (int i = 0; i < ms.length; i++){ + System.out.println(ms[i].getName()); + Parameter[] ps = ms[i].getParameters(); + for (int j = 0; j < ps.length; j++){ + System.out.println(" " + ps[j].getParameterizedType()); + System.out.println(" " + ps[j].getName()); + } + } + } + + // tạo mới đối tượng: + public static Object createObject(Class clazz, String[] fields, Object[] values){ + try { + Object obj = clazz.newInstance(); + for(int i = 0; i < fields.length; i++){ + Field field = clazz.getDeclaredField(fields[i]); + field.setAccessible(true); + field.set(obj, values[i]); + } + return obj; + } catch (InstantiationException e) { + e.printStackTrace(); + return null; + } catch (IllegalAccessException e) { + e.printStackTrace(); + return null; + } catch (NoSuchFieldException e) { + e.printStackTrace(); + return null; + } + } + + +} diff --git a/Java-Reflection/src/com/utils/ReflectMain.java b/Java-Reflection/src/com/utils/ReflectMain.java new file mode 100644 index 0000000..d6d1cca --- /dev/null +++ b/Java-Reflection/src/com/utils/ReflectMain.java @@ -0,0 +1,26 @@ +package com.utils; + +import com.reflect.Person; +import java.util.Date; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +public class ReflectMain { + + public static void main(String[] args) { + Person person = new Person(); + // Cách thông thường: + person.setName("ManhKM"); + person.setBirthday(new Date()); + System.out.println("Case01: " + person.toString()); + + // Dùng Reflection: + ReflectUtils.set(person, "name", "ManHKM Reflection"); + ReflectUtils.set(person, "birthday", new Date()); + ReflectUtils.set(person, "address", "Thái Bình"); + System.out.println("Case02: " + person.toString()); + + } +} diff --git a/Java-Reflection/src/com/utils/ReflectUtils.java b/Java-Reflection/src/com/utils/ReflectUtils.java new file mode 100644 index 0000000..4dbbcc2 --- /dev/null +++ b/Java-Reflection/src/com/utils/ReflectUtils.java @@ -0,0 +1,40 @@ +package com.utils; + +import java.lang.reflect.Field; + +/** + * @author ManhKM on 10/19/2022 + * @project Java-Reflection + */ +public class ReflectUtils { + public static boolean set(Object object, String fieldName, Object fieldValue){ + Class clazz = object.getClass(); + if(clazz != null){ + try{ + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + field.set(object, fieldValue); + return true; + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + clazz = clazz.getSuperclass(); + } + } + return false; + } + + public static Object get(Object object, String fieldName){ + Class clazz = object.getClass(); + if(clazz != null){ + try{ + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + return field.get(object); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + clazz = clazz.getSuperclass(); + } + } + return null; + } +} diff --git "a/Java-SOLID/Nguy\303\252n l\303\275 SOLID cho vi\341\273\207c thi\341\272\277t k\341\272\277 OOP.docx" "b/Java-SOLID/Nguy\303\252n l\303\275 SOLID cho vi\341\273\207c thi\341\272\277t k\341\272\277 OOP.docx" new file mode 100644 index 0000000..d5fe77a Binary files /dev/null and "b/Java-SOLID/Nguy\303\252n l\303\275 SOLID cho vi\341\273\207c thi\341\272\277t k\341\272\277 OOP.docx" differ diff --git a/Java-Schedule/spring-sche/.gitignore b/Java-Schedule/spring-sche/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/Java-Schedule/spring-sche/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Java-Schedule/spring-sche/.mvn/wrapper/maven-wrapper.jar b/Java-Schedule/spring-sche/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..c1dd12f Binary files /dev/null and b/Java-Schedule/spring-sche/.mvn/wrapper/maven-wrapper.jar differ diff --git a/Java-Schedule/spring-sche/.mvn/wrapper/maven-wrapper.properties b/Java-Schedule/spring-sche/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..b7cb93e --- /dev/null +++ b/Java-Schedule/spring-sche/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/Java-Schedule/spring-sche/HELP.md b/Java-Schedule/spring-sche/HELP.md new file mode 100644 index 0000000..83bbb96 --- /dev/null +++ b/Java-Schedule/spring-sche/HELP.md @@ -0,0 +1,10 @@ +# Getting Started + +### Reference Documentation + +For further reference, please consider the following sections: + +* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html) +* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.6.3/maven-plugin/reference/html/) +* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.6.3/maven-plugin/reference/html/#build-image) + diff --git a/Java-Schedule/spring-sche/mvnw b/Java-Schedule/spring-sche/mvnw new file mode 100644 index 0000000..841f63a --- /dev/null +++ b/Java-Schedule/spring-sche/mvnw @@ -0,0 +1,331 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /usr/local/etc/mavenrc ]; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$( + \unset -f command + \command -v java + )" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Java-Schedule/spring-sche/mvnw.cmd b/Java-Schedule/spring-sche/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Java-Schedule/spring-sche/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Java-Schedule/spring-sche/pom.xml b/Java-Schedule/spring-sche/pom.xml new file mode 100644 index 0000000..6f31673 --- /dev/null +++ b/Java-Schedule/spring-sche/pom.xml @@ -0,0 +1,41 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.6.3 + + + com.manhkm.schedule + spring-sche + 0.0.1-SNAPSHOT + spring-sche + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/Java-Schedule/spring-sche/src/main/java/com/manhkm/schedule/config/ScheduleConfig.java b/Java-Schedule/spring-sche/src/main/java/com/manhkm/schedule/config/ScheduleConfig.java new file mode 100644 index 0000000..a97956c --- /dev/null +++ b/Java-Schedule/spring-sche/src/main/java/com/manhkm/schedule/config/ScheduleConfig.java @@ -0,0 +1,20 @@ +package com.manhkm.schedule.config; + +import com.manhkm.schedule.springsche.ShowTime; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; + +/** + * @author ManhKM on 2/15/2022 + * @project spring-sche + */ +@Configuration +@EnableScheduling +public class ScheduleConfig { + + @Scheduled(cron = "0 * * * * *")//Chạy vào 0s của mỗi phút + public void showTime(){ + ShowTime.main(null); + } +} diff --git a/Java-Schedule/spring-sche/src/main/java/com/manhkm/schedule/springsche/ShowTime.java b/Java-Schedule/spring-sche/src/main/java/com/manhkm/schedule/springsche/ShowTime.java new file mode 100644 index 0000000..03b92d9 --- /dev/null +++ b/Java-Schedule/spring-sche/src/main/java/com/manhkm/schedule/springsche/ShowTime.java @@ -0,0 +1,13 @@ +package com.manhkm.schedule.springsche; + +import java.util.Date; + +/** + * @author ManhKM on 2/15/2022 + * @project spring-sche + */ +public class ShowTime { + public static void main(String[] args) { + System.out.println("Now is " + new Date()); + } +} diff --git a/Java-Schedule/spring-sche/src/main/java/com/manhkm/schedule/springsche/SpringScheApplication.java b/Java-Schedule/spring-sche/src/main/java/com/manhkm/schedule/springsche/SpringScheApplication.java new file mode 100644 index 0000000..15d5f80 --- /dev/null +++ b/Java-Schedule/spring-sche/src/main/java/com/manhkm/schedule/springsche/SpringScheApplication.java @@ -0,0 +1,13 @@ +package com.manhkm.schedule.springsche; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringScheApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringScheApplication.class, args); + } + +} diff --git a/Java-Schedule/spring-sche/src/main/resources/application.properties b/Java-Schedule/spring-sche/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Java-Schedule/spring-sche/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/Java-Schedule/spring-sche/src/test/java/com/manhkm/schedule/springsche/SpringScheApplicationTests.java b/Java-Schedule/spring-sche/src/test/java/com/manhkm/schedule/springsche/SpringScheApplicationTests.java new file mode 100644 index 0000000..14596a7 --- /dev/null +++ b/Java-Schedule/spring-sche/src/test/java/com/manhkm/schedule/springsche/SpringScheApplicationTests.java @@ -0,0 +1,13 @@ +package com.manhkm.schedule.springsche; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class SpringScheApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/Java-Schedule/spring-sche/target/classes/application.properties b/Java-Schedule/spring-sche/target/classes/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Java-Schedule/spring-sche/target/classes/application.properties @@ -0,0 +1 @@ + diff --git a/Java-Schedule/spring-sche/target/classes/com/manhkm/schedule/config/ScheduleConfig.class b/Java-Schedule/spring-sche/target/classes/com/manhkm/schedule/config/ScheduleConfig.class new file mode 100644 index 0000000..e0bf46d Binary files /dev/null and b/Java-Schedule/spring-sche/target/classes/com/manhkm/schedule/config/ScheduleConfig.class differ diff --git a/Java-Schedule/spring-sche/target/classes/com/manhkm/schedule/springsche/ShowTime.class b/Java-Schedule/spring-sche/target/classes/com/manhkm/schedule/springsche/ShowTime.class new file mode 100644 index 0000000..ef1690e Binary files /dev/null and b/Java-Schedule/spring-sche/target/classes/com/manhkm/schedule/springsche/ShowTime.class differ diff --git a/Java-Schedule/spring-sche/target/classes/com/manhkm/schedule/springsche/SpringScheApplication.class b/Java-Schedule/spring-sche/target/classes/com/manhkm/schedule/springsche/SpringScheApplication.class new file mode 100644 index 0000000..c24809f Binary files /dev/null and b/Java-Schedule/spring-sche/target/classes/com/manhkm/schedule/springsche/SpringScheApplication.class differ diff --git a/Java-Schedule/spring-sche/target/test-classes/com/manhkm/schedule/springsche/SpringScheApplicationTests.class b/Java-Schedule/spring-sche/target/test-classes/com/manhkm/schedule/springsche/SpringScheApplicationTests.class new file mode 100644 index 0000000..292ce14 Binary files /dev/null and b/Java-Schedule/spring-sche/target/test-classes/com/manhkm/schedule/springsche/SpringScheApplicationTests.class differ diff --git a/Java-Schedule/spring-scheduler/pom.xml b/Java-Schedule/spring-scheduler/pom.xml new file mode 100644 index 0000000..f6369ee --- /dev/null +++ b/Java-Schedule/spring-scheduler/pom.xml @@ -0,0 +1,28 @@ + + + 4.0.0 + + org.example + spring-scheduler + 1.0-SNAPSHOT + + + 8 + 8 + + + + + org.springframework + spring-context + 5.3.14 + + + org.springframework.boot + spring-boot-autoconfigure + 2.6.3 + + + \ No newline at end of file diff --git a/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/config/ScheduleConfig.java b/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/config/ScheduleConfig.java new file mode 100644 index 0000000..dd3832a --- /dev/null +++ b/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/config/ScheduleConfig.java @@ -0,0 +1,23 @@ +package com.manhkm.config; + +import com.manhkm.schedule.*; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; + +/** + * @author ManhKM on 2/15/2022 + * @project spring-scheduler + */ + +@Configuration +@EnableScheduling +@ConditionalOnProperty(value = "schedule.enabled", matchIfMissing = true, havingValue = "true") +public class ScheduleConfig { + + @Scheduled(cron = "${schedule.clear.schedule.log}") + public void clearScheduleLog() { + new ClearScheduleLog(); + } +} diff --git a/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/schedule/ClearScheduleLog.java b/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/schedule/ClearScheduleLog.java new file mode 100644 index 0000000..5863ca7 --- /dev/null +++ b/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/schedule/ClearScheduleLog.java @@ -0,0 +1,31 @@ +package com.manhkm.schedule; + +/** + * @author ManhKM on 2/15/2022 + * @project spring-scheduler + */ +public class ClearScheduleLog extends ScheduleManager { + private int numOfExpiredDays; + + public ClearScheduleLog() { + super("CLEAR_SCHEDULE_LOG"); + } + + @Override + protected void initParameters() { + this.numOfExpiredDays = getParamAsInteger("numOfExpiredDays", 180); + + } + + @Override + protected boolean validateParameters() throws Exception { + return true; + } + + @Override + public void run() { + int result = 0; + //Xử lý xóa log theo tham số quá hạn numOfExpiredDays + logInfo("Deleted " + result + " record(s)"); + } +} diff --git a/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/schedule/ScheduleManager.java b/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/schedule/ScheduleManager.java new file mode 100644 index 0000000..1d2a812 --- /dev/null +++ b/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/schedule/ScheduleManager.java @@ -0,0 +1,129 @@ +package com.manhkm.schedule; + +import com.sun.org.slf4j.internal.Logger; +import com.sun.org.slf4j.internal.LoggerFactory; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author ManhKM on 2/15/2022 + * @project spring-scheduler + */ +public abstract class ScheduleManager { + Logger logger = LoggerFactory.getLogger(getClass()); + private String scheduleCode; + private Map params = new HashMap(); + public ScheduleManager(String scheduleCode) { + this.scheduleCode = scheduleCode; + this.process(); + } + + /** + * Load tham số nghiệp vụ từ DB + */ + protected void loadParametersFromDB() { + logger.info("Start load parameters from DB for " + this.scheduleCode); + //Load cấu hình tham số nghiệp vụ cho tiến trình từ DB theo scheduleCode + //Fill danh sách tham số vào this.params + } + + /** + * Validate tham số trước khi chạy + * @return + * @throws Exception + */ + private boolean validate() throws Exception { + logger.info("Validate parameter for " + this.scheduleCode); + return validateParameters(); + } + + /** + * Dành cho tiến trình implement các khởi tạo tham số + */ + protected abstract void initParameters(); + + /** + * Dành cho tiến trình implement các validate nghiệp vụ + * @return + * @throws Exception + */ + protected abstract boolean validateParameters() throws Exception; + + /** + * Dành cho tiến trình implement nghiệp vụ cụ thể + * @throws Exception + */ + protected abstract void run() throws Exception; + + /** + * Hàm xử lý chính của khung tiến trình + */ + private void process() { + long start = new Date().getTime(); + logger.info("START " + this.scheduleCode); + try { + loadParametersFromDB(); + initParameters(); + if (validate()) { + logDebug("Loaded params and running"); + run(); + logDebug("Done in " + (new Date().getTime() - start) + "ms"); + } else { + logDebug("Loaded params and not running"); + } + } catch (Exception e) { + logger.error(this.scheduleCode + ": " + e.toString(), e); + logError(e.toString()); + } finally { + logger.info("END " + this.scheduleCode + " in " + (new Date().getTime() - start) + "ms"); + } + } + + protected final void addParam(String key, Object value) { + if (this.params == null) { + this.params = new HashMap(); + } + this.params.put(key, value); + } + + protected final Object getParam(String key) { + if (this.params == null) { + return null; + } + return this.params.get(key); + } + + protected final String getParamAsString(String key, String defaultValue) { + Object value = getParam(key); + return value==null?defaultValue:value.toString(); + } + + protected final Integer getParamAsInteger(String key, Integer defaultValue) { + String ret = getParamAsString(key, null); + if (ret == null) { + return defaultValue; + } + try { + return Integer.valueOf(ret); + } catch (Exception e) { + return defaultValue; + } + } + + protected final Map getAllParams() { + return this.params == null ? new HashMap() : this.params; + } + + protected void logDebug(String content) { + logger.debug(content); + } + + protected void logInfo(String content) { + logger.info(content); + } + + protected void logError(String content) { + logger.error(content); + } +} diff --git a/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/schedule/ShowTime.java b/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/schedule/ShowTime.java new file mode 100644 index 0000000..7b00c1d --- /dev/null +++ b/Java-Schedule/spring-scheduler/src/main/java/com/manhkm/schedule/ShowTime.java @@ -0,0 +1,13 @@ +package com.manhkm.schedule; + +import java.util.Date; + +/** + * @author ManhKM on 2/15/2022 + * @project spring-scheduler + */ +public class ShowTime { + public static void main(String[] args) { + System.out.println("Now is " + new Date()); + } +} diff --git a/Java-Schedule/spring-scheduler/src/main/resources/application.properties b/Java-Schedule/spring-scheduler/src/main/resources/application.properties new file mode 100644 index 0000000..3bb1f50 --- /dev/null +++ b/Java-Schedule/spring-scheduler/src/main/resources/application.properties @@ -0,0 +1,13 @@ +## Config Schedule task +schedule.enabled=false +schedule.clear.schedule.log=0 0 0 * * * +schedule.clear.realtime=0 * * * * +schedule.cancel.ticket.impossible=0 * * * * * +schedule.retry.send.rest=0 * * * * * +schedule.charge.summary=0 0 0 * * * +schedule.create.booking.on.ba=0 * * * * * +schedule.sync.location=0 0 0 * * * +schedule.sync.department=0 0 0 * * * +schedule.sync.user=0 0 0 * * * + +recurrence.daily.default=MON,TUE,WED,THU,FRI \ No newline at end of file diff --git a/Java-Schedule/spring-scheduler/target/classes/application.properties b/Java-Schedule/spring-scheduler/target/classes/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Java-Schedule/spring-scheduler/target/classes/application.properties @@ -0,0 +1 @@ + diff --git a/Java-Schedule/spring-scheduler/target/classes/com/manhkm/config/ScheduleConfig.class b/Java-Schedule/spring-scheduler/target/classes/com/manhkm/config/ScheduleConfig.class new file mode 100644 index 0000000..378c806 Binary files /dev/null and b/Java-Schedule/spring-scheduler/target/classes/com/manhkm/config/ScheduleConfig.class differ diff --git a/Java-Schedule/spring-scheduler/target/classes/com/manhkm/schedule/ShowTime.class b/Java-Schedule/spring-scheduler/target/classes/com/manhkm/schedule/ShowTime.class new file mode 100644 index 0000000..1d6f9f3 Binary files /dev/null and b/Java-Schedule/spring-scheduler/target/classes/com/manhkm/schedule/ShowTime.class differ diff --git a/Java-Schedule/spring-scheduler/target/maven-archiver/pom.properties b/Java-Schedule/spring-scheduler/target/maven-archiver/pom.properties new file mode 100644 index 0000000..39e6e3f --- /dev/null +++ b/Java-Schedule/spring-scheduler/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue Feb 15 11:00:25 ICT 2022 +version=1.0-SNAPSHOT +groupId=org.example +artifactId=spring-scheduler diff --git a/Java-Schedule/spring-scheduler/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/Java-Schedule/spring-scheduler/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..edcdf79 --- /dev/null +++ b/Java-Schedule/spring-scheduler/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,2 @@ +com\manhkm\config\ScheduleConfig.class +com\manhkm\schedule\ShowTime.class diff --git a/Java-Schedule/spring-scheduler/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/Java-Schedule/spring-scheduler/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..509e1aa --- /dev/null +++ b/Java-Schedule/spring-scheduler/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,2 @@ +E:\1_CODING\LearnJava\Java-Pre\Java-Schedule\spring-scheduler\src\main\java\com\manhkm\config\ScheduleConfig.java +E:\1_CODING\LearnJava\Java-Pre\Java-Schedule\spring-scheduler\src\main\java\com\manhkm\schedule\ShowTime.java diff --git a/Java-Schedule/spring-scheduler/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/Java-Schedule/spring-scheduler/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/Java-Schedule/spring-scheduler/target/spring-scheduler-1.0-SNAPSHOT.jar b/Java-Schedule/spring-scheduler/target/spring-scheduler-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..6a5935d Binary files /dev/null and b/Java-Schedule/spring-scheduler/target/spring-scheduler-1.0-SNAPSHOT.jar differ diff --git a/Java-Serializable/.gitignore b/Java-Serializable/.gitignore new file mode 100644 index 0000000..35c1233 --- /dev/null +++ b/Java-Serializable/.gitignore @@ -0,0 +1,41 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ + +# Compiled class file +*.class +**/target/ +design/ +uml/ + +# Log file +*.log +*.log.gz \ No newline at end of file diff --git a/Java-Serializable/data.txt b/Java-Serializable/data.txt new file mode 100644 index 0000000..407252a Binary files /dev/null and b/Java-Serializable/data.txt differ diff --git a/Java-Serializable/img/mo-hinh-chuyen-doi.png b/Java-Serializable/img/mo-hinh-chuyen-doi.png new file mode 100644 index 0000000..41bc03e Binary files /dev/null and b/Java-Serializable/img/mo-hinh-chuyen-doi.png differ diff --git a/Java-Serializable/img/serialization-deserialization.png b/Java-Serializable/img/serialization-deserialization.png new file mode 100644 index 0000000..8d04ddb Binary files /dev/null and b/Java-Serializable/img/serialization-deserialization.png differ diff --git a/Java-Serializable/out/production/Java-Serializable/com/core/serializable/entity/Customer.class b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/entity/Customer.class new file mode 100644 index 0000000..75caba5 Binary files /dev/null and b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/entity/Customer.class differ diff --git a/Java-Serializable/out/production/Java-Serializable/com/core/serializable/listobject/ReadListObjectDemo.class b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/listobject/ReadListObjectDemo.class new file mode 100644 index 0000000..b644ac3 Binary files /dev/null and b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/listobject/ReadListObjectDemo.class differ diff --git a/Java-Serializable/out/production/Java-Serializable/com/core/serializable/listobject/WriteListObjectDemo.class b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/listobject/WriteListObjectDemo.class new file mode 100644 index 0000000..368dd75 Binary files /dev/null and b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/listobject/WriteListObjectDemo.class differ diff --git a/Java-Serializable/out/production/Java-Serializable/com/core/serializable/single/SerializationExample.class b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/single/SerializationExample.class new file mode 100644 index 0000000..7a039b3 Binary files /dev/null and b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/single/SerializationExample.class differ diff --git a/Java-Serializable/out/production/Java-Serializable/com/core/serializable/singleobject/ReadObjectDemo.class b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/singleobject/ReadObjectDemo.class new file mode 100644 index 0000000..f6c3b2f Binary files /dev/null and b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/singleobject/ReadObjectDemo.class differ diff --git a/Java-Serializable/out/production/Java-Serializable/com/core/serializable/singleobject/WriteObjectDemo.class b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/singleobject/WriteObjectDemo.class new file mode 100644 index 0000000..465c3f9 Binary files /dev/null and b/Java-Serializable/out/production/Java-Serializable/com/core/serializable/singleobject/WriteObjectDemo.class differ diff --git a/Java-Serializable/out/production/Java-Serializable/customer.dat b/Java-Serializable/out/production/Java-Serializable/customer.dat new file mode 100644 index 0000000..8ba2723 Binary files /dev/null and b/Java-Serializable/out/production/Java-Serializable/customer.dat differ diff --git a/Java-Serializable/out/production/Java-Serializable/people.dat b/Java-Serializable/out/production/Java-Serializable/people.dat new file mode 100644 index 0000000..168a79f Binary files /dev/null and b/Java-Serializable/out/production/Java-Serializable/people.dat differ diff --git a/Java-Serializable/readme.md b/Java-Serializable/readme.md new file mode 100644 index 0000000..557adbf --- /dev/null +++ b/Java-Serializable/readme.md @@ -0,0 +1,78 @@ +## Java Serializable là gì? Serialization và Deserialization trong Java + +### 1. Java Serializable là gì? +![Serialization - Deserialization](img/serialization-deserialization.png) + +1.1. Serializable trong Java là gì? + +Quá trình Serialization chuyển đổi giữa Object và byte stream giữa các module vận hành hoàn toàn độc lập với bất cứ nền tảng nào. + +![Chuyển đổi Serialization và Deserialization](img/mo-hinh-chuyen-doi.png) + +1.2. Interface java.io.Serializable là gì? + + java.io + Class NotSerializableException + java.lang.Object + java.lang.Throwable + java.lang.Exception + java.io.IOException + java.io.ObjectStreamException + java.io.NotSerializableException + +1.3. Tại sao nên sử dụng Serializable? + + +### 2. Tại sao cần Serialization? + Dữ liệu chuyển đổi qua lại với nhau bằng byte chứ không phải là object. + -> Cần một cơ chế để có thể hiểu qua lại giữa việc gửi và nhận này. + + Quá trình serilization hoàn toàn độc lập với platform -> không phụ thuộc vào hệ điều hành. + -> chuyển đổi giữa byte và Object các module. + +### 3. Coding: + Object -> ghi ra file + file -> reading -> Object/Module + +### 4. Một số lưu ý về Serialization trong Java: + +4.1. Những câu hỏi thường gặp về Serializable trong Java + +### 5. Ví dụ về Serializable trong Java: + +5.1. Khi nào một class được xem là Serializable thành công? + +Để một class được xem là Serializable thành công, class sẽ cần phải đáp ứng đầy đủ 2 điều kiện sau: ++ Class phải được implement interface java.io.Serializable ++ Tất cả các field trong class sẽ cần phải Serializable. + + + +5.2. Serializing một Object + +Thực hiện việc ghi gữ liệu vào file, mục đích để dùng cho mục đích đọc xử lý nghiệp vụ nào đó. + +5.3. Deserializing một Object + +Từ các file dữ liệu đó, sẽ readData -> convert thành đối tượng Object mong muốn. + +5.4. Những lưu ý về Serializable trong Java + ++ Nếu class mẹ đã implement Serializable, class con sẽ không cần phải thực hiện implement Serializable lần nữa. (Coding demo) ++ Ngoài thuộc tính transient không thể Serialization còn có thuộc tính static. + + các thuộc tính transient là gì? + + các thuộc tính static là gì? + ++ Hàm Constructor - hàm khởi tạo sẽ không được gọi nếu một Object được Deserialization. + ++ Nếu bạn muốn Serializable một Object, toàn bộ thuộc tính trong Obejct đó đều phải Serializable. + + Ví dụ thuộc tính Address của Object Customer phải implement Serializable. Nếu không khi Serialization Object Customer, Java sẽ báo lỗi: java.io.NotSerializableException. + +### 6. Reference Document: ++ [Java Serializable là gì?](https://stackjava.com/java/java-serializable-la-gi-serialization-va-deserialization-trong-java.html) + ++ [Java Tutorial](https://docs.oracle.com/javase/tutorial/jndi/objects/serial.html) + ++ [Write Read Arraylist Object File Java](https://samderlust.com/dev-blog/java/write-read-arraylist-object-file-java) + ++ [Tìm hiểu về Serializable trong Java](https://wiki.tino.org/tim-hieu-ve-serializable-trong-java/) + diff --git a/Java-Serializable/src/com/core/serializable/entity/Customer.java b/Java-Serializable/src/com/core/serializable/entity/Customer.java new file mode 100644 index 0000000..0132d3f --- /dev/null +++ b/Java-Serializable/src/com/core/serializable/entity/Customer.java @@ -0,0 +1,79 @@ +package com.core.serializable.entity; + +import java.io.Serializable; + +/** + * Object Customer -> chỉ là một class thông thường. + * Để chúng có thể thực hiện chuyển đổi qua lại thì phải sử dụng -> implement Serializable + * + * + transient: -> nó sẽ không được serialization + * @author ManhKM on 4/13/2022 + * @project Java-Serializable + */ +public class Customer implements Serializable { + + /** + * serialVersionUID -> để đảm bảo răng đối tượng trước/sau khi serialization là duy nhất + */ + private static final long serialVersionUID = 1L; + private Long id; + private String name; + private int age; + private String address; + + public Customer() { + } + + public Customer(Long id, String name, int age, String address) { + this.id = id; + this.name = name; + this.age = age; + this.address = address; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + 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 String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + @Override + public String toString() { + return "Customer{" + + "id=" + id + + ", name='" + name + '\'' + + ", age=" + age + + ", address='" + address + '\'' + + '}'; + } + + public void mailCheck(){ + System.out.println("Gửi mail đến " + name + " - " + address); + } +} diff --git a/Java-Serializable/src/com/core/serializable/listobject/DeserializingCustomerDemo.java b/Java-Serializable/src/com/core/serializable/listobject/DeserializingCustomerDemo.java new file mode 100644 index 0000000..60958d6 --- /dev/null +++ b/Java-Serializable/src/com/core/serializable/listobject/DeserializingCustomerDemo.java @@ -0,0 +1,43 @@ +package com.core.serializable.listobject; + +import com.core.serializable.entity.Customer; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.ObjectInputStream; + +/** + * @author ManhKM on 7/16/2022 + * @project Java-Serializable + */ +public class DeserializingCustomerDemo { + public static void main(String[] args) { + Customer customer = null; + + try { + FileInputStream fileInputStream = new FileInputStream("tmp/customer.ser"); + ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); + + // kết quả trả về của readObject() được tham chiếu đến Object Customer: + customer = (Customer) objectInputStream.readObject(); + + objectInputStream.close(); + fileInputStream.close(); + + } catch (IOException e){ + System.out.println("Không tìm thấy file tmp/customer.ser"); + } catch (ClassNotFoundException e){ + System.out.println("Không tìm thấy class Customer"); + } + + System.out.println("Deserialized Customer: ..."); + System.out.println("ID: " + customer.getId()); + System.out.println("NAME: " + customer.getName()); + System.out.println("AGE: " + customer.getAge()); + System.out.println("ADDRESS: " + customer.getAddress()); + + System.out.println("Gửi email đến: " + customer.getName()); + customer.mailCheck(); + + } +} diff --git a/Java-Serializable/src/com/core/serializable/listobject/ReadListObjectDemo.java b/Java-Serializable/src/com/core/serializable/listobject/ReadListObjectDemo.java new file mode 100644 index 0000000..1d43eac --- /dev/null +++ b/Java-Serializable/src/com/core/serializable/listobject/ReadListObjectDemo.java @@ -0,0 +1,42 @@ +package com.core.serializable.listobject; + +import com.core.serializable.entity.Customer; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.util.ArrayList; + +/** + * @author ManhKM on 5/7/2022 + * @project Java-Serializable + * + * ---- + * Các logic liên quan với tập danh sách Customer: + * 1. Tìm customer có số tuổi cao nhất. + * 2. Đêm số lượng customer trong danh sách + * + */ +public class ReadListObjectDemo { + public static void main(String[] args) { + FileInputStream readData = null; + try { + readData = new FileInputStream("src\\people.dat"); + ObjectInputStream readStream = new ObjectInputStream(readData); + ArrayList people2 = (ArrayList) readStream.readObject(); + + readStream.close(); + System.out.println(people2.toString()); + System.out.println("Danh sách customer trong file: " + people2.size()); + + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Serializable/src/com/core/serializable/listobject/SerializeCustomerDemo.java b/Java-Serializable/src/com/core/serializable/listobject/SerializeCustomerDemo.java new file mode 100644 index 0000000..046bce0 --- /dev/null +++ b/Java-Serializable/src/com/core/serializable/listobject/SerializeCustomerDemo.java @@ -0,0 +1,40 @@ +package com.core.serializable.listobject; + +import com.core.serializable.entity.Customer; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectOutputStream; + +/** + * @author ManhKM on 7/16/2022 + * @project Java-Serializable + * ----- + * Thực hiên việc mã hóa thông tin của Customer xuống file customer.ser + * Quá trình Serial thực hiện chính việc mã hóa này. + */ +public class SerializeCustomerDemo { + public static void main(String[] args) { + Customer customer = new Customer(); + customer.setId(1L); + customer.setName("Khổng Minh Mạnh"); + customer.setAge(18); + customer.setAddress("Thái Bình, Việt Nam"); + + try { + FileOutputStream fileOutputStream = new FileOutputStream("tmp/customer.ser"); //Thực hiện tạo thư mục tmp/ + ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); + objectOutputStream.writeObject(customer); + objectOutputStream.close(); + + System.out.println("Dữ liệu sau Serialized được tại: tmp/customer.ser"); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + } +} diff --git a/Java-Serializable/src/com/core/serializable/listobject/WriteListObjectDemo.java b/Java-Serializable/src/com/core/serializable/listobject/WriteListObjectDemo.java new file mode 100644 index 0000000..1e68dcc --- /dev/null +++ b/Java-Serializable/src/com/core/serializable/listobject/WriteListObjectDemo.java @@ -0,0 +1,44 @@ +package com.core.serializable.listobject; +import com.core.serializable.entity.Customer; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.util.ArrayList; +import java.util.List; + +/** + * @author ManhKM on 5/7/2022 + * @project Java-Serializable + */ +public class WriteListObjectDemo { + public static void main(String[] args) { + Customer customer = new Customer(1L, "ManhKM", 18, "Ha Noi"); + Customer customer1 = new Customer(2L, "TrangKT", 18, "Ha Noi"); + Customer customer2 = new Customer(3L, "TrangTT", 18, "Ha Noi"); + Customer customer3 = new Customer(4L, "Haha", 18, "Ha Noi"); + Customer customer4 = new Customer(5L, "hihi", 18, "Ha Noi"); + + List people = new ArrayList(); + people.add(customer); + people.add(customer1); + people.add(customer2); + people.add(customer3); + people.add(customer4); + + FileOutputStream writeData = null; + try { + writeData = new FileOutputStream("src\\people.dat"); + ObjectOutputStream writeStream = new ObjectOutputStream(writeData); + writeStream.writeObject(people); + writeStream.flush(); + writeStream.close(); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Serializable/src/com/core/serializable/single/SerializationExample.java b/Java-Serializable/src/com/core/serializable/single/SerializationExample.java new file mode 100644 index 0000000..6791827 --- /dev/null +++ b/Java-Serializable/src/com/core/serializable/single/SerializationExample.java @@ -0,0 +1,24 @@ +package com.core.serializable.single; + +import com.core.serializable.entity.Customer; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectOutputStream; + +/** + * @author ManhKM on 5/6/2022 + * @project Java-Serializable + */ +public class SerializationExample { + public static void main(String[] args) { + Customer customer = new Customer(1L, "ManhKM", 18, "Ha Noi"); + try { + FileOutputStream fos = new FileOutputStream("E:\\1_CODING\\LearnJava\\Java-Pre\\Java-Serializable\\data.txt"); + ObjectOutputStream oos = new ObjectOutputStream(fos); + oos.writeObject(customer); + } catch(IOException e){ + e.printStackTrace(); + } + } +} diff --git a/Java-Serializable/src/com/core/serializable/singleobject/ReadObjectDemo.java b/Java-Serializable/src/com/core/serializable/singleobject/ReadObjectDemo.java new file mode 100644 index 0000000..c17b5ad --- /dev/null +++ b/Java-Serializable/src/com/core/serializable/singleobject/ReadObjectDemo.java @@ -0,0 +1,33 @@ +package com.core.serializable.singleobject; + +import com.core.serializable.entity.Customer; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.ObjectInputStream; + +/** + * Thực hiện việc đọc dữ liệu từ file: customer.dat -> và lấy vào trong chương trình. + * + * Chưa đọc được dữ liệu một List từ file dat lên chương trình. + * ObjectInputStream -> FileInputStream -> File + * @author ManhKM on 4/13/2022 + * @project Java-Serializable + */ +public class ReadObjectDemo { + public static void main(String[] args) { + ObjectInputStream ois = null; + try { + ois = new ObjectInputStream( + new FileInputStream( + new File("src\\customer.dat"))); + System.out.println("Customer after deserialization: "); + Customer customer = (Customer) ois.readObject(); + System.out.println(customer); + ois.close(); + } catch (IOException | ClassNotFoundException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Serializable/src/com/core/serializable/singleobject/WriteObjectDemo.java b/Java-Serializable/src/com/core/serializable/singleobject/WriteObjectDemo.java new file mode 100644 index 0000000..6edc66e --- /dev/null +++ b/Java-Serializable/src/com/core/serializable/singleobject/WriteObjectDemo.java @@ -0,0 +1,39 @@ +package com.core.serializable.singleobject; + +import com.core.serializable.entity.Customer; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectOutputStream; + +/** + * @author ManhKM on 4/13/2022 + * @project Java-Serializable + * ----- + * ObjectOutputStream -> FileOutputStream -> File + */ +public class WriteObjectDemo { + public static void main(String[] args) { + ObjectOutputStream oos = null; + try { + oos = new ObjectOutputStream( + new FileOutputStream( + new File("src\\customer.dat"))); + Customer cus1 = new Customer(1L, "manhkm", 18, "Thai Binh"); + + System.out.println("Customer before serialization"); + /** + * Ghi ra file để lưu giữ liệu của Customer + * Dữ liệu ra file rồi có thể đọc lại chúng + * Trường hợp 1: Nếu file đó có dữ liệu đơn + * Trường hợp 2: Nếu file đó là tập một Collection về dữ liệu + */ + oos.writeObject(cus1); + oos.close(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + } + } +} diff --git a/Java-Serializable/src/customer.dat b/Java-Serializable/src/customer.dat new file mode 100644 index 0000000..8ba2723 Binary files /dev/null and b/Java-Serializable/src/customer.dat differ diff --git a/Java-Serializable/src/people.dat b/Java-Serializable/src/people.dat new file mode 100644 index 0000000..168a79f Binary files /dev/null and b/Java-Serializable/src/people.dat differ diff --git a/Java-Serializable/tmp/customer.ser b/Java-Serializable/tmp/customer.ser new file mode 100644 index 0000000..9b44837 Binary files /dev/null and b/Java-Serializable/tmp/customer.ser differ diff --git a/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/1-servlet-la-gi.JPG b/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/1-servlet-la-gi.JPG new file mode 100644 index 0000000..989670d Binary files /dev/null and b/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/1-servlet-la-gi.JPG differ diff --git a/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/2-flow-request.png b/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/2-flow-request.png new file mode 100644 index 0000000..f751c7a Binary files /dev/null and b/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/2-flow-request.png differ diff --git a/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/3-uu-diem-servlet-vs-cgi.png b/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/3-uu-diem-servlet-vs-cgi.png new file mode 100644 index 0000000..abc1dcb Binary files /dev/null and b/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/3-uu-diem-servlet-vs-cgi.png differ diff --git a/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/4-vong-doi-servlet-1.png b/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/4-vong-doi-servlet-1.png new file mode 100644 index 0000000..bea58b3 Binary files /dev/null and b/Java-Servlet/Java Servlet - HttpRequest - HttpResponse - Session Tracking/4-vong-doi-servlet-1.png differ diff --git a/Java-Servlet/Java-Cookies/.gitignore b/Java-Servlet/Java-Cookies/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/Java-Servlet/Java-Cookies/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/Java-Servlet/Java-Cookies/.mvn/wrapper/maven-wrapper.jar b/Java-Servlet/Java-Cookies/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..c1dd12f Binary files /dev/null and b/Java-Servlet/Java-Cookies/.mvn/wrapper/maven-wrapper.jar differ diff --git a/Java-Servlet/Java-Cookies/.mvn/wrapper/maven-wrapper.properties b/Java-Servlet/Java-Cookies/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..b74bf7f --- /dev/null +++ b/Java-Servlet/Java-Cookies/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/Java-Servlet/Java-Cookies/mvnw b/Java-Servlet/Java-Cookies/mvnw new file mode 100644 index 0000000..841f63a --- /dev/null +++ b/Java-Servlet/Java-Cookies/mvnw @@ -0,0 +1,331 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /usr/local/etc/mavenrc ]; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$( + \unset -f command + \command -v java + )" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Java-Servlet/Java-Cookies/mvnw.cmd b/Java-Servlet/Java-Cookies/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/Java-Servlet/Java-Cookies/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Java-Servlet/Java-Cookies/pom.xml b/Java-Servlet/Java-Cookies/pom.xml new file mode 100644 index 0000000..cae7bb3 --- /dev/null +++ b/Java-Servlet/Java-Cookies/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.5 + + + com.core + Java-Cookies + 0.0.1-SNAPSHOT + Java-Cookies + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/Java-Servlet/Java-Cookies/readme.md b/Java-Servlet/Java-Cookies/readme.md new file mode 100644 index 0000000..b31a3f8 --- /dev/null +++ b/Java-Servlet/Java-Cookies/readme.md @@ -0,0 +1,6 @@ + +## How to use Cookies in Java Web Application + +## Reference Document: + +[How to use Cookies in Java Web Application](https://www.codejava.net/java-ee/servlet/how-to-use-cookies-in-java-web-application?fbclid=IwAR1FpD6YjLCcknQccRDvXzAj1XdOXnBnzth9QqiandQEyywLlz-36_Vpt6M) diff --git a/Java-Servlet/Java-Cookies/src/main/java/com/core/cookies/JavaCookiesApplication.java b/Java-Servlet/Java-Cookies/src/main/java/com/core/cookies/JavaCookiesApplication.java new file mode 100644 index 0000000..1313c05 --- /dev/null +++ b/Java-Servlet/Java-Cookies/src/main/java/com/core/cookies/JavaCookiesApplication.java @@ -0,0 +1,13 @@ +package com.core.cookies; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class JavaCookiesApplication { + + public static void main(String[] args) { + SpringApplication.run(JavaCookiesApplication.class, args); + } + +} diff --git a/Java-Servlet/Java-Cookies/src/main/java/com/core/cookies/controller/HomeController.java b/Java-Servlet/Java-Cookies/src/main/java/com/core/cookies/controller/HomeController.java new file mode 100644 index 0000000..5188f90 --- /dev/null +++ b/Java-Servlet/Java-Cookies/src/main/java/com/core/cookies/controller/HomeController.java @@ -0,0 +1,33 @@ +package com.core.cookies.controller; + +import java.io.IOException; +import java.io.PrintWriter; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +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; + +/** + * @author ManhKM on 10/24/2022 + * @project Java-Cookies + */ +@Controller +public class HomeController { + + @RequestMapping(value = "/cookie", method = RequestMethod.GET) + @ResponseBody + public void setCookie(HttpServletRequest request, HttpServletResponse response) + throws IOException { + + PrintWriter writer = response.getWriter(); + String name = "Cookie name"; + String value = "Cookie value"; + Cookie cookie = new Cookie(name, value); + response.addCookie(cookie); + + //java.lang.IllegalArgumentException: Cookie name [Cookie name] is a reserved token + } +} diff --git a/Java-Servlet/Java-Cookies/src/main/resources/application.properties b/Java-Servlet/Java-Cookies/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Java-Servlet/Java-Cookies/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/Java-Servlet/Java-Cookies/src/test/java/com/core/cookies/JavaCookiesApplicationTests.java b/Java-Servlet/Java-Cookies/src/test/java/com/core/cookies/JavaCookiesApplicationTests.java new file mode 100644 index 0000000..f2f417c --- /dev/null +++ b/Java-Servlet/Java-Cookies/src/test/java/com/core/cookies/JavaCookiesApplicationTests.java @@ -0,0 +1,13 @@ +package com.core.cookies; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class JavaCookiesApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/Java-Servlet/httpservlet-jakartar-servlet/img.png b/Java-Servlet/httpservlet-jakartar-servlet/img.png new file mode 100644 index 0000000..0042e3d Binary files /dev/null and b/Java-Servlet/httpservlet-jakartar-servlet/img.png differ diff --git a/Java-Servlet/httpservlet-jakartar-servlet/pom.xml b/Java-Servlet/httpservlet-jakartar-servlet/pom.xml new file mode 100644 index 0000000..791b892 --- /dev/null +++ b/Java-Servlet/httpservlet-jakartar-servlet/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + org.example + httpservlet-jakartar-servlet + 1.0-SNAPSHOT + + + 8 + 8 + + + + + + jakarta.servlet + jakarta.servlet-api + 4.0.4 + provided + + + + + \ No newline at end of file diff --git a/Java-Servlet/httpservlet-jakartar-servlet/readme.md b/Java-Servlet/httpservlet-jakartar-servlet/readme.md new file mode 100644 index 0000000..2138bda --- /dev/null +++ b/Java-Servlet/httpservlet-jakartar-servlet/readme.md @@ -0,0 +1,2 @@ +## How HttpServlet works? +![img.png](img.png) \ No newline at end of file diff --git a/Java-Servlet/httpservlet-jakartar-servlet/src/main/java/com/core/App.java b/Java-Servlet/httpservlet-jakartar-servlet/src/main/java/com/core/App.java new file mode 100644 index 0000000..b5c1747 --- /dev/null +++ b/Java-Servlet/httpservlet-jakartar-servlet/src/main/java/com/core/App.java @@ -0,0 +1,11 @@ +package com.core; + +/** + * @author ManhKM on 4/25/2022 + * @project httpservlet-jakartar-servlet + */ +public class App { + public static void main(String[] args) { + + } +} diff --git a/Java-Servlet/httpservlet-jakartar-servlet/src/main/java/com/core/HelloWorldServlet.java b/Java-Servlet/httpservlet-jakartar-servlet/src/main/java/com/core/HelloWorldServlet.java new file mode 100644 index 0000000..8ee0e72 --- /dev/null +++ b/Java-Servlet/httpservlet-jakartar-servlet/src/main/java/com/core/HelloWorldServlet.java @@ -0,0 +1,30 @@ +package com.core; + +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; +import java.io.PrintWriter; + +/** + * @author ManhKM on 4/25/2022 + * @project httpservlet-jakartar-servlet + */ +@WebServlet("/hello") +public class HelloWorldServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + /** + * Setting up the content type of web page: + */ + resp.setContentType("text/html"); + + PrintWriter out = resp.getWriter(); + out.println("

HelloWorld HttpServlet

"); + + } +} diff --git a/Java-Servlet/httpservlet-jakartar-servlet/src/main/resources/webapp/WEB-INF/index.jsp b/Java-Servlet/httpservlet-jakartar-servlet/src/main/resources/webapp/WEB-INF/index.jsp new file mode 100644 index 0000000..e69de29 diff --git a/Java-Servlet/httpservlet-jakartar-servlet/src/main/resources/webapp/WEB-INF/web.xml b/Java-Servlet/httpservlet-jakartar-servlet/src/main/resources/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..e69de29 diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/Java-Sockets/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version new file mode 100644 index 0000000..25cb955 --- /dev/null +++ b/Java-Sockets/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/Java-Sockets/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/Java-Sockets/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree b/Java-Sockets/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree new file mode 100644 index 0000000..acc9138 Binary files /dev/null and b/Java-Sockets/.metadata/.plugins/org.eclipse.core.resources/.root/1.tree differ diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache differ diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache differ diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache differ diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml new file mode 100644 index 0000000..a4ee3cb --- /dev/null +++ b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml new file mode 100644 index 0000000..9e390f5 --- /dev/null +++ b/Java-Sockets/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml b/Java-Sockets/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml new file mode 100644 index 0000000..5ca0b77 --- /dev/null +++ b/Java-Sockets/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml @@ -0,0 +1,3 @@ + +
+
diff --git a/Java-Sockets/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/Java-Sockets/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml new file mode 100644 index 0000000..55879bf --- /dev/null +++ b/Java-Sockets/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -0,0 +1,11 @@ + +
+
+ + +
+
+ + +
+
diff --git a/Java-Sockets/Sockets/bin/com/socket/example/MyClient.class b/Java-Sockets/Sockets/bin/com/socket/example/MyClient.class index af72f8a..e63e654 100644 Binary files a/Java-Sockets/Sockets/bin/com/socket/example/MyClient.class and b/Java-Sockets/Sockets/bin/com/socket/example/MyClient.class differ diff --git a/Java-Sockets/Sockets/bin/com/socket/example/MyServer.class b/Java-Sockets/Sockets/bin/com/socket/example/MyServer.class index 9cb4aac..4ff792f 100644 Binary files a/Java-Sockets/Sockets/bin/com/socket/example/MyServer.class and b/Java-Sockets/Sockets/bin/com/socket/example/MyServer.class differ diff --git a/Java-Sockets/Sockets/readme.md b/Java-Sockets/Sockets/readme.md index df17157..6694924 100644 --- a/Java-Sockets/Sockets/readme.md +++ b/Java-Sockets/Sockets/readme.md @@ -24,9 +24,9 @@ Phía ứng dụng chủ, khi có ứng dụng khách kết nối đến, phươ ## Tham khao: -1. [Java - Sockets] -https://viblo.asia/p/java-sockets-WAyK8x7kKxX +1. [Java - Sockets](https://viblo.asia/p/java-sockets-WAyK8x7kKxX) -2. [CƠ CHẾ HOẠT ĐỘNG CỦA REMOTE PROCEDULE CALL (RPC)] -https://letonphat.wordpress.com/2011/03/05/c%C6%A1-ch%E1%BA%BF-ho%E1%BA%A1t-d%E1%BB%99ng-c%E1%BB%A7a-remote-procedule-call-rpc/ +2. [CƠ CHẾ HOẠT ĐỘNG CỦA REMOTE PROCEDULE CALL (RPC)](https://letonphat.wordpress.com/2011/03/05/c%C6%A1-ch%E1%BA%BF-ho%E1%BA%A1t-d%E1%BB%99ng-c%E1%BB%A7a-remote-procedule-call-rpc/) + +3. [Socket là gì? Websocket là gì?](https://topdev.vn/blog/socket-la-gi-websocket-la-gi/) diff --git a/Java-Sockets/Sockets/src/com/socket/example/MyClient.java b/Java-Sockets/Sockets/src/com/socket/example/MyClient.java index c3c59a4..223851d 100644 --- a/Java-Sockets/Sockets/src/com/socket/example/MyClient.java +++ b/Java-Sockets/Sockets/src/com/socket/example/MyClient.java @@ -6,6 +6,10 @@ import java.io.InputStreamReader; import java.net.Socket; +/** + * Thông qua host: localhost + * Port: 3333 chúng sẽ kết nối đến Socket + */ public class MyClient { public static void main(String[] args) throws Exception { diff --git a/Java-Sockets/Sockets/src/com/socket/example/MyServer.java b/Java-Sockets/Sockets/src/com/socket/example/MyServer.java index 98f2881..1019563 100644 --- a/Java-Sockets/Sockets/src/com/socket/example/MyServer.java +++ b/Java-Sockets/Sockets/src/com/socket/example/MyServer.java @@ -7,6 +7,9 @@ import java.net.ServerSocket; import java.net.Socket; +/** + * Chấp nhận các kết nối Socket đến port 3333 của SocketServer: + */ public class MyServer { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(3333); diff --git a/Java-Sockets/Sockets/src/com/tcp/example/TCPClient.java b/Java-Sockets/Sockets/src/com/tcp/example/TCPClient.java new file mode 100644 index 0000000..8931c98 --- /dev/null +++ b/Java-Sockets/Sockets/src/com/tcp/example/TCPClient.java @@ -0,0 +1,49 @@ +package com.tcp.example; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.Socket; +import java.util.Scanner; + +/** + * @author ManhKM on 9/15/2022 + * @project Sockets + * ------ + * Client kết nối đến Server thông qua host và port mà được Server khởi tạo. + */ +public class TCPClient { + + public static void main(String[] args) { + try { + + Socket socket = new Socket("127.0.0.1", 3004); + + /** + * Tạo ra các luồng đọc và ghi dữ liệu + * socket.getInputStream --> đọc dữ liệu đầu vào + * socket.getOutputStream --> đẩy dữ liệu đầu ra + */ + BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); + PrintWriter printWriter = new PrintWriter(socket.getOutputStream()); + + Scanner scanner = new Scanner(System.in); + System.out.println("Enter a line: "); + String st = scanner.nextLine(); + + System.out.println("Sent: " + st); + printWriter.println(st); + printWriter.flush(); + + String line = reader.readLine(); + System.out.println("Received: " + line); + + reader.close(); + printWriter.close(); + socket.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Sockets/Sockets/src/com/tcp/example/TCPServer.java b/Java-Sockets/Sockets/src/com/tcp/example/TCPServer.java new file mode 100644 index 0000000..f807148 --- /dev/null +++ b/Java-Sockets/Sockets/src/com/tcp/example/TCPServer.java @@ -0,0 +1,53 @@ +package com.tcp.example; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; + +/** + * @author ManhKM on 9/15/2022 + * @project Sockets + * ----- + * Bài toán một Client có thể kết nối đến nhiều Server + * Server tiếp nhận request từ Client gửi lên và trả lại dữ liệu sau khi tính toán thứ gì đó. + * Bài này sẽ biến đổi chuỗi kí tự thường thành chuỗi ký tự hoa + */ +public class TCPServer { + + public static void main(String[] args) { + try { + ServerSocket serverSocket = new ServerSocket(3004); + System.out.println("Listening ..."); + while (true){ + /** + * Lắng nghe các yêu cầu kết nối từ phía client. + * Nếu có yêu cầu đến thì tạo ra một đối tượng Socket + */ + Socket socket = serverSocket.accept(); + + /** + * Tạo ra các luồng đọc và ghi dữ liệu + * socket.getInputStream --> đọc dữ liệu đầu vào + * socket.getOutputStream --> đẩy dữ liệu đầu ra + */ + BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); + PrintWriter printWriter = new PrintWriter(socket.getOutputStream()); + + String line = reader.readLine(); + System.out.println("Received: " + line); + System.out.println("Sent: " + line.toUpperCase()); + + printWriter.println("SERVER-SOCKET-RESPONSE: "+line.toUpperCase()); + printWriter.flush(); // Đẩy ra ngoài bộ đệm + + reader.close(); + printWriter.close(); + socket.close(); + } + } catch (Exception e){ + e.printStackTrace(); + } + } +} diff --git a/Java-Stack-Heap/task-heap/readme.md b/Java-Stack-Heap/task-heap/readme.md new file mode 100644 index 0000000..39de895 --- /dev/null +++ b/Java-Stack-Heap/task-heap/readme.md @@ -0,0 +1,7 @@ +# Java Task and Heap Memory + +## Introduction + + +## Reference Document + diff --git a/Java-Stack-Heap/task-heap/src/com/jindo/core/TaskHeapDemo.java b/Java-Stack-Heap/task-heap/src/com/jindo/core/TaskHeapDemo.java new file mode 100644 index 0000000..362ae9f --- /dev/null +++ b/Java-Stack-Heap/task-heap/src/com/jindo/core/TaskHeapDemo.java @@ -0,0 +1,21 @@ +package com.jindo.core; + +import com.jindo.core.entity.Student; + +/** + * @author ManhKM on 5/9/2022 + * @project task-heap + */ +public class TaskHeapDemo { + + public static void updateAge(int age){ + age += 1; + } + + public static void main(String[] args) { + Student student = new Student("Jim", 10); + System.out.println(student); + updateAge(student.getAge()); + System.out.println(student); + } +} diff --git a/Java-Stack-Heap/task-heap/src/com/jindo/core/entity/Student.java b/Java-Stack-Heap/task-heap/src/com/jindo/core/entity/Student.java new file mode 100644 index 0000000..4545ed1 --- /dev/null +++ b/Java-Stack-Heap/task-heap/src/com/jindo/core/entity/Student.java @@ -0,0 +1,39 @@ +package com.jindo.core.entity; + +/** + * @author ManhKM on 5/9/2022 + * @project task-heap + */ +public class Student { + private String name; + private int age; + + public Student(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; + } + + @Override + public String toString() { + return "Student{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; + } +} diff --git a/Java-Stream-API/java-http-request/http-request-demo/out/production/http-request-demo/com/core/demo/CreateRequest.class b/Java-Stream-API/java-http-request/http-request-demo/out/production/http-request-demo/com/core/demo/CreateRequest.class new file mode 100644 index 0000000..680fe22 Binary files /dev/null and b/Java-Stream-API/java-http-request/http-request-demo/out/production/http-request-demo/com/core/demo/CreateRequest.class differ diff --git a/Java-Stream-API/java-http-request/http-request-demo/readme.md b/Java-Stream-API/java-http-request/http-request-demo/readme.md new file mode 100644 index 0000000..074c8c9 --- /dev/null +++ b/Java-Stream-API/java-http-request/http-request-demo/readme.md @@ -0,0 +1,35 @@ +## Do a Simple HTTP Request in Java + +## 1. Overview + + +## 2. HttpUrlConnection + + +## 3. Create a Request + + +## 4. Adding Request Parameter + + +## 5. Setting Request Headers + + +## 6. Configuring Timeout + + +## 7. Handling Cookies + + +## 8. Handling Redirects + + +## 9. Reading the Response + + +## 10. Reading the Response on Failed Request + + +## Reference document + https://www.baeldung.com/java-http-request + diff --git a/Java-Stream-API/java-http-request/http-request-demo/src/com/core/demo/CreateRequest.java b/Java-Stream-API/java-http-request/http-request-demo/src/com/core/demo/CreateRequest.java new file mode 100644 index 0000000..f07de8c --- /dev/null +++ b/Java-Stream-API/java-http-request/http-request-demo/src/com/core/demo/CreateRequest.java @@ -0,0 +1,34 @@ +package com.core.demo; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; + +/** + * @author ManhKM on 4/28/2022 + * @project http-request-demo + */ +public class CreateRequest { + public static void main(String[] args) { + doRequest(); + } + + private static void doRequest() { + URL url = null; + try { + url = new URL("https://neo.vn/"); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + System.out.println("-----> " + con); + + /** + * Coding something here! + */ + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git "a/Java-Stream/java-stream/docs/Bi\341\273\203u th\341\273\251c Lambda trong Java 8 \342\200\223 Lambda Expressions.docx" "b/Java-Stream/java-stream/docs/Bi\341\273\203u th\341\273\251c Lambda trong Java 8 \342\200\223 Lambda Expressions.docx" new file mode 100644 index 0000000..d7ab542 Binary files /dev/null and "b/Java-Stream/java-stream/docs/Bi\341\273\203u th\341\273\251c Lambda trong Java 8 \342\200\223 Lambda Expressions.docx" differ diff --git a/Java-Stream/java-stream/docs/Functional Interface trong Java 8.docx b/Java-Stream/java-stream/docs/Functional Interface trong Java 8.docx new file mode 100644 index 0000000..5feaaf4 Binary files /dev/null and b/Java-Stream/java-stream/docs/Functional Interface trong Java 8.docx differ diff --git "a/Java-Stream/java-stream/docs/Gi\341\273\233i thi\341\273\207u v\341\273\201 Stream API trong Java 8.docx" "b/Java-Stream/java-stream/docs/Gi\341\273\233i thi\341\273\207u v\341\273\201 Stream API trong Java 8.docx" new file mode 100644 index 0000000..16ca73a Binary files /dev/null and "b/Java-Stream/java-stream/docs/Gi\341\273\233i thi\341\273\207u v\341\273\201 Stream API trong Java 8.docx" differ diff --git a/Java-Stream/java-stream/img/java-streams.png b/Java-Stream/java-stream/img/java-streams.png new file mode 100644 index 0000000..e235a61 Binary files /dev/null and b/Java-Stream/java-stream/img/java-streams.png differ diff --git a/Java-Stream/java-stream/pom.xml b/Java-Stream/java-stream/pom.xml new file mode 100644 index 0000000..cdc3c77 --- /dev/null +++ b/Java-Stream/java-stream/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + com.core + java-stream + 1.0-SNAPSHOT + + + 8 + 8 + + + \ No newline at end of file diff --git a/Java-Stream/java-stream/readme.md b/Java-Stream/java-stream/readme.md new file mode 100644 index 0000000..a816cc8 --- /dev/null +++ b/Java-Stream/java-stream/readme.md @@ -0,0 +1,28 @@ +# Java Stream + +Stream là một đối tượng mới của Java được giới thiệu từ phiên bản Java 8, giúp cho việc thao tác +trên collection và array trở nên dễ dàng và tối ưu hơn. + +![JavaStream](img/java-streams.png) + +Để giúp các bạn có những kiến thức vững chắc về đối tượng Stream trong Java, Hướng Dẫn Java đã có +những bài viết về nó. + +Các bạn có thể bắt đầu với bài +viết [Giới thiệu về Stream trong Java](https://huongdanjava.com/vi/gioi-thieu-ve-stream-trong-java.html) +, rồi sau đó có thể tìm hiểu sâu về đối tượng Stream này. + ++ [Group by các phần tử trong List sử dụng Stream và Collectors trong Java](https://huongdanjava.com/vi/group-by-su-dung-stream-va-collectors-trong-java.html) + +Sử dụng Stream và Collectors object từ Java 8, chúng ta có thể group by các phần tử trong List giống +như trong database. + ++ [Sử dụng phương thức flatMap() của đối tượng Stream trong Java](https://huongdanjava.com/vi/su-dung-phuong-thuc-flatmap-cua-doi-tuong-stream-trong-java.html) + +Trong bài viết này, mình sẽ hướng dẫn các bạn làm thế nào để sử dụng phương thức flatMap() của đối +tượng Stream trong Java. + +## Reference document: + ++ [Giới thiệu về Stream API trong Java 8](https://gpcoder.com/3923-gioi-thieu-ve-stream-api-trong-java-8/) + diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/convert/ConvertFromStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/convert/ConvertFromStreamExample.java new file mode 100644 index 0000000..d767298 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/convert/ConvertFromStreamExample.java @@ -0,0 +1,33 @@ +package com.core.gpcoder.stream.convert; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class ConvertFromStreamExample { + + public static void getCollectionUsingStreamCollection() { + Stream stream = Stream.of("A", "B", "C"); + List languages = stream.collect(Collectors.toList()); + System.out.println(languages); + } + + public static void main(String[] args) { + System.out.println("Get Collection using Stream Collection: "); + getCollectionUsingStreamCollection(); + + System.out.println("Get Array Using Stream to Array: "); + getArrayUsingStreamToArray(); + } + + public static void getArrayUsingStreamToArray() { + Stream stream = Stream.of("A", "B", "C"); + String[] languages = stream.toArray(String[]::new); + System.out.println(Arrays.toString(languages)); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/convert/ConvertToStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/convert/ConvertToStreamExample.java new file mode 100644 index 0000000..146729f --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/convert/ConvertToStreamExample.java @@ -0,0 +1,59 @@ +package com.core.gpcoder.stream.convert; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Stream; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class ConvertToStreamExample { + + public static void streamFromArray() { + String[] languages = {"Java", "C#", "C++", "Angular", "AngularJS"}; + + Stream testStream1 = Arrays.stream(languages); + testStream1.forEach(x -> System.out.println(x)); + + Stream testStream2 = Stream.of(languages); + testStream2.forEach(x -> System.out.println(x)); + } + + public static void streamFromCollection() { + List items = new ArrayList<>(); + items.add("Java"); + items.add("C#"); + items.add("C++"); + items.add("PHP"); + items.add("Javascript"); + + items.stream().forEach(item -> System.out.println(item)); + } + + public static void streamUsingGenerate() { + Stream stream = Stream.generate(() -> "gpcoder").limit(3); + String[] testStrArr = stream.toArray(String[]::new); + System.out.println(Arrays.toString(testStrArr)); + } + + public static void streamUsingIterate() { + Stream iterateNumbers = Stream.iterate(1L, n -> n + 1).limit(5); + iterateNumbers.forEach(System.out::print); + } + + public static void streamUsingRegex() { + String str = "Welcome,to,gpcoder"; + Pattern.compile(",").splitAsStream(str).forEach(System.out::print); + } + + public static void main(String[] args) { + +// streamFromArray(); +// streamFromCollection(); + streamUsingGenerate(); + } + +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/FilterStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/FilterStreamExample.java new file mode 100644 index 0000000..82cbaf5 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/FilterStreamExample.java @@ -0,0 +1,18 @@ +package com.core.gpcoder.stream.intermediate; + +import java.util.stream.Stream; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class FilterStreamExample { + + public static void main(String[] args) { + + Stream.iterate(1, count -> count + 1) + .filter(number -> number % 3 == 0) + .limit(10) + .forEach(System.out::println); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/LimitStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/LimitStreamExample.java new file mode 100644 index 0000000..86b6f1c --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/LimitStreamExample.java @@ -0,0 +1,19 @@ +package com.core.gpcoder.stream.intermediate; + +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class LimitStreamExample { + + public static void main(String[] args) { + List data = Arrays.asList("Java", "C#", "C++", "PHP", "Javascript"); + data.stream() + .skip(1) + .limit(3) + .forEach(System.out::print); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/MapStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/MapStreamExample.java new file mode 100644 index 0000000..f34e280 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/MapStreamExample.java @@ -0,0 +1,19 @@ +package com.core.gpcoder.stream.intermediate; + +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class MapStreamExample { + + public static void main(String[] args) { + List data = Arrays.asList("Java", "C#", "C++", "PHP", "Javascript"); + + data.stream() + .map(String::toUpperCase) + .forEach(System.out::println); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/SortedStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/SortedStreamExample.java new file mode 100644 index 0000000..415be66 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intermediate/SortedStreamExample.java @@ -0,0 +1,23 @@ +package com.core.gpcoder.stream.intermediate; + +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class SortedStreamExample { + + public static void main(String[] args) { + List data = Arrays.asList("Java", "C#", "C++", "PHP", "Javascript"); + + data.stream() + .sorted() + .forEach(System.out::println); + System.out.println("-------------"); + data.stream() + .sorted((s1, s2) -> s1.length() - s2.length()) + .forEach(System.out::println); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intro/MainStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intro/MainStreamExample.java new file mode 100644 index 0000000..c110bf2 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intro/MainStreamExample.java @@ -0,0 +1,15 @@ +package com.core.gpcoder.stream.intro; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class MainStreamExample { + + public static void main(String[] args) { + StreamExample streamExample = new StreamExample(); + streamExample.withoutStream(); + System.out.println("\n"); + streamExample.withStream(); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intro/PrimitiveStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intro/PrimitiveStreamExample.java new file mode 100644 index 0000000..373898c --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intro/PrimitiveStreamExample.java @@ -0,0 +1,25 @@ +package com.core.gpcoder.stream.intro; + +import java.util.stream.DoubleStream; +import java.util.stream.IntStream; +import java.util.stream.LongStream; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class PrimitiveStreamExample { + + public static void main(String[] args) { + IntStream.range(1, 4).forEach(System.out::print); + + IntStream.of(1, 2, 3).forEach(System.out::print); + + DoubleStream.of(1, 2, 3, 4).forEach(System.out::print); + + LongStream.range(1, 4).forEach(System.out::print); + + LongStream.of(1, 2, 3).forEach(System.out::print); + + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intro/StreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intro/StreamExample.java new file mode 100644 index 0000000..bf8c9bf --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/intro/StreamExample.java @@ -0,0 +1,32 @@ +package com.core.gpcoder.stream.intro; + +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream ----- stream(): trả về một stream được thực hiện một cách tuần tự + * parallelStream(): Trả về một Stream song song, các xử lý sau đó sẽ thực hiện song song + */ +public class StreamExample { + + List numbers = Arrays.asList(7, 6, 5, 4, 2, 4, 6, 7); + + public void withoutStream() { + long count = 0; + for (Integer item : numbers) { + if (item % 2 == 0) { + count++; + } + } + System.out.printf("[withoutStream] There are %d element that are even", count); + } + + public void withStream() { + long count = numbers.stream().filter( + num -> num % 2 == 0 + ).count(); + System.out.printf("[withStream] There are %d element that are even", count); + } + +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/io/ReadFileWithStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/io/ReadFileWithStreamExample.java new file mode 100644 index 0000000..4a6056f --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/io/ReadFileWithStreamExample.java @@ -0,0 +1,27 @@ +package com.core.gpcoder.stream.io; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.stream.Stream; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream ----- Đang chưa đọc được đường dẫn của file chính xác + * java.nio.file.NoSuchFileException: lines.txt + */ +public class ReadFileWithStreamExample { + + public static void main(String[] args) { + String fileName = "lines.txt"; + + try (Stream stream = Files.lines(Paths.get(fileName))) { + + stream.onClose(() -> System.out.println("!Done")) + .filter(s -> s.startsWith("line3")) + .forEach(System.out::println); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/io/lines.txt b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/io/lines.txt new file mode 100644 index 0000000..ee240ad --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/io/lines.txt @@ -0,0 +1,6 @@ +line1 +line2 +line3 +line3.1 +line3.2 +line4 diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/parallel/ParallelStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/parallel/ParallelStreamExample.java new file mode 100644 index 0000000..41aa815 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/parallel/ParallelStreamExample.java @@ -0,0 +1,34 @@ +package com.core.gpcoder.stream.parallel; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class ParallelStreamExample { + + public static void main(String[] args) { + List values = createDummyData(); + + long startTime = System.nanoTime(); + long count = values.parallelStream().sorted().count(); + System.out.println("Counter data of stream: " + count); + + System.out.println(String.format("parallel sort took: %d ms", + TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime))); + } + + private static List createDummyData() { + int max = 1000_000; + List values = new ArrayList<>(max); + for (int i = 0; i < max; i++) { + UUID uuid = UUID.randomUUID(); + values.add(uuid.toString()); + } + return values; + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/reuse/ErrorStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/reuse/ErrorStreamExample.java new file mode 100644 index 0000000..1a83122 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/reuse/ErrorStreamExample.java @@ -0,0 +1,20 @@ +package com.core.gpcoder.stream.reuse; + +import java.util.stream.Stream; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class ErrorStreamExample { + + public static void main(String[] args) { + Stream stream = Stream.of("Java", "C#", "C++", "PHP", "Javascript") + .filter(s -> s.startsWith("J")); + + stream.anyMatch(s -> true); + stream.noneMatch( + s -> true); //Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229) + + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/terminal/CollectStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/terminal/CollectStreamExample.java new file mode 100644 index 0000000..d554eb5 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/terminal/CollectStreamExample.java @@ -0,0 +1,18 @@ +package com.core.gpcoder.stream.terminal; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class CollectStreamExample { + + public static void main(String[] args) { + Stream stream = Stream.of("Java", "C#", "C++", "PHP", "Javascript"); + List languages = stream.collect(Collectors.toList()); + System.out.println(languages); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/terminal/ForEachStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/terminal/ForEachStreamExample.java new file mode 100644 index 0000000..350eda7 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/terminal/ForEachStreamExample.java @@ -0,0 +1,18 @@ +package com.core.gpcoder.stream.terminal; + +import java.util.stream.Stream; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class ForEachStreamExample { + + public static void main(String[] args) { + Stream.iterate(1, count -> count + 1) + .filter(number -> number % 3 == 0) + .limit(6) + .forEach(System.out::println); + } + +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/terminal/MatchStreamExample.java b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/terminal/MatchStreamExample.java new file mode 100644 index 0000000..9fc3f86 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/gpcoder/stream/terminal/MatchStreamExample.java @@ -0,0 +1,19 @@ +package com.core.gpcoder.stream.terminal; + +import java.util.Arrays; +import java.util.List; + +/** + * @author ManhKM on 11/1/2022 + * @project java-stream + */ +public class MatchStreamExample { + + public static void main(String[] args) { + List data = Arrays + .asList("Java", "C#", "C++", "PHP", "Javascript"); + boolean result = data.stream() + .anyMatch((s) -> s.equalsIgnoreCase("Java")); + System.out.println(result); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/groupby/Example.java b/Java-Stream/java-stream/src/main/java/com/core/groupby/Example.java new file mode 100644 index 0000000..c06d287 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/groupby/Example.java @@ -0,0 +1,28 @@ +package com.core.groupby; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author ManhKM on 7/22/2022 + * @project java-stream + */ +public class Example { + public static void main(String[] args) { + List names = Arrays.asList( + new Student("ManhKM", "VN"), + new Student("Trang", "VN"), + new Student("Hieu", "US"), + new Student("Thang", "VN"), + new Student("Luong", "VN") + ); + + Map> result = names.stream() + .collect(Collectors.groupingBy(Student::getCountry)); + + result.entrySet().stream() + .forEach(r -> System.out.println("- " + r.getKey() + "\n" + r.getValue())); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/groupby/Student.java b/Java-Stream/java-stream/src/main/java/com/core/groupby/Student.java new file mode 100644 index 0000000..6b2da2c --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/groupby/Student.java @@ -0,0 +1,58 @@ +package com.core.groupby; + +import java.util.Objects; + +/** + * @author ManhKM on 7/22/2022 + * @project java-stream + */ +public class Student { + private String name; + private String country; + + public Student(String name, String country) { + this.name = name; + this.country = country; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Student)) return false; + Student student = (Student) o; + return Objects.equals(getName(), student.getName()) && Objects.equals(getCountry(), student.getCountry()); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((country == null) ? 0 : country.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public String toString() { + return "Student{" + + "name='" + name + '\'' + + ", country='" + country + '\'' + + '}'; + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/stream/StreamDemo.java b/Java-Stream/java-stream/src/main/java/com/core/stream/StreamDemo.java new file mode 100644 index 0000000..af11ceb --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/stream/StreamDemo.java @@ -0,0 +1,23 @@ +package com.core.stream; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; + +/** + * @author ManhKM on 7/22/2022 + * @project java-stream + * ----- + * Java|Stream|filter + */ +public class StreamDemo { + public static void main(String[] args) { + List names = Arrays.asList("Khánh", "ManhKM", "Dung", "Mai"); + + names.stream().filter(s -> s.startsWith("M")) + .forEach(System.out::println); + + Stream stream = names.stream(); + stream.filter(s -> s.startsWith("K")).distinct().forEach(System.out::println); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/viblo/StreamListDemo.java b/Java-Stream/java-stream/src/main/java/com/core/viblo/StreamListDemo.java new file mode 100644 index 0000000..adf5f4c --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/viblo/StreamListDemo.java @@ -0,0 +1,31 @@ +package com.core.viblo; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +/** + * @author ManhKM on 11/26/2022 + * @project java-stream + *

+ * Tài liệu tham khảo: Streams in Java 8: https://viblo.asia/p/streams-in-java-8-dWrvwd5gRw38 + */ +public class StreamListDemo { + + public static void main(String[] args) { + + List items = new ArrayList<>(); + + items.add("one"); + items.add("two"); + items.add("three"); + items.add("four"); + items.add("five"); + + Stream stream = items.stream(); // Convert từ List thành Stream + + System.out.println("Danh sách phần từ trong Stream: "); + stream.forEach(s -> System.out.println(s)); + } + +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/viblo/StreamObjectDemo.java b/Java-Stream/java-stream/src/main/java/com/core/viblo/StreamObjectDemo.java new file mode 100644 index 0000000..4b90b5c --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/viblo/StreamObjectDemo.java @@ -0,0 +1,29 @@ +package com.core.viblo; + +import com.core.viblo.entity.Employee; +import java.util.stream.Stream; + +/** + * @author ManhKM on 11/26/2022 + * @project java-stream + */ +public class StreamObjectDemo { + + public static void main(String[] args) { + + Stream stream = Stream.of( + new Employee(1L, "manhkm", "thai-binh", 19), + new Employee(1L, "manhkm", "thai-binh", 19), + new Employee(1L, "manhkm", "thai-binh", 19), + new Employee(1L, "manhkm", "thai-binh", 19), + new Employee(1L, "manhkm", "thai-binh", 19), + new Employee(1L, "manhkm", "thai-binh", 19), + new Employee(1L, "manhkm", "thai-binh", 19), + new Employee(1L, "manhkm", "thai-binh", 19), + new Employee(1L, "manhkm", "thai-binh", 19), + new Employee(1L, "manhkm", "thai-binh", 19)); + + // Print the stream: + stream.forEach(s -> System.out.println(s.toString())); + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/viblo/entity/Employee.java b/Java-Stream/java-stream/src/main/java/com/core/viblo/entity/Employee.java new file mode 100644 index 0000000..2543bf4 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/viblo/entity/Employee.java @@ -0,0 +1,65 @@ +package com.core.viblo.entity; + +/** + * @author ManhKM on 11/26/2022 + * @project java-stream + */ +public class Employee { + + private Long id; + private String name; + private String address; + private int age; + + public Employee() { + } + + public Employee(Long id, String name, String address, int age) { + this.id = id; + this.name = name; + this.address = address; + this.age = age; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public String toString() { + return "Employee{" + + "id=" + id + + ", name='" + name + '\'' + + ", address='" + address + '\'' + + ", age=" + age + + '}'; + } +} diff --git a/Java-Stream/java-stream/src/main/java/com/core/viblo/note.txt b/Java-Stream/java-stream/src/main/java/com/core/viblo/note.txt new file mode 100644 index 0000000..38aba24 --- /dev/null +++ b/Java-Stream/java-stream/src/main/java/com/core/viblo/note.txt @@ -0,0 +1,38 @@ +Mục đích sử dụng đối với Collection + +Bên cạnh việc sử dụng vòng lặp for, iterator + +Có 2 chế độ: Tuần tự (Sequential) và song song (Parallel) + +Nội dung: + +Stream in Java 8 + +1. Sequaltial Stream + + 1.1. Tạo Stream từ List như thế nào? + + 1.2. Tạo Stream từ một ArrayList như thế nào? + +2. Các phase xử lý của Stream + + 2.1. Phương thức cấu hình của Stream + + Stream.filter() + + Stream.map() + + 2.2. Phương thức xử lý của Stream + +Stream.collect() + +Stream.count() + +Stream.reduce() + +Parallel Stream + +Kết luận: + +Tài liệu tham khảo + diff --git a/Java-String/src/com/format/StringFormat.java b/Java-String/src/com/format/StringFormat.java new file mode 100644 index 0000000..daa8766 --- /dev/null +++ b/Java-String/src/com/format/StringFormat.java @@ -0,0 +1,7 @@ +package com.format;/** + * Project: Java-String (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/14/2023-3:26 PM + * Note: + */public class StringFormat { +} diff --git a/Java-Task/java-task/pom.xml b/Java-Task/java-task/pom.xml new file mode 100644 index 0000000..b970f3e --- /dev/null +++ b/Java-Task/java-task/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + com.core + java-task + 1.0-SNAPSHOT + + + 8 + 8 + 2.0.0-alpha1 + + + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + + + \ No newline at end of file diff --git a/Java-Task/java-task/src/main/java/com/task/AbsTask.java b/Java-Task/java-task/src/main/java/com/task/AbsTask.java new file mode 100644 index 0000000..9b2eafd --- /dev/null +++ b/Java-Task/java-task/src/main/java/com/task/AbsTask.java @@ -0,0 +1,33 @@ +package com.task; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 8/10/2022 + * @project java-task + */ +public abstract class AbsTask implements Task{ + + private Date d; + + public AbsTask(){ + this.d = null; + } + + @Override + public long getDelay() { + if(this.d == null){ + this.d = this.getStartDate(); + } + if(this.d != null){ + return this.getStartDate().getTime() - System.currentTimeMillis(); + } + return 0L; + } + + @Override + public TimeUnit getTimeUnit() { + return TimeUnit.MILLISECONDS; + } +} diff --git a/Java-Task/java-task/src/main/java/com/task/Task.java b/Java-Task/java-task/src/main/java/com/task/Task.java new file mode 100644 index 0000000..cacaaa4 --- /dev/null +++ b/Java-Task/java-task/src/main/java/com/task/Task.java @@ -0,0 +1,18 @@ +package com.task; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +/** + * @author ManhKM on 8/10/2022 + * @project java-task + */ +public interface Task extends Runnable{ + long getDelay(); + + TimeUnit getTimeUnit(); + + Date getStartDate(); + + void afterExpire(); +} diff --git a/Java-Task/java-task/src/main/java/com/task/TaskExpireMng.java b/Java-Task/java-task/src/main/java/com/task/TaskExpireMng.java new file mode 100644 index 0000000..cbda949 --- /dev/null +++ b/Java-Task/java-task/src/main/java/com/task/TaskExpireMng.java @@ -0,0 +1,80 @@ +package com.task; + +import org.slf4j.*; +import java.util.concurrent.*; +import java.util.*; + +/** + * @author ManhKM on 8/10/2022 + * @project java-task + */ +public class TaskExpireMng { + + private final Logger logger; + private List listTask; + private Object lock; + private long delay; + private Thread thread; + private long expireTime; + private ScheduledThreadPoolExecutor scheduledThreadPool; + + public TaskExpireMng(final long timeKeepAlive, final TimeUnit unit, final ScheduledThreadPoolExecutor scheduledThreadPool) { + this.logger = LoggerFactory.getLogger((Class)this.getClass()); + this.listTask = null; + this.lock = new Object(); + this.delay = 1000L; + this.logger.debug("Init check task expire"); + this.listTask = new ArrayList(); + final TimeUnit time = TimeUnit.MILLISECONDS; + this.expireTime = time.convert(timeKeepAlive, unit); + this.scheduledThreadPool = scheduledThreadPool; + this.init(); + } + + private void init() { + (this.thread = new Thread(new MonitoringTask())).start(); + } + + public void addTaskMonitor(final ScheduledFuture t, final Task task) { + this.addTaskMonitor(new TaskInfo(this.expireTime + System.currentTimeMillis(), t, task)); + } + + public void addTaskMonitor(final TaskInfo taskInfo) { + this.listTask.add(taskInfo); + } + + private void removeTaskExpire(final List listId) { + synchronized (this.lock) { + for (final TaskInfo task : listId) { + this.listTask.remove(task); + } + } + } + + private class MonitoringTask implements Runnable + { + @Override + public void run() { + while (!TaskExpireMng.this.scheduledThreadPool.isTerminated()) { + final long currentTime = System.currentTimeMillis(); + final List listTaskRemove = new ArrayList(); + for (int i = 0; i < TaskExpireMng.this.listTask.size(); ++i) { + final TaskInfo taskInfo = TaskExpireMng.this.listTask.get(i); + if (taskInfo.getExpireTime() < currentTime) { + listTaskRemove.add(taskInfo); + if (!taskInfo.getT().isDone()) { + taskInfo.getT().cancel(false); + taskInfo.getTask().afterExpire(); + } + } + } + TaskExpireMng.this.removeTaskExpire(listTaskRemove); + try { + Thread.sleep(TaskExpireMng.this.delay); + } + catch (InterruptedException ex) {} + } + } + } + +} diff --git a/Java-Task/java-task/src/main/java/com/task/TaskInfo.java b/Java-Task/java-task/src/main/java/com/task/TaskInfo.java new file mode 100644 index 0000000..b0f1eea --- /dev/null +++ b/Java-Task/java-task/src/main/java/com/task/TaskInfo.java @@ -0,0 +1,44 @@ +package com.task; + +import java.util.concurrent.ScheduledFuture; + +/** + * @author ManhKM on 8/10/2022 + * @project java-task + */ +public class TaskInfo { + + private long expireTime; + private ScheduledFuture t; + private Task task; + + public TaskInfo(long expireTime, ScheduledFuture t, Task task) { + this.expireTime = expireTime; + this.t = t; + this.task = task; + } + + public long getExpireTime() { + return expireTime; + } + + public void setExpireTime(long expireTime) { + this.expireTime = expireTime; + } + + public ScheduledFuture getT() { + return t; + } + + public void setT(ScheduledFuture t) { + this.t = t; + } + + public Task getTask() { + return task; + } + + public void setTask(Task task) { + this.task = task; + } +} diff --git a/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/Main.class b/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/Main.class new file mode 100644 index 0000000..1460a72 Binary files /dev/null and b/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/Main.class differ diff --git a/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/entity/TamGiac.class b/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/entity/TamGiac.class new file mode 100644 index 0000000..b6e00f6 Binary files /dev/null and b/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/entity/TamGiac.class differ diff --git a/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/services/ILogic.class b/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/services/ILogic.class new file mode 100644 index 0000000..8cf097e Binary files /dev/null and b/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/services/ILogic.class differ diff --git a/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/services/impl/LogicImpl.class b/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/services/impl/LogicImpl.class new file mode 100644 index 0000000..2363455 Binary files /dev/null and b/Java-Test/Java-JUnit/out/production/Java-JUnit/com/core/test/services/impl/LogicImpl.class differ diff --git a/Java-Test/Java-JUnit/src/com/core/java/Main.java b/Java-Test/Java-JUnit/src/com/core/java/Main.java new file mode 100644 index 0000000..482784f --- /dev/null +++ b/Java-Test/Java-JUnit/src/com/core/java/Main.java @@ -0,0 +1,23 @@ +package com.core.java; + +import com.core.java.entity.TamGiac; +import com.core.java.services.ILogic; +import com.core.java.services.impl.LogicImpl; + +/** + * @author ManhKM on 4/29/2022 + * @project Java-JUnit + */ +public class Main { + public static void main(String[] args) { + System.out.println("Kiểm tra tính đúng đắn của tam giác: "); + ILogic business = new LogicImpl(); + TamGiac tamGiac = new TamGiac(9,5,7); + /** + * Tính chu vi tam giác + * Tính diện tích tam giác + */ + System.out.println("Chu vi tam giác: " + business.chuvi(tamGiac)); + System.out.println("Diện tích tam giác: " + business.dientich(tamGiac)); + } +} diff --git a/Java-Test/Java-JUnit/src/com/core/java/entity/TamGiac.java b/Java-Test/Java-JUnit/src/com/core/java/entity/TamGiac.java new file mode 100644 index 0000000..b4608cb --- /dev/null +++ b/Java-Test/Java-JUnit/src/com/core/java/entity/TamGiac.java @@ -0,0 +1,53 @@ +package com.core.java.entity; + +/** + * @author ManhKM on 4/29/2022 + * @project Java-JUnit + */ +public class TamGiac { + private int canh1; + private int canh2; + private int canh3; + + public TamGiac() { + } + + public TamGiac(int canh1, int canh2, int canh3){ + this.canh1 = canh1; + this.canh2 = canh2; + this.canh3 = canh3; + } + + public int getCanh1() { + return canh1; + } + + public void setCanh1(int canh1) { + this.canh1 = canh1; + } + + public int getCanh2() { + return canh2; + } + + public void setCanh2(int canh2) { + this.canh2 = canh2; + } + + public int getCanh3() { + return canh3; + } + + public void setCanh3(int canh3) { + this.canh3 = canh3; + } + + @Override + public String toString() { + return "TamGiac{" + + "canh1=" + canh1 + + ", canh2=" + canh2 + + ", canh3=" + canh3 + + '}'; + } +} diff --git a/Java-Test/Java-JUnit/src/com/core/java/services/ILogic.java b/Java-Test/Java-JUnit/src/com/core/java/services/ILogic.java new file mode 100644 index 0000000..d1677fa --- /dev/null +++ b/Java-Test/Java-JUnit/src/com/core/java/services/ILogic.java @@ -0,0 +1,13 @@ +package com.core.java.services; + +import com.core.java.entity.TamGiac; + +/** + * @author ManhKM on 4/29/2022 + * @project Java-JUnit + */ +public interface ILogic { + boolean check(TamGiac tamGiac); + int chuvi(TamGiac tamGiac); + float dientich(TamGiac tamGiac); +} diff --git a/Java-Test/Java-JUnit/src/com/core/java/services/impl/LogicImpl.java b/Java-Test/Java-JUnit/src/com/core/java/services/impl/LogicImpl.java new file mode 100644 index 0000000..2eac83b --- /dev/null +++ b/Java-Test/Java-JUnit/src/com/core/java/services/impl/LogicImpl.java @@ -0,0 +1,54 @@ +package com.core.java.services.impl; + +import com.core.java.entity.TamGiac; +import com.core.java.services.ILogic; + +/** + * @author ManhKM on 4/29/2022 + * @project Java-JUnit + */ +public class LogicImpl implements ILogic { + + @Override + public boolean check(TamGiac tamGiac) { + if(tamGiac.getCanh1() + tamGiac.getCanh2() > tamGiac.getCanh3()){ + return true; + } else if (tamGiac.getCanh1() + tamGiac.getCanh3() > tamGiac.getCanh2()){ + return true; + } else if (tamGiac.getCanh2() + tamGiac.getCanh3() > tamGiac.getCanh1()){ + return true; + } else + return false; + } + + @Override + public int chuvi(TamGiac tamGiac) { + if(!check(tamGiac)){ + System.out.println("Tam giác không hợp lệ"); + return -1; + } else { + int chuvi = tamGiac.getCanh1() + tamGiac.getCanh2() + tamGiac.getCanh3(); + System.out.println("Tam giác hợp lệ"); + return chuvi; + } + } + + @Override + public float dientich(TamGiac tamGiac) { + if(!check(tamGiac)){ + System.out.println("Tam giác không hợp lệ"); + return -1; + } else { + System.out.println("Tam giác hợp lệ"); + /** + * Dựa vào công thức Heron: + */ + float nuaChuVi = (float) ((chuvi(tamGiac)*1.0) / 2); + float dienTich = (float) Math.sqrt(nuaChuVi + *(nuaChuVi-tamGiac.getCanh1()*1.0) + *(nuaChuVi-tamGiac.getCanh2()*1.0) + *(nuaChuVi- tamGiac.getCanh3()*1.0)); + return dienTich; + } + } +} diff --git a/Java-Test/Java-JUnit/src/com/core/test/TestTamGiac.java b/Java-Test/Java-JUnit/src/com/core/test/TestTamGiac.java new file mode 100644 index 0000000..05df751 --- /dev/null +++ b/Java-Test/Java-JUnit/src/com/core/test/TestTamGiac.java @@ -0,0 +1,8 @@ +package com.core.test; + +/** + * @author ManhKM on 4/29/2022 + * @project Java-JUnit + */ +public class TestTamGiac { +} diff --git a/Java-ThreadPool/Java-Thread/out/production/Java-Thread/RunnableSimpleMain.class b/Java-ThreadPool/Java-Thread/out/production/Java-Thread/RunnableSimpleMain.class deleted file mode 100644 index cdde40a..0000000 Binary files a/Java-ThreadPool/Java-Thread/out/production/Java-Thread/RunnableSimpleMain.class and /dev/null differ diff --git a/Java-ThreadPool/Java-Thread/out/production/Java-Thread/ThreadSimpleMain.class b/Java-ThreadPool/Java-Thread/out/production/Java-Thread/ThreadSimpleMain.class deleted file mode 100644 index d46d28b..0000000 Binary files a/Java-ThreadPool/Java-Thread/out/production/Java-Thread/ThreadSimpleMain.class and /dev/null differ diff --git a/Java-ThreadPool/Java-Thread/out/production/Java-Thread/com/manhkm/simple/RunnableSimple.class b/Java-ThreadPool/Java-Thread/out/production/Java-Thread/com/manhkm/simple/RunnableSimple.class deleted file mode 100644 index a70f998..0000000 Binary files a/Java-ThreadPool/Java-Thread/out/production/Java-Thread/com/manhkm/simple/RunnableSimple.class and /dev/null differ diff --git a/Java-ThreadPool/Java-Thread/out/production/Java-Thread/com/manhkm/simple/ThreadSimple.class b/Java-ThreadPool/Java-Thread/out/production/Java-Thread/com/manhkm/simple/ThreadSimple.class deleted file mode 100644 index a586eff..0000000 Binary files a/Java-ThreadPool/Java-Thread/out/production/Java-Thread/com/manhkm/simple/ThreadSimple.class and /dev/null differ diff --git a/Java-ThreadPool/Java-Thread/test/ThreadSimpleMain.java b/Java-ThreadPool/Java-Thread/test/ThreadSimpleMain.java deleted file mode 100644 index f65a570..0000000 --- a/Java-ThreadPool/Java-Thread/test/ThreadSimpleMain.java +++ /dev/null @@ -1,12 +0,0 @@ -import com.manhkm.simple.ThreadSimple; - -/** - * @author ManhKM on 1/19/2022 - * @project Java-Thread - */ -public class ThreadSimpleMain { - public static void main(String[] args) { - ThreadSimple threadSimple = new ThreadSimple(); - threadSimple.start(); - } -} diff --git a/Java-Upcasting-Downcasting/readme.md b/Java-Upcasting-Downcasting/readme.md new file mode 100644 index 0000000..e69de29 diff --git a/Java-Upcasting-Downcasting/src/main/java/com/downcasting/Downcasting.java b/Java-Upcasting-Downcasting/src/main/java/com/downcasting/Downcasting.java new file mode 100644 index 0000000..5b0f224 --- /dev/null +++ b/Java-Upcasting-Downcasting/src/main/java/com/downcasting/Downcasting.java @@ -0,0 +1,7 @@ +package com.downcasting;/** + * Project: Java-Upcasting-Downcasting (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/16/2023-4:01 PM + * Note: + */public class Downcating { +} diff --git a/Java-Upcasting-Downcasting/src/main/java/com/entity/Animal.java b/Java-Upcasting-Downcasting/src/main/java/com/entity/Animal.java new file mode 100644 index 0000000..aa84d98 --- /dev/null +++ b/Java-Upcasting-Downcasting/src/main/java/com/entity/Animal.java @@ -0,0 +1,7 @@ +package com.entity;/** + * Project: Java-Upcasting-Downcasting (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/16/2023-3:52 PM + * Note: + */public class Animal { +} diff --git a/Java-Upcasting-Downcasting/src/main/java/com/entity/Cat.java b/Java-Upcasting-Downcasting/src/main/java/com/entity/Cat.java new file mode 100644 index 0000000..195ba3c --- /dev/null +++ b/Java-Upcasting-Downcasting/src/main/java/com/entity/Cat.java @@ -0,0 +1,7 @@ +package com.entity;/** + * Project: Java-Upcasting-Downcasting (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/16/2023-3:52 PM + * Note: + */public class Cat { +} diff --git a/Java-Upcasting-Downcasting/src/main/java/com/upcasting/Upcasting.java b/Java-Upcasting-Downcasting/src/main/java/com/upcasting/Upcasting.java new file mode 100644 index 0000000..b842077 --- /dev/null +++ b/Java-Upcasting-Downcasting/src/main/java/com/upcasting/Upcasting.java @@ -0,0 +1,7 @@ +package com.upcasting;/** + * Project: Java-Upcasting-Downcasting (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/16/2023-3:52 PM + * Note: + */public class Upcasting { +} diff --git a/Java-Utils/file/vasonline-share/VASONLINE/KPI_MO_VASONLINE_20220619.txt b/Java-Utils/file/vasonline-share/VASONLINE/KPI_MO_VASONLINE_20220619.txt new file mode 100644 index 0000000..666f8c8 --- /dev/null +++ b/Java-Utils/file/vasonline-share/VASONLINE/KPI_MO_VASONLINE_20220619.txt @@ -0,0 +1,12 @@ +MO_PROCESS_SUCCESS;TOTAL_MO_PROCESS;VASONLINE +12;12;vasonline +12;12;vasonline +12;12;vasonline +12;12;vasonline +12;12;vasonline +12;12;vasonline +12;12;vasonline +12;12;vasonline +12;12;vasonline +12;12;vasonline +12;12;vasonline diff --git a/Java-Utils/file/vasonline-share/VASONLINE/SL_VASONLINE_20220619.txt b/Java-Utils/file/vasonline-share/VASONLINE/SL_VASONLINE_20220619.txt new file mode 100644 index 0000000..e878472 --- /dev/null +++ b/Java-Utils/file/vasonline-share/VASONLINE/SL_VASONLINE_20220619.txt @@ -0,0 +1,11 @@ +TOTAL_MO_PROCESSED;SL +100;100 +100;100 +100;100 +100;100 +100;100 +100;100 +100;100 +100;100 +100;100 +100;100 diff --git a/Java-Utils/libs/gson-2.8.6.jar b/Java-Utils/libs/gson-2.8.6.jar new file mode 100644 index 0000000..4765c4a Binary files /dev/null and b/Java-Utils/libs/gson-2.8.6.jar differ diff --git a/Java-Utils/libs/log4j-api-2.13.3.jar b/Java-Utils/libs/log4j-api-2.13.3.jar new file mode 100644 index 0000000..f604e80 Binary files /dev/null and b/Java-Utils/libs/log4j-api-2.13.3.jar differ diff --git a/Java-Utils/libs/spring-security-core-5.4.5.jar b/Java-Utils/libs/spring-security-core-5.4.5.jar new file mode 100644 index 0000000..d1609ee Binary files /dev/null and b/Java-Utils/libs/spring-security-core-5.4.5.jar differ diff --git a/Java-Utils/libs/spring-web-5.3.5.jar b/Java-Utils/libs/spring-web-5.3.5.jar new file mode 100644 index 0000000..f3f8df2 Binary files /dev/null and b/Java-Utils/libs/spring-web-5.3.5.jar differ diff --git a/Java-Utils/libs/tomcat-embed-core-9.0.44.jar b/Java-Utils/libs/tomcat-embed-core-9.0.44.jar new file mode 100644 index 0000000..626713f Binary files /dev/null and b/Java-Utils/libs/tomcat-embed-core-9.0.44.jar differ diff --git a/Java-Utils/readme.md b/Java-Utils/readme.md new file mode 100644 index 0000000..40f5128 --- /dev/null +++ b/Java-Utils/readme.md @@ -0,0 +1,2 @@ +## Java Utils + diff --git a/Java-Utils/src/com/core/entity/Employee.java b/Java-Utils/src/com/core/entity/Employee.java new file mode 100644 index 0000000..79764f9 --- /dev/null +++ b/Java-Utils/src/com/core/entity/Employee.java @@ -0,0 +1,54 @@ +package com.core.entity; + +/** + * @author ManhKM on 6/21/2022 + * @project Java-Utils + */ +public class Employee { + private String name; + private int age; + private String address; + + public Employee(){ + + } + + public Employee(String name, int age, String address){ + this.name = name; + this.age = age; + this.address = address; + } + + 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 String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + @Override + public String toString() { + return "Employee{" + + "name='" + name + '\'' + + ", age=" + age + + ", address='" + address + '\'' + + '}'; + } +} diff --git a/Java-Utils/src/com/core/exception/FileStorageException.java b/Java-Utils/src/com/core/exception/FileStorageException.java new file mode 100644 index 0000000..1c40074 --- /dev/null +++ b/Java-Utils/src/com/core/exception/FileStorageException.java @@ -0,0 +1,15 @@ +package com.core.exception; + +/** + * @author ManhKM on 6/20/2022 + * @project Java-Utils + */ +public class FileStorageException extends RuntimeException { + public FileStorageException(String message) { + super(message); + } + + public FileStorageException(String message, Throwable cause) { + super(message, cause); + } +} \ No newline at end of file diff --git a/Java-Utils/src/com/core/test/MainMd5PasswordEncoder.java b/Java-Utils/src/com/core/test/MainMd5PasswordEncoder.java new file mode 100644 index 0000000..7c355bd --- /dev/null +++ b/Java-Utils/src/com/core/test/MainMd5PasswordEncoder.java @@ -0,0 +1,18 @@ +package com.core.test; + +import com.core.utils.Md5PasswordEncoder; + +/** + * @author ManhKM on 6/21/2022 + * @project Java-Utils + */ +public class MainMd5PasswordEncoder { + public static void main(String[] args) { + String passWord = "15A30a27a01aA@manhkm"; + Md5PasswordEncoder md5PasswordEncoder = new Md5PasswordEncoder(); + System.out.println("Encoder MD5: " + md5PasswordEncoder.encode(passWord)); + // 0fdc88f1d3369b7abbacc88927cb36e0 + + System.out.println(md5PasswordEncoder.matches(passWord, "0fdc88f1d3369b7abbacc88929cb36e0")); + } +} diff --git a/Java-Utils/src/com/core/utils/AESUtil.java b/Java-Utils/src/com/core/utils/AESUtil.java new file mode 100644 index 0000000..44ec3cd --- /dev/null +++ b/Java-Utils/src/com/core/utils/AESUtil.java @@ -0,0 +1,48 @@ +package com.core.utils; + +import javax.crypto.Cipher; +import javax.crypto.spec.SecretKeySpec; +import java.util.Base64; + +/** + * @author ManhKM on 6/20/2022 + * @project Java-Utils + */ +public class AESUtil { + public static String encrypt(String plainText, String key) { + try { + Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); + byte[] decodeKey = Base64.getDecoder().decode(key); + SecretKeySpec secretKey = new SecretKeySpec(decodeKey, "AES"); + cipher.init(Cipher.ENCRYPT_MODE, secretKey); + byte[] cipherText = cipher.doFinal(plainText.getBytes("UTF8")); + String encryptedString = new String(Base64.getEncoder().encode(cipherText), "UTF-8"); + return encryptedString; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static String decrypt(String encryptedText, String key) { + try { + Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING"); + byte[] decodeKey = Base64.getDecoder().decode(key); + SecretKeySpec secretKey = new SecretKeySpec(decodeKey, "AES"); + cipher.init(Cipher.DECRYPT_MODE, secretKey); + byte[] cipherText = Base64.getDecoder().decode(encryptedText.getBytes("UTF8")); + String decryptedString = new String(cipher.doFinal(cipherText), "UTF-8"); + return decryptedString; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static void main(String[] args) { + String key = "manhkm1233232323232323"; + System.out.println(encrypt("3004199632323232323232", key)); + + System.out.println(decrypt("D5WwBEWjF+vEM7pdaEaxIo+h71x0PIh5I0unrCv+rnc=", key)); + } +} diff --git a/Java-Utils/src/com/core/utils/DateUtils.java b/Java-Utils/src/com/core/utils/DateUtils.java new file mode 100644 index 0000000..4bd7879 --- /dev/null +++ b/Java-Utils/src/com/core/utils/DateUtils.java @@ -0,0 +1,22 @@ +package com.core.utils; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author ManhKM on 6/20/2022 + * @project Java-Utils + */ +public class DateUtils { + + public static String getStringDateWithFormat(Date inputDate, String format){ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); + return simpleDateFormat.format(inputDate); + } + + public static void main(String[] args) { + //202206171 + Date today = new Date(); + System.out.println(getStringDateWithFormat(today, "YYYYMMDD")); + } +} diff --git a/Java-Utils/src/com/core/utils/FileUtils.java b/Java-Utils/src/com/core/utils/FileUtils.java new file mode 100644 index 0000000..b32bb61 --- /dev/null +++ b/Java-Utils/src/com/core/utils/FileUtils.java @@ -0,0 +1,31 @@ +package com.core.utils; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +/** + * @author ManhKM on 6/20/2022 + * @project Java-Utils + */ +public class FileUtils { + public static String readFile(String file) throws IOException { + File f = new File(file); + if (f.isFile()) { + return readFile(f); + } + return null; + } + + public static String readFile(File f) throws IOException { + byte[] bytes = Files.readAllBytes(f.toPath()); + return new String(bytes); + } + + public static void main(String[] args) throws IOException { + //System.out.println(readFile("file/vasonline-share/VASONLINE/KPI_MO_VASONLINE_20220619.txt")); + + File fileData = new File("file/vasonline-share/VASONLINE/KPI_MO_VASONLINE_20220619.txt"); + System.out.println(readFile(fileData)); + } +} diff --git a/Java-Utils/src/com/core/utils/GenerateSessionId.java b/Java-Utils/src/com/core/utils/GenerateSessionId.java new file mode 100644 index 0000000..8268f1e --- /dev/null +++ b/Java-Utils/src/com/core/utils/GenerateSessionId.java @@ -0,0 +1,32 @@ +package com.core.utils; + +import java.util.Random; + +/** + * @author ManhKM on 6/20/2022 + * @project Java-Utils + */ +public class GenerateSessionId { + private static String arrInt = "0123456789";//012345678901234567890123456789 + + //Ham tra ra 1 so Random theo Id de lam ma giao dich: + public static String genSessionId(String prefix, int length) { + StringBuilder str = new StringBuilder(prefix); + System.out.println("nanoTime(): "+str.append(System.nanoTime())); + try { + Random rd = new Random(); + for (int i = 15; i < length; i++) { + str.append(arrInt.charAt(rd.nextInt(10))); + } + } catch (Exception e) { + e.printStackTrace(); + } + return str.toString(); + } + + public static void main(String[] args) { + for(int i = 0; i < 10; i++){ + System.out.println(genSessionId("NEO", 30)); + } + } +} diff --git a/Java-Utils/src/com/core/utils/JSONParser.java b/Java-Utils/src/com/core/utils/JSONParser.java new file mode 100644 index 0000000..6dfb4f6 --- /dev/null +++ b/Java-Utils/src/com/core/utils/JSONParser.java @@ -0,0 +1,38 @@ +package com.core.utils; + +import com.core.entity.Employee; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +/** + * @author ManhKM on 6/21/2022 + * @project Java-Utils + */ +public class JSONParser { + private static final GsonBuilder gsonBuilder = new GsonBuilder(); + private static final Gson gson = gsonBuilder.create(); + + public static Object fromJson(String o, Class c) { + try { + return gson.fromJson(o, c); + } catch (Exception e) { + return null; + } + } + + public static String toJson(Object o) { + try { + return gson.toJson(o); + } catch (Exception e) { + return null; + } + } + + public static void main(String[] args) { +// Employee employee = new Employee("ManhKM", 18, "ThaiBinh"); +// System.out.println(toJson(employee)); + + String dataJson = "{\"name\":\"TrangTT\",\"age\":18,\"address\":\"HaNam\"}"; + System.out.println(fromJson(dataJson, Employee.class).toString()); + } +} diff --git a/Java-Utils/src/com/core/utils/LogFilter.java b/Java-Utils/src/com/core/utils/LogFilter.java new file mode 100644 index 0000000..e504727 --- /dev/null +++ b/Java-Utils/src/com/core/utils/LogFilter.java @@ -0,0 +1,45 @@ +package com.core.utils; + +import java.io.File; +import java.io.FilenameFilter; +import java.util.regex.Pattern; + +/** + * @author ManhKM on 6/21/2022 + * @project Java-Utils + */ +public class LogFilter implements FilenameFilter { + private int type = 0; + private String pattern = ""; + private Pattern p = null; + + public LogFilter(String pattern) { + this.pattern = pattern.replace("*", ""); // Loai bo cac dau * trong log + boolean isStartWith = pattern.startsWith("*"); + boolean isEndWith = pattern.endsWith("*"); + if (isStartWith && isEndWith) { + this.type = 1; + } else if (isStartWith) { + this.type = 2; + } else if (isEndWith) { + this.type = 3; + } else { + this.p = Pattern.compile(pattern); + } + + } + + @Override + public boolean accept(File dir, String name) { + switch(this.type) { + case 1: + return name.indexOf(this.pattern) > -1; + case 2: + return name.endsWith(this.pattern); + case 3: + return name.startsWith(this.pattern); + default: + return this.p.matcher(name).find(); + } + } +} diff --git a/Java-Utils/src/com/core/utils/ManageQueue.java b/Java-Utils/src/com/core/utils/ManageQueue.java new file mode 100644 index 0000000..8ed5327 --- /dev/null +++ b/Java-Utils/src/com/core/utils/ManageQueue.java @@ -0,0 +1,111 @@ +package com.core.utils; + +import java.util.ArrayDeque; +import java.util.ArrayList; + +/** + * @author ManhKM on 6/21/2022 + * @project Java-Utils + */ +public class ManageQueue { + private ArrayDeque queue = new ArrayDeque<>(); + + public boolean Add(ArrayList l, boolean isNotify){ + boolean is = false; + try { + synchronized (queue) { + queue.addAll(l); + if (isNotify) { + queue.notify(); + } + } + is = true; + }catch(Exception e) { + e.printStackTrace(); + } + return is; + } + + public boolean Add(Object o, boolean isNotify) { + boolean is = false; + try { + synchronized (queue) { + queue.add(o); + if (isNotify) { + queue.notify(); + } + } + is = true; + }catch(Exception e) { + e.printStackTrace(); + } + return is; + } + + public void reAdd(ArrayList l) { + try { + synchronized (queue) { + queue.addAll(l); + } + }catch(Exception e) { + e.printStackTrace(); + } + } + + public void reAdd(Object o) { + try { + synchronized (queue) { + queue.add(o); + } + }catch(Exception e) { + e.printStackTrace(); + } + } + + public void waitQueue(int time_out) { + try{ + if (queue.isEmpty()) { + synchronized (queue) { + queue.wait(time_out); + } + } + }catch(Exception e) { + e.printStackTrace(); + } + } + + public void waitNew(int time_out) { + try{ + synchronized (queue) { + queue.wait(time_out); + } + }catch(Exception e) { + e.printStackTrace(); + } + } + + //Get Queue: + public ArrayList getQueue(int max) { + ArrayList l = new ArrayList(); + try{ + if (queue.isEmpty()) return l; + int n = 0; + synchronized (queue) { + while (!queue.isEmpty() && n < max) { + n ++; + Object o = queue.remove(); + if (o!=null) l.add(o); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return l; + } + + public int getSize() { + return queue.size(); + } + + +} diff --git a/Java-Utils/src/com/core/utils/Md5PasswordEncoder.java b/Java-Utils/src/com/core/utils/Md5PasswordEncoder.java new file mode 100644 index 0000000..9917f3a --- /dev/null +++ b/Java-Utils/src/com/core/utils/Md5PasswordEncoder.java @@ -0,0 +1,61 @@ +package com.core.utils; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.security.crypto.password.PasswordEncoder; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * @author ManhKM on 6/21/2022 + * @project Java-Utils + */ +public class Md5PasswordEncoder implements PasswordEncoder { + private Logger logger = LogManager.getLogger(Md5PasswordEncoder.class); + + @Override + public String encode(CharSequence rawPassword) { + StringBuffer sb = new StringBuffer(""); + + try { + + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(String.valueOf(rawPassword).getBytes("iso-8859-1")); + byte[] digest = md.digest(); + for (byte b : digest) { + String hex = Integer.toHexString(0xff & b); + if (hex.length() == 1) + sb.append('0'); + sb.append(hex); + } + md.reset(); + + md.update(sb.toString().getBytes("iso-8859-1")); + digest = md.digest(); + sb = new StringBuffer(""); + for (byte b : digest) { + String hex = Integer.toHexString(0xff & b); + if (hex.length() == 1) + sb.append('0'); + sb.append(hex); + } + return sb.toString(); + } catch (Exception e) { + logger.error("Encode exception: ", e); + return null; + } + } + + @Override + public boolean matches(CharSequence rawPassword, String encodedPassword) { + String encode = encode(rawPassword); + return encode != null && encode.equals(encodedPassword); + } + + @Override + public boolean upgradeEncoding(String encodedPassword) { + return false; + } + +} diff --git a/Java-Utils/src/com/core/utils/MediaTypeUtils.java b/Java-Utils/src/com/core/utils/MediaTypeUtils.java new file mode 100644 index 0000000..effcade --- /dev/null +++ b/Java-Utils/src/com/core/utils/MediaTypeUtils.java @@ -0,0 +1,26 @@ +package com.core.utils; + +import org.springframework.http.MediaType; +import javax.servlet.ServletContext; + +/** + * @author ManhKM on 6/21/2022 + * @project Java-Utils + */ +public class MediaTypeUtils { + + // abc.zip + // abc.pdf,.. + public static MediaType getMediaTypeForFileName(ServletContext servletContext, String fileName) { + // application/pdf + // application/xml + // image/gif, ... + String mineType = servletContext.getMimeType(fileName); + try { + MediaType mediaType = MediaType.parseMediaType(mineType); + return mediaType; + } catch (Exception e) { + return MediaType.APPLICATION_OCTET_STREAM; + } + } +} diff --git a/Java-Variable/src/main/java/com/core/Operation.java b/Java-Variable/src/main/java/com/core/Operation.java new file mode 100644 index 0000000..adf0b8a --- /dev/null +++ b/Java-Variable/src/main/java/com/core/Operation.java @@ -0,0 +1,7 @@ +package com.core;/** + * Project: Java-Variable (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/14/2023-11:46 AM + * Note: + */public class Operation { +} diff --git a/Java-Variable/src/main/java/com/core/Operation2.java b/Java-Variable/src/main/java/com/core/Operation2.java new file mode 100644 index 0000000..f66a325 --- /dev/null +++ b/Java-Variable/src/main/java/com/core/Operation2.java @@ -0,0 +1,7 @@ +package com.core;/** + * Project: Java-Variable (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/14/2023-11:57 AM + * Note: + */public class Operation2 { +} diff --git a/Nguyen-Anh-Ngoc-v1.0.md b/Nguyen-Anh-Ngoc-v1.0.md new file mode 100644 index 0000000..77c46dd --- /dev/null +++ b/Nguyen-Anh-Ngoc-v1.0.md @@ -0,0 +1,64 @@ +Anh Nguyễn Ngọc + +## Lập Trình và Hướng Dẫn Cơ Bản + + Overview, Tips and Tricks + + Tin học cơ sở - v21 + + Tin học + + Lập trình Python cơ bản + + Lập trình Java 1 + + Lập trình Java 2 + + Lập trình Java 3 - v2 + + Nhập môn lập trình với C + + Hướng dẫn cài đặt + + Lập trình ECMAScript + +## Lập Trình Nâng Cao + + Lập trình Java 4 - v20 + + Lập trình Java 5 - v21 + + Lập trình Java 6 - v21 | 04/11/2022 + ++ Giới thiệu Lambda Expression trong Java + ++ #1: Giới thiệu Template Engine Thymeleaf, trong Spring Boot + ++ #1: GIới thiệu Java Streams + ++ #2: Giới thiệu Thymeleaf Template + ++ #3: Statndard Expression(Biểu thức chuẩn) trong Thymeleaf + ++ #4: Toán từ (Operators) trong Thymeleaf + ++ #5: Thuộc tính th:if, fh:each, th:switch trong Thymeleaf + ++ #6: Đối tượng ngầm định (Implicit Object) + ++ #6: Hàm tổng hợp (Aggreate functions) trong lập trình Java + ++ #7: Phương thức tham chiếu (Reference methods) + ++ #8: Giới thiệu luồng song song (Parallel Streams) + ++ #9: + + Lập trình Spring Framework + + Lập trình Front-End + + Kiểm thử phần mềm nâng cao + + Kiểm thử phần mềm cơ bản + + Lập trình Javascript nâng cao + + Lập trình Java Web - v20 + + Lập trình Java 4 + + +## Thiết kế và lập trình Web + + Lập trình Front-end với Angular + + Lập trình Java Web - v20 + + Lập trình Typescript - v21 + + Thiết kế Web với HTML5 và CSS3 + + Lập trình Javascript cơ bản - v2022 + + Lập trình Javascript nâng cao + + Lập trình Front-End + + Quản trị website + + Lập trình Java 4 - v20 + + Lập trình Javascript nâng cao - v21 + + Lập trình Angular + + Lập trình Front-end với ReactJS + + Lập trình ReactJS + + Lập trình Spring Boot - v21 + + Xây dựng Website thương mại điện tử với Wordpress + +## Cơ Sở Dữ Liệu và Dự Án Phần Mềm + + Dự án + + Quản lý dự án phần mềm linh hoạt (Agile) + + Cơ sở dữ liệu -v22 + + Cơ sở dữ liệu + + Quản trị cơ sở dữ liệu với SQL Server + + Nhập môn kỹ thuật phần mềm + diff --git a/demo/.gitignore b/demo/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/demo/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/demo/.mvn/wrapper/maven-wrapper.jar b/demo/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..bf82ff0 Binary files /dev/null and b/demo/.mvn/wrapper/maven-wrapper.jar differ diff --git a/demo/.mvn/wrapper/maven-wrapper.properties b/demo/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..ca5ab4b --- /dev/null +++ b/demo/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.7/apache-maven-3.8.7-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar diff --git a/demo/Dockerfile b/demo/Dockerfile new file mode 100644 index 0000000..f7c4d95 --- /dev/null +++ b/demo/Dockerfile @@ -0,0 +1,14 @@ +# Stage 1: Xây dựng ứng dụng Spring Boot với Maven +FROM maven:3.8.1-jdk-8 AS build +WORKDIR /app +COPY pom.xml . +RUN mvn dependency:go-offline +COPY src ./src +RUN mvn package + +# Stage 2: Tạo image nhỏ gọn chỉ chứa file .jar đã được đóng gói +FROM adoptopenjdk/openjdk8 +WORKDIR /app +COPY --from=build /app/target/demo-0.0.1-SNAPSHOT.jar /docker-spring-boot.jar +EXPOSE 8099 +CMD ["java", "-jar", "/docker-spring-boot.jar"] \ No newline at end of file diff --git a/demo/DockerfileBK b/demo/DockerfileBK new file mode 100644 index 0000000..9cc16f1 --- /dev/null +++ b/demo/DockerfileBK @@ -0,0 +1,13 @@ +# Sử dụng base image với JDK 1.8.0_202 +FROM adoptopenjdk/openjdk8 + +# Sao chép file .jar từ thư mục target vào image +COPY target/demo-0.0.1-SNAPSHOT.jar /docker-spring-boot.jar + +# Cổng mà ứng dụng lắng nghe +EXPOSE 8099 + +# Lệnh để chạy ứng dụng khi container được khởi chạy +# Mặc định các tham số -Xms, -Xmx sẽ được chỉ định tự đông sao cho tận dụng tối đa tài nguyên của container +# Nếu muốn chỉ định tham số có thể tham khảo: CMD ["java", "-Xms512m", "-Xmx1024m", "-jar", "/app.jar"] +CMD ["java", "-jar", "/docker-spring-boot.jar"] diff --git a/demo/mvnw b/demo/mvnw new file mode 100644 index 0000000..8a8fb22 --- /dev/null +++ b/demo/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/demo/mvnw.cmd b/demo/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/demo/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/demo/pom.xml b/demo/pom.xml new file mode 100644 index 0000000..119693a --- /dev/null +++ b/demo/pom.xml @@ -0,0 +1,41 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.13 + + + com.core + demo + 0.0.1-SNAPSHOT + demo + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/demo/src/main/java/com/core/Application.java b/demo/src/main/java/com/core/Application.java new file mode 100644 index 0000000..dc69b45 --- /dev/null +++ b/demo/src/main/java/com/core/Application.java @@ -0,0 +1,14 @@ +package com.core; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + System.out.println("SERVER IS READY"); + } + +} diff --git a/demo/src/main/java/com/core/controller/HomeController.java b/demo/src/main/java/com/core/controller/HomeController.java new file mode 100644 index 0000000..e70a8c0 --- /dev/null +++ b/demo/src/main/java/com/core/controller/HomeController.java @@ -0,0 +1,51 @@ +package com.core.controller; + +import com.core.entity.Person; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: demo (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/18/2023-11:18 AM + * Note: + */ +@RestController +@RequestMapping("home") +public class HomeController { + + private final Logger logger = LoggerFactory.getLogger(HomeController.class); + + @Value("${app.data.message}") + private String message; + + public static List list = new ArrayList<>(); + + static { + for (int i = 0; i < 999; i++) { + list.add(new Person(Long.valueOf(i), "name_" + i, "address_" + i, i + 18)); + } + } + + @GetMapping() + public List getList() { + logger.info(">>>>> starting method getList()/HomeController....."); + List data = new ArrayList<>(); + for (Person person : list) { + Person _temp = new Person(person.getId(), person.getName(), person.getAddress(), person.getAge(), message); + data.add(_temp); + } + logger.info("Size of Person: " + data.size()); + + logger.info(">>>>> end method getList()/HomeController....."); + + return data; + } +} diff --git a/demo/src/main/java/com/core/entity/Person.java b/demo/src/main/java/com/core/entity/Person.java new file mode 100644 index 0000000..634e15b --- /dev/null +++ b/demo/src/main/java/com/core/entity/Person.java @@ -0,0 +1,84 @@ +package com.core.entity; + +/** + * Project: demo (>_<)/ + * Author: ManhKM as [ADMIN] + * Date-Time: 7/18/2023-11:19 AM + * Note: + */ +public class Person { + private Long id; + private String name; + private String address; + private Integer age; + private String description; + + public Person() { + } + + public Person(Long id, String name, String address, Integer age) { + this.id = id; + this.name = name; + this.address = address; + this.age = age; + } + + public Person(Long id, String name, String address, Integer age, String description) { + this.id = id; + this.name = name; + this.address = address; + this.age = age; + this.description = description; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", name='" + name + '\'' + + ", address='" + address + '\'' + + ", age=" + age + + ", description='" + description + '\'' + + '}'; + } +} diff --git a/demo/src/main/resources/application.properties b/demo/src/main/resources/application.properties new file mode 100644 index 0000000..41715dc --- /dev/null +++ b/demo/src/main/resources/application.properties @@ -0,0 +1,4 @@ + + +server.port=8099 +app.data.message=Docker with Spring Boot Tutorial \ No newline at end of file diff --git a/demo/src/test/java/com/core/ApplicationTests.java b/demo/src/test/java/com/core/ApplicationTests.java new file mode 100644 index 0000000..1fd60fe --- /dev/null +++ b/demo/src/test/java/com/core/ApplicationTests.java @@ -0,0 +1,13 @@ +package com.core; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/demo/volume/data.txt b/demo/volume/data.txt new file mode 100644 index 0000000..9cc16f1 --- /dev/null +++ b/demo/volume/data.txt @@ -0,0 +1,13 @@ +# Sử dụng base image với JDK 1.8.0_202 +FROM adoptopenjdk/openjdk8 + +# Sao chép file .jar từ thư mục target vào image +COPY target/demo-0.0.1-SNAPSHOT.jar /docker-spring-boot.jar + +# Cổng mà ứng dụng lắng nghe +EXPOSE 8099 + +# Lệnh để chạy ứng dụng khi container được khởi chạy +# Mặc định các tham số -Xms, -Xmx sẽ được chỉ định tự đông sao cho tận dụng tối đa tài nguyên của container +# Nếu muốn chỉ định tham số có thể tham khảo: CMD ["java", "-Xms512m", "-Xmx1024m", "-jar", "/app.jar"] +CMD ["java", "-jar", "/docker-spring-boot.jar"] diff --git a/java-v1.0 b/java-v1.0 index a665b52..bd987e4 100644 --- a/java-v1.0 +++ b/java-v1.0 @@ -8,6 +8,24 @@ [Java] Phần 8: Tìm hiểu về Java Reflection [Java] Phần 9: Tạo Annotation bằng Java Reflection [Java] Phần 10: So sánh Array vs ArrayList vs LinkedList vs Vector +[Java] Phần 11: Constant và các rủi ro tiềm ẩn +Nên học ngôn ngữ lập trình nào? Nên chọn IDE nào cho lập trình Java? +[Java] Phần 12 – Log 1: Tầm quan trọng của ghi log trong phát triển phần mềm +[Java] Phần 13 – Log 2: Tích hợp log4j vào phần mềm +[Java] Phần 14 – Log 3: Ghi log bất đồng bộ vào Database sử dụng ExecutorService +[Java] Phần 15 – Lợi ích của Cache và cách sử dụng Redis cache trong ứng dụng Java + https://www.youtube.com/watch?v=a2RjtpXoWjA&t +[Java] Phần 16 – Tạo tiến trình chạy ngầm cực kỳ đơn giản với Spring Schedule + Giữ phím ALT + chuột đến vùng cần chọn + Format auto: CTRL + ALT + L +[Java] Phần 17 – Xác thực và phân quyền API bằng JWT và Spring Security [1/2] +[Java] Phần 18 – Xác thực và phân quyền API bằng JWT và Spring Security [2/2] +15A30a27a01manhkm + +Java Effective + E:\1_CODING\LearnJava\Ebook\13.Effective Java 3rd +Spring In Action + E:\1_CODING\LearnSpring\Ebook\1.Spring in Action diff --git a/~$Java 1.v1.0.mmap.~$lock b/~$Java 1.v1.0.mmap.~$lock new file mode 100644 index 0000000..1d40fc6 --- /dev/null +++ b/~$Java 1.v1.0.mmap.~$lock @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/~$Java 2.1.mmap.~$lock b/~$Java 2.1.mmap.~$lock new file mode 100644 index 0000000..1d40fc6 --- /dev/null +++ b/~$Java 2.1.mmap.~$lock @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/~$Java 2.mmap.~$lock b/~$Java 2.mmap.~$lock new file mode 100644 index 0000000..1d40fc6 --- /dev/null +++ b/~$Java 2.mmap.~$lock @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/~$Java 3.mmap.~$lock b/~$Java 3.mmap.~$lock new file mode 100644 index 0000000..1d40fc6 --- /dev/null +++ b/~$Java 3.mmap.~$lock @@ -0,0 +1,2 @@ + + \ No newline at end of file